qsdklsqkdmqskdmlqskd azoepqikdomlqskdjmlqs qpfklqjsfmklqsjdmqlsjdsqd lib/wfAlerts.php000064400000016575152331132450007627 0ustar00IP = $IP; $this->reason = $reason; $this->secsToGo = $secsToGo; } public function send() { if (wfConfig::get('alertOn_block')) { $message = sprintf(/* translators: IP address. */ __('Wordfence has blocked IP address %s.', 'wordfence'), $this->IP) . "\n"; $message .= sprintf(/* translators: Description of firewall action. */ __('The reason is: "%s".', 'wordfence'), $this->reason); if ($this->secsToGo > 0) { $message .= "\n" . sprintf(/* translators: Time until. */ __('The duration of the block is %s.', 'wordfence'), wfUtils::makeDuration($this->secsToGo, true)); } wordfence::alert(sprintf(/* translators: IP address. */__('Blocking IP %s', 'wordfence'), $this->IP), $message, $this->IP); } } } class wfAutoUpdatedAlert extends wfBaseAlert { private $version; /** * @param $version */ public function __construct($version) { $this->version = $version; } public function send() { if (wfConfig::get('alertOn_update') == '1' && $this->version) { wordfence::alert(sprintf(/* translators: Software version. */ __("Wordfence Upgraded to version %s", 'wordfence'), $this->version), sprintf(/* translators: Software version. */ __("Your Wordfence installation has been upgraded to version %s", 'wordfence'), $this->version), false); } } } class wfWafDeactivatedAlert extends wfBaseAlert { private $username; private $IP; /** * @param $username * @param $IP */ public function __construct($username, $IP) { $this->username = $username; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_wafDeactivated')) { wordfence::alert(__('Wordfence WAF Deactivated', 'wordfence'), sprintf(/* translators: WP username. */__('A user with username "%s" deactivated the Wordfence Web Application Firewall on your WordPress site.', 'wordfence'), $this->username), $this->IP); } } } class wfWordfenceDeactivatedAlert extends wfBaseAlert { private $username; private $IP; /** * @param $username * @param $IP */ public function __construct($username, $IP) { $this->username = $username; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_wordfenceDeactivated')) { wordfence::alert(__("Wordfence Deactivated", 'wordfence'), sprintf(/* translators: WP username. */ __("A user with username \"%s\" deactivated Wordfence on your WordPress site.", 'wordfence'), $this->username), $this->IP); } } } class wfLostPasswdFormAlert extends wfBaseAlert { private $user; private $IP; /** * @param $user * @param $IP */ public function __construct($user, $IP) { $this->user = $user; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_lostPasswdForm')) { wordfence::alert(__("Password recovery attempted", 'wordfence'), sprintf(/* translators: Email address. */__("Someone tried to recover the password for user with email address: %s", 'wordfence'), wp_kses($this->user->user_email, array())), $this->IP); } } } class wfLoginLockoutAlert extends wfBaseAlert { private $IP; private $reason; /** * @param $IP * @param $reason */ public function __construct($IP, $reason) { $this->IP = $IP; $this->reason = $reason; } public function send() { if (wfConfig::get('alertOn_loginLockout')) { $message = sprintf( /* translators: 1. IP address. 2. Description of firewall action. */ __('A user with IP address %1$s has been locked out from signing in or using the password recovery form for the following reason: %2$s.', 'wordfence'), $this->IP, $this->reason); if (wfBlock::lockoutDuration() > 0) { $message .= "\n" . sprintf(/* translators: Time until. */ __('The duration of the lockout is %s.', 'wordfence'), wfUtils::makeDuration(wfBlock::lockoutDuration(), true)); } wordfence::alert(__('User locked out from signing in', 'wordfence'), $message, $this->IP); } } } class wfAdminLoginAlert extends wfBaseAlert { private $cookieName; private $username; private $IP; private $cookieValue; /** * @param $cookieName * @param $cookieValue * @param $username * @param $IP */ public function __construct($cookieName, $cookieValue, $username, $IP) { $this->cookieName = $cookieName; $this->cookieValue = $cookieValue; $this->username = $username; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_adminLogin')) { $shouldAlert = true; if (wfConfig::get('alertOn_firstAdminLoginOnly') && isset($_COOKIE[$this->cookieName])) { $shouldAlert = !hash_equals($this->cookieValue, $_COOKIE[$this->cookieName]); } if ($shouldAlert) { wordfence::alert(__("Admin Login", 'wordfence'), sprintf(/* translators: WP username. */ __("A user with username \"%s\" who has administrator access signed in to your WordPress site.", 'wordfence'), $this->username), $this->IP); } } } } class wfNonAdminLoginAlert extends wfBaseAlert { private $cookieName; private $username; private $IP; private $cookieValue; /** * @param $cookieName * @param $cookieValue * @param $username * @param $IP */ public function __construct($cookieName, $cookieValue, $username, $IP) { $this->cookieName = $cookieName; $this->cookieValue = $cookieValue; $this->username = $username; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_nonAdminLogin')) { $shouldAlert = true; if (wfConfig::get('alertOn_firstNonAdminLoginOnly') && isset($_COOKIE[$this->cookieName])) { $shouldAlert = !hash_equals($this->cookieValue, $_COOKIE[$this->cookieName]); } if ($shouldAlert) { wordfence::alert(__("User login", 'wordfence'), sprintf(/* translators: WP username. */ __("A non-admin user with username \"%s\" signed in to your WordPress site.", 'wordfence'), $this->username), $this->IP); } } } } class wfBreachLoginAlert extends wfBaseAlert { private $username; private $lostPasswordUrl; private $supportUrl; private $IP; /** * @param $username * @param $lostPasswordUrl * @param $supportUrl * @param $IP */ public function __construct($username, $lostPasswordUrl, $supportUrl, $IP) { $this->username = $username; $this->lostPasswordUrl = $lostPasswordUrl; $this->supportUrl = $supportUrl; $this->IP = $IP; } public function send() { if (wfConfig::get('alertOn_breachLogin')) { wordfence::alert(__('User login blocked for insecure password', 'wordfence'), sprintf( /* translators: 1. WP username. 2. Reset password URL. 3. Support URL. */ __('A user with username "%1$s" tried to sign in to your WordPress site. Access was denied because the password being used exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change or reset the password (%2$s) to reactivate this account. Learn More: %3$s', 'wordfence'), $this->username, $this->lostPasswordUrl, $this->supportUrl), $this->IP); } } } class wfIncreasedAttackRateAlert extends wfBaseAlert { private $message; /** * @param $message */ public function __construct($message) { $this->message = $message; } public function send() { wordfence::alert(__('Increased Attack Rate', 'wordfence'), $this->message, false); } } lib/menu_support.php000064400000040436152331132450010571 0ustar00render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/banner')->render(); } $support = @json_decode(wfConfig::get('supportContent'), true); ?>
__('Help', 'wordfence'), 'showIcon' => true, ))->render(); ?>
    • receive an answer within a few days.', 'wordfence'), array('strong'=>array())); ?>

    • respond to Premium tickets within a few hours on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?>

      respond to Premium tickets within a few hours on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?>

      • found here.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR_DPA)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>

links on any of the plugin\'s pages.', 'wordfence'), array('i'=>array('class'=>array(), 'aria-hidden'=>array()))); ?>

lib/menu_firewall_blocking_options.php000064400000011377152331132450014307 0ustar00
$backPage->url(), 'backLabelHTML' => wp_kses(sprintf( /* translators: Page title/label. */ __('Back to %s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))), 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_BLOCKING, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Blocking settings? This will undo any custom changes you have made to the options on this page. Any existing blocks will be preserved.', 'wordfence'), ))->render(); ?>
render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
__('Blocking Options', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING), 'helpLabelHTML' => wp_kses(__('Learn more about Blocking', 'wordfence'), array('span'=>array('class'=>array()))), 'showIcon' => true, ))->render(); ?>
  • 'displayTopLevelBlocking', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => wfConfig::get('displayTopLevelBlocking') ? 1 : 0, 'title' => __('Display Blocking menu option', 'wordfence'), ))->render(); ?>
'blocking-options-country', 'collapseable' => false, ))->render(); ?>
lib/menu_tools_whois.php000064400000011027152331132450011420 0ustar00

Learn more about Whois Lookup', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_WHOIS_LOOKUP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>

%s is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator."), esc_html($_GET['whoisval'])), array('span'=>array('style'=>array()))); ?>

lib/wfSupportController.php000064400000047555152331132450012117 0ustar00 0) { $carries = 0; } if ($val >= 0x100000000) { $val -= 0x100000000; $carries++; } $return[] = $val; } if ($carries) { $return[] += $carries; } $return = array_reverse($return); array_unshift($return, 'N*'); $return = call_user_func_array('pack', $return); $return = ltrim($return, "\x00"); return strlen($return) == 0 ? "\x00" : $return; } /** * Convert binary string to the 10101's representation. * * @param string $string * @return string */ public static function bin2str($string) { $return = ''; for ($i = 0; $i < strlen($string); $i++) { $return .= str_pad(decbin(ord($string[$i])), 8, '0', STR_PAD_LEFT); } $return = ltrim($return, '0'); return strlen($return) == 0 ? '0' : $return; } /** * Convert 10101's representation back to the binary data. * * @param string $string * @return string */ public static function str2bin($string) { if (strlen($string) % 32 > 0) { $string = str_repeat('0', 32 - (strlen($string) % 32)) . $string; } $ints = str_split($string, 32); $return = ''; foreach ($ints as $int) { $return .= pack('N', bindec($int)); } $return = ltrim($return, "\0"); return strlen($return) == 0 ? "\0" : $return; } }lib/wordfenceConstants.php000064400000005646152331132450011706 0ustar00
$dashboardURL, 'backLabelHTML' => wp_kses(__('Back to Dashboard', 'wordfence'), array('span'=>array('class'=>array()))), 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_GLOBAL, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default global settings? This will undo any custom changes you have made to the options on this page. Your configured license key and alert emails will not be changed.', 'wordfence'), ))->render(); ?>
render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
__('Wordfence Global Options', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTIONS), 'helpLabelHTML' => wp_kses(__('Learn more about Global Options', 'wordfence'), array('span'=>array('class'=>array()))), 'showIcon' => true, ))->render(); ?>
    • 'waf-coverage', 'percentage' => $firewall->overallStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Firewall', 'wordfence'), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('WAF Currently in Learning Mode', 'wordfence') : __('Protection from known and emerging threats', 'wordfence')), 'link' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS), 'linkLabel' => __('Manage Firewall', 'wordfence'), 'statusTitle' => __('Firewall Status', 'wordfence'), 'statusList' => $firewall->statusList(), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'), ))->render(); ?>
    • 'wf-scanner-type', 'percentage' => $scanner->scanTypeStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Scan', 'wordfence'), 'subtitle' => __('Detection of security issues', 'wordfence'), 'link' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS), 'linkLabel' => __('Manage Scan', 'wordfence'), 'statusTitle' => __('Scan Status', 'wordfence'), 'statusList' => $scanner->scanTypeStatusList(), 'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'), ))->render(); ?>
    • 'wf-premium-alert', 'title' => __('Premium License Conflict', 'wordfence'), 'subtitle' => __('License already in use', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1manageConflict/manage-wordfence-api-keys/', 'linkLabel' => __('Reset License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => __('Premium Protection Disabled', 'wordfence'), 'subtitle' => __('License is expired', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1renewExpired/manage-wordfence-api-keys/', 'linkLabel' => __('Renew License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => __('Premium Protection Disabled', 'wordfence'), 'subtitleHtml' => __('The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help.', 'wordfence'), 'link' => null, 'linkLabel' => null ))->render(); ?>

        

      'wf-premium-alert', 'title' => __('Premium License Expiring', 'wordfence'), 'subtitle' => __('Auto-renew is disabled', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Renew License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => $title, 'subtitle' => sprintf(__('License renews %s', 'wordfence'), $days), 'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Update Payment Method', 'wordfence'), 'linkNewWindow' => true, ))->render(); } else { $days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400); if ($days == 0) { $days = __('today', 'wordfence'); } else if ($days == 1) { $days = __('in 1 day', 'wordfence'); } else { $days = sprintf(__('in %d days', 'wordfence'), $days); } echo wfView::create('dashboard/status-renewing', array( 'id' => 'wf-premium-alert', 'title' => __('Premium License Expiring', 'wordfence'), 'subtitle' => sprintf(__('License renews %s', 'wordfence'), $days), 'link' => 'https://www.wordfence.com/gnl1reviewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Review Payment Method', 'wordfence'), 'linkNewWindow' => true, ))->render(); } ?>
'global-options-license', ))->render(); echo wfView::create('dashboard/options-group-view-customization', array( 'stateKey' => 'global-options-view-customization', ))->render(); echo wfView::create('dashboard/options-group-general', array( 'stateKey' => 'global-options-general', ))->render(); echo wfView::create('dashboard/options-group-dashboard', array( 'stateKey' => 'global-options-dashboard', ))->render(); echo wfView::create('dashboard/options-group-alert', array( 'stateKey' => 'global-options-alert', ))->render(); echo wfView::create('dashboard/options-group-email-summary', array( 'stateKey' => 'global-options-email-summary', ))->render(); ?>
lib/wfUnlockMsg.php000064400000002213152331132450010257 0ustar00

  
lib/menu_tools.php000064400000002733152331132450010213 0ustar00 render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
$tabs, ))->render(); ?>
lib/wfImportExportController.php000064400000006352152331132450013105 0ustar00call('export_options', array(), array('export' => json_encode($export))); if ($res['ok'] && $res['token']) { return array( 'ok' => 1, 'token' => $res['token'], ); } else if ($res['err']) { return array('err' => __("An error occurred: ", 'wordfence') . $res['err']); } else { throw new Exception(__("Invalid response: ", 'wordfence') . var_export($res, true)); } } catch (Exception $e) { return array('err' => __("An error occurred: ", 'wordfence') . $e->getMessage()); } } public function import($token) { try { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $res = $api->call('import_options', array(), array('token' => $token)); if ($res['ok'] && $res['export']) { $totalSet = 0; $import = @json_decode($res['export'], true); if (!is_array($import)) { return array('err' => __("An error occurred: Invalid options format received.", 'wordfence')); } //Basic Options $keys = wfConfig::getExportableOptionsKeys(); $toSet = array(); foreach ($keys as $key) { if (isset($import[$key])) { $toSet[$key] = $import[$key]; } } if (count($toSet)) { $validation = wfConfig::validate($toSet); $skipped = array(); if ($validation !== true) { foreach ($validation as $error) { $skipped[$error['option']] = $error['error']; unset($toSet[$error['option']]); } } $totalSet += count($toSet); wfConfig::save(wfConfig::clean($toSet)); } //Serialized Options if (isset($import['scanSched']) && is_array($import['scanSched'])) { wfConfig::set_ser('scanSched', $import['scanSched']); wfScanner::shared()->scheduleScans(); $totalSet++; } //Table-based Options if (isset($import['blocks']) && is_array($import['blocks'])) { wfBlock::importBlocks($import['blocks']); $totalSet += count($import['blocks']); } return array( 'ok' => 1, 'totalSet' => $totalSet, ); } else if ($res['err']) { return array('err' => sprintf(/* translators: Error message. */ __("An error occurred: %s", 'wordfence'), $res['err'])); } else { throw new Exception(sprintf(/* translators: Error message. */ __("Invalid response: %s", 'wordfence'), var_export($res, true))); } } catch (Exception $e) { return array('err' => sprintf(/* translators: Error message. */ __("An error occurred: %s", 'wordfence'), $e->getMessage())); } } } lib/wfJWT.php000064400000012517152331132450007031 0ustar00 $header, 'body' => $body, 'signature' => $signature, ); } /** * @param mixed $subject */ public function __construct($subject = null) { $this->claims = $this->getClaimDefaults(); $this->claims['sub'] = $subject; } /** * @return string */ public function encode() { $header = $this->encodeString($this->buildHeader()); $body = $this->encodeString($this->buildBody()); return sprintf('%s.%s.%s', $header, $body, $this->encodeString($this->sign(sprintf('%s.%s', $header, $body)))); } /** * @param string $token * @return array * @throws wfJWTException|InvalidArgumentException */ public function decode($token) { if (!is_string($token)) { throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.'); } // Verify the token matches the JWT format. if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) { throw new wfJWTException('Invalid token format.'); } list($header, $body, $signature) = explode('.', $token); // Verify signature matches the supplied payload. if (!$this->verifySignature($this->decodeString($signature), sprintf('%s.%s', $header, $body))) { throw new wfJWTException('Invalid signature.'); } // Test that the token is valid and not expired. $decodedHeader = base64_decode($header); if (!(is_string($decodedHeader) && $decodedHeader)) { throw new wfJWTException('Token header is invalid.'); } $header = json_decode($decodedHeader, true); if (!( is_array($header) && array_key_exists('alg', $header) && $header['alg'] === 'HS256' && $header['typ'] === 'JWT' )) { throw new wfJWTException('Token header is invalid.'); } $decodedBody = base64_decode($body); if (!(is_string($decodedBody) && $decodedBody)) { throw new wfJWTException('Token body is invalid.'); } $body = json_decode($decodedBody, true); if (!( is_array($body) && // Check the token not before now timestamp. array_key_exists('nbf', $body) && is_numeric($body['nbf']) && $body['nbf'] <= time() && // Check the token is not expired. array_key_exists('exp', $body) && is_numeric($body['exp']) && $body['exp'] >= time() && // Check the issuer and audience is ours. $body['iss'] === 'Wordfence ' . WORDFENCE_VERSION && $body['aud'] === 'Wordfence Central' )) { throw new wfJWTException('Token is invalid or expired.'); } return array( 'header' => $header, 'body' => $body, ); } /** * @param string $string * @return string */ public function sign($string) { $salt = wp_salt('auth'); return hash_hmac('sha256', $string, $salt, true); } /** * @param string $signature * @param string $message * @return bool */ public function verifySignature($signature, $message) { return hash_equals($this->sign($message), $signature); } /** * @return string */ public function __toString() { return $this->encode(); } /** * @param string $data * @return string */ public function encodeString($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } /** * @param string $data * @return bool|string */ public function decodeString($data) { return base64_decode(strtr($data, '-_', '+/')); } /** * @return mixed|string */ protected function buildHeader() { return '{"alg":"HS256","typ":"JWT"}'; } /** * @return mixed|string */ protected function buildBody() { return json_encode($this->getClaims()); } /** * @return array */ protected function getClaimDefaults() { $now = time(); return array( 'iss' => 'Wordfence ' . WORDFENCE_VERSION, 'aud' => 'Wordfence Central', 'nbf' => $now, 'iat' => $now, 'exp' => $now + self::JWT_TTL, ); } /** * @param array $claims */ public function addClaims($claims) { if (!is_array($claims)) { throw new InvalidArgumentException(__METHOD__ . ' expects argument 1 to be array.'); } $this->setClaims(array_merge($this->getClaims(), $claims)); } /** * @return array */ public function getClaims() { return $this->claims; } /** * @param array $claims */ public function setClaims($claims) { $this->claims = $claims; } } class wfJWTException extends Exception { }lib/wfScanEngine.php000064400000362454152331132450010407 0ustar00 false, 'plugin' => false, 'theme' => false, 'unknown' => false ); private $userPasswdQueue = ""; private $passwdHasIssues = wfIssues::STATUS_SECURE; private $suspectedFiles = false; //Files found with the ".suspected" extension private $gsbMultisiteBlogOffset = 0; private $updateCheck = false; private $pluginRepoStatus = array(); private $malwarePrefixesHash; private $coreHashesHash; private $scanMode = wfScanner::SCAN_TYPE_STANDARD; private $pluginsCounted = false; private $themesCounted = false; /** * @var wfScanner */ private $scanController; //Not serialized /** * @var wordfenceDBScanner */ private $dbScanner; /** * @var wfScanKnownFilesLoader */ private $knownFilesLoader; private $metrics = array(); private $checkHowGetIPsRequestTime = 0; public static function testForFullPathDisclosure($url = null, $filePath = null) { if ($url === null && $filePath === null) { $url = includes_url('rss-functions.php'); $filePath = ABSPATH . WPINC . '/rss-functions.php'; } $response = wp_remote_get($url); $html = wp_remote_retrieve_body($response); return preg_match("/" . preg_quote(realpath($filePath), "/") . "/i", $html); } public static function isDirectoryListingEnabled($url = null) { if ($url === null) { $uploadPaths = wp_upload_dir(); $url = $uploadPaths['baseurl']; } $response = wp_remote_get($url); return !is_wp_error($response) && ($responseBody = wp_remote_retrieve_body($response)) && stripos($responseBody, 'Index of') !== false; } public static function refreshScanNotification($issuesInstance = null) { if ($issuesInstance === null) { $issuesInstance = new wfIssues(); } $message = wfConfig::get('lastScanCompleted', false); if ($message === false || empty($message)) { $n = wfNotification::getNotificationForCategory('wfplugin_scan'); if ($n !== null) { $n->markAsRead(); } } else if ($message == 'ok') { $issueCount = $issuesInstance->getIssueCount(); if ($issueCount) { new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, "<a href=\"" . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . "\">" . /* translators: Number of scan results. */ sprintf(_n('%d issue found in most recent scan', '%d issues found in most recent scan', $issueCount, 'wordfence'), $issueCount) . '</a>', 'wfplugin_scan'); } else { $n = wfNotification::getNotificationForCategory('wfplugin_scan'); if ($n !== null) { $n->markAsRead(); } } } else { $failureType = wfConfig::get('lastScanFailureType'); if ($failureType == 'duration') { new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . '">Scan aborted due to duration limit</a>', 'wfplugin_scan'); } else if ($failureType == 'versionchange') { //No need to create a notification } else { $trimmedError = substr($message, 0, 100) . (strlen($message) > 100 ? '...' : ''); new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . '">Scan failed: ' . esc_html($trimmedError) . '</a>', 'wfplugin_scan'); } } } public function __sleep() { //Same order here as above for properties that are included in serialization return array('hasher', 'jobList', 'i', 'wp_version', 'apiKey', 'startTime', 'maxExecTime', 'publicScanEnabled', 'fileContentsResults', 'scanner', 'scanQueue', 'hoover', 'scanData', 'statusIDX', 'userPasswdQueue', 'passwdHasIssues', 'suspectedFiles', 'dbScanner', 'knownFilesLoader', 'metrics', 'checkHowGetIPsRequestTime', 'gsbMultisiteBlogOffset', 'updateCheck', 'pluginRepoStatus', 'malwarePrefixesHash', 'coreHashesHash', 'scanMode', 'pluginsCounted', 'themesCounted'); } public function __construct($malwarePrefixesHash = '', $coreHashesHash = '', $scanMode = wfScanner::SCAN_TYPE_STANDARD) { $this->startTime = time(); $this->recordMetric('scan', 'start', $this->startTime); $this->maxExecTime = self::getMaxExecutionTime(); $this->i = new wfIssues(); $this->cycleStartTime = time(); $this->wp_version = wfUtils::getWPVersion(); $this->apiKey = wfConfig::get('apiKey'); $this->api = new wfAPI($this->apiKey, $this->wp_version); $this->malwarePrefixesHash = $malwarePrefixesHash; $this->coreHashesHash = $coreHashesHash; include(dirname(__FILE__) . '/wfDict.php'); //$dictWords $this->dictWords = $dictWords; $this->scanMode = $scanMode; $this->scanController = new wfScanner($scanMode); $jobs = $this->scanController->jobs(); foreach ($jobs as $job) { if (method_exists($this, 'scan_' . $job . '_init')) { foreach (array('init', 'main', 'finish') as $op) { $this->jobList[] = $job . '_' . $op; } } else if (method_exists($this, 'scan_' . $job)) { $this->jobList[] = $job; } } } public function scanController() { return $this->scanController; } /** * Deletes all new issues. To only delete specific types, provide an array of issue types. * * @param null|array $types */ public function deleteNewIssues($types = null) { $this->i->deleteNew($types); } public function __wakeup() { $this->cycleStartTime = time(); $this->api = new wfAPI($this->apiKey, $this->wp_version); include(dirname(__FILE__) . '/wfDict.php'); //$dictWords $this->dictWords = $dictWords; $this->scanController = new wfScanner($this->scanMode); } public function isFullScan() { return $this->scanMode != wfScanner::SCAN_TYPE_QUICK; } public function go() { try { self::checkForKill(); $this->doScan(); wfConfig::set('lastScanCompleted', 'ok'); wfConfig::set('lastScanFailureType', false); self::checkForKill(); //updating this scan ID will trigger the scan page to load/reload the results. $this->scanController->recordLastScanTime(); //scan ID only incremented at end of scan to make UI load new results $this->emailNewIssues(); if ($this->isFullScan()) { $this->recordMetric('scan', 'duration', (time() - $this->startTime)); $this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false)); $this->submitMetrics(); } wfScanEngine::refreshScanNotification($this->i); if (wfCentral::isConnected()) { wfCentral::updateScanStatus(); } } catch (wfScanEngineDurationLimitException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_DURATION_REACHED); $this->scanController->recordLastScanTime(); $this->emailNewIssues(true); $this->recordMetric('scan', 'duration', (time() - $this->startTime)); $this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false)); $this->submitMetrics(); wfScanEngine::refreshScanNotification($this->i); throw $e; } catch (wfScanEngineCoreVersionChangeException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_VERSION_CHANGE); $this->scanController->recordLastScanTime(); $this->recordMetric('scan', 'duration', (time() - $this->startTime)); $this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false)); $this->submitMetrics(); $this->deleteNewIssues(); wfScanEngine::refreshScanNotification($this->i); throw $e; } catch (wfScanEngineTestCallbackFailedException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); $this->scanController->recordLastScanTime(); $this->recordMetric('scan', 'duration', (time() - $this->startTime)); $this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false)); $this->recordMetric('scan', 'failure', $e->getMessage()); $this->submitMetrics(); wfScanEngine::refreshScanNotification($this->i); throw $e; } catch (Exception $e) { if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL); } $this->recordMetric('scan', 'duration', (time() - $this->startTime)); $this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false)); $this->recordMetric('scan', 'failure', $e->getMessage()); $this->submitMetrics(); wfScanEngine::refreshScanNotification($this->i); throw $e; } } public function checkForDurationLimit() { static $timeLimit = false; if ($timeLimit === false) { $timeLimit = intval(wfConfig::get('scan_maxDuration')); if ($timeLimit < 1) { $timeLimit = WORDFENCE_DEFAULT_MAX_SCAN_TIME; } } if ((time() - $this->startTime) > $timeLimit) { $error = sprintf( /* translators: 1. Time duration. 2. Support URL. */ __('The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href="%2$s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'), wfUtils::makeDuration($timeLimit), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT) ); $this->addIssue('timelimit', wfIssues::SEVERITY_HIGH, md5($this->startTime), md5($this->startTime), __('Scan Time Limit Exceeded', 'wordfence'), $error, array()); $this->status(1, 'info', '-------------------'); $this->status(1, 'info', sprintf( /* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */ __('Scan interrupted. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s.', 'wordfence'), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0), wfUtils::makeDuration(time() - $this->startTime, true) )); if ($this->i->totalIssues > 0) { $this->status(10, 'info', "SUM_FINAL:" . __("Scan interrupted. You have " . $this->i->totalIssues . " new issue" . ($this->i->totalIssues == 1 ? "" : "s") . " to fix. See below.")); $this->status(10, 'info', "SUM_FINAL:" . sprintf( /* translators: Number of scan results. */ _n( "Scan interrupted. You have %d new issue to fix. See below.", "Scan interrupted. You have %d new issues to fix. See below.", $this->i->totalIssues, 'wordfence'), $this->i->totalIssues ) ); } else { $this->status(10, 'info', "SUM_FINAL:" . __('Scan interrupted. No problems found prior to stopping.', 'wordfence')); } throw new wfScanEngineDurationLimitException($error); } } public function checkForCoreVersionChange() { $startVersion = wfConfig::get('wfScanStartVersion'); $currentVersion = wfUtils::getWPVersion(true); if (version_compare($startVersion, $currentVersion) != 0) { throw new wfScanEngineCoreVersionChangeException(sprintf( /* translators: 1. Software version. 2. Software version. */ __('Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later.', 'wordfence'), $startVersion, $currentVersion)); } } public function shouldFork() { static $lastCheck = 0; if (time() - $this->cycleStartTime > $this->maxExecTime) { return true; } if ($lastCheck > time() - $this->maxExecTime) { return false; } $lastCheck = time(); $this->checkForCoreVersionChange(); wfIssues::updateScanStillRunning(); self::checkForKill(); $this->checkForDurationLimit(); return false; } public function forkIfNeeded() { wfIssues::updateScanStillRunning(); $this->checkForCoreVersionChange(); self::checkForKill(); $this->checkForDurationLimit(); if (time() - $this->cycleStartTime > $this->maxExecTime) { wordfence::status(4, 'info', __("Forking during hash scan to ensure continuity.", 'wordfence')); $this->fork(); } } public function fork() { wordfence::status(4, 'info', __("Entered fork()", 'wordfence')); if (wfConfig::set_ser('wfsd_engine', $this, true, wfConfig::DONT_AUTOLOAD)) { $this->scanController->flushSummaryItems(); wordfence::status(4, 'info', __("Calling startScan(true)", 'wordfence')); self::startScan(true, $this->scanMode); } //Otherwise there was an error so don't start another scan. exit(0); } public function emailNewIssues($timeLimitReached = false) { if (!wfCentral::pluginAlertingDisabled()) { $this->i->emailNewIssues($timeLimitReached, $this->scanController); } } public function submitMetrics() { if (wfConfig::get('other_WFNet', true)) { //Trim down the malware matches if needed to allow the report call to succeed if (isset($this->metrics['malwareSignature'])) { //Get count $count = 0; $extra_count = 0; $rules_with_extras = 0; foreach ($this->metrics['malwareSignature'] as $rule => $payloads) { $count += count($payloads); $extra_count += (count($payloads) - 1); if (count($payloads) > 1) { $rules_with_extras++; } } //Trim additional matches $overage = $extra_count - WORDFENCE_SCAN_ISSUES_MAX_REPORT; if ($overage > 0) { foreach ($this->metrics['malwareSignature'] as $rule => $payloads) { $percent = min(1, (count($payloads) - 1) / $extra_count); //Percentage of the overage this rule is responsible for $to_remove = min(count($payloads) - 1, ceil($percent * $overage)); //Remove the lesser of (all but one, the percentage of the overage) $sliced = array_slice($this->metrics['malwareSignature'][$rule], 0, max(1, count($payloads) - $to_remove)); $count -= (count($this->metrics['malwareSignature'][$rule]) - count($sliced)); $this->metrics['malwareSignature'][$rule] = $sliced; } } //Trim single matches if ($count > WORDFENCE_SCAN_ISSUES_MAX_REPORT) { $sliced = array_slice($this->metrics['malwareSignature'], 0, WORDFENCE_SCAN_ISSUES_MAX_REPORT, true); $this->metrics['malwareSignature'] = $sliced; } } $this->api->call('record_scan_metrics', array(), array('metrics' => $this->metrics)); } } private function doScan() { if ($this->scanController->useLowResourceScanning()) { $isFork = ($_GET['isFork'] == '1' ? true : false); wfConfig::set('lowResourceScanWaitStep', !wfConfig::get('lowResourceScanWaitStep')); if ($isFork && wfConfig::get('lowResourceScanWaitStep')) { sleep($this->maxExecTime / 2); $this->fork(); //exits } } while (sizeof($this->jobList) > 0) { self::checkForKill(); $jobName = $this->jobList[0]; $callback = array($this, 'scan_' . $jobName); if (is_callable($callback)) { call_user_func($callback); } array_shift($this->jobList); //only shift once we're done because we may pause halfway through a job and need to pick up where we left off self::checkForKill(); if ($this->forkRequested) { $this->fork(); } else { $this->forkIfNeeded(); } } $this->status(1, 'info', '-------------------'); $peakMemory = wfScan::logPeakMemory(); $this->status(2, 'info', sprintf( /* translators: 1. Memory in bytes. 2. Memory in bytes. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - wfScan::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); if ($this->isFullScan()) { $this->status(1, 'info', sprintf( /* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */ __('Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s.', 'wordfence'), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0), $this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0), wfUtils::makeDuration(time() - $this->startTime, true) )); } else { $this->status(1, 'info', sprintf( /* translators: 1. Time duration. */ __("Quick Scan Complete. Scanned in %s.", 'wordfence'), wfUtils::makeDuration(time() - $this->startTime, true) )); } $ignoredText = ''; if ($this->i->totalIgnoredIssues > 0) { $ignoredText = ' ' . sprintf( /* translators: Number of scan results. */ _n( '%d ignored issue was also detected.', '%d ignored issues were also detected.', $this->i->totalIgnoredIssues, 'wordfence' ), $this->i->totalIgnoredIssues); } if ($this->i->totalIssues > 0) { $this->status(10, 'info', "SUM_FINAL:" . sprintf( /* translators: Number of scan results. */ _n( "Scan complete. You have %d new issue to fix.", "Scan complete. You have %d new issues to fix.", $this->i->totalIssues, 'wordfence'), $this->i->totalIssues ) . $ignoredText . ' ' . __('See below.', 'wordfence') ); } else { $this->status(10, 'info', "SUM_FINAL:" . __('Scan complete. Congratulations, no new problems found.', 'wordfence') . $ignoredText); } return; } public function getCurrentJob() { return $this->jobList[0]; } private function scan_checkSpamIP() { if ($this->scanController->isPremiumScan()) { $this->statusIDX['checkSpamIP'] = wfIssues::statusStart(__("Checking if your site IP is generating spam", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SPAM_CHECK); $result = $this->api->call('check_spam_ip', array(), array( 'siteURL' => site_url() )); $haveIssues = wfIssues::STATUS_SECURE; if (!empty($result['haveIssues']) && is_array($result['issues'])) { foreach ($result['issues'] as $issue) { $added = $this->addIssue($issue['type'], wfIssues::SEVERITY_HIGH, $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) { $haveIssues = wfIssues::STATUS_IGNORED; } } } wfIssues::statusEnd($this->statusIDX['checkSpamIP'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SPAM_CHECK, $haveIssues); } else { wfIssues::statusPaidOnly(__("Checking if your IP is generating spam is for paid members only", 'wordfence')); sleep(2); } } private function scan_checkGSB_init() { if ($this->scanController->isPremiumScan()) { $this->statusIDX['checkGSB'] = wfIssues::statusStart(__("Checking if your site is on a domain blocklist", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_BLACKLIST_CHECK); $h = new wordfenceURLHoover($this->apiKey, $this->wp_version); $h->cleanup(); } else { wfIssues::statusPaidOnly(__("Checking if your site is on a domain blocklist is for paid members only", 'wordfence')); sleep(2); } } private function scan_checkGSB_main() { if ($this->scanController->isPremiumScan()) { if (is_multisite()) { global $wpdb; $h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true); $blogIDs = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE blog_id > %d ORDER BY blog_id ASC", $this->gsbMultisiteBlogOffset)); //Can't use wp_get_sites or get_sites because they return empty at 10k sites foreach ($blogIDs as $id) { $homeURL = get_home_url($id); $h->hoover($id, $homeURL); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS); $siteURL = get_site_url($id); if ($homeURL != $siteURL) { $h->hoover($id, $siteURL); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS); } if ($this->shouldFork()) { $this->gsbMultisiteBlogOffset = $id; $this->forkIfNeeded(); } } } } } private function scan_checkGSB_finish() { if ($this->scanController->isPremiumScan()) { if (is_multisite()) { $h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true); $badURLs = $h->getBaddies(); if ($h->errorMsg) { $this->status(4, 'info', sprintf(/* translators: Error message. */ __("Error checking domain blocklists: %s", 'wordfence'), $h->errorMsg)); wfIssues::statusEnd($this->statusIDX['checkGSB'], wfIssues::STATUS_FAILED); $this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, wfIssues::STATUS_FAILED); return; } $h->cleanup(); } else { $urlsToCheck = array(array(wfUtils::wpHomeURL(), wfUtils::wpSiteURL())); $badURLs = $this->api->call('check_bad_urls', array(), array('toCheck' => json_encode($urlsToCheck))); //Skipping the separate prefix check since there are just two URLs $finalResults = array(); foreach ($badURLs as $file => $badSiteList) { if (!isset($finalResults[$file])) { $finalResults[$file] = array(); } foreach ($badSiteList as $badSite) { $finalResults[$file][] = array( 'URL' => $badSite[0], 'badList' => $badSite[1] ); } } $badURLs = $finalResults; } $haveIssues = wfIssues::STATUS_SECURE; if (is_array($badURLs) && count($badURLs) > 0) { foreach ($badURLs as $id => $badSiteList) { foreach ($badSiteList as $badSite) { $url = $badSite['URL']; $badList = $badSite['badList']; $data = array('badURL' => $url); if ($badList == 'goog-malware-shavar') { if (is_multisite()) { $shortMsg = sprintf(/* translators: WordPress site ID. */ __('The multisite blog with ID %d is listed on Google\'s Safe Browsing malware list.', 'wordfence'), intval($id)); $data['multisite'] = intval($id); } else { $shortMsg = __('Your site is listed on Google\'s Safe Browsing malware list.', 'wordfence'); } $longMsg = sprintf( /* translators: 1. URL. 2. URL. */ __('The URL %1$s is on the malware list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($url), urlencode($url)); $data['gsb'] = $badList; } else if ($badList == 'googpub-phish-shavar') { if (is_multisite()) { $shortMsg = sprintf( /* translators: WordPress site ID. */ __('The multisite blog with ID %d is listed on Google\'s Safe Browsing phishing list.', 'wordfence'), intval($id)); $data['multisite'] = intval($id); } else { $shortMsg = __('Your site is listed on Google\'s Safe Browsing phishing list.', 'wordfence'); } $longMsg = sprintf( /* translators: 1. URL. 2. URL. */ __('The URL %1$s is on the phishing list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($url), urlencode($url)); $data['gsb'] = $badList; } else if ($badList == 'wordfence-dbl') { if (is_multisite()) { $shortMsg = sprintf( /* translators: WordPress site ID. */ __('The multisite blog with ID %d is listed on the Wordfence domain blocklist.', 'wordfence'), intval($id)); $data['multisite'] = intval($id); } else { $shortMsg = __('Your site is listed on the Wordfence domain blocklist.', 'wordfence'); } $longMsg = sprintf( /* translators: URL. */ __("The URL %s is on the blocklist.", 'wordfence'), esc_html($url)); $data['gsb'] = $badList; } else { if (is_multisite()) { $shortMsg = sprintf( /* translators: WordPress site ID. */ __('The multisite blog with ID %d is listed on a domain blocklist.', 'wordfence'), intval($id)); $data['multisite'] = intval($id); } else { $shortMsg = __('Your site is listed on a domain blocklist.', 'wordfence'); } $longMsg = sprintf(/* translators: URL. */ __("The URL is: %s", 'wordfence'), esc_html($url)); $data['gsb'] = 'unknown'; } $added = $this->addIssue('checkGSB', wfIssues::SEVERITY_CRITICAL, 'checkGSB', 'checkGSB' . $url, $shortMsg, $longMsg, $data); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } } wfIssues::statusEnd($this->statusIDX['checkGSB'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, $haveIssues); } } private function scan_checkHowGetIPs_init() { $this->statusIDX['checkHowGetIPs'] = wfIssues::statusStart(__("Checking for the most secure way to get IPs", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SERVER_STATE); $this->checkHowGetIPsRequestTime = time(); wfUtils::requestDetectProxyCallback(); } private function scan_checkHowGetIPs_main() { if (!defined('WORDFENCE_CHECKHOWGETIPS_TIMEOUT')) { define('WORDFENCE_CHECKHOWGETIPS_TIMEOUT', 30); } $haveIssues = wfIssues::STATUS_SECURE; $existing = wfConfig::get('howGetIPs', ''); $recommendation = wfConfig::get('detectProxyRecommendation', ''); while (empty($recommendation) && (time() - $this->checkHowGetIPsRequestTime) < WORDFENCE_CHECKHOWGETIPS_TIMEOUT) { sleep(1); $this->forkIfNeeded(); $recommendation = wfConfig::get('detectProxyRecommendation', ''); } if ($recommendation == 'DEFERRED') { //Do nothing $haveIssues = wfIssues::STATUS_SKIPPED; } else if (empty($recommendation)) { $haveIssues = wfIssues::STATUS_FAILED; } else if ($recommendation == 'UNKNOWN') { $added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION, __("Unable to accurately detect IPs", 'wordfence'), sprintf(/* translators: Support URL. */ __('Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS)) , array()); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) { $haveIssues = wfIssues::STATUS_IGNORED; } } else if (!empty($existing) && $existing != $recommendation) { $extraMsg = ''; if ($recommendation == 'REMOTE_ADDR') { $extraMsg = ' ' . __('For maximum security use PHP\'s built in REMOTE_ADDR.', 'wordfence'); } else if ($recommendation == 'HTTP_X_FORWARDED_FOR') { $extraMsg = ' ' . __('This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs.', 'wordfence'); } else if ($recommendation == 'HTTP_X_REAL_IP') { $extraMsg = ' ' . __('This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs.', 'wordfence'); } else if ($recommendation == 'HTTP_CF_CONNECTING_IP') { $extraMsg = ' ' . __('This site appears to be behind Cloudflare, so using the Cloudflare "CF-Connecting-IP" HTTP header will resolve to the correct IPs.', 'wordfence'); } $added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION, __("'How does Wordfence get IPs' is misconfigured", 'wordfence'), sprintf( /* translators: Support URL. */ __('A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS) ) . $extraMsg, array('recommendation' => $recommendation)); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) { $haveIssues = wfIssues::STATUS_IGNORED; } } wfIssues::statusEnd($this->statusIDX['checkHowGetIPs'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues); } private function scan_checkHowGetIPs_finish() { /* Do nothing */ } private function scan_checkReadableConfig() { $haveIssues = wfIssues::STATUS_SECURE; $status = wfIssues::statusStart(__("Check for publicly accessible configuration files, backup files and logs", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_PUBLIC_FILES); $backupFileTests = array( wfCommonBackupFileTest::createFromRootPath('.user.ini'), // wfCommonBackupFileTest::createFromRootPath('.htaccess'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.bak'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.bak.a2'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.swo'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.save'), new wfCommonBackupFileTest(home_url('%23wp-config.php%23'), ABSPATH . '#wp-config.php#'), wfCommonBackupFileTest::createFromRootPath('wp-config.php~'), wfCommonBackupFileTest::createFromRootPath('wp-config.old'), wfCommonBackupFileTest::createFromRootPath('.wp-config.php.swp'), wfCommonBackupFileTest::createFromRootPath('wp-config.bak'), wfCommonBackupFileTest::createFromRootPath('wp-config.save'), wfCommonBackupFileTest::createFromRootPath('wp-config.php_bak'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.swp'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.old'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.original'), wfCommonBackupFileTest::createFromRootPath('wp-config.php.orig'), wfCommonBackupFileTest::createFromRootPath('wp-config.txt'), wfCommonBackupFileTest::createFromRootPath('wp-config.original'), wfCommonBackupFileTest::createFromRootPath('wp-config.orig'), new wfCommonBackupFileTest(content_url('/debug.log'), WP_CONTENT_DIR . '/debug.log', array( 'headers' => array( 'Range' => 'bytes=0-700', ), )), ); $backupFileTests = array_merge($backupFileTests, wfCommonBackupFileTest::createAllForFile('searchreplacedb2.php', wfCommonBackupFileTest::MATCH_REGEX, '/<title>Search and replace DB/i')); $userIniFilename = ini_get('user_ini.filename'); if ($userIniFilename && $userIniFilename !== '.user.ini') { $backupFileTests[] = wfCommonBackupFileTest::createFromRootPath($userIniFilename); } /** @var wfCommonBackupFileTest $test */ foreach ($backupFileTests as $test) { $pathFromRoot = (strpos($test->getPath(), ABSPATH) === 0) ? substr($test->getPath(), strlen(ABSPATH)) : $test->getPath(); wordfence::status(4, 'info', "Testing {$pathFromRoot}"); if ($test->fileExists() && $test->isPubliclyAccessible()) { $key = "configReadable" . bin2hex($test->getUrl()); $added = $this->addIssue( 'configReadable', wfIssues::SEVERITY_CRITICAL, $key, $key, sprintf( /* translators: File path. */ __('Publicly accessible config, backup, or log file found: %s', 'wordfence'), esc_html($pathFromRoot)), sprintf( /* translators: 1. URL to publicly accessible file. 2. Support URL. */ __('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn more</a>', 'wordfence'), $test->getUrl(), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PUBLIC_CONFIG) ), array( 'url' => $test->getUrl(), 'file' => $pathFromRoot, 'canDelete' => true, ) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } wfIssues::statusEnd($status, $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_PUBLIC_FILES, $haveIssues); } private function scan_wpscan_fullPathDisclosure() { $file = realpath(ABSPATH . WPINC . "/rss-functions.php"); if (!$file) { return; } $haveIssues = wfIssues::STATUS_SECURE; $status = wfIssues::statusStart(__("Checking if your server discloses the path to the document root", 'wordfence')); $testPage = includes_url() . basename($file); if (self::testForFullPathDisclosure($testPage, $file)) { $key = 'wpscan_fullPathDisclosure' . $testPage; $added = $this->addIssue( 'wpscan_fullPathDisclosure', wfIssues::SEVERITY_HIGH, $key, $key, __('Web server exposes the document root', 'wordfence'), __('Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view.', 'wordfence'), array('url' => $testPage) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } wfIssues::statusEnd($status, $haveIssues); } private function scan_wpscan_directoryListingEnabled() { $this->statusIDX['wpscan_directoryListingEnabled'] = wfIssues::statusStart("Checking to see if directory listing is enabled"); $uploadPaths = wp_upload_dir(); $enabled = self::isDirectoryListingEnabled($uploadPaths['baseurl']); $haveIssues = wfIssues::STATUS_SECURE; if ($enabled) { $added = $this->addIssue( 'wpscan_directoryListingEnabled', wfIssues::SEVERITY_HIGH, 'wpscan_directoryListingEnabled', 'wpscan_directoryListingEnabled', __("Directory listing is enabled", 'wordfence'), __("Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed.", 'wordfence'), array( 'url' => $uploadPaths['baseurl'], ) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } wfIssues::statusEnd($this->statusIDX['wpscan_directoryListingEnabled'], $haveIssues); } private function scan_checkSpamvertized() { if ($this->scanController->isPremiumScan()) { $this->statusIDX['spamvertizeCheck'] = wfIssues::statusStart(__("Checking if your site is being Spamvertised", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SPAMVERTISING_CHECKS); $result = $this->api->call('spamvertize_check', array(), array( 'siteURL' => site_url() )); $haveIssues = wfIssues::STATUS_SECURE; if ($result['haveIssues'] && is_array($result['issues'])) { foreach ($result['issues'] as $issue) { $added = $this->addIssue($issue['type'], wfIssues::SEVERITY_CRITICAL, $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } wfIssues::statusEnd($this->statusIDX['spamvertizeCheck'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SPAMVERTISING_CHECKS, $haveIssues); } else { wfIssues::statusPaidOnly(__("Check if your site is being Spamvertized is for paid members only", 'wordfence')); sleep(2); } } private function _scannedSkippedPaths() { static $_cache = null; if ($_cache === null) { $base_abspath_relative = array('.htaccess', 'index.php', 'license.txt', 'readme.html', 'wp-activate.php', 'wp-admin', 'wp-app.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-content', 'wp-cron.php', 'wp-includes', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-pass.php', 'wp-register.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php', 'xmlrpc.php', '.well-known', 'cgi-bin'); $base_absolute = array(); if (defined('WP_CONTENT_DIR') && strlen(WP_CONTENT_DIR)) { $base_absolute[] = WP_CONTENT_DIR; } if (defined('WP_PLUGIN_DIR') && strlen(WP_PLUGIN_DIR)) { $base_absolute[] = WP_PLUGIN_DIR; } if (defined('UPLOADS') && strlen(UPLOADS)) { $base_absolute[] = ABSPATH . UPLOADS; /* UPLOADS is relative to ABSPATH unlike the others */ } $baseContents = scandir(ABSPATH); if (!is_array($baseContents)) { throw new Exception(__("Wordfence could not read the contents of your base WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory.", 'wordfence')); } $scanOutside = $this->scanController->scanOutsideWordPress(); if ($scanOutside) { $_cache = array('scanned' => array_merge(array(ABSPATH), $base_absolute), 'skipped' => array()); return $_cache; } $scanned = array(); $skipped = array(); foreach ($baseContents as $file) { //Only include base files less than a meg that are files. if ($file == '.' || $file == '..') { continue; } $fullFile = rtrim(ABSPATH, '/') . '/' . $file; if (!wfUtils::fileTooBig($fullFile)) { //Silently ignore files that are too large for the purposes of inclusion in the scan issue if (in_array($file, $base_abspath_relative) || in_array($fullFile, $base_absolute) || (@is_file($fullFile) && @is_readable($fullFile))) { $scanned[] = realpath($fullFile); } else { $skipped[] = $fullFile; } } } foreach ($base_absolute as $fullFile) { $realFile = realpath($fullFile); if ($realFile && !in_array($realFile, $scanned)) { $scanned[] = $realFile; } } $_cache = array('scanned' => $scanned, 'skipped' => $skipped); } return $_cache; } private function scan_checkSkippedFiles() { $haveIssues = wfIssues::STATUS_SECURE; $status = wfIssues::statusStart(__("Checking for paths skipped due to scan settings", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SERVER_STATE); $paths = $this->_scannedSkippedPaths(); if (!empty($paths['skipped'])) { $skippedList = ''; foreach ($paths['skipped'] as $index => $fullPath) { $path = esc_html($fullPath); if (strpos($fullPath, ABSPATH) === 0) { $path = '~/' . esc_html(substr($fullPath, strlen(ABSPATH))); } if ($index >= 10) { $skippedList .= sprintf(/* translators: Number of paths skipped in scan. */ __(', and %d more.', 'wordfence'), count($paths['skipped']) - 10); break; } if (!empty($skippedList)) { if (count($paths['skipped']) == 2) { $skippedList .= ' and '; } else if ($index == count($paths['skipped']) - 1) { $skippedList .= ', and '; } else { $skippedList .= ', '; } } $skippedList .= $path; } $c = count($paths['skipped']); $key = "skippedPaths"; $added = $this->addIssue( 'skippedPaths', wfIssues::SEVERITY_LOW, $key, $key, sprintf(/* translators: Number of paths skipped in scan. */ _n('%d path was skipped for the malware scan due to scan settings', '%d paths were skipped for the malware scan due to scan settings', $c, 'wordfence'), $c), sprintf( /* translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths. */ _n( 'The option "Scan files outside your WordPress installation" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a><br><br>The path skipped is %3$s', 'The option "Scan files outside your WordPress installation" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a><br><br>The paths skipped are %3$s', $c, 'wordfence' ), $c, wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_SKIPPED_PATHS), $skippedList ), array() ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } wfIssues::statusEnd($status, $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues); } private function scan_knownFiles_init() { $paths = $this->_scannedSkippedPaths(); $includeInKnownFilesScan = $paths['scanned']; if ($this->scanController->scanOutsideWordPress()) { wordfence::status(2, 'info', __("Including files that are outside the WordPress installation in the scan.", 'wordfence')); } $this->status(2, 'info', __("Getting plugin list from WordPress", 'wordfence')); $knownFilesPlugins = $this->getPlugins(); $this->status(2, 'info', sprintf(/* translators: Number of plugins. */ _n("Found %d plugin", "Found %d plugins", sizeof($knownFilesPlugins), 'wordfence'), sizeof($knownFilesPlugins))); $this->status(2, 'info', __("Getting theme list from WordPress", 'wordfence')); $knownFilesThemes = $this->getThemes(); $this->status(2, 'info', sprintf(/* translators: Number of themes. */ _n("Found %d theme", "Found %d themes", sizeof($knownFilesThemes), 'wordfence'), sizeof($knownFilesThemes))); $this->hasher = new wordfenceHash(strlen(ABSPATH), ABSPATH, $includeInKnownFilesScan, $knownFilesThemes, $knownFilesPlugins, $this, wfUtils::hex2bin($this->malwarePrefixesHash), $this->coreHashesHash, $this->scanMode); } private function scan_knownFiles_main() { $this->hasher->run($this); //Include this so we can call addIssue and ->api-> $this->suspectedFiles = $this->hasher->getSuspectedFiles(); $this->hasher = false; } private function scan_knownFiles_finish() { } private function scan_fileContents_init() { $options = $this->scanController->scanOptions(); if ($options['scansEnabled_fileContents']) { $this->statusIDX['infect'] = wfIssues::statusStart(__('Scanning file contents for infections and vulnerabilities', 'wordfence')); //This stage is marked as started earlier in the hasher rather than here } else { wfIssues::statusDisabled(__("Skipping scan of file contents for infections and vulnerabilities", 'wordfence')); } if ($options['scansEnabled_fileContentsGSB']) { $this->statusIDX['GSB'] = wfIssues::statusStart(__('Scanning file contents for URLs on a domain blocklist', 'wordfence')); //This stage is marked as started earlier in the hasher rather than here } else { wfIssues::statusDisabled(__("Skipping scan of file contents for URLs on a domain blocklist", 'wordfence')); } if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) { $this->scanner = new wordfenceScanner($this->apiKey, $this->wp_version, ABSPATH, $this); $this->status(2, 'info', __("Starting scan of file contents", 'wordfence')); } else { $this->scanner = false; } } private function scan_fileContents_main() { $options = $this->scanController->scanOptions(); if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) { $this->fileContentsResults = $this->scanner->scan($this); } } private function scan_fileContents_finish() { $options = $this->scanController->scanOptions(); if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) { $this->status(2, 'info', __("Done file contents scan", 'wordfence')); if ($this->scanner->errorMsg) { throw new Exception($this->scanner->errorMsg); } $this->scanner = null; $haveIssues = wfIssues::STATUS_SECURE; $haveIssuesGSB = wfIssues::STATUS_SECURE; foreach ($this->fileContentsResults as $issue) { $this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $issue['shortMsg'])); $added = $this->addIssue($issue['type'], $issue['severity'], $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']); if (isset($issue['data']['gsb'])) { if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssuesGSB = wfIssues::STATUS_PROBLEM; } else if ($haveIssuesGSB != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssuesGSB = wfIssues::STATUS_IGNORED; } } else { if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } $this->fileContentsResults = null; if ($options['scansEnabled_fileContents']) { wfIssues::statusEnd($this->statusIDX['infect'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_MALWARE_SCAN, $haveIssues); } if ($options['scansEnabled_fileContentsGSB']) { wfIssues::statusEnd($this->statusIDX['GSB'], $haveIssuesGSB); $this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssuesGSB); } } } private function scan_suspectedFiles() { $haveIssues = wfIssues::STATUS_SECURE; $status = wfIssues::statusStart(__("Scanning for publicly accessible quarantined files", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_PUBLIC_FILES); if (is_array($this->suspectedFiles) && count($this->suspectedFiles) > 0) { foreach ($this->suspectedFiles as $file) { wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Testing accessibility of: %s", 'wordfence'), $file)); $test = wfPubliclyAccessibleFileTest::createFromRootPath($file); if ($test->fileExists() && $test->isPubliclyAccessible()) { $key = "publiclyAccessible" . bin2hex($test->getUrl()); $added = $this->addIssue( 'publiclyAccessible', wfIssues::SEVERITY_HIGH, $key, $key, sprintf(/* translators: File path. */ __('Publicly accessible quarantined file found: %s', 'wordfence'), esc_html($file)), sprintf( /* translators: URL to publicly accessible file. */ __('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be removed or made inaccessible.', 'wordfence'), $test->getUrl() ), array( 'url' => $test->getUrl(), 'file' => $file, 'canDelete' => true, ) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } } wfIssues::statusEnd($status, $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_PUBLIC_FILES, $haveIssues); } private function scan_posts_init() { $this->statusIDX['posts'] = wfIssues::statusStart(__('Scanning posts for URLs on a domain blocklist', 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY); $blogsToScan = self::getBlogsToScan('posts'); $this->scanQueue = ''; $wfdb = new wfDB(); $this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version); foreach ($blogsToScan as $blog) { $q1 = $wfdb->querySelect("select ID from " . $blog['table'] . " where post_type IN ('page', 'post') and post_status = 'publish'"); foreach ($q1 as $idRow) { $this->scanQueue .= pack('LL', $blog['blog_id'], $idRow['ID']); } } } private function scan_posts_main() { global $wpdb; $wfdb = new wfDB(); while (strlen($this->scanQueue) > 0) { $segment = substr($this->scanQueue, 0, 8); $this->scanQueue = substr($this->scanQueue, 8); $elem = unpack('Lblog/Lpost', $segment); $queueSize = strlen($this->scanQueue) / 8; if ($queueSize > 0 && $queueSize % 1000 == 0) { wordfence::status(2, 'info', sprintf(/* translators: Number of posts left to scan. */ __("Scanning posts with %d left to scan.", 'wordfence'), $queueSize)); } $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS); $blogID = $elem['blog']; $postID = $elem['post']; $blogs = self::getBlogsToScan('posts', $blogID); $blog = array_shift($blogs); $table = wfDB::blogTable('posts', $blogID); $row = $wfdb->querySingleRec("select ID, post_title, post_type, post_date, post_content from {$table} where ID = %d", $postID); $found = $this->hoover->hoover($blogID . '-' . $row['ID'], $row['post_title'] . ' ' . $row['post_content'], wordfenceURLHoover::standardExcludedHosts()); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found); if (preg_match('/(?:<[\s\n\r\t]*script[\r\s\n\t]+.*>|<[\s\n\r\t]*meta.*refresh)/i', $row['post_title'])) { $this->addIssue( 'postBadTitle', wfIssues::SEVERITY_HIGH, $row['ID'], md5($row['post_title']), __("Post title contains suspicious code", 'wordfence'), __("This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious.", 'wordfence'), array( 'postID' => $postID, 'postTitle' => $row['post_title'], 'permalink' => get_permalink($postID), 'editPostLink' => get_edit_post_link($postID), 'type' => $row['post_type'], 'postDate' => $row['post_date'], 'isMultisite' => $blog['isMultisite'], 'domain' => $blog['domain'], 'path' => $blog['path'], 'blog_id' => $blog['blog_id'] ) ); } $this->forkIfNeeded(); } } private function scan_posts_finish() { global $wpdb; $wfdb = new wfDB(); $this->status(2, 'info', __("Examining URLs found in posts we scanned for dangerous websites", 'wordfence')); $hooverResults = $this->hoover->getBaddies(); $this->status(2, 'info', __("Done examining URLs", 'wordfence')); if ($this->hoover->errorMsg) { wfIssues::statusEndErr(); throw new Exception($this->hoover->errorMsg); } $this->hoover->cleanup(); $haveIssues = wfIssues::STATUS_SECURE; foreach ($hooverResults as $idString => $hresults) { $arr = explode('-', $idString); $blogID = $arr[0]; $postID = $arr[1]; $table = wfDB::blogTable('posts', $blogID); $blog = null; $post = null; foreach ($hresults as $result) { if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') { continue; //A list type that may be new and the plugin has not been upgraded yet. } if ($blog === null) { $blogs = self::getBlogsToScan('posts', $blogID); $blog = array_shift($blogs); } if ($post === null) { $post = $wfdb->querySingleRec("select ID, post_title, post_type, post_date, post_content from {$table} where ID = %d", $postID); $type = $post['post_type'] ? $post['post_type'] : 'comment'; $uctype = ucfirst($type); $postDate = $post['post_date']; $title = $post['post_title']; $contentMD5 = md5($post['post_content']); } if ($result['badList'] == 'goog-malware-shavar') { $shortMsg = sprintf( /* translators: 1. WordPress Post type. 2. URL. */ __('%1$s contains a suspected malware URL: %2$s', 'wordfence'), $uctype, esc_html($title) ); $longMsg = sprintf( /* translators: 1. WordPress Post type. 2. URL. 3. URL. */ __('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($type), esc_html($result['URL']), urlencode($result['URL']) ); } else if ($result['badList'] == 'googpub-phish-shavar') { $shortMsg = sprintf(/* translators: 1. WordPress Post type. 2. URL. */ __('%1$s contains a suspected phishing site URL: %2$s', 'wordfence'), $uctype, esc_html($title)); $longMsg = sprintf( /* translators: 1. WordPress Post type. 2. URL. */ __('This %1$s contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: %2$s', 'wordfence'), esc_html($type), esc_html($result['URL']) ); } else if ($result['badList'] == 'wordfence-dbl') { $shortMsg = sprintf(/* translators: 1. WordPress Post type. 2. URL. */ __('%1$s contains a suspected malware URL: %2$s', 'wordfence'), $uctype, esc_html($title)); $longMsg = sprintf( /* translators: 1. WordPress Post type. 2. URL. */ __('This %1$s contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: %2$s', 'wordfence'), esc_html($type), esc_html($result['URL']) ); } else { //A list type that may be new and the plugin has not been upgraded yet. continue; } $this->status(2, 'info', sprintf(/* translators: Scan result description. */ __('Adding issue: %1$s', 'wordfence'), $shortMsg)); if (is_multisite()) { switch_to_blog($blogID); } $ignoreP = $idString; $ignoreC = $idString . $contentMD5; $added = $this->addIssue('postBadURL', wfIssues::SEVERITY_HIGH, $ignoreP, $ignoreC, $shortMsg, $longMsg, array( 'postID' => $postID, 'badURL' => $result['URL'], 'postTitle' => $title, 'type' => $type, 'uctype' => $uctype, 'permalink' => get_permalink($postID), 'editPostLink' => get_edit_post_link($postID), 'postDate' => $postDate, 'isMultisite' => $blog['isMultisite'], 'domain' => $blog['domain'], 'path' => $blog['path'], 'blog_id' => $blogID )); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } if (is_multisite()) { restore_current_blog(); } } } wfIssues::statusEnd($this->statusIDX['posts'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssues); $this->scanQueue = ''; } private function scan_comments_init() { $this->statusIDX['comments'] = wfIssues::statusStart(__('Scanning comments for URLs on a domain blocklist', 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY); $this->scanData = array(); $this->scanQueue = ''; $this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version); $blogsToScan = self::getBlogsToScan('comments'); $wfdb = new wfDB(); foreach ($blogsToScan as $blog) { $q1 = $wfdb->querySelect("select comment_ID from " . $blog['table'] . " where comment_approved=1"); foreach ($q1 as $idRow) { $this->scanQueue .= pack('LL', $blog['blog_id'], $idRow['comment_ID']); } } } private function scan_comments_main() { global $wpdb; $wfdb = new wfDB(); while (strlen($this->scanQueue) > 0) { $segment = substr($this->scanQueue, 0, 8); $this->scanQueue = substr($this->scanQueue, 8); $elem = unpack('Lblog/Lcomment', $segment); $queueSize = strlen($this->scanQueue) / 8; if ($queueSize > 0 && $queueSize % 1000 == 0) { wordfence::status(2, 'info', sprintf(/* translators: Number of comments left to scan. */ __("Scanning comments with %d left to scan.", 'wordfence'), $queueSize)); } $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS); $blogID = $elem['blog']; $commentID = $elem['comment']; $table = wfDB::blogTable('comments', $blogID); $row = $wfdb->querySingleRec("select comment_ID, comment_date, comment_type, comment_author, comment_author_url, comment_content from {$table} where comment_ID=%d", $commentID); $found = $this->hoover->hoover($blogID . '-' . $row['comment_ID'], $row['comment_author_url'] . ' ' . $row['comment_author'] . ' ' . $row['comment_content'], wordfenceURLHoover::standardExcludedHosts()); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found); $this->forkIfNeeded(); } } private function scan_comments_finish() { $wfdb = new wfDB(); $hooverResults = $this->hoover->getBaddies(); if ($this->hoover->errorMsg) { wfIssues::statusEndErr(); throw new Exception($this->hoover->errorMsg); } $this->hoover->cleanup(); $haveIssues = wfIssues::STATUS_SECURE; foreach ($hooverResults as $idString => $hresults) { $arr = explode('-', $idString); $blogID = $arr[0]; $commentID = $arr[1]; $blog = null; $comment = null; foreach ($hresults as $result) { if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') { continue; //A list type that may be new and the plugin has not been upgraded yet. } if ($blog === null) { $blogs = self::getBlogsToScan('comments', $blogID); $blog = array_shift($blogs); } if ($comment === null) { $comment = $wfdb->querySingleRec("select comment_ID, comment_date, comment_type, comment_author, comment_author_url, comment_content from " . $blog['table'] . " where comment_ID=%d", $commentID); $type = $comment['comment_type'] ? $comment['comment_type'] : 'comment'; $uctype = ucfirst($type); $author = $comment['comment_author']; $date = $comment['comment_date']; $contentMD5 = md5($comment['comment_content'] . $comment['comment_author'] . $comment['comment_author_url']); } if ($result['badList'] == 'goog-malware-shavar') { $shortMsg = sprintf( /* translators: 1. WordPress post type. 2. WordPress author username. */ __('%1$s with author %2$s contains a suspected malware URL.', 'wordfence'), $uctype, esc_html($author)); $longMsg = sprintf( /* translators: 1. WordPress post type. 2. URL. 3. URL. */ __('This %$1s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($type), esc_html($result['URL']), urlencode($result['URL']) ); } else if ($result['badList'] == 'googpub-phish-shavar') { $shortMsg = sprintf(/* translators: WordPress post type. */ __("%s contains a suspected phishing site URL.", 'wordfence'), $uctype); $longMsg = sprintf( /* translators: 1. WordPress post type. 2. URL. */ __('This %1$s contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: %2$s', 'wordfence'), esc_html($type), esc_html($result['URL']) ); } else if ($result['badList'] == 'wordfence-dbl') { $shortMsg = sprintf(/* translators: URL. */ __("%s contains a suspected malware URL.", 'wordfence'), $uctype); $longMsg = sprintf( /* translators: 1. WordPress post type. 2. URL. */ __('This %1$s contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: %2$s', 'wordfence'), esc_html($type), esc_html($result['URL']) ); } if (is_multisite()) { switch_to_blog($blogID); } $ignoreP = $idString; $ignoreC = $idString . '-' . $contentMD5; $added = $this->addIssue('commentBadURL', wfIssues::SEVERITY_LOW, $ignoreP, $ignoreC, $shortMsg, $longMsg, array( 'commentID' => $commentID, 'badURL' => $result['URL'], 'author' => $author, 'type' => $type, 'uctype' => $uctype, 'editCommentLink' => get_edit_comment_link($commentID), 'commentDate' => $date, 'isMultisite' => $blog['isMultisite'], 'domain' => $blog['domain'], 'path' => $blog['path'], 'blog_id' => $blogID )); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } if (is_multisite()) { restore_current_blog(); } } } wfIssues::statusEnd($this->statusIDX['comments'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssues); $this->scanQueue = ''; } public function isBadComment($author, $email, $url, $IP, $content) { $content = $author . ' ' . $email . ' ' . $url . ' ' . $IP . ' ' . $content; $cDesc = ''; if ($author) { $cDesc = sprintf(/* translators: WordPress username. */ __("Author: %s", 'wordfence'), $author) . ' '; } if ($email) { $cDesc .= sprintf(/* translators: Email address. */ __("Email: %s", 'wordfence'), $email) . ' '; } $cDesc .= sprintf(/* translators: IP address. */ __("Source IP: %s", 'wordfence'), $IP) . ' '; $this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Scanning comment with %s", 'wordfence'), $cDesc)); $h = new wordfenceURLHoover($this->apiKey, $this->wp_version); $h->hoover(1, $content, wordfenceURLHoover::standardExcludedHosts()); $hooverResults = $h->getBaddies(); if ($h->errorMsg) { return false; } $h->cleanup(); if (sizeof($hooverResults) > 0 && isset($hooverResults[1])) { $hresults = $hooverResults[1]; foreach ($hresults as $result) { if ($result['badList'] == 'goog-malware-shavar') { $this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a malware URL. Comment has %s", 'wordfence'), $cDesc)); return true; } else if ($result['badList'] == 'googpub-phish-shavar') { $this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a phishing URL. Comment has %s", 'wordfence'), $cDesc)); return true; } else if ($result['badList'] == 'wordfence-dbl') { $this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a malware URL. Comment has %s", 'wordfence'), $cDesc)); } else { //A list type that may be new and the plugin has not been upgraded yet. continue; } } } $this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Scanned comment with %s", 'wordfence'), $cDesc)); return false; } public static function getBlogsToScan($table, $withID = null) { $wfdb = new wfDB(); global $wpdb; $blogsToScan = array(); if (is_multisite()) { if ($withID === null) { $q1 = $wfdb->querySelect("select blog_id, domain, path from {$wpdb->blogs} where deleted=0 order by blog_id asc"); } else { $q1 = $wfdb->querySelect("select blog_id, domain, path from {$wpdb->blogs} where deleted=0 and blog_id = %d", $withID); } foreach ($q1 as $row) { $row['isMultisite'] = true; $row['table'] = wfDB::blogTable($table, $row['blog_id']); $blogsToScan[] = $row; } } else { $blogsToScan[] = array( 'isMultisite' => false, 'table' => wfDB::networkTable($table), 'blog_id' => '1', 'domain' => '', 'path' => '', ); } return $blogsToScan; } private function highestCap($caps) { foreach (array('administrator', 'editor', 'author', 'contributor', 'subscriber') as $cap) { if (empty($caps[$cap]) === false && $caps[$cap]) { return $cap; } } return ''; } private function isEditor($caps) { foreach (array('contributor', 'author', 'editor', 'administrator') as $cap) { if (empty($caps[$cap]) === false && $caps[$cap]) { return true; } } return false; } private function scan_passwds_init() { $this->statusIDX['passwds'] = wfIssues::statusStart(__('Scanning for weak passwords', 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_PASSWORD_STRENGTH); global $wpdb; $counter = 0; $query = "select ID from " . $wpdb->users; $dbh = $wpdb->dbh; $useMySQLi = (is_object($dbh) && $wpdb->use_mysqli && wfConfig::get('allowMySQLi', true) && WORDFENCE_ALLOW_DIRECT_MYSQLI); if ($useMySQLi) { //If direct-access MySQLi is available, we use it to minimize the memory footprint instead of letting it fetch everything into an array first $result = $dbh->query($query); if (!is_object($result)) { return array( 'errorMsg' => __("We were unable to generate the user list for your password check.", 'wordfence'), ); } while ($rec = $result->fetch_assoc()) { $this->userPasswdQueue .= pack('N', $rec['ID']); $counter++; } } else { $res1 = $wpdb->get_results($query, ARRAY_A); foreach ($res1 as $rec) { $this->userPasswdQueue .= pack('N', $rec['ID']); $counter++; } } wordfence::status(2, 'info', sprintf( /* translators: Number of users. */ _n("Starting password strength check on %d user.", "Starting password strength check on %d users.", $counter, 'wordfence'), $counter)); } private function scan_passwds_main() { while (strlen($this->userPasswdQueue) > 3) { $usersLeft = strlen($this->userPasswdQueue) / 4; //4 byte ints if ($usersLeft % 100 == 0) { wordfence::status(2, 'info', sprintf( /* translators: Number of users. */ _n( "Total of %d users left to process in password strength check.", "Total of %d users left to process in password strength check.", $usersLeft, 'wordfence'), $usersLeft )); } $userID = unpack('N', substr($this->userPasswdQueue, 0, 4)); $userID = $userID[1]; $this->userPasswdQueue = substr($this->userPasswdQueue, 4); $state = $this->scanUserPassword($userID); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_USERS); if ($state == wfIssues::STATUS_PROBLEM) { $this->passwdHasIssues = wfIssues::STATUS_PROBLEM; } else if ($this->passwdHasIssues != wfIssues::STATUS_PROBLEM && $state == wfIssues::STATUS_IGNORED) { $this->passwdHasIssues = wfIssues::STATUS_IGNORED; } $this->forkIfNeeded(); } } private function scan_passwds_finish() { wfIssues::statusEnd($this->statusIDX['passwds'], $this->passwdHasIssues); $this->scanController->completeStage(wfScanner::STAGE_PASSWORD_STRENGTH, $this->passwdHasIssues); } public function scanUserPassword($userID) { $suspended = wp_suspend_cache_addition(); wp_suspend_cache_addition(true); require_once(ABSPATH . 'wp-includes/class-phpass.php'); $passwdHasher = new PasswordHash(8, TRUE); $userDat = get_userdata($userID); if ($userDat === false) { wordfence::status(2, 'error', sprintf(/* translators: WordPress user ID. */ __("Could not get username for user with ID %d when checking password strength.", 'wordfence'), $userID)); return false; } //user_login $this->status(4, 'info', sprintf( /* translators: 1. WordPress username. 2. WordPress user ID. */ __('Checking password strength of user \'%1$s\' with ID %2$d', 'wordfence'), $userDat->user_login, $userID ) . (function_exists('memory_get_usage') ? " (Mem:" . sprintf('%.1f', memory_get_usage(true) / (1024 * 1024)) . "M)" : "")); $highCap = $this->highestCap($userDat->wp_capabilities); if ($this->isEditor($userDat->wp_capabilities)) { $shortMsg = sprintf( /* translators: 1. WordPress username. 2. WordPress capability. */ __('User "%1$s" with "%2$s" access has an easy password.', 'wordfence'), esc_html($userDat->user_login), esc_html($highCap) ); $longMsg = sprintf( /* translators: WordPress capability. */ __("A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it.", 'wordfence'), esc_html($highCap) ); $level = wfIssues::SEVERITY_CRITICAL; $words = $this->dictWords; } else { $shortMsg = sprintf( /* translators: WordPress username. */ __("User \"%s\" with 'subscriber' access has a very easy password.", 'wordfence'), esc_html($userDat->user_login)); $longMsg = __("A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password.", 'wordfence'); $level = wfIssues::SEVERITY_HIGH; $words = array($userDat->user_login); } $haveIssues = wfIssues::STATUS_SECURE; for ($i = 0; $i < sizeof($words); $i++) { if ($passwdHasher->CheckPassword($words[$i], $userDat->user_pass)) { $this->status(2, 'info', sprintf(/* translators: Scan result description. */ __('Adding issue %s', 'wordfence'), $shortMsg)); $added = $this->addIssue('easyPassword', $level, $userDat->ID, $userDat->ID . '-' . $userDat->user_pass, $shortMsg, $longMsg, array( 'ID' => $userDat->ID, 'user_login' => $userDat->user_login, 'user_email' => $userDat->user_email, 'first_name' => $userDat->first_name, 'last_name' => $userDat->last_name, 'editUserLink' => wfUtils::editUserLink($userDat->ID) )); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } break; } } $this->status(4, 'info', sprintf(/* translators: WordPress username. */ __("Completed checking password strength of user '%s'", 'wordfence'), $userDat->user_login)); wp_suspend_cache_addition($suspended); return $haveIssues; } /* private function scan_sitePages(){ if(is_multisite()){ return; } //Multisite not supported by this function yet $this->statusIDX['sitePages'] = wordfence::statusStart("Scanning externally for malware"); $resp = wp_remote_get(site_url()); if(is_array($resp) && isset($resp['body']) && strlen($rep['body']) > 0){ $this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version); $this->hoover->hoover(1, $rep['body']); $hooverResults = $this->hoover->getBaddies(); if($this->hoover->errorMsg){ wordfence::statusEndErr(); throw new Exception($this->hoover->errorMsg); } $badURLs = array(); foreach($hooverResults as $idString => $hresults){ foreach($hresults as $result){ if(! in_array($result['URL'], $badURLs)){ $badURLs[] = $result['URL']; } } } if(sizeof($badURLs) > 0){ $this->addIssue('badSitePage', 1, 'badSitePage1', 'badSitePage1', "Your home page contains a malware URL"); } } } */ private function scan_diskSpace() { $this->statusIDX['diskSpace'] = wfIssues::statusStart(__('Scanning to check available disk space', 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SERVER_STATE); wfUtils::errorsOff(); $total = @disk_total_space('.'); $free = @disk_free_space('.'); //Normally false if unreadable but can return 0 on some hosts even when there's space available wfUtils::errorsOn(); if (!$total || !$free) { $this->status(2, 'info', __('Unable to access available disk space information', 'wordfence')); wfIssues::statusEnd($this->statusIDX['diskSpace'], wfIssues::STATUS_SECURE); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, wfIssues::STATUS_SECURE); return; } $this->status(2, 'info', sprintf( /* translators: 1. Number of bytes. 2. Number of bytes. */ __('Total disk space: %1$s -- Free disk space: %2$s', 'wordfence'), wfUtils::formatBytes($total), wfUtils::formatBytes($free) )); $freeMegs = round($free / 1024 / 1024, 2); $this->status(2, 'info', sprintf(/* translators: Number of bytes. */ __('The disk has %s MB available', 'wordfence'), $freeMegs)); if ($freeMegs < 5) { $level = wfIssues::SEVERITY_CRITICAL; } else if ($freeMegs < 20) { $level = wfIssues::SEVERITY_HIGH; } else { wfIssues::statusEnd($this->statusIDX['diskSpace'], wfIssues::STATUS_SECURE); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, wfIssues::STATUS_SECURE); return; } $haveIssues = wfIssues::STATUS_SECURE; $added = $this->addIssue('diskSpace', $level, 'diskSpace', 'diskSpace' . $level, sprintf(/* translators: Number of bytes. */ __('You have %s disk space remaining', 'wordfence'), wfUtils::formatBytes($free)), sprintf(/* translators: Number of bytes. */ __('You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests.', 'wordfence'), wfUtils::formatBytes($free)), array('spaceLeft' => wfUtils::formatBytes($free)) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } wfIssues::statusEnd($this->statusIDX['diskSpace'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues); } private function scan_wafStatus() { $this->statusIDX['wafStatus'] = wfIssues::statusStart(__('Checking Web Application Firewall status', 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SERVER_STATE); $haveIssues = wfIssues::STATUS_SECURE; $added = false; $firewall = new wfFirewall(); if (wfConfig::get('waf_status') !== $firewall->firewallMode() && $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED) { $added = $this->addIssue('wafStatus', wfIssues::SEVERITY_CRITICAL, 'wafStatus', 'wafStatus' . $firewall->firewallMode(), __('Web Application Firewall is disabled', 'wordfence'), sprintf(/* translators: Support URL. */ __('Wordfence\'s Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says "The Wordfence Web Application Firewall cannot run," click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href="%s" target="_blank" rel="noopener noreferrer">More Details</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_WAF_DISABLED)), array('wafStatus' => $firewall->firewallMode(), 'wafStatusDisplay' => $firewall->displayText()) ); } if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } wfIssues::statusEnd($this->statusIDX['wafStatus'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues); } private function scan_oldVersions_init() { $this->statusIDX['oldVersions'] = wfIssues::statusStart(__("Scanning for old themes, plugins and core files", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_VULNERABILITY_SCAN); $this->updateCheck = new wfUpdateCheck(); if ($this->isFullScan()) { $this->updateCheck->checkAllUpdates(false); $this->updateCheck->checkAllVulnerabilities(); } else { $this->updateCheck->checkAllUpdates(); } foreach ($this->updateCheck->getPluginSlugs() as $slug) { $this->pluginRepoStatus[$slug] = false; } //Strip plugins that have a pending update if (count($this->updateCheck->getPluginUpdates()) > 0) { foreach ($this->updateCheck->getPluginUpdates() as $plugin) { if (!empty($plugin['slug'])) { unset($this->pluginRepoStatus[$plugin['slug']]); } } } } private function scan_oldVersions_main() { if (!$this->isFullScan()) { return; } if (!function_exists('plugins_api')) { require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); } foreach ($this->pluginRepoStatus as $slug => $status) { if ($status === false) { $result = plugins_api('plugin_information', array( 'slug' => $slug, 'fields' => array( 'short_description' => false, 'description' => false, 'sections' => false, 'tested' => true, 'requires' => true, 'rating' => false, 'ratings' => false, 'downloaded' => false, 'downloadlink' => false, 'last_updated' => true, 'added' => false, 'tags' => false, 'compatibility' => true, 'homepage' => true, 'versions' => false, 'donate_link' => false, 'reviews' => false, 'banners' => false, 'icons' => false, 'active_installs' => false, 'group' => false, 'contributors' => false, ), )); unset($result->versions); unset($result->screenshots); $this->pluginRepoStatus[$slug] = $result; $this->forkIfNeeded(); } } } private function scan_oldVersions_finish() { $haveIssues = wfIssues::STATUS_SECURE; if (!$this->isFullScan()) { $this->deleteNewIssues(array('wfUpgrade', 'wfPluginUpgrade', 'wfThemeUpgrade')); } // WordPress core updates needed if ($this->updateCheck->needsCoreUpdate()) { $added = $this->addIssue( 'wfUpgrade', wfIssues::SEVERITY_HIGH, 'wfUpgrade' . $this->updateCheck->getCoreUpdateVersion(), 'wfUpgrade' . $this->updateCheck->getCoreUpdateVersion(), __("Your WordPress version is out of date", 'wordfence'), sprintf(/* translators: Software version. */ __("WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress.", 'wordfence'), esc_html($this->updateCheck->getCoreUpdateVersion())), array( 'currentVersion' => $this->wp_version, 'newVersion' => $this->updateCheck->getCoreUpdateVersion(), ) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } $allPlugins = $this->updateCheck->getAllPlugins(); // Plugin updates needed if (count($this->updateCheck->getPluginUpdates()) > 0) { foreach ($this->updateCheck->getPluginUpdates() as $plugin) { $severity = wfIssues::SEVERITY_CRITICAL; if (isset($plugin['vulnerable'])) { if (!$plugin['vulnerable']) { $severity = wfIssues::SEVERITY_MEDIUM; } } $key = 'wfPluginUpgrade' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['newVersion'] . ' ' . $plugin['Version']; $shortMsg = sprintf( /* translators: 1. Plugin name. 2. Software version. 3. Software version. */ __('The Plugin "%1$s" needs an upgrade (%2$s -> %3$s).', 'wordfence'), empty($plugin['Name']) ? $plugin['pluginFile'] : $plugin['Name'], $plugin['Version'], $plugin['newVersion'] ); $added = $this->addIssue('wfPluginUpgrade', $severity, $key, $key, $shortMsg, sprintf( __("You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released.", 'wordfence'), empty($plugin['Name']) ? $plugin['pluginFile'] : $plugin['Name'] ), $plugin); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } if (isset($plugin['slug'])) { unset($allPlugins[$plugin['slug']]); } } } // Theme updates needed if (count($this->updateCheck->getThemeUpdates()) > 0) { foreach ($this->updateCheck->getThemeUpdates() as $theme) { $severity = wfIssues::SEVERITY_CRITICAL; if (isset($theme['vulnerable'])) { if (!$theme['vulnerable']) { $severity = wfIssues::SEVERITY_MEDIUM; } } $key = 'wfThemeUpgrade' . ' ' . $theme['Name'] . ' ' . $theme['version'] . ' ' . $theme['newVersion']; $shortMsg = sprintf( /* translators: 1. Theme name. 2. Software version. 3. Software version. */ __('The Theme "%1$s" needs an upgrade (%2$s -> %3$s).', 'wordfence'), $theme['Name'], $theme['version'], $theme['newVersion'] ); $added = $this->addIssue('wfThemeUpgrade', $severity, $key, $key, $shortMsg, sprintf( /* translators: Theme name. */ __("You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released.", 'wordfence'), esc_html($theme['Name']) ), $theme); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } if ($this->isFullScan()) { //Abandoned plugins foreach ($this->pluginRepoStatus as $slug => $status) { if ($status !== false && !is_wp_error($status) && ((is_object($status) && property_exists($status, 'last_updated')) || (is_array($status) && array_key_exists('last_updated', $status)))) { $statusArray = (array) $status; $lastUpdateTimestamp = strtotime($statusArray['last_updated']); if ($lastUpdateTimestamp > 0 && (time() - $lastUpdateTimestamp) > 63072000 /* ~2 years */) { $statusArray['dateUpdated'] = wfUtils::formatLocalTime(get_option('date_format'), $lastUpdateTimestamp); $severity = wfIssues::SEVERITY_MEDIUM; $statusArray['abandoned'] = true; $statusArray['vulnerable'] = false; $vulnerable = $this->updateCheck->isPluginVulnerable($slug, $statusArray['version']); if ($vulnerable) { $severity = wfIssues::SEVERITY_CRITICAL; $statusArray['vulnerable'] = true; if (is_string($vulnerable)) { $statusArray['vulnerabilityLink'] = $vulnerable; } } if (isset($allPlugins[$slug]) && isset($allPlugins[$slug]['wpURL'])) { $statusArray['wpURL'] = $allPlugins[$slug]['wpURL']; } $key = "wfPluginAbandoned {$slug} {$statusArray['version']}"; if (isset($statusArray['tested'])) { $shortMsg = sprintf( /* translators: 1. Plugin name. 2. Software version. 3. Software version. */ __('The Plugin "%1$s" appears to be abandoned (updated %2$s, tested to WP %3$s).', 'wordfence'), (empty($statusArray['name']) ? $slug : $statusArray['name']), wfUtils::formatLocalTime(get_option('date_format'), $lastUpdateTimestamp), $statusArray['tested'] ); $longMsg = sprintf( /* translators: 1. Plugin name. 2. Software version. */ __('It was last updated %1$s ago and tested up to WordPress %2$s.', 'wordfence'), wfUtils::makeTimeAgo(time() - $lastUpdateTimestamp), esc_html($statusArray['tested']) ); } else { $shortMsg = sprintf( /* translators: 1. Plugin name. 2. Software version. */ __('The Plugin "%1$s" appears to be abandoned (updated %2$s).', 'wordfence'), (empty($statusArray['name']) ? $slug : $statusArray['name']), wfUtils::formatLocalTime(get_option('date_format'), $lastUpdateTimestamp) ); $longMsg = sprintf( /* translators: Time duration. */ __('It was last updated %s ago.', 'wordfence'), wfUtils::makeTimeAgo(time() - $lastUpdateTimestamp) ); } if ($statusArray['vulnerable']) { $longMsg .= ' ' . __('It has unpatched security issues and may have compatibility problems with the current version of WordPress.', 'wordfence'); } else { $longMsg .= ' ' . __('Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin.', 'wordfence'); } $longMsg .= ' ' . sprintf( /* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_ABANDONED)); $added = $this->addIssue('wfPluginAbandoned', $severity, $key, $key, $shortMsg, $longMsg, $statusArray); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } unset($allPlugins[$slug]); } } else if ($status !== false && is_wp_error($status) && isset($status->errors['plugins_api_failed'])) { //The plugin does not exist in the wp.org repo $knownFiles = $this->getKnownFilesLoader()->getKnownFiles(); if (isset($knownFiles['status']) && is_array($knownFiles['status']) && isset($knownFiles['status']['plugins']) && is_array($knownFiles['status']['plugins'])) { $requestedPlugins = $this->getPlugins(); foreach ($requestedPlugins as $key => $data) { if ($data['ShortDir'] == $slug && isset($knownFiles['status']['plugins'][$slug]) && $knownFiles['status']['plugins'][$slug] == 'r') { //It existed in the repo at some point and was removed $pluginFile = wfUtils::getPluginBaseDir() . $key; $pluginData = get_plugin_data($pluginFile); $pluginData['wpRemoved'] = true; $pluginData['vulnerable'] = false; $vulnerable = $this->updateCheck->isPluginVulnerable($slug, $pluginData['Version']); if ($vulnerable) { $pluginData['vulnerable'] = true; if (is_string($vulnerable)) { $pluginData['vulnerabilityLink'] = $vulnerable; } } $key = "wfPluginRemoved {$slug} {$pluginData['Version']}"; $shortMsg = sprintf( /* translators: Plugin name. */ __('The Plugin "%s" has been removed from wordpress.org.', 'wordfence'), (empty($pluginData['Name']) ? $slug : $pluginData['Name'])); if ($pluginData['vulnerable']) { $longMsg = __('It has unpatched security issues and may have compatibility problems with the current version of WordPress.', 'wordfence'); } else { $longMsg = __('Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin.', 'wordfence'); } $longMsg .= ' ' . sprintf( /* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_REMOVED)); $added = $this->addIssue('wfPluginRemoved', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $pluginData); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } unset($allPlugins[$slug]); } } } } } //Other vulnerable plugins //Disabled until we improve the data source to weed out false positives /*if (count($allPlugins) > 0) { foreach ($allPlugins as $plugin) { if (!isset($plugin['vulnerable']) || !$plugin['vulnerable']) { continue; } $key = 'wfPluginVulnerable' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['Version']; $shortMsg = "The Plugin \"" . $plugin['Name'] . "\" has an unpatched security vulnerability."; $longMsg = 'To protect your site from this vulnerability, the safest option is to deactivate and completely remove ' . esc_html($plugin['Name']) . ' until the developer releases a security fix. <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_has_an_unpatched_security_vulnerability" target="_blank" rel="noopener noreferrer">Get more information.</a>'; $added = $this->addIssue('wfPluginVulnerable', 1, $key, $key, $shortMsg, $longMsg, $plugin); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } if (isset($plugin['slug'])) { unset($allPlugins[$plugin['slug']]); } } }*/ } $this->updateCheck = false; $this->pluginRepoStatus = array(); wfIssues::statusEnd($this->statusIDX['oldVersions'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_VULNERABILITY_SCAN, $haveIssues); } public function scan_suspiciousAdminUsers() { $this->statusIDX['suspiciousAdminUsers'] = wfIssues::statusStart(__("Scanning for admin users not created through WordPress", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_OPTIONS_AUDIT); $haveIssues = wfIssues::STATUS_SECURE; $adminUsers = new wfAdminUserMonitor(); if ($adminUsers->isEnabled()) { try { $response = $this->api->call('suspicious_admin_usernames'); if (is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']) && !empty($response['patterns'])) { wfConfig::set_ser('suspiciousAdminUsernames', $response['patterns']); } } catch (Exception $e) { // Let the rest of the scan continue } $suspiciousAdmins = $adminUsers->checkNewAdmins(); if (is_array($suspiciousAdmins)) { foreach ($suspiciousAdmins as $userID) { $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_USERS); $user = new WP_User($userID); $key = 'suspiciousAdminUsers' . $userID; $added = $this->addIssue('suspiciousAdminUsers', wfIssues::SEVERITY_HIGH, $key, $key, sprintf(/* translators: WordPress username. */ __("An admin user with the username %s was created outside of WordPress.", 'wordfence'), esc_html($user->user_login)), sprintf(/* translators: WordPress username. */ __("An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it.", 'wordfence'), esc_html($user->user_login)), array( 'userID' => $userID, )); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } $admins = $adminUsers->getCurrentAdmins(); /** * @var WP_User $adminUser */ foreach ($admins as $userID => $adminUser) { $added = false; $key = 'suspiciousAdminUsers' . $userID; // Check against user name list here. $suspiciousAdminUsernames = wfConfig::get_ser('suspiciousAdminUsernames'); if (is_array($suspiciousAdminUsernames)) { foreach ($suspiciousAdminUsernames as $usernamePattern) { if (preg_match($usernamePattern, $adminUser->user_login)) { $added = $this->addIssue('suspiciousAdminUsers', wfIssues::SEVERITY_HIGH, $key, $key, sprintf(/* translators: WordPress username. */ __("An admin user with a suspicious username %s was found.", 'wordfence'), esc_html($adminUser->user_login)), sprintf(/* translators: WordPress username. */ __("An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it.", 'wordfence'), esc_html($adminUser->user_login)), array( 'userID' => $userID, )); } } } if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } } wfIssues::statusEnd($this->statusIDX['suspiciousAdminUsers'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_OPTIONS_AUDIT, $haveIssues); } public function scan_suspiciousOptions() { $this->statusIDX['suspiciousOptions'] = wfIssues::statusStart(__("Scanning for suspicious site options", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_OPTIONS_AUDIT); $haveIssues = wfIssues::STATUS_SECURE; $blogsToScan = self::getBlogsToScan('options'); $wfdb = new wfDB(); $this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version); foreach ($blogsToScan as $blog) { $excludedHosts = array(); $homeURL = get_home_url($blog['blog_id']); $host = parse_url($homeURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } $siteURL = get_site_url($blog['blog_id']); $host = parse_url($siteURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } $excludedHosts = array_keys($excludedHosts); //Newspaper Theme if (defined('TD_THEME_OPTIONS_NAME')) { $q = $wfdb->querySelect("SELECT option_name, option_value FROM " . $blog['table'] . " WHERE option_name REGEXP '^td_[0-9]+$' OR option_name = '%s'", TD_THEME_OPTIONS_NAME); } else { $q = $wfdb->querySelect("SELECT option_name, option_value FROM " . $blog['table'] . " WHERE option_name REGEXP '^td_[0-9]+$'"); } foreach ($q as $row) { $found = $this->hoover->hoover($blog['blog_id'] . '-' . $row['option_name'], $row['option_value'], $excludedHosts); $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found); } } $this->status(2, 'info', __("Examining URLs found in the options we scanned for dangerous websites", 'wordfence')); $hooverResults = $this->hoover->getBaddies(); $this->status(2, 'info', __("Done examining URLs", 'wordfence')); if ($this->hoover->errorMsg) { wfIssues::statusEndErr(); throw new Exception($this->hoover->errorMsg); } $this->hoover->cleanup(); foreach ($hooverResults as $idString => $hresults) { $arr = explode('-', $idString); $blogID = $arr[0]; $optionKey = $arr[1]; $blog = null; foreach ($hresults as $result) { if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') { continue; //A list type that may be new and the plugin has not been upgraded yet. } if ($blog === null) { $blogs = self::getBlogsToScan('options', $blogID); $blog = array_shift($blogs); } if ($result['badList'] == 'goog-malware-shavar') { $shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected malware URL: %s", 'wordfence'), esc_html($optionKey)); $longMsg = sprintf(/* translators: URL. */ __("This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL'])); } else if ($result['badList'] == 'googpub-phish-shavar') { $shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected phishing site URL: %s", 'wordfence'), esc_html($optionKey)); $longMsg = sprintf(/* translators: URL. */ __("This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL'])); } else if ($result['badList'] == 'wordfence-dbl') { $shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected malware URL: %s", 'wordfence'), esc_html($optionKey)); $longMsg = sprintf(/* translators: URL. */ __("This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL'])); } else { //A list type that may be new and the plugin has not been upgraded yet. continue; } $longMsg .= ' - ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_OPTION_MALWARE_URL)); $this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg)); if (is_multisite()) { switch_to_blog($blogID); } $ignoreP = $idString; $ignoreC = $idString . md5(serialize(get_option($optionKey, ''))); $added = $this->addIssue('optionBadURL', wfIssues::SEVERITY_HIGH, $ignoreP, $ignoreC, $shortMsg, $longMsg, array( 'optionKey' => $optionKey, 'badURL' => $result['URL'], 'isMultisite' => $blog['isMultisite'], 'domain' => $blog['domain'], 'path' => $blog['path'], 'blog_id' => $blogID )); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } if (is_multisite()) { restore_current_blog(); } } } wfIssues::statusEnd($this->statusIDX['suspiciousOptions'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_OPTIONS_AUDIT, $haveIssues); } public function scan_geoipSupport() { $this->statusIDX['geoipSupport'] = wfIssues::statusStart(__("Checking for future GeoIP support", 'wordfence')); $this->scanController->startStage(wfScanner::STAGE_SERVER_STATE); $haveIssues = wfIssues::STATUS_SECURE; if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()) { $shortMsg = __('PHP Update Needed for Country Blocking', 'wordfence'); $longMsg = sprintf(/* translators: Software version. */ __('The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion()); $longMsg .= ' ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE)); $this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg)); $ignoreP = 'geoIPPHPDiscontinuing'; $ignoreC = $ignoreP; $added = $this->addIssue('geoipSupport', wfIssues::SEVERITY_MEDIUM, $ignoreP, $ignoreC, $shortMsg, $longMsg, array()); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; } else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; } } wfIssues::statusEnd($this->statusIDX['geoipSupport'], $haveIssues); $this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues); } public function status($level, $type, $msg) { wordfence::status($level, $type, $msg); } public function addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) { wfIssues::updateScanStillRunning(); return $this->i->addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed); } public function addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData) { wfIssues::updateScanStillRunning(); return $this->i->addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData); } public function getPendingIssueCount() { return $this->i->getPendingIssueCount(); } public function getPendingIssues($offset = 0, $limit = 100) { return $this->i->getPendingIssues($offset, $limit); } public static function requestKill() { wfConfig::set('wfKillRequested', time(), wfConfig::DONT_AUTOLOAD); } public static function checkForKill() { $kill = wfConfig::get('wfKillRequested', 0); if ($kill && time() - $kill < 600) { //Kill lasts for 10 minutes wordfence::status(10, 'info', "SUM_KILLED:" . __('Previous scan was stopped successfully.', 'wordfence')); throw new Exception(__("Scan was stopped on administrator request.", 'wordfence'), wfScanEngine::SCAN_MANUALLY_KILLED); } } public static function startScan($isFork = false, $scanMode = false) { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } if ($scanMode === false) { $scanMode = wfScanner::shared()->scanType(); } if (!$isFork) { //beginning of scan wfConfig::inc('totalScansRun'); wfConfig::set('wfKillRequested', 0, wfConfig::DONT_AUTOLOAD); wordfence::status(4, 'info', __("Entering start scan routine", 'wordfence')); if (wfScanner::shared()->isRunning()) { wfUtils::getScanFileError(); return __("A scan is already running. Use the stop scan button if you would like to terminate the current scan.", 'wordfence'); } wfConfig::set('currentCronKey', ''); //Ensure the cron key is cleared } $timeout = self::getMaxExecutionTime() - 2; //2 seconds shorter than max execution time which ensures that only 2 HTTP processes are ever occupied $testURL = admin_url('admin-ajax.php?action=wordfence_testAjax'); if (!wfConfig::get('startScansRemotely', false)) { try { $testResult = wp_remote_post($testURL, array( 'timeout' => $timeout, 'blocking' => true, 'sslverify' => false, 'headers' => array() )); } catch (Exception $e) { //Fall through to the remote start test below } wordfence::status(4, 'info', sprintf(/* translators: Support URL. */ __("Test result of scan start URL fetch: %s", 'wordfence'), var_export($testResult, true))); } $cronKey = wfUtils::bigRandomHex(); wfConfig::set('currentCronKey', time() . ',' . $cronKey); if ((!wfConfig::get('startScansRemotely', false)) && (!is_wp_error($testResult)) && (is_array($testResult) || $testResult instanceof ArrayAccess) && strstr($testResult['body'], 'WFSCANTESTOK') !== false) { //ajax requests can be sent by the server to itself $cronURL = self::_localStartURL($isFork, $scanMode, $cronKey); $headers = array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/); wordfence::status(4, 'info', sprintf(/* translators: WordPress admin panel URL. */ __("Starting cron with normal ajax at URL %s", 'wordfence'), $cronURL)); try { wfConfig::set('scanStartAttempt', time()); $response = wp_remote_get($cronURL, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => false, 'headers' => $headers )); if (wfCentral::isConnected()) { wfCentral::updateScanStatus(); } } catch (Exception $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); return false; } if (is_wp_error($response)) { $error_message = $response->get_error_message(); if ($error_message) { $lastScanCompletedMessage = sprintf(/* translators: Error message. */ __("There was an error starting the scan: %s.", 'wordfence'), $error_message); } else { $lastScanCompletedMessage = __("There was an unknown error starting the scan.", 'wordfence'); } wfConfig::set('lastScanCompleted', $lastScanCompletedMessage); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); } wordfence::status(4, 'info', __("Scan process ended after forking.", 'wordfence')); } else { $cronURL = self::_remoteStartURL($isFork, $scanMode, $cronKey); $headers = array(); wordfence::status(4, 'info', sprintf(/* translators: WordPress admin panel URL. */ __("Starting cron via proxy at URL %s", 'wordfence'), $cronURL)); try { wfConfig::set('scanStartAttempt', time()); $response = wp_remote_get($cronURL, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => false, 'headers' => $headers )); if (wfCentral::isConnected()) { wfCentral::updateScanStatus(); } } catch (Exception $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); return false; } if (is_wp_error($response)) { $error_message = $response->get_error_message(); if ($error_message) { $lastScanCompletedMessage = sprintf(/* translators: WordPress admin panel URL. */ __("There was an error starting the scan: %s.", 'wordfence'), $error_message); } else { $lastScanCompletedMessage = __("There was an unknown error starting the scan.", 'wordfence'); } wfConfig::set('lastScanCompleted', $lastScanCompletedMessage); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); } wordfence::status(4, 'info', __("Scan process ended after forking.", 'wordfence')); } return false; //No error } public static function verifyStartSignature($signature, $isFork, $scanMode, $cronKey, $remote) { $url = self::_baseStartURL($isFork, $scanMode, $cronKey); if ($remote) { $url = self::_remoteStartURL($isFork, $scanMode, $cronKey); $url = remove_query_arg('signature', $url); } $test = self::_signStartURL($url); return hash_equals($signature, $test); } protected static function _baseStartURL($isFork, $scanMode, $cronKey) { $url = admin_url('admin-ajax.php'); $url .= '?action=wordfence_doScan&isFork=' . ($isFork ? '1' : '0') . '&scanMode=' . urlencode($scanMode) . '&cronKey=' . urlencode($cronKey); return $url; } protected static function _localStartURL($isFork, $scanMode, $cronKey) { $url = self::_baseStartURL($isFork, $scanMode, $cronKey); return add_query_arg('signature', self::_signStartURL($url), $url); } protected static function _remoteStartURL($isFork, $scanMode, $cronKey) { $url = self::_baseStartURL($isFork, $scanMode, $cronKey); $url = preg_replace('/^https?:\/\//i', (wfAPI::SSLEnabled() ? WORDFENCE_API_URL_SEC : WORDFENCE_API_URL_NONSEC) . 'scanp/', $url); $url = add_query_arg('k', wfConfig::get('apiKey'), $url); $url = add_query_arg('ssl', wfUtils::isFullSSL() ? '1' : '0', $url); return add_query_arg('signature', self::_signStartURL($url), $url); } protected static function _signStartURL($url) { $payload = preg_replace('~^https?://[^/]+~i', '', $url); return wfCrypt::local_sign($payload); } public function processResponse($result) { return false; } public static function getMaxExecutionTime($staySilent = false) { $config = wfConfig::get('maxExecutionTime'); if (!$staySilent) { wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("Got value from wf config maxExecutionTime: %s", 'wordfence'), $config)); } if (is_numeric($config) && $config >= WORDFENCE_SCAN_MIN_EXECUTION_TIME) { if (!$staySilent) { wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("getMaxExecutionTime() returning config value: %s", 'wordfence'), $config)); } return $config; } $ini = @ini_get('max_execution_time'); if (!$staySilent) { wordfence::status(4, 'info', sprintf(/* translators: PHP ini value. */ __("Got max_execution_time value from ini: %s", 'wordfence'), $ini)); } if (is_numeric($ini) && $ini >= WORDFENCE_SCAN_MIN_EXECUTION_TIME) { if ($ini > WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME) { if (!$staySilent) { wordfence::status(4, 'info', sprintf( /* translators: 1. PHP ini setting. 2. Time in seconds. */ __('ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing', 'wordfence'), $ini, WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME )); } $ini = WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME; } $ini = floor($ini / 2); if (!$staySilent) { wordfence::status(4, 'info', sprintf(/* translators: PHP ini setting. */ __("getMaxExecutionTime() returning half ini value: %d", 'wordfence'), $ini)); } return $ini; } if (!$staySilent) { wordfence::status(4, 'info', __("getMaxExecutionTime() returning default of: 15", 'wordfence')); } return 15; } /** * @return wfScanKnownFilesLoader */ public function getKnownFilesLoader() { if ($this->knownFilesLoader === null) { $this->knownFilesLoader = new wfScanKnownFilesLoader($this->api, $this->getPlugins(), $this->getThemes()); } return $this->knownFilesLoader; } /** * @return array */ public function getPlugins() { static $plugins = null; if ($plugins !== null) { return $plugins; } if (!function_exists('get_plugins')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $pluginData = get_plugins(); $plugins = array(); foreach ($pluginData as $key => $data) { if (preg_match('/^([^\/]+)\//', $key, $matches)) { $pluginDir = $matches[1]; $pluginFullDir = "wp-content/plugins/" . $pluginDir; $plugins[$key] = array( 'Name' => $data['Name'], 'Version' => $data['Version'], 'ShortDir' => $pluginDir, 'FullDir' => $pluginFullDir ); } if (!$this->pluginsCounted) { $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS); } } $this->pluginsCounted = true; return $plugins; } /** * @return array */ public function getThemes() { static $themes = null; if ($themes !== null) { return $themes; } if (!function_exists('wp_get_themes')) { require_once(ABSPATH . '/wp-includes/theme.php'); } $themeData = wp_get_themes(); $themes = array(); foreach ($themeData as $themeName => $themeVal) { if (preg_match('/\/([^\/]+)$/', $themeVal['Stylesheet Dir'], $matches)) { $shortDir = $matches[1]; //e.g. evo4cms $fullDir = substr($themeVal['Stylesheet Dir'], strlen(ABSPATH)); //e.g. wp-content/themes/evo4cms $themes[$themeName] = array( 'Name' => $themeVal['Name'], 'Version' => $themeVal['Version'], 'ShortDir' => $shortDir, 'FullDir' => $fullDir ); } if (!$this->themesCounted) { $this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES); } } $this->themesCounted = true; return $themes; } public function recordMetric($type, $key, $value, $singular = true) { if (!isset($this->metrics[$type])) { $this->metrics[$type] = array(); } if (!isset($this->metrics[$type][$key])) { $this->metrics[$type][$key] = array(); } if ($singular) { $this->metrics[$type][$key] = $value; } else { $this->metrics[$type][$key][] = $value; } } } class wfScanKnownFilesLoader { /** * @var array */ private $plugins; /** * @var array */ private $themes; /** * @var array */ private $knownFiles = array(); /** * @var wfAPI */ private $api; /** * @param wfAPI $api * @param array $plugins * @param array $themes */ public function __construct($api, $plugins = null, $themes = null) { $this->api = $api; $this->plugins = $plugins; $this->themes = $themes; } /** * @return bool */ public function isLoaded() { return is_array($this->knownFiles) && count($this->knownFiles) > 0; } /** * @param $file * @return bool * @throws wfScanKnownFilesException */ public function isKnownFile($file) { if (!$this->isLoaded()) { $this->fetchKnownFiles(); } return isset($this->knownFiles['core'][$file]) || isset($this->knownFiles['plugins'][$file]) || isset($this->knownFiles['themes'][$file]); } /** * @param $file * @return bool * @throws wfScanKnownFilesException */ public function isKnownCoreFile($file) { if (!$this->isLoaded()) { $this->fetchKnownFiles(); } return isset($this->knownFiles['core'][$file]); } /** * @param $file * @return bool * @throws wfScanKnownFilesException */ public function isKnownPluginFile($file) { if (!$this->isLoaded()) { $this->fetchKnownFiles(); } return isset($this->knownFiles['plugins'][$file]); } /** * @param $file * @return bool * @throws wfScanKnownFilesException */ public function isKnownThemeFile($file) { if (!$this->isLoaded()) { $this->fetchKnownFiles(); } return isset($this->knownFiles['themes'][$file]); } /** * @throws wfScanKnownFilesException */ public function fetchKnownFiles() { try { $dataArr = $this->api->binCall('get_known_files', json_encode(array( 'plugins' => $this->plugins, 'themes' => $this->themes ))); if ($dataArr['code'] != 200) { throw new wfScanKnownFilesException(sprintf(/* translators: 1. HTTP status code. */ __("Got error response from Wordfence servers: %s", 'wordfence'), $dataArr['code']), $dataArr['code']); } $this->knownFiles = @json_decode($dataArr['data'], true); if (!is_array($this->knownFiles)) { throw new wfScanKnownFilesException(__("Invalid response from Wordfence servers.", 'wordfence')); } } catch (Exception $e) { throw new wfScanKnownFilesException($e->getMessage(), $e->getCode(), $e); } } public function getKnownPluginData($file) { if ($this->isKnownPluginFile($file)) { return $this->knownFiles['plugins'][$file]; } return null; } public function getKnownThemeData($file) { if ($this->isKnownThemeFile($file)) { return $this->knownFiles['themes'][$file]; } return null; } /** * @return array */ public function getPlugins() { return $this->plugins; } /** * @param array $plugins */ public function setPlugins($plugins) { $this->plugins = $plugins; } /** * @return array */ public function getThemes() { return $this->themes; } /** * @param array $themes */ public function setThemes($themes) { $this->themes = $themes; } /** * @return array * @throws wfScanKnownFilesException */ public function getKnownFiles() { if (!$this->isLoaded()) { $this->fetchKnownFiles(); } return $this->knownFiles; } /** * @param array $knownFiles */ public function setKnownFiles($knownFiles) { $this->knownFiles = $knownFiles; } /** * @return wfAPI */ public function getAPI() { return $this->api; } /** * @param wfAPI $api */ public function setAPI($api) { $this->api = $api; } } class wfScanKnownFilesException extends Exception { } class wfCommonBackupFileTest { const MATCH_EXACT = 'exact'; const MATCH_REGEX = 'regex'; /** * @param string $path * @param string $mode * @param bool|string $matcher If $mode is MATCH_REGEX, this will be the regex pattern. * @return wfCommonBackupFileTest */ public static function createFromRootPath($path, $mode = self::MATCH_EXACT, $matcher = false) { return new self(site_url($path), ABSPATH . $path, array(), $mode, $matcher); } /** * Identical to createFromRootPath except it returns an entry for each file in the index that matches $name * * @param $name * @param string $mode * @param bool|string $matcher * @return array */ public static function createAllForFile($file, $mode = self::MATCH_EXACT, $matcher = false) { global $wpdb; $escapedFile = esc_sql(preg_quote($file)); $table_wfKnownFileList = wfDB::networkTable('wfKnownFileList'); $files = $wpdb->get_col("SELECT path FROM {$table_wfKnownFileList} WHERE path REGEXP '(^|/){$escapedFile}$'"); $tests = array(); foreach ($files as $f) { $tests[] = new self(site_url($f), ABSPATH . $f, array(), $mode, $matcher); } return $tests; } private $url; private $path; /** * @var array */ private $requestArgs; private $mode; private $matcher; private $response; /** * @param string $url * @param string $path * @param array $requestArgs */ public function __construct($url, $path, $requestArgs = array(), $mode = self::MATCH_EXACT, $matcher = false) { $this->url = $url; $this->path = $path; $this->mode = $mode; $this->matcher = $matcher; $this->requestArgs = $requestArgs; } /** * @return bool */ public function fileExists() { return file_exists($this->path); } /** * @return bool */ public function isPubliclyAccessible() { $this->response = wp_remote_get($this->url, $this->requestArgs); if ((int) floor(((int) wp_remote_retrieve_response_code($this->response) / 100)) === 2) { $handle = @fopen($this->path, 'r'); if ($handle) { $contents = fread($handle, 700); fclose($handle); $remoteContents = substr(wp_remote_retrieve_body($this->response), 0, 700); if ($this->mode == self::MATCH_REGEX) { return preg_match($this->matcher, $remoteContents); } //else MATCH_EXACT return $contents === $remoteContents; } } return false; } /** * @return string */ public function getUrl() { return $this->url; } /** * @param string $url */ public function setUrl($url) { $this->url = $url; } /** * @return string */ public function getPath() { return $this->path; } /** * @param string $path */ public function setPath($path) { $this->path = $path; } /** * @return array */ public function getRequestArgs() { return $this->requestArgs; } /** * @param array $requestArgs */ public function setRequestArgs($requestArgs) { $this->requestArgs = $requestArgs; } /** * @return mixed */ public function getResponse() { return $this->response; } } class wfPubliclyAccessibleFileTest extends wfCommonBackupFileTest { } class wfScanEngineDurationLimitException extends Exception { } class wfScanEngineCoreVersionChangeException extends Exception { } class wfScanEngineTestCallbackFailedException extends Exception { } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfBulkCountries.php�����������������������������������������������������������������������������0000644�����������������00000023377�15233113245�0011164 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } $wfBulkCountries = array( "AD" => __("Andorra", 'wordfence'), "AE" => __("United Arab Emirates", 'wordfence'), "AF" => __("Afghanistan", 'wordfence'), "AG" => __("Antigua and Barbuda", 'wordfence'), "AI" => __("Anguilla", 'wordfence'), "AL" => __("Albania", 'wordfence'), "AM" => __("Armenia", 'wordfence'), "AO" => __("Angola", 'wordfence'), "AQ" => __("Antarctica", 'wordfence'), "AR" => __("Argentina", 'wordfence'), "AS" => __("American Samoa", 'wordfence'), "AT" => __("Austria", 'wordfence'), "AU" => __("Australia", 'wordfence'), "AW" => __("Aruba", 'wordfence'), "AX" => __("Aland Islands", 'wordfence'), "AZ" => __("Azerbaijan", 'wordfence'), "BA" => __("Bosnia and Herzegovina", 'wordfence'), "BB" => __("Barbados", 'wordfence'), "BD" => __("Bangladesh", 'wordfence'), "BE" => __("Belgium", 'wordfence'), "BF" => __("Burkina Faso", 'wordfence'), "BG" => __("Bulgaria", 'wordfence'), "BH" => __("Bahrain", 'wordfence'), "BI" => __("Burundi", 'wordfence'), "BJ" => __("Benin", 'wordfence'), "BL" => __("Saint Bartelemey", 'wordfence'), "BM" => __("Bermuda", 'wordfence'), "BN" => __("Brunei Darussalam", 'wordfence'), "BO" => __("Bolivia", 'wordfence'), "BQ" => __("Bonaire, Saint Eustatius and Saba", 'wordfence'), "BR" => __("Brazil", 'wordfence'), "BS" => __("Bahamas", 'wordfence'), "BT" => __("Bhutan", 'wordfence'), "BV" => __("Bouvet Island", 'wordfence'), "BW" => __("Botswana", 'wordfence'), "BY" => __("Belarus", 'wordfence'), "BZ" => __("Belize", 'wordfence'), "CA" => __("Canada", 'wordfence'), "CC" => __("Cocos (Keeling) Islands", 'wordfence'), "CD" => __("Congo, The Democratic Republic of the", 'wordfence'), "CF" => __("Central African Republic", 'wordfence'), "CG" => __("Congo", 'wordfence'), "CH" => __("Switzerland", 'wordfence'), "CI" => __("Cote dIvoire", 'wordfence'), "CK" => __("Cook Islands", 'wordfence'), "CL" => __("Chile", 'wordfence'), "CM" => __("Cameroon", 'wordfence'), "CN" => __("China", 'wordfence'), "CO" => __("Colombia", 'wordfence'), "CR" => __("Costa Rica", 'wordfence'), "CU" => __("Cuba", 'wordfence'), "CV" => __("Cape Verde", 'wordfence'), "CW" => __("Curacao", 'wordfence'), "CX" => __("Christmas Island", 'wordfence'), "CY" => __("Cyprus", 'wordfence'), "CZ" => __("Czech Republic", 'wordfence'), "DE" => __("Germany", 'wordfence'), "DJ" => __("Djibouti", 'wordfence'), "DK" => __("Denmark", 'wordfence'), "DM" => __("Dominica", 'wordfence'), "DO" => __("Dominican Republic", 'wordfence'), "DZ" => __("Algeria", 'wordfence'), "EC" => __("Ecuador", 'wordfence'), "EE" => __("Estonia", 'wordfence'), "EG" => __("Egypt", 'wordfence'), "EH" => __("Western Sahara", 'wordfence'), "ER" => __("Eritrea", 'wordfence'), "ES" => __("Spain", 'wordfence'), "ET" => __("Ethiopia", 'wordfence'), "EU" => __("Europe", 'wordfence'), "FI" => __("Finland", 'wordfence'), "FJ" => __("Fiji", 'wordfence'), "FK" => __("Falkland Islands (Malvinas)", 'wordfence'), "FM" => __("Micronesia, Federated States of", 'wordfence'), "FO" => __("Faroe Islands", 'wordfence'), "FR" => __("France", 'wordfence'), "GA" => __("Gabon", 'wordfence'), "GB" => __("United Kingdom", 'wordfence'), "GD" => __("Grenada", 'wordfence'), "GE" => __("Georgia", 'wordfence'), "GF" => __("French Guiana", 'wordfence'), "GG" => __("Guernsey", 'wordfence'), "GH" => __("Ghana", 'wordfence'), "GI" => __("Gibraltar", 'wordfence'), "GL" => __("Greenland", 'wordfence'), "GM" => __("Gambia", 'wordfence'), "GN" => __("Guinea", 'wordfence'), "GP" => __("Guadeloupe", 'wordfence'), "GQ" => __("Equatorial Guinea", 'wordfence'), "GR" => __("Greece", 'wordfence'), "GS" => __("South Georgia and the South Sandwich Islands", 'wordfence'), "GT" => __("Guatemala", 'wordfence'), "GU" => __("Guam", 'wordfence'), "GW" => __("Guinea-Bissau", 'wordfence'), "GY" => __("Guyana", 'wordfence'), "HK" => __("Hong Kong", 'wordfence'), "HM" => __("Heard Island and McDonald Islands", 'wordfence'), "HN" => __("Honduras", 'wordfence'), "HR" => __("Croatia", 'wordfence'), "HT" => __("Haiti", 'wordfence'), "HU" => __("Hungary", 'wordfence'), "ID" => __("Indonesia", 'wordfence'), "IE" => __("Ireland", 'wordfence'), "IL" => __("Israel", 'wordfence'), "IM" => __("Isle of Man", 'wordfence'), "IN" => __("India", 'wordfence'), "IO" => __("British Indian Ocean Territory", 'wordfence'), "IQ" => __("Iraq", 'wordfence'), "IR" => __("Iran, Islamic Republic of", 'wordfence'), "IS" => __("Iceland", 'wordfence'), "IT" => __("Italy", 'wordfence'), "JE" => __("Jersey", 'wordfence'), "JM" => __("Jamaica", 'wordfence'), "JO" => __("Jordan", 'wordfence'), "JP" => __("Japan", 'wordfence'), "KE" => __("Kenya", 'wordfence'), "KG" => __("Kyrgyzstan", 'wordfence'), "KH" => __("Cambodia", 'wordfence'), "KI" => __("Kiribati", 'wordfence'), "KM" => __("Comoros", 'wordfence'), "KN" => __("Saint Kitts and Nevis", 'wordfence'), "KP" => __("North Korea", 'wordfence'), "KR" => __("South Korea", 'wordfence'), "KW" => __("Kuwait", 'wordfence'), "KY" => __("Cayman Islands", 'wordfence'), "KZ" => __("Kazakhstan", 'wordfence'), "LA" => __("Lao Peoples Democratic Republic", 'wordfence'), "LB" => __("Lebanon", 'wordfence'), "LC" => __("Saint Lucia", 'wordfence'), "LI" => __("Liechtenstein", 'wordfence'), "LK" => __("Sri Lanka", 'wordfence'), "LR" => __("Liberia", 'wordfence'), "LS" => __("Lesotho", 'wordfence'), "LT" => __("Lithuania", 'wordfence'), "LU" => __("Luxembourg", 'wordfence'), "LV" => __("Latvia", 'wordfence'), "LY" => __("Libyan Arab Jamahiriya", 'wordfence'), "MA" => __("Morocco", 'wordfence'), "MC" => __("Monaco", 'wordfence'), "MD" => __("Moldova, Republic of", 'wordfence'), "ME" => __("Montenegro", 'wordfence'), "MF" => __("Saint Martin", 'wordfence'), "MG" => __("Madagascar", 'wordfence'), "MH" => __("Marshall Islands", 'wordfence'), "MK" => __("Macedonia", 'wordfence'), "ML" => __("Mali", 'wordfence'), "MM" => __("Myanmar", 'wordfence'), "MN" => __("Mongolia", 'wordfence'), "MO" => __("Macao", 'wordfence'), "MP" => __("Northern Mariana Islands", 'wordfence'), "MQ" => __("Martinique", 'wordfence'), "MR" => __("Mauritania", 'wordfence'), "MS" => __("Montserrat", 'wordfence'), "MT" => __("Malta", 'wordfence'), "MU" => __("Mauritius", 'wordfence'), "MV" => __("Maldives", 'wordfence'), "MW" => __("Malawi", 'wordfence'), "MX" => __("Mexico", 'wordfence'), "MY" => __("Malaysia", 'wordfence'), "MZ" => __("Mozambique", 'wordfence'), "NA" => __("Namibia", 'wordfence'), "NC" => __("New Caledonia", 'wordfence'), "NE" => __("Niger", 'wordfence'), "NF" => __("Norfolk Island", 'wordfence'), "NG" => __("Nigeria", 'wordfence'), "NI" => __("Nicaragua", 'wordfence'), "NL" => __("Netherlands", 'wordfence'), "NO" => __("Norway", 'wordfence'), "NP" => __("Nepal", 'wordfence'), "NR" => __("Nauru", 'wordfence'), "NU" => __("Niue", 'wordfence'), "NZ" => __("New Zealand", 'wordfence'), "OM" => __("Oman", 'wordfence'), "PA" => __("Panama", 'wordfence'), "PE" => __("Peru", 'wordfence'), "PF" => __("French Polynesia", 'wordfence'), "PG" => __("Papua New Guinea", 'wordfence'), "PH" => __("Philippines", 'wordfence'), "PK" => __("Pakistan", 'wordfence'), "PL" => __("Poland", 'wordfence'), "PM" => __("Saint Pierre and Miquelon", 'wordfence'), "PN" => __("Pitcairn", 'wordfence'), "PR" => __("Puerto Rico", 'wordfence'), "PS" => __("Palestinian Territory", 'wordfence'), "PT" => __("Portugal", 'wordfence'), "PW" => __("Palau", 'wordfence'), "PY" => __("Paraguay", 'wordfence'), "QA" => __("Qatar", 'wordfence'), "RE" => __("Reunion", 'wordfence'), "RO" => __("Romania", 'wordfence'), "RS" => __("Serbia", 'wordfence'), "RU" => __("Russian Federation", 'wordfence'), "RW" => __("Rwanda", 'wordfence'), "SA" => __("Saudi Arabia", 'wordfence'), "SB" => __("Solomon Islands", 'wordfence'), "SC" => __("Seychelles", 'wordfence'), "SD" => __("Sudan", 'wordfence'), "SE" => __("Sweden", 'wordfence'), "SG" => __("Singapore", 'wordfence'), "SH" => __("Saint Helena", 'wordfence'), "SI" => __("Slovenia", 'wordfence'), "SJ" => __("Svalbard and Jan Mayen", 'wordfence'), "SK" => __("Slovakia", 'wordfence'), "SL" => __("Sierra Leone", 'wordfence'), "SM" => __("San Marino", 'wordfence'), "SN" => __("Senegal", 'wordfence'), "SO" => __("Somalia", 'wordfence'), "SR" => __("Suriname", 'wordfence'), "ST" => __("Sao Tome and Principe", 'wordfence'), "SV" => __("El Salvador", 'wordfence'), "SX" => __("Sint Maarten", 'wordfence'), "SY" => __("Syrian Arab Republic", 'wordfence'), "SZ" => __("Swaziland", 'wordfence'), "TC" => __("Turks and Caicos Islands", 'wordfence'), "TD" => __("Chad", 'wordfence'), "TF" => __("French Southern Territories", 'wordfence'), "TG" => __("Togo", 'wordfence'), "TH" => __("Thailand", 'wordfence'), "TJ" => __("Tajikistan", 'wordfence'), "TK" => __("Tokelau", 'wordfence'), "TL" => __("Timor-Leste", 'wordfence'), "TM" => __("Turkmenistan", 'wordfence'), "TN" => __("Tunisia", 'wordfence'), "TO" => __("Tonga", 'wordfence'), "TR" => __("Turkey", 'wordfence'), "TT" => __("Trinidad and Tobago", 'wordfence'), "TV" => __("Tuvalu", 'wordfence'), "TW" => __("Taiwan", 'wordfence'), "TZ" => __("Tanzania, United Republic of", 'wordfence'), "UA" => __("Ukraine", 'wordfence'), "UG" => __("Uganda", 'wordfence'), "UM" => __("United States Minor Outlying Islands", 'wordfence'), "US" => __("United States", 'wordfence'), "UY" => __("Uruguay", 'wordfence'), "UZ" => __("Uzbekistan", 'wordfence'), "VA" => __("Holy See (Vatican City State)", 'wordfence'), "VC" => __("Saint Vincent and the Grenadines", 'wordfence'), "VE" => __("Venezuela", 'wordfence'), "VG" => __("Virgin Islands, British", 'wordfence'), "VI" => __("Virgin Islands, U.S.", 'wordfence'), "VN" => __("Vietnam", 'wordfence'), "VU" => __("Vanuatu", 'wordfence'), "WF" => __("Wallis and Futuna", 'wordfence'), "WS" => __("Samoa", 'wordfence'), "XK" => __("Kosovo", 'wordfence'), "YE" => __("Yemen", 'wordfence'), "YT" => __("Mayotte", 'wordfence'), "ZA" => __("South Africa", 'wordfence'), "ZM" => __("Zambia", 'wordfence'), "ZW" => __("Zimbabwe", 'wordfence'), ); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_firewall_blocking.php����������������������������������������������������������������������0000644�����������������00000023734�15233113245�0012534 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wf-block wf-block-no-header wf-active"> <div class="wf-block-content"> <ul class="wf-block-list"> <li> <?php echo wfView::create('blocking/blocking-status', array( ))->render(); ?> </li> </ul> </div> </div> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wf-block wf-always-active"> <?php if (!wfConfig::get('firewallEnabled')): ?> <ul class="wf-block-banner"> <li><?php echo wp_kses(__('<strong>Note:</strong> Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.', 'wordfence'), array('strong'=>array())); ?></li> <li><a href="#" class="wf-btn wf-btn-default" id="wf-blocking-enable"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li> </ul> <?php endif; ?> <?php if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()): ?> <ul class="wf-block-banner"> <li><?php echo esc_html(sprintf( /* translators: PHP version. */ __('<strong>Note:</strong> The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion())); ?></li> <li><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE); ?>" class="wf-btn wf-btn-default" target="_blank" rel="noopener noreferrer"><?php esc_html_e('More Information', 'wordfence'); ?></a></li> </ul> <?php endif; ?> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong id="wf-block-parameters-title" data-new-title="<?php esc_attr_e('Create a Blocking Rule', 'wordfence'); ?>" data-edit-title="<?php esc_attr_e('Edit Blocking Rule', 'wordfence'); ?>"><?php esc_html_e('Create a Blocking Rule', 'wordfence'); ?></strong> </div> </div> </div> <div class="wf-block-content"> <?php echo wfView::create('blocking/blocking-create', array( ))->render(); ?> </div> </div> </div> </div> <!-- end firewall status --> <?php echo wfView::create('blocking/block-list', array( ))->render(); ?> <div id="wf-overlay-wrapper" style="display: none"> <div class="wf-overlay"> <div class="wf-overlay-header"></div> <div class="wf-overlay-body"></div> <span class="wf-overlay-close wf-ion-android-close"></span> </div> </div> <script type="application/javascript"> (function($) { $(function() { $('#wf-blocking-enable').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.setOption('firewallEnabled', 1, function() { window.location.reload(true); }); }); }); })(jQuery); </script> <?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_BLOCKING)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.setUpBlockingTour = function() { WFAD.tour1 = function () { WFAD.tour('wfBlockingNewTour1', 'wf-section-blocking', 'top', 'left', null, WFAD.tour2); }; WFAD.tour2 = function () { WFAD.tour('wfBlockingNewTour2', 'wf-create-block', 'top', 'top', WFAD.tour1, WFAD.tour3); }; WFAD.tour3 = function () { WFAD.tour('wfBlockingNewTour3', 'wf-blocks-wrapper', 'bottom', 'bottom', WFAD.tour2, WFAD.tourComplete); }; WFAD.tourComplete = function () { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_BLOCKING); ?>'); }; } WFAD.blockingTourShown = false; <?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_BLOCKING)): ?> $(window).on('wfTabChange', function(e, tab) { if (tab == 'blocking' && !WFAD.blockingTourShown) { WFAD.blockingTourShown = true; WFAD.setUpBlockingTour(); if (!WFAD.isSmallScreen) { WFAD.tour1(); } } }); if ($('#blocking').hasClass('wf-active')) { WFAD.blockingTourShown = true; WFAD.setUpBlockingTour(); if (!WFAD.isSmallScreen) { WFAD.tour1(); } } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfBlockingNewTour1"> <div> <h3><?php esc_html_e('Blocking', 'wordfence'); ?></h3> <p><?php esc_html_e('Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> <li>•</li> <li>•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfBlockingNewTour2"> <div> <h3><?php esc_html_e('Blocking Builder', 'wordfence'); ?></h3> <p><?php esc_html_e('All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you\'ll see it saved as a rule for your site.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li class="wf-active">•</li> <li>•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfBlockingNewTour3"> <div> <h3><?php esc_html_e('Manage Blocking Rules', 'wordfence'); ?></h3> <p><?php esc_html_e('Here\'s where you\'ll see all the blocking rules you\'ve created. You can also manage them as well as remove or modify them from this table.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li>•</li> <li class="wf-active">•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?> <?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_BLOCKING)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.setUpBlockingTour = function() { WFAD.tour1 = function () { WFAD.tour('wfBlockingUpgradeTour1', 'wf-create-block', 'top', 'top', null, WFAD.tour2); }; WFAD.tour2 = function () { WFAD.tour('wfBlockingUpgradeTour2', 'wf-blocks-wrapper', 'bottom', 'bottom', WFAD.tour1, WFAD.tourComplete); }; WFAD.tourComplete = function () { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_BLOCKING); ?>'); }; }; WFAD.blockingTourShown = false; <?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_BLOCKING)): ?> $(window).on('wfTabChange', function(e, tab) { if (tab == 'blocking' && !WFAD.blockingTourShown) { WFAD.blockingTourShown = true; WFAD.setUpBlockingTour(); if (!WFAD.isSmallScreen) { WFAD.tour1(); } } }); if ($('#blocking').hasClass('wf-active')) { WFAD.blockingTourShown = true; WFAD.setUpBlockingTour(); if (!WFAD.isSmallScreen) { WFAD.tour1(); } } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfBlockingUpgradeTour1"> <div> <h3><?php esc_html_e('Blocking Builder', 'wordfence'); ?></h3> <p><?php echo wp_kses(__('All of the blocking rules you create are now in one central location. Simply choose the block type and enter the details for the rule you want to create. Premium users have access to advanced country blocking options, found via the <strong>Options</strong> link.', 'wordfence'), array('strong'=>array())); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> <li>•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfBlockingUpgradeTour2"> <div> <h3><?php esc_html_e('Manage Blocking Rules', 'wordfence'); ?></h3> <p><?php esc_html_e('All blocking rules you create will show here. You can manage them as well as remove or modify them from the same location.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li class="wf-active">•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?>������������������������������������lib/Diff.php����������������������������������������������������������������������������������������0000644�����������������00000013202�15233113245�0006670 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php /** * Diff * * A comprehensive library for generating differences between two strings * in multiple formats (unified, side by side HTML etc) * * PHP version 5 * * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com> * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the Chris Boulton nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package Diff * @author Chris Boulton <chris.boulton@interspire.com> * @copyright (c) 2009 Chris Boulton * @license New BSD License http://www.opensource.org/licenses/bsd-license.php * @version 1.1 * @link http://github.com/chrisboulton/php-diff */ class Diff { /** * @var array The "old" sequence to use as the basis for the comparison. */ private $a = null; /** * @var array The "new" sequence to generate the changes for. */ private $b = null; /** * @var array Array containing the generated opcodes for the differences between the two items. */ private $groupedCodes = null; /** * @var array Associative array of the default options available for the diff class and their default value. */ private $defaultOptions = array( 'context' => 3, 'ignoreNewLines' => false, 'ignoreWhitespace' => false, 'ignoreCase' => false ); /** * @var array Array of the options that have been applied for generating the diff. */ private $options = array(); /** * The constructor. * * @param array $a Array containing the lines of the first string to compare. * @param array $b Array containing the lines for the second string to compare. */ public function __construct($a, $b, $options=array()) { $this->a = $a; $this->b = $b; $this->options = array_merge($this->defaultOptions, $options); } /** * Render a diff using the supplied rendering class and return it. * * @param object $renderer An instance of the rendering object to use for generating the diff. * @return mixed The generated diff. Exact return value depends on the rendered. */ public function render(Diff_Renderer_Abstract $renderer) { $renderer->diff = $this; return $renderer->render(); } /** * Get a range of lines from $start to $end from the first comparison string * and return them as an array. If no values are supplied, the entire string * is returned. It's also possible to specify just one line to return only * that line. * * @param int $start The starting number. * @param int $end The ending number. If not supplied, only the item in $start will be returned. * @return array Array of all of the lines between the specified range. */ public function getA($start=0, $end=null) { if($start == 0 && $end === null) { return $this->a; } if($end === null) { $length = 1; } else { $length = $end - $start; } return array_slice($this->a, $start, $length); } /** * Get a range of lines from $start to $end from the second comparison string * and return them as an array. If no values are supplied, the entire string * is returned. It's also possible to specify just one line to return only * that line. * * @param int $start The starting number. * @param int $end The ending number. If not supplied, only the item in $start will be returned. * @return array Array of all of the lines between the specified range. */ public function getB($start=0, $end=null) { if($start == 0 && $end === null) { return $this->b; } if($end === null) { $length = 1; } else { $length = $end - $start; } return array_slice($this->b, $start, $length); } /** * Generate a list of the compiled and grouped opcodes for the differences between the * two strings. Generally called by the renderer, this class instantiates the sequence * matcher and performs the actual diff generation and return an array of the opcodes * for it. Once generated, the results are cached in the diff class instance. * * @return array Array of the grouped opcodes for the generated diff. */ public function getGroupedOpcodes() { if(!is_null($this->groupedCodes)) { return $this->groupedCodes; } require_once(dirname(__FILE__) . '/Diff/SequenceMatcher.php'); $sequenceMatcher = new Diff_SequenceMatcher($this->a, $this->b, null, $this->options); $this->groupedCodes = $sequenceMatcher->getGroupedOpcodes(); return $this->groupedCodes; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfOnboardingController.php����������������������������������������������������������������������0000644�����������������00000021346�15233113245�0012513 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfOnboardingController { const ONBOARDING_FIRST_EMAILS = 'emails'; //New install, first attempt onboarding, part 1 completed const ONBOARDING_FIRST_LICENSE = 'license'; //New install, first attempt onboarding, part 2 completed const ONBOARDING_FIRST_SKIPPED = 'skipped'; //New install, first attempt onboarding was skipped const ONBOARDING_SECOND_EMAILS = 'emails'; //New install, second attempt onboarding, part 1 completed const ONBOARDING_SECOND_LICENSE = 'license'; //New install, second attempt onboarding, part 2 completed const ONBOARDING_SECOND_SKIPPED = 'skipped'; //New install, second attempt onboarding was skipped const ONBOARDING_THIRD_EMAILS = 'emails'; //New install, third attempt onboarding, part 1 completed const ONBOARDING_THIRD_LICENSE = 'license'; //New install, third attempt onboarding, part 2 completed const TOUR_DASHBOARD = 'dashboard'; const TOUR_FIREWALL = 'firewall'; const TOUR_SCAN = 'scan'; const TOUR_BLOCKING = 'blocking'; const TOUR_LIVE_TRAFFIC = 'livetraffic'; const TOUR_LOGIN_SECURITY = 'loginsecurity'; /** * Sets the appropriate initial settings for an existing install so it's not forced through onboarding. */ public static function migrateOnboarding() { $alertEmails = wfConfig::getAlertEmails(); $onboardingAttempt1 = wfConfig::get('onboardingAttempt1'); if (!empty($alertEmails) && empty($onboardingAttempt1)) { wfConfig::set('onboardingAttempt1', self::ONBOARDING_FIRST_LICENSE); //Mark onboarding as done $keys = array(self::TOUR_DASHBOARD, self::TOUR_FIREWALL, self::TOUR_SCAN, self::TOUR_BLOCKING, self::TOUR_LIVE_TRAFFIC); foreach ($keys as $k) { wfConfig::set('needsNewTour_' . $k, 0); wfConfig::set('needsUpgradeTour_' . $k, 1); } } } /** * Initializes the onboarding hooks. * * Only called if (is_admin() && wfUtils::isAdmin()) is true. */ public static function initialize() { $willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) || self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) || self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) || self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) || self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY)); if (!self::shouldShowAttempt1() && !self::shouldShowAttempt2() && !self::shouldShowAttempt3() && !$willShowAnyTour) { return; } add_action('in_admin_header', 'wfOnboardingController::_admin_header'); //Called immediately after <div id="wpcontent"> add_action('pre_current_active_plugins', 'wfOnboardingController::_pre_plugins'); //Called immediately after <hr class="wp-header-end"> add_action('admin_enqueue_scripts', 'wfOnboardingController::_enqueue_scripts'); } /** * Enqueues the scripts and styles we need globally on the backend for onboarding. */ public static function _enqueue_scripts() { $willShowAnyPluginOnboarding = (self::shouldShowAttempt1() || self::shouldShowAttempt2()); $willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) || self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) || self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) || self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) || self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY)); if (wfUtils::isAdmin() && (($willShowAnyPluginOnboarding && preg_match('~(?:^|/)wp-admin(?:/network)?/plugins\.php~i', $_SERVER['REQUEST_URI'])) || (isset($_GET['page']) && (preg_match('/^Wordfence/', @$_GET['page']) || preg_match('/^WFLS/', @$_GET['page'])) ) ) ) { wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfence-colorbox-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-colorbox.css'), '', WORDFENCE_VERSION); wp_enqueue_script('jquery.wfcolorbox', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.colorbox-min.js'), array('jquery'), WORDFENCE_VERSION); } } /** * Outputs the onboarding overlay if it needs to be shown on the plugins page. */ public static function _admin_header() { $willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) || self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) || self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) || self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) || self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY)); $screen = get_current_screen(); if ($screen->base == 'plugins' && self::shouldShowAttempt1()) { register_shutdown_function('wfOnboardingController::_markAttempt1Shown'); $freshInstall = wfView::create('onboarding/fresh-install')->render(); echo wfView::create('onboarding/overlay', array( 'contentHTML' => $freshInstall, ))->render(); } else if (preg_match('/wordfence/i', $screen->base) && $willShowAnyTour) { echo wfView::create('onboarding/tour-overlay')->render(); } } public static function _markAttempt1Shown() { wfConfig::set('onboardingAttempt1', self::ONBOARDING_FIRST_SKIPPED); //Only show it once, default to skipped after outputting the first time } public static function shouldShowAttempt1() { //Overlay on plugin page if (wfConfig::get('onboardingAttempt3') == self::ONBOARDING_THIRD_LICENSE) { return false; } switch (wfConfig::get('onboardingAttempt1')) { case self::ONBOARDING_FIRST_LICENSE: case self::ONBOARDING_FIRST_SKIPPED: return false; } return true; } public static function _pre_plugins() { if (self::shouldShowAttempt2()) { echo wfView::create('onboarding/plugin-header')->render(); } } public static function shouldShowAttempt2() { //Header on plugin page if (wfConfig::get('onboardingAttempt3') == self::ONBOARDING_THIRD_LICENSE) { return false; } $alertEmails = wfConfig::getAlertEmails(); $show = !wfConfig::get('onboardingAttempt2') && empty($alertEmails); //Unset defaults to true, all others false return $show; } public static function shouldShowAttempt3() { if (isset($_GET['page']) && (preg_match('/^Wordfence/', $_GET['page']) || preg_match('/^WFLS/', $_GET['page']))) { $alertEmails = wfConfig::getAlertEmails(); return empty($alertEmails); } return false; } /** * Whether or not to pop up attempt 3 at page load or wait for user interaction. * * @return bool */ public static function shouldShowAttempt3Automatically() { static $_shouldShowAttempt3Automatically = null; if ($_shouldShowAttempt3Automatically !== null) { //We cache this so the answer remains the same for the whole request return $_shouldShowAttempt3Automatically; } if (!self::shouldShowAttempt3()) { $_shouldShowAttempt3Automatically = false; return false; } $_shouldShowAttempt3Automatically = (!wfConfig::get('onboardingAttempt3Initial')); return (!wfConfig::get('onboardingAttempt3Initial')); } public static function willShowNewTour($page) { $key = 'needsNewTour_' . $page; return wfConfig::get($key); } public static function shouldShowNewTour($page) { $key = 'needsNewTour_' . $page; return (!self::shouldShowAttempt3Automatically() && !wfConfig::get('touppPromptNeeded') && wfConfig::get($key)); } public static function willShowUpgradeTour($page) { $key = 'needsUpgradeTour_' . $page; return wfConfig::get($key); } public static function shouldShowUpgradeTour($page) { $key = 'needsUpgradeTour_' . $page; return (!self::shouldShowAttempt3Automatically() && !wfConfig::get('touppPromptNeeded') && wfConfig::get($key)); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_wordfence_central.php����������������������������������������������������������������������0000644�����������������00000023300�15233113245�0012530 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } /** * @var string $subpage */ $stepContent = array( 1 => __('Testing initial communication with Wordfence Central.', 'wordfence'), 2 => __('Passing public key to Wordfence Central.', 'wordfence'), 3 => __('Testing public key authentication with Wordfence Central.', 'wordfence'), 4 => __('Testing that Wordfence Central is able to communicate with this site.', 'wordfence'), 5 => __('Retrieving access token using authorization grant.', 'wordfence'), 6 => __('Redirecting back to Wordfence Central.', 'wordfence'), ); $connected = wfCentral::isConnected(); $partialConnection = wfCentral::isPartialConnection(); ?> <?php if (wfOnboardingController::shouldShowAttempt3()) { echo wfView::create('onboarding/disabled-overlay')->render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } if (function_exists('network_admin_url') && is_multisite()) { $wordfenceURL = network_admin_url('admin.php?page=Wordfence'); } else { $wordfenceURL = admin_url('admin.php?page=Wordfence'); } ?> <div class="wrap wordfence"> <div class="wf-container-fluid"> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wp-header-end"></div> <?php echo wfView::create('common/section-title', array( 'title' => __('Wordfence Central', 'wordfence'), 'showIcon' => true, ))->render(); ?> </div> <?php if ($connected): ?> <div class="wf-col-xs-12 wf-central-connected"> <div class="wf-flex-row wf-flex-grow-all"> <div class="wf-flex-row-1 wf-block wf-active"> <div class="wf-central-dashboard"> <img class="wf-central-dashboard-logo" src="<?php echo wfUtils::getBaseURL() ?>images/wf-central-logo.svg" alt="Wordfence Central"> <div class="wf-central-dashboard-copy"> <p><strong><?php esc_html_e('Wordfence Central', 'wordfence') ?></strong></p> <p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p> <p class="wf-right-lg"><a href="https://www.wordfence.com/central" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong></a></p> </div> </div> </div> <div class="wf-flex-row-1 wf-block wf-active"> <p><strong><?php esc_html_e('Wordfence Central Status', 'wordfence') ?></strong></p> <p><?php echo esc_html(sprintf( /* translators: 1. Email address. 2. Localized date. */ __('Activated - connected by %1$s on %2$s', 'wordfence'), wfConfig::get('wordfenceCentralConnectEmail')), date_i18n('F j, Y', (int) wfConfig::get('wordfenceCentralConnectTime'))) ?></p> <p class="wf-right-lg"><a href="<?php echo esc_url($wordfenceURL); ?>"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a></p> </div> </div> </div> <?php elseif (isset($_GET['grant'])): ?> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <div class="wf-block-header"> <div class="wf-block-header-content"> <strong><?php esc_html_e('Wordfence Central Installation Process', 'wordfence') ?></strong> </div> </div> <div class="wf-block-content"> <ul class="wf-block-list" id="wf-central-progress"> <?php for ($i = 1; $i <= 6; $i++): ?> <li id="wf-central-progress-step<?php echo $i ?>" class="pending"> <div class="wf-central-progress-icon"> <div class="wf-step-pending"></div> <div class="wf-step-running"> <?php echo wfView::create('common/indeterminate-progress', array( 'size' => 50, ))->render(); ?> </div> <div class="wf-step-complete-success"></div> <div class="wf-step-complete-warning"></div> </div> <div class="wf-central-progress-content"> <p><?php echo esc_html($stepContent[$i]) ?></p> </div> </li> <?php endfor ?> </ul> </div> </div> </div> <?php elseif ($partialConnection): ?> <div class="wf-center-lg"> <p><?php esc_html_e('It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.', 'wordfence') ?></p> <p> <a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>/sites/connection-issues?complete-setup=<?php echo esc_attr(wfConfig::get('wordfenceCentralSiteID')) ?>" class="wf-btn wf-btn-primary" ><?php esc_html_e('Resume Installation', 'wordfence') ?></a> <a href="<?php echo esc_url($wordfenceURL); ?>" class="wf-btn wf-btn-warning"><?php esc_html_e('Disconnect Site', 'wordfence') ?></a> </p> </div> <?php else: ?> <div class="wf-center-lg"> <p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p> <p><?php esc_html_e('To connect your site your site to Wordfence Central, use the link below:', 'wordfence') ?></p> <p class="wf-center"> <a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>?newsite=<?php echo esc_attr(home_url()) ?>" class="wf-btn wf-btn-primary"><?php esc_html_e('Connect Site', 'wordfence') ?></a> </p> </div> <?php endif ?> </div> </div> </div> <script> (function($) { var authGrant = '<?php echo esc_js(isset($_GET['grant']) ? $_GET['grant'] : '') ?>'; var currentStep = <?php echo json_encode(wfConfig::getInt('wordfenceCentralCurrentStep', 1)) ?>; var connected = <?php echo json_encode($connected) ?>; function wfConnectError(error) { WFAD.colorboxError(error); } function wfCentralStepAjax(step, action, data, cb, cbErr, noLoading) { var el = $('#wf-central-progress-' + step); el.removeClass('pending') .addClass('running'); WFAD.ajax(action, data, function(response) { if (response && response.success) { el.removeClass('running') .addClass('complete-success'); cb && cb(response); } else if (response && response.err) { el.removeClass('running') .addClass('complete-warning'); } }, function(response) { el.removeClass('running') .addClass('complete-warning'); cbErr && cbErr(response); }, noLoading); } var WFCentralInstaller = {}; window.WFCentralInstaller = WFCentralInstaller; // Step 1: Makes GET request to `/central/api/site/access-token` endpoint authenticated with the auth grant supplied by the user. // - Receives site GUID, public key, short lived JWT. WFCentralInstaller.step1 = function() { wfCentralStepAjax('step1', 'wordfence_wfcentral_step1', { 'auth-grant': authGrant }, function(response) { $(window).trigger('step2', response); }, wfConnectError); }; // Step 2: Makes PATCH request to `/central/api/wf/site/<guid>` endpoint passing in the new public key. // Uses JWT from auth grant endpoint as auth. WFCentralInstaller.step2 = function() { wfCentralStepAjax('step2', 'wordfence_wfcentral_step2', {}, function(response) { $(window).trigger('step3', response); }, wfConnectError); }; $(window).on('step2', WFCentralInstaller.step2); // Step 3: Makes GET request to `/central/api/wf/site/<guid>` endpoint signed using Wordfence plugin private key. // - Expects 200 response with site data. WFCentralInstaller.step3 = function() { wfCentralStepAjax('step3', 'wordfence_wfcentral_step3', {}, function(response) { var callback = function() { $(window).trigger('step4') }; var interval = setInterval(callback, 4000); $(window).on('step3-clearInterval', function() { clearInterval(interval); }); callback(); }, wfConnectError); }; $(window).on('step3', WFCentralInstaller.step3); // Step 4: Poll for PUT request at `/wp-json/wp/v2/wordfence-auth-grant/` endpoint signed using Wordfence Central private key with short lived JWT. // - Expects verifiable signature of incoming request from Wordfence Central. // - Stores auth grant JWT. WFCentralInstaller.step4 = function() { wfCentralStepAjax('step4', 'wordfence_wfcentral_step4', {}, function(response) { if (response && response.success) { $(window).trigger('step3-clearInterval'); $(window).trigger('step5'); } }, wfConnectError); }; $(window).on('step4', WFCentralInstaller.step4); // Step 5: Makes GET request to `/central/api/site/<guid>/access-token` endpoint signed using Wordfence plugin private key with auth grant JWT. // - Expects 200 response with access token. WFCentralInstaller.step5 = function() { wfCentralStepAjax('step5', 'wordfence_wfcentral_step5', { 'auth-grant': authGrant }, function(response) { $(window).trigger('step6', response); }, wfConnectError); }; $(window).on('step5', WFCentralInstaller.step5); // Step 6: Installation complete. Redirect user back to Wordfence Central with access token. WFCentralInstaller.step6 = function(response) { wfCentralStepAjax('step6', 'wordfence_wfcentral_step6', {}, function(response) { document.location.href = response['redirect-url']; }, wfConnectError); }; $(window).on('step6', WFCentralInstaller.step6); var self = this; $(function() { // if (!authGrant) { // wfConnectError('Auth grant not found.'); // return; // } if (!connected && authGrant) { for (var i = 0; i < currentStep; i++) { var el = $('#wf-central-progress-step' + i); el.removeClass('pending') .addClass('complete-success'); } WFCentralInstaller['step' + currentStep](); } }); })(jQuery); </script>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_scanner_credentials.php��������������������������������������������������������������������0000644�����������������00000005317�15233113245�0013062 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } $scanner = wfScanner::shared(); $scanURL = network_admin_url('admin.php?page=WordfenceScan'); $action = @$_GET['action']; if (!in_array($action, array('restoreFile', 'deleteFile'))) { $action = ''; } $filesystemCredentialsAdminURL = network_admin_url('admin.php?' . http_build_query(array( 'page' => 'WordfenceScan', 'subpage' => 'scan_credentials', 'action' => $action, 'issueID' => (int) @$_GET['issueID'], 'nonce' => wp_create_nonce('wp-ajax'), ))); switch ($action) { case 'restoreFile': $callback = array('wordfence', 'fsActionRestoreFileCallback'); break; case 'deleteFile': $callback = array('wordfence', 'fsActionDeleteFileCallback'); break; } ?> <div class="wf-options-controls"> <div class="wf-row"> <div class="wf-col-xs-12"> <?php echo wfView::create('options/block-controls', array( 'backLink' => $scanURL, 'backLabel' => __('Back to Scan', 'wordfence'), 'suppressControls' => true, ))->render(); ?> </div> </div> </div> <div class="wf-options-controls-spacer"></div> <div class="wrap wordfence"> <div class="wf-container-fluid"> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wp-header-end"></div> </div> </div> <div class="wf-row"> <div class="<?php echo wfStyle::contentClasses(); ?>"> <div id="wf-scan-permissions-prompt" class="wf-fixed-tab-content"> <?php echo wfView::create('common/section-title', array( 'title' => __('File System Credentials Required', 'wordfence'), ))->render(); ?> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <div class="wf-block-content wf-padding-add-top wf-padding-add-bottom"> <?php if (isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'wp-ajax')) { if (wordfence::requestFilesystemCredentials($filesystemCredentialsAdminURL, get_home_path(), true, true)) { call_user_func_array($callback, isset($callbackArgs) && is_array($callbackArgs) ? $callbackArgs : array()); } //else - outputs credentials form } else { echo '<p>' . wp_kses(sprintf( /* translators: URL to the WordPress admin panel. */ __('Security token has expired. Click <a href="%s">here</a> to return to the scan page.', 'wordfence'), esc_url($scanURL)), array('a'=>array('href'=>array()))) . '</p>'; } ?> </div> </div> </div> </div> <!-- end permissions --> </div> <!-- end wf-scan-permissions-prompt block --> </div> <!-- end content block --> </div> <!-- end row --> </div> <!-- end container --> </div>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wordfenceURLHoover.php��������������������������������������������������������������������������0000644�����������������00000045611�15233113245�0011553 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wfAPI.php'); require_once(dirname(__FILE__) . '/wfArray.php'); class wordfenceURLHoover { private $debug = false; public $errorMsg = false; private $hostsToAdd = false; private $table = ''; private $apiKey = false; private $wordpressVersion = false; private $useDB = true; private $hostKeys = array(); private $hostList = array(); public $currentHooverID = false; private $_foundSome = false; private $_excludedHosts = array(); private $api = false; private $db = false; public static function standardExcludedHosts() { static $standardExcludedHosts = null; if ($standardExcludedHosts !== null) { return $standardExcludedHosts; } global $wpdb; $excludedHosts = array(); if (is_multisite()) { $blogIDs = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}"); //Can't use wp_get_sites or get_sites because they return empty at 10k sites foreach ($blogIDs as $id) { $homeURL = get_home_url($id); $host = parse_url($homeURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } $siteURL = get_site_url($id); $host = parse_url($siteURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } } } else { $homeURL = wfUtils::wpHomeURL(); $host = parse_url($homeURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } $siteURL = wfUtils::wpSiteURL(); $host = parse_url($siteURL, PHP_URL_HOST); if ($host) { $excludedHosts[$host] = 1; } } $standardExcludedHosts = array_keys($excludedHosts); return $standardExcludedHosts; } public function __sleep() { $this->writeHosts(); return array('debug', 'errorMsg', 'table', 'apiKey', 'wordpressVersion'); } public function __wakeup() { $this->hostsToAdd = new wfArray(array('owner', 'host', 'path', 'hostKey')); $this->api = new wfAPI($this->apiKey, $this->wordpressVersion); $this->db = new wfDB(); } public function __construct($apiKey, $wordpressVersion, $db = false, $continuation = false) { $this->hostsToAdd = new wfArray(array('owner', 'host', 'path', 'hostKey')); $this->apiKey = $apiKey; $this->wordpressVersion = $wordpressVersion; $this->api = new wfAPI($apiKey, $wordpressVersion); if($db){ $this->db = $db; } else { $this->db = new wfDB(); } global $wpdb; if(isset($wpdb)){ $this->table = wfDB::networkTable('wfHoover'); } else { $this->table = 'wp_wfHoover'; } if (!$continuation) { $this->cleanup(); } } public function cleanup() { $this->db->truncate($this->table); } public function hoover($id, $data, $excludedHosts = array()) { $this->currentHooverID = $id; $this->_foundSome = 0; $this->_excludedHosts = $excludedHosts; @preg_replace_callback('_((?:(?:(?:\b[a-z+\.\-]+:)?//)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\xa1-\xff0-9]+-?)*[a-z\xa1-\xff0-9]+)(?:\.(?:[a-z\xa1-\xff0-9]+-?)*[a-z\xa1-\xff0-9]+)*(?:\.(?:[a-z\xa1-\xff]{2,})))(?::\d{2,5})?)(?:/[a-z0-9\-\_\.~\!\*\(\);\:@&\=\+\$,\?#\[\]%]*)*)_iS', array($this, 'captureURL'), $data); $this->writeHosts(); return $this->_foundSome; } private function dbg($msg) { if ($this->debug) { wordfence::status(4, 'info', $msg); } } public function captureURL($matches) { $id = $this->currentHooverID; $url = $matches[0]; $components = parse_url($url); if (substr($url, 0, 2) != '//') { if (!isset($components['scheme']) || !preg_match('/^https?$/i', $components['scheme'])) { return; } } else { $url = 'http:' . $url; if (preg_match('/\.([a-z0-9]+)$/i', $components['host'], $tld)) { $tld = strtolower($tld[1]); if (strpos(wfConfig::get('tldlist', ''), '|' . $tld . '|') === false) { return; } } else { return; } wordfence::status(4, 'info', sprintf(/* translators: URL */ __('Found protocol-relative URL: %s', 'wordfence'), $url)); } foreach ($this->_excludedHosts as $h) { if (strcasecmp($h, $components['host']) === 0) { return; } } if (!filter_var($url, FILTER_VALIDATE_URL)) { return; } $this->_foundSome++; $host = (isset($components['host']) ? $components['host'] : ''); $path = (isset($components['path']) && !empty($components['path']) ? $components['path'] : '/'); $hashes = $this->_generateHashes($url); foreach ($hashes as $h) { $this->hostsToAdd->push(array('owner' => $id, 'host' => $host, 'path' => $path, 'hostKey' => wfUtils::substr($h, 0, 4))); } if($this->hostsToAdd->size() > 1000){ $this->writeHosts(); } } private function writeHosts() { if ($this->hostsToAdd->size() < 1) { return; } if ($this->useDB) { $sql = "INSERT INTO " . $this->table . " (owner, host, path, hostKey) VALUES "; while ($elem = $this->hostsToAdd->shift()) { //This may be an issue for hyperDB or other abstraction layers, but leaving it for now. $sql .= sprintf("('%s', '%s', '%s', '%s'),", $this->db->realEscape($elem['owner']), $this->db->realEscape($elem['host']), $this->db->realEscape($elem['path']), $this->db->realEscape($elem['hostKey']) ); } $sql = rtrim($sql, ','); $this->db->queryWrite($sql); $this->hostsToAdd->collectGarbage(); } else { while ($elem = $this->hostsToAdd->shift()) { $keys = str_split($elem['hostKey'], 4); foreach ($keys as $k) { $this->hostKeys[] = $k; } $this->hostList[] = array( 'owner' => $elem['owner'], 'host' => $elem['host'], 'path' => $elem['path'], 'hostKey' => $elem['hostKey'] ); } $this->hostsToAdd->collectGarbage(); } } public function getBaddies() { wordfence::status(4, 'info', __("Gathering host keys.", 'wordfence')); $allHostKeys = ''; if ($this->useDB) { global $wpdb; $dbh = $wpdb->dbh; $useMySQLi = (is_object($dbh) && $wpdb->use_mysqli && wfConfig::get('allowMySQLi', true) && WORDFENCE_ALLOW_DIRECT_MYSQLI); if ($useMySQLi) { //If direct-access MySQLi is available, we use it to minimize the memory footprint instead of letting it fetch everything into an array first wordfence::status(4, 'info', __("Using MySQLi directly.", 'wordfence')); $result = $dbh->query("SELECT DISTINCT hostKey FROM {$this->table} ORDER BY hostKey ASC LIMIT 100000"); /* We limit to 100,000 prefixes since more than that cannot be reliably checked within the default max_execution_time */ if (!is_object($result)) { $this->errorMsg = "Unable to query database"; $this->dbg($this->errorMsg); return false; } while ($row = $result->fetch_assoc()) { $allHostKeys .= $row['hostKey']; } } else { $q1 = $this->db->querySelect("SELECT DISTINCT hostKey FROM {$this->table} ORDER BY hostKey ASC LIMIT 100000"); /* We limit to 100,000 prefixes since more than that cannot be reliably checked within the default max_execution_time */ foreach ($q1 as $hRec) { $allHostKeys .= $hRec['hostKey']; } } } else { $allHostKeys = implode('', array_values(array_unique($this->hostKeys))); } /** * Check hash prefixes first. Each one is a 4-byte binary prefix of a SHA-256 hash of the URL. The response will * be a binary list of 4-byte indices; The full URL for each index should be sent in the secondary query to * find the true good/bad status. */ $allCount = wfUtils::strlen($allHostKeys) / 4; if ($allCount > 0) { if ($this->debug) { $this->dbg("Checking {$allCount} hostkeys"); for ($i = 0; $i < $allCount; $i++) { $key = wfUtils::substr($allHostKeys, $i * 4, 4); $this->dbg("Checking hostkey: " . bin2hex($key)); } } wordfence::status(2, 'info', sprintf(/* translators: Number of domains. */ __("Checking %d host keys against Wordfence scanning servers.", 'wordfence'), $allCount)); $resp = $this->api->binCall('check_host_keys', $allHostKeys); wordfence::status(2, 'info', __("Done host key check.", 'wordfence')); $this->dbg("Done host key check"); $badHostKeys = ''; if ($resp['code'] >= 200 && $resp['code'] <= 299) { $this->dbg("Host key response: " . bin2hex($resp['data'])); $dataLen = wfUtils::strlen($resp['data']); if ($dataLen > 0 && $dataLen % 2 == 0) { $this->dbg("Checking response indexes"); for ($i = 0; $i < $dataLen; $i += 2) { $idx = wfUtils::array_first(unpack('n', wfUtils::substr($resp['data'], $i, 2))); $this->dbg("Checking index {$idx}"); if ($idx < $allCount) { $prefix = wfUtils::substr($allHostKeys, $idx * 4, 4); $badHostKeys .= $prefix; $this->dbg("Got bad hostkey for record: " . bin2hex($prefix)); } else { $this->dbg("Bad allHostKeys index: {$idx}"); $this->errorMsg = "Bad allHostKeys index: {$idx}"; return false; } } } else if ($dataLen > 0) { $this->errorMsg = "Invalid data length received from Wordfence server: " . $dataLen; $this->dbg($this->errorMsg); return false; } } else { $this->errorMsg = "Wordfence server responded with an error. HTTP code " . $resp['code'] . " and data: " . $resp['data']; return false; } $badCount = wfUtils::strlen($badHostKeys) / 4; if ($badCount > 0) { $urlsToCheck = array(); $totalURLs = 0; //Reconcile flagged prefixes with their corresponding URLs for ($i = 0; $i < $badCount; $i++) { $prefix = wfUtils::substr($badHostKeys, $i * 4, 4); if ($this->useDB) { /** * Putting a 10000 limit in here for sites that have a huge number of items with the same URL * that repeats. This is an edge case. But if the URLs are malicious then presumably the admin * will fix the malicious URLs and on subsequent scans the items (owners) that are above the * 10000 limit will appear. */ $q1 = $this->db->querySelect("SELECT DISTINCT owner, host, path FROM {$this->table} WHERE hostKey = %s LIMIT 10000", $prefix); foreach ($q1 as $rec) { $url = 'http://' . $rec['host'] . $rec['path']; if (!isset($urlsToCheck[$rec['owner']])) { $urlsToCheck[$rec['owner']] = array(); } if (!in_array($url, $urlsToCheck[$rec['owner']])) { $urlsToCheck[$rec['owner']][] = $url; $totalURLs++; } } } else { foreach ($this->hostList as $rec) { $pos = wfUtils::strpos($rec['hostKey'], $prefix); if ($pos !== false && $pos % 4 == 0) { $url = 'http://' . $rec['host'] . $rec['path']; if (!isset($urlsToCheck[$rec['owner']])) { $urlsToCheck[$rec['owner']] = array(); } if (!in_array($url, $urlsToCheck[$rec['owner']])) { $urlsToCheck[$rec['owner']][] = $url; $totalURLs++; } } } } if ($totalURLs > 10000) { break; } } if (count($urlsToCheck) > 0) { wordfence::status(2, 'info', sprintf( /* translators: 1. Number of URLs. 2. Number of files. */ __('Checking %1$d URLs from %2$d sources.', 'wordfence'), $totalURLs, sizeof($urlsToCheck) )); $badURLs = $this->api->call('check_bad_urls', array(), array('toCheck' => json_encode($urlsToCheck))); wordfence::status(2, 'info', __("Done URL check.", 'wordfence')); $this->dbg("Done URL check"); if (is_array($badURLs) && count($badURLs) > 0) { $finalResults = array(); foreach ($badURLs as $file => $badSiteList) { if (!isset($finalResults[$file])) { $finalResults[$file] = array(); } foreach ($badSiteList as $badSite) { $finalResults[$file][] = array( 'URL' => $badSite[0], 'badList' => $badSite[1] ); } } $this->dbg("Confirmed " . count($badURLs) . " bad URLs"); return $finalResults; } } } } return array(); } protected function _generateHashes($url) { //The GSB specification requires generating and sending hash prefixes for a number of additional similar URLs. See: https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions $canonicalURL = $this->_canonicalizeURL($url); //Extract the scheme $scheme = 'http'; if (preg_match('~^([a-z]+[a-z0-9+\.\-]*)://(.*)$~i', $canonicalURL, $matches)) { $scheme = strtolower($matches[1]); $canonicalURL = $matches[2]; } //Separate URL and query string $query = ''; if (preg_match('/^([^?]+)(\??.*)/', $canonicalURL, $matches)) { $canonicalURL = $matches[1]; $query = $matches[2]; } //Separate host and path $path = ''; preg_match('~^(.*?)(?:(/.*)|$)~', $canonicalURL, $matches); $host = $matches[1]; if (isset($matches[2])) { $path = $matches[2]; } //Clean host $host = $this->_normalizeHost($host); //Generate hosts list $hosts = array(); if (filter_var(trim($host, '[]'), FILTER_VALIDATE_IP)) { $hosts[] = $host; } else { $hostComponents = explode('.', $host); $numComponents = count($hostComponents) - 7; if ($numComponents < 1) { $numComponents = 1; } $hosts[] = $host; for ($i = $numComponents; $i < count($hostComponents) - 1; $i++) { $hosts[] = implode('.', array_slice($hostComponents, $i)); } } //Generate paths list $paths = array('/'); $pathComponents = array_filter(explode('/', $path)); $numComponents = min(count($pathComponents), 4); for ($i = 1; $i < $numComponents; $i++) { $paths[] = '/' . implode('/', array_slice($pathComponents, 0, $i)) . '/'; } if ($path != '/') { $paths[] = $path; } if (strlen($query) > 0) { $paths[] = $path . '?' . $query; } $paths = array_reverse($paths); //So we start at the most specific and move to most generic //Generate hashes $hashes = array(); foreach ($hosts as $h) { $hashes[$h] = hash('sha256', $h, true); //WFSB compatibility -- it uses hashes without the path foreach ($paths as $p) { $key = $h . $p; $hashes[$key] = hash('sha256', $key, true); break; //We no longer have any use for the extra path variants, so just include the primary one and exit the loop after } } return $hashes; } protected function _canonicalizeURL($url) { //Based on https://developers.google.com/safe-browsing/v4/urls-hashing#canonicalization and Google's reference implementation https://github.com/google/safebrowsing/blob/master/urls.go //Strip fragment $url = $this->_array_first(explode('#', $url)); //Trim space $url = trim($url); //Remove tabs, CR, LF $url = preg_replace('/[\t\n\r]/', '', $url); //Normalize escapes $url = $this->_normalizeEscape($url); if ($url === false) { return false; } //Extract the scheme $scheme = 'http'; if (preg_match('~^([a-z]+[a-z0-9+\.\-]*)://(.*)$~i', $url, $matches)) { $scheme = strtolower($matches[1]); $url = $matches[2]; } //Separate URL and query string $query = ''; if (preg_match('/^([^?]+)(\??.*)/', $url, $matches)) { $url = $matches[1]; $query = $matches[2]; } $endsWithSlash = substr($url, -1) == '/'; //Separate host and path $path = ''; preg_match('~^(.*?)(?:(/.*)|$)~', $url, $matches); $host = $matches[1]; if (isset($matches[2])) { $path = $matches[2]; } //Clean host $host = $this->_normalizeHost($host); if ($host === false) { return false; } //Clean path $path = preg_replace('~//+~', '/', $path); //Multiple slashes -> single slash $path = preg_replace('~(?:^|/)\.(?:$|/)~', '/', $path); //. path components removed while (preg_match('~/(?!\.\./)[^/]+/\.\.(?:$|/)~', $path)) { //Resolve .. $path = preg_replace('~/(?!\.\./)[^/]+/\.\.(?:$|/)~', '/', $path, 1); } $path = preg_replace('~(?:^|/)\.\.(?:$|/)~', '/', $path); //Eliminate .. at the beginning $path = trim($path, '.'); $path = preg_replace('/\.\.+/', '.', $path); if ($path == '.' || $path == '') { $path = '/'; } else if ($endsWithSlash && substr($path, -1) != '/') { $path .= '/'; } return $scheme . '://' . $host . $path . $query; } protected function _normalizeEscape($url) { $maxDepth = 1024; $i = 0; while (preg_match('/%([0-9a-f]{2})/i', $url)) { $url = preg_replace_callback('/%([0-9a-f]{2})/i', array($this, '_hex2binCallback'), $url); $i++; if ($i > $maxDepth) { return false; } } return preg_replace_callback('/[\x00-\x20\x7f-\xff#%]/', array($this, '_bin2hexCallback'), $url); } protected function _hex2binCallback($matches) { return wfUtils::hex2bin($matches[1]); } protected function _bin2hexCallback($matches) { return '%' . bin2hex($matches[0]); } protected function _normalizeHost($host) { //Strip username:password $host = $this->_array_last(explode('@', $host)); //IPv6 literal if (substr($host, 0, 1) == '[') { if (strpos($host, ']') === false) { //No closing bracket return false; } } //Strip port $host = preg_replace('/:\d+$/', '', $host); //Unicode to IDNA $u = rawurldecode($host); if (preg_match('/[\x81-\xff]/', $u)) { //0x80 is technically Unicode, but the GSB canonicalization doesn't consider it one if (function_exists('idn_to_ascii')) { //Some PHP versions don't have this and we don't have a polyfill $host = idn_to_ascii($u); } } //Remove extra dots $host = trim($host, '.'); $host = preg_replace('/\.\.+/', '.', $host); //Canonicalize IP addresses if ($iphost = $this->_parseIP($host)) { return $iphost; } return strtolower($host); } protected function _parseIP($host) { // The Windows resolver allows a 4-part dotted decimal IP address to have a // space followed by any old rubbish, so long as the total length of the // string doesn't get above 15 characters. So, "10.192.95.89 xy" is // resolved to 10.192.95.89. If the string length is greater than 15 // characters, e.g. "10.192.95.89 xy.wildcard.example.com", it will be // resolved through DNS. if (strlen($host) <= 15) { $host = $this->_array_first(explode(' ', $host)); } if (!preg_match('/^((?:0x[0-9a-f]+|[0-9\.])+)$/i', $host)) { return false; } $parts = explode('.', $host); if (count($parts) > 4) { return false; } $strings = array(); foreach ($parts as $i => $p) { if ($i == count($parts) - 1) { $strings[] = $this->_canonicalNum($p, 5 - count($parts)); } else { $strings[] = $this->_canonicalNum($p, 1); } if ($strings[$i] == '') { return ''; } } return implode('.', $strings); } protected function _canonicalNum($part, $n) { if ($n <= 0 || $n > 4) { return ''; } if (preg_match('/^0x(\d+)$/i', $part, $matches)) { //hex $part = hexdec($matches[1]); } else if (preg_match('/^0(\d+)$/i', $part, $matches)) { //octal $part = octdec($matches[1]); } else { $part = (int) $part; } $strings = array_fill(0, $n, ''); for ($i = $n - 1; $i >= 0; $i--) { $strings[$i] = (string) ($part & 0xff); $part = $part >> 8; } return implode('.', $strings); } protected function _array_first($array) { if (empty($array)) { return null; } return $array[0]; } protected function _array_last($array) { if (empty($array)) { return null; } return $array[count($array) - 1]; } } �����������������������������������������������������������������������������������������������������������������������lib/wfNotification.php������������������������������������������������������������������������������0000644�����������������00000014644�15233113245�0011016 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfNotification { const PRIORITY_LOW = 1500; const PRIORITY_DEFAULT = 1000; const PRIORITY_HIGH = 500; const PRIORITY_HIGH_CRITICAL = 501; const PRIORITY_HIGH_WARNING = 502; protected $_id; protected $_category; protected $_priority; protected $_ctime; protected $_html; protected $_links; public static function notifications($since = 0) { global $wpdb; $table_wfNotifications = wfDB::networkTable('wfNotifications'); $rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE `new` = 1 AND `ctime` > %d ORDER BY `priority` ASC, `ctime` DESC", $since), ARRAY_A); $notifications = array(); foreach ($rawNotifications as $raw) { $notifications[] = new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true); } return $notifications; } public static function getNotificationForID($id) { global $wpdb; $table_wfNotifications = wfDB::networkTable('wfNotifications'); $rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE `id` = %s ORDER BY `priority` ASC, `ctime` DESC", $id), ARRAY_A); if (count($rawNotifications) == 1) { $raw = $rawNotifications[0]; return new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true); } return null; } public static function getNotificationForCategory($category, $requireNew = true) { global $wpdb; $table_wfNotifications = wfDB::networkTable('wfNotifications'); $rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE " . ($requireNew ? '`new` = 1 AND ' : '') . "`category` = %s ORDER BY `priority` ASC, `ctime` DESC LIMIT 1", $category), ARRAY_A); if (count($rawNotifications) == 1) { $raw = $rawNotifications[0]; return new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true); } return null; } public static function reconcileNotificationsWithOptions() { $notification_updatesNeeded = wfConfig::get('notification_updatesNeeded'); $notification_securityAlerts = wfConfig::get('notification_securityAlerts') || !wfConfig::p(); $notification_promotions = wfConfig::get('notification_promotions') || !wfConfig::p(); $notification_blogHighlights = wfConfig::get('notification_blogHighlights') || !wfConfig::p(); $notification_productUpdates = wfConfig::get('notification_productUpdates') || !wfConfig::p(); $notification_scanStatus = wfConfig::get('notification_scanStatus'); $notifications = self::notifications(); foreach ($notifications as $n) { $category = $n->category; if (preg_match('/^release/i', $category) && !$notification_productUpdates) { $n->markAsRead(); } if (preg_match('/^digest/i', $category) && !$notification_blogHighlights) { $n->markAsRead(); } if (preg_match('/^alert/i', $category) && !$notification_securityAlerts) { $n->markAsRead(); } if (preg_match('/^promo/i', $category) && !$notification_promotions) { $n->markAsRead(); } switch ($category) { case 'wfplugin_scan': if (!$notification_scanStatus) { $n->markAsRead(); } break; case 'wfplugin_updates': if (!$notification_updatesNeeded) { $n->markAsRead(); } break; case 'wfplugin_keyconflict': default: //Allow it break; } } } public function __construct($id, $priority, $html, $category = null, $ctime = null, $links = null, $memoryOnly = false) { if ($id === null) { $id = 'site-' . wfUtils::base32_encode(pack('I', wfConfig::atomicInc('lastNotificationID'))); } if ($category === null) { $category = ''; } if ($ctime === null) { $ctime = time(); } if (!is_array($links)) { $links = array(); } $this->_id = $id; $this->_category = $category; $this->_priority = $priority; $this->_ctime = $ctime; $this->_html = $html; $this->_links = $links; global $wpdb; if (!$memoryOnly) { $linksJSON = json_encode($links); $notification_updatesNeeded = wfConfig::get('notification_updatesNeeded'); $notification_securityAlerts = wfConfig::get('notification_securityAlerts') || !wfConfig::p(); $notification_promotions = wfConfig::get('notification_promotions') || !wfConfig::p(); $notification_blogHighlights = wfConfig::get('notification_blogHighlights') || !wfConfig::p(); $notification_productUpdates = wfConfig::get('notification_productUpdates') || !wfConfig::p(); $notification_scanStatus = wfConfig::get('notification_scanStatus'); if (preg_match('/^release/i', $category) && !$notification_productUpdates) { return; } if (preg_match('/^digest/i', $category) && !$notification_blogHighlights) { return; } if (preg_match('/^alert/i', $category) && !$notification_securityAlerts) { return; } if (preg_match('/^promo/i', $category) && !$notification_promotions) { return; } switch ($category) { case 'wfplugin_scan': if (!$notification_scanStatus) { return; } break; case 'wfplugin_updates': if (!$notification_updatesNeeded) { return; } break; case 'wfplugin_keyconflict': default: //Allow it break; } $table_wfNotifications = wfDB::networkTable('wfNotifications'); if (!empty($category)) { $existing = self::getNotificationForCategory($category); if ($existing) { $wpdb->query($wpdb->prepare("UPDATE {$table_wfNotifications} SET priority = %d, ctime = %d, html = %s, links = %s WHERE id = %s", $priority, $ctime, $html, $linksJSON, $existing->id)); return; } } $wpdb->query($wpdb->prepare("INSERT IGNORE INTO {$table_wfNotifications} (id, category, priority, ctime, html, links) VALUES (%s, %s, %d, %d, %s, %s)", $id, $category, $priority, $ctime, $html, $linksJSON)); } } public function __get($key){ if ($key == 'id') { return $this->_id; } else if ($key == 'category') { return $this->_category; } else if ($key == 'priority') { return $this->_priority; } else if ($key == 'ctime') { return $this->_ctime; } else if ($key == 'html') { return $this->_html; } else if ($key == 'links') { return $this->_links; } throw new InvalidArgumentException(); } public function markAsRead() { global $wpdb; $table_wfNotifications = wfDB::networkTable('wfNotifications'); $wpdb->query($wpdb->prepare("UPDATE {$table_wfNotifications} SET `new` = 0 WHERE `id` = %s", $this->_id)); } } ��������������������������������������������������������������������������������������������lib/wfDiagnostic.php��������������������������������������������������������������������������������0000644�����������������00000063205�15233113245�0010451 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfGrant { public $select = false; public $update = false; public $insert = false; public $delete = false; public $alter = false; public $create = false; public $drop = false; public static function get() { static $instance; if ($instance === null) { $instance = new self; } return $instance; } private function __construct() { global $wpdb; $rows = $wpdb->get_results("SHOW GRANTS FOR current_user()", ARRAY_N); foreach ($rows as $row) { preg_match("/GRANT (.+) ON (.+) TO/", $row[0], $matches); foreach (explode(",", $matches[1]) as $permission) { $permission = str_replace(" ", "_", trim(strtolower($permission))); if ($permission === 'all_privileges') { foreach ($this as $key => $value) { $this->$key = true; } break 2; } $this->$permission = true; } } } } class wfDiagnostic { protected $minVersion = array( 'PHP' => '5.6.20', 'cURL' => '1.0', ); protected $description = false; //Defined in the constructor to allow for localization protected $results = array(); public function __construct() { $this->description = array( 'Wordfence Status' => array( 'description' => __('General information about the Wordfence installation.', 'wordfence'), 'tests' => array( 'wfVersion' => __('Wordfence Version', 'wordfence'), 'geoIPVersion' => __('GeoIP Version', 'wordfence'), 'cronStatus' => __('Cron Status', 'wordfence'), ), ), 'Filesystem' => array( 'description' => __('Ability to read/write various files.', 'wordfence'), 'tests' => array( 'isPluginReadable' => __('Checking if web server can read from <code>~/plugins/wordfence</code>', 'wordfence'), 'isPluginWritable' => __('Checking if web server can write to <code>~/plugins/wordfence</code>', 'wordfence'), 'isWAFReadable' => __('Checking if web server can read from <code>~/wp-content/wflogs</code>', 'wordfence'), 'isWAFWritable' => __('Checking if web server can write to <code>~/wp-content/wflogs</code>', 'wordfence'), ), ), 'Wordfence Config' => array( 'description' => __('Ability to save Wordfence settings to the database.', 'wordfence'), 'tests' => array( 'configWritableSet' => __('Checking basic config reading/writing', 'wordfence'), 'configWritableSetSer' => __('Checking serialized config reading/writing', 'wordfence'), ), ), 'Wordfence Firewall' => array( 'description' => __('Current WAF configuration.', 'wordfence'), 'tests' => array( 'wafAutoPrepend' => __('WAF auto prepend active', 'wordfence'), 'wafStorageEngine' => __('WAF storage engine (WFWAF_STORAGE_ENGINE)', 'wordfence'), 'wafLogPath' => __('WAF log path', 'wordfence'), 'wafSubdirectoryInstall' => __('WAF subdirectory installation', 'wordfence'), 'wafAutoPrependFilePath' => __('wordfence-waf.php path', 'wordfence'), 'wafFilePermissions' => __('WAF File Permissions', 'wordfence'), 'wafRecentlyRemoved' => __('Recently removed wflogs files', 'wordfence'), ), ), 'MySQL' => array( 'description' => __('Database version and privileges.', 'wordfence'), 'tests' => array( 'databaseVersion' => __('Database Version', 'wordfence'), 'userCanDelete' => __('Checking if MySQL user has <code>DELETE</code> privilege', 'wordfence'), 'userCanInsert' => __('Checking if MySQL user has <code>INSERT</code> privilege', 'wordfence'), 'userCanUpdate' => __('Checking if MySQL user has <code>UPDATE</code> privilege', 'wordfence'), 'userCanSelect' => __('Checking if MySQL user has <code>SELECT</code> privilege', 'wordfence'), 'userCanCreate' => __('Checking if MySQL user has <code>CREATE TABLE</code> privilege', 'wordfence'), 'userCanAlter' => __('Checking if MySQL user has <code>ALTER TABLE</code> privilege', 'wordfence'), 'userCanDrop' => __('Checking if MySQL user has <code>DROP</code> privilege', 'wordfence'), 'userCanTruncate' => __('Checking if MySQL user has <code>TRUNCATE</code> privilege', 'wordfence'), ) ), 'PHP Environment' => array( 'description' => __('PHP version, important PHP extensions.', 'wordfence'), 'tests' => array( 'phpVersion' => array('raw' => true, 'value' => sprintf(/* translators: Support URL. */ __('PHP version >= PHP 5.6.20<br><em> (<a href="https://wordpress.org/about/requirements/" target="_blank" rel="noopener noreferrer">Minimum version required by WordPress</a>)</em> <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP))), 'processOwner' => __('Process Owner', 'wordfence'), 'hasOpenSSL' => __('Checking for OpenSSL support', 'wordfence'), 'openSSLVersion' => __('Checking OpenSSL version', 'wordfence'), 'hasCurl' => __('Checking for cURL support', 'wordfence'), 'curlFeatures' => __('cURL Features Code', 'wordfence'), 'curlHost' => __('cURL Host', 'wordfence'), 'curlProtocols' => __('cURL Support Protocols', 'wordfence'), 'curlSSLVersion' => __('cURL SSL Version', 'wordfence'), 'curlLibZVersion' => __('cURL libz Version', 'wordfence'), 'displayErrors' => __('Checking <code>display_errors</code><br><em> (<a href="http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors" target="_blank" rel="noopener noreferrer">Should be disabled on production servers</a>)</em>', 'wordfence'), ) ), 'Connectivity' => array( 'description' => __('Ability to connect to the Wordfence servers and your own site.', 'wordfence'), 'tests' => array( 'connectToServer1' => __('Connecting to Wordfence servers (http)', 'wordfence'), 'connectToServer2' => __('Connecting to Wordfence servers (https)', 'wordfence'), 'connectToSelf' => __('Connecting back to this site', 'wordfence'), 'serverIP' => __('IP(s) used by this server', 'wordfence'), ) ), 'Time' => array( 'description' => __('Server time accuracy and applied offsets.', 'wordfence'), 'tests' => array( 'wfTime' => __('Wordfence Network Time', 'wordfence'), 'serverTime' => __('Server Time', 'wordfence'), 'wfTimeOffset' => __('Wordfence Network Time Offset', 'wordfence'), 'ntpTimeOffset' => __('NTP Time Offset', 'wordfence'), 'timeSourceInUse' => __('TOTP Time Source', 'wordfence'), 'wpTimeZone' => __('WordPress Time Zone', 'wordfence'), ), ), ); foreach ($this->description as $title => $tests) { $this->results[$title] = array( 'description' => $tests['description'], ); foreach ($tests['tests'] as $name => $description) { if (!method_exists($this, $name)) { continue; } $result = $this->$name(); if (is_bool($result)) { $result = array( 'test' => $result, 'message' => $result ? 'OK' : 'FAIL', ); } $result['label'] = $description; $result['name'] = $name; $this->results[$title]['results'][] = $result; } } } public function getResults() { return $this->results; } public function wfVersion() { return array('test' => true, 'message' => WORDFENCE_VERSION . ' (' . WORDFENCE_BUILD_NUMBER . ')'); } public function geoIPVersion() { return array('test' => true, 'infoOnly' => true, 'message' => wfUtils::geoIPVersion()); } public function cronStatus() { $cron = _get_cron_array(); $overdue = 0; foreach ($cron as $timestamp => $values) { if (is_array($values)) { foreach ($values as $cron_job => $v) { if (is_numeric($timestamp)) { if ((time() - 1800) > $timestamp) { $overdue++; } } } } } return array('test' => true, 'infoOnly' => true, 'message' => $overdue ? sprintf(/* translators: Number of jobs. */ _n('%d Job Overdue', '%d Jobs Overdue', $overdue, 'wordfence'), $overdue) : __('Normal', 'wordfence')); } public function geoIPError() { $error = wfUtils::last_error('geoip'); return array('test' => true, 'infoOnly' => true, 'message' => $error ? $error : __('None', 'wordfence')); } public function isPluginReadable() { return is_readable(WORDFENCE_PATH); } public function isPluginWritable() { return is_writable(WORDFENCE_PATH); } public function isWAFReadable() { if (!is_readable(WFWAF_LOG_PATH)) { if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') { return array('test' => false, 'infoOnly' => true, 'message' => __('No files readable', 'wordfence')); } return array('test' => false, 'message' => __('No files readable', 'wordfence')); } $files = array( WFWAF_LOG_PATH . 'attack-data.php', WFWAF_LOG_PATH . 'ips.php', WFWAF_LOG_PATH . 'config.php', WFWAF_LOG_PATH . 'rules.php', ); $unreadable = array(); foreach ($files as $f) { if (!file_exists($f)) { $unreadable[] = sprintf(__('File "%s" does not exist', 'wordfence'), basename($f)); } else if (!is_readable($f)) { $unreadable[] = sprintf(/* translators: File path. */ __('File "%s" is unreadable', 'wordfence'), basename($f)); } } if (count($unreadable) > 0) { if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') { return array('test' => false, 'infoOnly' => true, 'message' => implode(', ', $unreadable)); } return array('test' => false, 'message' => implode(', ', $unreadable)); } return true; } public function isWAFWritable() { if (!is_writable(WFWAF_LOG_PATH)) { if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') { return array('test' => false, 'infoOnly' => true, 'message' => __('No files writable', 'wordfence')); } return array('test' => false, 'message' => __('No files writable', 'wordfence')); } $files = array( WFWAF_LOG_PATH . 'attack-data.php', WFWAF_LOG_PATH . 'ips.php', WFWAF_LOG_PATH . 'config.php', WFWAF_LOG_PATH . 'rules.php', ); $unwritable = array(); foreach ($files as $f) { if (!file_exists($f)) { $unwritable[] = sprintf(/* translators: File name. */__('File "%s" does not exist', 'wordfence'), basename($f)); } else if (!is_writable($f)) { $unwritable[] = sprintf(/* translators: File name. */__('File "%s" is unwritable', 'wordfence'), basename($f)); } } if (count($unwritable) > 0) { if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') { return array('test' => false, 'infoOnly' => true, 'message' => implode(', ', $unwritable)); } return array('test' => false, 'message' => implode(', ', $unwritable)); } return true; } public function databaseVersion() { global $wpdb; $version = $wpdb->get_var("SELECT VERSION()"); return array('test' => true, 'message' => $version); } public function userCanInsert() { return wfGrant::get()->insert; } public function userCanUpdate() { return wfGrant::get()->update; } public function userCanDelete() { return wfGrant::get()->delete; } public function userCanSelect() { return wfGrant::get()->select; } public function userCanCreate() { return wfGrant::get()->create; } public function userCanDrop() { return wfGrant::get()->drop; } public function userCanTruncate() { return wfGrant::get()->drop && wfGrant::get()->delete; } public function userCanAlter() { return wfGrant::get()->alter; } public function phpVersion() { return array( 'test' => version_compare(phpversion(), $this->minVersion['PHP'], '>='), 'message' => phpversion(), ); } public function configWritableSet() { global $wpdb; $show = $wpdb->hide_errors(); $val = md5(time()); wfConfig::set('configWritingTest', $val, wfConfig::DONT_AUTOLOAD); $testVal = wfConfig::get('configWritingTest'); $wpdb->show_errors($show); return array( 'test' => ($val === $testVal), 'message' => __('Basic config writing', 'wordfence') ); } public function configWritableSetSer() { global $wpdb; $show = $wpdb->hide_errors(); $val = md5(time()); wfConfig::set_ser('configWritingTest_ser', array($val), false, wfConfig::DONT_AUTOLOAD); $testVal = @array_shift(wfConfig::get_ser('configWritingTest_ser', array(), false)); $wpdb->show_errors($show); return array( 'test' => ($val === $testVal), 'message' => __('Serialized config writing', 'wordfence') ); } public function wafAutoPrepend() { return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND ? __('Yes', 'wordfence') : __('No', 'wordfence'))); } public function wafStorageEngine() { return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_STORAGE_ENGINE') ? WFWAF_STORAGE_ENGINE : __('(default)', 'wordfence'))); } public function wafLogPath() { $logPath = __('(not set)', 'wordfence'); if (defined('WFWAF_LOG_PATH')) { $logPath = WFWAF_LOG_PATH; if (strpos($logPath, ABSPATH) === 0) { $logPath = '~/' . substr($logPath, strlen(ABSPATH)); } } return array('test' => true, 'infoOnly' => true, 'message' => $logPath); } public function wafSubdirectoryInstall() { return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL ? __('Yes', 'wordfence') : __('No', 'wordfence'))); } public function wafAutoPrependFilePath() { $path = wordfence::getWAFBootstrapPath(); if (!file_exists($path)) { $path = ''; } return array('test' => true, 'infoOnly' => true, 'message' => $path); } public function wafFilePermissions() { if (defined('WFWAF_LOG_FILE_MODE')) { return array('test' => true, 'infoOnly' => true, 'message' => sprintf(/* translators: Unix file permissions in octal (example 0777). */ __('%s - using constant', 'wordfence'), str_pad(decoct(WFWAF_LOG_FILE_MODE), 4, '0', STR_PAD_LEFT))); } if (defined('WFWAF_LOG_PATH')) { $template = rtrim(WFWAF_LOG_PATH, '/') . '/template.php'; if (file_exists($template)) { $stat = @stat($template); if ($stat !== false) { $mode = $stat[2]; $updatedMode = 0600; if (($mode & 0020) == 0020) { $updatedMode = $updatedMode | 0060; } return array('test' => true, 'infoOnly' => true, 'message' => sprintf(/* translators: Unix file permissions in octal (example 0777). */ __('%s - using template', 'wordfence'), str_pad(decoct($updatedMode), 4, '0', STR_PAD_LEFT))); } } } return array('test' => true, 'infoOnly' => true, 'message' => __('0660 - using default', 'wordfence')); } public function wafRecentlyRemoved() { $removalHistory = wfConfig::getJSON('diagnosticsWflogsRemovalHistory', array()); if (empty($removalHistory)) { return array('test' => true, 'infoOnly' => true, 'message' => __('None', 'wordfence')); } $message = array(); foreach ($removalHistory as $r) { $m = wfUtils::formatLocalTime('M j, Y', $r[0]) . ': (' . count($r[1]) . ')'; $r[1] = array_filter($r[1], array($this, '_filterOutNestedEntries')); $m .= ' ' . implode(', ', array_slice($r[1], 0, 5)); if (count($r[1]) > 5) { $m .= ', ...'; } $message[] = $m; } return array('test' => true, 'infoOnly' => true, 'message' => implode("\n", $message)); } private function _filterOutNestedEntries($a) { return !is_array($a); } public function processOwner() { $disabledFunctions = explode(',', ini_get('disable_functions')); if (is_callable('posix_geteuid')) { if (!is_callable('posix_getpwuid') || in_array('posix_getpwuid', $disabledFunctions)) { return array( 'test' => false, 'message' => __('Unavailable', 'wordfence'), ); } $processOwner = posix_getpwuid(posix_geteuid()); if ($processOwner !== null) { return array( 'test' => true, 'message' => $processOwner['name'], ); } } $usernameOrUserEnv = getenv('USERNAME') ? getenv('USERNAME') : getenv('USER'); if (!empty($usernameOrUserEnv)) { //Check some environmental variable possibilities return array( 'test' => true, 'message' => $usernameOrUserEnv, ); } $currentUser = get_current_user(); if (!empty($currentUser)) { //php.net comments indicate on Windows this returns the process owner rather than the file owner return array( 'test' => true, 'message' => $currentUser, ); } if (!empty($_SERVER['LOGON_USER'])) { //Last resort for IIS since POSIX functions are unavailable, Source: https://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx return array( 'test' => true, 'message' => $_SERVER['LOGON_USER'], ); } return array( 'test' => false, 'message' => __('Unknown', 'wordfence'), ); } public function hasOpenSSL() { return is_callable('openssl_open'); } public function openSSLVersion() { if (!function_exists('openssl_verify') || !defined('OPENSSL_VERSION_NUMBER') || !defined('OPENSSL_VERSION_TEXT')) { return false; } $compare = wfVersionCheckController::shared()->checkOpenSSLVersion(); return array( 'test' => $compare == wfVersionCheckController::VERSION_COMPATIBLE, 'message' => OPENSSL_VERSION_TEXT . ' (0x' . dechex(OPENSSL_VERSION_NUMBER) . ')', ); } public function hasCurl() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => version_compare($version['version'], $this->minVersion['cURL'], '>='), 'message' => $version['version'] . ' (0x' . dechex($version['version_number']) . ')', ); } public function curlFeatures() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => true, 'message' => '0x' . dechex($version['features']), 'infoOnly' => true, ); } public function curlHost() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => true, 'message' => $version['host'], 'infoOnly' => true, ); } public function curlProtocols() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => true, 'message' => implode(', ', $version['protocols']), 'infoOnly' => true, ); } public function curlSSLVersion() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => true, 'message' => $version['ssl_version'], 'infoOnly' => true, ); } public function curlLibZVersion() { if (!is_callable('curl_version')) { return false; } $version = curl_version(); return array( 'test' => true, 'message' => $version['libz_version'], 'infoOnly' => true, ); } public function displayErrors() { if (!is_callable('ini_get')) { return false; } $value = ini_get('display_errors'); $isOn = strtolower($value) == 'on' || $value == 1; return array( 'test' => !$isOn, 'message' => $isOn ? __('On', 'wordfence') : __('Off', 'wordfence'), 'infoOnly' => true, ); } public function connectToServer1() { return $this->_connectToServer('http'); } public function connectToServer2() { return $this->_connectToServer('https'); } public function _connectToServer($protocol) { $cronURL = admin_url('admin-ajax.php'); $cronURL = preg_replace('/^(https?:\/\/)/i', '://noc1.wordfence.com/scanptest/', $cronURL); $cronURL .= '?action=wordfence_doScan&isFork=0&cronKey=47e9d1fa6a675b5999999333'; $cronURL = $protocol . $cronURL; $result = wp_remote_post($cronURL, array( 'timeout' => 10, //Must be less than max execution time or more than 2 HTTP children will be occupied by scan 'blocking' => true, //Non-blocking seems to block anyway, so we use blocking // This causes cURL to throw errors in some versions since WordPress uses its own certificate bundle ('CA certificate set, but certificate verification is disabled') // 'sslverify' => false, 'headers' => array() )); if( (! is_wp_error($result)) && $result['response']['code'] == 200 && strpos($result['body'], "scanptestok") !== false){ return true; } $detail = ''; if (is_wp_error($result)) { $message = __('wp_remote_post() test to noc1.wordfence.com failed! Response was: ', 'wordfence') . $result->get_error_message(); } else { $message = __('wp_remote_post() test to noc1.wordfence.com failed! Response was: ', 'wordfence') . $result['response']['code'] . " " . $result['response']['message'] . "\n"; $message .= __('This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself.', 'wordfence') . "\n"; if (isset($result['http_response']) && is_object($result['http_response']) && method_exists($result['http_response'], 'get_response_object') && is_object($result['http_response']->get_response_object()) && property_exists($result['http_response']->get_response_object(), 'raw')) { $detail = str_replace("\r\n", "\n", $result['http_response']->get_response_object()->raw); } } return array( 'test' => false, 'message' => $message, 'detail' => $detail, ); } public function connectToSelf() { $adminAJAX = admin_url('admin-ajax.php?action=wordfence_testAjax'); $result = wp_remote_post($adminAJAX, array( 'timeout' => 10, //Must be less than max execution time or more than 2 HTTP children will be occupied by scan 'blocking' => true, //Non-blocking seems to block anyway, so we use blocking 'headers' => array() )); if ((!is_wp_error($result)) && $result['response']['code'] == 200 && strpos($result['body'], "WFSCANTESTOK") !== false) { $host = parse_url($adminAJAX, PHP_URL_HOST); if ($host !== null) { $ips = wfUtils::resolveDomainName($host); $ips = implode(', ', $ips); return array('test' => true, 'message' => sprintf('OK - %s', $ips)); } return true; } $detail = ''; if (is_wp_error($result)) { $message = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . $result->get_error_message(); } else { $message = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . $result['response']['code'] . " " . $result['response']['message'] . "\n"; $message .= __('This additional info may help you diagnose the issue. The response headers we received were:', 'wordfence') . "\n"; if (isset($result['http_response']) && is_object($result['http_response']) && method_exists($result['http_response'], 'get_response_object') && is_object($result['http_response']->get_response_object()) && property_exists($result['http_response']->get_response_object(), 'raw')) { $detail = str_replace("\r\n", "\n", $result['http_response']->get_response_object()->raw); } } return array( 'test' => false, 'message' => $message, 'detail' => $detail, ); } public function serverIP() { $serverIPs = wfUtils::serverIPs(); return array( 'test' => true, 'infoOnly' => true, 'message' => implode(',', $serverIPs), ); } public function howGetIPs() { $howGet = wfConfig::get('howGetIPs', false); if ($howGet) { if (empty($_SERVER[$howGet])) { return array( 'test' => false, 'message' => sprintf(/* translators: PHP super global key. */ __('We cannot read $_SERVER[%s]', 'wordfence'), $howGet), ); } return array( 'test' => true, 'message' => $howGet, ); } foreach (array('HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR') as $test) { if (!empty($_SERVER[$test])) { return array( 'test' => false, 'message' => __('Should be: ', 'wordfence') . $test ); } } return array( 'test' => true, 'message' => 'REMOTE_ADDR', ); } public function serverTime() { return array( 'test' => true, 'infoOnly' => true, 'message' => date('Y-m-d H:i:s', time()) . ' UTC', ); } public function wfTime() { try { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $response = $api->call('timestamp'); if (!is_array($response) || !isset($response['timestamp'])) { throw new Exception('Unexpected payload returned'); } } catch (Exception $e) { return array( 'test' => true, 'infoOnly' => true, 'message' => '-', ); } return array( 'test' => true, 'infoOnly' => true, 'message' => date('Y-m-d H:i:s', $response['timestamp']) . ' UTC', ); } public function wfTimeOffset() { $delta = wfUtils::normalizedTime() - time(); return array( 'test' => true, 'infoOnly' => true, 'message' => ($delta < 0 ? '-' : '+') . ' ' . wfUtils::makeDuration(abs($delta), true), ); } public function ntpTimeOffset() { if (class_exists('WFLSPHP52Compatability')) { $time = WFLSPHP52Compatability::ntp_time(); if ($time === false) { return array( 'test' => true, 'infoOnly' => true, 'message' => __('Blocked', 'wordfence'), ); } $delta = $time - time(); return array( 'test' => true, 'infoOnly' => true, 'message' => ($delta < 0 ? '-' : '+') . ' ' . wfUtils::makeDuration(abs($delta), true), ); } return array( 'test' => true, 'infoOnly' => true, 'message' => '-', ); } public function timeSourceInUse() { if (class_exists('WFLSPHP52Compatability')) { $time = WFLSPHP52Compatability::ntp_time(); if (WFLSPHP52Compatability::using_ntp_time()) { return array( 'test' => true, 'infoOnly' => true, 'message' => __('NTP', 'wordfence'), ); } else if (WFLSPHP52Compatability::using_wf_time()) { return array( 'test' => true, 'infoOnly' => true, 'message' => __('Wordfence Network', 'wordfence'), ); } return array( 'test' => true, 'infoOnly' => true, 'message' => __('Server Time', 'wordfence'), ); } return array( 'test' => true, 'infoOnly' => true, 'message' => '-', ); } public function wpTimeZone() { $tz = get_option('timezone_string'); if (empty($tz)) { $offset = get_option('gmt_offset'); $tz = 'UTC' . ($offset >= 0 ? '+' . $offset : $offset); } return array( 'test' => true, 'infoOnly' => true, 'message' => $tz, ); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfDashboard.php���������������������������������������������������������������������������������0000644�����������������00000020257�15233113245�0010254 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfDashboard { const SCAN_SUCCESS = 1; const SCAN_FAILED = 0; const SCAN_NEVER_RAN = -1; const SCAN_WARNINGS = 2; const FEATURE_ENABLED = 1; const FEATURE_DISABLED = 0; const FEATURE_PREMIUM = -1; public $scanLastCompletion; public $scanLastStatusMessage; public $scanLastStatus; public $notifications = array(); public $features = array(); public $lastGenerated; public $tdfCommunity; public $tdfPremium; public $ips24h; public $ips7d; public $ips30d; public $loginsSuccess; public $loginsFail; public $localBlocks; public $networkBlock24h; public $networkBlock7d; public $networkBlock30d; public $countriesLocal; public $countriesNetwork; public $wordfenceCentralConnected; public $wordfenceCentralConnectTime; public $wordfenceCentralConnectEmail; public $wordfenceCentralDisconnected; public $wordfenceCentralDisconnectTime; public $wordfenceCentralDisconnectEmail; public static function processDashboardResponse($data) { if (isset($data['notifications'])) { foreach ($data['notifications'] as $n) { if (!isset($n['id']) || !isset($n['priority']) || !isset($n['html'])) { continue; } new wfNotification($n['id'], $n['priority'], $n['html'], (isset($n['category']) ? $n['category'] : null)); } unset($data['notifications']); } if (isset($data['revoked'])) { foreach ($data['revoked'] as $r) { if (!isset($r['id'])) { continue; } $notification = wfNotification::getNotificationForID($r['id']); if ($notification !== null) { $notification->markAsRead(); } } unset($data['revoked']); } wfConfig::set_ser('dashboardData', $data); } public function __construct() { // Scan values $lastScanCompleted = wfConfig::get('lastScanCompleted'); if ($lastScanCompleted === false || empty($lastScanCompleted)) { $this->scanLastStatus = self::SCAN_NEVER_RAN; } else if ($lastScanCompleted == 'ok') { $this->scanLastStatus = self::SCAN_SUCCESS; $i = new wfIssues(); $this->scanLastCompletion = (int) wfScanner::shared()->lastScanTime(); $issueCount = $i->getIssueCount(); if ($issueCount) { $this->scanLastStatus = self::SCAN_WARNINGS; $this->scanLastStatusMessage = "{$issueCount} issue" . ($issueCount == 1 ? ' found' : 's found'); } } else { $this->scanLastStatus = self::SCAN_FAILED; $n = wfNotification::getNotificationForCategory('wfplugin_scan', false); if ($n !== null) { $this->scanLastStatusMessage = $n->html; } else { $this->scanLastStatusMessage = esc_html(substr($lastScanCompleted, 0, 100) . (strlen($lastScanCompleted) > 100 ? '...' : '')); } } // Notifications $this->notifications = wfNotification::notifications(); // Features $countryBlocking = self::FEATURE_PREMIUM; if (wfConfig::get('isPaid')) { $countryBlocking = self::FEATURE_DISABLED; $countryList = wfConfig::get('cbl_countries'); if (!empty($countryList) && (wfConfig::get('cbl_loggedInBlocked', false) || wfConfig::get('cbl_loginFormBlocked', false) || wfConfig::get('cbl_restOfSiteBlocked', false))) { $countryBlocking = self::FEATURE_ENABLED; } } $this->features = array(); //Deprecated $data = wfConfig::get_ser('dashboardData'); $lastChecked = wfConfig::get('lastDashboardCheck', 0); if ((!is_array($data) || (isset($data['generated']) && $data['generated'] + 3600 < time())) && $lastChecked + 3600 < time()) { $wp_version = wfUtils::getWPVersion(); $apiKey = wfConfig::get('apiKey'); $api = new wfAPI($apiKey, $wp_version); wfConfig::set('lastDashboardCheck', time()); try { $json = $api->getStaticURL('/stats.json'); $data = @json_decode($json, true); if ($json && is_array($data)) { self::processDashboardResponse($data); } } catch (Exception $e) { //Do nothing } } // Last Generated if (is_array($data) && isset($data['generated'])) { $this->lastGenerated = $data['generated']; } // TDF if (is_array($data) && isset($data['tdf']) && isset($data['tdf']['community'])) { $this->tdfCommunity = (int) $data['tdf']['community']; $this->tdfPremium = (int) $data['tdf']['premium']; } // Top IPs Blocked $activityReport = new wfActivityReport(); $this->ips24h = (array) $activityReport->getTopIPsBlocked(100, 1); foreach ($this->ips24h as &$r24h) { $r24h = (array) $r24h; if (empty($r24h['countryName'])) { $r24h['countryName'] = 'Unknown'; } } $this->ips7d = (array) $activityReport->getTopIPsBlocked(100, 7); foreach ($this->ips7d as &$r7d) { $r7d = (array) $r7d; if (empty($r7d['countryName'])) { $r7d['countryName'] = 'Unknown'; } } $this->ips30d = (array) $activityReport->getTopIPsBlocked(100, 30); foreach ($this->ips30d as &$r30d) { $r30d = (array) $r30d; if (empty($r30d['countryName'])) { $r30d['countryName'] = 'Unknown'; } } // Recent Logins $logins = wordfence::getLog()->getHits('logins', 'loginLogout', 0, 200); $this->loginsSuccess = array(); $this->loginsFail = array(); foreach ($logins as $l) { if ($l['fail']) { $this->loginsFail[] = array('t' => $l['ctime'], 'name' => $l['username'], 'ip' => $l['IP']); } else if ($l['action'] != 'logout') { $this->loginsSuccess[] = array('t' => $l['ctime'], 'name' => $l['username'], 'ip' => $l['IP']); } } // Local Attack Data $this->localBlocks = array(); $this->localBlocks[] = array('title' => __('Complex', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_COMPLEX, '24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_COMPLEX), '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_COMPLEX), '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_COMPLEX), ); $this->localBlocks[] = array('title' => __('Brute Force', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BRUTE_FORCE, '24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE), '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE), '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE), ); $this->localBlocks[] = array('title' => __('Blocklist', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BLACKLIST, '24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BLACKLIST), '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BLACKLIST), '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BLACKLIST), ); // Network Attack Data if (is_array($data) && isset($data['attackdata']) && isset($data['attackdata']['24h'])) { $this->networkBlock24h = $data['attackdata']['24h']; $this->networkBlock7d = $data['attackdata']['7d']; $this->networkBlock30d = $data['attackdata']['30d']; } // Blocked Countries $this->countriesLocal = (array) $activityReport->getTopCountriesBlocked(10, 7); foreach ($this->countriesLocal as &$rLocal) { $rLocal = (array) $rLocal; if (empty($rLocal['countryName'])) { $rLocal['countryName'] = 'Unknown'; } } if (is_array($data) && isset($data['countries']) && isset($data['countries']['7d'])) { $networkCountries = array(); foreach ($data['countries']['7d'] as $rNetwork) { $countryCode = $rNetwork['cd']; $countryName = $activityReport->getCountryNameByCode($countryCode); if (empty($countryName)) { $countryName = 'Unknown'; } $totalBlockCount = $rNetwork['ct']; $networkCountries[] = array('countryCode' => $countryCode, 'countryName' => $countryName, 'totalBlockCount' => $totalBlockCount); } $this->countriesNetwork = $networkCountries; } // Wordfence Central $this->wordfenceCentralConnected = wfCentral::_isConnected(); // This value is cached. $this->wordfenceCentralConnectTime = wfConfig::get('wordfenceCentralConnectTime'); $this->wordfenceCentralConnectEmail = wfConfig::get('wordfenceCentralConnectEmail'); $this->wordfenceCentralDisconnected = wfConfig::get('wordfenceCentralDisconnected'); $this->wordfenceCentralDisconnectTime = wfConfig::get('wordfenceCentralDisconnectTime'); $this->wordfenceCentralDisconnectEmail = wfConfig::get('wordfenceCentralDisconnectEmail'); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfModuleController.php��������������������������������������������������������������������������0000644�����������������00000001362�15233113245�0011652 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfModuleController { private $_optionIndexes; private $_optionBlocks; public static function shared() { static $_shared = false; if ($_shared === false) { $_shared = new wfModuleController(); } return $_shared; } public function __construct() { $this->_optionIndexes = array(); $this->_optionBlocks = array(); } public function __get($key) { switch ($key) { case 'optionIndexes': return $this->_optionIndexes; case 'optionBlocks': return $this->_optionBlocks; } throw new OutOfBoundsException('Invalid key'); } public function addOptionIndex($target, $text) { $this->_optionIndexes[$target] = $text; } public function addOptionBlock($html) { $this->_optionBlocks[] = $html; } }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_tools_livetraffic.php����������������������������������������������������������������������0000644�����������������00000114316�15233113245�0012572 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } $w = new wfConfig(); ?> <script type="application/javascript"> (function($) { $(function() { document.title = "<?php esc_attr_e('Live Traffic', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName; //Hash-based option block linking if (window.location.hash) { var hashes = WFAD.parseHashes(); var hash = hashes[hashes.length - 1]; var block = $('.wf-block[data-persistence-key="' + hash + '"]'); if (block.length) { if (!block.hasClass('wf-active')) { block.find('.wf-block-content').slideDown({ always: function() { block.addClass('wf-active'); $('html, body').animate({ scrollTop: block.offset().top - 100 }, 1000); } }); WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {}); } else { $('html, body').animate({ scrollTop: block.offset().top - 100 }, 1000); } history.replaceState('', document.title, window.location.pathname + window.location.search); } } }); })(jQuery); </script> <div class="wf-section-title"> <h2><?php esc_html_e('Live Traffic', 'wordfence') ?></h2> <span><?php echo wp_kses(sprintf( /* translators: URL to support page. */ __('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Live Traffic</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()))); ?> <i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span> </div> <?php if (wfConfig::liveTrafficEnabled() && wfConfig::get('liveActivityPauseEnabled')): ?> <div id="wfLiveTrafficOverlayAnchor"></div> <div id="wfLiveTrafficDisabledMessage"> <h2><?php esc_html_e('Live Updates Paused', 'wordfence') ?><br/> <small><?php esc_html_e('Click inside window to resume', 'wordfence') ?></small> </h2> </div> <?php endif ?> <p><?php esc_html_e("Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don't execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing.", 'wordfence') ?></p> <div class="wordfenceModeElem" id="wordfenceMode_liveTraffic"></div> <?php echo wfView::create('tools/options-group-live-traffic', array( 'stateKey' => 'live-traffic-options', 'showControls' => true, ))->render(); ?> <?php $overridden = false; if (!wfConfig::liveTrafficEnabled($overridden)): ?> <div id="wordfenceLiveActivitySecurityOnly"><p> <strong><?php esc_html_e('Traffic logging mode: Security-related traffic only', 'wordfence') ?><?php if ($overridden) { echo wp_kses(sprintf( /* translators: URL to support page. */ __(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()))); } ?>.</strong> <?php esc_html_e('Login and firewall activity will appear below.', 'wordfence') ?></p> </div> <?php else: ?> <div id="wordfenceLiveActivityAll"><p> <strong><?php esc_html_e('Traffic logging mode: All traffic', 'wordfence') ?><?php if ($overridden) { echo wp_kses(sprintf( /* translators: URL to support page. */ __(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()))); } ?>.</strong> <?php esc_html_e('Regular traffic and security-related traffic will appear below.', 'wordfence') ?></p> </div> <?php endif; ?> <div id="wf-live-traffic" class="wf-row<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? ' wf-live-traffic-display-expanded' : '' ?>"> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <div class="wf-block-content"> <div class="wf-container-fluid"> <div class="wf-row"> <div class="<?php echo wfStyle::contentClasses(); ?>"> <div id="wf-live-traffic-legend"> <ul> <li class="wfHuman"><?php esc_html_e('Human', 'wordfence') ?></li> <li class="wfBot"><?php esc_html_e('Bot', 'wordfence') ?></li> <li class="wfNotice"><?php esc_html_e('Warning', 'wordfence') ?></li> <li class="wfBlocked"><?php esc_html_e('Blocked', 'wordfence') ?></li> </ul> </div> <div class="wf-row wf-add-bottom-small"> <div class="wf-col-xs-12" id="wf-live-traffic-legend-wrapper"> <form data-bind="submit: reloadListings"> <ul class="wf-live-traffic-controls"> <li class="wf-live-traffic-filter"> <div class="wf-padding-no-left"><select id="wf-lt-preset-filters" data-bind="options: presetFiltersOptions, optionsText: presetFiltersOptionsText, value: selectedPresetFilter"></select></div>    <input id="wf-live-traffic-filter-show-advanced" class="wf-option-checkbox" data-bind="checked: showAdvancedFilters" type="checkbox"> <label for="wf-live-traffic-filter-show-advanced"> <?php esc_html_e('Show Advanced Filters', 'wordfence') ?> </label> </li> <li class="wf-live-traffic-show-expanded"> <ul class="wf-option wf-option-toggled-boolean-switch wf-option-no-spacing" data-option="liveTraf_displayExpandedRecords" data-enabled-value="1" data-disabled-value="0" data-original-value="<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? 1 : 0; ?>"> <li class="wf-boolean-switch<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? ' wf-active' : ''; ?>"><a href="#" class="wf-boolean-switch-handle"></a></li> <li class="wf-option-title wf-padding-add-left wf-no-right wf-padding-no-right"> <?php esc_html_e('Expand All Results', 'wordfence'); ?> </li> </ul> </li> </ul> <div data-bind="visible: showAdvancedFilters" id="wf-lt-advanced-filters"> <div class="wf-live-traffic-filter-detail"> <div> <div data-bind="foreach: filters"> <div class="wf-live-traffic-filter-item"> <div class="wf-live-traffic-filter-item-parameters"> <div> <select name="param[]" class="wf-lt-advanced-filters-param" data-bind="options: filterParamOptions, optionsText: filterParamOptionsText, value: selectedFilterParamOptionValue, optionsCaption: 'Filter...'"></select> </div> <div data-bind="visible: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() != 'bool'"> <select name="operator[]" class="wf-lt-advanced-filters-operator" data-bind="options: filterOperatorOptions, optionsText: filterOperatorOptionsText, value: selectedFilterOperatorOptionValue"></select> </div> <div data-bind="attr: {colSpan: (selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'bool' ? 2 : 1)}" class="wf-lt-advanced-filters-value-cell"> <span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'enum'"> <select data-bind="options: selectedFilterParamOptionValue().values, optionsText: selectedFilterParamOptionValue().optionsText, value: value"></select> </span> <span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'text'"> <input data-bind="value: value" type="text"> </span> <span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'bool'"> <label><?php esc_html_e('Yes', 'wordfence') ?> <input data-bind="checked: value" type="radio" value="1"></label> <label><?php esc_html_e('No', 'wordfence') ?> <input data-bind="checked: value" type="radio" value="0"></label> </span> </div> </div> <div> <!--<button data-bind="click: $root.removeFilter" type="button" class="wf-btn wf-btn-default">Remove</button> --> <a href="#" data-bind="click: $root.removeFilter" class="wf-live-traffic-filter-remove"><i class="wf-ion-trash-a"></i></a> </div> </div> </div> <div> <div class="wf-pad-small"> <button type="button" class="wf-btn wf-btn-default" data-bind="click: addFilter"> <?php esc_html_e('Add Filter', 'wordfence') ?> </button> </div> </div> </div> <div class="wf-form wf-form-horizontal"> <div class="wf-form-group"> <label for="wf-live-traffic-from" class="wf-col-sm-2"><?php esc_html_e('From:', 'wordfence') ?> </label> <div class="wf-col-sm-10"> <input placeholder="Start date" id="wf-live-traffic-from" type="text" class="wf-datetime" data-bind="value: startDate, datetimepicker: null, datepickerOptions: { timeFormat: 'hh:mm tt z' }"> <button data-bind="click: startDate('')" class="wf-btn wf-btn-default wf-btn-sm" type="button"><?php esc_html_e('Clear', 'wordfence') ?></button> </div> </div> <div class="wf-form-group"> <label for="wf-live-traffic-to" class="wf-col-sm-2"><?php esc_html_e('To:', 'wordfence')?> </label> <div class="wf-col-sm-10"> <input placeholder="End date" id="wf-live-traffic-to" type="text" class="wf-datetime" data-bind="value: endDate, datetimepicker: null, datepickerOptions: { timeFormat: 'hh:mm tt z' }"> <button data-bind="click: endDate('')" class="wf-btn wf-btn-default wf-btn-sm" type="button"><?php esc_html_e('Clear', 'wordfence') ?></button> </div> </div> <div class="wf-form-group"> <label for="wf-live-traffic-group-by" class="wf-col-sm-2"><?php esc_html_e('Group By:', 'wordfence') ?> </label> <div class="wf-col-sm-10"> <select id="wf-live-traffic-group-by" name="groupby" class="wf-lt-advanced-filters-groupby" data-bind="options: filterGroupByOptions, optionsText: filterGroupByOptionsText, value: groupBy, optionsCaption: 'None'"></select> </div> </div> </div> </div> </div> </form> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <div id="wf-live-traffic-group-by" class="wf-block" data-bind="if: groupBy(), visible: groupBy()"> <ul class="wf-filtered-traffic wf-block-list" data-bind="foreach: listings"> <li class="wf-flex-row wf-padding-add-top wf-padding-add-bottom"> <div class="wf-flex-row-1"> <!-- ko if: $root.groupBy().param() == 'ip' --> <div data-bind="if: loc()"> <span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span> <a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName, attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }" target="_blank" rel="noopener noreferrer"></a> </div> <div data-bind="if: !loc()"> <?php esc_html_e('An unknown location at IP', 'wordfence') ?> <span data-bind="text: IP" target="_blank" rel="noopener noreferrer"></span> </div> <div> <strong><?php esc_html_e('IP:', 'wordfence') ?></strong> <span data-bind="text: IP" target="_blank" rel="noopener noreferrer"></span> </div> <div> <span class="wfReverseLookup"><span data-bind="text: IP" style="display:none;"></span></span> </div> <!-- /ko --> <!-- ko if: $root.groupBy().param() == 'type' --> <div> <strong><?php esc_html_e('Type:', 'wordfence') ?></strong> <span data-bind="if: jsRun() == '1'"><?php esc_html_e('Human', 'wordfence') ?></span> <span data-bind="if: jsRun() == '0'"><?php esc_html_e('Bot', 'wordfence') ?></span> </div> <!-- /ko --> <!-- ko if: $root.groupBy().param() == 'user_login' --> <div> <strong><?php esc_html_e('Username:', 'wordfence') ?></strong> <span data-bind="text: username()"></span> </div> <!-- /ko --> <!-- ko if: $root.groupBy().param() == 'statusCode' --> <div> <strong><?php esc_html_e('HTTP Response Code:', 'wordfence') ?></strong> <span data-bind="text: statusCode()"></span> </div> <!-- /ko --> <!-- ko if: $root.groupBy().param() == 'action' --> <div> <strong><?php esc_html_e('Firewall Response:', 'wordfence') ?></strong> <span data-bind="text: firewallAction()"></span> </div> <!-- /ko --> <!-- ko if: $root.groupBy().param() == 'url' --> <div> <strong><?php esc_html_e('URL:', 'wordfence') ?></strong> <span data-bind="text: displayURL()"></span> </div> <!-- /ko --> <div> <strong><?php esc_html_e('Last Hit:', 'wordfence') ?></strong> <span data-bind="attr: { 'data-timestamp': ctime, text: <?php echo esc_attr(sprintf(json_encode(/* translators: Time ago. */ __('Last hit was %s ago.', 'wordfence')), '"+ ctime() + "')) ?> }" class="wfTimeAgo wfTimeAgo-timestamp"></span> </div> <!-- ko if: $root.groupBy().param() == 'ip' --> <div class="wf-add-top-small"> <span data-bind="if: blocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockIP"><?php esc_html_e('Unblock IP', 'wordfence') ?></a> </span> <span data-bind="if: rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockNetwork"><?php esc_html_e('Unblock range', 'wordfence') ?></a> </span> <span data-bind="if: !blocked() && !rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: blockIP"><?php esc_html_e('Block IP', 'wordfence') ?></a> </span> </div> <!-- /ko --> </div> <div class="wf-flex-row-0 wf-padding-add-left"> <?php echo sprintf(/* translators: Number of HTTP requests. */ esc_html__('%s hits', 'wordfence'), '<span class="wf-filtered-traffic-hits" data-bind="text: hitCount"></span>') ?> </div> </li> </ul> </div> <div id="wf-live-traffic-no-group-by" data-bind="if: !groupBy()"> <table class="wf-striped-table"> <thead> <tr> <th><?php esc_html_e('Type', 'wordfence') ?></th> <th><?php esc_html_e('Location', 'wordfence') ?></th> <th><?php esc_html_e('Page Visited', 'wordfence') ?></th> <th><?php esc_html_e('Time', 'wordfence') ?></th> <th><?php esc_html_e('IP Address', 'wordfence') ?></th> <th><?php esc_html_e('Hostname', 'wordfence') ?></th> <th><?php esc_html_e('Response', 'wordfence') ?></th> <th><?php esc_html_e('View', 'wordfence') ?></th> </tr> </thead> <tbody id="wf-lt-listings" class="wf-filtered-traffic" data-bind="foreach: listings"> <tr data-bind="click: toggleDetails, css: { odd: ($index() % 2 == 1), even: ($index() % 2 == 0), 'wf-details-open': showDetails, highlighted: highlighted }" class="wf-summary-row"> <td class="wf-center"> <span data-bind="attr: { 'class': cssClasses }"></span> </td> <td> <span class="wf-flex-horizontal" data-bind="if: loc()"> <span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span> <span class="wf-padding-add-left-small" data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName"></span> </span> <span class="wf-flex-horizontal" data-bind="if: !loc()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64.22 64.37" class="wf-flag wf-flag-unspecified"><path d="M64,28.21a30.32,30.32,0,0,0-5.8-14.73A31.6,31.6,0,0,0,37.43.56C35.7.26,33.94.18,32.2,0h-.35C30.22.18,28.58.3,27,.55A32.14,32.14,0,0,0,.2,35.61,31.4,31.4,0,0,0,10.4,55.87a31.24,31.24,0,0,0,25,8.33,30.5,30.5,0,0,0,18.94-8.79C62,47.94,65.15,38.8,64,28.21ZM57.21,44.68a23.94,23.94,0,0,1-2.3-5.08c-.66-2.45-2.27-.08-2.4,1.52s-1.2,2.8-3.33.4-2.54-1.87-3.2-1.87-1.87,1.6-1.6,9.07c.19,5.33,2.29,6.18,3.67,6.56a27.16,27.16,0,0,1-8.78,4A27.55,27.55,0,0,1,7.85,45.13C2.27,34.4,5,22.26,10.67,15.57c.15,1.21.3,2.29.43,3.37a27.63,27.63,0,0,1-.52,8.79,4.39,4.39,0,0,0,.08,1.94,1.3,1.3,0,0,0,.94.76c.27,0,.75-.41.86-.73a8.27,8.27,0,0,0,.27-1.86c0-.44,0-.89.07-1.58a10.67,10.67,0,0,1,1.06.86c.7.7,1.4,1.4,2,2.15a2.11,2.11,0,0,1,.56,1.21,3.44,3.44,0,0,0,.83,2.13,12.21,12.21,0,0,1,1.07,2.57c.14.37.17.78.33,1.13a2,2,0,0,0,1.8,1.32c1,.07,1.32.44,1.46,1.43l-.74.08c-1.17.11-1.75.65-1.71,1.83a8.43,8.43,0,0,0,2.69,6c.48.45,1,.87,1.46,1.33a3.35,3.35,0,0,1,.92,3.75,12.18,12.18,0,0,0-.69,2.09,6,6,0,0,0,.06,2.23c.18.75.1,2.37.86,2.24,1.36-.24,2.14,0,2.25-1.49a1.22,1.22,0,0,0-.08-.6c-.4-1.42,1.42-5.47,2.52-6.2a27.11,27.11,0,0,0,2.73-2,3.6,3.6,0,0,0,1.26-4,3.22,3.22,0,0,1,1.14-3.59,4.54,4.54,0,0,0,1.71-3.65c-.08-1.53-1.07-2.63-2.37-2.47a9.21,9.21,0,0,0-1.87.59,20.62,20.62,0,0,1-2.72.9c-1.31.23-2.11-.62-2.69-1.66-.47-.83-.63-.9-1.44-.38s-1.37.89-2.08,1.28S22,35.58,21.45,35a5.79,5.79,0,0,0-1.24-.88c-.31-.19-.73-.24-1-.48s-.8-.8-.75-1.15a1.69,1.69,0,0,1,.95-1.1,14.36,14.36,0,0,1,2.29-.51,7.33,7.33,0,0,0,1.22-.33c.52-.21.5-.56.1-.89a3.26,3.26,0,0,0-.69-.37l-3.52-1.39a4.74,4.74,0,0,1-.84-.43c-.74-.49-.83-1-.16-1.61,2.64-2.33,5.72-3,8.45.08.84,1,1.42,2.16,2.22,3.16a12.5,12.5,0,0,0,2.15,2.15,1.62,1.62,0,0,0,1.44.09,1.15,1.15,0,0,0,.29-1.56,8.43,8.43,0,0,0-.86-1.41,5.16,5.16,0,0,1,1.59-7.52,4.38,4.38,0,0,0,2.53-2.58c-.58.16-1,.26-1.42.39-2.3.71-.7-1,.36-1.31.65-.18-.58-.67-.58-.67s.82-.28,1.69-.65a6.85,6.85,0,0,0,1.7-.94,3.79,3.79,0,0,0,.66-1.17l-.16-.18-1.83.24c-1,.11-1.27-.09-1.37-1.14a1,1,0,0,0-1.48-.73c-.45.25-.85.61-1.29.9-1,.66-1.78.39-2.19-.75-.23-.68-.57-.81-1.19-.42-.31.18-.58.47-.89.64a11.53,11.53,0,0,1-1.62.79c-.55.19-1.21.33-1.58-.27a1.25,1.25,0,0,1,.46-1.68A14.78,14.78,0,0,1,27,10c1-.56,2.07-1,3-1.65a1.78,1.78,0,0,0,.79-2.07.88.88,0,0,0-1.37-.65c-.56.28-1.06.72-1.63,1a2.81,2.81,0,0,1-1.41.08c-.17,0-.35-.49-.35-.76s.31-.43.51-.46c1.4-.22,2.81-.41,4.22-.57a.76.76,0,0,1,.58.25,6.84,6.84,0,0,0,3.6,2.15c1.15.34,1.31.18,1.47-1,1.48-.34,3-1,4.46-.09A14.4,14.4,0,0,1,43.14,8c.18.17.07.7,0,1s-.36.87-.48,1.33a1.2,1.2,0,0,0,1.26,1.56c.29,0,.57-.07.86-.08.85,0,1.14.28,1.07,1.13-.11,1.21.09,1.35,1.31,1.15a2.07,2.07,0,0,1,1.67.64c1.14.86,2,.54,2.33-.86,0-.16,0-.32.06-.47.14-.63.49-.79.92-.35.9,1,1.74,2,2.66,3a3,3,0,0,0-.8,3.07,5.19,5.19,0,0,1-.55,3.27A24.63,24.63,0,0,0,52.2,25.5c-.45,1.57.06,2.3,1.66,2.65s1.78.64,1.84,2.14a4.85,4.85,0,0,0,2.92,4.35c.4.19.82.34,1.23.51a25.22,25.22,0,0,1-2.64,9.53Z"/></svg> <span class="wf-padding-add-left-small"><?php esc_html_e('Unspecified', 'wordfence') ?></span> </span> </td> <td> <span class="wf-lt-url wf-split-word-xs" data-bind="text: displayURLShort, attr: { title: URL }"></span> </td> <td class="wf-nowrap" data-bind="text: timestamp"></td> <td> <span data-bind="attr: { title: IP }, text: $root.trimIP(IP())"></span> </td> <td> <span class="wfReverseLookup" data-reverse-lookup-template="wf-live-traffic-hostname-template"> <span data-bind="text: IP" style="display:none;"></span> </span> </td> <td data-bind="text: statusCode"></td> <td class="wf-live-traffic-show-details"> <span class="wf-ion-eye"></span> <span class="wf-ion-eye-disabled"></span> </td> </tr> <tr data-bind="css: { 'wf-details-visible': showDetails, 'wf-details-hidden': !(showDetails()), highlighted: highlighted, odd: ($index() % 2 == 1), even: ($index() % 2 == 0) }" class="wf-details-row"> <td colspan="8" data-bind="attr: { id: ('wfActEvent_' + id()) }" class="wf-live-traffic-details"> <div class="wf-live-traffic-activity-detail-wrapper"> <div class="wf-live-traffic-activity-type"> <div data-bind="attr: { 'class': typeIconClass }"></div> <div data-bind="text: typeText"></div> </div> <div class="wf-live-traffic-activity-detail"> <h2><?php esc_html_e('Activity Detail', 'wordfence') ?></h2> <div> <span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> <span data-bind="attr: {'data-userid': user().ID}" class="wfAvatar"></span> <a data-bind="attr: { href: user().editLink }, text: user().display_name" target="_blank" rel="noopener noreferrer"></a> </span> <span data-bind="if: loc()"> <span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> in</span> <span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span> <a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName, attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }" target="_blank" rel="noopener noreferrer"></a> </span> <span data-bind="if: !loc()"> <span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> <?php echo wp_kses(sprintf( /* translators: 1. User agent. 2. IP address */ __('%1$s at an unknown location at IP %2$s', 'wordfence'), '', '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()))) ?> </span> <span data-bind="if: !(action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user())"> <?php echo wp_kses(sprintf( /* translators: IP address */ __('An unknown location at IP %s', 'wordfence'), '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()))) ?> </span> </span> <span data-bind="if: referer()"> <span data-bind="if: extReferer()"> <?php echo wp_kses(sprintf( /* translators: 1. User agent. 2. HTTP referer. 3. Server response. */ __('%1$s arrived from %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()))) ?> </span> <span data-bind="if: !extReferer()"> <?php echo wp_kses(sprintf( /* translators: 1. User agent. 2. HTTP referer. 3. Server response. */ __('%1$s left %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()))) ?> </span> </span> <span data-bind="if: statusCode() == 404"> <?php echo wp_kses(sprintf( /* translators: User agent. */ __('%s tried to access a <span style="color: #F00;">non-existent page</span>', 'wordfence'), ''), array('span'=>array('style'=>array()))) ?> </span> <span data-bind="if: statusCode() == 200 && !action()"> <?php echo esc_html(sprintf( /* translators: 1. User agent. 2. URL of page visited. */ __('%1$s visited %2$s', 'wordfence'), '', '')) ?> </span> <span data-bind="if: (statusCode() == 301 || statusCode() == 302) && !action()"> <?php echo esc_html(sprintf( /* translators: 1. User agent. 2. URL of page visited. */ __('%1$s was redirected when visiting %2$s', 'wordfence'), '', '')) ?> </span> <span data-bind="if: (statusCode() == 301 || statusCode() == 302) && action() && firewallAction()"> <?php echo wp_kses(sprintf( /* translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago. */ __('%1$s was %2$s at %3$s', 'wordfence'), '', '<span data-bind="text: firewallAction"></span>', ''), array('span'=>array('data-bind'=>array()))) ?> </span> <span data-bind="if: ((statusCode() == 403 || statusCode() == 503) && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername')"> <?php printf( /* translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago. */ esc_html(__('%1$s was %2$s at %3$s', 'wordfence')), '', '<span data-bind="text: firewallAction" style="color: #F00;"></span>', '') ?> </span> <span data-bind="if: action() == 'loginOK'"> <?php echo wp_kses(sprintf( /* translators: 1. User agent. 2. WordPress username. */ __('%1$s logged in successfully as "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('strong'=>array('data-bind'=>array()))) ?> </span> <span data-bind="if: action() == 'logout'"> <?php echo esc_html(sprintf(/* translators: WordPress username. */ __('%s logged out successfully.', 'wordfence'), '')) ?> </span> <span data-bind="if: action() == 'lostPassword'"> <?php echo esc_html(sprintf(/* translators: WordPress username. */__('%s requested a password reset.', 'wordfence'), '')) ?> </span> <span data-bind="if: action() == 'loginFailValidUsername'"> <?php echo wp_kses(sprintf(/* translators: 1. User agent. 2. WordPress username. */ __('%1$s attempted a <span style="color: #F00;">failed login</span> as "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('span'=>array('style'=>array()), 'strong'=>array('data-bind'=>array()))) ?> </span> <span data-bind="if: action() == 'loginFailInvalidUsername'"> <?php echo wp_kses(sprintf(/* translators: 1. User agent. 2. WordPress username. */ __('%1$s attempted a <span style="color: #F00;">failed login</span> using an invalid username "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('span'=>array('style'=>array()), 'strong'=>array('data-bind'=>array()))) ?> </span> <span data-bind="if: action() == 'user:passwordReset'"> <?php echo esc_html(sprintf(/* translators: WordPress username. */ __('%s changed their password.', 'wordfence'), '')) ?> </span> <a class="wf-lt-url wf-split-word-xs" data-bind="text: displayURL, attr: { href: URL, title: URL }" target="_blank" rel="noopener noreferrer"></a> </div> <div> <span data-bind="text: timeAgo, attr: { 'data-timestamp': ctime }" class="wfTimeAgo-timestamp"></span>   </div> <div> <strong><?php esc_html_e('IP:', 'wordfence') ?></strong> <span data-bind="text: IP"></span> <span class="wfReverseLookup"> <span data-bind="text: IP" style="display:none;"></span> </span> <span data-bind="if: blocked()"> <a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn" data-bind="click: unblockIP"> <?php esc_html_e('Unblock IP', 'wordfence') ?> </a> </span> <span data-bind="if: rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn" data-bind="click: unblockNetwork"><?php esc_html_e('Unblock range', 'wordfence') ?> </a> </span> <span data-bind="if: !blocked() && !rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn" data-bind="click: blockIP"> <?php esc_html_e('Block IP', 'wordfence') ?> </a> </span> </div> <div data-bind="visible: (jQuery.inArray(parseInt(statusCode(), 10), [403, 503, 404]) !== -1 || action() == 'loginFailValidUsername' || action() == 'loginFailInvalidUsername')"> <strong><?php esc_html_e('Human/Bot:', 'wordfence') ?></strong> <span data-bind="text: (jsRun() === '1' ? <?php echo esc_attr(json_encode(__('Human', 'wordfence'))) ?> : <?php echo esc_attr(json_encode(__('Bot', 'wordfence'))) ?>)"></span> </div> <div class="wf-split-word" data-bind="text: UA"></div> <div class="wf-live-traffic-actions"> <span data-bind="if: blocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockIP"> <?php esc_html_e('Unblock IP', 'wordfence') ?> </a> </span> <span data-bind="if: rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockNetwork"> <?php esc_html_e('Unblock range', 'wordfence') ?> </a> </span> <span data-bind="if: !blocked() && !rangeBlocked()"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: blockIP"> <?php esc_html_e('Block IP', 'wordfence') ?> </a> </span> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: showWhoisOverlay" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Run Whois', 'wordfence') ?></a> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: showRecentTraffic" target="_blank" rel="noopener noreferrer"> <span class="wf-hidden-xs"><?php esc_html_e('See recent traffic', 'wordfence'); ?></span><span class="wf-visible-xs"><?php esc_html_e('Recent', 'wordfence'); ?></span> </a> <span data-bind="if: action() == 'blocked:waf'"> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: function () { $root.whitelistWAFParamKey(actionData().path, actionData().paramKey, actionData().failedRules) }" title="<?php esc_attr_e('If this is a false positive, you can exclude this parameter from being filtered by the firewall', 'wordfence') ?>"> <?php esc_html_e('Add Param to Firewall Allowlist', 'wordfence') ?> </a> <?php if (WFWAF_DEBUG): ?> <a class="wf-btn wf-btn-default wf-btn-sm" data-bind="attr: { href: '<?php echo esc_js(home_url()) ?>?_wfsf=debugWAF&nonce=' + WFAD.nonce + '&hitid=' + id() }" target="_blank" rel="noopener noreferrer"> Debug this Request </a> <?php endif ?> </span> </div> </div> </div> </td> </tr> </tbody> </table> </div> <div class="wf-live-traffic-none" data-bind="if: listings().length == 0"> <?php esc_html_e('No requests to report yet.', 'wordfence') ?> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <script type="application/javascript"> (function($) { $(function() { $('.wf-option.wf-option-toggled-boolean-switch[data-option="liveTraf_displayExpandedRecords"]').on('change', function() { delete WFAD.pendingChanges['liveTraf_displayExpandedRecords']; var isOn = $(this).find('.wf-boolean-switch').hasClass('wf-active'); WFAD.setOption($(this).data('option'), (isOn ? $(this).data('enabledValue') : $(this).data('disabledValue')), function() { $('#wf-live-traffic').toggleClass('wf-live-traffic-display-expanded', isOn); }); }); $(document).on('heartbeat-tick', function(heartbeat) { WFAD.serverMicrotime = heartbeat.timeStamp / 1000; WFAD.updateTimeAgo(); }) }); })(jQuery); </script> <div id="wf-live-traffic-util-overlay-wrapper" style="display: none"> <div class="wf-live-traffic-util-overlay"> <div class="wf-live-traffic-util-overlay-header"></div> <div class="wf-live-traffic-util-overlay-body"></div> <span class="wf-live-traffic-util-overlay-close wf-ion-android-close"></span> </div> </div> <div id="wfrawhtml"></div> <script type="text/x-jquery-template" id="wf-live-traffic-hostname-template"> <span title="${ip}">${(ip && ip.length > 22) ? '...' + ip.substring(ip.length - 22) : ip}</span> </script> <?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.tour1 = function() { WFAD.tour('wfNewTour1', 'wf-live-traffic', 'bottom', 'bottom', null, WFAD.tourComplete); }; WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_LIVE_TRAFFIC); ?>'); }; <?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?> if (!WFAD.isSmallScreen) { WFAD.tour1(); } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfNewTour1"> <div> <h3><?php esc_html_e('Live Traffic', 'wordfence'); ?></h3> <p><?php echo wp_kses(__('Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch.', 'wordfence'), array('strong'=>array())); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?> <?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.tour1 = function() { WFAD.tour('wfUpgradeTour1', 'wf-live-traffic', 'bottom', 'bottom', null, WFAD.tourComplete); }; WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_LIVE_TRAFFIC); ?>'); }; <?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?> if (!WFAD.isSmallScreen) { WFAD.tour1(); } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfUpgradeTour1"> <div> <h3><?php esc_html_e('Live Traffic', 'wordfence'); ?></h3> <p><?php echo wp_kses(__('Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch. New installations will only log security-related traffic by default, though your previous setting has been preserved.', 'wordfence'), array('strong'=>array())); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfConfig.php������������������������������������������������������������������������������������0000644�����������������00000253521�15233113245�0007574 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfConfig { const TABLE_EXISTS_OPTION = 'wordfence_installed'; const AUTOLOAD = 'yes'; const DONT_AUTOLOAD = 'no'; const TYPE_BOOL = 'boolean'; const TYPE_INT = 'integer'; const TYPE_FLOAT = 'double'; const TYPE_DOUBLE = 'double'; const TYPE_STRING = 'string'; const TYPE_ARRAY = 'array'; const TYPE_JSON = 'json'; const OPTIONS_TYPE_GLOBAL = 'global'; const OPTIONS_TYPE_FIREWALL = 'firewall'; const OPTIONS_TYPE_BLOCKING = 'blocking'; const OPTIONS_TYPE_SCANNER = 'scanner'; const OPTIONS_TYPE_TWO_FACTOR = 'twofactor'; const OPTIONS_TYPE_LIVE_TRAFFIC = 'livetraffic'; const OPTIONS_TYPE_DIAGNOSTICS = 'diagnostics'; const OPTIONS_TYPE_ALL = 'all'; public static $diskCache = array(); private static $diskCacheDisabled = false; //enables if we detect a write fail so we don't keep calling stat() private static $cacheDisableCheckDone = false; private static $tableExists = true; private static $cache = array(); private static $DB = false; private static $tmpFileHeader = "<?php\n/* Wordfence temporary file security header */\necho \"Nothing to see here!\\n\"; exit(0);\n?>"; private static $tmpDirCache = false; public static $defaultConfig = array( //All exportable boolean options "checkboxes" => array( "alertOn_update" => array('value' => false, 'autoload' => self::AUTOLOAD), "alertOn_scanIssues" => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_throttle" => array('value' => false, 'autoload' => self::AUTOLOAD), "alertOn_block" => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_loginLockout" => array('value' => true, 'autoload' => self::AUTOLOAD), 'alertOn_breachLogin' => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_lostPasswdForm" => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_adminLogin" => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_firstAdminLoginOnly" => array('value' => false, 'autoload' => self::AUTOLOAD), "alertOn_nonAdminLogin" => array('value' => false, 'autoload' => self::AUTOLOAD), "alertOn_firstNonAdminLoginOnly" => array('value' => false, 'autoload' => self::AUTOLOAD), "alertOn_wordfenceDeactivated" => array('value' => true, 'autoload' => self::AUTOLOAD), "alertOn_wafDeactivated" => array('value' => true, 'autoload' => self::AUTOLOAD), "liveTrafficEnabled" => array('value' => false, 'autoload' => self::AUTOLOAD), "advancedCommentScanning" => array('value' => true, 'autoload' => self::AUTOLOAD), "checkSpamIP" => array('value' => true, 'autoload' => self::AUTOLOAD), "spamvertizeCheck" => array('value' => true, 'autoload' => self::AUTOLOAD), "liveTraf_ignorePublishers" => array('value' => true, 'autoload' => self::AUTOLOAD), "liveTraf_displayExpandedRecords" => array('value' => false, 'autoload' => self::DONT_AUTOLOAD), "scheduledScansEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "lowResourceScansEnabled" => array('value' => false, 'autoload' => self::AUTOLOAD), "scansEnabled_checkGSB" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_checkHowGetIPs" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_core" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_themes" => array('value' => false, 'autoload' => self::AUTOLOAD), "scansEnabled_plugins" => array('value' => false, 'autoload' => self::AUTOLOAD), "scansEnabled_coreUnknown" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_malware" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_fileContents" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_fileContentsGSB" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_checkReadableConfig" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_suspectedFiles" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_posts" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_comments" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_suspiciousOptions" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_passwds" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_diskSpace" => array('value' => true, 'autoload' => self::AUTOLOAD), 'scansEnabled_wafStatus' => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_options" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_wpscan_fullPathDisclosure" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_wpscan_directoryListingEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_scanImages" => array('value' => false, 'autoload' => self::AUTOLOAD), "scansEnabled_highSense" => array('value' => false, 'autoload' => self::AUTOLOAD), "scansEnabled_oldVersions" => array('value' => true, 'autoload' => self::AUTOLOAD), "scansEnabled_suspiciousAdminUsers" => array('value' => true, 'autoload' => self::AUTOLOAD), "liveActivityPauseEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "firewallEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "autoBlockScanners" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSecurityEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_strongPasswds_enabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_breachPasswds_enabled" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_lockInvalidUsers" => array('value' => false, 'autoload' => self::AUTOLOAD), "loginSec_maskLoginErrors" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_blockAdminReg" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_disableAuthorScan" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_disableApplicationPasswords" => array('value' => true, 'autoload' => self::AUTOLOAD), "loginSec_disableOEmbedAuthor" => array('value' => false, 'autoload' => self::AUTOLOAD), 'loginSec_requireAdminTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD), "notification_updatesNeeded" => array('value' => true, 'autoload' => self::AUTOLOAD), "notification_securityAlerts" => array('value' => true, 'autoload' => self::AUTOLOAD), "notification_promotions" => array('value' => true, 'autoload' => self::AUTOLOAD), "notification_blogHighlights" => array('value' => true, 'autoload' => self::AUTOLOAD), "notification_productUpdates" => array('value' => true, 'autoload' => self::AUTOLOAD), "notification_scanStatus" => array('value' => true, 'autoload' => self::AUTOLOAD), "other_hideWPVersion" => array('value' => false, 'autoload' => self::AUTOLOAD), "other_blockBadPOST" => array('value' => false, 'autoload' => self::AUTOLOAD), "other_scanComments" => array('value' => true, 'autoload' => self::AUTOLOAD), "other_pwStrengthOnUpdate" => array('value' => true, 'autoload' => self::AUTOLOAD), "other_WFNet" => array('value' => true, 'autoload' => self::AUTOLOAD), "other_scanOutside" => array('value' => false, 'autoload' => self::AUTOLOAD), "other_bypassLitespeedNoabort" => array('value' => false, 'autoload' => self::AUTOLOAD), "deleteTablesOnDeact" => array('value' => false, 'autoload' => self::AUTOLOAD), "autoUpdate" => array('value' => false, 'autoload' => self::AUTOLOAD), "startScansRemotely" => array('value' => false, 'autoload' => self::AUTOLOAD), "disableConfigCaching" => array('value' => false, 'autoload' => self::AUTOLOAD), "addCacheComment" => array('value' => false, 'autoload' => self::AUTOLOAD), "disableCodeExecutionUploads" => array('value' => false, 'autoload' => self::AUTOLOAD), "allowHTTPSCaching" => array('value' => false, 'autoload' => self::AUTOLOAD), "debugOn" => array('value' => false, 'autoload' => self::AUTOLOAD), 'email_summary_enabled' => array('value' => true, 'autoload' => self::AUTOLOAD), 'email_summary_dashboard_widget_enabled' => array('value' => true, 'autoload' => self::AUTOLOAD), 'ssl_verify' => array('value' => true, 'autoload' => self::AUTOLOAD), 'ajaxWatcherDisabled_front' => array('value' => false, 'autoload' => self::AUTOLOAD), 'ajaxWatcherDisabled_admin' => array('value' => false, 'autoload' => self::AUTOLOAD), 'wafAlertOnAttacks' => array('value' => true, 'autoload' => self::AUTOLOAD), 'disableWAFIPBlocking' => array('value' => false, 'autoload' => self::AUTOLOAD), 'showAdminBarMenu' => array('value' => true, 'autoload' => self::AUTOLOAD), 'displayTopLevelOptions' => array('value' => true, 'autoload' => self::AUTOLOAD), 'displayTopLevelBlocking' => array('value' => false, 'autoload' => self::AUTOLOAD), 'displayTopLevelLiveTraffic' => array('value' => false, 'autoload' => self::AUTOLOAD), 'displayAutomaticBlocks' => array('value' => true, 'autoload' => self::AUTOLOAD), 'allowLegacy2FA' => array('value' => false, 'autoload' => self::AUTOLOAD), 'wordfenceI18n' => array('value' => true, 'autoload' => self::AUTOLOAD), ), //All exportable variable type options "otherParams" => array( "scan_include_extra" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "alertEmails" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "liveTraf_ignoreUsers" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "liveTraf_ignoreIPs" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "liveTraf_ignoreUA" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "maxMem" => array('value' => 256, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'scan_exclude' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'scan_maxIssues' => array('value' => 1000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'scan_maxDuration' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'whitelisted' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'whitelistedServices' => array('value' => '{}', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_JSON)), 'bannedURLs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxExecutionTime' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'howGetIPs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'actUpdateInterval' => array('value' => 2, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'alert_maxHourly' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'loginSec_userBlacklist' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'liveTraf_maxRows' => array('value' => 2000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'liveTraf_maxAge' => array('value' => 30, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), "neverBlockBG" => array('value' => "neverBlockVerified", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), "loginSec_countFailMins" => array('value' => 240, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), "loginSec_lockoutMins" => array('value' => 240, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'loginSec_strongPasswds' => array('value' => 'pubs', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'loginSec_breachPasswds' => array('value' => 'admins', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'loginSec_maxFailures' => array('value' => 20, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'loginSec_maxForgotPasswd' => array('value' => 20, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'maxGlobalRequests' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxGlobalRequests_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxRequestsCrawlers' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxRequestsCrawlers_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxRequestsHumans' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'maxRequestsHumans_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'max404Crawlers' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'max404Crawlers_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'max404Humans' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'max404Humans_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'blockedTime' => array('value' => 300, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'email_summary_interval' => array('value' => 'weekly', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'email_summary_excluded_directories' => array('value' => 'wp-content/cache,wp-content/wflogs', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'allowed404s' => array('value' => "/favicon.ico\n/apple-touch-icon*.png\n/*@2x.png\n/browserconfig.xml", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'wafAlertWhitelist' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'wafAlertInterval' => array('value' => 600, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'wafAlertThreshold' => array('value' => 100, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'howGetIPs_trusted_proxies' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'scanType' => array('value' => wfScanner::SCAN_TYPE_STANDARD, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'manualScanType' => array('value' => wfScanner::MANUAL_SCHEDULING_ONCE_DAILY, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'schedStartHour' => array('value' => -1, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'schedMode' => array('value' => wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'cbl_loggedInBlocked' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'cbl_action' => array('value' => 'block', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'cbl_redirURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'cbl_bypassRedirURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'cbl_bypassRedirDest' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'cbl_bypassViewURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'loginSec_enableSeparateTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'blockCustomText' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'alertOn_severityLevel' => array('value' => wfIssues::SEVERITY_LOW, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), ), //Set as default only, not included automatically in the settings import/export or options page saving 'defaultsOnly' => array( "apiKey" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'keyType' => array('value' => wfAPI::KEY_TYPE_FREE, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'isPaid' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'hasKeyConflict' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'betaThreatDefenseFeed' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'timeoffset_wf_updated' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'cacheType' => array('value' => 'disabled', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'detectProxyRecommendation' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'dismissAutoPrependNotice' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'onboardingAttempt1' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'onboardingAttempt2' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'onboardingAttempt3' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'onboardingAttempt3Initial' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_dashboard' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_firewall' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_scan' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_blocking' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_livetraffic' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsNewTour_loginsecurity' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_dashboard' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_firewall' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_scan' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_blocking' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_livetraffic' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'needsUpgradeTour_loginsecurity' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'supportContent' => array('value' => '{}', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'whitelistPresets' => array('value' => '{}', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'whitelistHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)), 'autoUpdateAttempts' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'lastPermissionsTemplateCheck' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 'previousWflogsFileList' => array('value' => '[]', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 'diagnosticsWflogsRemovalHistory' => array('value' => '[]', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), ), ); public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue', 'suspiciousAdminUsernames', 'wordpressPluginVersions', 'wordpressThemeVersions'); // Configuration keypairs that can be set from Central. private static $wfCentralInternalConfig = array( 'wordfenceCentralUserSiteAuthGrant', 'wordfenceCentralConnected', 'wordfenceCentralPluginAlertingDisabled', ); public static function setDefaults() { foreach (self::$defaultConfig['checkboxes'] as $key => $config) { $val = $config['value']; $autoload = $config['autoload']; if (self::get($key) === false) { self::set($key, $val ? '1' : '0', $autoload); } } foreach (self::$defaultConfig['otherParams'] as $key => $config) { $val = $config['value']; $autoload = $config['autoload']; if (self::get($key) === false) { self::set($key, $val, $autoload); } } foreach (self::$defaultConfig['defaultsOnly'] as $key => $config) { $val = $config['value']; $autoload = $config['autoload']; if (self::get($key) === false) { if ($val === false) { self::set($key, '0', $autoload); } else if ($val === true) { self::set($key, '1', $autoload); } else { self::set($key, $val, $autoload); } } } self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16)); self::set('longEncKey', bin2hex(wfWAFUtils::random_bytes(32))); if (self::get('maxMem', false) === false) { self::set('maxMem', '256'); } if (self::get('other_scanOutside', false) === false) { self::set('other_scanOutside', 0); } if (self::get('email_summary_enabled')) { wfActivityReport::scheduleCronJob(); } else { wfActivityReport::disableCronJob(); } } public static function loadAllOptions() { global $wpdb; $options = wp_cache_get('alloptions', 'wordfence'); if (!$options) { $table = self::table(); self::updateTableExists(); $suppress = $wpdb->suppress_errors(); if (!($rawOptions = $wpdb->get_results("SELECT name, val FROM {$table} WHERE autoload = 'yes'"))) { $rawOptions = $wpdb->get_results("SELECT name, val FROM {$table}"); } $wpdb->suppress_errors($suppress); $options = array(); foreach ((array) $rawOptions as $o) { if (in_array($o->name, self::$serializedOptions)) { $val = maybe_unserialize($o->val); if ($val) { $options[$o->name] = $val; } } else { $options[$o->name] = $o->val; } } wp_cache_add_non_persistent_groups('wordfence'); wp_cache_add('alloptions', $options, 'wordfence'); } return $options; } /** * Bases the table's existence on the option specified by wfConfig::TABLE_EXISTS_OPTION for performance. We only * set that option just prior to deletion in the uninstall handler and after table creation in the install handler. */ public static function updateTableExists($change = null) { if ($change !== null) { self::$tableExists = !!$change; update_option(wfConfig::TABLE_EXISTS_OPTION, self::$tableExists); return; } self::$tableExists = true; $optionValue = get_option(wfConfig::TABLE_EXISTS_OPTION, null); if ($optionValue === null) { //No value, set an initial one global $wpdb; self::updateTableExists(!!$wpdb->get_col($wpdb->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s', self::table()))); return; } if (!$optionValue) { self::$tableExists = false; } } public static function tableExists() { return self::$tableExists; } private static function updateCachedOption($name, $val) { $options = self::loadAllOptions(); $options[$name] = $val; wp_cache_set('alloptions', $options, 'wordfence'); } private static function removeCachedOption($name) { $options = self::loadAllOptions(); if (isset($options[$name])) { unset($options[$name]); wp_cache_set('alloptions', $options, 'wordfence'); } } private static function getCachedOption($name) { $options = self::loadAllOptions(); if (isset($options[$name])) { return $options[$name]; } $table = self::table(); $val = self::getDB()->querySingle("SELECT val FROM {$table} WHERE name='%s'", $name); if ($val !== null) { $options[$name] = $val; wp_cache_set('alloptions', $options, 'wordfence'); } return $val; } public static function hasCachedOption($name) { $options = self::loadAllOptions(); return isset($options[$name]); } /** * Returns an array of all option keys that are eligible for export with the exception of serialized options. * * @return array */ public static function getExportableOptionsKeys() { $ret = array(); foreach (self::$defaultConfig['checkboxes'] as $key => $val) { $ret[] = $key; } foreach (self::$defaultConfig['otherParams'] as $key => $val) { $ret[] = $key; } return $ret; } public static function parseOptions($excludeOmitted = false) { $ret = array(); foreach (self::$defaultConfig['checkboxes'] as $key => $val) { //value is not used. We just need the keys for validation if ($excludeOmitted && isset($_POST[$key])) { $ret[$key] = (int) $_POST[$key]; } else if (!$excludeOmitted || isset($_POST[$key])) { $ret[$key] = isset($_POST[$key]) ? '1' : '0'; } } foreach (self::$defaultConfig['otherParams'] as $key => $val) { if (!$excludeOmitted || isset($_POST[$key])) { if (isset($_POST[$key])) { $ret[$key] = stripslashes($_POST[$key]); } else { error_log("Missing options param \"$key\" when parsing parameters."); } } } /* for debugging only: foreach($_POST as $key => $val){ if($key != 'action' && $key != 'nonce' && (! array_key_exists($key, self::$checkboxes)) && (! array_key_exists($key, self::$otherParams)) ){ error_log("Unrecognized option: $key"); } } */ return $ret; } public static function setArray($arr){ foreach($arr as $key => $val){ self::set($key, $val); } } public static function getHTML($key){ return esc_html(self::get($key)); } public static function inc($key){ $val = self::get($key, false); if(! $val){ $val = 0; } self::set($key, $val + 1); return $val + 1; } public static function atomicInc($key) { if (!self::$tableExists) { return false; } global $wpdb; $old_suppress_errors = $wpdb->suppress_errors(true); $table = self::table(); $rowExists = false; $successful = false; $attempts = 0; do { if (!$rowExists && $wpdb->query($wpdb->prepare("INSERT INTO {$table} (name, val, autoload) values (%s, %s, %s)", $key, 1, self::DONT_AUTOLOAD))) { $val = 1; $successful = true; } else { $rowExists = true; $val = self::get($key, 1); if ($wpdb->query($wpdb->prepare("UPDATE {$table} SET val = %s WHERE name = %s AND val = %s", $val + 1, $key, $val))) { $val++; $successful = true; } } $attempts++; } while (!$successful && $attempts < 100); $wpdb->suppress_errors($old_suppress_errors); return $val; } public static function remove($key) { global $wpdb; if (!self::$tableExists) { return; } $table = self::table(); $wpdb->query($wpdb->prepare("DELETE FROM {$table} WHERE name = %s", $key)); self::removeCachedOption($key); if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController') && (substr($key, 0, 4) == 'cbl_' || $key == 'blockedTime' || $key == 'disableWAFIPBlocking')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } public static function set($key, $val, $autoload = self::AUTOLOAD) { global $wpdb; if (is_array($val)) { $msg = sprintf( /* translators: 1. Key in key-value store. 2. Value in key-value store. */ __('wfConfig::set() got an array as second param with key: %1$s and value: %2$s', 'wordfence'), $key, var_export($val, true)); wordfence::status(1, 'error', $msg); return; } if (($key == 'apiKey' || $key == 'isPaid' || $key == 'other_WFNet') && wfWAF::getInstance() && !WFWAF_SUBDIRECTORY_INSTALL) { if ($key == 'isPaid' || $key == 'other_WFNet') { $val = !!$val; } try { wfWAF::getInstance()->getStorageEngine()->setConfig($key, $val, 'synced'); } catch (wfWAFStorageFileException $e) { error_log($e->getMessage()); } catch (wfWAFStorageEngineMySQLiException $e) { error_log($e->getMessage()); } } if (!self::$tableExists) { return; } $table = self::table(); if ($wpdb->query($wpdb->prepare("INSERT INTO {$table} (name, val, autoload) values (%s, %s, %s) ON DUPLICATE KEY UPDATE val = %s, autoload = %s", $key, $val, $autoload, $val, $autoload)) !== false && $autoload != self::DONT_AUTOLOAD) { self::updateCachedOption($key, $val); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController') && (substr($key, 0, 4) == 'cbl_' || $key == 'blockedTime' || $key == 'disableWAFIPBlocking')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } public static function setJSON($key, $val, $autoload = self::AUTOLOAD) { self::set($key, @json_encode($val), $autoload); } public static function get($key, $default = false, $allowCached = true) { global $wpdb; if ($allowCached && self::hasCachedOption($key)) { return self::getCachedOption($key); } if (!self::$tableExists) { return $default; } $table = self::table(); if (!($option = $wpdb->get_row($wpdb->prepare("SELECT name, val, autoload FROM {$table} WHERE name = %s", $key)))) { return $default; } if ($option->autoload != self::DONT_AUTOLOAD) { self::updateCachedOption($key, $option->val); } return $option->val; } public static function getInt($key, $default = 0, $allowCached = true) { return (int) self::get($key, $default, $allowCached); } public static function getJSON($key, $default = false, $allowCached = true) { $json = self::get($key, $default, $allowCached); $decoded = @json_decode($json, true); if ($decoded === null) { return $default; } return $decoded; } /** * Runs a test against the database to verify set_ser is working via MySQLi. * * @return bool */ public static function testDB() { $nonce = bin2hex(wfWAFUtils::random_bytes(32)); $payload = array('nonce' => $nonce); $allow = wfConfig::get('allowMySQLi', true); wfConfig::set('allowMySQLi', true); wfConfig::set_ser('dbTest', $payload, false, wfConfig::DONT_AUTOLOAD); $stored = wfConfig::get_ser('dbTest', false, false); wfConfig::set('allowMySQLi', $allow); $result = false; if (is_array($stored) && isset($stored['nonce']) && hash_equals($nonce, $stored['nonce'])) { $result = true; } wfConfig::delete_ser_chunked('dbTest'); return $result; } private static function canCompressValue() { if (!function_exists('gzencode') || !function_exists('gzdecode')) { return false; } $disabled = explode(',', ini_get('disable_functions')); if (in_array('gzencode', $disabled) || in_array('gzdecode', $disabled)) { return false; } return true; } private static function isCompressedValue($data) { //Based on http://www.ietf.org/rfc/rfc1952.txt if (strlen($data) < 2) { return false; } $magicBytes = substr($data, 0, 2); if ($magicBytes !== (chr(0x1f) . chr(0x8b))) { return false; } //Small chance of false positives here -- can check the header CRC if it turns out it's needed return true; } private static function ser_chunked_key($key) { return 'wordfence_chunked_' . $key . '_'; } public static function get_ser($key, $default = false, $cache = true) { if (self::hasCachedOption($key)) { return self::getCachedOption($key); } if (!self::$tableExists) { return $default; } //Check for a chunked value first $chunkedValueKey = self::ser_chunked_key($key); $header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header'); if ($header) { $header = unserialize($header); $count = $header['count']; $path = tempnam(sys_get_temp_dir(), $key); //Writing to a file like this saves some of PHP's in-memory copying when just appending each chunk to a string $fh = fopen($path, 'r+'); $length = 0; for ($i = 0; $i < $count; $i++) { $chunk = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . $i); self::getDB()->flush(); //clear cache if (!$chunk) { wordfence::status(2, 'error', sprintf(/* translators: Key in key-value store. */ __("Error reassembling value for %s", 'wordfence'), $key)); return $default; } fwrite($fh, $chunk); $length += strlen($chunk); unset($chunk); } fseek($fh, 0); $serialized = fread($fh, $length); fclose($fh); unlink($path); if (self::canCompressValue() && self::isCompressedValue($serialized)) { $inflated = @gzdecode($serialized); if ($inflated !== false) { unset($serialized); if ($cache) { self::updateCachedOption($key, unserialize($inflated)); return self::getCachedOption($key); } return unserialize($inflated); } } if ($cache) { self::updateCachedOption($key, unserialize($serialized)); return self::getCachedOption($key); } return unserialize($serialized); } else { $serialized = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $key); self::getDB()->flush(); //clear cache if ($serialized) { if (self::canCompressValue() && self::isCompressedValue($serialized)) { $inflated = @gzdecode($serialized); if ($inflated !== false) { unset($serialized); return unserialize($inflated); } } if ($cache) { self::updateCachedOption($key, unserialize($serialized)); return self::getCachedOption($key); } return unserialize($serialized); } } return $default; } public static function set_ser($key, $val, $allowCompression = false, $autoload = self::AUTOLOAD) { /* * Because of the small default value for `max_allowed_packet` and `max_long_data_size`, we're stuck splitting * large values into multiple chunks. To minimize memory use, the MySQLi driver is used directly when possible. */ global $wpdb; $dbh = $wpdb->dbh; $useMySQLi = (is_object($dbh) && $wpdb->use_mysqli && wfConfig::get('allowMySQLi', true) && WORDFENCE_ALLOW_DIRECT_MYSQLI); if (!self::$tableExists) { return; } self::delete_ser_chunked($key); //Ensure any old values for a chunked value are deleted first if (self::canCompressValue() && $allowCompression) { $data = gzencode(serialize($val)); } else { $data = serialize($val); } if (!$useMySQLi) { $data = bin2hex($data); } $dataLength = strlen($data); $maxAllowedPacketBytes = self::getDB()->getMaxAllowedPacketBytes(); $chunkSize = intval((($maxAllowedPacketBytes < 1024 /* MySQL minimum, probably failure to fetch it */ ? 1024 * 1024 /* MySQL default */ : $maxAllowedPacketBytes) - 50) / 1.2); //Based on max_allowed_packet + 20% for escaping and SQL $chunkSize = $chunkSize - ($chunkSize % 2); //Ensure it's even $chunkedValueKey = self::ser_chunked_key($key); if ($dataLength > $chunkSize) { $chunks = 0; while (($chunks * $chunkSize) < $dataLength) { $dataChunk = substr($data, $chunks * $chunkSize, $chunkSize); if ($useMySQLi) { $chunkKey = $chunkedValueKey . $chunks; $stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (name, val, autoload) VALUES (?, ?, 'no')"); if ($stmt === false) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } $null = NULL; $stmt->bind_param("sb", $chunkKey, $null); if (!$stmt->send_long_data(1, $dataChunk)) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } if (!$stmt->execute()) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } } else { if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", $dataChunk), $chunkedValueKey . $chunks)) { if ($useMySQLi) { $errno = mysqli_errno($wpdb->dbh); wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error)); } else if (function_exists('mysql_errno')) { // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved $errno = mysql_errno($wpdb->dbh); wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error)); } return false; } } $chunks++; } if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", bin2hex(serialize(array('count' => $chunks)))), $chunkedValueKey . 'header')) { wordfence::status(2, 'error', sprintf( /* translators: Key in key-value store. */ __("Error writing value header for %s", 'wordfence'), $key)); return false; } } else { $exists = self::getDB()->querySingle("select name from " . self::table() . " where name='%s'", $key); if ($useMySQLi) { if ($exists) { $stmt = $dbh->prepare("UPDATE " . self::table() . " SET val=? WHERE name=?"); if ($stmt === false) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } $null = NULL; $stmt->bind_param("bs", $null, $key); } else { $stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (val, name, autoload) VALUES (?, ?, ?)"); if ($stmt === false) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } $null = NULL; $stmt->bind_param("bss", $null, $key, $autoload); } if (!$stmt->send_long_data(0, $data)) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } if (!$stmt->execute()) { wordfence::status(2, 'error', sprintf( /* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */ __('Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error)); return false; } } else { if ($exists) { self::getDB()->queryWrite(sprintf("update " . self::table() . " set val=X'%s' where name=%%s", $data), $key); } else { self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', %%s)", $data), $key, $autoload); } } } self::getDB()->flush(); if ($autoload != self::DONT_AUTOLOAD) { self::updateCachedOption($key, $val); } return true; } private static function delete_ser_chunked($key) { if (!self::$tableExists) { return; } self::removeCachedOption($key); $chunkedValueKey = self::ser_chunked_key($key); $header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header'); if (!$header) { return; } $header = unserialize($header); $count = $header['count']; for ($i = 0; $i < $count; $i++) { self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . $i); } self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . 'header'); } public static function f($key){ echo esc_attr(self::get($key)); } public static function p() { return self::get('isPaid'); } public static function cbp($key){ if(self::get('isPaid') && self::get($key)){ echo ' checked '; } } public static function cb($key){ if(self::get($key)){ echo ' checked '; } } public static function sel($key, $val, $isDefault = false){ if((! self::get($key)) && $isDefault){ echo ' selected '; } if(self::get($key) == $val){ echo ' selected '; } } private static function getDB(){ if(! self::$DB){ self::$DB = new wfDB(); } return self::$DB; } private static function table(){ return wfDB::networkTable('wfConfig'); } public static function haveAlertEmails(){ $emails = self::getAlertEmails(); return sizeof($emails) > 0 ? true : false; } public static function alertEmailBlacklist() { return array('3c4aa9bd643bd9bb9873014227151a85b24ab8d72fe02cc5799b0edc56eabb67', 'aa06081e3962a3c17a85a06ddf9e418ca1ba8fead3f9b7a20beaf51848a1fd75', 'a25a360bded101e25ebabe5643161ddbb6c3fa33838bbe9a123c2ec0cda8d370', '36e8407dfa80d64cfe42ede4d9d5ce2d4840a5e4781b5f8a7b3b8eacec86fcad', '50cf95aec25369583efdfeff9f0818b4b9266f10e140ea2b648e30202450c21b', '72a09e746cb90ff2646ba1f1d0c0f5ffed6b380642bbbf826d273fffa6ef673b'); } public static function getAlertEmails() { $blacklist = self::alertEmailBlacklist(); $dat = explode(',', self::get('alertEmails')); $emails = array(); foreach ($dat as $email) { $email = strtolower(trim($email)); if (preg_match('/\@/', $email)) { $hash = hash('sha256', $email); if (!in_array($hash, $blacklist)) { $emails[] = $email; } } } return $emails; } public static function getAlertLevel(){ if (self::get('alertOn_scanIssues')) { return self::get('alertOn_severityLevel', 0); } return 0; } public static function liveTrafficEnabled(&$overriden = null){ $enabled = self::get('liveTrafficEnabled'); if (WORDFENCE_DISABLE_LIVE_TRAFFIC || WF_IS_WP_ENGINE) { $enabled = false; if ($overriden !== null) { $overriden = true; } } return $enabled; } public static function enableAutoUpdate(){ wfConfig::set('autoUpdate', '1'); wp_clear_scheduled_hook('wordfence_daily_autoUpdate'); if (is_main_site()) { wp_schedule_event(time(), 'daily', 'wordfence_daily_autoUpdate'); } } public static function disableAutoUpdate(){ wfConfig::set('autoUpdate', '0'); wp_clear_scheduled_hook('wordfence_daily_autoUpdate'); } public static function createLock($name, $timeout = null) { //Our own version of WP_Upgrader::create_lock that uses our table instead global $wpdb; if (!$timeout) { $timeout = 3600; } $table = self::table(); $lock_option = $name . '.lock'; $lock_result = $wpdb->query($wpdb->prepare("INSERT IGNORE INTO `$table` (`name`, `val`, `autoload`) VALUES (%s, %s, 'no')", $lock_option, time())); if (!$lock_result) { $lock_result = self::get($lock_option, false, false); if (!$lock_result) { return false; } if ($lock_result > (time() - $timeout)) { return false; } self::releaseLock($name); return self::createLock($name, $timeout); } return true; } public static function releaseLock($name) { self::remove($name . '.lock'); } public static function autoUpdate(){ // Prevent auto-update for PHP 5.2. Consider tying this into `wfVersionCheckController::PHP_DEPRECATING`. if (version_compare(PHP_VERSION, '5.3', '<')) { return; } // Prevent WF auto-update if the user has enabled auto-update through the plugins page. if (version_compare(wfUtils::getWPVersion(), '5.5-x', '>=')) { $autoUpdatePlugins = get_site_option('auto_update_plugins'); if (is_array($autoUpdatePlugins) && in_array(WORDFENCE_BASENAME, $autoUpdatePlugins)) { return; } } if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) { $lastEmail = self::get('lastLiteSpdEmail', false); if( (! $lastEmail) || (time() - (int)$lastEmail > (86400 * 30))){ self::set('lastLiteSpdEmail', time()); wordfence::alert( /* translators: Support URL. */ __("Wordfence Upgrade not run. Please modify your .htaccess", 'wordfence'), sprintf(__("To preserve the integrity of your website we are not running Wordfence auto-update.\n" . "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" . "Please go to your website now and make a minor change to your .htaccess to fix this.\n" . "You can find out how to make this change at:\n" . "%s\n" . "\nAlternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n", 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING)), false ); } return; } $runUpdate = false; wp_update_plugins(); $update_plugins = get_site_transient('update_plugins'); if ($update_plugins && is_array($update_plugins->response) && isset($update_plugins->response[WORDFENCE_BASENAME])) { $status = $update_plugins->response[WORDFENCE_BASENAME]; if (is_object($status) && property_exists($status, 'new_version')) { $runUpdate = (version_compare($status->new_version, WORDFENCE_VERSION) > 0); } } if ($runUpdate) { try { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $response = $api->call('should_auto_update', array(), array('currentVersion' => WORDFENCE_VERSION)); if (!(is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']))) { $runUpdate = false; } } catch (Exception $e) { wfConfig::inc('autoUpdateAttempts'); $runUpdate = false; } } if (!$runUpdate && wfConfig::get('autoUpdateAttempts') < 7) { return; } try { require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); require_once(ABSPATH . 'wp-admin/includes/misc.php'); /* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request. if(! function_exists('show_message')){ function show_message($msg = 'null'){} } */ if(! defined('FS_METHOD')){ define('FS_METHOD', 'direct'); //May be defined already and might not be 'direct' so this could cause problems. But we were getting reports of a warning that this is already defined, so this check added. } require_once(ABSPATH . 'wp-includes/update.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); if (!self::createLock('wfAutoUpdate')) { return; } ob_start(); $upgrader = new Plugin_Upgrader(); $upret = $upgrader->upgrade(WORDFENCE_BASENAME); if($upret){ $cont = file_get_contents(WORDFENCE_FCPATH); preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches); $version = !empty($matches) ? $matches[1] : null; $alertCallback = array(new wfAutoUpdatedAlert($version), 'send'); do_action('wordfence_security_event', 'autoUpdate', array( 'version' => $version, ), $alertCallback); wfConfig::set('autoUpdateAttempts', 0); } $output = @ob_get_contents(); @ob_end_clean(); } catch(Exception $e){} self::releaseLock('wfAutoUpdate'); } /** * .htaccess file contents to disable all script execution in a given directory. */ private static $_disable_scripts_htaccess = '# BEGIN Wordfence code execution protection <IfModule mod_php5.c> php_flag engine 0 </IfModule> <IfModule mod_php7.c> php_flag engine 0 </IfModule> <IfModule mod_php.c> php_flag engine 0 </IfModule> AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI # END Wordfence code execution protection '; private static $_disable_scripts_regex = '/# BEGIN Wordfence code execution protection.+?# END Wordfence code execution protection/s'; private static function _uploadsHtaccessFilePath() { $upload_dir = wp_upload_dir(); return $upload_dir['basedir'] . '/.htaccess'; } /** * Add/Merge .htaccess file in the uploads directory to prevent code execution. * * @return bool * @throws wfConfigException */ public static function disableCodeExecutionForUploads() { $uploads_htaccess_file_path = self::_uploadsHtaccessFilePath(); $uploads_htaccess_has_content = false; if (file_exists($uploads_htaccess_file_path)) { $htaccess_contents = file_get_contents($uploads_htaccess_file_path); // htaccess exists and contains our htaccess code to disable script execution, nothing more to do if (strpos($htaccess_contents, self::$_disable_scripts_htaccess) !== false) { return true; } $uploads_htaccess_has_content = strlen(trim($htaccess_contents)) > 0; } if (@file_put_contents($uploads_htaccess_file_path, ($uploads_htaccess_has_content ? "\n\n" : "") . self::$_disable_scripts_htaccess, FILE_APPEND | LOCK_EX) === false) { throw new wfConfigException(__("Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory.", 'wordfence')); } self::set('disableCodeExecutionUploadsPHP7Migrated', true); return true; } public static function migrateCodeExecutionForUploadsPHP7() { if (self::get('disableCodeExecutionUploads')) { if (!self::get('disableCodeExecutionUploadsPHP7Migrated')) { $uploads_htaccess_file_path = self::_uploadsHtaccessFilePath(); if (file_exists($uploads_htaccess_file_path)) { $htaccess_contents = file_get_contents($uploads_htaccess_file_path); if (preg_match(self::$_disable_scripts_regex, $htaccess_contents)) { $htaccess_contents = preg_replace(self::$_disable_scripts_regex, self::$_disable_scripts_htaccess, $htaccess_contents); @file_put_contents($uploads_htaccess_file_path, $htaccess_contents); self::set('disableCodeExecutionUploadsPHP7Migrated', true); } } } } } /** * Remove script execution protections for our the .htaccess file in the uploads directory. * * @return bool * @throws wfConfigException */ public static function removeCodeExecutionProtectionForUploads() { $uploads_htaccess_file_path = self::_uploadsHtaccessFilePath(); if (file_exists($uploads_htaccess_file_path)) { $htaccess_contents = file_get_contents($uploads_htaccess_file_path); // Check that it is in the file if (preg_match(self::$_disable_scripts_regex, $htaccess_contents)) { $htaccess_contents = preg_replace(self::$_disable_scripts_regex, '', $htaccess_contents); $error_message = __("Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file.", 'wordfence'); if (strlen(trim($htaccess_contents)) === 0) { // empty file, remove it if (!@unlink($uploads_htaccess_file_path)) { throw new wfConfigException($error_message); } } elseif (@file_put_contents($uploads_htaccess_file_path, $htaccess_contents, LOCK_EX) === false) { throw new wfConfigException($error_message); } } } return true; } /** * Validates the array of configuration changes without applying any. All bounds checks must be performed here. * * @param array $changes * @return bool|array Returns true if valid, otherwise a displayable error message per error encountered. * @throws wfWAFStorageFileException */ public static function validate($changes) { $errors = array(); $waf = wfWAF::getInstance(); $wafConfig = $waf->getStorageEngine(); foreach ($changes as $key => $value) { $checked = false; switch ($key) { //============ WAF case 'learningModeGracePeriod': { //If currently in or will be in learning mode, restrict the grace period to be in the future $wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus')); $gracePeriodEnd = strtotime($value); if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING && $gracePeriodEnd <= time()) { $errors[] = array('option' => $key, 'error' => __('The grace period end time must be in the future.', 'wordfence')); } $checked = true; break; } case 'wafStatus': { if ($value != wfFirewall::FIREWALL_MODE_ENABLED && $value != wfFirewall::FIREWALL_MODE_LEARNING && $value != wfFirewall::FIREWALL_MODE_DISABLED) { $errors[] = array('option' => $key, 'error' => __('Unknown firewall mode.', 'wordfence')); } $checked = true; break; } //============ Plugin case 'alertEmails': { $dirtyEmails = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value)); $dirtyEmails = array_filter($dirtyEmails); $badEmails = array(); foreach ($dirtyEmails as $email) { if (!wfUtils::isValidEmail($email)) { $badEmails[] = $email; } } if (count($badEmails) > 0) { $errors[] = array('option' => $key, 'error' => __('The following emails are invalid: ', 'wordfence') . esc_html(implode(', ', $badEmails), array())); } $checked = true; break; } case 'scan_include_extra': { $dirtyRegexes = explode("\n", $value); foreach ($dirtyRegexes as $regex) { if (@preg_match("/$regex/", "") === false) { $errors[] = array('option' => $key, 'error' => sprintf( /* translators: Regular expression. */ __('"%s" is not a valid regular expression.', 'wordfence'), esc_html($regex))); } } $checked = true; break; } case 'whitelisted': { $dirtyWhitelisted = explode(',', preg_replace('/[\r\n\s\t]+/', ',', $value)); $dirtyWhitelisted = array_filter($dirtyWhitelisted); $badWhiteIPs = array(); $range = new wfUserIPRange(); foreach ($dirtyWhitelisted as $whiteIP) { $range->setIPString($whiteIP); if (!$range->isValidRange()) { $badWhiteIPs[] = $whiteIP; } } if (count($badWhiteIPs) > 0) { $errors[] = array('option' => $key, 'error' => __('Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: ', 'wordfence') . esc_html(implode(', ', $badWhiteIPs), array())); } $checked = true; break; } case 'liveTraf_ignoreUsers': { $dirtyUsers = explode(',', $value); $invalidUsers = array(); foreach ($dirtyUsers as $val) { $val = trim($val); if (strlen($val) > 0) { if (!get_user_by('login', $val)) { $invalidUsers[] = $val; } } } if (count($invalidUsers) > 0) { $errors[] = array('option' => $key, 'error' => __('The following users you selected to ignore in live traffic reports are not valid on this system: ', 'wordfence') . esc_html(implode(', ', $invalidUsers), array())); } $checked = true; break; } case 'liveTraf_ignoreIPs': { $dirtyIPs = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value)); $dirtyIPs = array_filter($dirtyIPs); $invalidIPs = array(); foreach ($dirtyIPs as $val) { if (!wfUtils::isValidIP($val)) { $invalidIPs[] = $val; } } if (count($invalidIPs) > 0) { $errors[] = array('option' => $key, 'error' => __('The following IPs you selected to ignore in live traffic reports are not valid: ', 'wordfence') . esc_html(implode(', ', $invalidIPs), array())); } $checked = true; break; } case 'howGetIPs_trusted_proxies': { $dirtyIPs = preg_split('/[\r\n,]+/', $value); $dirtyIPs = array_filter($dirtyIPs); $invalidIPs = array(); foreach ($dirtyIPs as $val) { if (!(wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val))) { $invalidIPs[] = $val; } } if (count($invalidIPs) > 0) { $errors[] = array('option' => $key, 'error' => __('The following IPs/ranges you selected to trust as proxies are not valid: ', 'wordfence') . esc_html(implode(', ', $invalidIPs), array())); } $checked = true; break; } case 'apiKey': { $value = trim($value); if (empty($value)) { $errors[] = array('option' => $key, 'error' => __('An empty license key was entered.', 'wordfence')); } else if ($value && !preg_match('/^[a-fA-F0-9]+$/', $value)) { $errors[] = array('option' => $key, 'error' => __('The license key entered is not in a valid format. It must contain only numbers and the letters A-F.', 'wordfence')); } $checked = true; break; } case 'scan_exclude': { $exclusionList = explode("\n", trim($value)); foreach ($exclusionList as $exclusion) { $exclusion = trim($exclusion); if ($exclusion === '*') { $errors[] = array('option' => $key, 'error' => __('A wildcard cannot be used to exclude all files from the scan.', 'wordfence')); } } $checked = true; break; } } } if (empty($errors)) { return true; } return $errors; } public static function clean($changes) { $cleaned = array(); foreach ($changes as $key => $value) { if (preg_match('/^whitelistedServices\.([a-z0-9]+)$/i', $key, $matches)) { if (!isset($cleaned['whitelistedServices']) || !is_array($cleaned['whitelistedServices'])) { $cleaned['whitelistedServices'] = wfConfig::getJSON('whitelistedServices', array()); } $cleaned['whitelistedServices'][$matches[1]] = wfUtils::truthyToBoolean($value); } else { $cleaned[$key] = $value; } } return $cleaned; } /** * Saves the array of configuration changes in the correct place. This may currently be the wfConfig table, the WAF's config file, or both. The * validation function will handle all bounds checks and this will be limited to normalizing the values as needed. * * @param array $changes * @throws wfConfigException * @throws wfWAFStorageFileException */ public static function save($changes) { $waf = wfWAF::getInstance(); $wafConfig = $waf->getStorageEngine(); $apiKey = false; if (isset($changes['apiKey'])) { //Defer to end $apiKey = $changes['apiKey']; unset($changes['apiKey']); } foreach ($changes as $key => $value) { $saved = false; switch ($key) { //============ WAF case 'learningModeGracePeriod': { $wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus')); if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING) { $dt = wfUtils::parseLocalTime($value); $gracePeriodEnd = $dt->format('U'); $wafConfig->setConfig($key, $gracePeriodEnd); } $saved = true; break; } case 'learningModeGracePeriodEnabled': { $wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus')); if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING) { $wafConfig->setConfig($key, wfUtils::truthyToInt($value)); } $saved = true; break; } case 'wafStatus': { $wafConfig->setConfig($key, $value); if ($value != wfFirewall::FIREWALL_MODE_LEARNING) { $wafConfig->setConfig('learningModeGracePeriodEnabled', 0); $wafConfig->unsetConfig('learningModeGracePeriod'); } $firewall = new wfFirewall(); $firewall->syncStatus(true); if ($value == wfFirewall::FIREWALL_MODE_DISABLED) { $currentUser = wp_get_current_user(); $username = $currentUser->user_login; $alertCallback = array(new wfWafDeactivatedAlert($username, wfUtils::getIP()), 'send'); do_action('wordfence_security_event', 'wafDeactivated', array( 'username' => $username, 'ip' => wfUtils::getIP(), ), $alertCallback); } $saved = true; break; } case 'wafRules': { $disabledRules = (array) $wafConfig->getConfig('disabledRules'); foreach ($value as $ruleID => $ruleEnabled) { $ruleID = (int) $ruleID; if ($ruleEnabled) { unset($disabledRules[$ruleID]); } else { $disabledRules[$ruleID] = true; } } $wafConfig->setConfig('disabledRules', $disabledRules); $saved = true; break; } case 'whitelistedURLParams': { $whitelistedURLParams = (array) $wafConfig->getConfig('whitelistedURLParams', null, 'livewaf'); if (isset($value['delete'])) { foreach ($value['delete'] as $whitelistKey => $unused) { unset($whitelistedURLParams[$whitelistKey]); } } if (isset($value['enabled'])) { foreach ($value['enabled'] as $whitelistKey => $enabled) { if (array_key_exists($whitelistKey, $whitelistedURLParams) && is_array($whitelistedURLParams[$whitelistKey])) { foreach ($whitelistedURLParams[$whitelistKey] as $ruleID => $data) { $whitelistedURLParams[$whitelistKey][$ruleID]['disabled'] = !$enabled; } } } } $wafConfig->setConfig('whitelistedURLParams', $whitelistedURLParams, 'livewaf'); if (isset($value['add'])) { foreach ($value['add'] as $entry) { $path = @base64_decode($entry['path']); $paramKey = @base64_decode($entry['paramKey']); if (!$path || !$paramKey) { continue; } $data = array( 'timestamp' => (int) $entry['data']['timestamp'], 'description' => $entry['data']['description'], 'ip' => wfUtils::getIP(), 'disabled' => !!$entry['data']['disabled'], ); if (function_exists('get_current_user_id')) { $data['userID'] = get_current_user_id(); } $waf->whitelistRuleForParam($path, $paramKey, 'all', $data); } } $saved = true; break; } case 'disableWAFBlacklistBlocking': { $wafConfig->setConfig($key, wfUtils::truthyToInt($value)); if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); } if ($value) { $cron = wfWAF::getInstance()->getStorageEngine()->getConfig('cron', array(), 'livewaf'); if (!is_array($cron)) { $cron = array(); } foreach ($cron as $cronKey => $cronJob) { if ($cronJob instanceof wfWAFCronFetchBlacklistPrefixesEvent) { unset($cron[$cronKey]); } } $cron[] = new wfWAFCronFetchBlacklistPrefixesEvent(time() - 1); wfWAF::getInstance()->getStorageEngine()->setConfig('cron', $cron, 'livewaf'); } $saved = true; break; } case 'avoid_php_input': { $wafConfig->setConfig($key, wfUtils::truthyToInt($value)); $saved = true; break; } //============ Plugin (specialty treatment) case 'alertEmails': { $emails = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value)); $emails = array_filter($emails); //Already validated above if (count($emails) > 0) { wfConfig::set($key, implode(',', $emails)); } else { wfConfig::set($key, ''); } $saved = true; break; } case 'loginSec_userBlacklist': case 'scan_exclude': case 'email_summary_excluded_directories': { if (is_array($value)) { $value = implode("\n", $value); } wfConfig::set($key, wfUtils::cleanupOneEntryPerLine($value)); $saved = true; break; } case 'whitelisted': { $whiteIPs = explode(',', preg_replace('/[\r\n\s\t]+/', ',', $value)); $whiteIPs = array_filter($whiteIPs); //Already validated above if (count($whiteIPs) > 0) { wfConfig::set($key, implode(',', $whiteIPs)); } else { wfConfig::set($key, ''); } if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); } $saved = true; break; } case 'whitelistedServices': { if (is_string($value)) { //Already JSON (import/export settings) wfConfig::set($key, $value); } else { wfConfig::setJSON($key, (array) $value); } $wafConfig->setConfig('whitelistedServiceIPs', @json_encode(wfUtils::whitelistedServiceIPs()), 'synced'); if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); } $saved = true; break; } case 'liveTraf_ignoreUsers': { $dirtyUsers = explode(',', $value); $validUsers = array(); foreach ($dirtyUsers as $val) { $val = trim($val); if (strlen($val) > 0) { $validUsers[] = $val; //Already validated above } } if (count($validUsers) > 0) { wfConfig::set($key, implode(',', $validUsers)); } else { wfConfig::set($key, ''); } $saved = true; break; } case 'liveTraf_ignoreIPs': { $validIPs = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value)); $validIPs = array_filter($validIPs); //Already validated above if (count($validIPs) > 0) { wfConfig::set($key, implode(',', $validIPs)); } else { wfConfig::set($key, ''); } $saved = true; break; } case 'liveTraf_ignoreUA': { if (preg_match('/[a-zA-Z0-9\d]+/', $value)) { wfConfig::set($key, trim($value)); } else { wfConfig::set($key, ''); } $saved = true; break; } case 'howGetIPs_trusted_proxies': { $validIPs = preg_split('/[\r\n,]+/', $value); $validIPs = array_filter($validIPs); //Already validated above if (count($validIPs) > 0) { wfConfig::set($key, implode("\n", $validIPs)); } else { wfConfig::set($key, ''); } $saved = true; break; } case 'other_WFNet': { $value = wfUtils::truthyToBoolean($value); wfConfig::set($key, $value); if (!$value) { wfBlock::removeTemporaryWFSNBlocks(); } $saved = true; break; } case 'howGetIPs': { wfConfig::set($key, $value); wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD); $saved = true; break; } case 'bannedURLs': { wfConfig::set($key, preg_replace('/[\n\r]+/', ',', $value)); $saved = true; break; } case 'autoUpdate': { if (wfUtils::truthyToBoolean($value)) { wfConfig::enableAutoUpdate(); //Also sets the option } else { wfConfig::disableAutoUpdate(); } $saved = true; break; } case 'disableCodeExecutionUploads': { $value = wfUtils::truthyToBoolean($value); wfConfig::set($key, $value); if ($value) { wfConfig::disableCodeExecutionForUploads(); //Can throw wfConfigException } else { wfConfig::removeCodeExecutionProtectionForUploads(); } $saved = true; break; } case 'email_summary_interval': { wfConfig::set($key, $value); wfActivityReport::scheduleCronJob(); $saved = true; break; } case 'email_summary_enabled': { $value = wfUtils::truthyToBoolean($value); wfConfig::set($key, $value); if ($value) { wfActivityReport::scheduleCronJob(); } else { wfActivityReport::disableCronJob(); } $saved = true; break; } case 'other_hideWPVersion': { $value = wfUtils::truthyToBoolean($value); wfConfig::set($key, $value); if ($value) { wfUtils::hideReadme(); } else { wfUtils::showReadme(); } $saved = true; break; } case 'betaThreatDefenseFeed': { $value = wfUtils::truthyToBoolean($value); wfConfig::set($key, $value); if (class_exists('wfWAFConfig')) { wfWAFConfig::set('betaThreatDefenseFeed', $value, 'synced'); } $saved = true; break; } case 'liveTraf_maxAge': { $value = max(1, $value); break; } //Scan scheduling case 'scanSched': case 'schedStartHour': case 'manualScanType': case 'schedMode': case 'scheduledScansEnabled': { wfScanner::setNeedsRescheduling(); //Letting these fall through to the default save handler break; } } //============ Plugin (default treatment) if (!$saved) { if (isset(self::$defaultConfig['checkboxes'][$key]) || (isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_BOOL) || (isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_BOOL)) { //Boolean wfConfig::set($key, wfUtils::truthyToInt($value)); } else if ((isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_INT) || (isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_INT)) { wfConfig::set($key, (int) $value); } else if ((isset(self::$defaultConfig['otherParams'][$key]) && (self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_FLOAT || self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_DOUBLE)) || (isset(self::$defaultConfig['defaultsOnly'][$key]) && (self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_FLOAT || self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_DOUBLE))) { wfConfig::set($key, (double) $value); } else if ((isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_STRING) || (isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_STRING)) { wfConfig::set($key, (string) $value); } else if (in_array($key, self::$serializedOptions)) { wfConfig::set_ser($key, $value); } else if (in_array($key, self::$wfCentralInternalConfig)) { wfConfig::set($key, $value); } else if (WFWAF_DEBUG) { error_log("*** DEBUG: Config option '{$key}' missing save handler."); } } } if ($apiKey !== false) { $existingAPIKey = wfConfig::get('apiKey', ''); $apiKey = strtolower(trim($apiKey)); //Already validated above $ping = false; if (empty($apiKey)) { //Empty, try getting a free key $api = new wfAPI('', wfUtils::getWPVersion()); try { $keyData = $api->call('get_anon_api_key'); if ($keyData['ok'] && $keyData['apiKey']) { wfConfig::set('apiKey', $keyData['apiKey']); wfConfig::set('isPaid', false); wfConfig::set('keyType', wfAPI::KEY_TYPE_FREE); wordfence::licenseStatusChanged(); wfConfig::set('touppPromptNeeded', true); } else { throw new Exception(__("The Wordfence server's response did not contain the expected elements.", 'wordfence')); } } catch (Exception $e) { throw new wfConfigException(__('Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: ', 'wordfence') . wp_kses($e->getMessage(), array())); } } else if ($existingAPIKey != $apiKey) { //Key changed, try activating $api = new wfAPI($apiKey, wfUtils::getWPVersion()); try { $res = $api->call('check_api_key', array(), array('previousLicense' => $existingAPIKey)); if ($res['ok'] && isset($res['isPaid'])) { $isPaid = wfUtils::truthyToBoolean($res['isPaid']); wfConfig::set('apiKey', $apiKey); wfConfig::set('isPaid', $isPaid); //res['isPaid'] is boolean coming back as JSON and turned back into PHP struct. Assuming JSON to PHP handles bools. wordfence::licenseStatusChanged(); if (!$isPaid) { wfConfig::set('keyType', wfAPI::KEY_TYPE_FREE); } $ping = true; } else { throw new Exception(__("The Wordfence server's response did not contain the expected elements.", 'wordfence')); } } catch (Exception $e) { throw new wfConfigException(__('Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: ', 'wordfence') . wp_kses($e->getMessage(), array())); } } else { //Key unchanged, just ping it $ping = true; } if ($ping) { $api = new wfAPI($apiKey, wfUtils::getWPVersion()); try { $keyType = wfAPI::KEY_TYPE_FREE; $keyData = $api->call('ping_api_key', array(), array('supportHash' => wfConfig::get('supportHash', ''), 'whitelistHash' => wfConfig::get('whitelistHash', ''), 'tldlistHash' => wfConfig::get('tldlistHash', ''))); if (isset($keyData['_isPaidKey'])) { $keyType = wfConfig::get('keyType'); } if (isset($keyData['dashboard'])) { wfConfig::set('lastDashboardCheck', time()); wfDashboard::processDashboardResponse($keyData['dashboard']); } if (isset($keyData['support']) && isset($keyData['supportHash'])) { wfConfig::set('supportContent', $keyData['support']); wfConfig::set('supportHash', $keyData['supportHash']); } if (isset($keyData['_whitelist']) && isset($keyData['_whitelistHash'])) { wfConfig::setJSON('whitelistPresets', $keyData['_whitelist']); wfConfig::set('whitelistHash', $keyData['_whitelistHash']); } if (isset($keyData['_tldlist']) && isset($keyData['_tldlistHash'])) { wfConfig::set('tldlist', $keyData['_tldlist']); wfConfig::set('tldlistHash', $keyData['_tldlistHash']); } if (isset($keyData['scanSchedule']) && is_array($keyData['scanSchedule'])) { wfConfig::set_ser('noc1ScanSchedule', $keyData['scanSchedule']); if (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC) { wfScanner::shared()->scheduleScans(); } } if (isset($keyData['showWfCentralUI'])) { wfConfig::set('showWfCentralUI', (int) $keyData['showWfCentralUI']); } wfConfig::set('keyType', $keyType); } catch (Exception $e){ throw new wfConfigException(__('Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: ', 'wordfence') . wp_kses($e->getMessage(), array())); } } } wfNotification::reconcileNotificationsWithOptions(); wfCentral::requestConfigurationSync(); } public static function restoreDefaults($section) { switch ($section) { case self::OPTIONS_TYPE_GLOBAL: $options = array( 'alertOn_critical', 'alertOn_update', 'alertOn_warnings', 'alertOn_throttle', 'alertOn_block', 'alertOn_loginLockout', 'alertOn_breachLogin', 'alertOn_lostPasswdForm', 'alertOn_adminLogin', 'alertOn_firstAdminLoginOnly', 'alertOn_nonAdminLogin', 'alertOn_firstNonAdminLoginOnly', 'alertOn_wordfenceDeactivated', 'liveActivityPauseEnabled', 'notification_updatesNeeded', 'notification_securityAlerts', 'notification_promotions', 'notification_blogHighlights', 'notification_productUpdates', 'notification_scanStatus', 'other_hideWPVersion', 'other_bypassLitespeedNoabort', 'deleteTablesOnDeact', 'autoUpdate', 'disableCodeExecutionUploads', 'email_summary_enabled', 'email_summary_dashboard_widget_enabled', 'howGetIPs', 'actUpdateInterval', 'alert_maxHourly', 'email_summary_interval', 'email_summary_excluded_directories', 'howGetIPs_trusted_proxies', 'displayTopLevelOptions', ); break; case self::OPTIONS_TYPE_FIREWALL: $options = array( 'firewallEnabled', 'autoBlockScanners', 'loginSecurityEnabled', 'loginSec_strongPasswds_enabled', 'loginSec_breachPasswds_enabled', 'loginSec_lockInvalidUsers', 'loginSec_maskLoginErrors', 'loginSec_blockAdminReg', 'loginSec_disableAuthorScan', 'loginSec_disableOEmbedAuthor', 'other_blockBadPOST', 'other_pwStrengthOnUpdate', 'other_WFNet', 'ajaxWatcherDisabled_front', 'ajaxWatcherDisabled_admin', 'wafAlertOnAttacks', 'disableWAFIPBlocking', 'whitelisted', 'whitelistedServices', 'bannedURLs', 'loginSec_userBlacklist', 'neverBlockBG', 'loginSec_countFailMins', 'loginSec_lockoutMins', 'loginSec_strongPasswds', 'loginSec_breachPasswds', 'loginSec_maxFailures', 'loginSec_maxForgotPasswd', 'maxGlobalRequests', 'maxGlobalRequests_action', 'maxRequestsCrawlers', 'maxRequestsCrawlers_action', 'maxRequestsHumans', 'maxRequestsHumans_action', 'max404Crawlers', 'max404Crawlers_action', 'max404Humans', 'max404Humans_action', 'blockedTime', 'allowed404s', 'wafAlertWhitelist', 'wafAlertInterval', 'wafAlertThreshold', 'dismissAutoPrependNotice', ); break; case self::OPTIONS_TYPE_BLOCKING: $options = array( 'displayTopLevelBlocking', 'cbl_loggedInBlocked', 'cbl_action', 'cbl_redirURL', 'cbl_bypassRedirURL', 'cbl_bypassRedirDest', 'cbl_bypassViewURL', ); break; case self::OPTIONS_TYPE_SCANNER: $options = array( 'checkSpamIP', 'spamvertizeCheck', 'scheduledScansEnabled', 'lowResourceScansEnabled', 'scansEnabled_checkGSB', 'scansEnabled_checkHowGetIPs', 'scansEnabled_core', 'scansEnabled_themes', 'scansEnabled_plugins', 'scansEnabled_coreUnknown', 'scansEnabled_malware', 'scansEnabled_fileContents', 'scansEnabled_fileContentsGSB', 'scansEnabled_checkReadableConfig', 'scansEnabled_suspectedFiles', 'scansEnabled_posts', 'scansEnabled_comments', 'scansEnabled_suspiciousOptions', 'scansEnabled_passwds', 'scansEnabled_diskSpace', 'scansEnabled_wafStatus', 'scansEnabled_options', 'scansEnabled_wpscan_fullPathDisclosure', 'scansEnabled_wpscan_directoryListingEnabled', 'scansEnabled_scanImages', 'scansEnabled_highSense', 'scansEnabled_oldVersions', 'scansEnabled_suspiciousAdminUsers', 'scan_include_extra', 'maxMem', 'scan_exclude', 'scan_maxIssues', 'scan_maxDuration', 'maxExecutionTime', 'scanType', 'manualScanType', 'schedMode', ); break; case self::OPTIONS_TYPE_TWO_FACTOR: $options = array( 'loginSec_requireAdminTwoFactor', 'loginSec_enableSeparateTwoFactor', ); break; case self::OPTIONS_TYPE_LIVE_TRAFFIC: $options = array( 'liveTrafficEnabled', 'liveTraf_ignorePublishers', 'liveTraf_displayExpandedRecords', 'liveTraf_ignoreUsers', 'liveTraf_ignoreIPs', 'liveTraf_ignoreUA', 'liveTraf_maxRows', 'liveTraf_maxAge', 'displayTopLevelLiveTraffic', ); break; case self::OPTIONS_TYPE_DIAGNOSTICS: $options = array( 'debugOn', 'startScansRemotely', 'ssl_verify', 'betaThreatDefenseFeed', 'wordfenceI18n', ); break; case self::OPTIONS_TYPE_ALL: $options = array( 'alertOn_critical', 'alertOn_update', 'alertOn_warnings', 'alertOn_throttle', 'alertOn_block', 'alertOn_loginLockout', 'alertOn_breachLogin', 'alertOn_lostPasswdForm', 'alertOn_adminLogin', 'alertOn_firstAdminLoginOnly', 'alertOn_nonAdminLogin', 'alertOn_firstNonAdminLoginOnly', 'alertOn_wordfenceDeactivated', 'liveActivityPauseEnabled', 'notification_updatesNeeded', 'notification_securityAlerts', 'notification_promotions', 'notification_blogHighlights', 'notification_productUpdates', 'notification_scanStatus', 'other_hideWPVersion', 'other_bypassLitespeedNoabort', 'deleteTablesOnDeact', 'autoUpdate', 'disableCodeExecutionUploads', 'email_summary_enabled', 'email_summary_dashboard_widget_enabled', 'howGetIPs', 'actUpdateInterval', 'alert_maxHourly', 'email_summary_interval', 'email_summary_excluded_directories', 'howGetIPs_trusted_proxies', 'firewallEnabled', 'autoBlockScanners', 'loginSecurityEnabled', 'loginSec_strongPasswds_enabled', 'loginSec_breachPasswds_enabled', 'loginSec_lockInvalidUsers', 'loginSec_maskLoginErrors', 'loginSec_blockAdminReg', 'loginSec_disableAuthorScan', 'loginSec_disableOEmbedAuthor', 'other_blockBadPOST', 'other_pwStrengthOnUpdate', 'other_WFNet', 'ajaxWatcherDisabled_front', 'ajaxWatcherDisabled_admin', 'wafAlertOnAttacks', 'disableWAFIPBlocking', 'whitelisted', 'whitelistedServices', 'bannedURLs', 'loginSec_userBlacklist', 'neverBlockBG', 'loginSec_countFailMins', 'loginSec_lockoutMins', 'loginSec_strongPasswds', 'loginSec_breachPasswds', 'loginSec_maxFailures', 'loginSec_maxForgotPasswd', 'maxGlobalRequests', 'maxGlobalRequests_action', 'maxRequestsCrawlers', 'maxRequestsCrawlers_action', 'maxRequestsHumans', 'maxRequestsHumans_action', 'max404Crawlers', 'max404Crawlers_action', 'max404Humans', 'max404Humans_action', 'blockedTime', 'allowed404s', 'wafAlertWhitelist', 'wafAlertInterval', 'wafAlertThreshold', 'dismissAutoPrependNotice', 'displayTopLevelBlocking', 'cbl_loggedInBlocked', 'cbl_action', 'cbl_redirURL', 'cbl_bypassRedirURL', 'cbl_bypassRedirDest', 'cbl_bypassViewURL', 'checkSpamIP', 'spamvertizeCheck', 'scheduledScansEnabled', 'lowResourceScansEnabled', 'scansEnabled_checkGSB', 'scansEnabled_checkHowGetIPs', 'scansEnabled_core', 'scansEnabled_themes', 'scansEnabled_plugins', 'scansEnabled_coreUnknown', 'scansEnabled_malware', 'scansEnabled_fileContents', 'scansEnabled_fileContentsGSB', 'scansEnabled_checkReadableConfig', 'scansEnabled_suspectedFiles', 'scansEnabled_posts', 'scansEnabled_comments', 'scansEnabled_suspiciousOptions', 'scansEnabled_passwds', 'scansEnabled_diskSpace', 'scansEnabled_wafStatus', 'scansEnabled_options', 'scansEnabled_wpscan_fullPathDisclosure', 'scansEnabled_wpscan_directoryListingEnabled', 'scansEnabled_scanImages', 'scansEnabled_highSense', 'scansEnabled_oldVersions', 'scansEnabled_suspiciousAdminUsers', 'scan_include_extra', 'maxMem', 'scan_exclude', 'scan_maxIssues', 'scan_maxDuration', 'maxExecutionTime', 'scanType', 'manualScanType', 'schedMode', 'loginSec_requireAdminTwoFactor', 'loginSec_enableSeparateTwoFactor', 'liveTrafficEnabled', 'liveTraf_ignorePublishers', 'liveTraf_displayExpandedRecords', 'liveTraf_ignoreUsers', 'liveTraf_ignoreIPs', 'liveTraf_ignoreUA', 'liveTraf_maxRows', 'liveTraf_maxAge', 'displayTopLevelLiveTraffic', 'other_scanComments', 'advancedCommentScanning', ); break; } if (isset($options)) { $changes = array(); foreach ($options as $key) { if (isset(self::$defaultConfig['checkboxes'][$key])) { $changes[$key] = self::$defaultConfig['checkboxes'][$key]['value']; } else if (isset(self::$defaultConfig['otherParams'][$key])) { $changes[$key] = self::$defaultConfig['otherParams'][$key]['value']; } else if (isset(self::$defaultConfig['defaultsOnly'][$key])) { $changes[$key] = self::$defaultConfig['defaultsOnly'][$key]['value']; } } try { self::save($changes); return true; } catch (Exception $e) { //Do nothing } } return false; } } class wfConfigException extends Exception {} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_scanner.php��������������������������������������������������������������������������������0000644�����������������00000054154�15233113245�0010510 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } $scanner = wfScanner::shared(); $issues = wfIssues::shared(); $dashboard = new wfDashboard(); ?> <?php if (wfConfig::get('liveActivityPauseEnabled')): ?> <div id="wfLiveTrafficOverlayAnchor"></div> <div id="wfLiveTrafficDisabledMessage"> <h2><?php echo wp_kses(__('Status Updates Paused<br /><small>Click inside window to resume</small>', 'wordfence'), array('small'=>array(), 'br'=>array())); ?></h2> </div> <?php endif; ?> <?php if (wfOnboardingController::shouldShowAttempt3()) { echo wfView::create('onboarding/disabled-overlay')->render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?> <div id="wordfenceMode_scan"></div> <div class="wrap wordfence"> <div class="wf-container-fluid"> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wp-header-end"></div> <?php echo wfView::create('common/section-title', array( 'title' => __('Scan', 'wordfence'), 'headerID' => 'wf-section-scan', 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN), 'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Scanner</span>', 'wordfence'), array('span'=>array('class'=>array()))), 'showIcon' => true, ))->render(); ?> </div> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <div class="wf-block-content"> <ul class="wf-block-list"> <li> <?php echo wfView::create('scanner/scanner-status', array( 'scanner' => $scanner, 'dashboard' => $dashboard, ))->render(); ?> </li> <li> <ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-scanner-coverage"> <li> <?php if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); } else { $optionsURL = admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); } echo wfView::create('common/status-detail', array( 'id' => 'wf-scanner-type', 'percentage' => $scanner->scanTypeStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Scan Type: ', 'wordfence') . wfScanner::displayScanType($scanner->scanType()), 'subtitle' => wfScanner::displayScanTypeDetail($scanner->scanType()), 'link' => $optionsURL, 'linkLabel' => __('Manage Scan', 'wordfence'), 'statusTitle' => __('Scan Status', 'wordfence'), 'statusList' => $scanner->scanTypeStatusList(), 'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'), ))->render(); ?> </li> <li> <?php echo wfView::create('common/status-detail', array( 'id' => 'wf-scanner-malware-type', 'percentage' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? 1.0 : 0.7, 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Malware Signatures: ', 'wordfence') . ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')), 'subtitle' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Signatures updated in real-time', 'wordfence') : __('Signature updates delayed by 30 days', 'wordfence')), 'link' => 'https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/', 'linkLabel' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Protect More Sites', 'wordfence') : __('Upgrade to Premium', 'wordfence')), 'linkNewWindow' => true, 'statusTitle' => __('Malware Signatures Status', 'wordfence'), 'statusList' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? array() : array(array( 'percentage' => 0.30, 'title' => __('Enable Premium Scan Signatures.', 'wordfence'), )), 'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'), ))->render(); ?> </li> <li> <?php echo wfView::create('common/status-detail', array( 'id' => 'wf-scanner-reputation', 'percentage' => $scanner->reputationStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Reputation Checks', 'wordfence'), 'subtitle' => __('Check spam & spamvertising blocklists', 'wordfence'), 'link' => $optionsURL . '#wf-scanner-options-general', 'linkLabel' => __('Manage Options', 'wordfence'), 'statusTitle' => __('Reputation Check Status', 'wordfence'), 'statusList' => $scanner->reputationStatusList(), 'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'), ))->render(); ?> </li> </ul> </li> </ul> </div> </div> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <?php if (wfConfig::get('betaThreatDefenseFeed')): ?> <ul class="wf-block-banner"> <li><?php esc_html_e('Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites.', 'wordfence'); ?></li> <li><a href="#" class="wf-btn wf-btn-default" id="wf-beta-disable"><?php esc_html_e('Turn Off Beta Signatures', 'wordfence'); ?></a></li> </ul> <?php endif; ?> <div class="wf-block-content"> <ul class="wf-block-list"> <li> <ul class="wf-block-list wf-block-list-horizontal wf-scan-navigation"> <li> <?php echo wfView::create('scanner/scan-starter', array( 'running' => wfScanner::shared()->isRunning(), ))->render(); ?> </li> <li> <?php echo wfView::create('common/block-navigation-option', array( 'id' => 'wf-scan-option-support', 'img' => 'support.svg', 'title' => __('Help', 'wordfence'), 'subtitle' => __('Find the documentation and help you need', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceSupport'), ))->render(); ?> </li> <li> <?php echo wfView::create('common/block-navigation-option', array( 'id' => 'wf-scan-option-all-options', 'img' => 'options.svg', 'title' => __('Scan Options and Scheduling', 'wordfence'), 'subtitle' => __('Manage scan options including scheduling', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options'), ))->render(); ?> </li> </ul> </li> <li id="wf-scan-progress-bar"> <?php echo wfView::create('scanner/scan-progress', array( 'scanner' => $scanner, 'running' => wfScanner::shared()->isRunning(), ))->render(); ?> </li> </ul> </div> </div> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <?php echo wfView::create('scanner/scan-progress-detailed', array( 'scanner' => $scanner, ))->render(); ?> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <?php echo wfView::create('scanner/scan-results', array( 'scanner' => $scanner, 'issues' => $issues, ))->render(); ?> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <?php echo wfView::create('scanner/site-cleaning-bottom', array( ))->render(); ?> </div> </div> </div> <!-- end container --> </div> <script type="application/javascript"> (function($) { $(function() { WFAD.updateActivityLog(); WFAD.startActivityLogUpdates(); }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfTmpl_scannerDelete"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Are you sure you want to delete?', 'wordfence'), 'messageHTML' => '<p class="wf-callout-warning"><i class="wf-fa wf-fa-exclamation-triangle" aria-hidden="true"></i> ' . wp_kses(__('<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.', 'wordfence'), array('strong'=>array())) . '</p>' . '<p>' . wp_kses(sprintf( /* translators: Support URL. */ __('Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files. If you\'d like to learn more, <a href="%s" target="_blank" rel="noopener noreferrer">click here for our help article</a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_BULK_DELETE_WARNING)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . '</p>', 'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-default'), 'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Delete Files', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-danger')), ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_scannerRepair"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Are you sure you want to repair?', 'wordfence'), 'message' => __('Do not repair files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.', 'wordfence'), 'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'), 'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Repair Files', 'wordfence'), 'link' => '#')), ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_scannerStop"> <?php echo wfView::create('common/modal-prompt', array( 'title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#'), ))->render(); ?> </script> <?php echo wfView::create('scanner/site-cleaning')->render(); echo wfView::create('scanner/site-cleaning-high-sense')->render(); echo wfView::create('scanner/site-cleaning-beta-sigs')->render(); echo wfView::create('scanner/no-issues')->render(); echo wfView::create('scanner/issue-wfUpgrade')->render(); echo wfView::create('scanner/issue-wfPluginUpgrade')->render(); echo wfView::create('scanner/issue-wfThemeUpgrade')->render(); echo wfView::create('scanner/issue-wfPluginRemoved')->render(); echo wfView::create('scanner/issue-wfPluginAbandoned')->render(); echo wfView::create('scanner/issue-wfPluginVulnerable')->render(); echo wfView::create('scanner/issue-file')->render(); echo wfView::create('scanner/issue-skippedPaths')->render(); echo wfView::create('scanner/issue-knownfile')->render(); echo wfView::create('scanner/issue-configReadable')->render(); echo wfView::create('scanner/issue-publiclyAccessible')->render(); echo wfView::create('scanner/issue-coreUnknown')->render(); echo wfView::create('scanner/issue-diskSpace')->render(); echo wfView::create('scanner/issue-wafStatus')->render(); echo wfView::create('scanner/issue-geoipSupport')->render(); echo wfView::create('scanner/issue-easyPassword')->render(); echo wfView::create('scanner/issue-commentBadURL')->render(); echo wfView::create('scanner/issue-postBadURL')->render(); echo wfView::create('scanner/issue-postBadTitle')->render(); echo wfView::create('scanner/issue-optionBadURL')->render(); echo wfView::create('scanner/issue-database')->render(); echo wfView::create('scanner/issue-checkSpamIP')->render(); echo wfView::create('scanner/issue-spamvertizeCheck')->render(); echo wfView::create('scanner/issue-checkGSB')->render(); echo wfView::create('scanner/issue-checkHowGetIPs')->render(); echo wfView::create('scanner/issue-suspiciousAdminUsers')->render(); echo wfView::create('scanner/issue-timelimit')->render(); //Currently unused echo wfView::create('scanner/issue-wpscan_fullPathDiscl')->render(); echo wfView::create('scanner/issue-wpscan_directoryList')->render(); if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.tour1 = function() { WFAD.tour('wfNewTour1', 'wf-section-scan', 'top', 'left', null, WFAD.tour2); }; WFAD.tour2 = function() { WFAD.tour('wfNewTour2', 'wf-scan-option-all-options', 'right', 'right', WFAD.tour1, WFAD.tour3); }; WFAD.tour3 = function() { WFAD.tour('wfNewTour3', 'wf-scan-starter', 'left', 'left', WFAD.tour2, WFAD.tourComplete); }; WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_SCAN); ?>'); }; <?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_SCAN)): ?> if (!WFAD.isSmallScreen) { WFAD.tour1(); } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfNewTour1"> <div> <h3><?php esc_html_e('Scan', 'wordfence'); ?></h3> <p><?php esc_html_e('A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site\'s online reputation.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> <li>•</li> <li>•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfNewTour2"> <div> <h3><?php esc_html_e('Manage Scan Settings', 'wordfence'); ?></h3> <p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p> <p><?php esc_html_e('Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li class="wf-active">•</li> <li>•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfNewTour3"> <div> <h3><?php esc_html_e('Start Your First Scan', 'wordfence'); ?></h3> <p><?php esc_html_e('By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li>•</li> <li class="wf-active">•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?> <?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_SCAN)): ?> <script type="application/javascript"> (function($) { $(function() { WFAD.tour1 = function() { WFAD.tour('wfUpgradeTour1', 'wf-scan-option-all-options', 'right', 'right', null, WFAD.tour2); }; WFAD.tour2 = function() { WFAD.tour('wfUpgradeTour2', 'wf-scan-starter', 'left', 'left', WFAD.tour1, WFAD.tourComplete); }; WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_SCAN); ?>'); }; <?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_SCAN)): ?> if (!WFAD.isSmallScreen) { WFAD.tour1(); } <?php endif; ?> }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfUpgradeTour1"> <div> <h3><?php esc_html_e('Scan Options & Settings', 'wordfence'); ?></h3> <p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p> <p class="wf-center"><?php esc_html_e('All of your scan options, including scheduling, are now located here.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li class="wf-active">•</li> <li>•</li> </ul> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <script type="text/x-jquery-template" id="wfUpgradeTour2"> <div> <h3><?php esc_html_e('Scan Progress and Activity', 'wordfence'); ?></h3> <p><?php esc_html_e('Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings.', 'wordfence'); ?></p> <div class="wf-pointer-footer"> <ul class="wf-tour-pagination"> <li>•</li> <li class="wf-active">•</li> </ul> <div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div> <div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div> </div> <div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div> </div> </script> <?php endif; ?> <script type="application/javascript"> (function($) { $(function() { $('#wf-beta-disable').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.setOption('betaThreatDefenseFeed', 0, function() { window.location.reload(true); }); }); }); })(jQuery); </script>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfIssues.php������������������������������������������������������������������������������������0000644�����������������00000064252�15233113245�0007643 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wfUtils.php'); class wfIssues { //Possible responses from `addIssue` const ISSUE_ADDED = 'a'; const ISSUE_UPDATED = 'u'; const ISSUE_DUPLICATE = 'd'; const ISSUE_IGNOREP = 'ip'; const ISSUE_IGNOREC = 'ic'; //Possible status message states const STATUS_NONE = 'n'; //Default state before running const STATUS_SKIPPED = 's'; //The scan job was skipped because it didn't need to run const STATUS_IGNORED = 'i'; //The scan job found an issue, but it matched an entry in the ignore list const STATUS_PROBLEM = 'p'; //The scan job found an issue const STATUS_SECURE = 'r'; //The scan job found no issues const STATUS_FAILED = 'f'; //The scan job failed const STATUS_SUCCESS = 'c'; //The scan job succeeded const STATUS_PAIDONLY = 'x'; //Possible scan failure types const SCAN_FAILED_GENERAL = 'general'; const SCAN_FAILED_TIMEOUT = 'timeout'; const SCAN_FAILED_DURATION_REACHED = 'duration'; const SCAN_FAILED_VERSION_CHANGE = 'versionchange'; const SCAN_FAILED_FORK_FAILED = 'forkfailed'; const SCAN_FAILED_CALLBACK_TEST_FAILED = 'callbackfailed'; const SCAN_FAILED_START_TIMEOUT = 'starttimeout'; const SCAN_FAILED_API_SSL_UNAVAILABLE = 'sslunavailable'; const SCAN_FAILED_API_CALL_FAILED = 'apifailed'; const SCAN_FAILED_API_INVALID_RESPONSE = 'apiinvalid'; const SCAN_FAILED_API_ERROR_RESPONSE = 'apierror'; const SEVERITY_NONE = 0; const SEVERITY_LOW = 25; const SEVERITY_MEDIUM = 50; const SEVERITY_HIGH = 75; const SEVERITY_CRITICAL = 100; private $db = false; //Properties that are serialized on sleep: private $updateCalled = false; private $issuesTable = ''; private $pendingIssuesTable = ''; private $maxIssues = 0; private $newIssues = array(); public $totalIssues = 0; public $totalIgnoredIssues = 0; private $totalIssuesBySeverity = array(); public static $issueSeverities = array( 'checkGSB' => wfIssues::SEVERITY_CRITICAL, 'checkSpamIP' => wfIssues::SEVERITY_HIGH, 'spamvertizeCheck' => wfIssues::SEVERITY_CRITICAL, 'commentBadURL' => wfIssues::SEVERITY_LOW, 'postBadTitle' => wfIssues::SEVERITY_HIGH, 'postBadURL' => wfIssues::SEVERITY_HIGH, 'file' => wfIssues::SEVERITY_CRITICAL, 'timelimit' => wfIssues::SEVERITY_HIGH, 'checkHowGetIPs' => wfIssues::SEVERITY_HIGH, 'diskSpace' => wfIssues::SEVERITY_HIGH, 'wafStatus' => wfIssues::SEVERITY_CRITICAL, 'configReadable' => wfIssues::SEVERITY_CRITICAL, 'wfPluginVulnerable' => wfIssues::SEVERITY_HIGH, 'coreUnknown' => wfIssues::SEVERITY_HIGH, 'easyPasswordWeak' => wfIssues::SEVERITY_HIGH, 'knownfile' => wfIssues::SEVERITY_HIGH, 'optionBadURL' => wfIssues::SEVERITY_HIGH, 'publiclyAccessible' => wfIssues::SEVERITY_HIGH, 'suspiciousAdminUsers' => wfIssues::SEVERITY_HIGH, 'wfPluginAbandoned' => wfIssues::SEVERITY_MEDIUM, 'wfPluginRemoved' => wfIssues::SEVERITY_CRITICAL, 'wfPluginUpgrade' => wfIssues::SEVERITY_MEDIUM, 'wfThemeUpgrade' => wfIssues::SEVERITY_MEDIUM, 'wfUpgrade' => wfIssues::SEVERITY_HIGH, 'wpscan_directoryList' => wfIssues::SEVERITY_HIGH, 'wpscan_fullPathDiscl' => wfIssues::SEVERITY_HIGH, ); public static function validIssueTypes() { return array('checkHowGetIPs', 'checkSpamIP', 'commentBadURL', 'configReadable', 'coreUnknown', 'database', 'diskSpace', 'wafStatus', 'easyPassword', 'file', 'geoipSupport', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'publiclyAccessible', 'spamvertizeCheck', 'suspiciousAdminUsers', 'timelimit', 'wfPluginAbandoned', 'wfPluginRemoved', 'wfPluginUpgrade', 'wfPluginVulnerable', 'wfThemeUpgrade', 'wfUpgrade', 'wpscan_directoryList', 'wpscan_fullPathDiscl', 'skippedPaths'); } public static function statusPrep(){ wfConfig::set_ser('wfStatusStartMsgs', array()); wordfence::status(10, 'info', "SUM_PREP:Preparing a new scan."); wfIssues::updateScanStillRunning(); } public static function statusStart($message) { $statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array()); $statusStartMsgs[] = $message; wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs); wordfence::status(10, 'info', 'SUM_START:' . $message); wfIssues::updateScanStillRunning(); return count($statusStartMsgs) - 1; } public static function statusEnd($index, $state) { $statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array()); if ($state == self::STATUS_SKIPPED) { wordfence::status(10, 'info', 'SUM_ENDSKIPPED:' . $statusStartMsgs[$index]); } else if ($state == self::STATUS_IGNORED) { wordfence::status(10, 'info', 'SUM_ENDIGNORED:' . $statusStartMsgs[$index]); } else if ($state == self::STATUS_PROBLEM) { wordfence::status(10, 'info', 'SUM_ENDBAD:' . $statusStartMsgs[$index]); } else if ($state == self::STATUS_SECURE) { wordfence::status(10, 'info', 'SUM_ENDOK:' . $statusStartMsgs[$index]); } else if ($state == self::STATUS_FAILED) { wordfence::status(10, 'info', 'SUM_ENDFAILED:' . $statusStartMsgs[$index]); } else if ($state == self::STATUS_SUCCESS) { wordfence::status(10, 'info', 'SUM_ENDSUCCESS:' . $statusStartMsgs[$index]); } wfIssues::updateScanStillRunning(); $statusStartMsgs[$index] = ''; wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs); } public static function statusEndErr() { $statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array()); for ($i = 0; $i < count($statusStartMsgs); $i++) { if (empty($statusStartMsgs[$i]) === false) { wordfence::status(10, 'info', 'SUM_ENDERR:' . $statusStartMsgs[$i]); $statusStartMsgs[$i] = ''; } } wfIssues::updateScanStillRunning(); } public static function statusPaidOnly($message) { wordfence::status(10, 'info', "SUM_PAIDONLY:" . $message); wfIssues::updateScanStillRunning(); } public static function statusDisabled($message) { wordfence::status(10, 'info', "SUM_DISABLED:" . $message); wfIssues::updateScanStillRunning(); } public static function updateScanStillRunning($running = true) { $timestamp = time(); if (!$running) { $timestamp = 0; } wfConfig::set('wf_scanLastStatusTime', $timestamp); } /** * Returns false if the scan has not been detected as failed. If it has, returns a constant corresponding to the reason. * * @return bool|string */ public static function hasScanFailed() { $lastStatusUpdate = self::lastScanStatusUpdate(); if ($lastStatusUpdate !== false && wfScanner::shared()->isRunning()) { $threshold = WORDFENCE_SCAN_FAILURE_THRESHOLD; if (time() - $lastStatusUpdate > $threshold) { return self::SCAN_FAILED_TIMEOUT; } } $scanStartAttempt = wfConfig::get('scanStartAttempt', 0); if ($scanStartAttempt && time() - $scanStartAttempt > WORDFENCE_SCAN_START_FAILURE_THRESHOLD) { return self::SCAN_FAILED_START_TIMEOUT; } $recordedFailure = wfConfig::get('lastScanFailureType'); switch ($recordedFailure) { case self::SCAN_FAILED_GENERAL: case self::SCAN_FAILED_DURATION_REACHED: case self::SCAN_FAILED_VERSION_CHANGE: case self::SCAN_FAILED_FORK_FAILED: case self::SCAN_FAILED_CALLBACK_TEST_FAILED: case self::SCAN_FAILED_API_SSL_UNAVAILABLE: case self::SCAN_FAILED_API_CALL_FAILED: case self::SCAN_FAILED_API_INVALID_RESPONSE: case self::SCAN_FAILED_API_ERROR_RESPONSE: return $recordedFailure; } return false; } /** * Returns false if the scan has not been detected as timed out. If it has, it returns the timestamp of the last status update. * * @return bool|int */ public static function lastScanStatusUpdate() { if (wfConfig::get('wf_scanLastStatusTime', 0) === 0) { return false; } $threshold = WORDFENCE_SCAN_FAILURE_THRESHOLD; return (time() > wfConfig::get('wf_scanLastStatusTime', 0) + $threshold) ? wfConfig::get('wf_scanLastStatusTime', 0) : false; } /** * Returns the singleton wfIssues. * * @return wfIssues */ public static function shared() { static $_issues = null; if ($_issues === null) { $_issues = new wfIssues(); } return $_issues; } public function __sleep(){ //Same order here as vars above return array('updateCalled', 'issuesTable', 'pendingIssuesTable', 'maxIssues', 'newIssues', 'totalIssues', 'totalIgnoredIssues', 'totalIssuesBySeverity'); } public function __construct(){ $this->issuesTable = wfDB::networkTable('wfIssues'); $this->pendingIssuesTable = wfDB::networkTable('wfPendingIssues'); $this->maxIssues = wfConfig::get('scan_maxIssues', 0); } public function __wakeup(){ $this->db = new wfDB(); } public function addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) { return $this->_addIssue('issue', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed); } public function addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData) { return $this->_addIssue('pending', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData); } /** * Create a new issue * * @param string $group The issue type (e.g., issue or pending * @param string $type * @param int $severity * @param string $ignoreP string to compare against for permanent ignores * @param string $ignoreC string to compare against for ignoring until something changes * @param string $shortMsg * @param string $longMsg * @param array $templateData * @param bool $alreadyHashed If true, don't re-hash $ignoreP and $ignoreC * @return string One of the ISSUE_ constants */ private function _addIssue($group, $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) { if ($group == 'pending') { $table = $this->pendingIssuesTable; } else { $table = $this->issuesTable; } if (!$alreadyHashed) { $ignoreP = md5($ignoreP); $ignoreC = md5($ignoreC); } $results = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$table} WHERE (ignoreP = '%s' OR ignoreC = '%s')", $ignoreP, $ignoreC); foreach ($results as $row) { if ($row['status'] == 'new' && ($row['ignoreC'] == $ignoreC || $row['ignoreP'] == $ignoreP)) { if ($type != 'file' && $type != 'database') { //Filter out duplicate new issues except for infected files because we want to see all infections even if file contents are identical return self::ISSUE_DUPLICATE; } } if ($row['status'] == 'ignoreP' && $row['ignoreP'] == $ignoreP) { $this->totalIgnoredIssues++; return self::ISSUE_IGNOREP; } //Always ignore else if ($row['status'] == 'ignoreC' && $row['ignoreC'] == $ignoreC) { $this->totalIgnoredIssues++; return self::ISSUE_IGNOREC; } //Unchanged, ignore else if ($row['status'] == 'ignoreC') { $updateID = $row['id']; //Re-use the existing issue row break; } } if ($group != 'pending') { if (!array_key_exists($severity, $this->totalIssuesBySeverity)) { $this->totalIssuesBySeverity[$severity] = 0; } $this->totalIssuesBySeverity[$severity]++; $this->totalIssues++; if (empty($this->maxIssues) || $this->totalIssues <= $this->maxIssues) { $this->newIssues[] = array( 'type' => $type, 'severity' => $severity, 'ignoreP' => $ignoreP, 'ignoreC' => $ignoreC, 'shortMsg' => $shortMsg, 'longMsg' => $longMsg, 'tmplData' => $templateData ); } } if (isset($updateID)) { if ($group !== 'pending' && wfCentral::isConnected()) { wfCentral::sendIssue(array( 'id' => $updateID, 'lastUpdated' => time(), 'type' => $type, 'severity' => $severity, 'ignoreP' => $ignoreP, 'ignoreC' => $ignoreC, 'shortMsg' => $shortMsg, 'longMsg' => $longMsg, 'data' => $templateData, )); } $this->getDB()->queryWrite( "UPDATE {$table} SET lastUpdated = UNIX_TIMESTAMP(), status = '%s', type = '%s', severity = %d, ignoreP = '%s', ignoreC = '%s', shortMsg = '%s', longMsg = '%s', data = '%s' WHERE id = %d", 'new', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, serialize($templateData), $updateID); return self::ISSUE_UPDATED; } $this->getDB()->queryWrite("INSERT INTO {$table} (time, lastUpdated, status, type, severity, ignoreP, ignoreC, shortMsg, longMsg, data) VALUES (UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s')", 'new', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, serialize($templateData)); if ($group !== 'pending' && wfCentral::isConnected()) { global $wpdb; wfCentral::sendIssue(array( 'id' => $wpdb->insert_id, 'status' => 'new', 'time' => time(), 'lastUpdated' => time(), 'type' => $type, 'severity' => $severity, 'ignoreP' => $ignoreP, 'ignoreC' => $ignoreC, 'shortMsg' => $shortMsg, 'longMsg' => $longMsg, 'data' => $templateData, )); } return self::ISSUE_ADDED; } public function deleteIgnored(){ if (wfCentral::isConnected()) { $result = $this->getDB()->querySelect("SELECT id from " . $this->issuesTable . " where status='ignoreP' or status='ignoreC'"); $issues = array(); foreach ($result as $row) { $issues[] = $row['id']; } wfCentral::deleteIssues($issues); } $this->getDB()->queryWrite("delete from " . $this->issuesTable . " where status='ignoreP' or status='ignoreC'"); } public function deleteNew($types = null) { if (!is_array($types)) { if (wfCentral::isConnected()) { wfCentral::deleteNewIssues(); } $this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new'"); } else { if (wfCentral::isConnected()) { wfCentral::deleteIssueTypes($types, 'new'); } $query = "DELETE FROM {$this->issuesTable} WHERE status = 'new' AND type IN (" . implode(',', array_fill(0, count($types), "'%s'")) . ")"; array_unshift($types, $query); call_user_func_array(array($this->getDB(), 'queryWrite'), $types); } } public function ignoreAllNew(){ if (wfCentral::isConnected()) { $issues = $this->getDB()->querySelect('SELECT * FROM ' . $this->issuesTable . ' WHERE status=\'new\''); if ($issues) { wfCentral::sendIssues($issues); } } $this->getDB()->queryWrite("update " . $this->issuesTable . " set status='ignoreC' where status='new'"); } public function emailNewIssues($timeLimitReached = false, $scanController = false){ $level = wfConfig::getAlertLevel(); $emails = wfConfig::getAlertEmails(); if (!count($emails)) { return; } $shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url()); $subject = "[Wordfence Alert] Problems found on $shortSiteURL"; if(sizeof($emails) < 1){ return; } if($level < 1){ return; } $needsToAlert = false; foreach ($this->totalIssuesBySeverity as $issueSeverity => $totalIssuesBySeverity) { if ($issueSeverity >= $level && $totalIssuesBySeverity > 0) { $needsToAlert = true; break; } } if (!$needsToAlert) { return; } $emailedIssues = wfConfig::get_ser('emailedIssuesList', array()); if(! is_array($emailedIssues)){ $emailedIssues = array(); } $overflowCount = $this->totalIssues - count($this->newIssues); $finalIssues = array(); $previousIssues = array(); foreach($this->newIssues as $newIssue){ $alreadyEmailed = false; foreach($emailedIssues as $emailedIssue){ if($newIssue['ignoreP'] == $emailedIssue['ignoreP'] || $newIssue['ignoreC'] == $emailedIssue['ignoreC']){ $alreadyEmailed = true; $previousIssues[] = $newIssue; break; } } if(! $alreadyEmailed){ $finalIssues[] = $newIssue; } else { $overflowCount--; } } if(sizeof($finalIssues) < 1){ return; } $this->newIssues = array(); $this->totalIssues = 0; $totals = array(); foreach($finalIssues as $i){ $emailedIssues[] = array( 'ignoreC' => $i['ignoreC'], 'ignoreP' => $i['ignoreP'] ); if (!array_key_exists($i['severity'], $totals)) { $totals[$i['severity']] = 0; } $totals[$i['severity']]++; } wfConfig::set_ser('emailedIssuesList', $emailedIssues); $needsToAlert = false; foreach ($totals as $issueSeverity => $totalIssuesBySeverity) { if ($issueSeverity >= $level && $totalIssuesBySeverity > 0) { $needsToAlert = true; break; } } if (!$needsToAlert) { return; } $content = wfUtils::tmpl('email_newIssues.php', array( 'isPaid' => wfConfig::get('isPaid'), 'issues' => $finalIssues, 'previousIssues' => $previousIssues, 'totals' => $totals, 'level' => $level, 'issuesNotShown' => $overflowCount, 'adminURL' => get_admin_url(), 'timeLimitReached' => $timeLimitReached, 'scanController' => ($scanController ? $scanController : wfScanner::shared()), )); foreach ($emails as $email) { $uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content); wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html'); } } public function clearEmailedStatus($issues) { if (empty($issues)) { return; } $emailed_issues = wfConfig::get_ser('emailedIssuesList', array()); if (!is_array($emailed_issues)) { return; } $updated = array(); foreach ($emailed_issues as $ei) { $cleared = false; foreach ($issues as $issue) { if ($issue['ignoreP'] == $ei['ignoreP'] || $issue['ignoreC'] == $ei['ignoreC']) { //Discard this one $cleared = true; } } if (!$cleared) { $updated[] = $ei; } } wfConfig::set_ser('emailedIssuesList', $updated); } public function deleteIssue($id){ $this->clearEmailedStatus(array($this->getIssueByID($id))); $this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id); if (wfCentral::isConnected()) { wfCentral::deleteIssue($id); } } public function deleteUpdateIssues($type) { $issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type); $this->clearEmailedStatus($issues); $this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type); if (wfCentral::isConnected()) { wfCentral::deleteIssueTypes(array($type)); } } public function deleteAllUpdateIssues() { $issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')"); $this->clearEmailedStatus($issues); $this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')"); if (wfCentral::isConnected()) { wfCentral::deleteIssueTypes(array('wfUpgrade', 'wfPluginUpgrade', 'wfThemeUpgrade')); } } public function updateIssue($id, $status){ //ignoreC, ignoreP, delete or new if($status == 'delete'){ if (wfCentral::isConnected()) { wfCentral::deleteIssue($id); } $this->clearEmailedStatus(array($this->getIssueByID($id))); $this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id); } else if($status == 'ignoreC' || $status == 'ignoreP' || $status == 'new'){ $this->getDB()->queryWrite("update " . $this->issuesTable . " set status='%s' where id=%d", $status, $id); if (wfCentral::isConnected()) { $issue = $this->getDB()->querySelect('SELECT * FROM ' . $this->issuesTable . ' where id=%d', $id); if ($issue) { wfCentral::sendIssues($issue); } } } } public function getIssueByID($id) { $rec = $this->getDB()->querySingleRec("select * from " . $this->issuesTable . " where id=%d", $id); $rec['data'] = unserialize($rec['data']); return $rec; } public function getIssueCounts() { global $wpdb; $counts = $wpdb->get_results('SELECT COUNT(*) AS c, status FROM ' . $this->issuesTable . ' WHERE status = "new" OR status = "ignoreP" OR status = "ignoreC" GROUP BY status', ARRAY_A); $result = array(); foreach ($counts as $row) { $result[$row['status']] = $row['c']; } return $result; } public function getIssues($offset = 0, $limit = 100, $ignoredOffset = 0, $ignoredLimit = 100) { /** @var wpdb $wpdb */ global $wpdb; $siteCleaningTypes = array('file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers'); $sortTagging = 'CASE'; foreach ($siteCleaningTypes as $index => $t) { $sortTagging .= ' WHEN type = \'' . esc_sql($t) . '\' THEN ' . ((int) $index); } $sortTagging .= ' ELSE 999 END'; $ret = array( 'new' => array(), 'ignored' => array() ); $userIni = ini_get('user_ini.filename'); $q1 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'new' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $offset, $limit); $q2 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'ignoreP' OR status = 'ignoreC' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $ignoredOffset, $ignoredLimit); $q = array_merge($q1, $q2); foreach($q as $i){ $i['data'] = unserialize($i['data']); $i['timeAgo'] = wfUtils::makeTimeAgo(time() - $i['time']); $i['displayTime'] = wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $i['time']); $i['longMsg'] = wp_kses($i['longMsg'], 'post'); if($i['status'] == 'new'){ $ret['new'][] = $i; } else if($i['status'] == 'ignoreP' || $i['status'] == 'ignoreC'){ $ret['ignored'][] = $i; } else { error_log("Issue has bad status: " . $i['status']); continue; } } foreach($ret as $status => &$issueList){ for($i = 0; $i < sizeof($issueList); $i++){ if ($issueList[$i]['type'] == 'file' || $issueList[$i]['type'] == 'knownfile') { $localFile = $issueList[$i]['data']['file']; if ($localFile != '.htaccess' && $localFile != $userIni) { $localFile = ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $localFile); } else { $localFile = ABSPATH . '/' . $localFile; } if(file_exists($localFile)){ $issueList[$i]['data']['fileExists'] = true; } else { $issueList[$i]['data']['fileExists'] = ''; } } if ($issueList[$i]['type'] == 'database') { $issueList[$i]['data']['optionExists'] = false; if (!empty($issueList[$i]['data']['site_id'])) { $table_options = wfDB::blogTable('options', $issueList[$i]['data']['site_id']); $issueList[$i]['data']['optionExists'] = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM {$table_options} WHERE option_name = %s", $issueList[$i]['data']['option_name'])) > 0; } } $issueList[$i]['issueIDX'] = $i; if (isset($issueList[$i]['data']['cType'])) { $issueList[$i]['data']['ucType'] = ucwords($issueList[$i]['data']['cType']); } } } return $ret; //array of lists of issues by status } public function getPendingIssues($offset = 0, $limit = 100){ /** @var wpdb $wpdb */ global $wpdb; $issues = $this->getDB()->querySelect("SELECT * FROM {$this->pendingIssuesTable} ORDER BY id ASC LIMIT %d,%d", $offset, $limit); foreach($issues as &$i){ $i['data'] = unserialize($i['data']); } return $issues; } public function getFixableIssueCount() { global $wpdb; $issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:6:\"canFix\";b:1;%'"); $count = 0; foreach ($issues as $i) { $i['data'] = unserialize($i['data']); if (isset($i['data']['canFix']) && $i['data']['canFix']) { $count++; } } return $count; } public function getDeleteableIssueCount() { global $wpdb; $issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:9:\"canDelete\";b:1;%'"); $count = 0; foreach ($issues as $i) { $i['data'] = unserialize($i['data']); if (isset($i['data']['canDelete']) && $i['data']['canDelete']) { $count++; } } return $count; } public function getIssueCount() { return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->issuesTable . " WHERE status = 'new'"); } public function getPendingIssueCount() { return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->pendingIssuesTable . " WHERE status = 'new'"); } public function getLastIssueUpdateTimestamp() { return (int) $this->getDB()->querySingle("select MAX(lastUpdated) from " . $this->issuesTable); } public function reconcileUpgradeIssues($report = null, $useCachedValued = false) { if ($report === null) { $report = new wfActivityReport(); } $updatesNeeded = $report->getUpdatesNeeded($useCachedValued); if ($updatesNeeded) { if (!$updatesNeeded['core']) { $this->deleteUpdateIssues('wfUpgrade'); } if ($updatesNeeded['plugins']) { $upgradeNames = array(); foreach ($updatesNeeded['plugins'] as $p) { $name = $p['Name']; $upgradeNames[$name] = 1; } $upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfPluginUpgrade'"); foreach ($upgradeIssues as $issue) { $data = unserialize($issue['data']); $name = $data['Name']; if (!isset($upgradeNames[$name])) { //Some plugins don't have a slug associated with them, so we anchor on the name $this->deleteIssue($issue['id']); } } } else { $this->deleteUpdateIssues('wfPluginUpgrade'); } if ($updatesNeeded['themes']) { $upgradeNames = array(); foreach ($updatesNeeded['themes'] as $t) { $name = $t['Name']; $upgradeNames[$name] = 1; } $upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfThemeUpgrade'"); foreach ($upgradeIssues as $issue) { $data = unserialize($issue['data']); $name = $data['Name']; if (!isset($upgradeNames[$name])) { //Some themes don't have a slug associated with them, so we anchor on the name $this->deleteIssue($issue['id']); } } } else { $this->deleteUpdateIssues('wfThemeUpgrade'); } } else { $this->deleteAllUpdateIssues(); } wfScanEngine::refreshScanNotification($this); } private function getDB(){ if(! $this->db){ $this->db = new wfDB(); } return $this->db; } /** * @return string */ public function getIssuesTable() { return $this->issuesTable; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfDateLocalization.php��������������������������������������������������������������������������0000644�����������������00001300256�15233113245�0011614 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfDateLocalization { static $localizations = array ( 'af-ZA' => 'Date.CultureInfo={name:"af-ZA",englishName:"Afrikaans (South Africa)",nativeName:"Afrikaans (Suid Afrika)",dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],abbreviatedDayNames:["Son","Maan","Dins","Woen","Dond","Vry","Sat"],shortestDayNames:["So","Ma","Di","Wo","Do","Vr","Sa"],firstLetterDayNames:["S","M","D","W","D","V","S"],monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],amDesignator:"",pmDesignator:"nm",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uarie)?/i,feb:/^feb(ruarie)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(ie)?/i,jul:/^jul(ie)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^so(n(dag)?)?/i,mon:/^ma(an(dag)?)?/i,tue:/^di(ns(dag)?)?/i,wed:/^wo(en(sdag)?)?/i,thu:/^do(nd(erdag)?)?/i,fri:/^vr(y(dag)?)?/i,sat:/^sa(t(erdag)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-AE' => 'Date.CultureInfo={name:"ar-AE",englishName:"Arabic (U.A.E.)",nativeName:"العربية (الإمارات العربية المتحدة)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-BH' => 'Date.CultureInfo={name:"ar-BH",englishName:"Arabic (Bahrain)",nativeName:"العربية (البحرين)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-DZ' => 'Date.CultureInfo={name:"ar-DZ",englishName:"Arabic (Algeria)",nativeName:"العربية (الجزائر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["جانفييه","فيفرييه","مارس","أفريل","مي","جوان","جوييه","أوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["جانفييه","فيفرييه","مارس","أفريل","مي","جوان","جوييه","أوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جانفييه/i,feb:/^فيفرييه/i,mar:/^مارس/i,apr:/^أفريل/i,may:/^مي/i,jun:/^جوان/i,jul:/^جوييه/i,aug:/^أوت/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-EG' => 'Date.CultureInfo={name:"ar-EG",englishName:"Arabic (Egypt)",nativeName:"العربية (مصر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-IQ' => 'Date.CultureInfo={name:"ar-IQ",englishName:"Arabic (Iraq)",nativeName:"العربية (العراق)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-JO' => 'Date.CultureInfo={name:"ar-JO",englishName:"Arabic (Jordan)",nativeName:"العربية (الأردن)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-KW' => 'Date.CultureInfo={name:"ar-KW",englishName:"Arabic (Kuwait)",nativeName:"العربية (الكويت)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-LB' => 'Date.CultureInfo={name:"ar-LB",englishName:"Arabic (Lebanon)",nativeName:"العربية (لبنان)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-LY' => 'Date.CultureInfo={name:"ar-LY",englishName:"Arabic (Libya)",nativeName:"العربية (ليبيا)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-MA' => 'Date.CultureInfo={name:"ar-MA",englishName:"Arabic (Morocco)",nativeName:"العربية (المملكة المغربية)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","ماي","يونيو","يوليوز","غشت","شتنبر","اكتوبر","نونبر","دجنبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","ماي","يونيو","يوليوز","غشت","شتنبر","اكتوبر","نونبر","دجنبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^ماي/i,jun:/^يونيو/i,jul:/^يوليوز/i,aug:/^غشت/i,sep:/^شتنبر/i,oct:/^اكتوبر/i,nov:/^نونبر/i,dec:/^دجنبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-OM' => 'Date.CultureInfo={name:"ar-OM",englishName:"Arabic (Oman)",nativeName:"العربية (عمان)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-QA' => 'Date.CultureInfo={name:"ar-QA",englishName:"Arabic (Qatar)",nativeName:"العربية (قطر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-SA' => 'Date.CultureInfo={name:"ar-SA",englishName:"Arabic (Saudi Arabia)",nativeName:"العربية (المملكة العربية السعودية)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["محرم","صفر","ربيع الأول","ربيع الثاني","جمادى الأولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],abbreviatedMonthNames:["محرم","صفر","ربيع الاول","ربيع الثاني","جمادى الاولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:1451,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dd/MMMM/yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd/MMMM/yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^محرم/i,feb:/^صفر/i,mar:/^ربيع الأول/i,apr:/^ربيع الثاني/i,may:/^جمادى الأولى/i,jun:/^جمادى الثانية/i,jul:/^رجب/i,aug:/^شعبان/i,sep:/^رمضان/i,oct:/^شوال/i,nov:/^ذو القعدة/i,dec:/^ذو الحجة/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-SY' => 'Date.CultureInfo={name:"ar-SY",englishName:"Arabic (Syria)",nativeName:"العربية (سوريا)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-TN' => 'Date.CultureInfo={name:"ar-TN",englishName:"Arabic (Tunisia)",nativeName:"العربية (تونس)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["جانفي","فيفري","مارس","افريل","ماي","جوان","جويلية","اوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["جانفي","فيفري","مارس","افريل","ماي","جوان","جويلية","اوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جانفي/i,feb:/^فيفري/i,mar:/^مارس/i,apr:/^افريل/i,may:/^ماي/i,jun:/^جوان/i,jul:/^جويلية/i,aug:/^اوت/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ar-YE' => 'Date.CultureInfo={name:"ar-YE",englishName:"Arabic (Yemen)",nativeName:"العربية (اليمن)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'az-Cyrl-AZ' => 'Date.CultureInfo={name:"az-Cyrl-AZ",englishName:"Azeri (Cyrillic, Azerbaijan)",nativeName:"Азәрбајҹан (Азәрбајҹан)",dayNames:["Базар","Базар ертәси","Чәршәнбә ахшамы","Чәршәнбә","Ҹүмә ахшамы","Ҹүмә","Шәнбә"],abbreviatedDayNames:["Б","Бе","Ча","Ч","Ҹа","Ҹ","Ш"],shortestDayNames:["Б","Бе","Ча","Ч","Ҹа","Ҹ","Ш"],firstLetterDayNames:["Б","Б","Ч","Ч","Ҹ","Ҹ","Ш"],monthNames:["Јанвар","Феврал","Март","Апрел","Мај","Ијун","Ијул","Август","Сентјабр","Октјабр","Нојабр","Декабр"],abbreviatedMonthNames:["Јан","Фев","Мар","Апр","Мај","Ијун","Ијул","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(вар)?/i,feb:/^фев(рал)?/i,mar:/^мар(т)?/i,apr:/^апр(ел)?/i,may:/^мај/i,jun:/^ијун/i,jul:/^ијул/i,aug:/^авг(уст)?/i,sep:/^сен(тјабр)?/i,oct:/^окт(јабр)?/i,nov:/^нојабр/i,dec:/^дек(абр)?/i,sun:/^базар/i,mon:/^базар ертәси/i,tue:/^чәршәнбә ахшамы/i,wed:/^чәршәнбә/i,thu:/^ҹүмә ахшамы/i,fri:/^ҹүмә/i,sat:/^шәнбә/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'az-Latn-AZ' => 'Date.CultureInfo={name:"az-Latn-AZ",englishName:"Azeri (Latin, Azerbaijan)",nativeName:"Azərbaycan­ılı (Azərbaycanca)",dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],abbreviatedDayNames:["B","Be","Ça","Ç","Ca","C","Ş"],shortestDayNames:["B","Be","Ça","Ç","Ca","C","Ş"],firstLetterDayNames:["B","B","Ç","Ç","C","C","Ş"],monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avgust","Sentyabr","Oktyabr","Noyabr","Dekabr"],abbreviatedMonthNames:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avg","Sen","Okt","Noy","Dek"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^yan(var)?/i,feb:/^fev(ral)?/i,mar:/^mar(t)?/i,apr:/^apr(el)?/i,may:/^may/i,jun:/^iyun/i,jul:/^iyul/i,aug:/^avg(ust)?/i,sep:/^sen(tyabr)?/i,oct:/^okt(yabr)?/i,nov:/^noy(abr)?/i,dec:/^dek(abr)?/i,sun:/^bazar/i,mon:/^bazar ertəsi/i,tue:/^çərşənbə axşamı/i,wed:/^çərşənbə/i,thu:/^cümə axşamı/i,fri:/^cümə/i,sat:/^şənbə/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'be-BY' => 'Date.CultureInfo={name:"be-BY",englishName:"Belarusian (Belarus)",nativeName:"Беларускі (Беларусь)",dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],abbreviatedDayNames:["нд","пн","аў","ср","чц","пт","сб"],shortestDayNames:["нд","пн","аў","ср","чц","пт","сб"],firstLetterDayNames:["н","п","а","с","ч","п","с"],monthNames:["Студзень","Люты","Сакавік","Красавік","Май","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],abbreviatedMonthNames:["Сту","Лют","Сак","Кра","Май","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сне"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^сту(дзень)?/i,feb:/^лют(ы)?/i,mar:/^сак(авік)?/i,apr:/^кра(савік)?/i,may:/^май/i,jun:/^чэр(вень)?/i,jul:/^ліп(ень)?/i,aug:/^жні(вень)?/i,sep:/^вер(асень)?/i,oct:/^кас(трычнік)?/i,nov:/^ліс(тапад)?/i,dec:/^сне(жань)?/i,sun:/^нядзеля/i,mon:/^панядзелак/i,tue:/^аўторак/i,wed:/^серада/i,thu:/^чацвер/i,fri:/^пятніца/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'bg-BG' => 'Date.CultureInfo={name:"bg-BG",englishName:"Bulgarian (Bulgaria)",nativeName:"български (България)",dayNames:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],abbreviatedDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["не","по","вт","ср","че","пе","съ"],firstLetterDayNames:["н","п","в","с","ч","п","с"],monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],abbreviatedMonthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.M.yyyy \'г.\'",longDate:"dd MMMM yyyy \'г.\'",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy \'г.\' HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy \'г.\'"},regexPatterns:{jan:/^януари/i,feb:/^февруари/i,mar:/^март/i,apr:/^април/i,may:/^май/i,jun:/^юни/i,jul:/^юли/i,aug:/^август/i,sep:/^септември/i,oct:/^октомври/i,nov:/^ноември/i,dec:/^декември/i,sun:/^не((деля)?)?/i,mon:/^по((неделник)?)?/i,tue:/^вторник/i,wed:/^сряда/i,thu:/^че((твъртък)?)?/i,fri:/^пе((тък)?)?/i,sat:/^съ((бота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'bs-Latn-BA' => 'Date.CultureInfo={name:"bs-Latn-BA",englishName:"Bosnian (Bosnia and Herzegovina)",nativeName:"bosanski (Bosna i Hercegovina)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sri","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^nedjelja/i,mon:/^ponedjeljak/i,tue:/^utorak/i,wed:/^srijeda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ca-ES' => 'Date.CultureInfo={name:"ca-ES",englishName:"Catalan (Catalan)",nativeName:"català (català)",dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],abbreviatedDayNames:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],shortestDayNames:["dg","dl","dt","dc","dj","dv","ds"],firstLetterDayNames:["d","d","d","d","d","d","d"],monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],abbreviatedMonthNames:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, d\' / \'MMMM\' / \'yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d\' / \'MMMM\' / \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' / \'yyyy"},regexPatterns:{jan:/^gen(er)?/i,feb:/^feb(rer)?/i,mar:/^març/i,apr:/^abr(il)?/i,may:/^maig/i,jun:/^juny/i,jul:/^jul(iol)?/i,aug:/^ag(ost)?/i,sep:/^set(embre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(embre)?/i,dec:/^des(embre)?/i,sun:/^dg((.(umenge)?)?)?/i,mon:/^dl((.(lluns)?)?)?/i,tue:/^dt((.(marts)?)?)?/i,wed:/^dc((.(mecres)?)?)?/i,thu:/^dj((.(jous)?)?)?/i,fri:/^dv((.(vendres)?)?)?/i,sat:/^ds((.(ssabte)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'cs-CZ' => 'Date.CultureInfo={name:"cs-CZ",englishName:"Czech (Czech Republic)",nativeName:"čeština (Česká republika)",dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],abbreviatedDayNames:["ne","po","út","st","čt","pá","so"],shortestDayNames:["ne","po","út","st","čt","pá","so"],firstLetterDayNames:["n","p","ú","s","č","p","s"],monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],amDesignator:"dop.",pmDesignator:"odp.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^leden/i,feb:/^únor/i,mar:/^březen/i,apr:/^duben/i,may:/^květen/i,jun:/^červen/i,jul:/^červenec/i,aug:/^srpen/i,sep:/^září/i,oct:/^říjen/i,nov:/^listopad/i,dec:/^prosinec/i,sun:/^neděle/i,mon:/^pondělí/i,tue:/^úterý/i,wed:/^středa/i,thu:/^čtvrtek/i,fri:/^pátek/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'cy-GB' => 'Date.CultureInfo={name:"cy-GB",englishName:"Welsh (United Kingdom)",nativeName:"Cymraeg (y Deyrnas Unedig)",dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],abbreviatedDayNames:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],shortestDayNames:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],firstLetterDayNames:["S","L","M","M","I","G","S"],monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],abbreviatedMonthNames:["Ion","Chwe","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rhag"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ion(awr)?/i,feb:/^chwe(fror)?/i,mar:/^maw(rth)?/i,apr:/^ebr(ill)?/i,may:/^mai/i,jun:/^meh(efin)?/i,jul:/^gor(ffennaf)?/i,aug:/^aws(t)?/i,sep:/^med(i)?/i,oct:/^hyd(ref)?/i,nov:/^tach(wedd)?/i,dec:/^rhag(fyr)?/i,sun:/^dydd sul/i,mon:/^dydd llun/i,tue:/^dydd mawrth/i,wed:/^dydd mercher/i,thu:/^dydd iau/i,fri:/^dydd gwener/i,sat:/^dydd sadwrn/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'da-DK' => 'Date.CultureInfo={name:"da-DK",englishName:"Danish (Denmark)",nativeName:"dansk (Danmark)",dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],abbreviatedDayNames:["sø","ma","ti","on","to","fr","lø"],shortestDayNames:["sø","ma","ti","on","to","fr","lø"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(ts)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^søndag/i,mon:/^mandag/i,tue:/^tirsdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lørdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'de-AT' => 'Date.CultureInfo={name:"de-AT",englishName:"German (Austria)",nativeName:"Deutsch (Österreich)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jän","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, dd. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, dd. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jän(ner)?/i,feb:/^feb(ruar)?/i,mar:/^mär(z)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'de-CH' => 'Date.CultureInfo={name:"de-CH",englishName:"German (Switzerland)",nativeName:"Deutsch (Schweiz)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'de-DE' => 'Date.CultureInfo={name:"de-DE",englishName:"German (Germany)",nativeName:"Deutsch (Deutschland)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'de-LI' => 'Date.CultureInfo={name:"de-LI",englishName:"German (Liechtenstein)",nativeName:"Deutsch (Liechtenstein)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'de-LU' => 'Date.CultureInfo={name:"de-LU",englishName:"German (Luxembourg)",nativeName:"Deutsch (Luxemburg)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'dv-MV' => 'Date.CultureInfo={name:"dv-MV",englishName:"Divehi (Maldives)",nativeName:"ދިވެހިބަސް (ދިވެހި ރާއްޖެ)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["محرم","صفر","ربيع الأول","ربيع الثاني","جمادى الأولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],abbreviatedMonthNames:["محرم","صفر","ربيع الاول","ربيع الثاني","جمادى الاولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],amDesignator:"މކ",pmDesignator:"މފ",firstDayOfWeek:0,twoDigitYearMax:1451,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dd/MMMM/yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd/MMMM/yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^محرم/i,feb:/^صفر/i,mar:/^ربيع الأول/i,apr:/^ربيع الثاني/i,may:/^جمادى الأولى/i,jun:/^جمادى الثانية/i,jul:/^رجب/i,aug:/^شعبان/i,sep:/^رمضان/i,oct:/^شوال/i,nov:/^ذو القعدة/i,dec:/^ذو الحجة/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'el-GR' => 'Date.CultureInfo={name:"el-GR",englishName:"Greek (Greece)",nativeName:"ελληνικά (Ελλάδα)",dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],abbreviatedDayNames:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],shortestDayNames:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σά"],firstLetterDayNames:["Κ","Δ","Τ","Τ","Π","Π","Σ"],monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],abbreviatedMonthNames:["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],amDesignator:"πμ",pmDesignator:"μμ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ιαν(ουάριος)?/i,feb:/^φεβ(ρουάριος)?/i,mar:/^μάρτιος/i,apr:/^απρ(ίλιος)?/i,may:/^μάιος/i,jun:/^ιούνιος/i,jul:/^ιούλιος/i,aug:/^αύγουστος/i,sep:/^σεπ(τέμβριος)?/i,oct:/^οκτ(ώβριος)?/i,nov:/^νοέμβριος/i,dec:/^δεκ(έμβριος)?/i,sun:/^κυ(ρ(ιακή)?)?/i,mon:/^δε(υ(τέρα)?)?/i,tue:/^τρ(ι(τη)?)?/i,wed:/^τε(τ(άρτη)?)?/i,thu:/^πε(μ(πτη)?)?/i,fri:/^πα(ρ(ασκευή)?)?/i,sat:/^σά(β(βατο)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-029' => 'Date.CultureInfo={name:"en-029",englishName:"English (Caribbean)",nativeName:"English (Caribbean)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"MM/dd/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-AU' => 'Date.CultureInfo={name:"en-AU",englishName:"English (Australia)",nativeName:"English (Australia)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-BZ' => 'Date.CultureInfo={name:"en-BZ",englishName:"English (Belize)",nativeName:"English (Belize)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-CA' => 'Date.CultureInfo={name:"en-CA",englishName:"English (Canada)",nativeName:"English (Canada)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"MMMM d, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"MMMM d, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-GB' => 'Date.CultureInfo={name:"en-GB",englishName:"English (United Kingdom)",nativeName:"English (United Kingdom)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-IE' => 'Date.CultureInfo={name:"en-IE",englishName:"English (Ireland)",nativeName:"English (Eire)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-JM' => 'Date.CultureInfo={name:"en-JM",englishName:"English (Jamaica)",nativeName:"English (Jamaica)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-NZ' => 'Date.CultureInfo={name:"en-NZ",englishName:"English (New Zealand)",nativeName:"English (New Zealand)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-PH' => 'Date.CultureInfo={name:"en-PH",englishName:"English (Republic of the Philippines)",nativeName:"English (Philippines)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-TT' => 'Date.CultureInfo={name:"en-TT",englishName:"English (Trinidad and Tobago)",nativeName:"English (Trinidad y Tobago)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-US' => 'Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-ZA' => 'Date.CultureInfo={name:"en-ZA",englishName:"English (South Africa)",nativeName:"English (South Africa)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'en-ZW' => 'Date.CultureInfo={name:"en-ZW",englishName:"English (Zimbabwe)",nativeName:"English (Zimbabwe)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-AR' => 'Date.CultureInfo={name:"es-AR",englishName:"Spanish (Argentina)",nativeName:"Español (Argentina)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-BO' => 'Date.CultureInfo={name:"es-BO",englishName:"Spanish (Bolivia)",nativeName:"Español (Bolivia)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-CL' => 'Date.CultureInfo={name:"es-CL",englishName:"Spanish (Chile)",nativeName:"Español (Chile)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-CO' => 'Date.CultureInfo={name:"es-CO",englishName:"Spanish (Colombia)",nativeName:"Español (Colombia)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-CR' => 'Date.CultureInfo={name:"es-CR",englishName:"Spanish (Costa Rica)",nativeName:"Español (Costa Rica)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-DO' => 'Date.CultureInfo={name:"es-DO",englishName:"Spanish (Dominican Republic)",nativeName:"Español (República Dominicana)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-EC' => 'Date.CultureInfo={name:"es-EC",englishName:"Spanish (Ecuador)",nativeName:"Español (Ecuador)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-ES' => 'Date.CultureInfo={name:"es-ES",englishName:"Spanish (Spain)",nativeName:"español (España)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-GT' => 'Date.CultureInfo={name:"es-GT",englishName:"Spanish (Guatemala)",nativeName:"Español (Guatemala)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-HN' => 'Date.CultureInfo={name:"es-HN",englishName:"Spanish (Honduras)",nativeName:"Español (Honduras)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-MX' => 'Date.CultureInfo={name:"es-MX",englishName:"Spanish (Mexico)",nativeName:"Español (México)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-NI' => 'Date.CultureInfo={name:"es-NI",englishName:"Spanish (Nicaragua)",nativeName:"Español (Nicaragua)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-PA' => 'Date.CultureInfo={name:"es-PA",englishName:"Spanish (Panama)",nativeName:"Español (Panamá)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"MM/dd/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-PE' => 'Date.CultureInfo={name:"es-PE",englishName:"Spanish (Peru)",nativeName:"Español (Perú)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-PR' => 'Date.CultureInfo={name:"es-PR",englishName:"Spanish (Puerto Rico)",nativeName:"Español (Puerto Rico)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-PY' => 'Date.CultureInfo={name:"es-PY",englishName:"Spanish (Paraguay)",nativeName:"Español (Paraguay)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-SV' => 'Date.CultureInfo={name:"es-SV",englishName:"Spanish (El Salvador)",nativeName:"Español (El Salvador)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-UY' => 'Date.CultureInfo={name:"es-UY",englishName:"Spanish (Uruguay)",nativeName:"Español (Uruguay)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'es-VE' => 'Date.CultureInfo={name:"es-VE",englishName:"Spanish (Venezuela)",nativeName:"Español (Republica Bolivariana de Venezuela)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'et-EE' => 'Date.CultureInfo={name:"et-EE",englishName:"Estonian (Estonia)",nativeName:"eesti (Eesti)",dayNames:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],abbreviatedDayNames:["P","E","T","K","N","R","L"],shortestDayNames:["P","E","T","K","N","R","L"],firstLetterDayNames:["P","E","T","K","N","R","L"],monthNames:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],abbreviatedMonthNames:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],amDesignator:"EL",pmDesignator:"PL",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.MM.yyyy",longDate:"d. MMMM yyyy\'. a.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy\'. a.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy\'. a.\'"},regexPatterns:{jan:/^jaan(uar)?/i,feb:/^veebr(uar)?/i,mar:/^märts/i,apr:/^apr(ill)?/i,may:/^mai/i,jun:/^juuni/i,jul:/^juuli/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(oober)?/i,nov:/^nov(ember)?/i,dec:/^dets(ember)?/i,sun:/^pühapäev/i,mon:/^esmaspäev/i,tue:/^teisipäev/i,wed:/^kolmapäev/i,thu:/^neljapäev/i,fri:/^reede/i,sat:/^laupäev/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'eu-ES' => 'Date.CultureInfo={name:"eu-ES",englishName:"Basque (Basque)",nativeName:"euskara (euskara)",dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],abbreviatedDayNames:["ig.","al.","as.","az.","og.","or.","lr."],shortestDayNames:["ig","al","as","az","og","or","lr"],firstLetterDayNames:["i","a","a","a","o","o","l"],monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],abbreviatedMonthNames:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dddd, yyyy.\'eko\' MMMM\'k \'d",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, yyyy.\'eko\' MMMM\'k \'d HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"yyyy.\'eko\' MMMM"},regexPatterns:{jan:/^urt(.(arrila)?)?/i,feb:/^ots(.(aila)?)?/i,mar:/^mar(.(txoa)?)?/i,apr:/^api(.(rila)?)?/i,may:/^mai(.(atza)?)?/i,jun:/^eka(.(ina)?)?/i,jul:/^uzt(.(aila)?)?/i,aug:/^abu(.(ztua)?)?/i,sep:/^ira(.(ila)?)?/i,oct:/^urr(.(ia)?)?/i,nov:/^aza(.(roa)?)?/i,dec:/^abe(.(ndua)?)?/i,sun:/^ig((.(andea)?)?)?/i,mon:/^al((.(telehena)?)?)?/i,tue:/^as((.(teartea)?)?)?/i,wed:/^az((.(teazkena)?)?)?/i,thu:/^og((.(teguna)?)?)?/i,fri:/^or((.(tirala)?)?)?/i,sat:/^lr((.(runbata)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fa-IR' => 'Date.CultureInfo={name:"fa-IR",englishName:"Persian (Iran)",nativeName:"فارسى (ايران)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"ق.ظ",pmDesignator:"ب.ظ",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fi-FI' => 'Date.CultureInfo={name:"fi-FI",englishName:"Finnish (Finland)",nativeName:"suomi (Suomi)",dayNames:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],abbreviatedDayNames:["su","ma","ti","ke","to","pe","la"],shortestDayNames:["su","ma","ti","ke","to","pe","la"],firstLetterDayNames:["s","m","t","k","t","p","l"],monthNames:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],abbreviatedMonthNames:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM\'ta \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM\'ta \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM\'ta\'",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tammi(kuu)?/i,feb:/^helmi(kuu)?/i,mar:/^maalis(kuu)?/i,apr:/^huhti(kuu)?/i,may:/^touko(kuu)?/i,jun:/^kesä(kuu)?/i,jul:/^heinä(kuu)?/i,aug:/^elo(kuu)?/i,sep:/^syys(kuu)?/i,oct:/^loka(kuu)?/i,nov:/^marras(kuu)?/i,dec:/^joulu(kuu)?/i,sun:/^sunnuntai/i,mon:/^maanantai/i,tue:/^tiistai/i,wed:/^keskiviikko/i,thu:/^torstai/i,fri:/^perjantai/i,sat:/^lauantai/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fo-FO' => 'Date.CultureInfo={name:"fo-FO",englishName:"Faroese (Faroe Islands)",nativeName:"føroyskt (Føroyar)",dayNames:["sunnudagur","mánadagur","týsdagur","mikudagur","hósdagur","fríggjadagur","leygardagur"],abbreviatedDayNames:["sun","mán","týs","mik","hós","frí","leyg"],shortestDayNames:["su","má","tý","mi","hó","fr","ley"],firstLetterDayNames:["s","m","t","m","h","f","l"],monthNames:["januar","februar","mars","apríl","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"d. MMMM yyyy",shortTime:"HH.mm",longTime:"HH.mm.ss",fullDateTime:"d. MMMM yyyy HH.mm.ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(íl)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^su(n(nudagur)?)?/i,mon:/^má(n(adagur)?)?/i,tue:/^tý(s(dagur)?)?/i,wed:/^mi(k(udagur)?)?/i,thu:/^hó(s(dagur)?)?/i,fri:/^fr(í(ggjadagur)?)?/i,sat:/^ley(g(ardagur)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-BE' => 'Date.CultureInfo={name:"fr-BE",englishName:"French (Belgium)",nativeName:"français (Belgique)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-CA' => 'Date.CultureInfo={name:"fr-CA",englishName:"French (Canada)",nativeName:"français (Canada)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-CH' => 'Date.CultureInfo={name:"fr-CH",englishName:"French (Switzerland)",nativeName:"français (Suisse)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-FR' => 'Date.CultureInfo={name:"fr-FR",englishName:"French (France)",nativeName:"français (France)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-LU' => 'Date.CultureInfo={name:"fr-LU",englishName:"French (Luxembourg)",nativeName:"français (Luxembourg)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'fr-MC' => 'Date.CultureInfo={name:"fr-MC",englishName:"French (Principality of Monaco)",nativeName:"français (Principauté de Monaco)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'gl-ES' => 'Date.CultureInfo={name:"gl-ES",englishName:"Galician (Galician)",nativeName:"galego (galego)",dayNames:["domingo","luns","martes","mércores","xoves","venres","sábado"],abbreviatedDayNames:["dom","luns","mar","mér","xov","ven","sab"],shortestDayNames:["do","lu","ma","mé","xo","ve","sa"],firstLetterDayNames:["d","l","m","m","x","v","s"],monthNames:["xaneiro","febreiro","marzo","abril","maio","xuño","xullo","agosto","setembro","outubro","novembro","decembro"],abbreviatedMonthNames:["xan","feb","mar","abr","maio","xuñ","xull","ago","set","out","nov","dec"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^xan(eiro)?/i,feb:/^feb(reiro)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^maio/i,jun:/^xuñ(o)?/i,jul:/^xull(o)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dec(embro)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(1)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mé(r(cores)?)?/i,thu:/^xo(v(es)?)?/i,fri:/^ve(n(res)?)?/i,sat:/^sa(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'gu-IN' => 'Date.CultureInfo={name:"gu-IN",englishName:"Gujarati (India)",nativeName:"ગુજરાતી (ભારત)",dayNames:["રવિવાર","સોમવાર","મંગળવાર","બુધવાર","ગુરુવાર","શુક્રવાર","શનિવાર"],abbreviatedDayNames:["રવિ","સોમ","મંગળ","બુધ","ગુરુ","શુક્ર","શનિ"],shortestDayNames:["ર","સ","મ","બ","ગ","શ","શ"],firstLetterDayNames:["ર","સ","મ","બ","ગ","શ","શ"],monthNames:["જાન્યુઆરી","ફેબ્રુઆરી","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટેમ્બર","ઑક્ટ્બર","નવેમ્બર","ડિસેમ્બર"],abbreviatedMonthNames:["જાન્યુ","ફેબ્રુ","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટે","ઑક્ટો","નવે","ડિસે"],amDesignator:"પૂર્વ મધ્યાહ્ન",pmDesignator:"ઉત્તર મધ્યાહ્ન",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^જાન્યુ(આરી)?/i,feb:/^ફેબ્રુ(આરી)?/i,mar:/^માર્ચ/i,apr:/^એપ્રિલ/i,may:/^મે/i,jun:/^જૂન/i,jul:/^જુલાઈ/i,aug:/^ઑગસ્ટ/i,sep:/^સપ્ટે(મ્બર)?/i,oct:/^ઑક્ટ્બર/i,nov:/^નવે(મ્બર)?/i,dec:/^ડિસે(મ્બર)?/i,sun:/^ર(વિ(વાર)?)?/i,mon:/^સ(ોમ(વાર)?)?/i,tue:/^મ(ંગળ(વાર)?)?/i,wed:/^બ(ુધ(વાર)?)?/i,thu:/^ગ(ુરુ(વાર)?)?/i,fri:/^શ(ુક્ર(વાર)?)?/i,sat:/^શ(નિ(વાર)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'he-IL' => 'Date.CultureInfo={name:"he-IL",englishName:"Hebrew (Israel)",nativeName:"עברית (ישראל)",dayNames:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","שבת"],abbreviatedDayNames:["יום א","יום ב","יום ג","יום ד","יום ה","יום ו","שבת"],shortestDayNames:["א","ב","ג","ד","ה","ו","ש"],firstLetterDayNames:["א","ב","ג","ד","ה","ו","ש"],monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],abbreviatedMonthNames:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ינו(אר)?/i,feb:/^פבר(ואר)?/i,mar:/^מרץ/i,apr:/^אפר(יל)?/i,may:/^מאי/i,jun:/^יונ(י)?/i,jul:/^יול(י)?/i,aug:/^אוג(וסט)?/i,sep:/^ספט(מבר)?/i,oct:/^אוק(טובר)?/i,nov:/^נוב(מבר)?/i,dec:/^דצמ(בר)?/i,sun:/^א(ום א(אשון)?)?/i,mon:/^ב(ום ב(ני)?)?/i,tue:/^ג(ום ג(לישי)?)?/i,wed:/^ד(ום ד(ביעי)?)?/i,thu:/^ה(ום ה(מישי)?)?/i,fri:/^ו(ום ו(ישי)?)?/i,sat:/^ש(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'hi-IN' => 'Date.CultureInfo={name:"hi-IN",englishName:"Hindi (India)",nativeName:"हिंदी (भारत)",dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],abbreviatedDayNames:["रवि.","सोम.","मंगल.","बुध.","गुरु.","शुक्र.","शनि."],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],abbreviatedMonthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],amDesignator:"पूर्वाह्न",pmDesignator:"अपराह्न",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जनवरी/i,feb:/^फरवरी/i,mar:/^मार्च/i,apr:/^अप्रैल/i,may:/^मई/i,jun:/^जून/i,jul:/^जुलाई/i,aug:/^अगस्त/i,sep:/^सितम्बर/i,oct:/^अक्तूबर/i,nov:/^नवम्बर/i,dec:/^दिसम्बर/i,sun:/^र(वि(.(वार)?)?)?/i,mon:/^स(ोम(.(वार)?)?)?/i,tue:/^म(ंगल(.(वार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ग(ुरु(.(वार)?)?)?/i,fri:/^श(ुक्र(.(वार)?)?)?/i,sat:/^श(नि(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'hr-BA' => 'Date.CultureInfo={name:"hr-BA",englishName:"Croatian (Bosnia and Herzegovina)",nativeName:"hrvatski (Bosna i Hercegovina)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sri","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],abbreviatedMonthNames:["sij","vlj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^sij(ečanj)?/i,feb:/^veljača/i,mar:/^ožu(jak)?/i,apr:/^tra(vanj)?/i,may:/^svi(banj)?/i,jun:/^lip(anj)?/i,jul:/^srp(anj)?/i,aug:/^kol(ovoz)?/i,sep:/^ruj(an)?/i,oct:/^lis(topad)?/i,nov:/^stu(deni)?/i,dec:/^pro(sinac)?/i,sun:/^nedjelja/i,mon:/^ponedjeljak/i,tue:/^utorak/i,wed:/^srijeda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'hr-HR' => 'Date.CultureInfo={name:"hr-HR",englishName:"Croatian (Croatia)",nativeName:"hrvatski (Hrvatska)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ne","po","ut","sr","če","pe","su"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],abbreviatedMonthNames:["sij","vlj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^sij(ečanj)?/i,feb:/^veljača/i,mar:/^ožu(jak)?/i,apr:/^tra(vanj)?/i,may:/^svi(banj)?/i,jun:/^lip(anj)?/i,jul:/^srp(anj)?/i,aug:/^kol(ovoz)?/i,sep:/^ruj(an)?/i,oct:/^lis(topad)?/i,nov:/^stu(deni)?/i,dec:/^pro(sinac)?/i,sun:/^ne(d(jelja)?)?/i,mon:/^po(n(edjeljak)?)?/i,tue:/^ut(o(rak)?)?/i,wed:/^sr(i(jeda)?)?/i,thu:/^če(t(vrtak)?)?/i,fri:/^pe(t(ak)?)?/i,sat:/^su(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'hu-HU' => 'Date.CultureInfo={name:"hu-HU",englishName:"Hungarian (Hungary)",nativeName:"magyar (Magyarország)",dayNames:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],abbreviatedDayNames:["V","H","K","Sze","Cs","P","Szo"],shortestDayNames:["V","H","K","Sze","Cs","P","Szo"],firstLetterDayNames:["V","H","K","S","C","P","S"],monthNames:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],abbreviatedMonthNames:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],amDesignator:"de.",pmDesignator:"du.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy. MM. dd.",longDate:"yyyy. MMMM d.",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy. MMMM d. H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM d.",yearMonth:"yyyy. MMMM"},regexPatterns:{jan:/^jan(.(uár)?)?/i,feb:/^febr(.(uár)?)?/i,mar:/^márc(.(ius)?)?/i,apr:/^ápr(.(ilis)?)?/i,may:/^máj(.(us)?)?/i,jun:/^jún(.(ius)?)?/i,jul:/^júl(.(ius)?)?/i,aug:/^aug(.(usztus)?)?/i,sep:/^szept(.(ember)?)?/i,oct:/^okt(.(óber)?)?/i,nov:/^nov(.(ember)?)?/i,dec:/^dec(.(ember)?)?/i,sun:/^vasárnap/i,mon:/^hétfő/i,tue:/^kedd/i,wed:/^szerda/i,thu:/^csütörtök/i,fri:/^péntek/i,sat:/^szombat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'hy-AM' => 'Date.CultureInfo={name:"hy-AM",englishName:"Armenian (Armenia)",nativeName:"Հայերեն (Հայաստան)",dayNames:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","ՈՒրբաթ","Շաբաթ"],abbreviatedDayNames:["Կիր","Երկ","Երք","Չրք","Հնգ","ՈՒր","Շբթ"],shortestDayNames:["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],firstLetterDayNames:["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],abbreviatedMonthNames:["ՀՆՎ","ՓՏՎ","ՄՐՏ","ԱՊՐ","ՄՅՍ","ՀՆՍ","ՀԼՍ","ՕԳՍ","ՍԵՊ","ՀՈԿ","ՆՈՅ","ԴԵԿ"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^հունվար/i,feb:/^փետրվար/i,mar:/^մարտ/i,apr:/^ապր(իլ)?/i,may:/^մայիս/i,jun:/^հունիս/i,jul:/^հուլիս/i,aug:/^օգոստոս/i,sep:/^սեպ(տեմբեր)?/i,oct:/^հոկ(տեմբեր)?/i,nov:/^նոյ(եմբեր)?/i,dec:/^դեկ(տեմբեր)?/i,sun:/^կ(իր(ակի)?)?/i,mon:/^ե(րկ(ուշաբթի)?)?/i,tue:/^ե(րք(քշաբթի)?)?/i,wed:/^չ(րք(եքշաբթի)?)?/i,thu:/^հ(նգ(գշաբթի)?)?/i,fri:/^ո(ւր(բաթ)?)?/i,sat:/^շ(բթ(աթ)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'id-ID' => 'Date.CultureInfo={name:"id-ID",englishName:"Indonesian (Indonesia)",nativeName:"Bahasa Indonesia (Indonesia)",dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],abbreviatedDayNames:["Minggu","Sen","Sel","Rabu","Kamis","Jumat","Sabtu"],shortestDayNames:["M","S","S","R","K","J","S"],firstLetterDayNames:["M","S","S","R","K","J","S"],monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agust","Sep","Okt","Nop","Des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(et)?/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^agust(us)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nop(ember)?/i,dec:/^des(ember)?/i,sun:/^m(1)?/i,mon:/^s(en(in)?)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'is-IS' => 'Date.CultureInfo={name:"is-IS",englishName:"Icelandic (Iceland)",nativeName:"íslenska (Ísland)",dayNames:["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],abbreviatedDayNames:["sun.","mán.","þri.","mið.","fim.","fös.","lau."],shortestDayNames:["su","má","þr","mi","fi","fö","la"],firstLetterDayNames:["s","m","þ","m","f","f","l"],monthNames:["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"],abbreviatedMonthNames:["jan.","feb.","mar.","apr.","maí","jún.","júl.","ágú.","sep.","okt.","nóv.","des."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(.(úar)?)?/i,feb:/^feb(.(rúar)?)?/i,mar:/^mar(.(s)?)?/i,apr:/^apr(.(íl)?)?/i,may:/^maí/i,jun:/^jún(.(í)?)?/i,jul:/^júl(.(í)?)?/i,aug:/^ágú(.(st)?)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(.(óber)?)?/i,nov:/^nóv(.(ember)?)?/i,dec:/^des(.(ember)?)?/i,sun:/^su(n(.(nudagur)?)?)?/i,mon:/^má(n(.(udagur)?)?)?/i,tue:/^þr(i(.(ðjudagur)?)?)?/i,wed:/^mi(ð(.(vikudagur)?)?)?/i,thu:/^fi(m(.(mtudagur)?)?)?/i,fri:/^fö(s(.(tudagur)?)?)?/i,sat:/^la(u(.(gardagur)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'it-CH' => 'Date.CultureInfo={name:"it-CH",englishName:"Italian (Switzerland)",nativeName:"italiano (Svizzera)",dayNames:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],abbreviatedDayNames:["dom","lun","mar","mer","gio","ven","sab"],shortestDayNames:["do","lu","ma","me","gi","ve","sa"],firstLetterDayNames:["d","l","m","m","g","v","s"],monthNames:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],abbreviatedMonthNames:["gen","feb","mar","apr","mag","gio","lug","ago","set","ott","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^gen(naio)?/i,feb:/^feb(braio)?/i,mar:/^mar(zo)?/i,apr:/^apr(ile)?/i,may:/^mag(gio)?/i,jun:/^giugno/i,jul:/^lug(lio)?/i,aug:/^ago(sto)?/i,sep:/^set(tembre)?/i,oct:/^ott(obre)?/i,nov:/^nov(embre)?/i,dec:/^dic(embre)?/i,sun:/^do(m(enica)?)?/i,mon:/^lu(n(edì)?)?/i,tue:/^ma(r(tedì)?)?/i,wed:/^me(r(coledì)?)?/i,thu:/^gi(o(vedì)?)?/i,fri:/^ve(n(erdì)?)?/i,sat:/^sa(b(ato)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'it-IT' => 'Date.CultureInfo={name:"it-IT",englishName:"Italian (Italy)",nativeName:"italiano (Italia)",dayNames:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],abbreviatedDayNames:["dom","lun","mar","mer","gio","ven","sab"],shortestDayNames:["do","lu","ma","me","gi","ve","sa"],firstLetterDayNames:["d","l","m","m","g","v","s"],monthNames:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],abbreviatedMonthNames:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H.mm",longTime:"H.mm.ss",fullDateTime:"dddd d MMMM yyyy H.mm.ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^gen(naio)?/i,feb:/^feb(braio)?/i,mar:/^mar(zo)?/i,apr:/^apr(ile)?/i,may:/^mag(gio)?/i,jun:/^giu(gno)?/i,jul:/^lug(lio)?/i,aug:/^ago(sto)?/i,sep:/^set(tembre)?/i,oct:/^ott(obre)?/i,nov:/^nov(embre)?/i,dec:/^dic(embre)?/i,sun:/^do(m(enica)?)?/i,mon:/^lu(n(edì)?)?/i,tue:/^ma(r(tedì)?)?/i,wed:/^me(r(coledì)?)?/i,thu:/^gi(o(vedì)?)?/i,fri:/^ve(n(erdì)?)?/i,sat:/^sa(b(ato)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ja-JP' => 'Date.CultureInfo={name:"ja-JP",englishName:"Japanese (Japan)",nativeName:"日本語 (日本)",dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],abbreviatedDayNames:["日","月","火","水","木","金","土"],shortestDayNames:["日","月","火","水","木","金","土"],firstLetterDayNames:["日","月","火","水","木","金","土"],monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],abbreviatedMonthNames:["1","2","3","4","5","6","7","8","9","10","11","12"],amDesignator:"午前",pmDesignator:"午後",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^1(月)?/i,feb:/^2(月)?/i,mar:/^3(月)?/i,apr:/^4(月)?/i,may:/^5(月)?/i,jun:/^6(月)?/i,jul:/^7(月)?/i,aug:/^8(月)?/i,sep:/^9(月)?/i,oct:/^10(月)?/i,nov:/^11(月)?/i,dec:/^12(月)?/i,sun:/^日曜日/i,mon:/^月曜日/i,tue:/^火曜日/i,wed:/^水曜日/i,thu:/^木曜日/i,fri:/^金曜日/i,sat:/^土曜日/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ka-GE' => 'Date.CultureInfo={name:"ka-GE",englishName:"Georgian (Georgia)",nativeName:"ქართული (საქართველო)",dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],abbreviatedDayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],shortestDayNames:["კ","ო","ს","ო","ხ","პ","შ"],firstLetterDayNames:["კ","ო","ს","ო","ხ","პ","შ"],monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],abbreviatedMonthNames:["იან","თებ","მარ","აპრ","მაის","ივნ","ივლ","აგვ","სექ","ოქტ","ნოემ","დეკ"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"yyyy \'წლის\' dd MM, dddd",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy \'წლის\' dd MM, dddd H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^იან(ვარი)?/i,feb:/^თებ(ერვალი)?/i,mar:/^მარ(ტი)?/i,apr:/^აპრ(ილი)?/i,may:/^მაის(ი)?/i,jun:/^ივნ(ისი)?/i,jul:/^ივლ(ისი)?/i,aug:/^აგვ(ისტო)?/i,sep:/^სექ(ტემბერი)?/i,oct:/^ოქტ(ომბერი)?/i,nov:/^ნოემ(ბერი)?/i,dec:/^დეკ(ემბერი)?/i,sun:/^კ(1)?/i,mon:/^ო(1)?/i,tue:/^ს(1)?/i,wed:/^ო(1)?/i,thu:/^ხ(1)?/i,fri:/^პ(1)?/i,sat:/^შ(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'kk-KZ' => 'Date.CultureInfo={name:"kk-KZ",englishName:"Kazakh (Kazakhstan)",nativeName:"Қазақ (Қазақстан)",dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],abbreviatedDayNames:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],shortestDayNames:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],firstLetterDayNames:["Ж","Д","С","С","Б","Ж","С"],monthNames:["қаңтар","ақпан","наурыз","сәуір","мамыр","маусым","шілде","тамыз","қыркүйек","қазан","қараша","желтоқсан"],abbreviatedMonthNames:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy \'ж.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy \'ж.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^қаң(тар)?/i,feb:/^ақп(ан)?/i,mar:/^нау(рыз)?/i,apr:/^сәу(ір)?/i,may:/^мам(ыр)?/i,jun:/^мау(сым)?/i,jul:/^шіл(де)?/i,aug:/^там(ыз)?/i,sep:/^қыр(күйек)?/i,oct:/^қаз(ан)?/i,nov:/^қар(аша)?/i,dec:/^жел(тоқсан)?/i,sun:/^жексенбі/i,mon:/^дүйсенбі/i,tue:/^сейсенбі/i,wed:/^сәрсенбі/i,thu:/^бейсенбі/i,fri:/^жұма/i,sat:/^сенбі/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'kn-IN' => 'Date.CultureInfo={name:"kn-IN",englishName:"Kannada (India)",nativeName:"ಕನ್ನಡ (ಭಾರತ)",dayNames:["ಭಾನುವಾರ","ಸೋಮವಾರ","ಮಂಗಳವಾರ","ಬುಧವಾರ","ಗುರುವಾರ","ಶುಕ್ರವಾರ","ಶನಿವಾರ"],abbreviatedDayNames:["ಭಾನು.","ಸೋಮ.","ಮಂಗಳ.","ಬುಧ.","ಗುರು.","ಶುಕ್ರ.","ಶನಿ."],shortestDayNames:["ರ","ಸ","ಮ","ಬ","ಗ","ಶ","ಶ"],firstLetterDayNames:["ರ","ಸ","ಮ","ಬ","ಗ","ಶ","ಶ"],monthNames:["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಎಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"],abbreviatedMonthNames:["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಎಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"],amDesignator:"ಪೂರ್ವಾಹ್ನ",pmDesignator:"ಅಪರಾಹ್ನ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ಜನವರಿ/i,feb:/^ಫೆಬ್ರವರಿ/i,mar:/^ಮಾರ್ಚ್/i,apr:/^ಎಪ್ರಿಲ್/i,may:/^ಮೇ/i,jun:/^ಜೂನ್/i,jul:/^ಜುಲೈ/i,aug:/^ಆಗಸ್ಟ್/i,sep:/^ಸೆಪ್ಟಂಬರ್/i,oct:/^ಅಕ್ಟೋಬರ್/i,nov:/^ನವೆಂಬರ್/i,dec:/^ಡಿಸೆಂಬರ್/i,sun:/^ರ(ಾನು(.(ವಾರ)?)?)?/i,mon:/^ಸ(ೋಮ(.(ವಾರ)?)?)?/i,tue:/^ಮ(ಂಗಳ(.(ವಾರ)?)?)?/i,wed:/^ಬ(ುಧ(.(ವಾರ)?)?)?/i,thu:/^ಗ(ುರು(.(ವಾರ)?)?)?/i,fri:/^ಶ(ುಕ್ರ(.(ವಾರ)?)?)?/i,sat:/^ಶ(ನಿ(.(ವಾರ)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ko-KR' => 'Date.CultureInfo={name:"ko-KR",englishName:"Korean (Korea)",nativeName:"한국어 (대한민국)",dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],abbreviatedDayNames:["일","월","화","수","목","금","토"],shortestDayNames:["일","월","화","수","목","금","토"],firstLetterDayNames:["일","월","화","수","목","금","토"],monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],abbreviatedMonthNames:["1","2","3","4","5","6","7","8","9","10","11","12"],amDesignator:"오전",pmDesignator:"오후",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"yyyy\'년\' M\'월\' d\'일\' dddd",shortTime:"tt h:mm",longTime:"tt h:mm:ss",fullDateTime:"yyyy\'년\' M\'월\' d\'일\' dddd tt h:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'월\' d\'일\'",yearMonth:"yyyy\'년\' M\'월\'"},regexPatterns:{jan:/^1(월)?/i,feb:/^2(월)?/i,mar:/^3(월)?/i,apr:/^4(월)?/i,may:/^5(월)?/i,jun:/^6(월)?/i,jul:/^7(월)?/i,aug:/^8(월)?/i,sep:/^9(월)?/i,oct:/^10(월)?/i,nov:/^11(월)?/i,dec:/^12(월)?/i,sun:/^일요일/i,mon:/^월요일/i,tue:/^화요일/i,wed:/^수요일/i,thu:/^목요일/i,fri:/^금요일/i,sat:/^토요일/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'kok-IN' => 'Date.CultureInfo={name:"kok-IN",englishName:"Konkani (India)",nativeName:"कोंकणी (भारत)",dayNames:["आयतार","सोमार","मंगळार","बुधवार","बिरेस्तार","सुक्रार","शेनवार"],abbreviatedDayNames:["आय.","सोम.","मंगळ.","बुध.","बिरे.","सुक्र.","शेन."],shortestDayNames:["आ","स","म","ब","ब","स","श"],firstLetterDayNames:["आ","स","म","ब","ब","स","श"],monthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोवेम्बर","डिसेंबर"],abbreviatedMonthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोवेम्बर","डिसेंबर"],amDesignator:"म.पू.",pmDesignator:"म.नं.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जानेवारी/i,feb:/^फेब्रुवारी/i,mar:/^मार्च/i,apr:/^एप्रिल/i,may:/^मे/i,jun:/^जून/i,jul:/^जुलै/i,aug:/^ऑगस्ट/i,sep:/^सप्टेंबर/i,oct:/^ऑक्टोबर/i,nov:/^नोवेम्बर/i,dec:/^डिसेंबर/i,sun:/^आ(य(.(तार)?)?)?/i,mon:/^स(ोम(.(ार)?)?)?/i,tue:/^म(ंगळ(.(ार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ब(िरे(.(स्तार)?)?)?/i,fri:/^स(ुक्र(.(ार)?)?)?/i,sat:/^श(ेन(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ky-KG' => 'Date.CultureInfo={name:"ky-KG",englishName:"Kyrgyz (Kyrgyzstan)",nativeName:"Кыргыз (Кыргызстан)",dayNames:["Жекшемби","Дүйшөмбү","Шейшемби","Шаршемби","Бейшемби","Жума","Ишемби"],abbreviatedDayNames:["Жш","Дш","Шш","Шр","Бш","Жм","Иш"],shortestDayNames:["Жш","Дш","Шш","Шр","Бш","Жм","Иш"],firstLetterDayNames:["Ж","Д","Ш","Ш","Б","Ж","И"],monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yy",longDate:"d\'-\'MMMM yyyy\'-ж.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d\'-\'MMMM yyyy\'-ж.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy\'-ж.\'"},regexPatterns:{jan:/^янв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^жекшемби/i,mon:/^дүйшөмбү/i,tue:/^шейшемби/i,wed:/^шаршемби/i,thu:/^бейшемби/i,fri:/^жума/i,sat:/^ишемби/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'lt-LT' => 'Date.CultureInfo={name:"lt-LT",englishName:"Lithuanian (Lithuania)",nativeName:"lietuvių (Lietuva)",dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],abbreviatedDayNames:["Sk","Pr","An","Tr","Kt","Pn","Št"],shortestDayNames:["S","P","A","T","K","Pn","Š"],firstLetterDayNames:["S","P","A","T","K","P","Š"],monthNames:["sausis","vasaris","kovas","balandis","gegužė","birželis","liepa","rugpjūtis","rugsėjis","spalis","lapkritis","gruodis"],abbreviatedMonthNames:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy.MM.dd",longDate:"yyyy \'m.\' MMMM d \'d.\'",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'m.\' MMMM d \'d.\' HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM d \'d.\'",yearMonth:"yyyy \'m.\' MMMM"},regexPatterns:{jan:/^sau(sis)?/i,feb:/^vas(aris)?/i,mar:/^kov(as)?/i,apr:/^bal(andis)?/i,may:/^geg(užė)?/i,jun:/^bir(želis)?/i,jul:/^lie(pa)?/i,aug:/^rugpjūtis/i,sep:/^rugsėjis/i,oct:/^spalis/i,nov:/^lap(kritis)?/i,dec:/^gruodis/i,sun:/^s(k(kmadienis)?)?/i,mon:/^p(r(rmadienis)?)?/i,tue:/^a(n(tradienis)?)?/i,wed:/^t(r(ečiadienis)?)?/i,thu:/^k(t(tvirtadienis)?)?/i,fri:/^penktadienis/i,sat:/^š(t(štadienis)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'lv-LV' => 'Date.CultureInfo={name:"lv-LV",englishName:"Latvian (Latvia)",nativeName:"latviešu (Latvija)",dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],abbreviatedDayNames:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],shortestDayNames:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],firstLetterDayNames:["S","P","O","T","C","P","S"],monthNames:["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy.MM.dd.",longDate:"dddd, yyyy\'. gada \'d. MMMM",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, yyyy\'. gada \'d. MMMM H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"yyyy. MMMM"},regexPatterns:{jan:/^jan(vāris)?/i,feb:/^feb(ruāris)?/i,mar:/^mar(ts)?/i,apr:/^apr(īlis)?/i,may:/^mai(js)?/i,jun:/^jūn(ijs)?/i,jul:/^jūl(ijs)?/i,aug:/^aug(usts)?/i,sep:/^sep(tembris)?/i,oct:/^okt(obris)?/i,nov:/^nov(embris)?/i,dec:/^dec(embris)?/i,sun:/^svētdiena/i,mon:/^pirmdiena/i,tue:/^otrdiena/i,wed:/^trešdiena/i,thu:/^ceturtdiena/i,fri:/^piektdiena/i,sat:/^sestdiena/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'mi-NZ' => 'Date.CultureInfo={name:"mi-NZ",englishName:"Maori (New Zealand)",nativeName:"Reo Māori (Aotearoa)",dayNames:["Rātapu","Mane","Tūrei","Wenerei","Tāite","Paraire","Hātarei"],abbreviatedDayNames:["Ta","Ma","Tū","We","Tāi","Pa","Hā"],shortestDayNames:["Ta","Ma","Tū","We","Tāi","Pa","Hā"],firstLetterDayNames:["T","M","T","W","T","P","H"],monthNames:["Kohi-tātea","Hui-tanguru","Poutū-te-rangi","Paenga-whāwhā","Haratua","Pipiri","Hōngoingoi","Here-turi-kōkā","Mahuru","Whiringa-ā-nuku","Whiringa-ā-rangi","Hakihea"],abbreviatedMonthNames:["Kohi","Hui","Pou","Pae","Hara","Pipi","Hōngoi","Here","Mahu","Whi-nu","Whi-ra","Haki"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm:ss tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^kohi(-tātea)?/i,feb:/^hui(-tanguru)?/i,mar:/^pou(tū-te-rangi)?/i,apr:/^pae(nga-whāwhā)?/i,may:/^hara(tua)?/i,jun:/^pipi(ri)?/i,jul:/^hōngoi(ngoi)?/i,aug:/^here(-turi-kōkā)?/i,sep:/^mahu(ru)?/i,oct:/^whiringa-ā-nuku/i,nov:/^whiringa-ā-rangi/i,dec:/^haki(hea)?/i,sun:/^rātapu/i,mon:/^mane/i,tue:/^tūrei/i,wed:/^wenerei/i,thu:/^tāite/i,fri:/^paraire/i,sat:/^hātarei/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'mk-MK' => 'Date.CultureInfo={name:"mk-MK",englishName:"Macedonian (Former Yugoslav Republic of Macedonia)",nativeName:"македонски јазик (Македонија)",dayNames:["недела","понеделник","вторник","среда","четврток","петок","сабота"],abbreviatedDayNames:["нед","пон","втр","срд","чет","пет","саб"],shortestDayNames:["не","по","вт","ср","че","пе","са"],firstLetterDayNames:["н","п","в","с","ч","п","с"],monthNames:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],abbreviatedMonthNames:["јан","фев","мар","апр","мај","јун","јул","авг","сеп","окт","ное","дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(уари)?/i,feb:/^фев(руари)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун(и)?/i,jul:/^јул(и)?/i,aug:/^авг(уст)?/i,sep:/^сеп(тември)?/i,oct:/^окт(омври)?/i,nov:/^ное(мври)?/i,dec:/^дек(ември)?/i,sun:/^не(д(ела)?)?/i,mon:/^по(н(еделник)?)?/i,tue:/^вт(р(рник)?)?/i,wed:/^ср(д(да)?)?/i,thu:/^че(т(врток)?)?/i,fri:/^пе(т(ок)?)?/i,sat:/^са(б(ота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'mn-MN' => 'Date.CultureInfo={name:"mn-MN",englishName:"Mongolian (Cyrillic, Mongolia)",nativeName:"Монгол хэл (Монгол улс)",dayNames:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],abbreviatedDayNames:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],shortestDayNames:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],firstLetterDayNames:["Н","Д","М","Л","П","Б","Б"],monthNames:["1 дүгээр сар","2 дугаар сар","3 дугаар сар","4 дүгээр сар","5 дугаар сар","6 дугаар сар","7 дугаар сар","8 дугаар сар","9 дүгээр сар","10 дугаар сар","11 дүгээр сар","12 дугаар сар"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VШ","IX","X","XI","XII"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yy.MM.dd",longDate:"yyyy \'оны\' MMMM d",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy \'оны\' MMMM d H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"yyyy \'он\' MMMM"},regexPatterns:{jan:/^1 дүгээр сар/i,feb:/^2 дугаар сар/i,mar:/^3 дугаар сар/i,apr:/^4 дүгээр сар/i,may:/^5 дугаар сар/i,jun:/^6 дугаар сар/i,jul:/^7 дугаар сар/i,aug:/^8 дугаар сар/i,sep:/^9 дүгээр сар/i,oct:/^10 дугаар сар/i,nov:/^11 дүгээр сар/i,dec:/^12 дугаар сар/i,sun:/^ням/i,mon:/^даваа/i,tue:/^мягмар/i,wed:/^лхагва/i,thu:/^пүрэв/i,fri:/^баасан/i,sat:/^бямба/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'mr-IN' => 'Date.CultureInfo={name:"mr-IN",englishName:"Marathi (India)",nativeName:"मराठी (भारत)",dayNames:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],abbreviatedDayNames:["रवि.","सोम.","मंगळ.","बुध.","गुरु.","शुक्र.","शनि."],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],abbreviatedMonthNames:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],amDesignator:"म.पू.",pmDesignator:"म.नं.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जाने(.(वारी)?)?/i,feb:/^फेब्रु(.(वारी)?)?/i,mar:/^मार्च/i,apr:/^एप्रिल/i,may:/^मे/i,jun:/^जून/i,jul:/^जुलै/i,aug:/^ऑगस्ट/i,sep:/^सप्टें(.(बर)?)?/i,oct:/^ऑक्टो(.(बर)?)?/i,nov:/^नोव्हें(.(बर)?)?/i,dec:/^डिसें(.(बर)?)?/i,sun:/^र(वि(.(वार)?)?)?/i,mon:/^स(ोम(.(वार)?)?)?/i,tue:/^म(ंगळ(.(वार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ग(ुरु(.(वार)?)?)?/i,fri:/^श(ुक्र(.(वार)?)?)?/i,sat:/^श(नि(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ms-BN' => 'Date.CultureInfo={name:"ms-BN",englishName:"Malay (Brunei Darussalam)",nativeName:"Bahasa Malaysia (Brunei Darussalam)",dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],abbreviatedDayNames:["Ahad","Isnin","Sel","Rabu","Khamis","Jumaat","Sabtu"],shortestDayNames:["A","I","S","R","K","J","S"],firstLetterDayNames:["A","I","S","R","K","J","S"],monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],abbreviatedMonthNames:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sept","Okt","Nov","Dis"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mac/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun/i,jul:/^jul(ai)?/i,aug:/^ogos/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dis(ember)?/i,sun:/^a(1)?/i,mon:/^i(1)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ms-MY' => 'Date.CultureInfo={name:"ms-MY",englishName:"Malay (Malaysia)",nativeName:"Bahasa Malaysia (Malaysia)",dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],abbreviatedDayNames:["Ahad","Isnin","Sel","Rabu","Khamis","Jumaat","Sabtu"],shortestDayNames:["A","I","S","R","K","J","S"],firstLetterDayNames:["A","I","S","R","K","J","S"],monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],abbreviatedMonthNames:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sept","Okt","Nov","Dis"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mac/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun/i,jul:/^jul(ai)?/i,aug:/^ogos/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dis(ember)?/i,sun:/^a(1)?/i,mon:/^i(1)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'mt-MT' => 'Date.CultureInfo={name:"mt-MT",englishName:"Maltese (Malta)",nativeName:"Malti (Malta)",dayNames:["Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],abbreviatedDayNames:["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],shortestDayNames:["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],firstLetterDayNames:["Ħ","T","T","E","Ħ","Ġ","S"],monthNames:["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awissu","Settembru","Ottubru","Novembru","Diċembru"],abbreviatedMonthNames:["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Awi","Set","Ott","Nov","Diċ"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, d\' ta\\\' \'MMMM yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"dddd, d\' ta\\\' \'MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(nar)?/i,feb:/^fra(r)?/i,mar:/^mar(zu)?/i,apr:/^apr(il)?/i,may:/^mej(ju)?/i,jun:/^ġun(ju)?/i,jul:/^lul(ju)?/i,aug:/^awi(ssu)?/i,sep:/^set(tembru)?/i,oct:/^ott(ubru)?/i,nov:/^nov(embru)?/i,dec:/^diċ(embru)?/i,sun:/^il-ħadd/i,mon:/^it-tnejn/i,tue:/^it-tlieta/i,wed:/^l-erbgħa/i,thu:/^il-ħamis/i,fri:/^il-ġimgħa/i,sat:/^is-sibt/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'nb-NO' => 'Date.CultureInfo={name:"nb-NO",englishName:"Norwegian, Bokmål (Norway)",nativeName:"norsk, bokmål (Norge)",dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],abbreviatedDayNames:["sø","ma","ti","on","to","fr","lø"],shortestDayNames:["sø","ma","ti","on","to","fr","lø"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^søndag/i,mon:/^mandag/i,tue:/^tirsdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lørdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'nl-BE' => 'Date.CultureInfo={name:"nl-BE",englishName:"Dutch (Belgium)",nativeName:"Nederlands (België)",dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],abbreviatedDayNames:["zo","ma","di","wo","do","vr","za"],shortestDayNames:["zo","ma","di","wo","do","vr","za"],firstLetterDayNames:["z","m","d","w","d","v","z"],monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^zondag/i,mon:/^maandag/i,tue:/^dinsdag/i,wed:/^woensdag/i,thu:/^donderdag/i,fri:/^vrijdag/i,sat:/^zaterdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'nl-NL' => 'Date.CultureInfo={name:"nl-NL",englishName:"Dutch (Netherlands)",nativeName:"Nederlands (Nederland)",dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],abbreviatedDayNames:["zo","ma","di","wo","do","vr","za"],shortestDayNames:["zo","ma","di","wo","do","vr","za"],firstLetterDayNames:["z","m","d","w","d","v","z"],monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d-M-yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^zondag/i,mon:/^maandag/i,tue:/^dinsdag/i,wed:/^woensdag/i,thu:/^donderdag/i,fri:/^vrijdag/i,sat:/^zaterdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'nn-NO' => 'Date.CultureInfo={name:"nn-NO",englishName:"Norwegian, Nynorsk (Norway)",nativeName:"norsk, nynorsk (Noreg)",dayNames:["søndag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],abbreviatedDayNames:["sø","må","ty","on","to","fr","la"],shortestDayNames:["sø","må","ty","on","to","fr","la"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^søndag/i,mon:/^måndag/i,tue:/^tysdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^laurdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ns-ZA' => 'Date.CultureInfo={name:"ns-ZA",englishName:"Northern Sotho (South Africa)",nativeName:"Sesotho sa Leboa (Afrika Borwa)",dayNames:["Lamorena","Mošupologo","Labobedi","Laboraro","Labone","Labohlano","Mokibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["Pherekgong","Hlakola","Mopitlo","Moranang","Mosegamanye","Ngoatobošego","Phuphu","Phato","Lewedi","Diphalana","Dibatsela","Manthole"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^pherekgong/i,feb:/^hlakola/i,mar:/^mopitlo/i,apr:/^moranang/i,may:/^mosegamanye/i,jun:/^ngoatobošego/i,jul:/^phuphu/i,aug:/^phato/i,sep:/^lewedi/i,oct:/^diphalana/i,nov:/^dibatsela/i,dec:/^manthole/i,sun:/^lamorena/i,mon:/^mošupologo/i,tue:/^labobedi/i,wed:/^laboraro/i,thu:/^labone/i,fri:/^labohlano/i,sat:/^mokibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'pa-IN' => 'Date.CultureInfo={name:"pa-IN",englishName:"Punjabi (India)",nativeName:"ਪੰਜਾਬੀ (ਭਾਰਤ)",dayNames:["ਐਤਵਾਰ","ਸੋਮਵਾਰ","ਮੰਗਲਵਾਰ","ਬੁਧਵਾਰ","ਵੀਰਵਾਰ","ਸ਼ੁੱਕਰਵਾਰ","ਸ਼ਨੀਚਰਵਾਰ"],abbreviatedDayNames:["ਐਤ.","ਸੋਮ.","ਮੰਗਲ.","ਬੁਧ.","ਵੀਰ.","ਸ਼ੁਕਰ.","ਸ਼ਨੀ."],shortestDayNames:["ਐ","ਸ","ਮ","ਬ","ਵ","ਸ਼","ਸ਼"],firstLetterDayNames:["ਐ","ਸ","ਮ","ਬ","ਵ","ਸ਼","ਸ਼"],monthNames:["ਜਨਵਰੀ","ਫ਼ਰਵਰੀ","ਮਾਰਚ","ਅਪ੍ਰੈਲ","ਮਈ","ਜੂਨ","ਜੁਲਾਈ","ਅਗਸਤ","ਸਤੰਬਰ","ਅਕਤੂਬਰ","ਨਵੰਬਰ","ਦਸੰਬਰ"],abbreviatedMonthNames:["ਜਨਵਰੀ","ਫ਼ਰਵਰੀ","ਮਾਰਚ","ਅਪ੍ਰੈਲ","ਮਈ","ਜੂਨ","ਜੁਲਾਈ","ਅਗਸਤ","ਸਤੰਬਰ","ਅਕਤੂਬਰ","ਨਵੰਬਰ","ਦਸੰਬਰ"],amDesignator:"ਸਵੇਰੇ",pmDesignator:"ਸ਼ਾਮ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy dddd",shortTime:"tt hh:mm",longTime:"tt hh:mm:ss",fullDateTime:"dd MMMM yyyy dddd tt hh:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ਜਨਵਰੀ/i,feb:/^ਫ਼ਰਵਰੀ/i,mar:/^ਮਾਰਚ/i,apr:/^ਅਪ੍ਰੈਲ/i,may:/^ਮਈ/i,jun:/^ਜੂਨ/i,jul:/^ਜੁਲਾਈ/i,aug:/^ਅਗਸਤ/i,sep:/^ਸਤੰਬਰ/i,oct:/^ਅਕਤੂਬਰ/i,nov:/^ਨਵੰਬਰ/i,dec:/^ਦਸੰਬਰ/i,sun:/^ਐ(ਤ(.(ਵਾਰ)?)?)?/i,mon:/^ਸ(ੋਮ(.(ਵਾਰ)?)?)?/i,tue:/^ਮ(ੰਗਲ(.(ਵਾਰ)?)?)?/i,wed:/^ਬ(ੁਧ(.(ਵਾਰ)?)?)?/i,thu:/^ਵ(ੀਰ(.(ਵਾਰ)?)?)?/i,fri:/^ਸ਼(ੁਕਰ(.(ਰਵਾਰ)?)?)?/i,sat:/^ਸ਼(ਨੀ(.(ਚਰਵਾਰ)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'pl-PL' => 'Date.CultureInfo={name:"pl-PL",englishName:"Polish (Poland)",nativeName:"polski (Polska)",dayNames:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],abbreviatedDayNames:["N","Pn","Wt","Śr","Cz","Pt","So"],shortestDayNames:["N","Pn","Wt","Śr","Cz","Pt","So"],firstLetterDayNames:["N","P","W","Ś","C","P","S"],monthNames:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],abbreviatedMonthNames:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^sty(czeń)?/i,feb:/^lut(y)?/i,mar:/^mar(zec)?/i,apr:/^kwi(ecień)?/i,may:/^maj/i,jun:/^cze(rwiec)?/i,jul:/^lip(iec)?/i,aug:/^sie(rpień)?/i,sep:/^wrz(esień)?/i,oct:/^paź(dziernik)?/i,nov:/^lis(topad)?/i,dec:/^gru(dzień)?/i,sun:/^niedziela/i,mon:/^poniedziałek/i,tue:/^wtorek/i,wed:/^środa/i,thu:/^czwartek/i,fri:/^piątek/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'pt-BR' => 'Date.CultureInfo={name:"pt-BR",englishName:"Portuguese (Brazil)",nativeName:"Português (Brasil)",dayNames:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],abbreviatedDayNames:["dom","seg","ter","qua","qui","sex","sáb"],shortestDayNames:["dom","seg","ter","qua","qui","sex","sáb"],firstLetterDayNames:["d","s","t","q","q","s","s"],monthNames:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],abbreviatedMonthNames:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd\' de \'MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^jan(eiro)?/i,feb:/^fev(ereiro)?/i,mar:/^mar(ço)?/i,apr:/^abr(il)?/i,may:/^mai(o)?/i,jun:/^jun(ho)?/i,jul:/^jul(ho)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dez(embro)?/i,sun:/^domingo/i,mon:/^segunda-feira/i,tue:/^terça-feira/i,wed:/^quarta-feira/i,thu:/^quinta-feira/i,fri:/^sexta-feira/i,sat:/^sábado/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'pt-PT' => 'Date.CultureInfo={name:"pt-PT",englishName:"Portuguese (Portugal)",nativeName:"português (Portugal)",dayNames:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],abbreviatedDayNames:["dom","seg","ter","qua","qui","sex","sáb"],shortestDayNames:["dom","seg","ter","qua","qui","sex","sáb"],firstLetterDayNames:["d","s","t","q","q","s","s"],monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],abbreviatedMonthNames:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dddd, d\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d/M",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^jan(eiro)?/i,feb:/^fev(ereiro)?/i,mar:/^mar(ço)?/i,apr:/^abr(il)?/i,may:/^mai(o)?/i,jun:/^jun(ho)?/i,jul:/^jul(ho)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dez(embro)?/i,sun:/^domingo/i,mon:/^segunda-feira/i,tue:/^terça-feira/i,wed:/^quarta-feira/i,thu:/^quinta-feira/i,fri:/^sexta-feira/i,sat:/^sábado/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'quz-BO' => 'Date.CultureInfo={name:"quz-BO",englishName:"Quechua (Bolivia)",nativeName:"runasimi (Bolivia Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'quz-EC' => 'Date.CultureInfo={name:"quz-EC",englishName:"Quechua (Ecuador)",nativeName:"runasimi (Ecuador Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'quz-PE' => 'Date.CultureInfo={name:"quz-PE",englishName:"Quechua (Peru)",nativeName:"runasimi (Peru Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ro-RO' => 'Date.CultureInfo={name:"ro-RO",englishName:"Romanian (Romania)",nativeName:"română (România)",dayNames:["duminică","luni","marţi","miercuri","joi","vineri","sâmbătă"],abbreviatedDayNames:["D","L","Ma","Mi","J","V","S"],shortestDayNames:["D","L","Ma","Mi","J","V","S"],firstLetterDayNames:["D","L","M","M","J","V","S"],monthNames:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],abbreviatedMonthNames:["ian.","feb.","mar.","apr.","mai.","iun.","iul.","aug.","sep.","oct.","nov.","dec."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ian(.(uarie)?)?/i,feb:/^feb(.(ruarie)?)?/i,mar:/^mar(.(tie)?)?/i,apr:/^apr(.(ilie)?)?/i,may:/^mai(.()?)?/i,jun:/^iun(.(ie)?)?/i,jul:/^iul(.(ie)?)?/i,aug:/^aug(.(ust)?)?/i,sep:/^sep(.(tembrie)?)?/i,oct:/^oct(.(ombrie)?)?/i,nov:/^noiembrie/i,dec:/^dec(.(embrie)?)?/i,sun:/^duminică/i,mon:/^luni/i,tue:/^marţi/i,wed:/^miercuri/i,thu:/^joi/i,fri:/^vineri/i,sat:/^sâmbătă/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ru-RU' => 'Date.CultureInfo={name:"ru-RU",englishName:"Russian (Russia)",nativeName:"русский (Россия)",dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],abbreviatedDayNames:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],firstLetterDayNames:["В","П","В","С","Ч","П","С"],monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy \'г.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy \'г.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy \'г.\'"},regexPatterns:{jan:/^янв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^воскресенье/i,mon:/^понедельник/i,tue:/^вторник/i,wed:/^среда/i,thu:/^четверг/i,fri:/^пятница/i,sat:/^суббота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sa-IN' => 'Date.CultureInfo={name:"sa-IN",englishName:"Sanskrit (India)",nativeName:"संस्कृत (भारतम्)",dayNames:["रविवासरः","सोमवासरः","मङ्गलवासरः","बुधवासरः","गुरुवासरः","शुक्रवासरः","शनिवासरः"],abbreviatedDayNames:["रविवासरः","सोमवासरः","मङ्गलवासरः","बुधवासरः","गुरुवासरः","शुक्रवासरः","शनिवासरः"],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],abbreviatedMonthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],amDesignator:"पूर्वाह्न",pmDesignator:"अपराह्न",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy dddd",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy dddd HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जनवरी/i,feb:/^फरवरी/i,mar:/^मार्च/i,apr:/^अप्रैल/i,may:/^मई/i,jun:/^जून/i,jul:/^जुलाई/i,aug:/^अगस्त/i,sep:/^सितम्बर/i,oct:/^अक्तूबर/i,nov:/^नवम्बर/i,dec:/^दिसम्बर/i,sun:/^र(1)?/i,mon:/^स(1)?/i,tue:/^म(1)?/i,wed:/^ब(1)?/i,thu:/^ग(1)?/i,fri:/^श(1)?/i,sat:/^श(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'se-FI' => 'Date.CultureInfo={name:"se-FI",englishName:"Sami (Northern) (Finland)",nativeName:"davvisámegiella (Suopma)",dayNames:["sotnabeaivi","vuossárga","maŋŋebárga","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],shortestDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],firstLetterDayNames:["s","v","m","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^vuossárga/i,tue:/^maŋŋebárga/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'se-NO' => 'Date.CultureInfo={name:"se-NO",englishName:"Sami (Northern) (Norway)",nativeName:"davvisámegiella (Norga)",dayNames:["sotnabeaivi","vuossárga","maŋŋebárga","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],shortestDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],firstLetterDayNames:["s","v","m","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^vuossárga/i,tue:/^maŋŋebárga/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'se-SE' => 'Date.CultureInfo={name:"se-SE",englishName:"Sami (Northern) (Sweden)",nativeName:"davvisámegiella (Ruoŧŧa)",dayNames:["sotnabeaivi","mánnodat","disdat","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","mán","dis","gask","duor","bear","láv"],shortestDayNames:["sotn","mán","dis","gask","duor","bear","láv"],firstLetterDayNames:["s","m","d","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^mánnodat/i,tue:/^disdat/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sk-SK' => 'Date.CultureInfo={name:"sk-SK",englishName:"Slovak (Slovakia)",nativeName:"slovenčina (Slovenská republika)",dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],abbreviatedDayNames:["ne","po","ut","st","št","pi","so"],shortestDayNames:["ne","po","ut","st","št","pi","so"],firstLetterDayNames:["n","p","u","s","š","p","s"],monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d. M. yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^január/i,feb:/^február/i,mar:/^marec/i,apr:/^apríl/i,may:/^máj/i,jun:/^jún/i,jul:/^júl/i,aug:/^august/i,sep:/^sep(t(ember)?)?/i,oct:/^október/i,nov:/^november/i,dec:/^december/i,sun:/^nedeľa/i,mon:/^pondelok/i,tue:/^utorok/i,wed:/^streda/i,thu:/^štvrtok/i,fri:/^piatok/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sl-SI' => 'Date.CultureInfo={name:"sl-SI",englishName:"Slovenian (Slovenia)",nativeName:"slovenski (Slovenija)",dayNames:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],abbreviatedDayNames:["ned","pon","tor","sre","čet","pet","sob"],shortestDayNames:["ne","po","to","sr","če","pe","so"],firstLetterDayNames:["n","p","t","s","č","p","s"],monthNames:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(ec)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(ij)?/i,jul:/^jul(ij)?/i,aug:/^avg(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^ne(d(elja)?)?/i,mon:/^po(n(edeljek)?)?/i,tue:/^to(r(ek)?)?/i,wed:/^sr(e(da)?)?/i,thu:/^če(t(rtek)?)?/i,fri:/^pe(t(ek)?)?/i,sat:/^so(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sma-NO' => 'Date.CultureInfo={name:"sma-NO",englishName:"Sami (Southern) (Norway)",nativeName:"åarjelsaemiengiele (Nöörje)",dayNames:["aejlege","måanta","dæjsta","gaskevåhkoe","duarsta","bearjadahke","laavvardahke"],abbreviatedDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],shortestDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],firstLetterDayNames:["a","m","d","g","d","b","l"],monthNames:["tsïengele","goevte","njoktje","voerhtje","suehpede","ruffie","snjaltje","mïetske","skïerede","golke","rahka","goeve"],abbreviatedMonthNames:["tsïen","goevt","njok","voer","sueh","ruff","snja","mïet","skïer","golk","rahk","goev"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tsïen(gele)?/i,feb:/^goevt(e)?/i,mar:/^njok(tje)?/i,apr:/^voer(htje)?/i,may:/^sueh(pede)?/i,jun:/^ruff(ie)?/i,jul:/^snja(ltje)?/i,aug:/^mïet(ske)?/i,sep:/^skïer(ede)?/i,oct:/^golk(e)?/i,nov:/^rahk(a)?/i,dec:/^goev(e)?/i,sun:/^aejlege/i,mon:/^måanta/i,tue:/^dæjsta/i,wed:/^gaskevåhkoe/i,thu:/^duarsta/i,fri:/^bearjadahke/i,sat:/^laavvardahke/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sma-SE' => 'Date.CultureInfo={name:"sma-SE",englishName:"Sami (Southern) (Sweden)",nativeName:"åarjelsaemiengiele (Sveerje)",dayNames:["aejlege","måanta","dæjsta","gaskevåhkoe","duarsta","bearjadahke","laavvardahke"],abbreviatedDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],shortestDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],firstLetterDayNames:["a","m","d","g","d","b","l"],monthNames:["tsïengele","goevte","njoktje","voerhtje","suehpede","ruffie","snjaltje","mïetske","skïerede","golke","rahka","goeve"],abbreviatedMonthNames:["tsïen","goevt","njok","voer","sueh","ruff","snja","mïet","skïer","golk","rahk","goev"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tsïen(gele)?/i,feb:/^goevt(e)?/i,mar:/^njok(tje)?/i,apr:/^voer(htje)?/i,may:/^sueh(pede)?/i,jun:/^ruff(ie)?/i,jul:/^snja(ltje)?/i,aug:/^mïet(ske)?/i,sep:/^skïer(ede)?/i,oct:/^golk(e)?/i,nov:/^rahk(a)?/i,dec:/^goev(e)?/i,sun:/^aejlege/i,mon:/^måanta/i,tue:/^dæjsta/i,wed:/^gaskevåhkoe/i,thu:/^duarsta/i,fri:/^bearjadahke/i,sat:/^laavvardahke/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'smj-NO' => 'Date.CultureInfo={name:"smj-NO",englishName:"Sami (Lule) (Norway)",nativeName:"julevusámegiella (Vuodna)",dayNames:["sådnåbiejvve","mánnodahka","dijstahka","gasskavahkko","duorastahka","bierjjedahka","lávvodahka"],abbreviatedDayNames:["såd","mán","dis","gas","duor","bier","láv"],shortestDayNames:["såd","mán","dis","gas","duor","bier","láv"],firstLetterDayNames:["s","m","d","g","d","b","l"],monthNames:["ådåjakmánno","guovvamánno","sjnjuktjamánno","vuoratjismánno","moarmesmánno","biehtsemánno","sjnjilltjamánno","bårggemánno","ragátmánno","gålgådismánno","basádismánno","javllamánno"],abbreviatedMonthNames:["ådåj","guov","snju","vuor","moar","bieh","snji","bårg","ragá","gålg","basá","javl"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ådåj(akmánno)?/i,feb:/^guov(vamánno)?/i,mar:/^sjnjuktjamánno/i,apr:/^vuor(atjismánno)?/i,may:/^moar(mesmánno)?/i,jun:/^bieh(tsemánno)?/i,jul:/^sjnjilltjamánno/i,aug:/^bårg(gemánno)?/i,sep:/^ragá(tmánno)?/i,oct:/^gålg(ådismánno)?/i,nov:/^basá(dismánno)?/i,dec:/^javl(lamánno)?/i,sun:/^sådnåbiejvve/i,mon:/^mánnodahka/i,tue:/^dijstahka/i,wed:/^gasskavahkko/i,thu:/^duorastahka/i,fri:/^bierjjedahka/i,sat:/^lávvodahka/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'smj-SE' => 'Date.CultureInfo={name:"smj-SE",englishName:"Sami (Lule) (Sweden)",nativeName:"julevusámegiella (Svierik)",dayNames:["ájllek","mánnodahka","dijstahka","gasskavahkko","duorastahka","bierjjedahka","lávvodahka"],abbreviatedDayNames:["ájl","mán","dis","gas","duor","bier","láv"],shortestDayNames:["ájl","mán","dis","gas","duor","bier","láv"],firstLetterDayNames:["á","m","d","g","d","b","l"],monthNames:["ådåjakmánno","guovvamánno","sjnjuktjamánno","vuoratjismánno","moarmesmánno","biehtsemánno","sjnjilltjamánno","bårggemánno","ragátmánno","gålgådismánno","basádismánno","javllamánno"],abbreviatedMonthNames:["ådåj","guov","snju","vuor","moar","bieh","snji","bårg","ragá","gålg","basá","javl"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ådåj(akmánno)?/i,feb:/^guov(vamánno)?/i,mar:/^sjnjuktjamánno/i,apr:/^vuor(atjismánno)?/i,may:/^moar(mesmánno)?/i,jun:/^bieh(tsemánno)?/i,jul:/^sjnjilltjamánno/i,aug:/^bårg(gemánno)?/i,sep:/^ragá(tmánno)?/i,oct:/^gålg(ådismánno)?/i,nov:/^basá(dismánno)?/i,dec:/^javl(lamánno)?/i,sun:/^ájllek/i,mon:/^mánnodahka/i,tue:/^dijstahka/i,wed:/^gasskavahkko/i,thu:/^duorastahka/i,fri:/^bierjjedahka/i,sat:/^lávvodahka/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'smn-FI' => 'Date.CultureInfo={name:"smn-FI",englishName:"Sami (Inari) (Finland)",nativeName:"sämikielâ (Suomâ)",dayNames:["pasepeivi","vuossargâ","majebargâ","koskokko","tuorâstâh","vástuppeivi","lávárdâh"],abbreviatedDayNames:["pa","vu","ma","ko","tu","vá","lá"],shortestDayNames:["pa","vu","ma","ko","tu","vá","lá"],firstLetterDayNames:["p","v","m","k","t","v","l"],monthNames:["uđđâivemáánu","kuovâmáánu","njuhčâmáánu","cuáŋuimáánu","vyesimáánu","kesimáánu","syeinimáánu","porgemáánu","čohčâmáánu","roovvâdmáánu","skammâmáánu","juovlâmáánu"],abbreviatedMonthNames:["uđiv","kuov","njuh","cuoŋ","vyes","kesi","syei","porg","čoh","roov","ska","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. p. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. p. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^uđđâivemáánu/i,feb:/^kuov(âmáánu)?/i,mar:/^njuh(čâmáánu)?/i,apr:/^cuáŋuimáánu/i,may:/^vyes(imáánu)?/i,jun:/^kesi(máánu)?/i,jul:/^syei(nimáánu)?/i,aug:/^porg(emáánu)?/i,sep:/^čoh(čâmáánu)?/i,oct:/^roov(vâdmáánu)?/i,nov:/^ska(mmâmáánu)?/i,dec:/^juov(lâmáánu)?/i,sun:/^pasepeivi/i,mon:/^vuossargâ/i,tue:/^majebargâ/i,wed:/^koskokko/i,thu:/^tuorâstâh/i,fri:/^vástuppeivi/i,sat:/^lávárdâh/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sms-FI' => 'Date.CultureInfo={name:"sms-FI",englishName:"Sami (Skolt) (Finland)",nativeName:"sääm´ǩiõll (Lää´ddjânnam)",dayNames:["pâ´sspei´vv","vuõssargg","mââibargg","seärad","nelljdpei´vv","piâtnâc","sue´vet"],abbreviatedDayNames:["pâ","vu","mâ","se","ne","pi","su"],shortestDayNames:["pâ","vu","mâ","se","ne","pi","su"],firstLetterDayNames:["p","v","m","s","n","p","s"],monthNames:["ođđee´jjmään","tä´lvvmään","pâ´zzlâšttammään","njuhččmään","vue´ssmään","ǩie´ssmään","suei´nnmään","på´rǧǧmään","čõhččmään","kålggmään","skamm´mään","rosttovmään"],abbreviatedMonthNames:["ođjm","tä´lvv","pâzl","njuh","vue","ǩie","suei","på´r","čõh","kålg","ska","rost"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. p. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. p. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđee´jjmään/i,feb:/^tä´lvv(mään)?/i,mar:/^pâ´zzlâšttammään/i,apr:/^njuh(ččmään)?/i,may:/^vue(´ssmään)?/i,jun:/^ǩie(´ssmään)?/i,jul:/^suei(´nnmään)?/i,aug:/^på´r(ǧǧmään)?/i,sep:/^čõh(ččmään)?/i,oct:/^kålg(gmään)?/i,nov:/^ska(mm´mään)?/i,dec:/^rost(tovmään)?/i,sun:/^pâ´sspei´vv/i,mon:/^vuõssargg/i,tue:/^mââibargg/i,wed:/^seärad/i,thu:/^nelljdpei´vv/i,fri:/^piâtnâc/i,sat:/^sue´vet/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sq-AL' => 'Date.CultureInfo={name:"sq-AL",englishName:"Albanian (Albania)",nativeName:"shqipe (Shqipëria)",dayNames:["e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],abbreviatedDayNames:["Die","Hën","Mar","Mër","Enj","Pre","Sht"],shortestDayNames:["Di","Hë","Ma","Më","En","Pr","Sh"],firstLetterDayNames:["D","H","M","M","E","P","S"],monthNames:["janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor"],abbreviatedMonthNames:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gsh","Sht","Tet","Nën","Dhj"],amDesignator:"PD",pmDesignator:"MD",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"yyyy-MM-dd",shortTime:"h:mm.tt",longTime:"h:mm:ss.tt",fullDateTime:"yyyy-MM-dd h:mm:ss.tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"yyyy-MM"},regexPatterns:{jan:/^jan(ar)?/i,feb:/^shk(urt)?/i,mar:/^mar(s)?/i,apr:/^pri(ll)?/i,may:/^maj/i,jun:/^qer(shor)?/i,jul:/^kor(rik)?/i,aug:/^gusht/i,sep:/^sht(ator)?/i,oct:/^tet(or)?/i,nov:/^nën(tor)?/i,dec:/^dhj(etor)?/i,sun:/^di(e(iel)?)?/i,mon:/^hë(n(ënë)?)?/i,tue:/^ma(r(artë)?)?/i,wed:/^më(r(ërkurë)?)?/i,thu:/^en(j(njte)?)?/i,fri:/^pr(e(remte)?)?/i,sat:/^sh(t(htunë)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sr-Cyrl-BA' => 'Date.CultureInfo={name:"sr-Cyrl-BA",englishName:"Serbian (Cyrillic) (Bosnia and Herzegovina)",nativeName:"српски (Босна и Херцеговина)",dayNames:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],abbreviatedDayNames:["нед","пон","уто","сре","чет","пет","суб"],shortestDayNames:["нед","пон","уто","сре","чет","пет","суб"],firstLetterDayNames:["н","п","у","с","ч","п","с"],monthNames:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],abbreviatedMonthNames:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^јан(уар)?/i,feb:/^феб(руар)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун/i,jul:/^јул/i,aug:/^авг(уст)?/i,sep:/^сеп(тембар)?/i,oct:/^окт(обар)?/i,nov:/^нов(ембар)?/i,dec:/^дец(ембар)?/i,sun:/^недеља/i,mon:/^понедељак/i,tue:/^уторак/i,wed:/^среда/i,thu:/^четвртак/i,fri:/^петак/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sr-Cyrl-CS' => 'Date.CultureInfo={name:"sr-Cyrl-CS",englishName:"Serbian (Cyrillic, Serbia)",nativeName:"српски (Србија)",dayNames:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],abbreviatedDayNames:["нед","пон","уто","сре","чет","пет","суб"],shortestDayNames:["не","по","ут","ср","че","пе","су"],firstLetterDayNames:["н","п","у","с","ч","п","с"],monthNames:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],abbreviatedMonthNames:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(уар)?/i,feb:/^феб(руар)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун/i,jul:/^јул/i,aug:/^авг(уст)?/i,sep:/^сеп(тембар)?/i,oct:/^окт(обар)?/i,nov:/^нов(ембар)?/i,dec:/^дец(ембар)?/i,sun:/^не(д(еља)?)?/i,mon:/^по(н(едељак)?)?/i,tue:/^ут(о(рак)?)?/i,wed:/^ср(е(да)?)?/i,thu:/^че(т(вртак)?)?/i,fri:/^пе(т(ак)?)?/i,sat:/^су(б(ота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sr-Latn-BA' => 'Date.CultureInfo={name:"sr-Latn-BA",englishName:"Serbian (Latin) (Bosnia and Herzegovina)",nativeName:"srpski (Bosna i Hercegovina)",dayNames:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sre","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sre","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^nedelja/i,mon:/^ponedeljak/i,tue:/^utorak/i,wed:/^sreda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sr-Latn-CS' => 'Date.CultureInfo={name:"sr-Latn-CS",englishName:"Serbian (Latin, Serbia)",nativeName:"srpski (Srbija)",dayNames:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sre","čet","pet","sub"],shortestDayNames:["ne","po","ut","sr","če","pe","su"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^ne(d(elja)?)?/i,mon:/^po(n(edeljak)?)?/i,tue:/^ut(o(rak)?)?/i,wed:/^sr(e(da)?)?/i,thu:/^če(t(vrtak)?)?/i,fri:/^pe(t(ak)?)?/i,sat:/^su(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sv-FI' => 'Date.CultureInfo={name:"sv-FI",englishName:"Swedish (Finland)",nativeName:"svenska (Finland)",dayNames:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],abbreviatedDayNames:["sö","må","ti","on","to","fr","lö"],shortestDayNames:["sö","må","ti","on","to","fr","lö"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"\'den \'d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"\'den \'d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"\'den \'d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(usti)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^söndag/i,mon:/^måndag/i,tue:/^tisdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lördag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sv-SE' => 'Date.CultureInfo={name:"sv-SE",englishName:"Swedish (Sweden)",nativeName:"svenska (Sverige)",dayNames:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],abbreviatedDayNames:["sö","må","ti","on","to","fr","lö"],shortestDayNames:["sö","må","ti","on","to","fr","lö"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"\'den \'d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"\'den \'d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"\'den \'d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(usti)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^söndag/i,mon:/^måndag/i,tue:/^tisdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lördag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'sw-KE' => 'Date.CultureInfo={name:"sw-KE",englishName:"Kiswahili (Kenya)",nativeName:"Kiswahili (Kenya)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["S","M","T","W","T","F","S"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^s(un(day)?)?/i,mon:/^m(on(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^w(ed(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^f(ri(day)?)?/i,sat:/^s(at(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'syr-SY' => 'Date.CultureInfo={name:"syr-SY",englishName:"Syriac (Syria)",nativeName:"ܣܘܪܝܝܐ (سوريا)",dayNames:["ܚܕ ܒܫܒܐ","ܬܪܝܢ ܒܫܒܐ","ܬܠܬܐ ܒܫܒܐ","ܐܪܒܥܐ ܒܫܒܐ","ܚܡܫܐ ܒܫܒܐ","ܥܪܘܒܬܐ","ܫܒܬܐ"],abbreviatedDayNames:["܏ܐ ܏ܒܫ","܏ܒ ܏ܒܫ","܏ܓ ܏ܒܫ","܏ܕ ܏ܒܫ","܏ܗ ܏ܒܫ","܏ܥܪܘܒ","܏ܫܒ"],shortestDayNames:["܏","܏","܏","܏","܏","܏","܏"],firstLetterDayNames:["܏","܏","܏","܏","܏","܏","܏"],monthNames:["ܟܢܘܢ ܐܚܪܝ","ܫܒܛ","ܐܕܪ","ܢܝܣܢ","ܐܝܪ","ܚܙܝܪܢ","ܬܡܘܙ","ܐܒ","ܐܝܠܘܠ","ܬܫܪܝ ܩܕܝܡ","ܬܫܪܝ ܐܚܪܝ","ܟܢܘܢ ܩܕܝܡ"],abbreviatedMonthNames:["܏ܟܢ ܏ܒ","ܫܒܛ","ܐܕܪ","ܢܝܣܢ","ܐܝܪ","ܚܙܝܪܢ","ܬܡܘܙ","ܐܒ","ܐܝܠܘܠ","܏ܬܫ ܏ܐ","܏ܬܫ ܏ܒ","܏ܟܢ ܏ܐ"],amDesignator:"ܩ.ܛ",pmDesignator:"ܒ.ܛ",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ܟܢܘܢ ܐܚܪܝ/i,feb:/^ܫܒܛ/i,mar:/^ܐܕܪ/i,apr:/^ܢܝܣܢ/i,may:/^ܐܝܪ/i,jun:/^ܚܙܝܪܢ/i,jul:/^ܬܡܘܙ/i,aug:/^ܐܒ/i,sep:/^ܐܝܠܘܠ/i,oct:/^ܬܫܪܝ ܩܕܝܡ/i,nov:/^ܬܫܪܝ ܐܚܪܝ/i,dec:/^ܟܢܘܢ ܩܕܝܡ/i,sun:/^܏(ܐ ܏ܒܫ(ܐ)?)?/i,mon:/^܏(ܒ ܏ܒܫ(ܫܒܐ)?)?/i,tue:/^܏(ܓ ܏ܒܫ(ܫܒܐ)?)?/i,wed:/^܏(ܕ ܏ܒܫ(ܒܫܒܐ)?)?/i,thu:/^܏(ܗ ܏ܒܫ(ܫܒܐ)?)?/i,fri:/^܏(ܥܪܘܒ(ܐ)?)?/i,sat:/^܏(ܫܒ(ܐ)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ta-IN' => 'Date.CultureInfo={name:"ta-IN",englishName:"Tamil (India)",nativeName:"தமிழ் (இந்தியா)",dayNames:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],abbreviatedDayNames:["ஞா","தி","செ","பு","வி","வெ","ச"],shortestDayNames:["ஞ","த","ச","ப","வ","வ","ச"],firstLetterDayNames:["ஞ","த","ச","ப","வ","வ","ச"],monthNames:["ஜனவரி","பெப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],abbreviatedMonthNames:["ஜன.","பெப்.","மார்.","ஏப்.","மே","ஜூன்","ஜூலை","ஆக.","செப்.","அக்.","நவ.","டிச."],amDesignator:"காலை",pmDesignator:"மாலை",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ஜன(.(வரி)?)?/i,feb:/^பெப்(.(ரவரி)?)?/i,mar:/^மார்(.(ச்)?)?/i,apr:/^ஏப்(.(ரல்)?)?/i,may:/^மே/i,jun:/^ஜூன்/i,jul:/^ஜூலை/i,aug:/^ஆக(.(ஸ்ட்)?)?/i,sep:/^செப்(.(டம்பர்)?)?/i,oct:/^அக்(.(டோபர்)?)?/i,nov:/^நவ(.(ம்பர்)?)?/i,dec:/^டிச(.(ம்பர்)?)?/i,sun:/^ஞ(ா(யிறு)?)?/i,mon:/^த(ி(ங்கள்)?)?/i,tue:/^ச(ெ(வ்வாய்)?)?/i,wed:/^ப(ு(தன்)?)?/i,thu:/^வ(ி(யாழன்)?)?/i,fri:/^வ(ெ(ள்ளி)?)?/i,sat:/^சனி/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'te-IN' => 'Date.CultureInfo={name:"te-IN",englishName:"Telugu (India)",nativeName:"తెలుగు (భారత దేశం)",dayNames:["ఆదివారం","సోమవారం","మంగళవారం","బుధవారం","గురువారం","శుక్రవారం","శనివారం"],abbreviatedDayNames:["ఆది.","సోమ.","మంగళ.","బుధ.","గురు.","శుక్ర.","శని."],shortestDayNames:["ఆ","స","మ","బ","గ","శ","శ"],firstLetterDayNames:["ఆ","స","మ","బ","గ","శ","శ"],monthNames:["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"],abbreviatedMonthNames:["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"],amDesignator:"పూర్వాహ్న",pmDesignator:"అపరాహ్న",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^జనవరి/i,feb:/^ఫిబ్రవరి/i,mar:/^మార్చి/i,apr:/^ఏప్రిల్/i,may:/^మే/i,jun:/^జూన్/i,jul:/^జూలై/i,aug:/^ఆగస్టు/i,sep:/^సెప్టెంబర్/i,oct:/^అక్టోబర్/i,nov:/^నవంబర్/i,dec:/^డిసెంబర్/i,sun:/^ఆ(ది(.(వారం)?)?)?/i,mon:/^స(ోమ(.(వారం)?)?)?/i,tue:/^మ(ంగళ(.(వారం)?)?)?/i,wed:/^బ(ుధ(.(వారం)?)?)?/i,thu:/^గ(ురు(.(వారం)?)?)?/i,fri:/^శ(ుక్ర(.(వారం)?)?)?/i,sat:/^శ(ని(.(వారం)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'th-TH' => 'Date.CultureInfo={name:"th-TH",englishName:"Thai (Thailand)",nativeName:"ไทย (ไทย)",dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],abbreviatedDayNames:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],shortestDayNames:["อ","จ","อ","พ","พ","ศ","ส"],firstLetterDayNames:["อ","จ","อ","พ","พ","ศ","ส"],monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],abbreviatedMonthNames:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2572,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ม(.(กราค)?)?/i,feb:/^ก(.(ุมภาพันธ์)?)?/i,mar:/^มี(.(นาคม)?)?/i,apr:/^เม(.(ษายน)?)?/i,may:/^พ(.(ฤษภาคม)?)?/i,jun:/^มิ(.(ถุนายน)?)?/i,jul:/^ก(.(รฎาคม)?)?/i,aug:/^ส(.(ิงหาคม)?)?/i,sep:/^ก(.(ันยายน)?)?/i,oct:/^ต(.(ุลาคม)?)?/i,nov:/^พ(.(ฤศจิกายน)?)?/i,dec:/^ธ(.(ันวาคม)?)?/i,sun:/^อ(า(.(ทิตย์)?)?)?/i,mon:/^จ((.(ันทร์)?)?)?/i,tue:/^อ((.(ังคาร)?)?)?/i,wed:/^พ((.(ุธ)?)?)?/i,thu:/^พ(ฤ(.(หัสบดี)?)?)?/i,fri:/^ศ((.(ุกร์)?)?)?/i,sat:/^ส((.(สาร์)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'tn-ZA' => 'Date.CultureInfo={name:"tn-ZA",englishName:"Tswana (South Africa)",nativeName:"Setswana (Aforika Borwa)",dayNames:["Latshipi","Mosupologo","Labobedi","Laboraro","Labone","Labotlhano","Lamatlhatso"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["Ferikgong","Tlhakole","Mopitloe","Moranang","Motsheganong","Seetebosigo","Phukwi","Phatwe","Lwetse","Diphalane","Ngwanatsele","Sedimothole"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ferikgong/i,feb:/^tlhakole/i,mar:/^mopitloe/i,apr:/^moranang/i,may:/^motsheganong/i,jun:/^seetebosigo/i,jul:/^phukwi/i,aug:/^phatwe/i,sep:/^lwetse/i,oct:/^diphalane/i,nov:/^ngwanatsele/i,dec:/^sedimothole/i,sun:/^latshipi/i,mon:/^mosupologo/i,tue:/^labobedi/i,wed:/^laboraro/i,thu:/^labone/i,fri:/^labotlhano/i,sat:/^lamatlhatso/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'tr-TR' => 'Date.CultureInfo={name:"tr-TR",englishName:"Turkish (Turkey)",nativeName:"Türkçe (Türkiye)",dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],abbreviatedDayNames:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],shortestDayNames:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],firstLetterDayNames:["P","P","S","Ç","P","C","C"],monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],abbreviatedMonthNames:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dd MMMM yyyy dddd",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy dddd HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^oca(k)?/i,feb:/^şub(at)?/i,mar:/^mar(t)?/i,apr:/^nis(an)?/i,may:/^may(ıs)?/i,jun:/^haz(iran)?/i,jul:/^tem(muz)?/i,aug:/^ağu(stos)?/i,sep:/^eyl(ül)?/i,oct:/^eki(m)?/i,nov:/^kas(ım)?/i,dec:/^ara(lık)?/i,sun:/^pz(z(ar)?)?/i,mon:/^pt(t(artesi)?)?/i,tue:/^sa(l(ı)?)?/i,wed:/^ça(r(şamba)?)?/i,thu:/^pe(r(şembe)?)?/i,fri:/^cu(m(a)?)?/i,sat:/^ct(t(artesi)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'tt-RU' => 'Date.CultureInfo={name:"tt-RU",englishName:"Tatar (Russia)",nativeName:"Татар (Россия)",dayNames:["Якшәмбе","Дүшәмбе","Сишәмбе","Чәршәмбе","Пәнҗешәмбе","Җомга","Шимбә"],abbreviatedDayNames:["Якш","Дүш","Сиш","Чәрш","Пәнҗ","Җом","Шим"],shortestDayNames:["Якш","Дүш","Сиш","Чәрш","Пәнҗ","Җом","Шим"],firstLetterDayNames:["Я","Д","С","Ч","П","Җ","Ш"],monthNames:["Гыйнварь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["Гыйнв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^гыйнв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^якшәмбе/i,mon:/^дүшәмбе/i,tue:/^сишәмбе/i,wed:/^чәршәмбе/i,thu:/^пәнҗешәмбе/i,fri:/^җомга/i,sat:/^шимбә/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'uk-UA' => 'Date.CultureInfo={name:"uk-UA",englishName:"Ukrainian (Ukraine)",nativeName:"україньска (Україна)",dayNames:["неділя","понеділок","вівторок","середа","четвер","п\'ятниця","субота"],abbreviatedDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],firstLetterDayNames:["Н","П","В","С","Ч","П","С"],monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],abbreviatedMonthNames:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy\' р.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy\' р.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy\' р.\'"},regexPatterns:{jan:/^січ(ень)?/i,feb:/^лют(ий)?/i,mar:/^бер(езень)?/i,apr:/^кві(тень)?/i,may:/^тра(вень)?/i,jun:/^чер(вень)?/i,jul:/^лип(ень)?/i,aug:/^сер(пень)?/i,sep:/^вер(есень)?/i,oct:/^жов(тень)?/i,nov:/^лис(топад)?/i,dec:/^гру(день)?/i,sun:/^неділя/i,mon:/^понеділок/i,tue:/^вівторок/i,wed:/^середа/i,thu:/^четвер/i,fri:/^п\'ятниця/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'ur-PK' => 'Date.CultureInfo={name:"ur-PK",englishName:"Urdu (Islamic Republic of Pakistan)",nativeName:"اُردو (پاکستان)",dayNames:["اتوار","پير","منگل","بدھ","جمعرات","جمعه","هفته"],abbreviatedDayNames:["اتوار","پير","منگل","بدھ","جمعرات","جمعه","هفته"],shortestDayNames:["ا","پ","م","ب","ج","ج","ه"],firstLetterDayNames:["ا","پ","م","ب","ج","ج","ه"],monthNames:["جنورى","فرورى","مارچ","اپريل","مئ","جون","جولاٸ","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],abbreviatedMonthNames:["جنورى","فرورى","مارچ","اپريل","مئ","جون","جولاٸ","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dd MMMM, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جنورى/i,feb:/^فرورى/i,mar:/^مارچ/i,apr:/^اپريل/i,may:/^مئ/i,jun:/^جون/i,jul:/^جولاٸ/i,aug:/^اگست/i,sep:/^ستمبر/i,oct:/^اکتوبر/i,nov:/^نومبر/i,dec:/^دسمبر/i,sun:/^ا(1)?/i,mon:/^پ(1)?/i,tue:/^م(1)?/i,wed:/^ب(1)?/i,thu:/^ج(1)?/i,fri:/^ج(1)?/i,sat:/^ه(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'uz-Cyrl-UZ' => 'Date.CultureInfo={name:"uz-Cyrl-UZ",englishName:"Uzbek (Cyrillic, Uzbekistan)",nativeName:"Ўзбек (Ўзбекистон)",dayNames:["якшанба","душанба","сешанба","чоршанба","пайшанба","жума","шанба"],abbreviatedDayNames:["якш","дш","сш","чш","пш","ж","ш"],shortestDayNames:["якш","дш","сш","чш","пш","ж","ш"],firstLetterDayNames:["я","д","с","ч","п","ж","ш"],monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],abbreviatedMonthNames:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"yyyy \'йил\' d-MMMM",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'йил\' d-MMMM HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d-MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^янв(ар)?/i,feb:/^фев(рал)?/i,mar:/^мар(т)?/i,apr:/^апр(ел)?/i,may:/^май/i,jun:/^июн/i,jul:/^июл/i,aug:/^авг(уст)?/i,sep:/^сен(тябр)?/i,oct:/^окт(ябр)?/i,nov:/^ноя(бр)?/i,dec:/^дек(абр)?/i,sun:/^якшанба/i,mon:/^душанба/i,tue:/^сешанба/i,wed:/^чоршанба/i,thu:/^пайшанба/i,fri:/^жума/i,sat:/^шанба/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'uz-Latn-UZ' => 'Date.CultureInfo={name:"uz-Latn-UZ",englishName:"Uzbek (Latin, Uzbekistan)",nativeName:"U\'zbek (U\'zbekiston Respublikasi)",dayNames:["yakshanba","dushanba","seshanba","chorshanba","payshanba","juma","shanba"],abbreviatedDayNames:["yak.","dsh.","sesh.","chr.","psh.","jm.","sh."],shortestDayNames:["yak","dsh","sesh","chr","psh","jm","sh"],firstLetterDayNames:["y","d","s","c","p","j","s"],monthNames:["yanvar","fevral","mart","aprel","may","iyun","iyul","avgust","sentyabr","oktyabr","noyabr","dekabr"],abbreviatedMonthNames:["yanvar","fevral","mart","aprel","may","iyun","iyul","avgust","sentyabr","oktyabr","noyabr","dekabr"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM yyyy",longDate:"yyyy \'yil\' d-MMMM",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'yil\' d-MMMM HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d-MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^yanvar/i,feb:/^fevral/i,mar:/^mart/i,apr:/^aprel/i,may:/^may/i,jun:/^iyun/i,jul:/^iyul/i,aug:/^avgust/i,sep:/^sentyabr/i,oct:/^oktyabr/i,nov:/^noyabr/i,dec:/^dekabr/i,sun:/^yak((.(shanba)?)?)?/i,mon:/^dsh((.(hanba)?)?)?/i,tue:/^sesh((.(anba)?)?)?/i,wed:/^chr((.(rshanba)?)?)?/i,thu:/^psh((.(shanba)?)?)?/i,fri:/^jm((.(ma)?)?)?/i,sat:/^sh((.(anba)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'vi-VN' => 'Date.CultureInfo={name:"vi-VN",englishName:"Vietnamese (Vietnam)",nativeName:"Tiếng Việt (Việt Nam)",dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],abbreviatedDayNames:["CN","Hai","Ba","Tư","Năm","Sáu","Bảy"],shortestDayNames:["C","H","B","T","N","S","B"],firstLetterDayNames:["C","H","B","T","N","S","B"],monthNames:["Tháng Giêng","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],abbreviatedMonthNames:["Thg1","Thg2","Thg3","Thg4","Thg5","Thg6","Thg7","Thg8","Thg9","Thg10","Thg11","Thg12"],amDesignator:"SA",pmDesignator:"CH",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dd MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tháng giêng/i,feb:/^tháng hai/i,mar:/^tháng ba/i,apr:/^tháng tư/i,may:/^tháng năm/i,jun:/^tháng sáu/i,jul:/^tháng bảy/i,aug:/^tháng tám/i,sep:/^tháng chín/i,oct:/^tháng mười/i,nov:/^tháng mười một/i,dec:/^tháng mười hai/i,sun:/^c(n(ủ nhật)?)?/i,mon:/^h(ai(́ hai)?)?/i,tue:/^b(a(ứ ba)?)?/i,wed:/^t(ư(ứ tư)?)?/i,thu:/^n(ăm(́ năm)?)?/i,fri:/^s(áu( sáu)?)?/i,sat:/^b(ảy( bảy)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'xh-ZA' => 'Date.CultureInfo={name:"xh-ZA",englishName:"Xhosa (South Africa)",nativeName:"isiXhosa (uMzantsi Afrika)",dayNames:["iCawa","uMvulo","uLwesibini","uLwesithathu","uLwesine","uLwesihlanu","uMgqibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["eyoMqungu","eyoMdumba","eyoKwindla","Tshazimpuzi","Canzibe","eyeSilimela","eyeKhala","eyeThupha","eyoMsintsi","eyeDwara","eyeNkanga","eyoMnga"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^eyomqungu/i,feb:/^eyomdumba/i,mar:/^eyokwindla/i,apr:/^tshazimpuzi/i,may:/^canzibe/i,jun:/^eyesilimela/i,jul:/^eyekhala/i,aug:/^eyethupha/i,sep:/^eyomsintsi/i,oct:/^eyedwara/i,nov:/^eyenkanga/i,dec:/^eyomnga/i,sun:/^icawa/i,mon:/^umvulo/i,tue:/^ulwesibini/i,wed:/^ulwesithathu/i,thu:/^ulwesine/i,fri:/^ulwesihlanu/i,sat:/^umgqibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zh-CN' => 'Date.CultureInfo={name:"zh-CN",englishName:"Chinese (People\'s Republic of China)",nativeName:"中文(中华人民共和国)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["日","一","二","三","四","五","六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"上午",pmDesignator:"下午",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/M/d",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zh-HK' => 'Date.CultureInfo={name:"zh-HK",englishName:"Chinese (Hong Kong S.A.R.)",nativeName:"中文(香港特别行政區)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zh-MO' => 'Date.CultureInfo={name:"zh-MO",englishName:"Chinese (Macao S.A.R.)",nativeName:"中文(澳門特别行政區)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zh-SG' => 'Date.CultureInfo={name:"zh-SG",englishName:"Chinese (Singapore)",nativeName:"中文(新加坡)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"tt h:mm",longTime:"tt h:mm:ss",fullDateTime:"dddd, d MMMM, yyyy tt h:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zh-TW' => 'Date.CultureInfo={name:"zh-TW",englishName:"Chinese (Taiwan)",nativeName:"中文(台灣)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"上午",pmDesignator:"下午",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/M/d",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"tt hh:mm",longTime:"tt hh:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' tt hh:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', 'zu-ZA' => 'Date.CultureInfo={name:"zu-ZA",englishName:"Zulu (South Africa)",nativeName:"isiZulu (iNingizimu Afrika)",dayNames:["iSonto","uMsombuluko","uLwesibili","uLwesithathu","uLwesine","uLwesihlanu","uMgqibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["uJanuwari","uFebuwari","uMashi","uAprhili","uMeyi","uJuni","uJulayi","uAgaste","uSepthemba","uOkthoba","uNovemba","uDisemba"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ujanuwari/i,feb:/^ufebuwari/i,mar:/^umashi/i,apr:/^uaprhili/i,may:/^umeyi/i,jun:/^ujuni/i,jul:/^ujulayi/i,aug:/^uagaste/i,sep:/^usepthemba/i,oct:/^uokthoba/i,nov:/^unovemba/i,dec:/^udisemba/i,sun:/^isonto/i,mon:/^umsombuluko/i,tue:/^ulwesibili/i,wed:/^ulwesithathu/i,thu:/^ulwesine/i,fri:/^ulwesihlanu/i,sat:/^umgqibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; ', ); public static function localizationForLanguage($language) { if (isset(self::$localizations[$language])) { return self::$localizations[$language]; } return false; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/WFLSPHP52Compatability.php����������������������������������������������������������������������0000644�����������������00000002427�15233113245�0012043 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php /** * Class WFLSPHP52Compatability * * This class exists solely to contain syntax incompatible with PHP 5.2 into a single file. */ class WFLSPHP52Compatability { public static function install_plugin() { \WordfenceLS\Controller_WordfenceLS::shared()->_install_plugin(); } public static function uninstall_plugin() { \WordfenceLS\Controller_WordfenceLS::shared()->_uninstall_plugin(); } public static function import_2fa($import) { $imported = \WordfenceLS\Controller_Users::shared()->import_2fa($import); if ($imported && wfConfig::get('loginSec_requireAdminTwoFactor')) { \WordfenceLS\Controller_Settings::shared()->set(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN, true); } return $imported; } public static function secrets_table() { return \WordfenceLS\Controller_DB::shared()->secrets; } public static function ntp_time() { return \WordfenceLS\Controller_Time::ntp_time(); } public static function using_ntp_time() { return \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_USE_NTP); } public static function using_wf_time() { return !self::using_ntp_time() && defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE && ((int) wfConfig::get('timeoffset_wf', false)) != 0; } }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/menu_firewall.php�������������������������������������������������������������������������������0000644�����������������00000004365�15233113245�0010663 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } if (wfOnboardingController::shouldShowAttempt3()) { echo wfView::create('onboarding/disabled-overlay')->render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?> <?php if (isset($storageExceptionMessage)): ?> <div class="notice notice-error"><p><?php echo $storageExceptionMessage; ?></p></div> <?php endif; ?> <div class="wrap wordfence"> <div class="wf-container-fluid"> <?php echo wfView::create('common/page-tabbar', array( 'tabs' => array( new wfTab('waf', 'waf', __('Firewall', 'wordfence'), __('Web Application Firewall', 'wordfence')), new wfTab('blocking', 'blocking', __('Blocking', 'wordfence'), __('Blocking', 'wordfence')), ), ))->render(); ?> <div class="wf-row"> <div class="<?php echo wfStyle::contentClasses(); ?>"> <div id="waf" class="wf-tab-content" data-title="Web Application Firewall"> <?php echo wfView::create('common/section-title', array( 'title' => __('Firewall', 'wordfence'), 'headerID' => 'wf-section-firewall', 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF), 'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Firewall</span>', 'wordfence'), array('span'=>array('class'=>array()))), ))->render(); require(dirname(__FILE__) . '/menu_firewall_waf.php'); ?> </div> <!-- end waf block --> <div id="blocking" class="wf-tab-content" data-title="Blocking"> <?php echo wfView::create('common/section-title', array( 'title' => __('Blocking', 'wordfence'), 'headerID' => 'wf-section-blocking', 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING), 'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Blocking</span>', 'wordfence'), array('span'=>array('class'=>array()))), ))->render(); require(dirname(__FILE__) . '/menu_firewall_blocking.php'); ?> </div> <!-- end blocking block --> </div> <!-- end content block --> </div> <!-- end row --> </div> <!-- end container --> </div>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfSchema.php������������������������������������������������������������������������������������0000644�����������������00000023621�15233113245�0007563 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wfDB.php'); class wfSchema { const TABLE_CASE_OPTION = 'wordfence_case'; //false is camel case, true is lower private static $_usingLowercase = null; private static $deprecatedTables = array( 'wfBlocks', 'wfBlocksAdv', 'wfLockedOut', 'wfThrottleLog', 'wfNet404s', 'wfBlockedCommentLog', 'wfVulnScanners', 'wfBadLeechers', 'wfLeechers', 'wfScanners', ); private static $tables = array( "wfBlocks7" => "( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `type` int(10) unsigned NOT NULL DEFAULT '0', `IP` binary(16) NOT NULL DEFAULT '\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0', `blockedTime` bigint(20) NOT NULL, `reason` varchar(255) NOT NULL, `lastAttempt` int(10) unsigned DEFAULT '0', `blockedHits` int(10) unsigned DEFAULT '0', `expiration` bigint(20) unsigned NOT NULL DEFAULT '0', `parameters` text, PRIMARY KEY (`id`), KEY `type` (`type`), KEY `IP` (`IP`), KEY `expiration` (`expiration`) ) DEFAULT CHARSET=utf8", "wfConfig" => "( `name` varchar(100) NOT NULL, `val` longblob, `autoload` enum('no','yes') NOT NULL DEFAULT 'yes', PRIMARY KEY (`name`) ) DEFAULT CHARSET=utf8", "wfCrawlers" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `patternSig` binary(16) NOT NULL, `status` char(8) NOT NULL, `lastUpdate` int(10) unsigned NOT NULL, `PTR` varchar(255) DEFAULT '', PRIMARY KEY (`IP`,`patternSig`) ) DEFAULT CHARSET=utf8", "wfFileChanges" => "( `filenameHash` char(64) NOT NULL, `file` varchar(1000) NOT NULL, `md5` char(32) NOT NULL, PRIMARY KEY (`filenameHash`) ) CHARSET=utf8", "wfHits" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `attackLogTime` double(17,6) unsigned NOT NULL, `ctime` double(17,6) unsigned NOT NULL, `IP` binary(16) DEFAULT NULL, `jsRun` tinyint(4) DEFAULT '0', `statusCode` int(11) NOT NULL DEFAULT '200', `isGoogle` tinyint(4) NOT NULL, `userID` int(10) unsigned NOT NULL, `newVisit` tinyint(3) unsigned NOT NULL, `URL` text, `referer` text, `UA` text, `action` varchar(64) NOT NULL DEFAULT '', `actionDescription` text, `actionData` text, PRIMARY KEY (`id`), KEY `k1` (`ctime`), KEY `k2` (`IP`,`ctime`), KEY `attackLogTime` (`attackLogTime`) ) DEFAULT CHARSET=utf8", "wfIssues" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time` int(10) unsigned NOT NULL, `lastUpdated` int(10) unsigned NOT NULL, `status` varchar(10) NOT NULL, `type` varchar(20) NOT NULL, `severity` tinyint(3) unsigned NOT NULL, `ignoreP` char(32) NOT NULL, `ignoreC` char(32) NOT NULL, `shortMsg` varchar(255) NOT NULL, `longMsg` text, `data` text, PRIMARY KEY (`id`), KEY `lastUpdated` (`lastUpdated`), KEY `status` (`status`), KEY `ignoreP` (`ignoreP`), KEY `ignoreC` (`ignoreC`) ) DEFAULT CHARSET=utf8", "wfPendingIssues" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time` int(10) unsigned NOT NULL, `lastUpdated` int(10) unsigned NOT NULL, `status` varchar(10) NOT NULL, `type` varchar(20) NOT NULL, `severity` tinyint(3) unsigned NOT NULL, `ignoreP` char(32) NOT NULL, `ignoreC` char(32) NOT NULL, `shortMsg` varchar(255) NOT NULL, `longMsg` text, `data` text, PRIMARY KEY (`id`), KEY `lastUpdated` (`lastUpdated`), KEY `status` (`status`), KEY `ignoreP` (`ignoreP`), KEY `ignoreC` (`ignoreC`) ) DEFAULT CHARSET=utf8", "wfTrafficRates" => "( `eMin` int(10) unsigned NOT NULL, `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `hitType` enum('hit','404') NOT NULL DEFAULT 'hit', `hits` int(10) unsigned NOT NULL, PRIMARY KEY (`eMin`,`IP`,`hitType`) ) DEFAULT CHARSET=utf8", "wfLocs" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `ctime` int(10) unsigned NOT NULL, `failed` tinyint(3) unsigned NOT NULL, `city` varchar(255) DEFAULT '', `region` varchar(255) DEFAULT '', `countryName` varchar(255) DEFAULT '', `countryCode` char(2) DEFAULT '', `lat` float(10,7) DEFAULT '0.0000000', `lon` float(10,7) DEFAULT '0.0000000', PRIMARY KEY (`IP`) ) DEFAULT CHARSET=utf8", "wfLogins" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `hitID` int(11) DEFAULT NULL, `ctime` double(17,6) unsigned NOT NULL, `fail` tinyint(3) unsigned NOT NULL, `action` varchar(40) NOT NULL, `username` varchar(255) NOT NULL, `userID` int(10) unsigned NOT NULL, `IP` binary(16) DEFAULT NULL, `UA` text, PRIMARY KEY (`id`), KEY `k1` (`IP`,`fail`), KEY `hitID` (`hitID`) ) DEFAULT CHARSET=utf8", "wfReverseCache" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `host` varchar(255) NOT NULL, `lastUpdate` int(10) unsigned NOT NULL, PRIMARY KEY (`IP`) ) DEFAULT CHARSET=utf8", "wfStatus" => "( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `ctime` double(17,6) unsigned NOT NULL, `level` tinyint(3) unsigned NOT NULL, `type` char(5) NOT NULL, `msg` varchar(1000) NOT NULL, PRIMARY KEY (`id`), KEY `k1` (`ctime`), KEY `k2` (`type`) ) DEFAULT CHARSET=utf8", 'wfHoover' => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `owner` text, `host` text, `path` text, `hostKey` varbinary(124) DEFAULT NULL, PRIMARY KEY (`id`), KEY `k2` (`hostKey`) ) DEFAULT CHARSET=utf8", 'wfFileMods' => "( `filenameMD5` binary(16) NOT NULL, `filename` varchar(1000) NOT NULL, `knownFile` tinyint(3) unsigned NOT NULL, `oldMD5` binary(16) NOT NULL, `newMD5` binary(16) NOT NULL, `SHAC` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `stoppedOnSignature` varchar(255) NOT NULL DEFAULT '', `stoppedOnPosition` int(10) unsigned NOT NULL DEFAULT '0', `isSafeFile` varchar(1) NOT NULL DEFAULT '?', PRIMARY KEY (`filenameMD5`) ) DEFAULT CHARSET=utf8", 'wfBlockedIPLog' => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `countryCode` varchar(2) NOT NULL, `blockCount` int(10) unsigned NOT NULL DEFAULT '0', `unixday` int(10) unsigned NOT NULL, `blockType` varchar(50) NOT NULL DEFAULT 'generic', PRIMARY KEY (`IP`,`unixday`,`blockType`) ) DEFAULT CHARSET=utf8", 'wfSNIPCache' => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `IP` varchar(45) NOT NULL DEFAULT '', `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `body` varchar(255) NOT NULL DEFAULT '', `count` int(10) unsigned NOT NULL DEFAULT '0', `type` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `expiration` (`expiration`), KEY `IP` (`IP`), KEY `type` (`type`) ) DEFAULT CHARSET=utf8", 'wfKnownFileList' => "( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `path` text NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8", 'wfNotifications' => "( `id` varchar(32) NOT NULL DEFAULT '', `new` tinyint(3) unsigned NOT NULL DEFAULT '1', `category` varchar(255) NOT NULL, `priority` int(11) NOT NULL DEFAULT '1000', `ctime` int(10) unsigned NOT NULL, `html` text NOT NULL, `links` text NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8;", 'wfLiveTrafficHuman' => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `identifier` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `expiration` int(10) unsigned NOT NULL, PRIMARY KEY (`IP`,`identifier`), KEY `expiration` (`expiration`) ) DEFAULT CHARSET=utf8;", ); private $db = false; public function __construct($dbhost = false, $dbuser = false, $dbpassword = false, $dbname = false){ $this->db = new wfDB(); } public function dropAll(){ foreach(self::$tables as $table => $def) { $originalTable = wfDB::networkPrefix() . $table; $convertedTable = wfDB::networkPrefix() . strtolower($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } foreach (self::$deprecatedTables as $table) { $originalTable = wfDB::networkTable($table, false); $convertedTable = wfDB::networkTable($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); if ($originalTable !== $convertedTable) { $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } } } public function createAll() { foreach(self::$tables as $table => $def){ $this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . $def); } } public function create($table) { $this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . self::$tables[$table]); } public function drop($table) { $originalTable = wfDB::networkTable($table, false); $convertedTable = wfDB::networkTable($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); if ($originalTable !== $convertedTable) { $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } } public static function tableList() { return array_keys(self::$tables); } public static function updateTableCase() { global $wpdb; $hasCamelCaseTable = !!$wpdb->get_var($wpdb->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s', wfDB::networkTable('wfConfig', false))); if (is_multisite() && function_exists('update_network_option')) { update_network_option(null, self::TABLE_CASE_OPTION, !$hasCamelCaseTable); self::$_usingLowercase = !$hasCamelCaseTable; } else { update_option(self::TABLE_CASE_OPTION, !$hasCamelCaseTable); self::$_usingLowercase = !$hasCamelCaseTable; } } public static function usingLowercase() { if (self::$_usingLowercase === null) { if (is_multisite() && function_exists('update_network_option')) { self::$_usingLowercase = !!get_network_option(null, self::TABLE_CASE_OPTION); } else { self::$_usingLowercase = !!get_option(self::TABLE_CASE_OPTION); } } return self::$_usingLowercase; } } ���������������������������������������������������������������������������������������������������������������lib/GeoLite2-Country.mmdb���������������������������������������������������������������������������0000644�����������������00016656230�15233113245�0011250 0����������������������������������������������������������������������������������������������������ustar�00��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [�� d���� d�� d�� d��`��(�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d�� d��! d��" d��# d��$ d��% d��& d��' d��( d��) d��* d��+ d��, d��- d��. d��/ d��0 d��1 d��2 d��3 d��4 d��5 d��6 d��7 d��8 d��9 d��: d��; d��< d��= d��> d��? d��@ d��A d��B d��C d��D d��E d��F d��G d��H d��I d��J d��K d��L d��M d��N d��O d��P d��Q��R d��S d��T d��U d��V d��W d��X d��Y d��Z d��[ d��\ d��] d��^ d��_ d��` d��a2��b���c�W*��d�#��e�j��f�s��g�/ d��h��i���j����k����l����m����n����o����p��x��q t��r ��s ��t ��u ��v =��w = ��y t��z ��{ ��| ��} ��~ �� =�� �� t�� �� �� ������ �� =�� �� @�� �� �� t�� �� �� ������ �� = �� �� @�� ���� ~�� �� t�� �� �� ���� �� = �� ����  t ������������������ ~�� ������������������ �� " �� "���� ������ " " �� �� " �� ���� ������ �� ���� �� �� �� �� ���� �� �� ����  �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��  =������ = �� t�� t�� t t�� t�� t�� t���� t�� t�� t�� t�� t�� t�� t�� t�� t t C�� P����� � � �� = ��) =�� � � � � � � �� � � � �� � �� � � ��'� ���# =� =�!�" = �$ t =�% =�& = Z�( �* �+  �,�- �. �0��1��2��3�i Z�4�5 �6�!�7��8�g�9��:��;�c�<�[�=�B�>�A�?�@  %   �C�Y�D�E t �F �G �H�I�R�J�M�K�L  �N�O  �P�Q  �S�V�T�U  �W �X  %�Z �\�b�]�`�^�_  e �a   �d�u�e�s�f�q�g�p �h�i �j�k �l �m �n�o �r t  �t  �v�|�w�y�x  �z�{   �}�~�������� ����  %  %��  % � %� % ������  %  %��  %  %����  %  %�� � %�  % ��� %  % � ������  %  %��  %  %� �  ��  % � �� ��� � ��  ��   ������   ��   ����   �  ��   ,��������� ; �� t � t ����   ��� � � ��������   ��   ����   ��   ������   ��   ����   ��  � �   ����� � �   �� t ���� � � � � � � ��� ��  � �  �  � ��  � �� � �b�!�7�"�,�#�(�$�&�%   �'  �)�+�*  % �-�0�.�/ �1�4�2�3   �5�6 Q �8�Y�9�S�:�< �; �=�>  �? �@ �A�H �B�C�E �D  �F�G   �I�P�J�M�K�L   �N�O   �Q �R   �T�W�U�V   �X # �Z�`�[�]�\ e  �^�_  �a %�c �d�e�f e�h��i��j�q�k�n�l�m , % %�o�p E�r E�s�y�t�v �u t�w�x  t t�z�}�{�| t  �~� t ����� t��  � � S��� ��  ��������� t �  � t # ������  S� %� i ���  � t�  t�  � �����  � ������������ � # � &��� t t��� � #���� i� i�  i� � e� � �� ���� ����  �� � �  �� �� ���� �   t ���� ��� �  � �  ������ �� ����   e� �� % � ����  i���� t ��� �� � � �  �� �   ���� � � �  ���  �� � � %�"��#�k�$�E�%�;�&�.�'�+�(�) �* �,�- %  #�/�5�0�1 �2�3�4 t   �6�:�7 �8�9  t  �< �=�C�>�B �?�@�A % S �D �F�\�G�S�H�P�I�L �J�K �M�O E�N  �Q�R % �T�U�Z�V�X �W % �Y  �[  �]�`�^ %�_   �a�b�f�c�d % �e  %�g�i�h Q�j  �l��m��n��o�z�p�s�q �r  �t�w�u�v  �x�y �{�~ S�| �} % � , t� t � ��� �   ,����������   ��  e  � � % ����� � �  ��� � � ��  ����   ��  � �  ���  � ��� % � % � ����� � �� ���� % ;��  � t�� ���� � �  Q %�  ���  �  � ��9���������� �� � ��� ���� ������  � � �  � ���� #  #�  #� #� #  ��� t�� � � �����   ��  ��  ��� � � � $ �  ���� ���    t��!�  ��� ���� t �  i %  �"�#�0�$�*�%�(�&�'  �)  �+�.�,�-  “ t �/  �1�6�2�4 �3 �5 t�7�8   �:�X�;�C�< �= �>�@ �?  %�A�B  �D�Q �E�F�L�G�I �H �J�K �M�O�N �P �R e�S�W�T�V�U i S #�Y�h�Z�a �[�\�] �^�` �_ �b �c�f �d �e  �g , % �j�~ s�k�l s s�m�n s�o s s�p�q s s�r s�s�t s�u s�v s�w s�x s s�y�z s s�{�| s s�} s Â�� Ñ à� ï��-������������ ü i� x�� ć� � � � ����� � ( 7� F ć F� V�  F  V e�� t ł ï Œ���� š ű  .�� ƙ x ƨ������ Ʒ �� Z ï s���� �  � !� ! ï Dz�������� s � �� Dz ï Dz�� �� ƨ Z���� � š�  (� Dz��   7�� F ï V ������  �� � �  ʈ  ü����  ʗ ʥ �� ï�� ł ʵ ł V�� ł ł���������� Ʒ ��� � ���� s��� ï ï 7 �� ï  ������ ˘ c Z r��� ï s ���� ̀ ��  ƙ � �� �� �� � Ʒ Ʒ Z�� ��� Dz ! Dz ü ���� š� �� $ �� / ï ƨ��&� �#�!�" �$�% Ʒ ü  >�'�*�(�) à š Z�+�, Œ �.��/�Z�0�G�1�8�2�5�3�4 Œ j�6�7  y �9�B�:�>�; �<�=  ) ƨ�?�@�A 8 G 8�C�D V �E ü�F   �H�S�I�N�J�K  Dz�L ł�M ł �O�R�P V ł�Q ł x�T�W�U�V ï Ʒ 7�X�Y Z ï�[�v�\�c�]�`�^�_ ƙ V s ƨ�a�b �d�s�e�p �f�g �h �i �j �k �l  �m �n�o   G�q�r �t�u š s �w��x�}�y�|�z ł �{ ł �~� s  Ʒ ���� �� � � � � � � � V ��� �  � š ����������� s t /� ƙ = M�� \� k c ���� z ï � V ï ш������ 7 Z Z ï�� ï  ���� ї �� ƨ  �������� ѧ  s�� Z� ł� ł����  # � ł ���� ï > ü� �� ï i i Z������ G ü�� Œ�� ï 0 ï ï =����  s Z�� ï L x����� ̀ Œ� Œ� Œ�� Œ� Œ Œ�� Œ� Œ Œ \�� k z ҉ ï��� i �� � � �� � �� � � � � � � � �� � R s �� �� ��� i ̀� � ` y s `� ��� s s� Œ��_��W��S��P��O��*� š� � � � � � � �! �" �# �$ �% �& �' �( �) š �+ � š�,�-�3 š�.�/ š�0 š �1�2 š  š�4�B�5�=�6�:�7�9 š�8 š   ,�; :�< , �> š�?�@ š �A š š�C�H š�D�E�G ��F � š H W�I�L�J�K c �M�N : k š š�Q �R š�T š�U š�V , š ,�X�Y  š�Z�]�[�\ š š�^  : š š�` š�a š�b š�c�d  �e�f �g  �h �i �j �k �l�m  �n �o �p�q �r  š �t�Q�u��v š�w��x��y� š�z š�{ š�|�} š�~ š� š� š� š� š� š š�� ��� � � � š� � �� � � š ��� š� š� š� š� š š� š� š š���� š š�� š� š š š� š�� š� š� š š�� š š� š ��� š� š� š š� š� š��� � � � š�� š� š + š š�� š š� š� š��� š� š� š š�� š š�� š š�� š� š š�� š�� š š� š � š� š�� š��� š� š�� š� š š� š�� š� š š� š� š�� š� š� š� š� š š ( š� š�� š� š š� š�� š� š š�� š š� š�� š š�� š š� š š� š�� š� š� š š� š��� š š�� š� š� š� š š� š ��-� �� �H� �� �6� �-��$ ս�� �� ��� d ï r��!��� � ց ��� � ց� � ց �"�#  ű  �% ï�& ƙ�'�*�( ï s�) �+ �, ƨ �. �/ �0 �1�2 �3 �4 �5 ł�7 ƙ�8��9�c�:�[�;�P�<�C ï�=�>�A�? ï ï�@ ֐ ï�B ï ֞ ֮�D�L�E�H�F ï�G ּ ּ !�I�K�J  ֞ ! ּ ï�M ï�N ï�O ï Dz�Q s�R�T�S ï ï ï�U�V�Y�W�X ï ּ ï ּ ֞�Z �\�_ �] ï�^ ï ï�` ï�a ű�b d �d� �e�f �g�s �h �i �j�k �l�m �n �o�p �q �r ׁ �t�u �v �w �x �y �z �{ �|�} �~ j �� �� � �� � � � �� � � � j � � �� � � �� � � � j�������� �   ��� � Z� � � �� � � � א��� � ����  ן �� ן ן � ׭ ű š� ƨ������ � �� � � �� � �� s V � Z ï� s ï�  ��= ï��� c�� `���� �� à ����� C R ` R� �� � �� � � � o�� ` �� � Œ�� Œ ~ Œ � 7��:��7�� �� ٍ���� ٍ� ٍ� ٍ� ٍ� ٍ ٜ ٍ ٫�� ٍ�� ٍ� ٍ� ٫ ٍ�� ٍ ٫ ٍ� ٍ�� ٺ ٍ ٍ� �&� �� �� � � � � � ٺ � � � �� ��  �� � � � �%�! $�"�# �$ 3 3 �'�0 B�(�) �* �+ �, �- �.�/ Q ٍ�1 �2 �3 �4 �5 �6 ٍ �8�9 s Z ï `�; ï�< ` ƨ ƨ�>�? Ñ�@ à�A�G�B �C�E�D ï G s�F à �I� ~�J� +�K�|�L�V�M i Ñ�N�O c�P�S�Q�R x ï �T�U ü ە �W�h ̀�X�Y�` �Z�[�\ V ˘�] s�^�_ ~ ܌ ܜ �a�b ` ܫ�c�d �e ܹ X�f š�g š  ï�i�j�o ï�k�l�n g�m  Œ�p�s�q�r š ƙ �t �u �v�y�w�x �z�{ c�}�~� Ñ G�� �� �� 6������ Z�� Z� Z���� Z Z� Z��� Z  Z� Z� Z Z�� Z  Z��� Z� Z� Z Z�� Z Z�  Z� Z� Z� Z� Z  Z���� Z���� Z�� Z� Z� Z � Z� Z  Z Z� Z�� Z Z�  Z�� Z�� Z� Z Z�� Z  Z� Z� Z Z�� Z Z�  Z� Z Z�� Z Z�  Z�� ������� Z�� Z Z � Z Z�� Z�� Z���� Z , Z� Z , Z Z� Z ,������� Z Z� Z� Z�� Z , Z� Z� Z  Z� Z� Z� Z Z� , Z�� Z�� Z Z�� Z Z ; Z� Z� Z� Z � Z� Z Z�� Z Z� Z���� Z� Z , Z� Z� Z , Z� � � �  Z�  Z� �  Z Z�  Z � �  Z� � �  Z� � Z� Z Z J�  Z Z� � �  Z Y h Z� � �  Z Z�  Z�  Z�  , Z�  Z�  Z Z � � %�  Z Z� � � ! Z � " Z Z� #� $ Z Z ,� &� . Z� ' Z� (� ) Z Z� * Z� + Z� ,� - Z , Z� / Z Z� 0� 1 Z� 2 Z� 3 Z Z� 4� 5 Z w Z� 7� _ Z� 8� 9� D� : Z� ;� ? Z� <� = Z� > Z Z Z� @� A � B Z� C Z Z � E� P� F Z� G� L Z� H� I Z� J Z� K Z  Z� M Z Z� N Z� O , Z� Q Z� R� Z Z� S� T Z� U Z Z� V Z� W� X� Y Z h h Z� [ Z Z� \ Z� ] Z� ^ Z ކ� `� � a� l� b Z� c Z� d Z� e� i� f Z Z� g Z� h Z ,� j Z� k Z , Z� m� z Z� n� o Z� p� t Z� q� r Z Z� s ޕ Z� u Z� v Z Z� w� x Z� y Z , Z� {� Z� | Z� } Z� ~�  Z� Z  Z Z� � Z� Z� � � , Z ,� Z , Z� � � � � Z� Z� Z Z� Z� � � � Z� Z� Z� � Z ޤ Z Z� Z� � Z� Z Z� � Z , Z� Z� Z� Z� � � Z , Z Z� � Z� Z , Z� Z� Z� Z Z� Z� Z� � Z� Z� Z , Z Z� � � � � � � Z� � Z Z� � � � Z� Z Z� ކ Z Z� Z� Z� � Z� Z Z J� � Z� Z� � � Z� � Z� Z  Z� Z Z� Z� � Z� Z , Z� � � Z Z� Z� � Z Z�  Z� Z Z� Z ;� � Z� � Z� Z Z � Z� � � Z� Z Z� Z� Z� Z ,� � Z � Z  Z� � � Z� � Z� Z� � � Z� � � Z� Z ,� Z Z � Z Z� � Z Z � Z� Z� � Z�  Z�  Z Z�  Z� �  Z , Z Z�  Z� � � � �  Z� � Z� Z�  Z Z , Z�  Z� �  Z Z�  Z ,� � �  Z Z� �  Z�  Z , Z Z�  Z�  Z�  Z�  w Z� � $ V� !� "� # ï  � %� )� &� ( Ʒ� ' r  Z� * � ,� >� -� . ҉� /� 6 ï� 0� 1� 5� 2 š� 3� 4 ޳ s Z ű ҉� 7� 8 k � 9� : ï V V� ;� <� = r s ï s� ? ƨ� @� ]� A� Q� B� J� C� D ï � E ï ׭� F ï� G� H� I Dz ּ ּ Dz� K� M� L ƨ y � N � O � P j� R� X� S� U� T ƨ  i� V� W Z ï Œ >� Y� [ Œ� Z � \ d� ^� w� _� q� `� b� a � c� m� d� l � e � f� g ߡ� h � i� j ߡ � k ߡ Z � n r� o ߰� p ߰ r� r� v � s� t� u >� x ï� y� | ш� z� { y � } � � Z� � z `� � x� � � `� ï r � � � Ñ   ï� � � � � � � � � ü� � � � s � � G Z � � � � i� ï `� � ` ` ߿� � � � � � � � �  � � � �  � � � � � � �   � � ` i � x�  Ʒ� � � � �  d ï� � � ï t  Œ  � � � � � � � � � � � r� r  � � � � � � � r r = ( � � � � = r  � � � � � � r r �  = r  r� � � � r � � r r� �  Ʒ� � � � � � � � � s ï ï� � ` `� ` 7 � � � � � � � x� � � � � � G s� ��   ï G � �� �� �n� �  � � � � � � r � V d� � �  �  �  � �  �  V � � �  �  � � p� � `� � O� � '�  R� � ! � " � # � $ � % � & s � (� F� )� ?� * � +� 8� ,� 2 � -� .� 0� / R R� 1 R R � 3� 4� 6� 5 � 7 � 9 � :� ;� =� < � > � @ � A � B� C � D� E .� G .� H .� I .� J . .� K� L .� M� N . . � P � Q � R � S� T� W � U� V d d� X� Y � Z� ] � [� \ d � ^ � _ d� a� c� b � d� e � f � g � h � i � j� k � l� n� m < <� o < <� q� v� r� t � s L s� u � w� � x� C� y� +� z� � {� � |� � }� � ~� � � \ \� � �  � � � � � � | |� � � � � \ \� � � � � � � � � � � � u u� � � � � �  � � � � � � � � � � � � � � � �  � p p� � � � � � � � � � O O � � � � � � � � � $ $� � � � % %� � � � � � � � � f f� � � � � � � � � � � � X X� � � � R R� � � � 3� � � � � � � � � � � � � � q q� � � � � � � N N� � � � �  � � � � � � X� �  � � � � � � � � �  �  K K� � �   �  � � %� � � � �  - -�  � !� #� "  � $ � & � '� )� (  � * y y� , � -� ;� .� 3� / � 0� 1 � 2 � 4� 5� 8 � 6� 7 < <� 9 � : � <� = � > � ?� A� @  � B � �� D� � E� � F� n� G� W� H� N � I� J� L� K  � M  � O� R� P � Q | |� S� U� T � V \ \� X� c� Y� ^� Z� \� [ � ] � _� a� ` u u� b � d� i� e� g� f  � h � j� l� k � m � o� � p� {� q� v� r� t� s � u  � w� y� x p p� z � |� � }� � ~ � O O� � � � � � � � � � � $ $� � � � � � � � � � f f� � � � X X� � � � � � � � � � � � R R� � 3� � � � � � � � � � q q� � � � � � � � � � X X� � � � � � �  � � � � � � � � � � � � � K K�  � � � � - -� � � � � �  � � � �  � � � � � y y� � � � � � � � � < � � � � � � � � � � � � T� � '� � � � � � � � �  � � �    �  } }� � � � �   �  � � �  �  O O� � � � � � �   �  e e� � �   �   � � "� � �  k k� !  � #� %� $   � &  � (� =� )� 4� *� /� +� -� ,  � .  � 0� 2� 1  � 3 i i� 5� 8� 6 � 7 = =� 9� ;� : � < e e� >� I� ?� D� @� B� A 6 6� C � E� G� F w w� H  � J� O� K� M� L ( (� N 8 8� P� R� Q  � S  � U� � V� m� W� b� X� ]� Y� [� Z  � \ > >� ^� `� _  � a b b� c� h� d� f� e  � g  � i� k� j  � l   � n� y� o� t� p� r� q  � s % %� u� w� v  � x { {� z� � {� ~� |� }  �   � � � �  �   � � � � � � � � � / /� > >� � �  � " "� � � � � 1 1�  � � �  �  � � � � � � � B B�  � � �  �  � � � � �  � & &� � � 5 5�  � � � � � � � � � � B � 2�   � � v   � � � � z   "� �  B  '� � � � � � � � s !]� � ! !� � � � ! "X #� #� � # $= $ %� � � � � � � � % &y & '� � ', '; ' (A� � � � ( ) ) *� � * * + +� � � � � � ,M ,] ,l ,{� � -0 - - .p� � � � . /� /� 02  02� � 0A 0 1p � �� �Y� �*� �� ���� ��  ���   � } }� �� � �  �  ���  � O O�������  � e e���  �  � �%�!�#�" k k�$  �&�(�'   �)  �+�B�,�7�-�2�.�0�/  �1  �3�5�4  �6 i i�8�=�9�;�: = =�< �>�@�? e e�A 6 6�C�N�D�I�E�G�F �H w w�J�L�K  �M ( (�O�T�P�R�Q 8 8�S  �U�W�V  �X  �Z��[�r�\�g�]�b�^�`�_ > >�a  �c�e�d b b�f  �h�m�i�k�j  �l  �n�p�o   �q  �s�~�t�y�u�w�v  �x { {�z�|�{  �}  �����  �   ��� / /� > >���������  � " "��� 1 1�  �����  �  ��� B B�  �������  �  ���  � & &����� 5 5�  ��� B B�  �������������  � 2 2��� v v�  �����  �  ��� z z�  �������  � " "���  � B B�����  � ' '��� � ��������� ! !� ! !��� ! !� "X "X����� #� #�� # #��� # #��  �� �� $=�� $ $�� � % %� % %� �� �� &y &y� & &��� ' '� ', ',��F��/��$����� '; ';� ' '� �"�! (A (A�# ( (�%�*�&�(�' ) )�) ) )�+�-�, * *�. * *�0�;�1�6�2�4�3 * *�5 + +�7�9�8 + +�: ,M ,M�<�A�=�?�> 2 ,M 2 �@ �B�D�C ,] ,]�E ,l ,l�G�^�H�S�I�N�J�L�K ,{ ,{�M -0 -0�O�Q�P - -�R - -�T�Y�U�W�V .p .p�X . .�Z�\�[ 2 2 �] �_�h�`�c�a �b / /�d�f�e / /�g 0A 0A�i �j�l�k 0 0�m 1p 1p�o�}�p�q ł s�r�u 2�s�t 2 2 2�v�| 2�w 2�x�y 2 2�z�{ 2 3" 2 31 2 �~ � � � ց� `� ` ű� ű r��� ̀� �� 3@ ` Z� G����� s  š ï�� s Ʒ���� ��� `� `� ` �� ̀�� � s ï 3P�� ï � s� s � ҉���������   i ƙ� ��� s Ñ s�� �� � � 3_ �� y Z� `�� s������� ï���� � Z š� y 3m 3|���  s� à  ï���� ï��� ï� ï�� Dz 3 ּ�� ï ̀ ̀ ï�� ï� ï� ï 3� > (� ( š������ ï ï� > � ï ï� ����� 3 3 3�� 3 3 � i���� s�� r� Ʒ  � V� Ʒ� Z� 3 Z� à�����   ï�� c � ҉��,� � �� �� 4� r s��������  4�� : H H 4! ł �  Z ��!� x�� ս  � � ƙ�"�%�#�$ Z ï ` �&�'  ̀�( Ʒ�)�+�* à à 4/ 4/ à ` Ñ�.�$�/�k�0�M�1 ï ï�2�3��4�< �5�6 ҉�7 �8 �9 �: �; 4? �=�X�>�D�?�B�@�A Ʒ V�C s  �E�N�F�I�G�H Z ï�J�M Ñ�K�L  E  x�O�R�P�Q s ƨ ï�S�W�T �U�V Z s Ʒ ï 4N�Y�\ �Z�[  �]��^�s Œ�_�`�j�a Œ Œ�b�c Œ�d Œ�e Œ Œ�f Œ�g Œ�h�i Œ 4^ Œ�k�o Œ�l Œ�m Œ�n 4l Œ�p Œ Œ�q Œ�r 4l Œ�t�{ Œ�u Œ�v Œ�w Œ�x Œ�y Œ�z Œ 4l�|��} Œ�~ Œ Œ�� Œ 4l Œ� Œ�� Œ�� Œ Œ� 4l Œ Œ�� Œ 4l Œ ׭� Ʒ���������� 7  ׭�� Ʒ� �� Z s `�� ս�� ` ս Ʒ ï����>������ Z��� Z�� Z� Z� Z Z�� Z , Z� Z Z�� Z� Z Z� Z���� Z�� Z� Z� Z� Z� � Z , Z Z�� Z� Z� Z� Z Z�� Z , Z � Z� Z� Z�� Z� Z� Z� Z , Z���� Z�� Z� Z� Z� Z Z� Z� , Z��� Z� Z Z� Z��� Z   Z� Z Z�� Z� Z , Z Z�� Z��� Z� Z� Z� Z� Z Z ;� Z� Z Z� Z��� Z , , Z�� Z��� Z�� Z Z� Z� Z� Z �� Z�� Z� Z� Z� Z� Z  Z� Z� Z�  Z� � Z� � � Z� Z� Z� Z�  Z Z� Z� Z ��' Z��� Z� Z� Z 4{ Z� Z���" Z�� Z� Z�! Z h Z�# Z�$ Z Z�% Z�& h Z�(�3�)�-�* Z Z�+�, Z  Z�. Z�/ Z�0 Z�1 Z Z�2 Z �4�8 Z�5�6 Z Z�7  Z Z�9�: Z Z�; Z�<�= Z Z �?�c�@�Y�A�L Z�B Z�C Z�D�E Z Z�F Z�G�H Z�I Z�J Z�K Z , Z Z�M�N�T�O Z Z�P�Q Z Z�R Z�S Z �U Z Z�V Z�W Z�X Z  Z�Z�[�_�\ Z�] Z�^ Z  Z�` Z Z�a�b Z Z �d�} Z�e�f�q�g Z�h�k�i Z Z�j Z ,�l Z�m Z�n Z�o Z�p Z Z ,�r Z�s�u�t Z Z h�v Z�w Z Z�x�y Z Z�z Z�{ Z�| Z J�~�� Z� Z Z�� Z� Z� Z Z�� Z  Z��� Z� Z� Z Z  Z� Z�� Z Z�  Z�� Z��� Z� Z��� Z� Z�� Z Z�� Z Z� Z�� Z Z Z� Z� Z� Z� Z� Z�� Z� Z  Z Z� Z� Z� Z��� 4� 4� 4� 4�� 4 4� Z 4 4�� 4� 4� 4� 4� 4 4 Z����������� Z� Z��� Z� Z Z�  Z Z � Z Z�� Z Z� Z� Z� Z , Z����� Z� Z� Z�� Z , Z� Z� Z� Z ޕ Z Z� Z� Z ���� Z�� Z� Z Z�� Z Z�� Z� Z  Z Z�� Z� Z Z� , Z� Z� Z� Z Z�� Z� Z Z� , Z��� Z� Z� Z Z�� Z� Z� Z Z�� Z Y�� Z� Z� Z� Z�� Z� Z Z� , Z Z� � �� Z� Z� Z� Z� Z , Z Z�� Z� Z Z�  Z��.��(��"� Z Z� Z� Z� Z� Z� �! Z w Z Z�#�$ Z�% Z Z�& Z�'  Z�) Z�* Z�+ Z Z�, Z�- Z �/�D�0�< Z�1�2 Z�3�8 Z�4 Z�5�6 Z�7 Z Z , Z�9 Z�: Z�; ; Z Z�= Z�>�? Z�@ Z�A Z Z�B�C Z , Z�E Z�F Z Z�G Z�H�I Z Z�J�K Z Z�L Z ,�N��O�w�P �Q�^�R�W�S�U �T  à�V ï ï �X z�Y�\�Z�[ ` Z s�] s�_�d �` �a�b�c  r ` s�e ï�f�s �g�h y r�i�j r r�k r�l�m r�n r�o r r�p r�q r�r 4 r�t�u ï �v š�x��y�| �z�{ G �}��~�� �   � ű�  ����� ï ҉ 7� Z Ʒ ���� Ʒ ï� ï� ï ï� ï � G��� 4 4 4 4�� �� Œ� s� � š��� � � � �� �� ��� �� � � �� � � �� � � ������� ��� s��� Ʒ � ���� ց 4 j ł� ł 4 ł ��� s Ñ�� � ��  y � ��� ��� š� š � š š 5  � ս ��� ��� ��� �  ƙ � 5 ƙ������ ƙ ƙ ƙ ���� ƙ 5% s�������� ƙ ƙ ƙ� ƙ� ƙ��� Œ�� š ƙ � 54 5C��J ҉�� ƙ��G��&���� �� � š š 5R� š š X� ��� š k H š �  š��!�� š� š X�� 5a  š� 5p�� X� X� X� X� X X� 5 X�"�$�# š X 5R�% H š�'�<�(�6�)�4�*�3�+ ʗ ʗ�,�- ʗ ʗ�.�/ ʗ ʗ�0 ʗ�1 ʗ�2 5 ʗ H ʗ š�5 H š�7�:�8�9 š š k š�; š�=�D�>�A�?�@ š 5 š c�B�C X š š �E (�F ( š H�H s�I  �K�W�L�P k�M�N ï s�O �Q�R�U�S�T y Z �V Z ï�X�c�Y�`�Z�]�[�\  �^�_  ` �a ï�b ï �d�e�h�f�g  �i�j G ƨ�l�!�m�q�n ï�o�p ` c ҉�r��s s�t s s�u�v s�w s�x s s�y�z s�{ s s�| s�}�~ s� s s� s�� s� s 5 s��� Ʒ��� s ï�� ���� � Œ � d Ʒ� Ʒ z� s  Ʒ������� ��� �� s s � ï�� s� s�� s 5 5� ï � S ����������� ց � 4��� ց ł � 5 3_����� 3_ �� � ց 5�� ց 5 5��� 4 � 4 4�� ց ց �� ��� � ց ł � ł ���� � ց � ց� �� � � 6 ����� ց 6� ց� ł�� ł� ł ��� �� � � 6& ց ł�������� � ց � ց ��� ց ց�� ł ł� ł������ ց�� ł ł� � ł�� �� ł�� ց� � 65 ց � � � � � j ���� � ց � � �� � � � � � � ł �"��#�> ƨ�$�%�2�& �'�,�(�* ׭�)  ï�+ ˘  s�-�0�.�/  Œ ï s �1  s�3�:�4�5 �6�8�7 i �9 Œ Z s�;�< �= Z �?��@��A�l�B�T�C�I�D�G�E�F  ü 6D �H ! ï !�J�O�K�L 6S 6b �M�N ! �P�Q 6S Dz Z�R ł�S �U�c�V�`�W�]�X s �Y�Z �[ �\ 6q �^ 6�_ 6 �a�b 6S  ï�d�i�e�h �f �g ï ƨ s�j�k ü  G �m��n�z�o�r�p�q   ï �s�w !�t�u�v ł ց�x �y V \ V�{�~�|�}   s ï�� d ƨ�� 6������ r r s � V� ց ���� 7 �� ï ł���������� Dz�� 6 6 6�� ƨ��� 3 ּ ּ 3 ü x����� 6 6 6 4/ �� d ï������� ƙ 6� 7� 7 �� x � r� > > 7�� � ï�� �� ������������ 7 �� \ V ƨ�� s� � 7 4? i ü���� 7�� 7 8 7 ï Z�� V š V Ʒ������ s ܌ ƙ 8�� ï ƨ� � ł����� �� � 8� 8� 8� 8� 8� 8� 8 8 8-� �� 8; 8J 6�� 8Z  ï��F��$�������� ï ��� x�� ł j� ü ï� 8i ï�� �� �� �� ց  ց ï� ï ֐ `�� š ï à� 8w� 8w 8������ ï 8 ƨ�� ï ï�� �� � š� š  ʥ �!�# G�" ï Dz + 8�%�5�&�-�'�*�(�) i 8 Z Ʒ�+�, Z r Z�.�0 �/ Z �1�2 à�3 �4 r 8 8�6�?�7�<�8 r�9�:�; 8 8 r 8�=�>  Z �@�C�A�B Dz ߡ �D�E s ƨ  Z�G�g�H�V�I�O�J�L �K r�M�N Z ï�P�S�Q�R ł 5C �T�U 7 �W�`�X�] �Y �Z�[�\ F ć F V�^�_ ƨ �a�d�b�c k ƙ Z s�e�f ƨ  Z�h�x�i�o�j�m�k�l ï  �n ï ï �p�s�q�r i \ ƙ �t�w�u ï 6�v ï�y��z�}�{�| Ʒ  �~� ƙ Z ���� � x� 9 x ï 7��  Z ï�� Ʒ� i�� G������ 9  �� � �� ï Ʒ  ï 9%��#�� ������������� ֞ 95�� 9E 3 9U 9d�  ï 9s >� > ï��� ï���� ֞ 9 ֮ � 9 ï� ï�� ï ï ����� ï ̀� ï� 9 �� ï� ï 9 ï� 9 9�� ï� ï� 9 ֞ ï����� 95 9 ֞ ֞ 9�������� ï��  3 95��� ï ï� 6 ï 6�� ��� 9 9U  ̀ ï�� ï�� 9 � ï� 9 ּ� ּ !������� ï ï ּ��� Dz ! Dz 6�� ï Dz� Dz�� Dz� Dz� Dz Dz� Dz :� ï�� 6 ï� ֞ 3� ̀������� 9E : 9�� :" 9 ֞���� ּ ï :0 ï ï 9E ï� � � �� � ï����� 9 :> 9�� 3 :> ï����� ï ּ ּ !��  9 9 ï� ï� ï� �!�" :M ּ ï ! ` ׭�%�=�&�2�'� Ñ�(�)� �* ׭�+��,�y�-�: Z�.�/ Z Z�0�1 Z�2 Z Z�3�4 Z�5 Z Z�6�7 Z�8 Z�9 Z  Z�;�^�< Z�=�T�>�K�?�E Z�@�A Z�B Z Z�C Z�D , Z�F Z�G Z�H Z�I Z�J Z h Z Z�L Z�M Z�N�O Z�P Z Z�Q Z�R Z�S Z Y Z�U Z�V Z�W�X�Z Z�Y Z�[ Z Z�\�] Z Y Z�_�l�`�g Z�a�b Z�c Z�d Z�e Z�f Z Z Z�h Z�i�j Z Z�k Z  Z�m Z�n Z�o�p�s Z�q�r Z Z ,�t Z�u�v Z , Z�w Z�x  Z Z�z�{��|��}��~ Z��� Z��� Z Z�� Z Z  Z�� Z Z� h Z Z� Z�� Z Z Z��� Z�� Z� Z� Z� Z , Z Z�� Z��� Z Z� :[� Z� Z :[ Z��� Z Z� Z� Z� Z�� Z Z� , Z Z� Z� Z�� Z Z� Z� Z�  Z Z������ Z� Z� Z� Z 4{ Z Z� Z�� Z Z� Z 4{��� Z� Z Z � Z Z�� Z Z�� Z� Z Z����������� Z Z�� Z Z�� Z Z ,� Z� Z Z�  Z��� Z Z�� Z� Z Z� Z��� Z  Z ��� Z��� Z Z� Z� Z� Z Z�� Z� Z Z , Z�� Z Z�� Z Z 4{������� Z Z�� Z� Z Z� Z� J Z� Z� Z Z�� Z Z�� Z� Z ,� Z�� � Z� Z Z�� Z� Z Z � Z Z� � Z Z�� Z Z � Z��� Z� Z Z� Z� Z � Z� Z Z�� Z Z� Z� Z ��H� �7�!�+�" Z Z�#�$ Z�% Z Z�& Z�' Z�(�) Z�* Z Z�,�-  Z Z�.�/�2�0 Z Z�1 Z 4{�3 Z�4 Z Z�5 Z�6  Z�8�= Z�9�: Z�; Z Z�<  Z�>�E Z�?�@ Z Z�A�B Z�C Z�D Z Z  Z�F Z�G Z �I�c�J�X�K�U�L�R Z�M�N Z�O Z�P Z�Q Z  Z�S Z Z�T  Z Z�V�W Z Z  Z�Y Z�Z�[�^�\ Z Z�]  Z�_ Z Z�` Z�a Z�b :j Z�d Z�e�n�f Z�g Z�h Z�i Z�j�l�k Z ޕ Z�m Z ޕ Z�o�w�p Z Z�q Z�r�s�u Z�t Z ޕ�v Z ; 4{�x�}�y Z�z Z�{ Z�| Z h Z Z�~ Z� Z� ; Z��������� Z� Z� Z Z�� Z� Z� Z Z 4{ Z� Z�� Z Z� Z� Z� Z ;�� Z���� Z Z�� Z� Z� Z w Z� Z� Z Z�  Z���� Z�� Z Z  Z�� Z� Z Z� Z� Z ,� Z� Z� Z� Z Z ,���� Z�� Z Z� Z� Z� Z ޕ� Z� Z� Z� Z� Z� Z� ޕ ޕ Z� Z� Z� Z� Z Z�� Z� Z� Z��� Z� Z� Z� Z�� Z Z��  ޕ Z���� Z� Z Z� Z� Y Z Z�� Z Z�� Z Z Y������� Z Z�� Z Z� Z , Z� Z� Z� Z� Z ,��� Z� Z�� Z� Z� Z�  Z�� Z� Z�  Z Z�� Z Z  Z�� Z Z� Z��� Z Z  Z�� Z� � Z Z�� Z Z� Z�  Z� � � � �� `� r Z� s� ш ѧ �����  � � ш  ï�� ��%��$� �#�! `�" `  ï Ʒ ` ` z�&�' G �(  ï�) G�*�+�-�,  i �. Ʒ k�/�0 :y�1 :y :y : `�3 `�4 `�5�6 `�7 `�8 `�9 `�: `�; `�< ` ߿ `�>��? `�@�W �A�B ï�C�I�D Ʒ�E�F Z �G�H Œ  ` �J ƨ�K�N�L�M Ʒ  ï�O�V y�P�Q�T�R�S : :�U : �X�Y ï ƨ�Z��[�k�\ �] �^ �_�i�`�d�a �b�c ł �e �f ł�g�h ł �j �l �m��n�~�o �p�w�q �r�s ł�t ł ł�u�v ł ł �x �y ց�z �{ �| ł�} ł �� � ��� ց� ց ց� � � �� � � � : ������������� ց�� � � ց ����� � � ׁ ł� ł���� ց�� � � ; ����� � � 8 � � � ց ł�� � � ; ���� ց���� � � ;) ł� �� ł ł���� ց �� � � ց � 8� � � � ��� ��� � �� �� � � � � 6 ����� � � � 6& � � � � j� ��� ց � ց � ��� � �� ց �� � � �� Œ ҉���� � k� � � s� � � �� ;8� ; ;� ;8 ; ; ï y� ̀ `��� ̀�� ï ׭�� ƨ Œ ï����l��?� �.�!�(�"�%�#�$ ƨ < �&�' s ï ü ï�)�,�*�+ ˘ r s�- Z ׭ �/�8�0�5�1�2 ï \�3 �4 �6�7 s Z �9�<�:�; ƨ ł Ʒ�=�> Z z �@�X�A�H�B�E�C�D Œ x  ł�F�G Z < �I�R�J�Q�K�N�L�M �O�P ( š ü ï�S�W�T �U�V <, ʥ <: <, ï�Y�c�Z�`�[�_ ï�\�]�^ 8 6 Ʒ ƨ�a�b Ʒ ` �d�i�e�f Ʒ�g �h ł ց�j�k s y ł �m��n��o�w�p�s�q�r =�t�v�u = <I <W ` !�x�{�y�z  <f ! <f�|�} s ƙ L�~ ï� ï ּ������ x V 2�� ҉ <u ��� ` ï�� ƙ Ʒ �������� 2 Z ƨ�� ï  Z ��� ƨ . ï�� > k� ƙ <� 5 š������ s ��� < < < <��  s ƨ���� Z ü ł � ƨ ��3��-������� � �� ��� ��� < � < �� � ��� � � � � � ����� #� #� #�� #� #��� � � � � �� � � s �� ������� #� ������ � ���� <� #� �� � �� #�� �� � � � #� #�� ���� #� � �� ���� < <�� � #� � �#���� � #� � � � � �� � � � #� � � � �� �! �" (�$�*�%�'�& #��(�) #� #� �+�, #��.�2 ;8�/�0�1 Œ ï Œ ï�4�=�5  3m�6 �7 �8�9�;�:  ƨ�< ƨ ƨ�>�B�? �@�A 7 �C�K�D ï�E ï�F ï ï�G ï�H�I ï�J ï 4! ï ï�L ï�M�N ï ï�O ï�P 3 4! š�R�S š š�T�U š š�V�W š�X š�Y š š�Z š�[�\ š š�]�^ š�_ š š�` š�a š�b š�c�d š�e š š�f�g š�h š�i š š <�k�v�l�u�m š�n��o��p��q��r��s��t��u š�v š�w��x� š�y�z��{ š�|�}  š�~ š���� ��  � ��  š ��� �  ��   š ��  ��   š�����  � ��   š � � ��� š   š� �� ��  �  š � ��   š� š�� š š� š š�� š� š : š� š�� š š�� š� š� š� š� š� š� š� š� š  š š�� š š� š� š� = �� = = >� š š� š� š� š� š� š�� š š� š š� š�� š š� š���� š�� š��� š 5 š H��� š � š  š������ >� > š >� > š� š�� > š š >� š š�� š š >��f���� š� š� š�� š� š š� š��� š > � š����� �� š� š�� š� š š�  š š� š� � š� š� š š š�� š� š� š�� š�  >� š > š� š� š� š� š š�� š�� � š � š� �]�!�B�"�; š�# š�$�%�*�& š š�'�(�) > š �+�/�,�- š�. š š ( š�0�1�2 > š�3  �4 �5 �6�7  �8�9 �:  ʗ  š�< š�= š�> š�? š�@�A š š k�C�V�D�P�E�K�F š š�G�H š�I�J ( k š > š�L�M š�N š š�O š š�Q�R š š�S š�T š�U ʗ k š�W š�X�Y š š�Z š�[ š�\ c š š�^ š�_ š�` š�a š�b�c š�d š�e š � š�g�x�h�q š�i�j š š�k š�l�m š�n š�o š�p š š�r š�s š�t š�u š š�v�w š > š�y š�z š�{ š�| š�} š�~ š� š š�� š � š������ š� š�� š� š� š š�� š� š š� š�� š š� š�� š� š š� c š�� š� š�� š š���� š ?� š ? š ?��� š š� š� š�� š� š @ š�� š š�� š� š š� š @���� š� š�� š š� š�����  š� š @' š��� š š�� š š�� š�� š  š : š� š�� š š�� š� š š�� š š�� š š�� š� š š� š @7���� š� š� š�� š š >� š�� š�� š�� š� š � š ,� š š� š�� š : š����� š��� š š� š� A š� š� š š� š š� š� š� š��� š @ A >��� š š��� š� š� š  š� š�� š��� � š � � A X A A� š š��� A > A��s��F��7��(�� � š š� š��� š� A ʗ�� k š 5R c š�!�" š š�#�$�& š�% š 5 š�' š A�) š�* š�+ š š�, š�-�. š�/ š�0 H H�1 H�2 H�3 H�4�5 H H�6 H ʗ�8 š�9 š�:�@�; š�< š š�=�>�? š  c �A š�B š š�C�D�E 5 ʗ š k�G�b�H�R�I š š�J š�K�L š�M�O š�N š B�P�Q 5 š  A�S�] š�T�U š�V�Z�W�X < š�Y š B š š�[�\ š š š�^ š�_�` š š�a 5a š�c�k š�d š�e š�f š�g�h š�i�j š    š�l š�m�n š�o š�p š�q�r 5p B&  š�t��u��v š�w š�x��y š�z š�{�~�|�}  B5 ? < š� š š� š�� š� > (� š š� š� š� š� š�� š š � š� š š� š� š�� š��� š š >�� š š�� š�� š š� š� š� š�� š� š� š š�� š� š� š� š š�� š� š� š� š š� < š� š� š š�� š� š� š� š� š� š š�� š� š� š š� š� š� š� š� š� š� š��� � � ���� BD BD�� BD �� � �� � � � �� � �� � � � BD ��@ š���5� �� BQ����� �� � " � � ��� �� � �� � �� � B_� �� �� ��� �� B_ � � ���/� �"� � BD� BD� BD� � BD� BD� BD� BD� BD� BD� BD� BD BD� BD� BD� BD� BD BD� BD�� BD� BD BD� BD� BD�! BD�# BD BD�$�% BD BD�& BD�' �( �)�* �+�, �-�. �0 BD�1 BD BD�2 BD�3 BD�4 BD�6 �7�8 �9 �:�; �<�= �> �? Bm š�A�B š�C�d š�D�E�V š�F š�G�H�R�I�Q�J�K > B{ �L �M�N š�O š�P š  š + B�S�T @' B�U š B š�W�\�X�[ �Y�Z š + @'�]�`�^�_  + �a�b B > B�c B{ B�e�q�f�n�g š�h š š�i�j š�k š�l š š�m š > š�o�p š š�r š�s š �t š d š�w�!�x��y� š�z�{� š�|�} š š�~ š� š� š� š� š�� š� š B š�� š�� š š�� š� š š� š� š� š�� š š�� š� š�� š š�� š š�� š� š�� >�� >��� > >���� >� > >� š > >�� > >� š >� > >�� >� > >� >� š > š > š�� š� š� š š�� š� š š� š�� š š�� š� š� š� š� š� š� š � š����� š� š� š� š š�� š� š� š š�� š š š�� š š� š� š� š� š�� š š� š� š� > š��� š š� š������ š� š� š� š š� š >� š š� B�� š� š š B� š š�� š š� š� B š��� š š�� š š� š�� š� š� š š�� š š�� š� š š� š� š�� š� š š� � š š� š� � š� š� š� š š� š� š� š��!l����, š�� š� š� š� š š�� š� š�! š š�"�# š�$ š š�%�& š�' š�( š�) š š�*�+ š š B�-�}�. š�/ c š�0�1 š�2 š�3 š�4�i�5�C�6�>�7�: š�8 š�9 š � š�;�< š š�= š � š�? š�@�A š š�B š �D�O š�E š�F�G š�H š�I�L š�J š�K š ��M š š�N š ��P�e�Q�\�R�U�S š š�T � š š�V š�W�X�Z š�Y š � š�[ š ��]�` š�^ H�_ ��a�c �b �d š š�f š š�g�h š š�j š�k š�l�u�m�p š�n �o  H�q�s�r H � �t >�v�z�w š�x�y > c c �{ A <�| < š�~ š H�� š H�������� š� š� š�� š� ( ���� > �  š ��� š : ������ š� š� > ���� : š š (��� š� š ( : � >� � š�� �� š š�  : š���� ( š š� š� š��� š� š š� š�� � > (�� š� ( š� (� ( > ��!V š�� š�� `��������� š� š� š� š : š�� š��� š �� ( : c ,�� š ,� ,� ,� , š š�� š� š� š�� ���� �� š š� š ,�� š� š ,� � ,� , š������� š š š��� š   ���� š�� : š� ,� , š ������ ,� š š , š�� š : š�� š�� ( � ( (� � � š  ������ š š� � š�� š� š�� , š  š ,� š�� (� ( , , š� �n�!�d�"�,�#�)�$�(�% A š�& š�' , �*�+ ( 5 š �-�G�.�<�/�9�0�6�1�3 A�2 š �4�5 š š  š�7�8 (  �: š�; ( ( �=�A�>�?  ��@  :�B�D �C : c�E�F c �H�V�I�Q�J�K š�L�P�M�O �N 5 5 � �R�S �T�U 5 > >�W�Y c�X , ��Z�b�[�^�\ š�] 5 5 š�_�a �` ( �c š�e�j�f�h š�g š >�i š š 5�k š�l š�m š  š�o��p�s š�q š�r š c�t��u�~�v�{�w ( š�x�y š š�z  �| š�} A������ A   š � š ( š���� š� š 5� š 5 (�� š : š� š� , �� š��� š �� š� > š����������� š �  ��� � š š ���� ( š  ��  š � ����� š š š� š (�� š� š A�� š������� š š ��� š c H�� H 5�� 5 š �� š���� c 5 5 ,� š � š� š�� -�� ������ š : �� ( ��� š� š >� š������ š� š�� š ( š ���� š  š ��  š ( � š� š ( š������� š >� š � š� š  :���  ,� š (� š (� š š� š� š�� ��  š � � � � � �  ( š�  �� � � š� � š� š š š�  š � �   š  š� �  š� �  (� � � � � �  š�  š š š�  š� � � A� ! š� "� )� #� '� $� & š� % š ( š (� (  ( š� * � + � , š š � .� Y� /� U� 0� F� 1� : š� 2� 3� 9� 4� 6� 5 š  š� 7 š� 8 š š (  š� ;� ?� <� = , š� > š š ,� @� C� A� B ,  š (� D� E > > š� G� T š� H� I� M� J� L š� K š  š � N� R� O� Q š� P š � š �� S H � H @ š� V� W� X š � � š� Z š� [ š� \ š� ] š� ^ š� _ š H š� a� � b� � c� x� d� m� e� j� f� h �� g :� i � k š� l š :� n� r š� o� p� q : > �� s� u� t š š� v� w š š� y� � z� � {� } (� | š  š� ~ ( B š� � �  , ,� š� š� š� š� � B š B� � � � š� š (� �  š š � � � � > B š � � š š� � � � � � � � š c� � ( c ( c� š š� � � š� � � : š � � � � >  :� � š : š� � � � � � � š � š� � � � � š� š� � š� š š� š B > � ( š� � � š� � , 5 � @� � � � š ( :� �  : š� � �! š� š� š� � š� š� � � � � � � š� š š� š š� š� �  š � � � � � � š  > š� � � � š š ( (� ( š� � š� � š � š š� � � š š� �!� � � � � � š� š  š� š � �!� � š� > �!��! š ��!�!�!�! š c š�! š :�! �!�! �!�! �! c�! c š�!�! � , š�!�!�!�! , š�! š š �!�!�!�!�! š �!�! : : š�! š�! š š�!! š�!" š�!# š�!$ š š�!%�!& š�!'�!A�!(�!3�!)�!, š�!*�!+ š ,�!-�!0�!.�!/ š : A�!1�!2 š A š�!4�!:�!5�!7 �!6 š 5�!8�!9 5 š š�!;�!>�!<�!= ( š š�!?�!@ š š �!B�!M�!C�!I�!D�!G�!E�!F š � ( š�!H  š �!J�!K � š�!L š š �!N�!S�!O�!Q�!P š  (�!R š š (�!T š�!U H H š�!W�!j�!X š�!Y :�!Z : :�![ :�!\ :�!]�!^ : :�!_�!` :�!a : :�!b�!c : :�!d :�!e :�!f :�!g :�!h :�!i š : š�!k , � š�!m�!n�!t š�!o�!p š�!q�!s�!r : , š�!u�!y�!v�!x š�!w : � �!z�!| š�!{ š�!} š�!~ �! š�! š�!�! : �!�!�! š�! š�!�!�!�! � < š�! š A š�!�!�!�!�!�!�!�!   : š�!�! H š�!�!�!�! � W �! š š �!�!�!�!�!�! š  :�!  š ��!�!�!�!  H �!�! š �!�"e�!�!�!�!�! �! �! �! �!�!�!�!�! �! �!�!�! P �! B�! �!�!�!�!�! B B B C �!�! C C$ C2 B�! ~�!�!�! <u�!�!�! �!�! = C? <u�!�!�!�!�!�! CN �! �!�! �! �! �! �!�! �! 8w C] �!   = �!�! �! �!�! �!�!  �! �! �!�! �! �! Cl �! Cl�! Cl �!�! �! �!�!�!�!�!�!�!�! = ~�! Cy �!�!�!�!  š�!�!  �!  �!�"E�"� P�" �"�" �"�" �" �" �" �" �" �" �" �" <u t CN �"�"6�"�"5 �"�"�"'�" = <u�"�"�"!�"�"�"�"�"�" C C C C�"�" C C C C�"�" C�" C C C�" C C�"" �"#�"% �"$ C�"& C D�"(�"4�")�"0�"*�"-�"+�", D BQ B_ D"�".�"/ D0 D> DL�"1 �"2�"3 DZ Dg Du =  �"7 �"8 �"9 �":  �"; �"< �"=�">  �"? �"@ �"A�"B �"C  �"D  D�"F P�"G �"H�"b�"I�"a�"J �"K �"L�"_�"M�"[�"N�"T�"O�"R�"P�"Q  �"S   �"U�"V�"Z�"W �"X�"Y ~ D ~ D = �"\ �"]  ~�"^ D �"` ~ C] = =�"c �"d  t�"f�" š�"g�"h�" š�"i š�"j�"k š�"l�"z š�"m š�"n�"o š š�"p�"q A�"r A�"s : A�"t�"u A�"v A�"w A�"x A�"y A A D�"{ š š�"|�"} š š�"~�" <�" <�" < <�"�" <�" <�" <�" <�" < < B š�" š�" š�"�" š�" š š�"�" š�" š�"�" �" �" ��"�"�"�" š�" š�"�"�"�" š : š š�"�"�" š�"�" k š , š�"�"�"�"�" š š�"�" š�"�"�"�" š�" š �"�"  : �" š�"�"�"�" š�"  �"�"�"�" H � c �"�" , : :�"�"�"�" š�" �"�" W�" š�"�"  k š�"�" š š�"�" š�" š š�" š�" š�"�" W š�" š c š�"�#7�"�#�"�"�" š�"�" š�"�" š�" š�" š�" š�"�"�"�"�"�" � : �" š  �" š�"�" , š š�" š�"�" š š�" š�" š�"�" š�" š š B�"�# š�" š�" š�"�"�#�"�"�" š š�"�" š�" š š B�" š�" š�" š š�"�" š�#� š�# š�# š š�# š�# š�#�# š c š š�#�# �# B š B�# �# B�# B B š ��#�#�# š š�# š�# š�#�# š �#�# š š�#�# š�# š š D š�#�# š�#�# š�# š�#!�#*�#"�#(�## �#$�#& š�#%   š�#' š�#) š š �#+�#0�#, š�#- š�#.�#/ š : �#1 š�#2�#5�#3�#4 š c k�#6 š H�#8 š�#9�#�#:�#D š�#; š�#< š�#= š�#> š�#? š�#@ š�#A�#B š�#C š š �#E�#F š�#G�#�#H�#w�#I�#g�#J�#`�#K š�#L�#N�#M š � š�#O�#_�#P š�#Q�#X�#R š�#S š š�#T�#U š�#V š š�#W š �#Y š�#Z�#\ š�#[ š �#] �#^ š š š�#a�#d š�#b�#c š :�#e�#f  š �#h�#p�#i�#l�#j š�#k š  š�#m ��#n�#o š š �#q š�#r�#t�#s  š �#u�#v  � �#x š�#y š�#z š�#{ š�#| š�#}�# �#~   š�# š�# š�#�#�#�#�#�#�#�# š : š�#�# š �#�# š  š�# š �#�# š�# š�# š �#�# š�# š�# š š�#�#�#�# H š š�#�# š š k�# š�#�#�# š  š š < š�# c š�#�M�#�)�#�(�#�#�#�#�# š š�# š�# š�# š�# š A�#�# š�#�# š�# š š�# š�#�# š š�#�# š š�#�# š�# š�# š š�# š�#�# š š�#�# š š�# š�#�# š š�# A š š�# š�#�# š�# š š�#�# š š�# š�# š�#�# š š ��#�'�#�$�#�$N�#�$�# š�# š�# š�#�# š�#�# š š�# š�#�#�#�# š�# š�# š�# š�# š š�#�# š š�# š�# > š�# š�# š�# š�# š š�#�# š�# š�# š�# š š�# š�# š�# š�# š�# š�# š š�# š�# š�# š�#�# š�# š�#�$�$� > š >�$ š > š�$�$-�$�$ š�$�$�$�$ š�$ š�$ �$ š�$ š �$ š š�$ š�$�$�$ š�$�$ š š š�$�$ š š�$ š�$ š�$�$!�$�$�$�$ š š�$ š š�$ š�$"�$(�$#�$%�$$ š š �$&�$' š š �$)�$+ �$* š�$, š�$.�$= š�$/�$0�$5 š�$1�$2 š š�$3 š�$4 š�$6�$9 š�$7�$8 š š�$: š š�$;�$< š š�$> š�$? š�$@�$J�$A�$F�$B�$D �$C š�$E š š �$G š�$H�$I š š�$K š�$L š�$M š š �$O�$ š�$P�$Q�$c š�$R š�$S�$T�$\�$U š š�$V�$W š š�$X�$Y š�$Z š š�$[ š >�$] š�$^�$a�$_ š�$` š š  š�$b š�$d�$�$e�$k š�$f š�$g�$h�$j š�$i š š�$l�${�$m�$v�$n�$t š�$o�$p�$r š�$q š š�$s š š�$u š >�$w š�$x�$y š�$z š > š�$|�$�$}�$�$~�$ š�$�$�$ š �$ š š +�$ š š�$�$ š š�$�$ š�$ š š�$ š�$�$�$ š�$ š�$ š�$ š +�$ š�$ š�$�$ >  š�$�$�$ š š š š�$�$ š�$ š�$ š�$ š�$ š š�$�$ š š�$ š�$ š�$�$�$ š�$ š�$ š š�$ š�$ š�$�$�$�$ š š�$ > š�$ š�$ š š >�$�'�$�&�$�%}�$�% �$�$�$�$�$ �$�$�$�$�$ �$  A�$�$ c 5�$  �$  š�$�$ š�$�$  š A�$ š š �$ š�$ š�$�$ c�$�$ š�$ š c š�$ š�$�$�$ c �$ š�$ š�$ �$ š�$ š �$  š�$�$�$�$�$�$�$�$�$�$ š 5 š š�$ A H c�$�$�$ A�$ š ( š�$�$ š H�$ š š 5p š�$�$�$�$�$�$�$ (�$  > 5R �$�$ ? š�$�$ <�$�$ <�$ <  <�$�%� š �%�%>�%�%�% š�%�% �%�% š�% ? c�% �% k š A c�% š�% š  š�%�%2�%�% �%�% �% š�% š�%�% (  5�%�%.�%�% �% �% š�% š š�%�% š š�% š H�%!�%# š�%" k š�%$ š�%% š�%& š�%' š�%( š�%) š�%* š�%+ š�%, š�%- š š �%/ š š�%0�%1 š 5 š�%3�%8�%4�%7�%5 �%6 c š ʗ�%9�%; �%:  š�%<�%= > D�%?�%d�%@�%W�%A�%P�%B�%M š�%C š�%D�%E š�%F š�%G š�%H š�%I š�%J š š�%K š�%L ( š�%N�%O š k  A�%Q�%T�%R�%S c A š c�%U�%V k A c �%X�%^�%Y�%[�%Z c k �%\�%] c k c �%_�%b�%`�%a  ( k c�%c  k �%e�%q�%f�%k�%g�%i�%h k c k k�%j c �%l�%n�%m c  c�%o�%p k A š �%r�%w�%s�%u c�%t ( k �%v c k�%x�%{�%y�%z c k k c �%| k (�%~�%�%�%�%�%�%�% š�%�%�%�%�%�%�% š�%�% ʗ š�% A š�%�% (�% 5 5a�%�% A š ʗ š�%�%�%  �% š š�% < š�%�%�%�%�%�%�%�%�%�% ( š 5 š�%�% 5p š ( ��%�% < š H š�%�%�%�% B š � š k 5p�%�%�%�%  � ? š š c  š�% š�% š�%�%�% š �% š š >�%�%�% �% �%�% š�% š�%�% š�% š�% š�% š�% š�% š š�% š�% š�% š �%�%�%�%�%�% �% < �% < <�% <�% �% š�%�% š ( š�%�%�%�%�%�% < < š�%�% H H �%�%�%�% < š H�%�% > š š >�%�& ��%�%�%�%�%�%�% š�% š ʗ�%�% (�% 5 5a�% š A š�%�%�% š  �%�%�%�% �%�% š š�% š   š�%�& �%�&�%�&�%�%�%�% 5 B& 5 š�&��& B& š š � š�& H�& ( �&�& �&�& B >�&  ��& �& š  š k 5p�&�&�&�&  � ?�&  5�& c 5�&�&�& 5�& 5�&�& š 5�& 5 š 5�&�& š�& š 5 š�&�&?�& �&! š 5�&"�&> 5�&#�&$�&)�&% š š�&&�&'�&( š 5 5 š�&*�&-�&+ š š�&, š 5�&.�&3�&/ š�&0 š š�&1 š�&2 š 5�&4 š�&5�&=�&6 š�&7�&;�&8�&9 š 5 5�&: 5 š�&< š 5 š 5 š (�&@�&W�&A š�&B�&I 5�&C�&D š š�&E�&F š�&G š š�&H š �&J š�&K š�&L š�&M�&T�&N�&Q�&O�&P  A š 5�&R�&S  š š c�&U š š�&V š�&X�&\�&Y š�&Z š�&[ š š H š�&] š�&^ š�&_�&`�&p�&a�&h�&b š�&c š�&d š�&e š�&f š�&g š š�&i š�&j š�&k š�&l š�&m š�&n�&o š š (�&q�&�&r š�&s š�&t š�&u�&{�&v�&x š�&w c 5�&y�&z  š š c�&|�&�&}�&~ š k B& �& š ( �& š�& š�& š�&�&�&�& š�& c�& 5 š�&�&  š š c�&�&�&�& š k B& �& š  š�&�' �&�&�&�&�&�& �& �& �&�& �& �& �& @�&�&�& š�&�&�& �&�&�& š š�& š š�& š�& š �&�&�&�&�&�&�& š �& D�& �&�& š š �&�&�& �& š �& š�&�& š š�& š�&�&�&�&�&�&�&�& š�& š �& š š �&�& š�& š�&�& š š �&�&�&�&�& D�&�& š š �&�& �& š �& š �& š�& š š�&�& š š�&�& š�& š š�&�& š š :�&�' �&�&�&�& š�&�&�&�& š š�& š�& š�& š �& š�& š š š�&�& š�&�&�& š : š�&�&�& š�&�& š : : š�& š : š�& �&�' �&�'�& š�'� š š�' š�'�' š�' š š�'�' š�' š š š�' š�' š š �'�'U�'�'#�' š�'�' �'�'�' š �'�' š�' š�'�' š�' š�' š š �'�' š�' š �' �'! �'" š�'$�'/�'%�'(�'& �'' š �')�', �'* �'+ š�'- š�'. š š�'0�'F�'1�'@�'2�'>�'3 :�'4 š�'5 š�'6 š š�'7�'8 š�'9 š�': š�'; š�'< š�'= š > š :�'? : š�'A�'C�'B > š >�'D�'E : > : A�'G�'N�'H�'K�'I�'J š D > :�'L�'M > A :�'O�'R�'P�'Q D , : D�'S�'T š D š�'V�'�'W�'z�'X�'^�'Y š�'Z š�'[ š ,�'\�'] š , š�'_�'f�'`�'c�'a�'b > š @ D�'d�'e > > > A�'g�'r�'h�'i A D A�'j š�'k š�'l�'m š�'n�'o š A�'p š�'q š A š�'s�'w�'t š š�'u š�'v > š�'x š�'y š D š�'{�'�'|�'�'}�'�'~�' š š š �' š�'�'�'�'�'�' š š š�' š �'�'�' š �' š š �' š�'�'�' �' �' �' š�' š š�' š�'�' š�' š�' š�' š�' š�' š š�'�' �' �' š �'�'�' š š š�'�'�' š�'�' š�' š�' š š�' š�' š�'�'�' :  š š�' š�'�'�' š�' š�'�' š�' š�' š�'�' š�' š�' š �'�'�'�' š š ��' š š � š�'�' š�'�'�'�'�'�'�'�' �'�' š�' š �' š�'�' �' š�'�' š š š�' š�'�' �' �' š �' �' š�'�' š�'�' š�'�' š�' š : : š�' š�' š š�'�' š š�'�' š�'�' š š�'�' š�' š�' š�' š š�'�' š�' š š�' š�'�'�'�' ( š ( š ( š�'�'�(' š�'�(� š�(�(�(�( �(�( š�( (�( š�( š ��( š ��( �( š�( �( �(�( š ( š�( š �(�( š�( � š�( š š�(�( š š�( š�( š�(�( š�(�( š �( š š ( š�( š�( �(!�($�("�(# : �(%�(& (  5 š�((�()�(k�(*�(a�(+ š š�(,�(-�(R�(.�(< š�(/�(0�(6�(1�(3�(2  �(4�(5  H �(7�(:�(8�(9 > : �(; š > :�(=�(L�(> š�(?�(B�(@�(A > : � >�(C�(H�(D�(E š >�(F�(G š > š�(I š :�(J :�(K : š�(M š�(N�(P š�(O š�(Q š š�(S�([ š�(T�(U�(X�(V š�(W š š �(Y š�(Z š > :�(\ š�(] š�(^ š�(_�(` : > š�(b š�(c š š�(d š�(e š�(f�(g�(i š�(h š :�(j š > š�(l�( š�(m�(n š�(o�(�(p�(t š�(q�(r š�(s š š �(u�(y�(v š�(w�(x š H�(z�(~�({�(}�(| š  š ( �(�(  š š �(�(�(�(�(�(�( : š �(�(  : �(�(�( >  �(�( : : >�(�(�(�(�(�( š (�(�( ( 5p c �(�(�(�( c , A�( š�( š�( ʗ š š�( š�( š�( š�( š�( š�(�(�(�( š�( š�( š�( š�( š�( š š�(�(�( š š�(�( š š�(�( š D š �(�( š š�(�( š š�( : š�(�(�(�(�(�( š�( š�( š�( š�( � š š�(�( š�( š š�( < š�(�(�(�(�(�(�(�(�( š�( š�( �( š š�(�( �( š š �(�(�(�(�(�( š > š �( š�( š :�(�( š  š�(�(�( š �(  š�( š�( š š�( �( �(�( �(�( �(�( �(�( �(�( �( �(�( �(�( �( š�( š�( š�( š š�( š�(�( š š�)��) š�) š š�)�) š š�)�) š�) š�) š�) š�) š�) š�) š�) š š�) š�)�) š H š�)�,_�)�,1�)�*x�)�*[ š�)�)�)�)�)Y š�)�)�)%�)�)!�) š�)�) š �)�) š �)"�)$ �)# : š �)&�)K�)'�)>�)(�)* š�)) š H �)+�),�)2�)-�)/ š�). š �)0�)1 š ( š�)3�)9�)4�)7 �)5�)6  :�)8  š�):�)=�); š 5�)< ��)?�)F�)@�)C�)A�)B � š�)D š�)E c�)G š�)H š�)I�)J c ( š�)L�)O š�)M�)N c�)P�)U�)Q�)R �)S�)T , : ,�)V�)W , �)X c c�)Z�)x�)[�)n�)\�)k�)]�)i�)^�)c�)_�)a ��)` š�)b � ��)d�)f �)e :�)g�)h : �)j š c �)l�)m š , š ��)o�)q š�)p š �)r�)w�)s�)t c :�)u �)v š � š�)y�)�)z�)�){�)�)| š�)} � š�)~ š , : �)�) š�) š�) š�) �)�)�)�)�)�) š š�) :�)�)�) : š š�) š�)�)�)�)�)�)�)�) š�) š�) š (�)�)�)�)  : �) š : š�)�)�)�) š (  š�)�) š�) A �)�) c š ( š�)�)�)�)�)�)�)�)  �) �)�) �) � >�) , c �)�)�)�) 5 �) � A�) š�) š ��)�)�)�)�)�)�)�)�)�)  : A�)�) š š A�) š � �)�)�)�) c �) �)�)�) , � �)�)�)�)�)�) (�) :�)�) š : c A š�) š�) š �)�)�)�)�)�)  š (�)�) š  ( š�)�) š � >�)�*�)�)�)�)�)�) :�) �)�) �) š š š �) š�) ( (�)�)  š�)�*�)�*�)  �)�)  �)�) �) š�*� š�* š�* š �*  š�* �* �*�* �* �* š�* š�* š�* š�* š�* š š�* š  (�*�*�*�* ( š�* š �*�*Y�* (�*�*<�*�*8�*�*.�*�*% š�*�*�*"�* �*! š � c�*#�*$ : c š 5�*&�*,�*'�**�*(�*) , š �*+  š �*- š š (�*/�*5�*0�*3�*1�*2 š š�*4 š  �*6 š š�*7 š ��*9 š�*: š š�*; H�*= š�*>�*M�*?�*G�*@�*C�*A š š�*B ( >�*D�*F�*E š š �*H�*K�*I�*J  š š ( š�*L c š�*N�*S�*O�*P š �*Q�*R š � : A�*T�*W�*U�*V A š š �*X š š : š�*Z :�*\ š�*]�*n�*^�*e�*_�*b š�*` š�*a ( �*c�*d š (�*f�*j�*g�*h š (�*i š c š�*k�*l ( :�*m  š�*o š�*p�*s š�*q�*r š (  š�*t�*u�*v ( š�*w š š�*y�,�*z�+�*{�+�*|�* š�*}�*~�* š�*�* š�* š�*�*�* š�* �*�*�* B�* �* �*�* �* �*�* �* �* B�* š�* š�* š�* š�* š�* š�* š�* š š�*�* š�* š š�* B š š�*�*�*�*�*�*�* š�*�*�* š �*�* ( , c ,�*�*�*�*�*�* š ��* � > ��*�*�* : �*�*  5 H A�*�*�*�*�*�*�* š š�* �*�* �* � ��*�*�*�* ��* � : : ,�* �* , �* š�*�*�*�*�*�* �*   (�*�*�* c ( c �*  5�*�*�*�* 5 H�* A H A�*�* �* š�*�* š�*�*�*�* š�* š�* š š�*�* š�* 5p š�*�* š�* �* �* �*�* �* �* B �* š�*�* š�*�* š�* š�* š š�* š @�* š�* š�* š�* š š � š�*�*�+ �+� š š�+ š�+ š�+�+�+ š�+�+ š B š�+ š�+ š � š š�+ š�+ š�+ š�+�+ š�+ š�+ š � š�+�+ š�+ š�+�+�+�+ š�+�+Q�+�+5�+�+#�+�+ �+�+�+ 5�+ > , �+!�+" ( : ,�+$�+.�+%�+*�+&�+( �+' š �+) c ��++�+-�+, š > š�+/�+2�+0�+1 � š  �+3�+4 š š �+6�+C�+7�+: š�+8�+9 š š (�+;�+@�+<�+>�+= (�+? � š H�+A �+B š �+D�+J�+E�+G�+F š  š�+H�+I 5  A�+K�+N�+L�+M 5 š š A�+O�+P  c š�+R�+k�+S�+`�+T�+Z�+U�+W ��+V š�+X�+Y š š �+[�+^�+\�+] š ( �+_ š ( š�+a�+h�+b�+e�+c�+d š š (�+f�+g  : š š�+i�+j š š�+l�+{�+m�+t�+n�+q�+o�+p > � š H�+r�+s š �+u�+x�+v�+w  : � š�+y�+z š � �+|�+�+}�+�+~�+  � �+�+ A A �+�+�+�+ H 5 ( �+�+  š �+ š š�+�+ š š�+�+ š�+ š�+�+�+ š�+ š�+ š 5�+�+�+�+�+�+�+ š š ( š�+ : š�+�+ š�+ š �+ š�+�+ š�+�+�+ > š �+ š�+ š : š š�+ š�+�+�+�+�+�+ š�+ š š š�+�+�+ š > >�+�+ >�+ š > š�+�+�+�+�+ �+�+ : c š �+�+ š > š :�+�,�+�+ š�+ �+ š�+�+�+�+�+�+�+ š�+ š š �+�+�+�+ š ( š �+�+�+ : > �+�+�+�+�+�+�+�+ , � � c�+ š , š š�+ š�+ š �+�+�+�+�+�+�+�+ ( �+�+ > : : �+�+�+ �+ � �+�+�+�+�+�+ � c c ,�+�+ , H H A�+�+�+�+ A 5 5 �+�+ �+�+�+  �,� š�, š �,�,  š�, :�, š�, š�, �,,�, �,"�, �,�, �,�, ��, � ��, ��, � š ��,�,�, : ,�,�, , , š�,�, �,�, �, š >�, �, �,�,!�, š š�,#�,(�,$�,&�,% , ,�,' � �,)�,* � c�,+ A š�,- š�,. š�,/ š �,0 , š�,2 š�,3�,I�,4 š š�,5�,6 š š�,7�,8 š š�,9�,: š�,; š�,< š�,= š š�,> š�,? š�,@ š�,A�,B š�,C š�,D š š�,E�,F š�,G š š�,H ? š�,J š š�,K š�,L�,M š�,N š š�,O�,P š�,Q š�,R š�,S š š�,T�,U š š�,V š�,W š�,X�,Y š�,Z š�,[ š š�,\�,] š š�,^ š 5�,`�,s�,a š�,b š š�,c š�,d�,e š�,f š š�,g�,h š�,i š š�,j�,k š š�,l š�,m�,n š�,o š�,p š š�,q š�,r š�,t�7�,u�4B�,v�.�,w�.�,x�-t�,y�- �,z�,�,{�,�,|�,�,}�, š�,~  š�,�, W š W�,�,�,�, @ š�, >�,�,�,�,�,�, � ? > š > >�, >�, A š�,�,�,�,�,�, W š š�,�, š ( š @�,�,�,�,�,�, š D š ��,�, š W š�,�, š š (�,�,�,�,�,�,�,�,�,�, š 5a š ��, š : �, š�, š�, � š�, : š�,�, k �, š�, š�, š�, š : š�,�,�, : š �,�, š �,�,�,�, š�, � š š�, š ��,�,�, š�, š�, š�, c <�,�,�,�,�,�,�,�,�,�,�,�,�, �, : � > š�,�, > š �,�,�,�,�, : > š 5a š�, š  š�,�,�, š�, :�, š š ��, š š k�,�,�, š�, š  :  (�,�,�,�, : š š �,�, š ( ( š�,�-�,�,�,�,�, š�,�,�,�, :�, > š š�,�,�, š š :�,�, > š : : �-��- �-�- �-�- �-�- � � :�- >�-�- E� : : � š�- �- š  H�- š�-�-�-�- š�- š > š :�- �-�- : š > š�-�-�-�-�- š�-�- š�- > š > š > >�- �-!�-K�-"�-8�-#�-, š�-$�-% š �-&�-'�-* š�-( š�-) š E �-+ š :�--�-/ >�-. š�-0�-1 š�-2�-3�-6�-4 �-5 : š š�-7 š >�-9�-?�-:�-=�-;�-< š 5 š�->  š�-@�-I š�-A�-B š�-C�-H�-D�-F�-E ��-G š ( š (�-J š > š�-L�-a�-M�-Z�-N�-Q�-O�-P  š š �-R�-S š š�-T�-U�-X�-V š A�-W š A�-Y A @ A š�-[�-\�-`�-] ��-^ š :�-_ : š �-b�-g�-c�-e�-d š + š�-f š + š�-h�-k�-i�-j š + > š�-l�-m A > >�-n�-o�-q D�-p š D�-r š š�-s š �-u�-�-v�-�-w�-�-x�-�-y�-|�-z�-{  š > D�-}�-~ š š�-�- D�- š � D�- @ ��-�-�-�-�-�- A � š +�-�- � š ��-�-�-�- š :�- �- �- š�-�- > � š ��-�-�-�-�-�-�-�- : � �- š < š�-�- š�- D š�-�- š ��-�-�- š k�-�-�-�- š A š�- š š�-�-�-�- š�- D > A�- š >�-�-�- A > D�-�-�-�- š�-�-�-�- D D š š�-  š�-�- š�-�- � @ š š D�-�- š�-�-�- š � š �- š š�-�-�-�-�-�-�-�-�-�- š > š �-�- k k �-�-�-  k�-�-�- š�- š  �- � š�-�- A D , š�-�-�-�-�-�- > > H k�- D š @�-�-�-�- @ š š�-�- > š�- š k�-�- š�- š�-�- š �- š > š H�-�.�-�.�-�-�-�- H + +�-�-�- + š š ��-�. �-�-�.�.��. + š š�. š �.  š�. ? š š >�.�.�. š�. š�. �. �. š š < < š�.  @ š�.�.w�.�.u�.�."�. @�.�.�.�.�.�. š : � š�.�. š � š�.�. š�. @ š�. �.! : , : >�.# š�.$�.s�.%�.'�.& � š � ��.(�.) � š�.*�.+�.F�.,�.1 š�.- š�.. š�./ �.0  š�.2�.;�.3�.6 š�.4�.5  š �.7�.9�.8 š  š�.:  š �.<�.A�.=�.?�.> š  š�.@  š �.B�.D�.C š  š�.E  š �.G�.^�.H�.S�.I�.N�.J�.L�.K š  š�.M  š �.O�.Q�.P š  š�.R  š �.T�.Y�.U�.W�.V š  š�.X  š �.Z�.\�.[ š  š�.]  š �._�.j�.`�.e�.a�.c�.b š  š�.d  š �.f�.h�.g š  š�.i  š �.k�.p�.l�.n�.m š  š�.o  š �.q š�.r š  š�.t E š E š�.v >�.x�.�.y�.�.z �.{�.} š�.| < š�.~�. š�. � š š >�.�.�.�. :�.�. š   c �. š �.�.�. �.�.�. š  � š š�.�.�.�.�. š �. š B{ š �.�.�. š �. š�.�. š�. š š�.�.�. š�.�. š�. š š�. �. š�. �. �. �.�. �. ł �.�. š�. š�.�.�.�. š�. š�. š š�. š�.�. š š  š�. �.�.�.�. š š�.�. š  š�. š š�.�. š A š�. š š�. š�. š�. š�.�1�.�01�.�/m�.�/.�.�/�.�.�.�.�.�.�.�.�.�.�.�. �. š :�. š š �.�. ( k : š�.�. š�.�. š > š H�.�. š � �.�.�. š š�.�. A �.�.�.  , ��. š š�.�. š�.�.�. š H�. : H š H �.�. š�. š�.�.�. � š š�.�. +�.�.�. + š š k�.�. š�. š�. > �/��/�/ š�/  š :�/ :�/ š : š�/�/�/�/�/ �/ k š�/ �/�/ š�/ : : š�/ š š :�/�/ k�/ š�/ š�/ š : š�/ š�/ , š�/�/#�/�/ š , š�/�/�/ �/ š ��/ : ��/! š�/" š š ��/$�/' D�/%�/& š : š�/(�/, >�/) >�/* ��/+ š :�/- š š ��//�/N�/0�/;�/1�/7 š�/2 :�/3�/4�/5 : š š�/6 : š�/8�/: š�/9 D š : š�/<�/H�/=�/C�/> š�/?�/@  :�/A š�/B ʗ š�/D (�/E š�/F š š�/G š ( �/I 5�/J�/K�/M š�/L š > š ��/O�/[�/P�/T�/Q � ��/R�/S š š >�/U�/V š ��/W c š�/X�/Y�/Z ʗ š š :�/\�/c�/] š š�/^�/_ š�/`�/a ʗ @�/b š š (�/d�/l�/e�/f : š�/g�/h š k�/i ,�/j�/k : š , š  D�/n�/�/o�/�/p�/�/q�/�/r�/�/s �/t š�/u � š�/v�/w�/�/x š�/y�/�/z�/�/{�/�/|�/ š�/} :�/~ : š š :�/�/ š : š :�/�/�/�/ š : š :�/�/ š : š :�/�/�/�/�/�/ š : š :�/�/ š : š :�/�/�/�/ š : š :�/�/ š�/�/ : : š š :�/ š�/�/�/�/�/�/�/�/ š : š :�/�/ š : š�/�/�/ : š š :�/�/�/�/ š : š�/�/ : : š�/�/ š : š :�/ š�/�/�/�/ š : š :�/�/ š : š : š�/�/ š 5a š�/�/�/ š�/�/�/ š � š �/ 5�/ š 5 : �/�/�/�/ D�/�/�/�/ š�/ š  š š �/�/�/ š  š�/�/ š + >�/�/ š�/ �/ �/ š�/�/�/  A�/ D š š�/ š �/�/�/�/ D�/�/  �/ �/  š š�/ 5 š�/�/�/�/ : < �/�/ > �/ �/�/�/�/ š�/  š š š �/�0�/�0 �/�/�/�/ c ( ( �/�0�/�/ c�/ c�/ c š�0� š  š�0�0�0�0 c�0 c š D�0�0 > š :�0 �0 š�0 c�0 š�0�0�0�0 š �0 š�0 š š�0 š�0 š�0�0 š  š�0 �0 �0 š�0�0'�0�0"�0 š�0 š :�0 :�0! : š <�0#�0$ <�0% <�0& < š�0(�0. š�0)�0* š�0+ š�0, š�0- š c š�0/�00 > > c�02�0�03�0{�04�0^�05�0N�06�0@�07�0: c�08 š�09 š�0; š �0<�0= ,�0>�0? š š �0A�0G�0B >�0C�0F�0D š š�0E � š ��0H�0L�0I š �0J�0K A š c�0M H�0O�0P D š�0Q�0X�0R�0U�0S�0T : š : š �0V �0W  š D�0Y�0Z�0] >�0[ š�0\ š � > š�0_�0i�0`�0f�0a�0e š�0b�0c�0d š : > � š :�0g�0h > : > :�0j�0v�0k�0l A �0m�0r�0n�0q :�0o š�0p š  š �0s š�0t š š�0u ? š�0w�0z �0x�0y   D š�0|�0�0}�0�0~�0�0�0 �0 �0 �0  š : D�0 :�0 š :�0 :�0 : š�0�0�0 >�0�0 :�0 :�0 : š�0�0 D š H�0 : š�0�0 ( : : �0�0�0�0�0�0 , �0�0�0�0 š š >�0 š�0 > š�0�0�0 š �0 �0 š�0  š�0 š H�0�0�0�0 H A�0 š š�0 š�0 š c�0 š�0�0�0�0 š š �0 š�0 > :�0�1'�0�0�0�0�0�0�0�0�0 š�0�0 �0 �0 š :�0 š : ��0�0 �0 �0 š�0�0�0 : š�0 š : š �0�0 : š�0 �0 š�0 š�0 š A�0�0 :�0�0 š�0�0�0�0 š š�0�0 : , : š�0�0�0�0 c š�0 š š : : 5�0�1 �0�0�0�0�0 š�0�0 š �0�0 : š š�0 š�0�0 š�0 š�0 š�0 š ��0 :�0 : š :�0�1��0�0 š�0 (�0 š �0�0 A š�0 š�0 š � �1�1�1�1�1 š c�1 š š�1�1 �1 k 5 š k�1 š >�1 �1�1 �1�1�1�1�1�1 š : š  :�1�1 š ��1 š : š�1�1 ��1 š�1 š � š�1 � š�1�1!�1 �1�1 š A > š�1" H�1#�1$ š�1% �1& š @ š�1(�1c�1)�1=�1*�1:�1+�19�1,�13�1-�1/�1. : +�10�12�11 : š � ʗ š�14�18�15�17�16 š š š , : š š�1;�1< E/ D H�1>�1P�1?�1G :�1@�1A�1D�1B š š�1C š :�1E š�1F š  š�1H�1L�1I�1J > c �1K š š�1M�1N š š�1O š ��1Q�1\�1R�1W�1S�1T + š š�1U :�1V : ��1X�1[�1Y (�1Z š š A š :�1]�1a�1^ š š�1_�1` š š : š�1b š c�1d�1z�1e�1i�1f�1h�1g š H < < š�1j�1p�1k :�1l�1m š B�1n š�1o š š �1q�1t :�1r :�1s : š�1u�1v : :�1w�1x�1y : š � š�1{�1�1| š :�1}�1~�1 š�1�1 š š � > <�1 ��1�1�1 š š A�1�1�1  š š �1�2�1�2.�1�1�1�1�1�1�1�1�1�1 š�1�1�1 B{�1 š  š �1 š�1 : š�1�1 D�1�1�1 D�1 D : (�1 �1 š �1 �1 š�1 š š�1�1�1�1 A�1�1�1 :�1 A š H š�1 š�1�1�1 š š�1 š�1�1 @ š�1�1�1�1 �1�1 š�1�1 š >  š�1�1 š�1�1�1 š : > š š �1�1�1�1�1 :�1�1 š � � : ��1�1 š�1 � š�1 š š �1�1�1�1�1�1�1 �1�1 š�1 š š >�1�1�1�1 � , ��1�1 š �1�1 @ š ��1�1 � A�1�1�1�1 , E> š�1�1�1 �1 �1 š š�1�2�1�2�1�1�1�1�1 >�1�1 , 5 š D š�1�1�1 š�1 š�1 < �1�1�1�1 ( c H :�1 : >�1�2� š A�2�2 š š�2�2 š š >�2�2 �2 k�2 k�2 š�2 š�2 �2 � : š �2�2 EM @�2 ��2�2�2 š�2 š : š�2 :�2 š š�2�2#�2�2 �2 @�2�2 @�2 @ ��2�2 � c š ,�2!�2" š  �2$�2&�2% š �2'�2* š�2(�2) : š�2+ k <�2, <�2- < š�2/�2�20�2a�21�2M�22�27�23�24 š H�25 (�26 š 5 �28�2B�29 š�2:�2?�2;�2= >�2< > š�2> A š�2@ š�2A š š ��2C�2J�2D�2G�2E š�2F �2H š �2I : š�2K�2L +  �2N�2`�2O�2X�2P š�2Q�2T�2R � ��2S š �2U�2V � ʗ š�2W š�2Y�2^ š�2Z�2[�2] š�2\ š : š š�2_ š  š�2b�2|�2c�2y�2d�2s�2e c�2f�2m�2g�2j�2h�2i ( š , (�2k�2l 5 š ʗ�2n�2p�2o < š�2q�2r < š š H�2t H�2u�2x�2v ,�2w š ,  š�2z�2{ A D D š�2}�2 �2~�2 �2�2�2�2 :�2 :�2 : š D�2 š�2�2 š š �2�2�2�2 ,�2�2 š , š š �2�2�2 �2 � �2 š�2 H : š�2�2�2�2�2�2�2�2 H�2�2�2�2 š ��2 ��2 š š�2�2�2 š c c�2�2 š�2 ��2 � š�2�2 �2 �2  š�2�2 A�2  > :�2�2�2 : š @' �2�2�2�2 c�2 š�2 š�2 š�2 �2 š š�2 š ��2�2�2 š�2�2 � š š�2 š  > š�2�2�2�2 �2�2�2�2�2 �2 š�2 : �2 : > š�2�2 š�2 : š �2�2�2�2�2 ?�2�2 š ( š�2�2 š�2 � š�2�2 �   š�2 š�2 š š�2�2�2�2�2 c š�2 >�2 > š�2 š�2 š  š�2�2 š�2 š�2 š�2 š�2 š�2�2�2�2 š�2 š�2 š š :�2 š�2 � š�2 š�2�3�2�3J�2�3.�2�3�3��3�3 H�3�3�3 š š�3 š�3 š :�3 > : > +�3 �3 š�3 �3�3 �3�3 �3 A š B �3 ��3�3�3 š š ʗ�3�3 : c š�3�3#�3�3 š D�3�3 �3�3�3 > š >�3 š š :�3!�3" c > š�3$�3) š�3%�3&�3( š�3' š   š�3* 4 š�3+ š�3, š�3- >�3/�3H�30�35�31 š�32 �33�34 š c @' ��36�3D�37�3A�38�3=�39�3; š�3: > �3< š ��3>�3? B ��3@ � � �3B�3C c k š : š�3E�3F�3G > B ��3I � B�3K�3c�3L�3Y ��3M�3N�3X ��3O�3P�3R�3Q � š�3S�3U�3T @ , š�3V�3W š � � � �3Z�3^�3[ �3\ �3] @ š�3_ @ :�3` š�3a �3b š >�3d�3t�3e�3i�3f > :�3g š�3h  ��3j š�3k�3p�3l�3m š �3n �3o , �3q�3r š 5�3s : š :�3u�3�3v�3} :�3w�3x�3{ š�3y š�3z š ,�3| š �3~�3�3�3�3�3 š�3 �3 š�3�3�3 š š š�3 š ��3 š�3�3 š�3 š ��3 : š�3 š�3�3 š š�3 š�3 š :�3�3�3�3�3�3�3�3�3 š š H�3�3�3�3�3�3 š�3�3 D š H š�3 š�3 š : š�3 š�3�3 š  š :�3�3�3�3 š�3�3�3 š > š�3 �3�3 : š�3�3�3 š š ��3 : � š�3 <  <�3�3�3�3�3�3�3 :�3�3�3 ?�3 + š�3 š š : š�3�3 ,�3�3 c ��3 � c D�3�3�3 �3 š�3�3 š�3�3�3 H�3�3 š�3 H š�3�3 š�3 @ >�3 š A �3�3 H�3 H�3 H š�3�3 H�3�3�3 : + A +�3�3 š :�3 D : š�3�4�3�4�3�3�3�3�3 š�3�3�3 š š �3 ��3 š š�3�3 š�3 š�3�3�3�3 � š�3�3  A : š �3�3 š š ( š�3�4� (�4�4�4�4 š (�4 ( ( � š�4�4 > š @�4 �4�4 š (�4 �4 �4 (�4 c š�4 š�4�4�4 š c�4 c�4 c š�4 �4�4�4�4�4�4 ( : š�4�4 š š , š�4 �45�4!�4)�4" š �4#�4$�4& �4% š š�4' �4( : š�4*�4/ š�4+�4,�4. š�4- š A�40 �41�44�42�43  š ( š ��46�4;�47 š �48�49 š �4:  š š�4<�4= š š�4>�4? �4@�4A : š �4C�6�4D�5�4E�4�4F š�4G�4�4H�4b�4I�4W�4J š�4K�4T�4L �4M�4P�4N š ��4O � š :�4Q�4R�4S � š @ 5R �4U š�4V š�4X�4`�4Y š�4Z š�4[�4]�4\ � ( � š�4^�4_ 5 � š š�4a 5 š�4c�4x�4d�4n�4e�4m š�4f�4g�4j š�4h š�4i ʗ š š�4k�4l š š 5p š ,�4o�4p : A ��4q�4r�4s � 5�4t�4v�4u š @ š�4w > � š�4y�4�4z�4{ > >�4|�4}�4 >�4~�4 : š š�4�4 š , :�4 š�4 c�4 c�4 c š�4�4�4�4�4�4�4�4�4�4�4 : š > (�4 (�4 ( š�4 š >�4 >�4 > š š�4�4�4 š �4 š�4 : : š�4�4�4 š š�4 >�4 >�4 > š š�4�4 š�4�4 �4 š š �4�4�4�4�4�4 +�4�4�4�4�4�4�4�4 � �4�4 > š > š�4�4�4 š  ��4�4 : š š A�4�4 š�4�4 � š ,�4�4�4 š š > š�4 D š�4 š�4 š š�4 :�4 (�4�4�4 : �4�4�4 š�4 � š�4 š š : š�4 š�4�4�4 š�4 c š�4 š @ š�4�53�4�5�4�4�4�4�4 š c š š�4�4�4�4 š c�4 c�4 c š�4�4�4�4 š�4 š�4�4 š�4 @ š š š�4 š�4�4 š ( š�4�4�4�4�4 š�4�4�4 š �4 š A 5p š A�4 š�4 š�4 š�4�5� š�4�4 š � š š�5 5R š�5�5�5�5�5�5�5 š�5�5 š�5 �5 š�5 š > ,�5 �5 �5 š š �5 > š �5�5 š�5�5 �5�5 š š�5�5 >�5�5+�5�5&�5 š š�5�5�5#�5 �5! š š�5" š �5$�5% > š�5'�5*�5( >�5) 5R š š �5,�5. �5- š�5/  š�50 š�51�52 > š >�54�5j�55�5R�56�5?�57�58 > �59�5: > A�5; >�5<�5= š >�5> @ > @�5@�5K�5A @ >�5B�5C�5F�5D�5E > š > �5G�5I�5H > š , ��5J > š�5L�5Q�5M >�5N�5O š �5P š > > �5S�5W�5T�5V >�5U > š �5X�5Y š�5Z�5g�5[�5b�5\�5_�5]�5^  š š 5p š�5`�5a š : š�5c�5e �5d k >�5f  : š š�5h š�5i 5p š�5k�5~�5l�5o�5m š�5n 5p š �5p�5z�5q š�5r š�5s�5x�5t�5v�5u š š�5w š š š�5y : š�5{  š�5| š�5} > š�5�5 š�5�5 D š k�5�5  : š�5�5�5�5�5�5�5�5 š 5 �5 š š�5 š�5 š�5 š B{ š�5�5 š�5�5�5 š , š k�5 š š�5 š :�5�5�5 š š�5 š�5�5�5 š�5�5�5�5 š  š š  š�5�5 8 š �5�5 š�5�5�5�5�5�5 š š�5�5 š š�5 ( š�5 Z�5�5 ʗ �5�5 (�5 >�5 >�5 š �5�5 š�5�5�5 š �5 š�5�5�5 > >�5 > š�5�5 > š�5 š D š �5 š �5�5�5 š�5�5 š�5 š�5 š�5�5�5�5 š š�5 š 5 š�5 š�5 �5 š š�5�5�5�5 š�5�5�5�5 š š�5 š�5�5 š�5 š š�5�5 š�5 š�5 š š �5�5�5�5 š�5�5 š š (�5 š š�5 š ( š�5�5 š�5 š ( š�5�5�5 š�5 š�5�5 š�5 š�5 ( š š�5 š�5 š (�5 š š�5 š�5�5 š š�5 š (�6� š�6�6 š�6 š�6�6 š�6 š š�6�6 š š�6 š�6 �6 š š�6 D š�6 š š�6�6 š�6 š�6 š ( š�6 š�6�7_�6�68�6�6% š�6�6 (�6�6 š�6 š >�6 �6�6 �6 �6 š�6! š �6"�6# �6$ š�6&�65�6' š�6( š�6)�6*�6/ >�6+ >�6,�6-�6. > š ( š š�60�61 �62 :�63�64 :�66 š š�67 š >�69�6O�6:�6E�6;�6D�6<�6?�6=�6> ( š š �6@�6B š�6A š > :�6C š  š�6F�6L�6G�6J�6H�6I > š �6K š ( š š�6M�6N š �6P�6Y�6Q�6S �6R : š š�6T�6U >�6V š š�6W�6X š > š š�6Z�6[�6�6\�6�6]�6�6^�6�6_�6g š�6` š�6a�6b�6e š�6c š�6d š �6f š (�6h�6|�6i�6x�6j�6q�6k�6n�6l�6m  5 A 5�6o�6p A ( A �6r�6t�6s c 5 A�6u�6w�6v  A š š ( š�6y�6z�6{  5 A �6}�6�6~�6�6�6 A�6  A ( �6 �6�6 c š�6 š�6�6�6�6 ( 5  5�6�6 A (  A�6�6�6�6 š�6�6 š�6 š š >�6�6�6�6�6�6�6�6 , : : š š �6�6�6 š @ š �6�6 š�6 š : š�6�6�6�6 š�6 ��6 � š�6 ,�6 ,�6 > �6 š�6 š�6 š š �6�6�6�6�6 š�6�6�6�6�6�6 5 š  š�6�6 ( š ( š�6�6�6�6  š  š š�6 š�6 š š�6�6�6 š�6 š (�6 š š�6  š�6�6�6�6 š�6�6 š�6 š š š�6�6�6�6�6 š š�6 š > �6 š š�6�6 š �6 š :�6�6�6 š�6 š�6�6�6 �6 ( �6 š š š�6�6�6 š�6�6 š�6 š š�6 š�6�6 �6 š �6�6 š �6  š š�6�6�7+�6�7 š�6�6 š š�6�6�6�6�6�6�6  š ( š �6 ( š�7��7 �7 ( š�7�7  š ( š š�7�7�7�7�7�7 �7�7 �7 š�7 š �7 �7 š A 5 �7�7�7�7 š A 5 �7�7 š A 5 �7 š�7 š�7�7 š A 5 �7�7 š�7 š�7�7 š š (�7!�7&�7"�7$�7# š š (�7% š š (�7'�7)�7( š š (�7* š š (�7,�7E š�7- š�7.�7/�77 š�70�71�74�72�73 5 ( A �75�76 5 ( A �78�7?�79�7<�7:�7; 5 ( A �7=�7> 5 ( A �7@�7C�7A�7B 5 ( A  š�7D š �7F�7Q�7G š�7H�7M š�7I š�7J�7K�7L 5 ( A �7N š š�7O�7P š >�7R�7Z�7S�7W�7T š�7U š�7V š >�7X š�7Y š > �7[ š š�7\�7] š š�7^ 5 š�7`�7�7a�7o�7b�7e š�7c š�7d š�7f�7m�7g š š�7h�7i š�7j š�7k š�7l š š š�7n 8 ï�7p š�7q�7�7r�7v š�7s�7t�7u š š �7w�7�7x š�7y�7| �7z �7{ š �7}�7�7~ š š š �7�7 š�7�7�7�7 �7 �7 �7�7 �7�7 8 š š�7�7�7 š š�7�7�7�7 C? C? �7 C? C? �7�7�7 �7�7 š�7 š�7�7 š�7 š�7�7 C?�7 C? �7 C? š�7�7 š š�7�7  �7 �7  š�7�7�7�7�7�7 ï�7  �7 š �7 ï  š�7 ï�7 �7  š�7�D �7�?B�7�;�7�9�7�8�7�84�7�7�7�7�7�7�7�7�7�7�7 d�7 d�7 d d�7�7�7 d�7 d E] d�7 d  d�7 d�7 d�7 d�7 d š d�7�7�7�7�7 d�7 d š d�7 d�7 d�7 d d�7�7�7 d�7 d š d�7�7�7 d�7 d š d d�7  d�7�7�7�7�7�7�7 Em�7 Em š Em�7 Em š Em�7�7�7 d�7 d�7 d d�7 d�7 d�7 d š d š�7�7�7�7 d�7 d�7 d d�7 d�7 d�7 d š d�7�8 �8��8�8�8 �8�8�8 d�8 d�8 d š d�8 d�8 d�8 d d�8 �8�8 d�8 d�8 d�8 d�8 �8 8 �8 d�8 d�8 d š d š�8�8�8�8 Em�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8! š�8"�8+�8#�8'�8$ Em�8% Em�8& Em Em�8( Em�8) Em�8* Em š Em�8,�80�8- d�8. d�8/ d š d�81 d�82 d�83 d E] d�85�8o�86�8R�87�8I�88�8@�89�8=�8: Em�8; Em�8< Em š Em�8> Em�8? Em š Em�8A�8E�8B d�8C d�8D d d�8F d�8G d�8H d š d š�8J�8K�8N�8L Em�8M Em š Em�8O Em�8P Em�8Q Em š Em�8S�8\�8T š�8U�8X�8V d�8W d š d�8Y d�8Z d�8[ d E] d�8]�8f�8^�8b�8_ Em�8` Em�8a Em š Em�8c Em�8d Em�8e Em š Em�8g�8k�8h d�8i d�8j d d�8l d�8m d�8n d š d�8p�8�8q�8�8r�8{�8s�8w�8t d�8u d�8v d š d�8x d�8y d�8z d 8 d�8|�8�8} d�8~ d�8 d d�8 d�8 d�8 d š d š�8�8�8�8 d�8 d�8 d š d�8 d�8 d�8 d d�8�8�8�8�8�8�8 Em�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8�8�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8 š�8�8�8 d�8 d�8 d š d�8 d�8 d�8 d Es d�8�9=�8�8�8�8�8�8�8�8 d�8�8 d�8 d�8 d š d�8�8�8 d�8 d�8 d š d�8 d�8 d�8 d E] d�8�8�8�8�8 Em�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8�8�8 Em�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8�8�8�8�8�8�8 d�8 d�8 d š d�8 d�8 d�8 d E d�8�8�8 E�8 E�8 E E�8 E�8 E�8 E E�8�8�8�8�8 d�8 d d�8 d�8 d�8 d š d�8�8�8 Em�8 Em š Em�8 Em�8 Em�8 Em š Em�8�9"�8�9 �8�9�8�8�8 Em š�8 š�8 š Em�8 Em�9� Em�9 Em š Em�9�9�9 Em�9 Em�9 Em š Em�9 Em�9 Em š Em�9 �9�9 �9�9 d�9 d�9 d�9 d�9 �9�9 �9 8 �9 d�9 d�9 d š d�9�9�9 d�9 d�9 d š d�9 d�9 d�9! d d�9#�92�9$�9)�9% Em�9& Em�9' Em�9( Em š Em�9*�9.�9+ Em�9, Em�9- Em š Em�9/ Em�90 Em�91 Em š Em�93�98 d�94�95 d�96 d�97 d d�99 d�9: d�9; d�9< d š d�9>�9�9?�9[�9@�9R�9A�9I�9B�9F�9C Em�9D Em�9E Em š Em�9G Em�9H Em š Em�9J�9N�9K E�9L E�9M E E�9O E�9P E�9Q E E š�9S�9T�9W�9U d�9V d š d�9X d�9Y d�9Z d d�9\�9o�9]�9f�9^�9b�9_ Em�9` Em�9a Em š Em�9c Em�9d Em�9e Em š Em�9g�9k�9h d�9i d�9j d d�9l d�9m d�9n d š d�9p�9w�9q�9s�9r Em š Em�9t Em�9u Em�9v Em š Em�9x�9{�9y d�9z d š d�9| d�9} d�9~ d d�9�9�9�9�9�9 Em�9�9 Em�9 Em š�9 š Em�9�9�9 Em�9 Em�9 Em š Em�9 Em�9 Em�9 Em š Em�9�9�9�9�9 Em�9 Em�9 Em š Em�9 Em�9 Em�9 Em š Em�9�9�9 d�9 d�9 d d�9 d�9 d�9 d š d�9�9�9�9�9�9�9 d�9 d�9 d š d�9 d�9 d�9 d d�9�9�9 d�9 d�9 d š d�9 d�9 d�9 d d�9�9�9�9�9 d�9 d�9 d d�9 d�9 d�9 d š d�9�9�9 Em�9 Em�9 Em š Em�9 Em�9 Em�9 Em š Em�9�:�9�:F�9�9�9�9�9�9�9 d d�9�9 d�9 d�9 d š d�9�9�9�9�9 d�9 d�9 d š d�9 d�9 d�9 d 8 d�9�9�9 d�9 d�9 d d�9 d�9 d�9 d E] d�9�9�9 š�9�9�9 Em�9 Em�9 Em š Em�9 Em�9 Em�9 Em š Em š�9�9�9�9 d�9 d�9 d š d�9 d�9 d�9 d d�9�:%�9�:�:��: �:�:�: d�: d�: d d�: d�: d�: d š d�: �:�: Em�: Em�: Em > Em�: Em�: Em�: Em š Em�:�:�:�:�: d�: d�: d š d�: d�: d�: d d�:�:!�: d�: d�: d š d�:" d�:# d�:$ d d�:&�:8�:'�:/�:(�:+�:) Em�:* Em š Em�:, Em�:- Em�:. Em š Em�:0�:4�:1 Em�:2 Em�:3 Em š Em�:5 Em�:6 Em�:7 Em š Em�:9�:> Em�::�:; Em�:< Em�:= Em š Em�:?�:B�:@ Em�:A Em š Em�:C Em�:D Em�:E Em š Em�:G�:�:H�:n�:I�:\�:J�:S�:K�:O�:L Em�:M Em�:N Em š Em�:P Em�:Q Em�:R Em š Em�:T�:X�:U d�:V d�:W d š d�:Y d�:Z d�:[ d d�:]�:e�:^�:a�:_ d�:` d d�:b d�:c d�:d d E] d�:f�:j�:g Em�:h Em�:i Em š Em�:k Em�:l Em�:m Em š Em�:o�:�:p�:x�:q�:t�:r d�:s d d�:u d�:v d�:w d š d�:y�:}�:z Em�:{ Em�:| Em š Em�:~ Em�: Em š Em�: š�:�:�: Em�: Em�: Em š Em�: Em�: Em�: Em š Em�:�:�:�:�:�:�:�:�: d�: d�: d š d�: d�: d�: d d�:�:�: Em�: Em�: Em š Em�: Em�: Em�: Em š Em�:�:�:�:�: Em�: Em š Em�: Em�: Em�: Em š Em�:�:�: Em�: Em�: Em š Em�: Em�: Em�: Em š Em�:�: �:�:�:�: Em�: Em�: Em š Em�: Em�: Em�: Em š Em�: š�:�:�: d�: d�: d š d�: d�: d�: d d�:�;�:�:�:�:�: š�:�:�:�:�: d�: d�: d d�: d�: d�: d š d�:�:�: Em�: Em�: Em š Em�: Em�: Em�: Em š Em�: š�:�: Em�:�: Em�: Em�: Em š Em�:�:�: Em�: Em�: Em Em�: Em�: Em�: Em š Em�:�;�:�:�: š Em�:�: Em�: Em�: Em š Em�:�:�:�:�: d�: d�: d š d�: d�: d�: d d�;��;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�; š�; �;�; �;�; E�; E�; E E�; E�; E�; E E�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;Z�;�;3�;�;)�; š�;!�;%�;" d�;# d�;$ d d�;& d�;' d�;( d š d�;* š�;+�;/�;, Em�;- Em�;. Em š Em�;0 Em�;1 Em�;2 Em š Em�;4�;G�;5�;>�;6�;:�;7 Em�;8 Em�;9 Em š Em�;; Em�;< Em�;= Em š Em�;?�;C�;@ Em�;A Em�;B Em š Em�;D Em�;E Em�;F Em š Em�;H�;Q�;I�;M�;J Em�;K Em�;L Em š Em�;N Em�;O Em�;P Em š Em�;R�;V�;S Em�;T Em�;U Em š Em�;W Em�;X Em�;Y Em š Em�;[�;o š�;\�;]�;f�;^�;b�;_ d�;` d�;a d š d�;c d�;d d�;e d d�;g�;k�;h d�;i d�;j d š d�;l d�;m d�;n d d�;p�;�;q�;v�;r d�;s d�;t d�;u d š d�;w�;{�;x d�;y d�;z d E] d�;| d�;} d�;~ d š d�;�; Em�;�; Em�; Em�; Em š Em�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�=�;�<q�;�;�;�;�;�; š�;�;�;�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;�; š�;�;�; d�; d�; d d�; d�; d�; d š d š�;�;�;�; d�; d�; d š d�; d�; d�; d d�;�;�;�; š�;�;�;�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;�;�;�; Em�; Em�; Em š Em�; Em�; Em š Em�;�;�; d�; d�; d E d�; d�; d�; d E] d�;�;�; š�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;�;�;�; Em�; Em�; Em š Em�; Em�; Em�; Em š Em�;�;�; Em�; Em š Em�; Em�; Em�; Em š Em�;�<5�;�<�;�< �;�<�;�;�; Em�; Em�; Em š Em�<� Em š Em�<�<�< d�< d�< d d�< d�< d�< d š d�< š�< �<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�<(�<�<�<�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�< �<$�<! d�<" d�<# d š d�<% d�<& d�<' d d�<)�<0�<*�<,�<+ d d�<- d�<. d�</ d š d d�<1�<2 d�<3 d š�<4 š Em�<6�<K�<7�<A�<8 š�<9�<=�<: d�<; d�<< d š d�<> d�<? d�<@ d d�<B š�<C�<G�<D d�<E d�<F d š d�<H d�<I d�<J d d�<L�<_�<M�<V�<N�<R�<O Em�<P Em�<Q Em š Em�<S Em�<T Em�<U Em š Em�<W�<[�<X Em�<Y Em�<Z Em š Em�<\ Em�<] Em�<^ Em š Em�<`�<h�<a�<e�<b Em�<c Em�<d Em š Em�<f Em�<g Em š Em�<i�<m�<j Em�<k Em�<l Em š Em�<n Em�<o Em�<p Em š Em�<r�<�<s�<�<t�<�<u�<|�<v š�<w�<x š d�<y d�<z d�<{ d d�<}�<�<~�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�<�< d�< d�< d d�< d�< d�< d š d�<�<�<�<�<�<�< d�< d�< d d�< d�< d š d d�<�< d�< d š d�<�<�<�<�< d d�< d�< d�< d š d�< d�< d�< d�< d š d�<�<�<�<�<�< Em�<�< Em�< Em�< Em š Em�<�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�<�<�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�<�<�<�<�<�< d�< d d�< d�< d�< d š d�<�<�< d�< d�< d š d�< d�< d�< d d�<�<�<�<�< Em�< Em�< Em š Em�<�<�< Em�< Em š Em Em š�<�<�< Em�< Em�< Em š Em�< Em�< Em�< Em š Em�<�=D�<�=�<�= �<�=�<�<�< d�< d�< d d�< d�=� d�= d š d�=�=�= Em�= Em š Em�= Em�= Em�= Em š Em�= �=�= �=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em�=�=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em�=�=1�=�=(�= �=$�=! d�=" d�=# d š d�=% d�=& d�=' d d�=)�=-�=* Em�=+ Em�=, Em š Em�=. Em�=/ Em�=0 Em š Em�=2�=;�=3�=7�=4 Em�=5 Em�=6 Em š Em�=8 Em�=9 Em�=: Em š Em�=<�=@�== Em�=> Em�=? Em š Em�=A Em�=B Em�=C Em š Em�=E�=b�=F�=X�=G�=P�=H�=L�=I d�=J d�=K d d�=M d�=N d�=O d š d�=Q�=T�=R d�=S d š d�=U d�=V d�=W d d š�=Y�=Z�=^�=[ d�=\ d�=] d d�=_ d�=` d�=a d š d�=c�=m �=d�=e�=i�=f Em�=g Em�=h Em š Em�=j Em�=k Em�=l Em š Em�=n�=v�=o�=r�=p d�=q d d�=s d�=t d�=u d š d�=w�={�=x Em�=y Em�=z Em š Em�=| Em�=} Em�=~ Em š Em�=�>V�=�=�=�=�=�=�=�=�=�=�=�=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em�=�=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em�=�=�=�=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em Em�=�= Em�= Em�= Em š Em�= š�= š�=�=�= Em�= Em š Em�= Em�= Em�= Em š Em�=�=�=�= š�=�=�=�= d�= d�= d š d�= d�= d�= d d�=�=�=�=�= d�= d�= d d�= d�= d�= d š d�=�=�= d�= d�= d d�= d�= d�= d š d�=�=�=�=�=�=�= d�= d�= d d�= d�= d�= d š d�=�=�= d�= d�= d d�= d�= d�= d š d�= š�=�=�= Em�= Em�= Em š Em�= Em�= Em�= Em š Em�=�> �=�> �=�>�=�=�=�=�= d d�= d�= d�= d š d�=�=�= d�= d�= d d�= d�= d�>� d š d š�>�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�> �>�> �>�>�>�> d�> d�> d d�> d�> d�> d š d�>�>�> d�> d�> d d�> d�> d�> d š d š�>!�>>�>"�>4�>#�>+�>$�>(�>% Em�>& Em�>' Em š Em�>) Em�>* Em š Em�>,�>0�>- Em�>. Em�>/ Em š Em�>1 Em�>2 Em�>3 Em š Em�>5 š�>6�>:�>7 d�>8 d�>9 d d�>; d�>< d�>= d š d�>?�>P�>@�>G�>A�>C�>B E E�>D E�>E E�>F E E�>H�>L�>I Em�>J Em�>K Em š Em�>M Em�>N Em�>O Em š Em�>Q š Em�>R�>S Em�>T Em�>U Em š Em�>W�>�>X�>�>Y�>o�>Z�>i�>[�>` d�>\�>] d�>^ d�>_ d d�>a�>e�>b d�>c d�>d d E d�>f d�>g d�>h d š d�>j š d�>k�>l d�>m d�>n d d�>p�>�>q�>z�>r�>v�>s Em�>t Em�>u Em š Em�>w Em�>x Em�>y Em š Em�>{�>�>| E�>} E�>~ E E�> E�> E�> E E�> š�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�>�>�>�>�>�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em š�>�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�>�>�>�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em š�>�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�? �>�>�>�> š�>�>�>�> d�> d�> d š d�> d�> d�> d d�>�> Em�>�> Em�> Em�> Em š Em�>�>�> Em�> Em�> Em š Em�> Em�> Em�> Em š Em�>�>�>�>�>�>�> d�> d�> d d�> d�> d�> d š d�>�>�> d�> d�> d š d�> d�> d�> d d�>�?� d�>�> d�> d�> d š d�?�?�? d�? d�? d š d�? d�? d�? d d�? �?(�? �?�? š�? �?�? d�? d�? d š d�? d�? d�? d d�?�?�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�? �?$�?! E�?" E�?# E E�?% E�?& E�?' E 8 E�?)�?3�?* š�?+�?/�?, d�?- d�?. d š d�?0 d�?1 d�?2 d d�?4�?9 d�?5�?6 d�?7 d�?8 d d�?:�?>�?; d�?< d�?= d š d�?? d�?@ d�?A d d�?C�Bl�?D�A�?E�@<�?F�?�?G�?�?H�?m�?I�?\�?J�?S�?K�?O�?L Em�?M Em�?N Em š Em�?P Em�?Q Em�?R Em š Em�?T�?X�?U d�?V d�?W d š d�?Y d�?Z d�?[ d d�?]�?f�?^�?b�?_ Em�?` Em�?a Em š Em�?c Em�?d Em�?e Em š Em�?g�?j�?h Em�?i Em š Em�?k Em�?l Em š Em�?n�?�?o�?x�?p�?t�?q Em�?r Em�?s Em š Em�?u Em�?v Em�?w Em š Em�?y�?|�?z d�?{ d š d�?} d�?~ d�? d 8 d�?�?�?�?�? Em š Em�? Em�? Em�? Em š Em�?�?�? d�? d�? d š d�? d�? d�? d d�?�?�?�?�? š�?�?�? d š d�? d�? d�? d E] d�?�?�?�?�? d�? d�? d d�? d�? d�? d š d�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�?�?�?�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�?�? d�? d�? d š d�? d�? d�? d d�? š�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�@�?�?�?�?�?�?�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�?�?�?�? d�? d�? d E] d�? d�? d�? d š d�?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�?�@ �?�@��?�?�? Em�? Em�? Em š Em�? Em�? Em�? Em š Em�@�@�@ Em�@ Em�@ Em š Em�@ Em�@ Em�@ Em š Em�@ �@�@ �@�@ Em�@ Em�@ Em š Em�@ Em�@ Em�@ Em š Em�@�@�@ d�@ d�@ d š d�@ d�@ d d�@�@'�@ š š�@�@�@#�@ Em�@! Em�@" Em š Em�@$ Em�@% Em�@& Em š Em�@(�@2�@) š�@*�@.�@+ Em�@, Em�@- Em š Em�@/ Em�@0 Em�@1 Em š Em�@3 š�@4�@8�@5 d�@6 d�@7 d d�@9 d�@: d�@; d š d�@=�@�@>�@u�@?�@]�@@�@J š�@A�@B�@F�@C d�@D d�@E d š d�@G d�@H d�@I d d�@K�@T�@L�@P�@M Em�@N Em�@O Em š Em�@Q Em�@R Em�@S Em š Em�@U�@Y�@V d�@W d�@X d d�@Z d�@[ d�@\ d š d�@^�@k�@_�@b d�@`�@a d š d�@c�@g�@d d�@e d�@f d š d�@h d�@i d�@j d d�@l š�@m�@q�@n d�@o d�@p d š d�@r d�@s d�@t d d�@v�@�@w�@ š�@x�@y�@}�@z Em�@{ Em�@| Em š Em�@~ Em�@ Em�@ Em š Em�@ š�@�@�@ d�@ d�@ d š d�@ d�@ d�@ d d š�@�@�@�@�@�@ Em�@ Em š�@ š Em�@ Em�@ Em�@ Em š Em�@�@�@ Em š Em�@ Em�@ Em�@ Em š Em�@�@�@�@�@�@�@�@�@�@�@ d�@ d�@ d d�@ d�@ d�@ d š d�@�@�@ E�@ E�@ E E�@ E�@ E�@ E E�@ š�@�@�@ Em�@ Em�@ Em š Em�@ Em�@ Em�@ Em š Em š�@�@�@�@�@�@ d�@ d�@ d š d�@ d�@ d�@ d 8 d�@�@�@ Em š Em�@ Em�@ Em�@ Em š Em�@�@�@�@ š�@�@�@�@ d�@ d�@ d š d�@ d�@ d�@ d E] d�@�@�@�@�@ d�@ d�@ d d�@ d�@ d�@ d E] d�@�@�@ Em�@ Em�@ Em š Em�@ Em�@ Em�@ Em š Em�@�@�@ š�@�@�@ d�@ d�@ d š d�@ d�@ d�@ d d š�@�@�@�@ d�@ d�@ d d�A� d�A d�A d š d�A�A�A�Aa�A�AA�A�A$�A�A�A �A�A �A�A d�A d�A d š d�A d�A d�A d d�A�A�A Em�A Em�A Em š Em�A Em�A Em�A Em š Em š�A�A�A �A Em�A Em š Em�A! Em�A" Em�A# Em š Em�A%�A/ š�A&�A'�A+�A( Em�A) Em�A* Em š Em�A, Em�A- Em�A. Em š Em�A0�A8�A1�A4�A2 d�A3 d š d�A5 d�A6 d�A7 d d�A9�A=�A: Em�A; Em�A< Em š Em�A> Em�A? Em�A@ Em š Em�AB�AV�AC�AM š�AD�AE�AI�AF d�AG d�AH d d�AJ d�AK d�AL d š d�AN š�AO�AR�AP Em�AQ Em š Em�AS Em�AT Em�AU Em š Em š�AW�AX š�AY�A]�AZ Em�A[ Em�A\ Em š Em�A^ Em�A_ Em�A` Em š Em�Ab�A�Ac�A�Ad�Av�Ae�An�Af�Aj�Ag d�Ah d�Ai d š d�Ak d�Al d�Am d d�Ao�Ar�Ap d�Aq d d�As d�At d�Au d š d�Aw š�Ax�A|�Ay d�Az d�A{ d d š�A} d�A~ d�A d E d š�A�A š�A�A�A Em�A Em�A Em š Em�A Em�A Em�A Em š Em�A�A š�A š�A�A�A�A Em�A Em�A Em š Em�A Em�A Em�A Em š Em�A�A�A�A�A�A�A d�A d�A d d�A d�A d�A d E] d�A�A�A d�A d�A d d�A d�A d�A d š d�A�A�A�A�A d�A d�A d š d�A d�A d�A d d�A�A�A d�A d�A d š d�A d�A d�A d d�A�B&�A�A�A�A�A�A�A�A�A�A�A Em�A Em�A Em š Em�A Em�A Em�A Em š Em�A�A�A d�A d�A d E] d�A d�A d�A d d�A š�A�A�A Em�A Em B Em�A Em�A Em�A Em š Em�A�A�A�A d�A�A d�A d�A d d�A�A�A Em�A Em�A Em š Em�A Em�A Em�A Em š Em�A �A�A�A d�A d�A d š d�A d�A d�A d d�A�B�A�B �A�B�A�B��A Em�A Em�A Em š Em�B Em�B Em�B Em š Em�B Em�B Em�B Em š�B š Em Em�B �B Em�B Em�B Em�B Em š Em�B�B�B�B�B d�B d�B d�B d š d�B d�B d�B d�B d E] d�B�B!�B Em�B Em�B Em�B Em š Em�B" Em�B# Em�B$ Em�B% Em š Em�B'�BI�B(�B=�B)�B2�B*�B-�B+ Em�B, Em š Em�B. Em�B/ Em�B0 Em�B1 Em š Em�B3�B8�B4 d�B5 d�B6 d�B7 d š d�B9 d�B: d�B; d�B< d d š�B>�B?�BD�B@ d�BA d�BB d�BC d š d�BE d�BF d�BG d�BH d d�BJ�B`�BK�BU�BL�BP�BM d�BN d�BO d š d�BQ d�BR d�BS d�BT d d�BV�B[�BW Em�BX Em�BY Em�BZ Em š Em�B\ Em�B] Em�B^ Em�B_ Em š Em�Ba š�Bb�Bg�Bc d�Bd d�Be d�Bf d d�Bh d�Bi d�Bj d�Bk d š d�Bm�CJ�Bn�B�Bo�B�Bp�B�Bq�B}�Br š�Bs�Bx�Bt d�Bu d�Bv d�Bw d d�By d�Bz d�B{ d�B| d š d�B~�B�B�B�B Em�B Em�B Em�B Em š Em�B Em�B Em�B Em�B Em š Em�B�B�B d�B d�B d�B d d�B d�B d�B d�B d š d�B�B�B�B�B�B�B Em�B Em�B Em�B Em š Em�B Em�B Em�B Em š Em�B�B�B Em�B Em�B Em�B Em š Em�B Em�B Em�B Em�B Em š Em�B š d�B�B d�B d�B d�B d d�B�B�B š�B�B�B�B�B d�B d�B d d�B d�B d�B d�B d š d�B�B�B d�B d�B d�B d d�B d�B d�B d�B d š d�B�B�B š�B�B�B d�B d d�B d�B d�B d�B d š d�B�B�B�B�B d�B d�B d�B d š d�B d�B d�B d�B d d�B�B�B d�B d�B d E] d�B d�B d�B d�B d š d�B�C#�B�C�B�B�B�B�B d�B d�B d�B d�B d š d�B d�B d�B d�B d�B d d�B�C�B Em�B Em�B Em�C� Em�C Em š Em�C Em�C Em�C Em�C Em�C Em š Em�C �C�C �C�C d�C d�C d�C d�C d E d�C d�C d�C d�C d�C d š d�C�C�C d�C d�C d�C d�C d d�C d�C d�C d�C! d�C" d š d�C$�C=�C%�C1�C&�C,�C' d�C( d�C) d�C* d�C+ d d�C- d�C. d�C/ d�C0 d š d�C2�C7�C3 d�C4 d�C5 d�C6 d d�C8 d�C9 d�C: d�C; d�C< d š d š�C>�C?�CE�C@ d�CA d�CB d�CC d�CD d š d�CF d�CG d�CH d�CI d d�CK�C�CL�Cv�CM�Ch�CN�C[�CO�CU�CP Em�CQ Em�CR Em�CS Em�CT Em š Em�CV Em�CW Em�CX Em�CY Em�CZ Em š Em�C\�Cb�C] Em�C^ Em�C_ Em�C` Em�Ca Em š Em�Cc Em�Cd Em�Ce Em�Cf Em�Cg Em š Em š�Ci�Cj�Cp�Ck Em�Cl Em�Cm Em�Cn Em�Co Em š Em�Cq Em�Cr Em�Cs Em�Ct Em�Cu Em š Em�Cw�C�Cx�C�Cy�C�Cz d�C{ d�C| d�C} d�C~ d d�C d�C d�C d�C d�C d : d�C�C�C d�C d�C d�C d�C d š d�C d�C d�C d�C d�C d d�C�C�C�C�C Em�C Em�C Em�C Em š Em�C Em�C Em�C Em�C Em�C Em š Em�C Em�C Em�C Em�C Em�C Em�C Em š Em�C�C�C�C�C�C�C�C�C d�C d�C d�C d�C d E d�C d�C d�C d š d d�C�C d�C d�C d�C d�C d š d�C�C�C�C�C Em�C Em�C Em�C Em�C Em š Em�C Em�C Em�C Em�C Em š Em�C�C�C d�C d�C d�C d�C d š d�C d�C d�C d�C d E d�C�C�C�C�C�C�C d�C d�C d�C d�C d E] d�C d�C d�C d�C d�C d š d�C�C�C d�C d�C d�C d�C d d�C d�C d�C d�C d�C d š d�C�C�C�C�C Em�C Em�C Em�C Em�C Em š Em�C Em�C Em�C Em�C Em�C Em š Em�C�D�D� d�D d�D d�D d d�D d�D d�D d�D d�D d š d�D �IT�D �Ft�D �E�D�D�D�DR�D�D2�D�D"�D�D š�D�D š š�D š : š�D�D�D�D�D � š š�D�D š š�D�D �D š š >�D! š š ��D#�D+�D$�D%  ��D& ��D' š�D(�D) š �D* š š �D,�D- > š�D. š š�D/ š�D0 š�D1 š �D3�DB�D4�D>�D5�D8 š�D6 š�D7 A : š�D9�D:�D; � :�D< š�D= š � š š�D?�D@ š š�DA š >�DC�DM š�DD�DE š�DF�DH š�DG > š�DI�DK @'�DJ : š�DL š > š�DN > š�DO�DP�DQ > š š D�DS�Dy�DT�D^�DU�DV  D :�DW�DX�DZ�DY š : š�D[ š�D\ š š�D] š :�D_�Dh�D`�De�Da š�Db�Dc š �Dd : D š š�Df š�Dg š�Di�Du�Dj�Do�Dk�Dl �Dm �Dn @' š :�Dp�Dr�Dq š > :�Ds�Dt š D š :�Dv :�Dw :�Dx : š�Dz�D�D{�D�D|�D�D} š�D~�D : E 5 š�D >�D > �D�D�D�D š�D�D š š�D � š :�D : š�D š�D�D š�D , > š�D�D�D �D�D�D : > :�D š�D�D�D > � š�D š 5�D�D�D�D�D�D�D š�D š�D  š�D š�D š�D �  š�D �D�D �D�D�D�D š š  �D�D š ʗ š�D�D�D�D�D�D  š š�D�D�D š�D š ,�D�D :  @ �D�D š�D�D š š�D š�D : >�D š š�D 5 š�D�D š�D ,�D š�D c :�D�D�D  š�D š�D š�D H �D�D�D  š �D�D�D�D�D�D�D �D�D�D�D @�D�D š � š�D š š�D š > (�D (�D ( š �D�D >�D�D�D > �D š @�D š > š�D�D�D�D > š š �D š �D�D š �D  š�D�E�D�E š�D�D�D�D�D�D š š�D A š D š�D�E� š�D š�D : š�E š : š�E š�E�E�E�E �E�E�E � š�E �E � š�E >�E �E š k š 5p�E�E š @ ʗ ��E�E @ š�E�E š�E �E �E  š�E�E�E�E š : š � š�E�E�E �E�E!�E`�E"�EA�E#�E-�E$�E)�E% š š�E&�E' @ š�E( š : š�E*�E+ š ��E, : š�E.�E=�E/�E5 š�E0�E1�E3 š�E2 > , š�E4 š ��E6�E9 š�E7�E8 c c �E:�E; c D�E< š š �E> š �E? �E@  š�EB�ER�EC�EO�ED�EJ�EE�EF B š D�EG�EH�EI � > š�EK�EN�EL >�EM š š > > š�EP >�EQ š 5 š�ES�EZ 5a�ET�EU�EV k c�EW �EX�EY � š š�E[ š�E\�E^ š�E] š > >�E_ š ��Ea�E�Eb�Ey�Ec�Eh š�Ed š�Ee š�Ef �Eg ( š�Ei�Er�Ej�Em�Ek , š�El š ,�En�Ep A�Eo A H š�Eq š ��Es�Ev 5p�Et ��Eu š ��Ew š š�Ex š � š�Ez�E{ : š�E|�E}�E :�E~ š � š�E > š�E�E�E  :�E�E�E : š š @�E�E�E�E�E ��E�E š�E š š �E�E ? š š �  A�E�E�E�E�E�E �E�E�E�E š�E š�E > š �E š š A š�E š�E�E�E š c�E A c A�E�E�E�E c š � š�E�E�E�E�E �E�E�E š ( š š D �E �E  š�E�E�E�E š�E�E�E ��E š š�E š�E�E�E > š š �  š�E�E�E�E�E š�E�E š�E š�E š > š �E š š�E š�E š�E š , š�E š�E š�E�E š�E š �E�F%�E�E�E�E š�E�E�E š�E�E�E�E D�E D š D�E D�E š �E�E�E š š�E š�E  š�E � š ,�E�E�E š�E š�E�E > ��E�E ʗ�E š > š š�E�F�E�E š�E�E š š�E � š�E�F� š�E�E�E�E c�E�E � š š�E š�E�E � š : š�F�F�F š :�F�F š š ��F�F �F�F �F�F š A A �F � š�F �F š�F @ A E�F š �F�F�F�F š�F�F š E >�F A�F�F �F š �F�F š�F š A š�F  š�F š�F! ��F"�F#�F$ š š ��F&�F]�F'�F5�F(�F/�F)�F.�F* c�F+�F, š c�F- : c : c >�F0�F1 > ( (�F2�F3 š (�F4 ( A�F6�F@ š�F7�F8�F< š�F9 š�F:�F; š < � š�F= š�F>�F? š š ��FA�FN�FB�FI�FC�FG�FD�FF š�FE š š �FH � : ��FJ š �FK�FL�FM š  š :�FO�FW�FP�FT�FQ š�FR�FS ( : š š�FU š�FV @ š�FX�FZ�FY š š �F[ : š�F\ : k�F^�Fc�F_�Fb š�F`�Fa š š :�Fd�Fj ��Fe�Ff �Fg�Fi�Fh š š :�Fk š�Fl�Fp š�Fm�Fn š š�Fo š š�Fq�Fr š�Fs š š ��Fu�H�Fv�G'�Fw�F�Fx�F�Fy�F�Fz�F�F{ š š�F|�F}�F~ š : š�F�F�F š š @ �F�F�F š š�F ( š �F�F�F�F š�F�F š š �F E�F�F š�F š�F š F D �F E�F�F�F E š�F š ��F�F�F�F š�F�F š�F�F : š�F :�F�F š š �F�F�F�F�F�F D �F š�F š š �F�F�F E> @'�F�F @'�F @' š�F�F @' : š F�F�F�F�F B�F š�F š ��F @' š �F š � š�F�F š�F š�F�F�F š�F�F�F D š @' š�F � š > >�F�F�F�F�F�F�F�F�F�F�F�F š�F š�F š � š�F�F š : š �F š�F�F�F <  š c <�F �F�F�F�F š ��F ��F : š :�F�F š š�F�F @ š � š�F�F�F�F�F�F�F�F š ʗ�F š :�F�F š�F š�F š A�F : š :�F�F :�F : A š �F�G�F�F�F š�F š�F�F  A �F š�F : > š�G��G�G�G�G : š�G š�G š š ��G�G �G�G �G š š :�G �G , š < <�G š >�G�G�G�G�G �G�G š�G š�G š ��G�G�G š > š�G � š  š ��G�G�G �G š � A :�G!�G"�G%�G#�G$ : š š : :�G& : š�G(�G�G)�Gl�G*�GX�G+�GK�G,�G=�G- š�G.�G<�G/�G1�G0 š : �G2 š�G3�G4 � ��G5�G6 ��G7�G9 ��G8 � >�G:�G; � > � > š , š�G>�G?�GE�G@�GC�GA�GB š  � š š�GD : @�GF�GI�GG�GH @ š � š�GJ � A š�GL�GO š�GM š�GN š �GP >�GQ�GU�GR�GT š�GS � š > >�GV �GW 5R š�GY�Gc�GZ�G] >�G[ š�G\ ( c š�G^�G_�G` : š š�Ga š�Gb A š �Gd�Ge�Gj�Gf�Gg c  �Gh š�Gi š ��Gk š ��Gm�G{�Gn�Gz�Go�Gw�Gp š�Gq�Gt�Gr c ��Gs : š c�Gu�Gv  � , š�Gx š�Gy � š � š�G|�G�G}�G�G~ š�G�G�G š�G š š š �G�G�G�G�G   š  š�G�G š ��G �G š @�G ?�G �G�G�G + �G�G š + š �G�G�G�G�G�G > š�G�G�G�G�G�G š �G : < š�G�G š�G�G�G � š :�G �G�G š š�G�G š�G š �G�G š < �G�G ��G <�G�G š�G �G  < �G�G�G�G�G�G�G c š�G�G�G�G š � (�G š A š c�G�G�G c�G c š �G š š�G š �G�G�G�G�G �G �G�G�G š š�G�G�G�G�G š�G š�G�G�G š  š�G�G   š�G š�G�G�G�G š  š �G š š �G š�G�G�G�G�G�G š  š �G�G š  š�G�G  š �G š�G š š�G�G š  š š�G š D �G�G�G�G c�G š š > š c�G �G�G ��G š ��G�G š�G š�G � �H� š�H�H�H�Hk�H�H*�H�H!�H�H�H�H�H @'�H �H �H š�H � š � š�H �H : š @'�H�H�H @'�H š�H A š �H š�H š�H�H�H š š�H š�H�H š š �H < <�H <�H < š�H"�H# š �H$�H)�H% >�H&�H' >�H(  >  > (�H+�HF�H,�H7�H-�H1�H. š�H/�H0 š š š�H2�H3�H5 š�H4 � ʗ�H6 š š >�H8�H9�HB�H:�H@�H;�H= š�H< š (�H>�H? A š š š�HA š ��HC�HE �HD š > > :�HG�HW�HH�HR�HI š�HJ�HN�HK�HM�HL ʗ : š š c�HO�HQ�HP š : š š : š�HS�HT�HV�HU š š c :�HX c�HY�H_�HZ�H[ > š�H\�H^�H] š š : š >�H`�Hf�Ha�Hd�Hb�Hc : >  š�He ( š�Hg�Hi š�Hh c�Hj š : š�Hl�H�Hm�H�Hn�Ht :�Ho�Hp š�Hq�Hr : š�Hs : š �Hu�H} š�Hv�Hw�Hz�Hx >�Hy š š F ��H{�H| : H š�H~ š�H š : š�H�H�H š š�H š�H š�H š�H � š�H�H š�H�H š �H š �H š š�H�H š ʗ�H�H�H�H š�H�H +�H�H A�H š�H š : š �H š �H�H�H š ʗ�H š š�H š 5R�H�H�H�H�H�H�H�H�H > ʗ�H�H š�H š�H š�H�H�H�H�H�H š  š �H�H š  š �H�H�H�H š  š �H�H š  š �H�H ʗ š š ʗ�H�H B  @'�H�H�H > š š �H�H š�H š�H�H š > š š�H�H >�H > > š�H š �H�H š :�H�I�H�H�H�H�H�H > š�H�H +�H š�H š �H š�H š�H š š @�H�H š�H�H�H�H�H š�H š�H š š >�H�H š�H�H š c š D š�H š�H š�H�H > š�H�H š�H š D š�H�I�H�I��H�H š�H�H�H š�H š�H 5 š 5�H�H�H š � š�H š�H � š�H > š�I š�I D�I�I š�I š > š >�I�I 5 >�I �I�I š�I �I >�I >�I š D š A�I ( š�I š�I š�I � š�I�I,�I�I%�I�I �I ( š�I�I�I�I�I�I ( š : A š š�I š c�I!�I$�I" A�I# š ( A A š�I&�I( š�I' š  š�I) 5a�I* š�I+ š >�I-�IC�I.�I@�I/�I6 š�I0�I1 š�I2�I4 š�I3 > š�I5 š š�I7�I>�I8�I;�I9 š�I: š š š�I<�I= � š ��I? š š�IA�IB k < < A�ID�IH�IE š A�IF š�IG B š�II�IL�IJ c š�IK š  c�IM�IN�IS�IO�IQ š�IP š ��IR š � š : š�IU�Kb�IV�J&�IW�I�IX�Ii�IY š�IZ š�I[ š�I\ š š�I]�I^ š š�I_ š�I` š�Ia�Ib š�Ic š š�Id�Ie š�If š�Ig š š�Ih š >�Ij�I�Ik�I�Il š�Im�Iz�In š�Io �Ip �Iq�Ir �Is�It �Iu �Iv �Iw �Ix �Iy �I{ š š�I|�I} š�I~ š > š š�I�I�I š�I�I�I�I š�I š š�I š š�I š š Em�I�I�I š š š�I�I š š �I�J�I�I�I š š�I �I�I �I �I�I �I �I�I �I �I�I �I �I š �I š�I�I�I�I�I�I�I�I�I�I�I�I�I 8�I�I�I�I�I 8 8�I 8 F�I 8�I�I 8 F 8 8�I�I 8�I 8 8 F 8�I�I 8 8�I ٺ�I�I 8 8 ٺ�I 8 8�I�I 8 8�I�I�I�I 8 F 8�I 8 8 F 8�I 8�I 8 F�I�I�I 8�I�I�I 8 8�I�I�I 8�I 8�I 8 8�I�I 8 8 F 8 F�I�I 8�I�I 8�I 8�I 8 8�I 8 F�I�I 8 8�I�I 8�I 8 8�I F 8�I�I 8�I 8�I 8�I 8�I�I�I�I 8 F�I 8 F 8�I�I 8 8 F 8�I�I 8 8�I�I 8�I 8 8�I F 8�I�J�I�J�I�J�I 8 8�I 8�I 8�I 8�I 8�J� 8 F 8�J 8�J 8�J�J 8�J 8�J 8 8 F 8�J �J �J 8�J �J 8 8�J 8�J�J 8 8 F 8�J 8 8�J�J�J�J 8�J 8 8�J 8�J 8�J 8�J�J 8 8 F 8�J 8�J B 8 š�J �J! š�J" š�J# š�J$ š š�J% š (�J'�J|�J(�Jg�J) š�J*�J+�JG�J,�J9�J-�J6�J.�J3�J/�J1 �J0 F�J2 F F F�J4 F F�J5 F G F�J7 F�J8 G �J:�JC�J;�J>�J< �J= F �J?�JA �J@ F �JB F �JD�JE �JF F�JH�JZ�JI�JR�JJ�JO�JK�JM�JL F F G'�JN F �JP �JQ F �JS�JV�JT �JU F�JW�JY�JX F G �J[�J\�J` �J]�J^�J_ G5 GD GS Gb�Ja�Jd�Jb�Jc Gp G~ G G�Je�Jf G G G G š�Jh�Ji�Jx�Jj�Jv š�Jk�Jl š�Jm�Jp�Jn š š�Jo š �Jq�Jt�Jr�Js š š �Ju š + �Jw š š š�Jy š�Jz�J{ š š (�J}�K7�J~�K�J�J�J�J�J š G š š�J�J�J�J�J�J�J�J�J š : š�J�J š > š A�J�J�J�J A š  š š�J  š�J�J�J�J š�J > š š š�J š �J�J�J�J�J�J�J�J�J 8�J 8 8�J�J 8 8�J 8�J 8�J 8 F 8�J�J 8 F 8�J 8 F 8�J�J�J 8�J 8�J 8 8 �J�J�J�J�J 8�J 8 8 G�J 8�J 8�J 8�J 8�J 8�J 8 8�J 8�J 8 8�J�J 8 8�J F 8�J�J�J�J 8�J�J�J 8�J 8�J�J 8�J 8 8�J 8 F 8�J 8 G�J�J�J�J�J�J�J 8�J 8�J 8 8�J F 8�J 8�J 8�J 8�J�J F 8 8 F�J 8 F 8�J�J�J 8 ٍ 8�J�J 8�J 8�J�J 8 8�J F 8 B�J�J�J 8�J 8�J F 8�J 8�J 8 8 F�J 8�J�K�J�J�J 8 �J 8�J 8�J�J 8 8�J�J 8�J�J 8�J 8 8�J 8�J 8�J 8�K� 8 8�K�K 8 F �K�K�K 8�K�K 8�K�K 8�K 8 8 F�K �K 8�K 8�K F 8 8�K�K 8 8 F�K�K 8 8�K 8�K�K 8�K 8 F 8�K š�K�K)�K�K š�K�K š š�K š�K š �K!�K% š�K" š�K# š�K$ š�K& š�K' š�K( š š�K*�K3�K+�K/�K,�K- š �K. š š  š�K0�K1 š�K2 š š �K4 š š�K5�K6 š š�K8�KB š�K9�K: š�K; š�K< �K= �K>�K@ �K? š �KA š�KC�KE�KD š š �KF š�KG�K\�KH�KR�KI�KO�KJ�KM�KK�KL : : �KN : : �KP�KQ : �KS�KX�KT�KW�KU�KV : : : �KY�KZ�K[ : : š�K]�K^ š�K_ š š�K` š�Ka š�Kc�K š�Kd š�Ke š�Kf š�Kg�Kh�K�Ki�Kw�Kj š�Kk�Kq�Kl�Kn š�Km c š�Ko�Kp š H H >�Kr�Ku�Ks�Kt H$ W H3 š š�Kv š�Kx�K�Ky�K|�Kz š š�K{ š š�K}�K~�K k š š c�K�K�K š š�K š�K�K š�K c š�K š š�K�K�K�K�K�K�K�K š�K c š�K > š�K�K�K š š�K š c š�K�K�K�K�K š š š�K c š�K š�K š š �K�K�K�K�K�K�K š š c�K š š�K�K�K š H š š�K > š�K�K�K�K �K c�K š š š�K�K š š c�K�L�K�K�K�K �K�K š �K�K�K�K�K�K�K�K > , š�K š : >�K�K > @ �K�K�K�K A�K > š�K�K š @ š �K�K�K ( @ š :�K�K�K�K�K š š�K�K :�K�K�K�K > : : š š : š�K š �K�K�K�K�K š�K�K�K B�K B B š�K�K�K B š B B š�K š�K�K�K�K�K�K š š �K š š�K�K�K š š �K š 8�K�K �K�K š š�K š �K š š �K�L�K š�K�LZ�K�LB�K�L!�L��L�L 8�L�L �L�L 8�L�L 8 8�L F 8�L 8�L 8 8�L 8�L F 8�L �L�L 8 8�L 8�L F 8�L 8�L 8�L 8 8 F�L 8�L 8 8�L�L�L�L 8�L 8 8�L 8 HC�L 8�L 8 8�L 8 F�L"�L4�L#�L$ 8 F�L%�L+ 8�L&�L' 8�L( 8 8�L) 8�L* 8 HS�L, 8�L- 8 8�L.�L/ 8 8�L0 8�L1�L2 8 8�L3 8 Ha�L5�L@�L6�L;�L7 8�L8 8�L9 8 8�L: F 8�L< 8�L= 8 8�L>�L? 8 8 F 8�LA 8 �LC�LR�LD�LK 8�LE 8�LF 8�LG�LH 8 8�LI�LJ 8 8 F�LL 8�LM 8�LN 8�LO 8�LP 8 8�LQ F 8�LS�LW�LT 8 8�LU�LV 8 8 F�LX 8 8�LY 8�L[�L|�L\�Lf�L]�L` 8�L^�L_ 8 8 8�La�Lb�Lc 8�Ld 8�Le 8 8 �Lg�Lt�Lh�Ln 8�Li�Lj 8 8�Lk�Ll 8�Lm 8 8 F�Lo 8 8�Lp 8�Lq�Lr 8�Ls 8 8 F 8�Lu 8�Lv 8�Lw�Lx �Ly �Lz�L{ F�L}�L�L~�L�L�L�L�L 8 8 8�L�L 8�L�L�L 8�L 8 F 8 8�L 8�L F 8�L�L 8�L�L�L�L 8 8�L 8�L 8 F 8�L F 8�L�L�L�L�L 8�L F�L 8 8 F�L�L 8 F 8 F 8�L�L 8�L 8�L 8 8 F�L 8�L�L�L 8�L 8 8�L�L 8 8�L 8�L F 8 8�L�L 8�L�L �L�L�L 8 8�L 8 �L �L�L 8 �L�L�L�L š�L�L š > š š�L�L�L�L š�L š�L š š �L�L�L�L�L š  š š �L�L�L�L š @ š�L�L , : >�L š�L ? š�L�L�L š�L�L�L�L š�L š�L�L�L š�L�L�L�L š ƨ�L�L ƨ š š ƨ�L�L�L�L ł š š 4N�L�L ƨ š š ƨ�L š�L 8 �L 8 š�L š�L š�L š�L š�L�M:�L�M�L�M �L�M��L 8�L�L 8�L�L 8 8�L�L 8�L 8 8 F 8�L�L 8�L 8 8�L 8 F�M�M 8�M 8�M�M 8�M 8 8�M 8 F�M 8�M 8 8�M 8�M �M 8 8 F 8�M�M�M�M 8 8 8�M 8�M 8�M F 8�M�M*�M�M#�M�M�M 8 8 �M�M �M 8 8�M 8�M�M 8�M! 8 8�M" F 8 8�M$ 8�M%�M& 8�M' 8�M( 8�M) 8 8 F�M+�M0�M,�M. 8�M- 8 8�M/ F 8�M1 8�M2�M3 8 8�M4 8�M5�M6 8�M7�M9 8�M8 8 F 8 F�M;�Mh�M<�MY�M=�MO�M>�MH�M? 8�M@�MD 8�MA 8�MB 8�MC 8 F 8�ME�MF 8 8�MG F 8�MI 8�MJ 8�MK 8�ML 8�MM�MN F 8 F 8�MP�MR�MQ 8 8 F�MS�MT 8 �MU�MV 8 8�MW 8�MX F 8�MZ 8 8�M[�M\�Mc�M] 8 8�M^�M_ 8�M`�Mb 8�Ma 8 F 8 F 8�Md 8�Me�Mf 8�Mg 8 8 F�Mi�M�Mj�Mp�Mk�Mn�Ml�Mm 8 8 �Mo 8 8�Mq�M~�Mr�My Hp�Ms�Mt 8�Mu 8�Mv 8�Mw 8�Mx 8 Hp 8�Mz �M{ 8�M| 8�M} 8 Hp 8�M�M�M�M�M 8�M�M�M 8�M �M�M 8 8 8�M 8�M 8�M 8�M 8�M 8 8 F�M�M 8�M�M�M 8 �M �M 8�M 8�M 8 8�M�P�M�O�M�N�M�N(�M�M�M�M š�M š�M�M š�M š�M š�M š�M š š�M š�M�M š š�M š�M š�M�M š š�M�M š�M š�M š š�M�M š 5 š�M�M�M�M š�M �M�M š š�M�M š�M š š �M š�M�M š�M�M B š�M š�M š �M š�M š B š�M�M�M�M�M�M�M�M �M�M E] š�M š š�M š�M š �M�M�M�M�M š �M B š �M�M š H š�M š �M�M�M�M š�M š �M�M �M�M š š�M �M�M�M�M �M š š E]�M�M š E]�M š E]�M š�M š š �M�N�M�N �M�M �M�M�M š �M�M š�M š š š�M š�M�M š š�N� š �N�N�N�N š š�N�N�N š š �N š�N š š�N �N š�N š š E�N�N!�N�N š�N�N�N�N š š�N š �N š�N š š�N�N �N š�N�N š�N�N š š �N š š š�N"�N%�N# š š�N$ š�N& š š�N' š�N)�N�N*�Ny�N+�NX�N,�N7�N-�N4�N. š š�N/ š�N0 š�N1�N2�N3 š š�N5�N6  ƨ �N8�NE�N9�N? š�N:�N;�N=�N< š š�N> E]�N@�NB �NA B�NC B�ND E] š�NF�NJ�NG š�NH š�NI š �NK�NV�NL š �NM�NN�NO š š�NP�NQ š�NR�NT š�NS š B�NU š š š�NW š�NY�N_�NZ�N] š�N[�N\ š š š�N^ š�N`�Nr�Na š�Nb�Nm�Nc š�Nd H H�Ne�Nf�Nh H�Ng H H�Ni�Nj H H�Nk H�Nl H H H�Nn š�No�Np š š�Nq š�Ns š�Nt�Nu š �Nv �Nw �Nx š š E]�Nz š š�N{�N| š š�N} š�N~ š�N š B�N�N�N�N š�N �N�N�N�N š š�N�N �N š š �N�N�N š�N š H š š�N�N š�N�N�N �N�N š š�N š š�N š š�N š�N š�N�N�N�N�N�N�N�N�N�N š š �N�N š�N š E] š š�N�N�N�N�N�N š š š �N š�N�N�N H š �N š�N�N�N�N H š š�N�N �N�N�N �N�N�N š š�N š�N š š š š�N š�N�N š�N š�N š š�N š š�N�N�N�N�N�N�N �N �N š H š�N š�N š�N š�N š�N š �N š�N �N�N�N �N �N�N �N �N �N �N �N �N �N�N �N�N �N �N �N �N �N �N�N H �N�N �N�N �N �N�N �N �N�N �N�N �N �N�N �N�O� �O�O �O �O š�O�O�P�O�Oj�O �O=�O �O �O �O P�O �O�O�O�O�O�O�O �O�O ~ P  = CN�O�O%�O�O!�O�O  �O �O �O�O �O �O"�O#  �O$ C] �O&�O+�O'�O*�O(�O) Cy  �O,�O; �O-�O. �O/�O: H�O0�O1 I �O2 I �O3 I �O4 I I �O5�O6�O8 I �O7 I H H�O9 H I I I)�O<  P �O>�OI�O? �O@ =�OA�OB  I7�OC�OD�OF �OE �OG�OH  = �OJ �OK�O[ �OL�OM �ON �OO�OZ�OP�OT�OQ Cy�OR�OS  = �OU�OV �OW �OX�OY = �O\�O] t�O^�Of �O_�O`�Ob�Oa = = �Oc�Od�Oe Cy C] �Og �Oh  =�Oi CN �Ok�Ol P �Om�O�On�O�Oo�O�Op�O�Oq �Or�O}�Os�Ov�Ot �Ou IF�Ow �Ox�Oz�Oy <u �O{�O|  C] �O~ = �O�O �O �O�O = �O�O�O �O �O �O�O�O�O�O�O = d �O�O �O�O�O IU IU  �O �O t �O�O š š  �O�O�O�O �O  �O �O�O �O�O =�O = �O�O �O�O Ic�O�O  �O�O�O �O = �O �O�O�O �O�O�O 6�O�O 6 �O�O ~ �O <u�O�O�O�O�O Cy�O I7 =�O <u�O �O�O =�O  �O = =�O�O = Ir =�O�O �O�O �O�O �O �O�O I�O I�O I�O I I =�O�P�O�O�O�O�O�O�O  �O�O�O�O Cy�O = Cy�O�O�O = �O  �O �O �O �O =�O �O�O �O I �O�O�O �O �O �O�O �O  �O�O�O�O�O =  �O I �O �O �P� �P�P P�P �P  �P �P  I�P�P<�P �P�P �P �P  �P �P�P�P�P�P = Cy�P I �P�P�P�P <u  = ~ = �P�P&�P �P�P$�P�P �P D�P�P I �P! �P"�P#  I �P% =�P'�P-�P( �P) �P*�P+ Cy �P, = t <u I�P.�P/�P3 �P0�P1�P2 I  Cy�P4�P9�P5�P8 d�P6�P7 # J �P:�P;  CN  CN�P=�Px�P>�Pq�P? �P@�Po�PA�PZ�PB�PJ �PC�PD�PG�PE�PF C?�PH�PI " " �PK�PX�PL�PN J�PM J J�PO J�PP J J�PQ�PR J�PS J�PT J J�PU J�PV�PW J J J�PY J �P[�P_�P\ �P] �P^ C? �P`�Pl �Pa�Pb�Pc J �Pd �Pe �Pf �Pg �Ph �Pi �Pj �Pk J�Pm �Pn �Pp = d Cy �Pr �Ps�Pt ~�Pu =�Pv�Pw J(  �Py�P�Pz�P{  �P| �P}�P �P~ =�P d �P �P =�P = �P�P�P�P�P�P�P �P �P t�P�P�P�P =�P ~�P Cy�P CN t�P�P�P �P �P = �P Cy�P �P �P�P t ~�P�P CN �P  �P�P�P�P  �P �P�P�P <u�P = t�P�P  C]  š�P š�P�P�Sh�P �P�R�P�R�P�Q4�P�P Ʒ�P�P�P Ʒ `�P�P�P�P�P ˘�P�P ƨ  ï �P�P�P�P i ە  �P�P�P s�P�P  Z �P�P�P   �P  �P�P �P�Q�P Ʒ�P�Q�P�P�P�P�P�P�P�P �P  �P �P�P�P�P % e�P�P�P �P �P  �P�P �P  �P�P    �P�P�P�P�P�P K �P K �P  K�P %�P�P�P�P S K*�P ;�P�P % % ,�P�Q �P�Q�P�Q�P�Q� S �Q�Q �Q t % �Q�Q �Q�Q % % �Q % �Q �Q�Q �Q�Q , %�Q�Q K9 �Q�Q�Q�Q KH KW Kf�Q �Q �Q ƨ Ʒ �Q�Q,�Q�Q(�Q�Q �Q  �Q!�Q" ƨ Ʒ �Q#�Q$�Q& Ku�Q% Ku < <�Q' < Ku�Q) ` `�Q* `�Q+ ` �Q-�Q1�Q.�Q/ ` s�Q0 ە �Q2 ï�Q3 r Z�Q5�Q\�Q6�Q7 ï ս�Q8�QV�Q9 �Q: ï�Q;�QT�Q<�QB�Q= ï�Q>�Q@ ï�Q? ï ̀�QA ï ï 4 ܹ�QC ܹ�QD ܹ�QE ܹ�QF ܹ�QG�QH�QN�QI ܹ�QJ ܹ�QK ܹ ܹ�QL ܹ�QM K ܹ ܹ�QO ܹ�QP�QQ ܹ ܹ�QR�QS ܹ K ܹ �QU s r�QW Ʒ�QX ە �QY�QZ�Q[ s š 6b �Q]�Q�Q^�Qm�Q_ �Q`�Qc�Qa �Qb ە s�Qd �Qe�Qk�Qf�Qi 7�Qg 7�Qh 7 K�Qj K K Z Œ�Ql  !�Qn�Q�Qo�Qs�Qp ï�Qq�Qr Œ ï �Qt �Qu �Qv�Q�Qw�Q�Qx �Qy�Qz �Q{ �Q| �Q} �Q~ �Q �Q K�Q�Q K K �Q�Q�Q �Q�Q �Q �Q �Q �Q �Q �Q K K �Q x�Q�Q�Q�Q ï s ï�Q�Q �Q �Q �Q �Q�Q �Q �Q �Q �Q�Q V ï�Q �Q�Q�Q 6D K K�Q�R�Q�Q�Q�Q�Q�Q�Q�Q Z�Q�Q ƙ�Q�Q ƙ K ƙ �Q�Q�Q ƙ�Q ƙ ƙ K�Q�Q�Q L L L �Q�Q s �Q�Q�Q�Q�Q �Q ƙ  ƙ�Q  �Q�Q�Q�Q�Q 7  ƙ�Q ƙ ƨ ƙ ƙ �Q�Q�Q `�Q�Q�Q�Q�Q ƨ �Q�Q L* L8 L �Q LG�Q�Q LV Lf Lt L�Q `�Q ƙ �Q ƙ�Q L�Q�Q�Q�Q�Q `�Q s s�Q�Q s s�Q�Q s�Q s s�Q�Q s�Q s s�Q s�Q s L�Q�Q�Q z�Q ս ƙ�Q K ƙ�Q s �Q 4�Q 4 L�Q�Q�Q�Q ƙ z�Q�Q ƙ �Q ƨ ƙ�Q�R� ƙ�Q�Q�Q�Q  ƨ s ƙ�Q L ƙ z�R �R�R�R ƙ ƨ š L�R �R�R �R Œ�R �R r ï Z�R �R�R ï s�R�R s ` �R�R) �R �R�R ï�R k�R�R�R�R�R�R �R 7 �R :y ï �R�R"�R �R!  L�R#�R% Ʒ�R$ �R&  z�R'�R( z L z�R*�R�R+ s�R,�R]�R-�RC�R.�R5�R/�R2�R0�R1  G ï�R3�R4  >�R6�R@�R7�R?�R8 Œ�R9 Œ Œ�R:�R; Œ Œ�R< Œ�R= Œ�R> M ~ 3|�RA�RB 7 �RD�RS�RE�RK�RF�RJ�RG s�RH �RI M �RL�RM  �RN G�RO ˘ ˘�RP�RQ ˘�RR ˘ ˘ M&�RT�RW�RU�RV `  �RX Z�RY `�RZ �R[�R\ V �R^�Rp�R_�Re�R`�Rb �Ra i ï�Rc�Rd s �Rf�Rk�Rg�Rh Œ V �Ri�Rj ` = `�Rl�Rm  `�Rn �Ro K �Rq�R{�Rr�Rx�Rs�Rw `�Rt�Ru ű�Rv ű ű M4 �Ry�Rz ƨ �R|�R�R}�R~ š ï y�R�R Mv�R�R ` ï Ʒ�R�R�R�R�R�R�R�R�R ï�R ï�R ï�R ï�R ï ï�R ï�R ï ï�R�R r�R�R �R �R �R  �R �R�R  �R�R  �R�R  �R M  ï�R�R ï�R ï ï�R ï�R ï �R ï�R�R Ñ Z r�R�R�R�R�R ü�R�R   s�R �R�R ï r i �R�R 7�R�R 3m Œ Ʒ�R r ï�R ̀�R�Sf Z�R�R�S0�R�S�R�R�R�R�R�R�R ï�R�R ` ï  N ï�R�R ï ï �R�R�R�R�R ï�R�R�R�R�R�R�R ï�R ï ï�R�R ï�R ï�R ï ï�R ï�R ï ï ï�R ï �R ï ï�R ï �R�R ï�R �R ï �R�R�R ï ï�R�R�R�R�R�R�R ƨ�R�R N Dz N Dz ï ƨ�R�R ï ł N�R�R�R�R N �R�R ü �R ï ï�R 0 N�R�S�R�S�R�R ï�R x Ʒ ï�S�  ï�S�S �S Ʒ �S�S ï   ï�S�S�S �S �S �S  Ʒ Ʒ ï�S �S ï Ʒ Ʒ ï�S�S�S�S ï r Ʒ �S ï ï Ʒ�S�S%�S�S�S�S Ʒ�S ï �S�S  ï �S ï ƙ�S �S �S!�S#�S" ܌ Ʒ  �S$ ܜ  �S&�S'�S/ �S( �S)�S*�S,�S+  Ʒ �S- �S. Z Z  ï �S1�SR�S2�SQ�S3�SD�S4�S:�S5�S7�S6 s  ï�S8 ï�S9  N �S;�S< :y ï�S= s �S>�S?�SB�S@�SA N O O 9�SC O) O8 O)�SE�SN�SF�SG à s�SH ï�SI�SJ�SK ï 3�SL�SM OG ï 6�SO�SP ƨ Z Œ ï y V�SS�SY�ST G�SU G G�SV�SW G G�SX G OU�SZ�Sa�S[�S\ `�S]�S`�S^�S_ Ñ r ï ï�Sb�Sc �Sd�Se Œ ƙ �Sg ` Ʒ�Si�U`�Sj�T|�Sk�T �Sl�T �Sm�S�Sn�S�So�Su�Sp�Sr�Sq  Ʒ ï�Ss�St ï  ï �Sv�S�Sw�Sz ï�Sx Dz�Sy Dz ּ �S{ ï�S| y�S}�S~�S ï�S ï ï s�S�S ï  ï �S�S�S�S ï�S ï�S Ʒ ï�S�S ï�S�S ` ˘ r�S�S�S�S ï 3| Ʒ �S ƙ ï�S�S�S�S�S�S�S�S ü ƙ�S�S �S ܜ �S�S �S  ܌ ܌�S ܌�S ܌�S�S ܌ ܌�S ܌�S�S ܌�S ܌�S ܌  ܌�S Ʒ  ƙ�S  Od�S ï�S ï�S�S�S�S  ï�S�S�S Ʒ ƙ ï ï�S ˘�S s ï�S�S�S�S�S�S�S�S�S�S�S r �S  �S�S�S�S 6 š s �S�S s �S ł Or Œ�S ï�S ̀ Ʒ�S ï�S�S ï O ï ï�S�S ï�S ï ƙ �S�S�S�S�S�S�S�S�S r�S Ʒ�S Ʒ�S Ʒ�S Ʒ Ʒ�S�S Ʒ Ʒ�S�S Ʒ Ʒ�S�S Ʒ O Ʒ Ʒ ƙ ï �S�S�S�S ï  à Ʒ ï �S�S ï�S�S ƙ ï ï�S ï�S�S ï O ï�S�S�S�S�S�S ï�S ï Ʒ �S�S  O  ï�S�S ï�S�S ï   r�S�T�T��T�T ï�T Ʒ ƙ ï ï �T�T �T Ʒ�T  ï�T ï Ʒ�T N  ƨ�T �Tx�T�T�T�T �T�T ƨ�T ƨ ƨ�T ƨ�T�T ƨ ƨ�T�T ƨ ƨ O  V�T�Tw�T �T�TF�T�T<�T�T7�T�T%�T �T!�T#�T" r �T$ =�T&�T2 r�T'�T(�T1�T) �T* =�T+ =�T, = =�T- =�T. =�T/�T0 = = ( =�T3�T5�T4 = =�T6 r �T8�T9 =�T: = �T; = �T=�T>�TE�T? �T@�TC�TA�TB r r �TD O O r r �TG�T^�TH�TR�TI�TN�TJ�TM�TK�TL r O = (�TO r O�TP�TQ = =�TS�TZ �TT�TU�TX�TV�TW = = �TY =�T[ r r�T\�T] r = r�T_�To�T`�Tf�Ta�Tc O�Tb O�Td�Te r =�Tg�Th O r�Ti�Tl�Tj�Tk ߰ = O�Tm�Tn O = r r�Tp�Tq�Tu r�Tr�Ts�Tt = r �Tv = O �Ty s�Tz�T{ z L à ƨ�T}�T�T~�T�T�T�T ï �T�T �T �T �T  �T �T�T �T �T  �T�T  �T   ҉�T�T�T�T à�T�T r�T�T ̀�T�T�T Z y  ƨ�T�T�T  s �T L�T�T�T�T�T�T�T�T�T�T Z Œ�T ` ï s ˘�T�T�T�T �T �T O ï ց�T�T �T�T�T L ï r ï ׭ ׭�T�T�T�T ̀�T�T�T s   :y�T�T�T�T ï  š ` G �T Ʒ�T ï�T�T �T�T �T �T �T �T R o�T�T�T�T�T�T ï   �T Ʒ Z�T Ʒ Z ï�T�T �T Z Z�T�T�T�T�T Ʒ�T�T ƨ �T ƨ�T�T�T�T�T�T š r�T�T  s z ï�T�T�T t ï s ï Ʒ�T s�T�U�T�U��T�T  `�T�T�T�T ï ï�T�T�T�T�T Dz ! ּ ! �T �T�T�T�T�T ï�T 3 ï 3 6 ï�T ï�T  6 ï�U �U�U�U ï�U s y i�U�U s �U �U8�U �U�U �U ƨ�U �U �U�U s�U�U�U P�U ƙ P ƙ�U ƙ�U�U ƙ P P ƙ ï�U�U ï�U Ʒ y�U�U ï z g �U�U! ï�U �U V r Ʒ�U"�U#�U2�U$�U'�U% �U& �U( �U)�U* �U+ H�U, H H�U- H�U.�U/ H H�U0�U1 H H�U3�U6 �U4 �U5 �U7 �U9  P�U:�U;�U^�U<�UL�U=�UI�U>�UG�U?�UC j�U@�UA�UB 5 P$ P3 PB �UD j�UE�UF PP P`�UH ց ł �UJ�UK j �UM�UN �UO�UP�UZ >�UQ�UR�UW�US�UU Pp�UT P P�UV P P P�UX�UY P P P P >�U[�U\ > P�U] P >�U_ ï s�Ua �Ub�V �Uc�U�Ud s�Ue s�Uf�U�Ug�Ux �Uh�Ui�Uv r�Uj r�Uk r�Ul r�Um r�Un r�Uo r�Up r�Uq�Ur r�Us r�Ut r r�Uu r�Uw  ï ï�Uy�Uz�U| Œ�U{ ƨ Ʒ�U}�U~ Œ ï �U�U�U�U�U�U s�U�U�U 7 Q Q Z s�U�U ս �U�U Ʒ  ` ï�U�U�U�U �U `�U�U `�U `�U `�U `�U ` `�U�U ` `�U�U ` `�U ` 7�U�U 7 i�U�U�U�U Œ �U �U �U Q&�U�U i Z Œ�U�U�U�U�U�U ƨ�U �U�U�U ï�U  ï ï�U ï�U �U  �U�U �U �U  �U �U�U �U �U �U �U  �U�U    8�U�U�U�U�U�U�U�U ï�U ï�U�U Q5�U�U�U�U QC QQ Q^ �U Qk ! Qy�U�U�U�U�U y�U Œ�U�U�U�U�U Œ Œ�U Œ M�U Œ Œ�U M Œ�U Œ�U Œ Œ�U Œ M Z  ï �U Q�U ï �U�U �U �U   Q �U �U�U �U�U�U �U �U �U�U �U �U�U�U �U�U �U �U �U  ƨ�U�U ï�V��V š�V�V�V Z�V  �V š �V s ï�V ƨ �V �V�V �V_�V �V/�V �V$�V�V�V Œ Œ�V�V Œ�V Œ�V Œ Œ�V Œ�V Œ�V Œ�V Œ�V Œ�V Œ�V�V Œ Œ�V \ Œ�V Œ�V Œ Œ�V Œ�V! Œ�V" Œ�V# \ Œ�V%�V) Œ�V&�V'�V( 4 �V* `�V+�V-�V, ` š ` �V. Œ �V0�VY�V1�VE�V2 ƨ�V3 ƨ�V4�VC Z�V5�V6 G Q�V7�V8�V=�V9 Q Q�V:�V; Q Q�V< Q Q�V> Q�V? Q�V@ Q Q�VA�VB Q Q Q�VD d �VF�VU�VG�VO�VH�VL �VI�VJ š�VK š ï š�VM ƨ �VN ł �VP à �VQ�VR�VT�VS 4 ï ü 4 ̀ ï�VV�VW�VX Œ ï�VZ�V[ Œ x�V\�V]�V^ y �V`�Va Ñ 8�Vb�Vc�V|�Vd�Vz�Ve�Vp�Vf�Vj�Vg�Vi�Vh ƨ ` �Vk�Vn�Vl�Vm ł Ʒ Ʒ �Vo Ʒ �Vq�Vt�Vr �Vs ` Ʒ�Vu�Vx�Vv�Vw ƨ s ` �Vy j�V{ `�V}�V�V~ �V�V ł�V ` ł�V�V�V ł ` `�V�V�V Ñ�V�V�V�V�V L�V�V �V�V Z Z�V�V Z�V Z�V Z�V Z�V Z Z F�V�V Œ  d�V�V�V�V�V�V�V Œ s  s ï�V ï V�V�V s Œ V�V�V�V�V z�V �V �V�V�V�V �V �V �V �V �V < �V�V�V�V s ` �V�V 8 Z d�V�W�V�W�V�V�V�V�V�V�V�V�V�V�V�V�V j �V�V j ;�V ;�V j Q Q ł�V �V ł ;�V�V L�V L�V L Q �V�V�V�V�V�V�V 8 ׁ 4 Q�V�V�V�V R ց�V ց�V ց�V ց�V ց Q Q  ł j�V L �V j�V j 3_�V�V�V �V L�V�V�V ï�V�V ƙ �V ï�V�V�V�V Ʒ Ʒ V�V �V�V à�V à�V à�V à�V à�V à�V à R à �V �V�V �V �W� �W �W �W�W �W �W d�W �W�W �W�W �W�W �W�W �W r�W r�W R r Ʒ �W�W ï :y�W R. �W �W R. �W �W L R= �W�W d�W Z ƨ�W�W �W& �W! �W" V�W# V�W$ <�W% Z �W'�W( ̀ �W) s  G�W+�=�W,�m�W-�_B�W.�X�W/ š�W0 š�W1�XI�W2�WZ š�W3�W4�WG š�W5 š�W6�W7 š š�W8 š�W9�W: š�W; š š�W<�W= š�W> š š�W?�W@ š š�WA š�WB�WC š š�WD�WE š�WF š š 5a�WH š�WI š�WJ š�WK š�WL š�WM š š�WN š�WO š�WP š�WQ š�WR š�WS�WT š�WU š�WV š š�WW�WX š š�WY š�W[�W�W\�Wo š�W] š�W^ š�W_ š�W`�Wa š š�Wb�Wc š š�Wd š�We š�Wf�Wg š š�Wh�Wi š�Wj š�Wk š�Wl š š�Wm�Wn š š �Wp š š�Wq�Wr š�Ws�W�Wt š�Wu š�Wv�W�Ww �Wx�W �Wy�Wz �W{  �W| �W}�W~  ( �W �W  �W�W �W �W �W �W  �W B �W�W �W �W �W �W�W �W �W ? �W�W�W �W �W�W �W �W �W �W �W�W�W�W�W�W�W 5a 5 5 5R�W�W 5p c < �W �W k �W š š�W š�W�W�W�W š�W�W š�W�W�W š�W�W š š�W�W š š A�W š�W š š�W š�W š�W�W š š š�W š�W�W š�W�W š�W š�W š�W�W š š�W š�W š�W š š�W š�W š š�W�W š�W š š�W : š š�W�W�W š�W�W�W š�W š�W ? �W�W�W š�W >�W š�W š�W š�W š�W š š�W š�W�W š š�W š�W š�W š�W š�W š +�W š�W�W š š�W�W š š�W�W š š�W�W š�W š�W š�W š�W š š �W š�W š�W š�W�X' š�W�W�X�W�X�W �W�X� �X �X �X�X �X �X �X D �X �X �X �X �X�X �X �X �X �X�X�X D D �X �X �X �X�X �X � š�X�X š�X š�X š š�X š�X!�X" š�X# š š�X$ š�X%�X& š š�X( �X)�X6�X* š�X+�X0�X, š�X- š š�X. š�X/ š�X1 š š�X2 š�X3 š�X4 š�X5 š�X7�XB š�X8 š�X9 š�X:�X; š�X< š�X= š�X> š�X? š š�X@�XA š š�XC š š�XD š�XE�XF š�XG š�XH š š š�XJ�XK�X�XL�Xc š�XM�XN�XZ š�XO š�XP�XQ š�XR š�XS š�XT�XW š�XU š�XV š š�XX�XY š š �X[ š š�X\�X] š�X^ š�X_ š�X` š š�Xa š�Xb š �Xd š š�Xe�Xf š�Xg�X�Xh�X�Xi�Xy�Xj�Xr�Xk�Xn�Xl�Xm  š š �Xo�Xp  š š�Xq  (�Xs�Xv �Xt š�Xu š  š�Xw š�Xx š �Xz�X~�X{ š �X|�X} š  š�X š�X�X �X ( š š �X�X�X B š�X�X�X c š c š�X�X�X�X�X�X�X�X š A�X š A š�X š A�X A š�X�X š 5 š <�X�X�X�X�X�X�X š�X�X�X�X < > > š š�X A š�X�X š�X�X k 5 k š�X�X š 5 š�X�X�X š š�X�X�X š 5 > š�X�X š�X š�X  š š�X š�X š (�X�X (�X�X š�X�X�X š ( š š�X ? (�X B�X š�X š ?�X ? š�X š�X š�X�X�X š š�X�X š�X k�X �X �X �X �X �X �X �X�X �X �X�X�X š š�X š �X�X š�X š �X š š >�X�]�X�]} š�X�X�Y�X�X�X�X�X š�X š�X�X�X ,�X ,�X š�X š�X š�X š ,�X , š�X A A�X A�X�X A�X A�X A A�X A š ?�X�Y��X�X A š�X�X :�X : š š�X �X �Y�Y �Y ( 5�Y �Y �Y �Y�Y �Y �Y  �Y  c�Y �Y > � š�Y�Y�Y š �Y �Y�Y �Y �Y �Y  �Y�]N�Y�].�Y�Y�Y�Y�Y : š >�Y�Y_ š�Y�Y �YI�Y!�Y7 š�Y" š�Y# A�Y$�Y%�Y. >�Y&�Y' > >�Y( >�Y)�Y* >�Y+ >�Y, >�Y- > D >�Y/ >�Y0 > >�Y1 >�Y2�Y3 >�Y4 > >�Y5�Y6 > > D�Y8�YF�Y9�Y: : ,�Y;�YE :�Y<�Y= :�Y> : :�Y?�Y@ : :�YA�YB :�YC :�YD : D : : ,�YG�YH c c �YJ�YP�YK�YM�YL � RM � R\�YN�YO � � RM�YQ�YX�YR�YU�YS�YT Rk > @ Ry�YV�YW D D D�YY�Y\�YZ�Y[ Rk > @ Ry�Y]�Y^ D D D�Y`�Y�Ya�Yv�Yb�Yj�Yc�Ye �Yd A�Yf�Yg R �Yh�Yi A R �Yk�Ys�Yl�Ym R 5 A�Yn š�Yo š�Yp�Yq š�Yr š 5 š ʗ�Yt H�Yu 5 H�Yw�Y�Yx�Y}�Yy�Y{�Yz ( ? 5p�Y| ( ? 5p �Y~ š�Y�Y š š�Y�Y š š�Y�Y š š�Y�Y�Y š�Y š�Y š +�Y š�Y š + š�Y�Y�Y�Y B{ > > B�Y�Y�Y�Y�Y š š�Y�Y š š�Y�Y š š�Y�Y�Y š�Y š�Y š �Y š�Y š  š�Y >�Y B{ B{�Y B{�Y B{�Y�Y B{�Y B{ B{�Y + B{�Y�Y > B š�Y B{ >�Y�Y�Y�Y�Y�Y�Y�Y�Y H @ �Y�Y R A A A�Y�Y�Y  5R EM�Y�Y  > B& 5�Y�Y�Y�Y�Y�Y k R 4 R�Y�Y B A R 5�Y�Y�Y�Y 5a  D R�Y�Y R < < A�Y�Y�Y�Y�Y�Y�Y�Y > B S��Y H @ �Y�Y�Y�Y R A A A�Y  5R EM�Y�Y�Y�Y�Y�Y  > B& 5�Y�Y k R 4 R�Y�Y�Y�Y B A R 5�Y�Y 5a  D R�Y�Z2�Y�Z'�Y ��Y�Y�Y�Y�Y�Y�Y  S�Y�Y  + B�Y�Y�Y�Y S @' B�Y  S�Y�Y �Y �Y�Y + B S @'�Y�Z�Y�Z š�Z� š�Z�Z š š�Z�Z š�Z�Z š�Z�Z š�Z š š�Z š�Z > š�Z š š�Z �Z š š�Z š�Z > š�Z š�Z �Z �Z š �Z�Z# š�Z�Z š�Z š�Z : :�Z�Z :�Z : :�Z :�Z �Z! :�Z" : : D�Z$ š R\�Z%�Z& š � R\�Z( >�Z) >�Z* š�Z+�Z/�Z, š�Z- š >�Z. > š�Z0�Z1 š > > š š�Z3�Z4�Z�Z5�Z�Z6�Z�Z7 š�Z8�Z�Z9�Zh Rk�Z:�Z; >�Z<�Z[�Z= >�Z>�ZM�Z?�ZH�Z@�ZE�ZA�ZC >�ZB >�ZD > > >�ZF >�ZG > �ZI�ZJ�ZK > >�ZL >�ZN�ZW�ZO�ZT�ZP�ZR�ZQ > > >�ZS > >�ZU�ZV > �ZX >�ZY >�ZZ > >�Z\�Zb�Z] >�Z^ >�Z_�Z` >�Za > �Zc �Zd �Ze �Zf �Zg >�Zi Ry�Zj @�Zk�Zq�Zl @�Zm @�Zn �Zo @�Zp @ @ �Zr�Zz�Zs @�Zt�Zu�Zx @�Zv�Zw @ @ �Zy @ �Z{ �Z| �Z} �Z~ �Z @�Z�Z D D D�Z�Z�Z�Z�Z�Z R A 5 ʗ�Z š ʗ š�Z�Z�Z�Z c c �Z ( ? 5p�Z�Z�Z�Z�Z š š�Z š�Z š�Z�Z > B B š�Z š�Z š�Z š B š�Z�[�Z�[}�Z�[A�Z�[ <�Z�Z >�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z A�Z A @ @ �Z @ �Z A A�Z�Z�Z�Z A @ A @ �Z @ �Z A @ A�Z�Z @ �Z�Z @ A @ @ �Z @ �Z�Z @ �Z�Z A�Z A A�Z�Z A�Z A�Z�Z�Z�Z @ �Z @ A @ @ �Z @ �Z @ A�Z�Z�Z�Z�Z�Z�Z�Z�Z @ A @ @ �Z @ A�Z @ �Z @ A @ �Z�Z�Z @ �Z @ @ A @ �Z�Z�Z @ A A @ �Z�Z�Z @ �Z�Z�Z A @ A�Z @ A @ @ �Z�Z @ �Z @ @ A�Z�Z�Z�Z�Z EM�Z�Z�Z�Z�Z EM �Z A EM�Z EM A�Z�Z EM A EM EM�Z�Z �Z EM �Z�[�Z A �Z �[� �[�[ A A A�[ A�[ A�[ A�[�[�[ A EM EM A�[ �[@�[ B�[ �[(�[ R�[�[�[�[�[ R�[�[ R�[ R 5�[ R 4 R�[�[ R�[ R�[ R�[ 5 R�[ 5 R�[ R�[ R 5�[ �[%�[! 4 5�[" 5�[#�[$ 4 5 4�[& R�[' R 4 R�[)�[9�[*�[4�[+ R�[, R�[-�[/�[. R 5a R�[0�[1 R 5a�[2�[3 5a R R R R�[5�[6�[8�[7 5a R 5a 5a R�[: R�[; R�[< R R�[= R�[> R�[? R R S��[B�[D�[C H @ �[E�[F R A A�[G�[H�[k�[I�[d�[J�[Z�[K�[V�[L�[T�[M�[R�[N�[P A�[O A �[Q R R�[S A R A A�[U A �[W�[X R�[Y R R�[[�[a�[\�[] R R R�[^ R�[_ R�[` R <�[b A�[c A < A A�[e A�[f A�[g A�[h A�[i A�[j A�[l A�[m�[u�[n A�[o A�[p�[s�[q A�[r A A <�[t A A < A�[v�[w�[y�[x < A <�[z A <�[{�[| A < A�[~�[�[�[�[  5R EM�[�[ �[ >�[ >�[�[ >�[ >�[�[�[�[ >�[ >�[ < >�[ < >�[ > <�[ > <�[�[ > < > B& 5�[�[�[�[ k R 4 R�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[ B�[ B H�[�[ 5 B 5 D�[ B D B B�[�[ H�[ H B H�[�[�[ 5 H�[ H 5�[�[�[�[�[ B 5 B�[ B B 5�[ 5�[ 5 B 5�[�[�[�[�[ D 5 D D�[�[ H D H�[ B�[ B H B B�[ B�[�[�[ B�[ B�[ B�[ B H�[�[ B�[�[ H B H H�[ H�[ H B�[ B�[�[�[ B�[ B�[�[�[ B�[ B B H�[ B B H B�[�[ B�[ H B H A�[ A�[�[ A�[ A�[�[�[�[ A�[ A�[ A�[ A�[ A �[ A �[�[ A A R 5�[�\�[�\�[�[�[�[ 5a  D R�[�[ R š <�[�[�\Y�[�\?�[�\"�[�\�[�\ �[�\�\��\�\�\ A EM < A�\ A �\�\�\ EM A �\ < EM <�\ �\ <�\ <�\ A �\ A�\ A �\�\�\�\ A �\�\�\�\ A A�\ A �\�\�\�\ A A �\�\ A�\! A A�\#�\:�\$�\.�\%�\) �\&�\'�\( A A�\*�\, �\+ A �\- A A�\/�\5�\0�\2 A�\1 A �\3�\4 A A �\6�\7 A �\8�\9 A A �\;�\>�\< EM�\= EM A EM < <�\@�\A�\J�\B�\E <�\C <�\D < A <�\F�\G�\I <�\H < A A�\K�\Q�\L�\O �\M�\N A A �\P A A �\R�\X�\S�\V�\T�\U A A�\W A A�\Z�\�\[�\y�\\�\k�\]�\c�\^�\a�\_ A�\` A A�\b A A �\d�\g A�\e�\f A �\h�\j�\i A A A �\l�\q�\m A�\n A�\o�\p A A�\r�\u A�\s�\t A �\v�\x �\w A A �\z�\�\{ A�\| A�\}�\�\~�\ A A A�\ A�\�\�\�\ A A�\�\ A A �\�\ A�\�\ A A�\�\�\�\ A A�\ A A A�\�\�\�\�\ A�\�\�\ A�\ A A�\�\�\�\ A�\ A A �\�\ A A A�\ A�\�\�\ A A�\�\�\�\ > B S��\�\ �\ H @ �\�\ R A A�\�\�\�\�\�\�\�\ A 5R EM  �\ > B&�\�\�\�\ 5 k R 4�\�\ R B A R�\�\�\�\�\�\ 5 5a  D�\ < R R�\�\�\�\ > B S��\�\ �\�\�\�\�\�\�\�\�\ R�\ R�\ R�\ R š R�\ R�\ R R�\�\ R R R�\�\�\ 4 R�\�\ 4�\ 4 R 4�\ R 4�\ 4�\�\ R 4 R�\�\�\�\ R�\�\ R�\ R�\ R R R R�\�\ < R�\�\ < R <�\�\ <�\ <�\�\ B�\ B < B B�\ B�\ B�\�\�\ B R R š�\�]�]��] �]�]�] �] �] �] š �] R�] R �] �] R R�] �]�] 5 R�]�] 5�] 5 R 5�] 5 5�] 5�]�] 5 5 5�]�]"�]�] 5�]�] 5a�] 5a�] 5a 5 5a 5a�]�] D 5a�] �]! D 5a D�]#�]( D�]$ D�]%�]& R�]' R D R R�]) R�]* R�]+�],�]- R š�]/�]E�]0�]C�]1�]B�]2 : š�]3�]4�]8�]5�]7 š�]6 š >�]9�]= 5�]:�];�]< � A�]>�]@�]? š  š š�]A š ( š š�]D  š�]F š�]G š š�]H�]I š š�]J š�]K š�]L�]M š š A�]O�]T š�]P�]Q š�]R š�]S š š š�]U�]V�]y�]W š�]X �]Y�]h�]Z�]^�][�]] š�]\ š >�]_�]c 5�]`�]a�]b � A�]d�]f�]e š  š š�]g š (�]i š�]j�]v�]k�]p�]l�]n A�]m H R\ A�]o A R�]q�]t�]r�]s EM R 4 D <�]u š�]w š�]x ? : š�]z š�]{�]| š š š�]~ š�] š�] �] �]�] �]�] �]�] �] �]  �]�]  �] �]�] D D�]�] D D�] D�]�] D�] D D �] �] �] �] �] �]  �]  �]�]�]�] š�] š�] š�]�] š š�] š�]�] š�] š š�]�] š�] š�] š�] š�] š�] š š�] š�]�] š�] š�] š š�] > š�] š�] š š :�]�^ �]�] š�] š�]�] �]�] k š � š š�]�]�] �] c�] �] �] �]�] �] �] �] �] �] �] �] �]�] �] �]�] š �]�]�]�] š�] š�]�] š A�] A �]�] š�]�] š�] š š ?�]�]�]�] ? š A :�]�] �] �] �]�] �] �] �]�] �] �]�] @�]�^ š�]�]�^�] �]�] �]�] �] �] �] �] �] �^� �^ �^ �^ š�^ ? : A�^ š š�^ š�^ ?�^ : š�^ �^�^ �^y�^�^-�^�^ š�^�^ ?�^ A š�^ š :�^�^' š�^ š�^�^�^ �^ �^ �^�^ �^ �^ �^ �^! �^" �^# �^$�^% �^& �^(�^+�^)�^*   �^, š š �^.�^q�^/�^c�^0�^@ :�^1 ��^2�^3 ��^4 � ��^5 ��^6 ��^7�^8 � ��^9 ��^: ��^; ��^<�^= ��^> ��^? � š ��^A A�^B�^U�^C�^P �^D �^E �^F�^G �^H �^I �^J �^K �^L�^M �^N�^O š �^Q š š�^R�^S š�^T š š � š�^V š�^W š�^X�^Y š š�^Z š�^[ š�^\ š�^]�^^ š š�^_�^` š š�^a š�^b ? š š�^d �^e š�^f�^g�^l š�^h�^i�^k�^j š š�^m š�^n 5�^o�^p š A > š�^r�^s ( ?�^t�^v š�^u ? A�^w�^x š   ��^z�^�^{�^ š�^|�^} š�^~�^ ?�^�^ ?�^ ?�^ ?�^ ?�^ ? ?�^�^ ?�^ ?�^ ?�^ ? ?�^ ?�^�^ ? ? c ?�^�^ ? ?�^�^ ? ?�^�^ ? ?�^ ?�^ ?�^�^ ? ?�^ ?�^ ?�^�^ ? ? �^�^ š�^ :�^ �^�^ (�^�^ š > �^�^�^�^�^�^ , A�^ : 5 š š�^ > š�^ š�^�^�^ >�^�^�^�^ š�^�^�^�^ ( �^ š �^ 5 >�^�^ A�^�^�^�^�^ � �^ š A : š�^ : š š ?�^ A š :�^�_�^�^ š�^�^�^ 5�^ š A�^ š š�^�^�^ š š�^ š :�^�_�^�^ š�^ ? š�^�^�^�^�^ �^ A�^�^ A�^�^ A A�^ A�^�^ A�^ A�^ A A�^ A�^�^ A A�^ A D�^ A�^ A�^ A�^ A A�^�^ A A�^�^ A�^ A A�^�^ A A š�^�^ �^ ( š�^�^ � �^�^�^ š�^�^ A  š�^�_� š š�_ š A�_ š�_ š š�_ A š�_ š�_�_:�_ �_�_ �_ ?�_ �_ �_ �_�_ �_�_ �_ �_ �_ �_ �_ �_�_ �_ D �_ ? š >�_�_3�_�_2�_�_1�_ �_' š�_!�_"�_$�_# ( �_% š �_& 5 >�_(�_/ A�_)�_*�_-�_+�_, � �_. š A : š�_0 : š ? š �_4 š�_5 :�_6�_8�_7 š š > š�_9 š :�_;�_>�_< š�_= š � �_?�_@  š�_A �_C�ic�_D�_�_E�_d�_F�_c�_G�_R�_H �_I �_J �_K �_L �_M �_N �_O �_P �_Q I7�_S�__�_T �_U�_V  �_W�_X �_Y Cy �_Z�_[ �_\ �_] �_^ = �_` �_a �_b S/ Cy �_e �_f �_g �_h �_i I7�_j �_k�_l�_�_m�_t �_n�_o�_q�_p C] C] �_r�_s = CN �_u�_{�_v�_x�_w =  CN�_y�_z CN   V�_|�_�_}�_�_~ C]�_�_ S4 SB SP�_ S^�_ S^�_�_ S^�_ S^ S^�_�_ S^�_ S^ S^ C]�_  I �_�_ = �_�_�_�_�_�_�_�_  t ~�_�_ �_�_�_�_  �_�_   CN�_�_�_�_�_�_  �_�_ I Sl�_�_ �_�_�_ SP C] C] Sy �_�_ �_  �_   �_�ed�_�d%�_�a�_�`M�_�_�_�_�_ Œ�_�_�_�_�_�_�_ �_�_   >�_�_�_  Q Z�_�_ š�_ ï�_ ï�_ ï�_ O ï S�_�_ S S Œ�_�_ ï�_�_�_ ï�_ ï�_�_ �_ �_�_ �_�_ �_ �_ �_ ',�_ �_�_�_�_ ï�_ ƨ �_�_ �_�_�_�_ S �_ Z Z �_�_�_�_ �_ Z Z �_ z Ʒ�_ �_�`"�_�_ V�_�_ Ʒ�_ Z ï�_�`�_�`�_�_ ï ̀�_�`��_ ï�_ ï�_ ֞ ֞ ï ï�` ï�`�` ï�` ï�` ï ï�`�` ï ï�` ï�` ï�` ï�` ï�` ï�` S ï�`�`�`�`�` ï ï Z�`�`  ˘�` �`�`�`�` S L S S�` L S L�`�` �`�` r ƨ G  s�`! ï `�`# �`$�`>�`%�`+�`&  �`' �`(�`)  �`* Q �`,�`1�`- s�`. `�`/ �`0 ց�`2�`6 ց�`3 �`4�`5 `�`7�`=�`8�`;�`9�`: S �`< ` ł�`? �`@ �`A �`B �`C �`D�`E �`F�`G �`H�`I �`J �`K �`L S�`N�`�`O ï�`P�`c�`Q�`Y�`R ҉�`S�`T  ҉�`U �`V�`W d ï�`X s 3|�`Z�`[�`^ ű�`\ G�`] ̀ �`_�`` ш �`a�`b   Œ�`d�`�`e�`�`f�`�`g�`�`h�`w�`i�`l�`j �`k ï  �`m  T �`n T �`o�`p T�`q T�`r T�`s T�`t T�`u T T�`v T �`x�`~�`y�`|�`z�`{     �`}  �` ï �`  ï�`�`�`�`�`�` ï�` ï   �` T*  Z y�`�`�` �` ׭ �`�`    �`�`�`�` y�`�`  ï �`�`�`�` �`  ï�`�` ï�`�` �` �` �` �` �` �`      ï �`�`�`�` �` ï�` ï �` ï�`�`    ï ï�`�`�` ï�` ï �`   �`�`�`�`�`�`�` T:�` �`�`�` �` �` �` �`�` �` �` H�` �` �`�`�` �` �` �` ï Z�` š Œ�` �` ï�` �`�`�` ï�`�` ï 7 �`�`�` ` ï�` à �`�a�`�` �`�` �`�` ҉�`�`�` à�` Z�` �`�` Z ە TI�` 3P�`�` ׭�`�`�`�`�`�` �` �`�` �` �` �` �` �`�` �` TX :y �` “ ە �a��a�a�a ü�a à Œ�a Z Ʒ �a�a�a y Ʒ �a �a�a ï�a �a �a �a �a �a �a�a �a  �a  Z �a Ʒ�a�a c�a�a k�a ï�a�a y i i Ʒ ï �a �a�a!�a�a"�a�a#�a1�a$ �a% z�a&�a) `�a' `�a( y Z�a*�a+ ׭ s�a, `�a- s �a.�a/�a0 ï �a2�a]�a3 8�a4�aZ�a5�aY�a6�aK�a7 ƨ�a8 ƨ�a9�aB�a: ƨ�a; ƨ 4�a< ƨ�a= ƨ�a> ƨ�a? ƨ�a@ ƨ�aA ƨ 4 ƨ�aC�aD ƨ�aE ƨ�aF ƨ ƨ�aG�aH ƨ�aI ƨ ƨ�aJ 4 ƨ�aL ƨ�aM�aW ƨ�aN�aO ƨ ƨ�aP ƨ�aQ�aR ƨ ƨ�aS�aT ƨ�aU ƨ�aV ƨ 4 ƨ ƨ�aX ƨ 4 s �a[ ü�a\ V s�a^�a�a_�ae�a`�ab�aa Z �ac ƙ ƙ�ad 5C ƙ�af�ak�ag�aj�ah �ai :y :y : �al  i�am�an �ao  �ap �aq�ar�ax�as�au �at  Tg �av Tv�aw T �ay�a�az�a�a{�a} �a| Tg T�a~�a T T T T�a�a T T�a U� T U�a �a �a�a U U- U- �a �a �a�a �a �a �a �a�a �a �a �a�a �a L �a 8 8�a�a 8�a 8 8�a�a 8�a 8 8�a�a 8 8�a�a 8�a 8 8�a�a 8�a 8 8�a�a 8 8 U<�a�a c�a ҉�a�a ҉�a ҉�a ҉�a ҉�a ҉�a ҉ ҉�a ҉ UK�a�a�a 3|�a�a�a 3|�a�a�a r �a�a ш ï ` y�a�a�a�a�a ï�a N Œ�a�a r�a E d : �a�a�a�a UZ  Z�a�a 7 i ï�a Ʒ�a�a�a�a�a�a�a�a �a Ʒ à ï�a�a�a�a G r �a�a�a  ̀ �a�a�a �a�a   Ui�a �a   �a�a�a Œ�a�a ï �a �a�a  # Ux�a �a�a�a �a �a  r �a�b �a �a �a�b�a�a r  ս�a ս�a�a�b� V ï �b�b�b�b ï i�b ` ï�b�b Œ�b Z .�b .�b U .�b �c�b�b ҉ �b�b�b Z�b �b�b ˘�b ƨ �b ï 7�b�b{�b�b'�b Z�b Z Z�b�b Z�b Z�b Z Z�b �b! Z Z�b" Z�b# Z�b$�b% Z�b& Z Z U�b( Z�b)�bI�b*�b9�b+ Z�b,�b3 Z�b-�b. Z�b/ Z�b0 Z�b1 Z�b2 Z Z�b4 Z�b5�b8�b6 Z�b7 Z Z  Z�b:�bA Z�b;�b< Z Z�b=�b> Z�b? Z Z�b@ Z �bB Z�bC Z Z�bD�bE Z Z�bF�bG Z�bH Z , Z�bJ�bZ�bK�bS Z�bL�bM Z�bN Z�bO Z Z�bP Z�bQ Z�bR Z U�bT Z Z�bU�bV Z Z�bW Z�bX�bY Z Z ;�b[�bj�b\ Z�b]�bd�b^ Z Z�b_�b`�bc Z�ba Z�bb Z Y , Z Z�be Z�bf Z�bg Z�bh Z�bi Z h�bk�br Z�bl�bm Z�bn Z Z�bo�bp Z�bq Z Z Z�bs Z�bt Z�bu�bv Z�bw Z Z�bx Z�by�bz Z Z �b|�c1�b}�b�b~�b�b�b�b�b�b�b Z�b Z�b Z�b Z�b�b Z�b Z ; Z Z�b Z�b Z�b�b Z  Z�b�b�b Z Z�b�b Z�b Z�b Z Z�b  Z�b�b�b Z�b Z�b Z�b Z�b Z Z , Z�b�b Z�b Z Z�b�b Z Z ކ�b�b�b�b�b Z�b Z�b Z Z�b Z�b�b Z , Z�b Z Z�b  Z Z�b�b Z Z�b�b Z�b Z�b Z Z�b h Z�b�b�b�b�b Z Z�b�b Z Z�b�b Z Z�b Z�b Z �b Z Z�b�b�b�b Z�b Z Z�b Z�b Z�b�b Z U Z Z�b�b Z�b Z�b Z Z �b�b Z�b Z�b Z�b Z�b�b Z Z �b�b Z�b�b Z�b Z Z�b Z�b Z�b , Z�b Z�b Z�b Z Z�b Z�b�b Z J Z�b�c"�b�c�b�b�b�b�b Z�b Z Z�b Z�b�b Z�b Z Z�b�b Z Z ކ Z�b Z�b Z�b Z�b Z�b�b Z Z ,�b�c�b Z�b Z Z�b�b Z�b Z Z�c��c Z Z�c  Z�c Z�c Z�c�c Z�c Z�c Z�c �c �c �c Z Z�c Z Z Z�c�c Z Z�c Z ,�c�c�c Z�c Z�c Z Z�c�c Z�c Z Z ,�c Z�c�c�c Z Z  Z�c�c Z Z�c! 4{ Z Z�c#�c$ Z�c%�c,�c& Z Z�c' Z�c(�c) Z�c* Z�c+ Z Z �c- Z Z�c. Z�c/ Z�c0  Z�c2�c�c3�cm�c4�cJ�c5�c@ Z�c6�c7�c<�c8 Z�c9 Z�c: Z�c; Z Z ,�c=  �c> �c? Z �cA Z�cB Z�cC Z�cD�cH�cE Z�cF Z Z�cG Z ޕ Z�cI Z �cK�cZ�cL�cS�cM Z Z�cN Z�cO�cP Z Z�cQ�cR Z Z , Z�cT�cU Z Z�cV Z�cW�cX Z Z�cY Z �c[�cf�c\ Z Z�c]�c^�cb Z�c_�c` Z�ca Z Z , Z�cc Z�cd Z�ce , Z Z�cg�ch Z Z�ci Z�cj�ck Z Z�cl Z �cn�c�co Z Z�cp�cq�cw�cr Z Z�cs�ct Z Z�cu Z�cv  Z Z�cx�cy Z�cz Z�c{ Z Z�c|�c} Z Z�c~ ޕ Z Z�c�c Z�c Z Z �c�c�c�c�c�c Z�c�c�c�c Z Z �c Z Z�c�c Z Z 4{ Z�c�c Z�c Z�c Z  Z�c�c�c�c Z�c�c Z�c Z Z�c , Z Z�c�c�c�c Z�c Z�c Z�c�c , Z , Z Z�c�c Z�c Z Z Z�c Z�c�c�c�c Z�c Z�c Z�c Z , Z Z�c Z�c�c Z Z�c Z Y�c�c�c�c�c Z Z�c�c Z Z  Z�c�c Z Z�c Z�c  Z�c�c�c Z�c  Z�c Z�c Z�c Z�c�c Z�c Z ;�c ; Z�c�c Z�c�c Z Z�c Z�c�c Z Z�c  Z�c�c Z�c Z�c�c Z�c Z�c Z  Z Z�c�c Z Z�c Z�c�c Z Z�c�c�c Z 4{ 4{ Z�c�d#�c�d�c�c�c �c�c�c�c Z ï Ʒ�c Z s à�c�c�c�c�c�c V x V Z�c�c i ï Z�c�c�c ï  �c L�c�d L�c L�c�c L L�c�c L�c L L�c�d� L L�d L�d L 4 L�d L�d�d L L�d�d L�d �d L�d L�d L�d �d L L 4�d L�d L�d L L�d 4 L ׭�d�d�d�d�d ˘�d ï �d�d �d �d �d�d�d �d!�d" à Z 7�d$ x `�d&�d�d' �d(�d; Z�d) Z�d* Z�d+ Z�d, Z�d- Z�d.�d/ Z Z�d0 Z�d1 Z�d2 Z�d3�d4 Z Z�d5 Z�d6 Z�d7�d8 Z Z�d9�d: Z U Z�d<�de�d=�dT�d> �d?�dF�d@�dC �dA�dB ƨ s  ï�dD �dE Ʒ�dG Z�dH�dJ d�dI V8�dK�dN 7�dL�dM š š ( ï�dO�dP�dR š�dQ š 5�dS š š > �dU�dV�dZ�dW ü�dX ѧ�dY ü ï ƨ�d[�d_�d\ i�d]�d^  ш �d`�db ï�da V �dc�dd  ` ï�df ï�dg�dj G�dh ï�di V ҉�dk�d|�dl�dx ƨ�dm Z�dn ű�do�dp �dq  �dr�ds �dt  �du �dv �dw �dy�dz ű x�d{ s s ï�d}�d�d~�d�d�d ï s d Ʒ�d�d s š�d r�d s �d�d�d�d�d s�d�d i�d�d  i�d Z�d Z�d ƙ�d ƙ �d�d `�d�d�d�d ï �d VG�d�d�d Ʒ VV �d ï ű š ̀�d ҉�d�d s�d�d z s ï ҉�d Ʒ�d�d�d ï�d�d�d ï �d�d�d�d Z  N�d �d �d Q& ï�d ï Ve�d C] CN�d�d�d s ï�d�d �d�d�d�d�d �d ï ï s�d �d�d Z ѧ  ׭ `�d�eU�d�e"�d ҉ �d�d�d�d �d�d�d�d�d�d�d�d ƙ�d�d K�d K K�d�d K�d K Vt K 8J G�d�d 8 8 5C�d�d�d Vt 54�d�d ƙ 6D <�d�d�d�d�d�d V G K �d�d 6D 8; �d 6�d�d 6�d 6 6�d 6�d�d 6 6�d 6 V�d�d�d�d V K 6 <�d�d < Vt 8�d�e�d�e�d�d�d�d�d�d V G K K�d 8 6D�d�e�d�e� 8 5C �e 8;�e 8;�e 8; V�e�e Vt 8J ƙ 5C�e�e�e �e �e �e 6 K 6 <�e < 54�e�e�e�e K < �e K 6D V�e�e ƙ�e�e�e�e�e G 8 V P�e < 8J�e�e ƙ�e�e ƙ ƙ ƙ�e! V ƙ�e#�e0 ï�e$�e%�e)�e& Q�e'�e( ƨ Œ à�e*�e.�e+�e, Z ց�e- ƨ�e/ i �e1�e: ƨ�e2 ш�e3�e4�e5 ƨ �e6 �e7 �e8�e9 H�e;�eN�e< Œ�e= Œ�e> Œ�e? Œ Œ�e@ Œ�eA�eB Œ�eC Œ�eD�eI Œ�eE Œ�eF Œ�eG Œ�eH Œ ~�eJ Œ�eK Œ�eL Œ Œ�eM ~ Œ�eO�eR�eP�eQ = Ʒ ï�eS�eT Œ 7 s ҉�eV ҉�eW�eX ҉�eY ҉�eZ ҉�e[ ҉�e\ ҉ ҉�e] ҉�e^ ҉�e_ ҉�e` ҉�ea ҉�eb ҉�ec V ҉�ee�g>�ef�f�eg�e�eh�e�ei �ej�ex�ek ` Ʒ�el�em�et�en�eq�eo�ep s  Ʒ�er�es Ʒ  �eu�ew�ev i ׭ ƙ `�ey�e�ez�e{ Ʒ W �e|�e�e} �e~ s�e�e�e�e ï ` s�e�e�e �e š�e š ( š x W�e�e�e Ʒ�e Ʒ�e  ï�e�e�e  ƨ�e�e�e�e ` �e�e�e�e�e�e�e (�e�e (�e ( (�e�e (�e ( (�e�e (�e (�e ( (�e (�e ( ʗ ï�e�e ï ï�e�e ï 3 ï�e�e�e�e�e Ʒ =�e =�e W' = ï s ï�e :y �e ï�e �e�e�e  L ;8 Ʒ Œ�e�e�e ҉ ï�e�e�e�e ï ï�e ï�e�e�e�e�e�e�e W6 6 WD 3�e�e WS Qk Wa Q5�e�e�e�e W6 6 WD 3�e�e WS Qk Wa Q5�e�e�e�e ï Z ƨ d�e d Z ( à�e�e�e�e�e�e�e�e ï 7 ï�e�e  �e�e y Z �e�e�e�e > G   ï�e r �e x�e�e�e�e�e �e  �e ٍ $ `  ƙ �e�f ï�e�e ̀�e L `�e�e�f��e�e�e�e  y �e�e  7�e�e �e  �f�f�f�f  j ƨ�f�f �f�f s Z�f ` Z�f �fE�f ƨ�f �f�f�f�f�f�f�f�f Ʒ ш  �f Œ�f ˘�f ` ƨ�f `�f�f& ï�f�f�f#�f�f" ï�f�f �f �f!   �f$�f% ( š š (�f'�f;�f(�f7�f)�f4�f*�f/ `�f+�f,�f- š �f. s Wp W~�f0�f1 ƙ Œ�f2�f3 W L8 L z�f5 �f6 4? ƙ�f8 ` z�f9 �f: W �f< �f=�f> �f? �f@ �fA �fB �fC�fD  �fF�f�fG�f�fH�fg�fI�fV�fJ�fP�fK `�fL ` `�fM ƙ�fN�fO ƙ Wp W~�fQ `�fR š�fS�fU ƙ�fT K ƙ ƙ �fW�f`�fX �fY�f_�fZ�f\ �f[ ƙ�f]�f^ ;8 4 4 ƙ �fa `�fb�fc s `�fd ű�fe�ff ű W ű�fh�fx�fi�fl `�fj�fk ` ` s�fm�fq `�fn s�fo�fp ƙ �fr�fs ` ƙ�ft �fu�fv 8 r�fw r 8Z 8�fy�f Œ�fz�f{�f| s `�f} �f~�f W �f \ �f�f�f `�f  ƙ�f š ƙ�f�f `�f ƙ�f ƨ  ` �f�f�f >�f�f�f ï i Z�f�f Z�f�f�f x�f�f Z x �f�f�f r Ʒ�f�f Z ï s�f�f�f�f�f Z Y�f�f�f Y�f�f Y�f Y�f Y�f Y Y�f Y�f Y�f Y�f Y�f�f Y�f Y�f Y Y�f Y�f W Y Y�f�f Y�f Y Y�f Y�f Y�f Y�f�f Y Z Y�f Z�f Z�f Z Z�f Z�f Z�f�f Z�f Z�f Z�f Z�f Z�f Z�f Z Z�f�f Z Z�f�f Z Z�f 4{ Z s�f�f�g2 7�f�f�f�f s�f �f 6b �f ҉ Z�f�f�f Z�f Z�f Z�f�f Z Z�f�f Z Z�f�f Z�f Z Z�f�f Z Z�f�g#�f�g �f�f Z�f�f Z�f Z�f Z Z�f Z�f�f Z Z�f�f Z�f�f Z 4{ 4{ Z�f�f�f�f Z  Z �f�g�f Z�f Z�f Z�f Z Z�g� Z�g , Z Z�g�g Z Z�g Z�g�g Z�g�g Z J J Z�g �g�g �g�g �g , Z �g Z Z Y Z�g�g�g�g Z Z�g Z�g Z�g Z�g�g Z Z�g Z�g 4{ Z�g Z Z�g Z�g�g Z�g! Z�g" Z Z  Z�g$�g% Z�g&�g( Z�g' Z W�g) Z�g* Z�g+ Z Z�g,�g- Z�g. Z Z�g/�g0 Z�g1 Z Z �g3�g9�g4 k�g5 r ï�g6�g7 �g8 G Z�g:�g; ï Ʒ�g< y G�g= ` �g?�g�g@�g�gA�gB ï Œ�gC�gr�gD�gT�gE �gF c y�gG�gH�gN ï�gI�gJ ï s�gK�gL�gM   ƨ�gO�gS�gP I �gQ�gR ï�gU�g]�gV `�gW ш�gX�g[�gY�gZ ï s y Ʒ�g\ ƨ y�g^�ge�g_ �g`�ga�gd�gb �gc 6S  �gf�gg�gp�gh�gi ï�gj �gk�gn�gl�gm c H c 5 š�go š k s�gq ï �gs�g ï�gt�gu s�gv�g}�gw�gz�gx�gy ƨ r ï �g{�g| ` Z ï ï�g~ V�g ű i s�g�g s s�g s�g�g s�g s s�g s�g�g s�g s s�g�g s�g s�g s�g�g s�g W s s�g s W�g�g�g 3|�g 6b�g�g�g 6b�g�g Œ�g�g�g ̀ Z 7�g�g ï�g 7�g�g ï  ï �g�g�g Ʒ�g�g  x�g�g�g š s ï�g ï �g�g ҉�g�g �g �g�g�g ƨ V�g�g Ñ G�g �g �g   �g �g�g�g�g�g�g �g�g Z  s�g�g �g ï ш�g G�g�g G�g  ï�g ï ï �g�g `�g�g�g�g�g�g�g ï r ƨ�g�g ï Z r ł�g�g�g�g s Ʒ Œ Dz�g�g�g r�g�g 8 K x �g�g �g�g�g ƙ�g�g K ƙ W ï�g�g�g�g �g�g ï ï�g O ï G �g r Œ �g�h�g�h�g�g�g s ҉ Ʒ�g�h�g �g�h� Ʒ�g�g�g�g ï ̀ �g�g X ï�g�g �h �h �h �h�h�h�h ;8�h `�h�h�h ` �h �h �h �h �h�h �h X ` ` �h 8�h�h�h�h �h �h�h�h  ƨ ï 7�h�hT�h�h1�h�h*�h �h%�h!�h" �h#�h$ Kf  �h&�h( �h' ï  �h)  �h+�h.�h,  �h-   �h/ �h0  �h2�hE�h3�h>�h4 T* �h5 �h6�h7 �h8 �h9 �h: �h; �h<  �h=  �h?�hB�h@�hA $ i�hC�hD X) X8 �hF�hM�hG�hJ�hH�hI �hK�hL K9 , XF X)�hN�hQ�hO�hP KH Q  �hR�hS  �hU�hb�hV�hZ ï�hW �hX�hY   �h[�h_�h\�h^ �h]   ï T* T*�h` T*�ha  �hc�hm�hd�hh �he�hf�hg    �hi�hl�hj�hk      �hn�h{�ho�hy�hp �hq �hr �hs �ht �hu  �hv�hw �hx   �hz   �h|�h�h}�h~    XT �h  �h ű�h�h�h�h  ï�h  ü�h�h�h�h�h�h Œ�h Œ Œ�h Œ�h�h Œ�h Œ�h Œ�h Œ�h Œ Œ�h�h Œ Xc Œ ï Ʒ�h ï ѧ G�h�h ï�h�h�h�h�h `�h �h �h Xr�h�h �h �h�h�h X X X�h�h X X X X�h�h�h�h ï ƨ  Z�h�h�h�h�h�h 8Z 8�h�h 8 ߰ ߰ 8 8�h 8�h 8   �h�i ҉�h�h�h�h Ñ�h V�h �h š š�h š�h�h š�h š�h š�h�h�h (�h ( (�h�h (�h�h (�h (   (�h (�h ( (�h (�h�h (�h  (  ü�h�h Ʒ�h�h Œ�h �h s Ʒ�h�i �h�h�h �h�h �h �h �h �h �h�h �h �h 6�h�h �h �h �h �h�h �h �h �h�h �h�h �h�h�h �h �h �h�h �h 6& �h �i� �i �i�i �i 65 ƨ�i�i ƨ�i O ƨ�i �i" Ʒ�i Œ�i �i �i�i ƙ�i ƙ�i�i�i�i š�i š š š�i š�i š�i�i�i ƙ ƙ�i�i š�i š š �i�i ƙ�i š š�i! š �i# `�i$ y�i%�i6�i&�i2�i' �i(�i1�i)�i-�i*�i, r�i+ r  X�i.�i/ א X�i0 r ï �i3�i4�i5 y �i7�i; �i8�i9�i:   �i<�iH�i=�iA �i> Z�i? Z�i@ Z�iB�iG�iC�iE X �iD X Y�iF y Y Y% d�iI�iU�iJ�iP�iK�iN�iL�iM Y3 YB YB 4? S�iO X YQ�iQ�iT�iR�iS X 4? Y`�iV�i]�iW�iZ�iX�iY Xr Yp�i[�i\ Y~ Y Y Y�i^�ia�i_�i` 4? 7 X�ib Y Y�id�ms�ie�l�if�i�ig�i š�ih�ii�i�ij�iw�ik�iq š�il�im š�in š �io š�ip š �ir š�is�it š �iu�iv š š�ix š�iy š�iz�i} š�i{ š�i| š �i~�i�i�i�i�i�i š�i š�i š �i š�i š š�i š�i�i š�i š š�i š�i�i š�i š�i š š�i š �i š�i š �i š�i�i š�i�i š�i š�i š�i š š �i�i š�i�i�i�i š�i�i š�i š�i�i�i š �i�i�i �i�i �i �i š�i �i š�i š š�i�i �i �i�i š š š�i š š�i š�i š�i š š�i š�i š�i š�i�i�i�i�i š�i š�i š�i�i�i š�i š �i > š š�i š �i�i�i�i�i�i š š�i š š�i š�i š�i�i š : š š�i š�i š > š�i š�i�i�i�i �i š�i >�i�i�i š�i š k š�i š�i š š�i�i š�i š š�i�i�i š ( ( š�i�j�i�jh�i�jK�i�j2�i š�i�j�i�i�i š š�i�i š�i š š�i š�i š�i�j �i�j�i�j�j��j�j š š�j�j š š š�j �j�j �j š�j š�j š�j�j�j�j �j�j š�j�j š �j š �j�j š š�j�j š�j�j,�j >�j�j!�j š�j š > š�j" š�j# š�j$ š š�j% š�j&�j' š�j( š�j) š�j* š š�j+ > š >�j-�j. š�j/ š�j0�j1 š > > š�j3 š š�j4 š�j5�j6�jH�j7�jF�j8�jC�j9�j?�j:�j< �j; š š�j=�j> š š�j@�jA š š�jB š š�jD š�jE š š�jG š š�jI�jJ š š�jL�j_ š�jM�jN š�jO š�jP š�jQ�j[�jR �jS�jU š�jT š š�jV�jW�jX š�jY š š�jZ š �j\�j]�j^ š š�j` š�ja š�jb š š�jc�jd š š�je š�jf š�jg š �ji�j�jj�j�jk�jx�jl š�jm š š�jn�jo�js�jp š�jq š �jr š š�jt�ju š�jv š�jw š š �jy š�jz š š�j{�j| š�j} š�j~ š�j š�j š > š�j�j�j š�j š�j š š�j š�j š�j š�j š �j�j š�j�j�j š�j š�j�j š š�j�j š š F�j š�j š�j š�j š�j š�j š�j š š�j�j š�j š�j š �j š�j š �j�j�j š �j�j š š�j š�j š š�j�j�j š�j�j š B š�j�j�j B�j�j�j�j š š š�j š�j �j  Y š�j š�j�j š š B{�j�j�j š�j š�j�j�j�j�j š�j š�j š �j š �j�j�j�j �j š�j š�j š š�j š �j š�j�j š�j š š�j�j š�j š�j�j š�j š š š�j š�j�j š�j š š š�j�j š š�j�j š�j š�j š�j š�j š š�j š�j�k�j�kV�j�k% š�j š�j�j�j š�j�j�j�j š š�j�j š š�j�j š š š�j�j š š�j Y�j Z Y�j�k�j�k �j�k �j�j�k� š š�k š�k�k�k š�k š�k �k �k �k š �k �k�k �k �k �k �k�k �k š š š�k �k š �k š�k š�k š š�k�k š š�k�k š š�k š�k �k! š�k" š š�k# š�k$ š�k&�k; š�k' š�k(�k)�k/ š�k*�k+ š�k, š š�k-�k. š š Z�k0 š š�k1�k2�k8�k3 š š�k4 š�k5�k6 š�k7 š ( š š�k9 š�k: š >�k<�kO�k= š š�k>�k?�kM�k@�kI š�kA š�kB�kC š�kD�kH�kE �kF �kG š š�kJ š�kK š�kL š š š�kN š š�kP�kQ š�kR š š�kS š�kT �kU š�kW�k�kX�k{�kY�kr š�kZ�k[�k^�k\ š š�k] š �k_�kk�k`�kb�ka š š�kc š�kd š�ke > �kf �kg �kh �ki �kj š �kl�ko�km š�kn š š �kp š š�kq > š�ks š�kt š�ku š š�kv š�kw š�kx�ky�kz š : : š š�k|�k}�k š�k~�k�k š�k š B š�k�k š�k š š �k š�k š�k š š�k�k�k š �k š�k�k�k�k�k š�k�k š�k�k š�k š B š�k š�k�k�k š š�k š�k š �k�k š�k š�k š �k�k š š š�k�k š š�k�k š�k š�k�k�k �k�k š �k š š �k�k�k š š�k�k�k�k�k�k š�k š�k š �k š š�k š�k š �k�k �k �k š�k�k š�k š�k�k�k�k�k�k š š �k�k�k�k š š �k š�k š�k š š�k�k š�k š�k š š�k�k ʗ�k ʗ�k�k š�k�k ʗ�k ʗ�k ʗ ʗ š�k ʗ š ʗ�k�l"�k�l�k š�k�k�k š�k�k�k š�k š�k š�k�k š �k š š�k�k š š�k�k�k�k�k š�k š�k š �k�k š �k�k �k�k š š �k�k š�k š�l� š�l š�l š�l š š �l š�l�l š�l š�l�l š�l š�l š�l �l š š�l š š�l�l�l�l�l š�l�l š �l š š�l�l�l�l š�l š š �l�l�l �l š �l! š �l#�l}�l$�l1 š�l%�l&�l. š�l'�l( š�l) �l*�l+�l, š�l- š š š�l/ š�l0 š �l2�lb�l3�lN�l4�l>�l5�l: š�l6�l7 š�l8 š�l9 š > š�l; š š�l<�l= š > �l?�lL�l@ š�lA š�lB �lC �lD�lE �lF�lG �lH �lI�lJ �lK š �lM š š�lO�l] š�lP š�lQ �lR�lS š�lT �lU�lV �lW �lX�lY �lZ �l[ �l\ š š�l^�l_ š�l` š š�la š �lc�ll š�ld�le š�lf š >�lg�lh�lj�li > > š�lk š > š š�lm�ln š�lo�l{�lp�lw�lq š�lr�lu�ls š�lt š š >�lv š š >�lx�ly > š�lz > š >�l| š > š�l~�l�l š š�l�l�l š�l�l š š�l >�l >�l > š�l š�l š >�l�l >�l > > š�l�l š�l�l�l�l š š�l�l š š�l�l š �l�l �l�l �l �l �l�l š�l š š�l�l š š �l š š�l�l š š�l�mg�l š�l�mX�l�m%�l�l�l�l�l�l š�l š�l š�l�l �l�l š š �l š�l š�l�l�l š�l š š�l�l š�l š�l š š�l�l š�l š š�l�l š š�l š �l�l š š�l�l�l š š�l š�l š�l�l š �l�l�l š š�l�l�l š�l š�l š š�l š B�l š š�l š�l�m�l�m�l š�l š š�l�l�l�l�l š�l�l š š�l š�l�l š š�l š�l�l š š�l�l š š �l š�l š š�l�l š š�l š�l�l š š�l�l š�l š š �l�m�l š š�l š�l�l š�l š�l š š�l�m��m�m š�m š š �m š š�m š �m š�m š�m š�m š š�m �m š š�m š�m�m š�m š š �m š�m š�m�m š �m š�m š š�m š�m š�m�m�m š�m š�m�m š š Z�m! š�m" š�m#�m$ Z š š Z š�m&�m'�mF�m( š�m)�m7�m*�m2�m+�m.�m, š š�m- š�m/ š š�m0 š�m1 š š�m3�m4 š�m5 š š�m6 š š�m8�m9 š š�m: š�m; �m<�m= �m> �m?�m@ �mA�mB �mC �mD �mE š �mG�mU�mH š�mI�mQ�mJ�mM�mK š�mL š š š�mN�mO�mP š š �mR š š�mS š�mT š�mV š�mW š š �mY š�mZ š�m[�m_ š�m\�m] š�m^ š š š�m`�ma š�mb š�mc š�md š�me�mf š š š�mh š�mi�mj š�mk š�ml š�mm š�mn�mq�mo š š�mp š š�mr š�mt�m�mu�m�mv C]�mw �mx �my �mz �m{ �m| �m} �m~ �m �m �m �m = �m�m  �m �m�m �m Cy�m�[�m�|E�m�u�m�u�m�m�m š�m š�m š�m š�m š�m š�m�m š�m š�m�m �m �m �m  B �m š š �m�q"�m�n�m�m�m�m�m�m�m�m�m š � š š�m š�m�m�m š�m�m�m c�m š š�m�m�m š (�m�m�m�m�m�m�m�m�m š�m š�m�m�m�m�m�m�m�m š ( > š�m�m c š š�m š�m  :�m�m�m�m�m�m : , š � š�m�m�m�m š �m š š š�m�m š �m�m�m�m : �m�m š �m š�m š�m š�m š , š�m�m�m�m�m�m š : �m�m A �m š�m�m š (�m š š�m š�m ( �m š (�m�m�m �m  š�m  š�m�m �m�m š�m�m ( :�m š�m š : š�n��nV š�n š�n�n�n.�n�n�n š�n�n š�n�n�n š  > š�n š�n š�n š�n š�n�n�n�n š >  š�n�n š  š �n�n'�n�n!�n�n�n š�n�n�n >�n > š >�n > > š�n š š  š�n" š�n# �n$ š�n%�n& š > �n( š š�n) š�n*�n+ š�n, š š�n- š �n/�n5�n0 š�n1�n2 > š�n3 š�n4 š š >�n6�nN�n7�n=�n8�n; š�n9�n: š > �n< š š �n>�nC š�n?�n@ š š�nA�nB š > �nD š�nE�nM�nF�nH�nG š  š�nI�nK š�nJ š �nL > š š > š�nO š�nP >�nQ�nR�nU�nS š š�nT š  š�nW�nh š�nX š�nY�nZ�nf�n[�n\ � š�n]�nc�n^�na�n_�n` š ( �nb š 5 A š�nd š�ne š �ng š š š�ni�nj�no�nk�nm c�nl c š �nn c :�np š�nq�n :�nr�ns�nv�nt�nu @ �nw�n�nx�n~�ny�n}�nz�n| �n{  š  š š �n�n c�n�n š š � ��n (�n ( š�n�n�n š�n�n ( š :�n š�n�n š ��n � � š�n�n�n�n :�n > �n�n � � �n�n �n � , c�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n 5 @ �n�n c c A�n�n , � : ��n c š�n�n š�n�n�n š , : š š�n , �n�n�n�n�n�n š > š � �n�n �n : : ��n�n�n�n�n�n�n�n�n�n š �n�n š š �n�n�n š š�n�n : š�n�n�n�n�n�n   š�n�n š 5 (�n�n�n A š :�n�n 5 > š�n�n , �n c�n š�n š š >�n�n š�n �n�n �n š  š�n�n š�n š š�n�n�n �n š�n š�n ( �n�n�n�n�n : > ��n š�n š � �n�p �n�o š�n�n�n�n š š c�o� , š�o�p�o�oD�o š�o š�o�o �o š�o�o š�o š A š�o š �o �o(�o�o$�o�o�o�o�o�o š �o š š :�o�o�o�o ( š�o�o  ,�o�o!�o�o �o š�o : š š (�o" š�o# š A�o% š�o&�o' š ( ( š�o)�o4�o*�o/�o+�o, š�o-�o. š   š�o0�o1 � š�o2�o3 š š :�o5�o<�o6�o9�o7�o8 : š š �o:�o; �o=�o@ �o>�o? š A š�oA �oB�oC  š š �oE š�oF �oG�o�oH�o�oI�oo�oJ�o_�oK�oY�oL�oS�oM�oP�oN�oO  š �oQ�oR : �oT�oW�oU�oV š , A�oX š �oZ�o]�o[ š š�o\ š  š�o^  š�o`�ol�oa�of�ob�oc ( �od�oe š š �og�oi�oh š �oj�ok š  c�om�on š , š�op�o~�oq�ow�or š�os�ou c�ot c š�ov š : š�ox�o{�oy�oz (  š�o| �o} š �o š�o�o ( ( š�o�o�o�o�o�o�o�o š c�o�o c�o š  c š�o�o�o�o : š š ��o  š�o�o�o�o�o�o ( �o�o š š ��o�o š , š�o�o�o�o�o š�o�o   š�o�o�o�o š ( �o  (�o�o�o�o�o : š�o�o š :�o ( š�o�o�o�o š š�o š �o�o�o�o�o�o�o�o š�o š�o ( �o�o�o�o  š š �o�o š ( �o�o�o�o�o š�o š š (�o�o ( š �o c�o�o š  �o�o�o�o š�o�o�o š�o  š š :�o �o�o š š�o�o�o (�o š�o�o š�o �o�o š  š �o�o�o�o�o�o š�o�o�o š : �o  š�o š�o�o�o�o š >�o š š �o�o�o�o�o š :�o , �o�o�o ( , š�o �p� (�p š : š�p�p �p š�p�p š�p�p�p š  š (�p š�p š  š š (�p�p[�p š�p�pK�p�p+�p�p š�p�p�p�p š�p š ( A š�p š�p  š�p�p�p š�p š š �p�p%�p �p"�p!  A (�p#�p$ , > 5�p&�p)�p'�p( 5 A  (�p* > �p,�pG�p-�p;�p.�p5�p/�p2�p0�p1  5 A (�p3�p4 5 A ( �p6�p9�p7�p8 A 5  A c�p: (�p<�pB�p=�p? �p> > �p@�pA , : 5 �pC�pF�pD�pE  A ( A š�pH š�pI š�pJ š : š�pL š�pM�pN�pQ š�pO š�pP š �pR�pU�pS�pT , : ��pV�pX �pW  �pY�pZ > , >�p\�p�p]�p�p^�pp�p_�pg š�p`�pa�pc�pb š š š�pd š�pe š�pf š :�ph š�pi š�pj�pn�pk š�pl�pm š , š ,�po š š �pq�p�pr�p�ps�pz�pt�pw�pu�pv 5  5 A�px�py ( 5 c (�p{�p~�p|�p} A ( ( 5�p�p c ( ( c�p�p�p�p c�p c �p�p �p ( š�p�p�p�p�p�p ( š ( š�p � ( š�p�p�p ( š�p�p 5 š 5 š�p š�p�p�p�p�p�p�p�p 5 š 5 š�p�p  š 5 š�p�p�p�p š c š�p�p c š c š�p š�p š�p�p A š A š š�p š�p�p�p�p�p�p�p�p�p�p�p : š š�p�p š , š�p�p�p � š �p�p�p�p , , :�p�p : � � c�p�p�p�p�p�p , , :�p�p , š , :�p�p�p�p š > �p , > š�p�q�p�p�p�p š�p�p�p š�p š�p š �p š�p š š š�p�p�p�p�p�p�p š A A (�p�p  , >�p�p 5�p A �p�p ( > �p�q �p�p�p�p�p�p�p�p  5 A (�p�p 5 A ( �p�p�p�p A 5  A c�p �p�q�p�q��p�p > ,�q : 5�q�q�q�q  A ( �q�q A ( A �q š�q š�q �q�q �q š š �q�q : : š š�q š�q�q�q š�q š�q š �q�q�q�q , : ��q�q �q @ �q �q! > , >�q#�t�q$�s�q%�rn�q& š�q' š�q( š�q)�ra�q*�q�q+�q�q,�qR�q-�qF�q.�q4 š�q/ š�q0 š�q1 š�q2�q3 š�q5�q=�q6�q9 �q7 �q8 š�q: ,�q; , š�q< , š�q>�qB�q?�q@ , š�qA š � š š�qC š�qD š�qE > š�qG�qM�qH�qI > š�qJ š�qK š A�qL ( š š�qN š�qO�qP š (�qQ , š�qS�qg�qT�q[ š�qU š�qV�qW�qZ�qX�qY š  š  š�q\�qc�q]�qa š�q^�q_ �q` š  š�qb š š š�qd�qe š�qf š š�qh�qq�qi�ql š�qj š�qk š (�qm š�qn�qp�qo ( š ( ( š�qr�q{�qs�qx�qt�qv�qu š š @ š�qw š @�qy š�qz š @ �q|�q�q} š�q~ š @ š�q�q�q�q�q�q�q�q�q�q š�q�q š ( š�q�q š�q š @�q�q @ A A š�q�q�q ,�q�q š 5 5 @�q�q ,�q , š 5 (�q�q�q >�q š�q š ( š�q�q�q > �q�q š š�q�q š�q�q�q š�q�q š A š š�q š (�q�q š�q š�q�q�q š š �q�q š�q�q�q > š š �q�q š�q š š�q�q�q�q�q�q�q�q�q�q �q š š�q š�q š @�q š�q�q�q A š A  š�q�q�q�q �q A š�q�q 5 @ @�q @ š�q�q�q�q : š š š�q š >�q š�q�q�q š�q�q š š  š�q�q�q�q�q�q š�q š A A�q 5 š š�q�q > š >�q š�q š >�q�q š š�q A š�q�r1�q�r�q�r��q�q š�q š�q š 5�q�q�q š�q š 5 š�q�q�q A�q A š A�q�q š�q A š š �r�r�r�r š�r�r š  �r š �r�r š�r �r �r š�r š �r š š�r�r š š�r š A�r�r š�r�r�r š�r�r �r š š �r �r �r š�r�r&�r�r" š�r š�r! š �r#�r$ �r% š š�r'�r(�r,�r) ,�r* š�r+ š š , ,�r-�r.�r0�r/ š , š @ š�r2�rK�r3�rD�r4�r?�r5�r9 š�r6�r7 š�r8 š š >�r:�r<�r; > š �r=�r> š š š�r@�rA�rB š A A�rC A š š�rE�rF š�rG�rJ�rH :�rI : š : š :�rL�rU�rM š�rN�rS�rO š�rP�rR�rQ : š : �rT š : š�rV�r\�rW š�rX�rY š  š�rZ š�r[ : š�r] š�r^ š š�r_ š�r` š ��rb š�rc š�rd š�re š�rf š�rg�ri�rh š  š�rj š�rk š š�rl�rm š 5 š�ro�r�rp�r�rq�r�rr š�rs�ry�rt�rv >�ru > š�rw�rx @ , š �rz�r}�r{�r| š > ,�r~�r ,�r�r�r�r š�r š :�r :�r�r š : š > �r š > š�r š�r�r�r�r š�r ��r � š�r�r�r �r �r š�r�r š : : š�r š �r�r�r�r�r�r�r�r�r ( š A�r�r ( š š 5 �r�r�r 5�r�r A A�r�r�r�r š A�r A š š�r š�r�r A š A š (�r�r�r�r�r�r 5 A  A�r�r ( 5 ( c�r�r �r ( š š�r (�r�r 5 ( �r š�r š�r : c�r�r�r š�r š�r�r�r š�r�r š š�r š�r�r  š š B�r š�r š�r�sh�r�s6�r�s �r�r�r š�r�r�r�r�r�r�r�r (  5 A�r�r (  5 A�r�r�r�r (  5 A�r�r (  5 A�r�r�r�r�r�r (  5 A�r�r (  5 A�r�r�r�r (  5 A�r�r (  5 A�r�r š�r š�r š�r�r�r (   A�r š�r�s�r�s�s��s (   A�s�s (   A�s�s �s�s (   A�s �s (   A š�s �s�s-�s�s�s�s�s�s�s�s 5  A (�s�s 5  A (�s�s�s�s 5  A (�s�s 5  A (�s�s&�s �s#�s!�s" 5  A (�s$�s% 5  A (�s'�s*�s(�s) 5  A (�s+�s, 5  A (�s. š�s/ š�s0�s3�s1�s2 5  A (�s4�s5 5  A (�s7�sN š�s8 š�s9�s:�sI�s;�sB�s<�s?�s=�s> ( A 5 �s@�sA ( A 5 �sC�sF�sD�sE ( A 5 �sG�sH ( A 5 �sJ š�sK š�sL�sM ( A 5  š�sO�sP�sb�sQ�s]�sR�sV š�sS�sT�sU , > @�sW�sZ�sX�sY , > @�s[�s\ , > @�s^ š�s_ š�s`�sa , > @ š�sc š�sd š�se�sf�sg  A ( 5�si�s�sj�s�sk�s�sl�s�sm�s|�sn�su�so�sr�sp�sq  A ( 5�ss�st  A ( 5�sv�sy�sw�sx  A ( 5�sz�s{  A ( 5�s}�s�s~�s�s�s  A ( 5�s�s  A ( 5�s�s�s�s  A ( 5�s�s  A ( 5�s š�s š�s š�s�s  A ( 5�s�s š�s�s�s�s�s�s�s 5 (  A�s�s 5 (  A�s�s�s�s 5 (  A�s�s 5 (  A�s�s�s�s�s�s�s�s 5 (  A�s�s 5 (  A�s�s�s�s 5 (  A�s�s 5 (  A�s š�s�s�s�s 5 (  A�s�s 5 (  A š�s�s�s�s�s š�s�s�s�s�s A  5 (�s�s A  5 (�s�s�s�s�s�s A  5 (�s�s A  5 (�s�s�s�s A  5 (�s�s A  5 (�s š�s�s�s�s�s�s A  5 (�s�s A  5 (�s�s�s�s A  5 (�s�s A  5 ( š�s�s š š�s�s�s�s�s�s�s�s�s A  5 (�s�s A  5 (�s�s�s�s A  5 (�s�s A  5 (�s š�s š�s�s A  5 (�s�tw š�s š�s�t��t>�t�t$�t š�t�t�t�t�t�t�t�t ( 5 A�t�t ( (�t (�t �t (�t ( (�t�t ( š (�t�t  A  5�t�t�t A c�t�t c 5 A �t�t �t�t�t ( �t�t  A ( A�t! š�t"�t# A ( A �t%�t)�t& š�t' š�t( š š �t*�t5�t+�t. š�t, š�t- š A�t/�t2�t0�t1  ( > �t3�t4 š š �t6�t:�t7 š�t8�t9 : : š š�t;�t<�t= š �t?�tK�t@ š�tA š�tB�tH�tC�tE ,�tD > �tF�tG , �tI�tJ � : �tL�ta�tM�tZ�tN�tU�tO�tR�tP�tQ 5  5 A�tS�tT 5 c (�tV�tX�tW ( 5 A�tY ( 5 c�t[�t^ š�t\ š�t] š �t_ š�t` š > š�tb�tl�tc�ti�td�tf 5�te , š�tg�th > , >�tj š�tk š ,�tm�tr�tn�tp�to š š A š�tq š (�ts�tu�tt š š  ��tv : ,�tx š�ty š�tz�t�t{ š�t| š š�t}�t~ š�t�t�t�t�t�t �t  š š   (�t š�t š ( š�t�t�t�t�t�t�t�t š�t š�t š�t�t š�t š ( �t  (�t�t š�t š�t š (�t�t�t ( ,�t , �t�t�t�t�t�t �t š �t �t š�t š  š�t�t (�t�t š š�t�t š�t š�t�t š (�t�t�t�t�t�t�t�t (�t š (�t�t š : �t š�t š  š�t�t�t�t š�t š (�t�t ( š š �t�t�t�t c�t�t c š�t�t�t�t�t�t�t�t š   :�t�t > ( �t�t�t š š�t�t : > :�t�t�t�t�t�t š (  (�t�t  > š�t�t�t�t š š (�t�t  (�t�u*�t�u�t�u�t�t�t š�t�t š�t�t š�t š š�t�t�t�t�t  (�t ( �t�t š�t š ( ��t � š  (�t�u �u�  ( ( š�u�u š�u (�u (�u (�u�u ( (�u (�u (�u (�u (�u �u ( (�u (�u�u ( (�u š (�u : (�u �u�u š�u�u š�u š š�u�u ( š�u�u( š�u�u �u$�u!�u" A�u# š �u%�u'�u& 5  š H ��u) ( �u+�u:�u,�u1�u- š�u. š�u/ �u0 š�u2 š�u3�u4�u8�u5 š�u6 š�u7 š š �u9 �u;�u? š�u<�u= �u> š š�u@�u�uA�u~�uB �uC�u\�uD�uP�uE�uH�uF š�uG š š �uI�uL�uJ�uK š ( š �uM�uO�uN : > �uQ�uY�uR�uW�uS�uV�uT�uU , � � c�uX š , š š�uZ š�u[ š �u]�uj�u^�ue�u_�ub�u`�ua ( �uc�ud > : : �uf�uh�ug �ui � �uk�ur�ul�uo�um�un � c c ,�up�uq , H H A�us�uv�ut�uu A 5 5 �uw�u{ �ux�uy�uz  �u| š�u} š  �u�u �u �u�u�u�u A�u�u š   š�u�u 5�u š H�u�u H � � �u�u�u�u �u�u š�u š�u š�u š � š �u  š�u  �u �u�u �u  �u �u�u  �u�u  �u �u �u�u  A  š�u š�u š�u š�u�u�u š�u š�u�u š š�u š :�u š�u š�u š�u š š�u š�u š�u�u š�u š�u š�u š š�u š�u�u š�u š š B�u�w�u�v ї�u Z�u ї�u�u�u�u�u ї�u�u�u ї�u�u�u Z Z Z�u�u�u ї [ [ Z ї [ [ [-�u�v �u�v�u�u�u Z�u Z [=�u [=�u [M []�u�u�u [=�u [=�u [] [=�u�u ї [= []�u�u�u�u�u [m [=�u [= []�u�u�u�u ї�u Z [=�u [= [} [=�u [=�u [= [= Z�u�u�u Z�u�u�u [] [= []�u�u�u [=�u []�u []�u []�u [] []�u []�u []�u [= [] [= []�v��v�v [= [= ї�v [=�v [= [= Z�v ї�v ї�v ї�v ї ї�v ї�v �v ї [ ї [�v�v�v [= ї�v [ [ [�v�w�v�w�v�v%�v�v! Z�v�v�v�v�v [ ї ї [ �v�v [�v�v [ [�v Z [ [ [ Z�v"�v#�v$ \ [ ї [�v&�v�v'�v�v(�v�v)�v1 [�v*�v+ [= Z�v, Z�v- Z�v.�v/�v0 Z \ \ Z�v2�v8 ї�v3�v4 Z�v5 Z Z�v6�v7 Z Z \-�v9 \=�v:�v^�v;�vL�v<�vE�v=�v> Z \M \M�v?�v@ \M�vA \M�vB \M�vC \M \M�vD Z \M \M�vF�vG \M�vH Z�vI Z \M�vJ�vK Z \M Z�vM�vP�vN�vO Z \M \M Z�vQ \M \M�vR \M�vS�vT�vZ�vU \M�vV \M�vW \M \M�vX \M�vY \] \M�v[ \M�v\ \M�v] \M \M Z�v_�vv�v`�vt�va�vg \M�vb \M�vc�vd \M�ve \M�vf \M \M Z�vh�vn�vi \M�vj \M�vk \M \M�vl \M�vm Z \M�vo \M�vp \M \M�vq�vr�vs \M Z Z \M�vu \M Z \M�vw�vy \M�vx \M Z�vz�v \M�v{�v| \M \M�v} \M�v~ Z \M�v�v�v�v�v \M�v�v \M Z Z \M�v Z�v Z \M Z�v \M�v \M�v \M Z�v�v \M�v \M�v \M Z \M�v�v�v�v�v ї [ [ [- \m�v�v�v [- [�v [�v [�v [ [ [- [�v�v�v�v�v�v�v�v \} [ \ \�v�v 3@ [ �v [-�v [�v [ [�v�v [�v [�v [ [�v [ \�v�v�v�v \ ї \ ї�v�v ї [ ї [�v�v�v�v�v�v \ [ [ [ �v�v \ [ ї \ �v�v�v \ ї Z�v�v [ [- ї [=�v�w#�v�v�v�v�v�v�v�v�v�v \ ] ] [ �v�v ї \M�v ї�v \�v�v š \  \�v�v [�v [�v d�v d�v [- d ї�v ї�v�v d d�v \= d�v�v�v�v�v�v ї [�v [�v ]-�v \ ї�v�v ]-�v ]-�v ]- ]-�v�v ]-�v ]-�v ]- \ ]-�v�v [ Z ї Z�v�v�v ї [ ї�v�v ї [ \ [�v�w �v�v�v�v�v�v [= \ [ ї�v ї \ [�v�w�v�w� [ \ [ \ ї�w�w�w�w ]= ]=�w ]M ]= d�w d�w \= d�w �w�w �w�w �w \�w Z�w Z�w Z�w ї ]]�w \M�w [= \M�w�w [ [ ]m ]}�w�w�w�w�w ї�w [-�w [- [- ] [�w [ [}�w �w! [- ]�w" [ \ ]�w$�wp�w%�wR�w&�w>�w'�w.�w(�w+�w)�w* [- ї [ [�w,�w- [ Z Z ї�w/�w< ї�w0�w1 [�w2�w3 d [ d�w4 d�w5 d�w6�w7 d d�w8 d�w9 d�w:�w; d d ^1 ^<�w= \ Z�w?�wF�w@�wC�wA�wB [- [ ^L Z�wD�wE [ ^\ [ [�wG�wO�wH�wN�wI [�wJ�wL d�wK [ d�wM d d \ [ [�wP�wQ [= ^l ^| [ �wS�w`�wT�w[�wU�wX�wV�wW ї [ ^ ї�wY�wZ [ Z [ [�w\�w_�w]�w^ [ d [- [ [ ї�wa�wi�wb�wf [}�wc ї�wd d�we [ d�wg�wh [ ї \ ї�wj�wm�wk�wl [ ї ї [�wn�wo \= ї \ [�wq�w�wr�w�ws�wy�wt�ww�wu�wv [ [ Z [ ї�wx ^ Z�wz�w}�w{�w| \ ї ї _<�w~�w _L [ Z ;8�w�w�w�w�w ї [ [-�w�w ї [ \ ї�w�w�w ї [ [�w�w [ [ ^ \�w�w�w�w�w�w�w�w�w Z�w d [ d \ [�w�w [ ї [ ї�w�w�w�w ї d Z ї�w�w [ ї [- Z�w�w�w�w�w�w ї ^L ]} [�w�w Z ї \} ї�w�w�w�w _< Z [} ]}�w�w ї \�w�w�w ї ї [- Z�w \ Z�w�w�w�w Z _\�w�w�w�w ї�w�w�w�w [�w Z Z�w�w Z _l Z�w ]�w \ \�w \ Z ї�w�w�w ї \} Z ї�w�w�w�w�w ї Z ;8�w�w [ [- ї \}�w�w�w�w \ [ [�w�w \M�w�w \M�w�w \M \M Z \M�w ї \M�w ї ]= \�w�w�w�w Z Z Z Z�w�w�w�w ]= [ [-�w�w [ �w [ �w [ �w [ š [ \ [ ]m ї�w�yO�w�x �w�x�w�w Z ї�w ]=�w�w \M ]=�w�x�w�w�w�w \ ^l�w�w�w�w ї \ \�w \} ї ^<�w�w ^< ^<�w _| ^<�w�x� _ [�x�x [- \ \ Z�x Z [ [ ї�x�x�x Z�x ї�x [ Z ї \=�x �x�x �xb�x�x5�x�x�x�x _�x�x _�x _�x _�x _ _�x�x \M�x \M�x \M \M�x \M�x \M _�x \M _�x _ \M�x �x2�x!�x) _�x"�x# _�x$�x&�x% _ \M _�x' _ _�x( _ \M�x* \M�x+ _�x, _�x- \M�x. \M \M�x/ \M�x0�x1 \M \M _�x3 \M�x4 \M _ \M�x6�x^�x7�xX�x8�x>�x9 _�x: _�x; _�x< \M \M�x= _ \M�x?�xW�x@�xI _�xA�xB _ _�xC�xD \M \M�xE \M�xF�xG \M�xH \M _ \M�xJ�xO�xK _�xL \M \M�xM \M�xN \M _�xP _�xQ _ \M�xR�xS \M�xT \M�xU \M�xV \M \M _ \M _�xY�x\�xZ�x[ _ \M _ \M�x] \M _ \M \M�x_�x` \M�xa \M _ \M�xc�xv�xd�xm�xe�xk�xf�xi�xg�xh _ \M \M _�xj \M _ \M _�xl _ \M�xn \M�xo \M�xp�xu _�xq�xr _�xs \M _�xt _ \M _ \M \M�xw�xx�x�xy�x�xz�x�x{ \M�x| \M�x}�x \M�x~ \M ]] \M�x�x \M \M�x \M�x \M�x�x \M \M�x \M�x \M�x \M�x \M ]]�x \M�x \M�x \M \M�x _ \M�x \M \M�x \M�x \M�x�x \M�x Z \M Z�x�x�x�x�x \M�x�x�x \M \M�x�x \M \M ]]�x \M \M ]]�x _ Z \M�x�x�x�x \M�x \M�x�x \M�x \M�x \M�x \M \M�x�x \M \M�x \M�x \M�x \M�x _ \M�x�x \M�x \M ]] \M�x�x \M \M Z \M�x \M�x _ \M�x�x�x�x�x Z Z ї ї�x [ ї�x�x�x�x [ ї \ Z�x�x�x�x�x�x [ _ [- ї�x�x�x�x [ [ ї [�x�x [ [ [}�x _�x�x�x�x�x�x�x _ _ _ _ _�x _�x _�x _�x�x _�x _�x _�x _�x _ _ _ _�x�x�x _ _ _�x�x _�x _ _�x�x _�x _ _�x _�x _ _�x�y �x�x�x�x [ Z�x [�x�x�x�x \} [ \ \�x�x [} [ [ \ �x�y�x [�x�x�x \M�x \ \M \�x _ _�y� _ \ [�y�y�y�y�y [ ^l [} [�y�y [ \ Z [�y �y$�y �y�y �y�y �y [ _�y [ _ [ [�y�y _ [�y�y _ [ _�y�y�y�y�y�y \ [ \ \�y�y Z \} ї [�y�y!�y�y [ [ Z [�y"�y# [ [= ;8 ї ї�y%�y&�y+�y'�y( Z ]�y)�y* [ \M \ ]}�y,�yM�y- Z�y.�y: \M�y/ \]�y0�y1 \]�y2�y6 \]�y3 \]�y4 \]�y5 Z \] \]�y7 \]�y8 \]�y9 \] Z�y;�yF \]�y<�y= \]�y>�yB \]�y?�y@ \] \]�yA Z \]�yC \]�yD \] \]�yE \] Z�yG�yH Z \M�yI \M�yJ \M�yK \M \M�yL Z \M [ �yN ^\ ]m�yP�| �yQ�z�yR�y�yS�y ї�yT�yU ї�yV ї�yW�y�yX�yo�yY�ya ї�yZ ї�y[ ї�y\�y] ї�y^ ї�y_ ї�y` ї ї [}�yb�yf�yc ї�yd�ye ї š ї š�yg�ym�yh�yk ї�yi ї�yj š ї�yl ї ї _\�yn ї ` ї�yp�y�yq�y~�yr�yt�ys ї ї `�yu ї ї�yv [-�yw [-�yx [-�yy [-�yz [-�y{ [-�y| [-�y} [- ї�y�y�y�y�y ї `"�y `"�y `"�y `"�y `"�y `"�y `"�y `" ї ї [ ї�y �y ї `�y�y ї [ ї [}�y ї�y ї�y�y ї�y�y ї�y ї�y ї�y ї�y ї Z ї�y ї ї�y a ї�y�y Z \�y Z�y ї�y�y�y [�y [ ї�y�y ї [=�y �y [�y [�y�y a [ [ a�y�y ]m�y�y�y�y�y�y [ [ ї�y�y [ [ [ \�y�y ї�y�y [�y�y [�y [�y [�y [ a [�y [�y [�y a [�y�y ^l�y ї ]�y�y \m Z ^< ;8�y�y�y�y�y�y�y�y ] [ [ [�y�y [- Z ї [�y�y�y�y [ [ [ Z�y�y [�y a [ ]= ^\�y�y�y�y�y�y [ Z [�y�y�y�y \M�y \M�y�y [- \M ї \M�y�y \M�y�y \M Z \M \M�y \M�y \M \�y�y Z�y�y�y�y ї�y ї�y ї ї Z�y�y�y ї�y ї Z [- ї�y�y ї ї Z ї [�y�z �y�y [ [ Z�y�y�z Z�z� Z�z�z�z Z Z�z�z�z Z�z Z _< Z�z �z �z Z Z a�z Z Z a�z�z \M ^ [�z�z�z�z�z [�z�z a [ a�z ї \M ї [-�z [ [ �z�zl�z�z<�z�z1�z�z.�z�z- ї�z�z 3@�z! 3@�z" 3@ 3@�z# 3@�z$ 3@�z%�z& 3@�z' 3@�z( 3@�z) 3@ 3@�z* 3@�z+ 3@�z, 3@ b _\ ї�z/�z0 Z [ [ Z�z2�z5�z3�z4 [ ]m \ [�z6�z9�z7�z8 [ ] \M [ \=�z: [�z; [ a�z=�z^�z>�z]�z? \M�z@�zW�zA�zF Z�zB Z�zC�zD Z Z�zE Z b�zG�zS�zH�zK�zI Z Z�zJ Z b�zL�zQ Z�zM�zN Z Z�zO Z�zP Z b&�zR Z [- Z�zT Z�zU Z Z�zV Z b�zX Z�zY Z�zZ Z Z�z[ Z�z\ Z b& ї x�z_�z` _\ ]= Z�za�zb�ze�zc�zd Z ] [ [=�zf�zg [ \�zh�zi [ ї�zj�zk Z [ \ [}�zm�{*�zn�z�zo�z�zp�z{�zq�zw�zr \}�zs [�zt [�zu [�zv [ b6 [ [=�zx \�zy \�zz \ bF�z|�z�z}�z~ ї ^< [�z�z�z�z�z�z�z #�z�z bV�z bV bV�z bV�z bV�z�z bV bV�z be bV # be�z�z bV  (�z�z�z�z ї be Es Z š�z bu ï�z�z ї�z \ [-�z [�z�z ]= \ [ [ [�z�z�z [ Z�z�z�z�z�z�z ї [ [- [�z�z [ \M \ Z�z�z Z \ ї [�z�{'�z�{&�z�z�z [�z [ \ [�z�z [�z�z�z�z b�z�z�z b�z b�z b�z b�z b�z b b b b�z�z b�z b�z b�z b�z b�z b b b�z [�z [�z [�z [�z [�z [�z [�z [ b [�z�{�z�z [�z�z�z�z [�z [ [�z�z [ [�z [�z [ [�z [�z [�z [�z [�z [ [�z [ [�z�z�z�z [�z�z [ [�z�z [ [�z�z [ [} [�z [ [�z [�z�z [�z [�z [ [} [�z�z [�z [�z [�z [�z [�z [�z [ [}�z�z�z [ [�z [�z�z [ [�z [ [ [�z [�{� [�{ [�{�{ [ [ [�{�{�{�{�{ b b�{ b�{ b�{ b�{ b�{ �{ b [ b�{ b�{ b b�{ b�{ b�{�{ b [ b�{�{$�{�{ b�{�{ b�{ b b�{�{ b b�{ b [ b�{ b�{ �{! b�{" b�{# b [ b [�{% [ b Z [ �{(�{) _\ [ [ [�{+�{�{,�{h�{-�{3�{.�{1�{/�{0 \ Z \ [ [�{2 ;8 Z�{4�{7�{5�{6 [- ]m \ [-�{8�{9 \ \�{: Z�{;�{L�{< \]�{=�{> \M Z Z�{?�{@�{I�{A�{E�{B \M�{C \M \M�{D Z \M�{F \M�{G \M \M�{H \M Z \M�{J \M�{K \M Z�{M�{V \]�{N \M�{O \M�{P \M�{Q�{R \M�{S�{U \M�{T Z \M \M Z�{W�{]�{X Z�{Y Z�{Z Z�{[ Z�{\ Z \M Z Z�{^�{_�{d�{` \M�{a \M�{b \M Z�{c Z \M�{e \M \M�{f \M�{g \M Z�{i�{o�{j�{l�{k [- ї ]m�{m�{n \ \ \ [�{p�{s�{q�{r Z Z [ \m�{t�{ \�{u�{v�{z ї�{w�{x�{y ї Z [ ї�{{�{}�{| ї ї ^l�{~ ї ї _�{ [�{ ї�{ ї ї�{ b ї�{�{�{�{�{�{�{�{�{�{�{ Z�{�{�{ _ \ _�{ \ \ _ [= [-�{�{ ї [ ї [-�{�{�{�{ [�{�{ [ [�{ ^ [ [ [-�{�{ \M�{�{ ї�{ ї ї b _L�{�{ ї�{ ї ї be�{�{�{�{�{�{ Z ї [ ї�{�{�{ Z�{�{�{�{�{ ї ї�{ Z ї Z ї�{�{�{ ї ї Z�{�{ ї Z ї Z [- \ �{�{�{�{�{�{ \} [} [ ;8�{�{ [ ї [} d�{�{ ї�{ [ [�{ [ d \�{�{�{�{�{�{�{�{�{�{ [ [- ї [�{�{ [- Z ї [�{�{ ї�{ [ [�{�{ ]}�{�{ Z Z�{�{ Z�{ Z�{ Z�{ Z Z�{�{ Z Z�{ Z b Z ї�{�{�{�{�{�{ [ [ \ \M�{�{ [ \ \ [�{�{�{�{ _ [ [} ^L�{�{ [ [= ї \�{�{�{�{�{�{�{�{ [ ^\ [ \�{�{ [ Z \ [�{�{�{�{ [ [ \= ї�{�{ ]m [- ^| [�{�|�{�|�|��| \ Z [ ;8�|�| [ ] ;8 \M�|�| �|�| �| [- b \ ^< ]m�| �| Z ї \} ї�|�| �|�|�| [�| [ [�| [�| [�| c [�| Z�| Z�| Z�| Z�| Z�| Z�| Z�| Z Z�| Z�| Z c�|!�|D�|"�|A [�|#�|$ [}�|%�|9�|&�|,�|'�|*�|( 3@ Z�|) [- 3@�|+ [ [ ї�|-�|1 [�|.�|/�|0 ї [} ]} [ [�|2�|3�|6�|4 c! [ �|5 c1 [ ї�|7 x�|8 cA x�|: ї�|;�|@�|<�|?�|=�|> [} [ [ \ \M \ ї [�|B ї [�|C [ [ ]= 3@�|F�|�|G�|�|H�|x�|I�|\�|J �|K �|L �|M �|N�|V�|O �|P �|Q �|R�|T�|S CN �|U ~�|W �|X P �|Y �|Z �|[ ~ �|] �|^ �|_�|`�|q �|a�|b �|c �|d �|e �|f �|g �|h �|i �|j �|k �|l �|m�|n �|o �|p cQ �|r �|s�|t = �|u �|v�|w Cy �|y�| �|z�|{ �|| �|} �|~�| �|�| �|�| C]�|�|�| �| �|�|�| �| P�| �|�| �|  �|�|�| �| �| �|�| �| �|�|�|�|�|�|�| �| �|�| �| �| �| G�| �|�| G �| �|�| �|�| �| �| cZ �| �| �|�| �| �| cg ct�|�| ct ct�| ct�|�| ct ct�| ct cg P�|�| �| �|�| �| �|�| �| �|�|�|�| �| �| ~�|�| �| �| �| �|�| �| Ve �| �|�| ~ �| �|�| �| �| �| �| �|�|�| �|�| �| �| C] �|�| �| �| =�|�| �| �| �|�| �| �| �| �| �| �|�| �| �| �|�|�|�| c} c c c�|�| c c c c�|�}"�}��}�} �} �} �}�}�} �} �} �} �}�} �} �} �} C?�}�} C? �} �}�} �} �} c�} c �} �} �} �} �}�} �} �} �} �}! c =�}#�}$�I�}%��}&�}�}'�}�}(�}d�})�}G�}*�}9�}+�}2�},�}/�}-�}.   �}0�}1 Cy �}3�}6�}4�}5 d Ve �}7�}8 =�}:�}A�};�}>�}<�}= 8w =�}?�}@ Ve ~ �}B�}E�}C�}D   CN CN�}F <u d�}H�}V�}I�}O�}J�}L �}K  �}M�}N �}P�}S�}Q�}R  Cy �}T�}U  �}W�}\�}X�}Z�}Y I �}[ �}]�}`�}^�}_ C]�}a�}b �}c  <u�}e�}�}f�}~�}g�}m�}h�}k�}i�}j  = �}l  �}n�}q�}o�}p = ~ d' �}r�}}�}s Ñ�}t = =�}u�}v =�}w =�}x =�}y =�}z =�}{ =�}| = d6 = =�}�}�}�}�}�} Cy   �}�} dD �}�}�}�} C] ~�} TI �}�}�}�}�}�}�}�} d d' �}�} = CN �}�} �} �}�} 8w�}�} = Cy�}�}�}  dQ d^ dl�}�}�}�}�}�}  <u CN�}  �} �}  �}�}�}�}�}�}�} �}�}�}�}�} dz =  <u �} š  �} �} �} �}�}�} �} �} <u I�} �}�} d�}�}�} d Sl d  �}�}�}�}�} �}�} �} Ve �} �}�}�} �} =�}�}   =�}�}�} �}�}  �} Cy �}�}�}�}�}  �} �}�~s�}�~@�}�} �}�}�}�}�} �}  �}�} t�} d �} d d �}�}�}�}  d d�}�} �}�} d �} I�} I �}�~0�}�~)�}�}�}�} I �~��~ �~�~�~&�~ SP d�~�~ d�~�~�~�~�~ �~ d�~ �~ �~ d d d d�~�~�~�~ d d d d�~�~ d d d f2�~�~�~�~�~ d d fA�~ fP fP f_�~ d fP f�~ d�~�~! d�~ d�~ d f_�~"�~$�~# d d fA�~% d f d�~'�~( hz h h C]�~*�~-�~+�~,  d  d�~.�~/  h �~1�~8�~2�~5�~3�~4 I7 t ~ �~6�~7 CN �~9�~>�~:�~; h  �~<�~= h d^ h�~? ~ ~�~A�~^�~B�~Q�~C�~J�~D�~G�~E�~F   CN�~H�~I d Cy  �~K�~N�~L�~M t�~O�~P =�~R�~X�~S�~V�~T�~U = t  t�~W   �~Y�~\�~Z�~[   �~] h�~_�~i�~`�~f�~a�~c�~b t�~d�~e t �~g �~h  C]�~j�~o�~k�~m �~l  Cy�~n CN �~p�~r�~q  Cy�~t�~�~u�~�~v�~�~w�~�~x�~|�~y �~z Cy�~{ h Cy�~}�~~ �~ Cy �~ h�~�~�~  �~�~ = �~�~�~�~�~�~  �~�~  C]�~�~�~�~ h = �~�~�~ i =�~ =�~ =�~ =�~ = =�~�~ = =�~�~ = i = �~ CN �~�~�~�~�~�~�~�~ Cy  �~�~  Cy �~�~�~�~  �~�~ =�~�~�~ �~�~�~ �~ �~�~�~ �~ DZ�~�~ J BD I�~ �~ �~ �~ i �~ �~�~ �~ �~�~�~ �~ DZ�~�~ J BD I�~ �~ �~ �~ i  �~ �~�~�~�~   �~�~�~ �~ CN h I  �~�~�~�~�~�~�~�~�~�~ ~ š�~�~ CN = I �~ �~  C]�~�~�~ �~�~ = ~ CN �~�~  I �~�~�~�~�~ �~ �~  Cy d �~ �~�~ �~ �~���~�~�~�~ <u = I�~ I7 ���  ~ �   � � �� �!� � � � �  ������  CN ��  h <u������ I� <u I � I ��  �"�=�#�)�$�& �% �'�(  P  �*�;�+�:�, �-�3�.�0�/ �1 �2 �4�7�5 �6 �8 �9  �< P <u�>�A �? �@  P�B�G�C�D P �E �F ~ ~ �H <u ~�J��K��L��M�v�N�j�O�]�P�W�Q�T�R�S   �U�V ~ �X�[�Y�Z <u = �\ d�^�d�_�a�`  �b�c Cy i$ �e�g�f = CN�h�i t = �k�r�l �m�o �n i3�p�q Cy �s�t Cy�u iB �w��x��y�{ �z �|��}�~ ���� iK�� iK� iK� dQ�� dQ� dQ iK dQ iK� iK� iK� iK� iK� iK dQ iK�  �� = t ��� � ���  ~ �  ������ � h �  Cy��� iX � =� � ��  = ��������� � ig d� ��  = ��� � =���� C]  ~�   ����� �� � Cy Ve �� � �� C] ���� �  ��  �� I  = ��������� = �� �� <u = <u ���  <u���� � �� � 8� 8 iu ��� I7 �� � =� i = �������� CN Cy �� Cy ���� I �� Cy � �� � � � <u = CN��   ���� =�� ��m��!� � �� � �� G �"�B�#�7�$�)�%�' �& C] �( = �*�-�+�, = = Ve�.�1�/ <u�0 š š I�2�3 �4 �5 �6 DZ�8�< =�9�:�; <u I7  I7�=�?�> �@�A = CN CN ~�C�R�D�K�E�H�F�G C] =  CN�I�J t  = �L�P =�M�N <u�O =  =�Q Cy = Cy�S�f�T�Y�U�X CN�V �W I C]�Z�[  I �\�] D D�^�_ D�` D�a D�b D�c D�d D�e D i D�g�j�h�i = CN I7�k�l <u CN Cy �n��o�v �p �q�r�t�s  �u  �w��x�}�y�{�z  �|  �~��  ~�� ~  t ���� � CN �� C]���� C] = �   ���������� Cy�� Cy Ic �� Cy�  ��  t i������ = i � = �� �  �� = C] =�������  = ��  � ��  � <u� cZ � � �  ����,���������� � C]�� Cy �� � =�� = d � � ��   ���� � �  i� � �� ��� Cy ���� ��  d�� ����� �� ���� t� I��� j cZ j� t h ���� t�� �� I I H��  �� t�� t = � �� �� � �� ���� j j j j�� j j j j Cy�� � �  j ��%�� �� <u <u �!�$ Cy�"�# "  �&�( �'  �)�* �+ �-�g�.�F�/�;�0�6�1�4�2�3 �5 = �7�9 �8  �: I7 =�<�C�=�@�>�? = Cy�A�B CN C] = �D �E  I�G�S�H�N�I�L�J�K  I = �M  �O�Q�P �R d�T�\�U�Z�V�W �X =�Y = d6�[  �]�b�^�_ �` =�a = �c�d d �e �f = = i�h��i�x�j�r�k�n�l�m  �o�q�p ~ �s�v�t�u = �w =�y��z�}�{�|   �~   CN���� Cy =�� =  �������� d' ~ � d6 ���  � i� =� i k�� ��� � :� š�� š� š� š�� š š� š� A š� š� š š ������ = t�  ~ �� �� = C]��� ���������� =  Cy d�  =����  ~ ~�� ���� <u� Cy =�  ���� =  Cy =�� =  t =�������� = Cy �� Cy ~ Cy ��� t Cy ���� � �� ~ ~�  Cy���� ~ Cy�� d  =���� ������ � C]�� <u ����   ��  k ������� Cy ~� Cy ���� CN  � ~ Cy� �� �� � t���  �  ���� � ��  �� ��=� �1�!�(�"�$ �# �%�& CN�' h <u�)�,�*�+ = =�-�. �/ t�0 t ly�2�6 �3�4 �5 Sl�7�:�8�9 �;�< �>�P�?�F�@�C�A�B =  = �D�E l �G�J�H�I <u  ~�K�L �M�N�O # �Q�V�R�T�S Cy �U �W�Y �X I�Z  t �\��]� š�^�_ š�`��a��b��c�~�d�m š�e�f š š�g š�h�i š š�j�k š�l š š : š�n�o š�p š�q š�r š�s�x�t�v�u š š �w š�y�{ š�z š�|�} š š� š š� š� š� š�� š š�� š� š š <��� š š (� š H�� š š� š� š� š� š�� š š 5��� š� š� š ?�� ?� ? ?�� ?� ?� ? ? � š š�� š š�� š� š� š� š�� š�� š� š� š� š� š��� š�� > (  š >� > š� š� š� š� š� š� š š� >� ( š���� š���� š� š š�� š� š� š� š š� ( š� š� š� š š�� š š� š � š š� A š�� š� š�� š��� š š� š�� š š � š š�� š� š� š� š ( š š� š�� š������������ š š� A š� š�� š š c� š š� š � š� š š���  š š EM š� š� š��� š� c š ( š� š� š� š� š ( š� ���^��^� š���� š� �� š� š š��u��J��3��)� H� H� H� H l� l�!�" l�# l l�$�% l l�&�' l l�( l l�*�. H�+�,�- H l l H�/ H�0 H�1 H�2 l H H�4�?�5�;�6 H�7�:�8 H�9 l l l l H�< H H�= l�> l š�@�G�A�E�B�C H š l�D l l H�F H H H�H H�I H H�K�f�L�[�M�W�N�T�O�P H H H�Q�R�S m l H H�U�V H H H l H�X�Y�Z H m m$ m4�\�c�]�a�^�`�_ m$ š l H l H�b H m H�d�e l H H�g�q�h�l H�i�j�k H H H H�m�o H�n H H�p H H H�r H H�s H�t mD H�v��w��x��y�}�z H�{�| H H H H�~� H� H� l š�� l H H m H�� H H� H H��� H� H�� H H H m�� H�� H H H��� H l H H mT������ H� H� H m� H H� H m����� H md H�� H H H l��� H H H H� H H��� H� H�� H H m m4�� H�� H H H� H�� H l H l����y������������ y ��� �� ן i #� �� E  ���� š  r ƙ�� à ������ ��� Q   , L � ï�� L L x����� �� ּ Dz Dz ï mj ï�� mz ̀ � ï� m ï�������� � � j �� ï� � ł Œ ï���� ` V�� ; �� 6�� 3 ï�� <f <f������ � m� � , Z ,� �� <f 6S <f 6� 3 ï�� G V :���� ï Z ��  ���� ï Dz ï Dz � <f� �K�!�9�"�2�#�/�$�&�% <f ï 6�'�-�(�) š  š�*�+ š�, š š �. ! ! m�0�1 ! d ï �3�6�4�5  ï �7�8 š   �:�@�;�>�<�= Ʒ ï  �? ï �A�D�B�C ѧ Z �E�H Z�F�G c š c�I ߡ �J à�L�\�M�U�N�Q�O�P Ʒ ï�R�T `�S m m m x�V�Y�W�X  ï G �Z�[ Ʒ �]�d�^�a�_�` ï Z G Z�b�c L ï ï �e�h�f�g s N Ʒ �i�j Z�k `�l�x�m m ƙ�n�o�s ƙ�p�q ƙ�r ƙ ƙ Vt�t ƙ�u ƙ�v�w 5C < 6D ƙ m 5C�z��{��|��}��~���� � 4? Z ü�� 7�� ł j ł G����  Z ï Z�� ï ƨ 4?����� ƨ ï š�� ï s  G���� ƙ ï��  Z ��������  Ʒ ï�� ƨ ł j����� ï  ��  ��� x m m n ���� :y� G�� ��� 6 6 PB n ï s���� Z � n* �� ������ n9 nH nW P$�� nf n nu n���� n n n n�� n 6 n n�� ï ï ƨ����������� ï�� 6 6 �� ï� � ï 3 ï�� š� ƨ š�� Z ܌ Ʒ������ W š�� ł � ï� 8 7 8���� ƨ � G� š š �� ï s Ʒ ï�� �������  r �� n Z 6 Z���� Ñ 7 Z� o � � � ց o������ ï ƨ �� Z ï ���� G� ł � � B H š� Z��� �s�!�G�"�;�#�4�$�1�%�0 �& ï�' ï�( ï�) ï�* ï�+ ï�,�- ï�. ï ï�/ ï o' �2�3 ï ƨ  �5�8�6�7 ;8 i G �9�: ƨ ƙ c�<�@�=�=�>�< ï�?�@�A o5 �B�@�C��D��E�d�F�U�G�N�H�K�I�J  oD oS ob�L�M oq o o o�O�R�P�Q o o o o�S�T o o p p�V�]�W�Z�X�Y p* p9 pH pX�[�\ Tv pg pw p�^�a�_�` p p p q�b�c q q q T�e�t�f�m�g�j�h�i r s s s!�k�l s1 s@ sP s`�n�q�o�p so s s �r�s s s s s�u�|�v�y�w�x s s T �z�{ s t t t+�}��~� t: tI tX th�� tw t t t���������� t t t u�� T  u u���� u u u u�� u v o5 v������ v+ v: w w�� w w/ w? wO���� w_ wo w w�� w w w w�������� T w w w�� x x x+ x:���� xI xX xg xu�� x  x N������ x x x x�� x x x y ���� y T  y*�� y8 yG yW yf������������ yu y y y�� y y y y���� y y z z�� z. z= zL z\������ zl {8 {G {W�� {f {u { {���� { { { {�� { { | |�������� | |/ |? |N�� |^ |m |} Tg���� | | | |�� U- | | |������ | } } }$�� }3 }B }R }a����  T }q }��� } } } }��"���� �� �� } } } }� � ~  T U�� ��� ~ ~) ~8 ~G�� ~V ~f ~u ~������ ~ ~ ~ ~�� ~  _ o����   � �! �#�2�$�+�%�(�&�'  , ; J�)�* Z i w �,�/�-�. T U�0�1 �3�:�4�7�5�6   !�8�9 0 U ? N�;�>�<�= ^ n ~ �?  tI y�A��B��C�b�D�S�E�L�F�I�G�H  oD oS ob�J�K oq o o o�M�P�N�O o o o o�Q�R o o p p�T�[�U�X�V�W p* p9 pH pX�Y�Z Tv pg pw p�\�_�]�^ p p p q�`�a q q q T�c�r�d�k�e�h�f�g r s s s!�i�j s1 s@ sP s`�l�o�m�n so s s �p�q s s s s�s�z�t�w�u�v s s T �x�y s t t t+�{�~�|�} t: tI tX th�� tw t t t���������� t t t u�� T u u���� u u u u�� u v o5 v������ v+ v: w w�� w w/ w? wO���� w_ wo w w�� w w w w�������� T w w w�� x x x+ x:���� xI xX xg xu�� x  x N������ x x x x�� x x x y ���� y T  y*�� y8 yG yW yf������������� yu y y y�� y y y y���� y y z z�� z. z= zL z\������ zl {8 {G {W�� {f {u { {���� { { { {�� { { | |�������� | |/ |? |N�� |^ |m |} Tg���� | | | |�� U- | | |������ | } } }$�� }3 }B }R }a����  T }q }�� } } } }�� ���� ���� } } } }�� ~  T U�� �� � ~ ~) ~8 ~G�� ~V ~f ~u ~������ ~ ~ ~ ~�� ~  _ o����   �� �!�0�"�)�#�&�$�%  , ; J�'�( Z i w �*�-�+�, T U�.�/ �1�8�2�5�3�4   !�6�7 0 U ? N�9 �:�; ^ n ~  ï �>�? V ƨ ł �A�D�B�C ߡ F�E�F F  ï�H�_�I�Q�J�O�K�N !�L !�M ! Dz ! !�P i�R�W�S�V�T �U Y ü�X�\�Y �Z�[ 5 c 5�] Z�^ Z �`�l�a�f�b�c š �d �e 6�g�h ܜ �i�j�k K G 54 8;�m�p�n�o F ï ï�q�r . ü Ʒ x�t��u��v�~�w�z�x�y z �{�| ̀ �} ���� Z ƙ  Z�� Z � � j������ š s� �� M ��� M �� s  s ���� 7 Z �� Z���  7  K s Z�������� s ƙ G�� s V Z����  Z�� ƙ �  � . ������ 3� 7 P �� ƙ ܹ L�����  � ł ł �� i � < L�� ����������  Œ G �  r ï���� ƨ ��  y ƙ ������ :�  :� š� š  5��� � >  � G ց� \ ���� # ��� Œ� š š ��������  ü G i�� ߡ ƙ s r���� s L �� Z s 4?������� ł �� 4 ï�� ��  ƙ� �  ï � �6��(�� ���� i ��� ƙ�� Œ W� 4l� Xc���� l Xc { � Xc Xc Œ�!�%�"�$ �# d �&�' r Z�)�0�*�-�+�, ü G ï �.�/  s�1�3 �2 y�4�5 ï !�7�J�8�A�9�>�:�; �<�= ! !�?�@ ! ! ï�B�G�C�F !�D !�E ! m ! Ñ�H�I F x Dz �K�U�L�O�M�N  ` Z�P�Q Z �R�S�T ּ Dz �V�[�W�X ü 8 �Y ï�Z ï N�\�] ü ` ï�_��`��a š�b š�c��d�o�e�n�f :�g�h š : :�i :�j :�k�l :�m : : ( š �p��q��r�| š�s š�t š�u�v�y�w�x ( š ( š š�z š�{ š (�}  c�~ c�� c c� c� c� c� c� c�� c c š� � ( �� š�� š� š� š� š� š�� ( š š (�� š ( : š���� š���� š� š� š� š�� š > š >�� š� š� k š��� š c š š k��� š��� š E] š� š š s š������������ š š��� D � :� š š š�� ��� � � ����� d� d� d��� d d� d  d š Ve�������� š� š� š � š�  � B� š š� š A� š š ������ d�� d iB d d�� d d � d d� d� d � d d�� d d�  d��z����������� > š � � š š� š� š� š š � � š š � �>� �&� �� �� �� 8 8 " š� 2 š���� B : D Q�� š B a p������  � š š � �#�!�" d E d�$�% š š �'�5�(�.�)�+�* š š R�,�- š A >�/�2�0�1 8 š �3�4 F  ' š�6�:�7 š�8�9 7 š š F�; š�<�= V f �?�`�@�O�A�I�B�E�C 8�D u �F�G š Em�H Em E š�J�M š�K š�L š d�N E d�P�X�Q�U�R�T�S d d d�V d �W d�Y�\ d�Z�[ d d�]�^ d d�_ d�a�q�b�i�c�e�d d �f�h�g d d � d�j�n�k�m d�l d d E d�o�p d  d�r�w�s d�t�u d E d�v d�x d�y d d *�{ š�|� š�}�~��� > A , ����� : D >� > A���� > š š A�� : A  � š� � � � #�� š � �� E��������� E 4 iu�� 8- F E iu E��� ٜ F 8 E���� E� E 4 E� F E E�� E E F����� E E� F E��� E E B� E E B��� E� E E B� E� E E B š�����h�� š���� š�� š�� š� š š k��� š š� D š��� š > � �� z��� š� š� š  š š š��� ������ 8�� 8 8� 8�� 8 �� 8�� 8� 8 8 F B 8�� 8�� 8 8 8�� 8� 8�� 8 8� 8 F����� 8 8�� 8 8�� 8 8� F 8��� 8� 8 �� 8 8 8��� � 8 � 8 8 � �V� ���� 8 8� 8 8� 8�� 8 F� F 8��+ 8���$��" ���� 8� 8 8� 8 8�! 8 8�# 8�%�(�& 8 8�' 8 8�)�* 8 8 �,�R�-�?�.�6�/ �0�3 8�1 �2 8�4 8 8�5 8 8�7�8�;�9 8 8�: 8 F�<�= 8 F 8�> 8�@�H�A�D�B 8�C 8 8�E 8�F�G 8 8�I�P�J�N�K�L 8 F F�M 8�O 8 8�Q 8 8 8�S�T �U F F�W�d�X�Z 8�Y 8�[�b 8�\ 8�]�^�` 8�_ 8 F�a 8 8 F 8�c 8�e 8 8�f�g 8 �i��j�p�k�m�l š š �n�o š š�q �r��s �t�u��v� �w �x�y �z �{ �|�} �~ ( ( ���� � � � � � � ( � � �� � � � ( š� š ����� š š� š�� š� š ( š� š� š š � š��������� d d Q�� d a [ e���� iB d o z�� d ������ �� d ���� d�� d  ��������    d�� d ) 3 =���� H S ^ i�� r | ������ �� d d ���� E d �� E d�� š������� �� š š� š�� š� � k � š� š š�� š� š � š š� š� š���� š�� š š��� š� ( š š��� š� š� š š�� š� š š ��� š š� � š� š� š š� š�� š� š š� � š š� š ��@�� š� � 8� 8� 7 8��2 š� š� š� š� �!�" š �#�$�+�%�(�&�' B > �)�*  . >�,�/�-�. F Z N ^�0�1 n Y ~ �3 �4�5 �6 �7 �8�9 �: �; �<�= �> �? 7�A š�B�N�C�K�D�J�E�H �F�G š š �I š š �L š š�M ( š š�O�P�\�Q š�R �S�T �U �V �W�X �Y �Z �[ �] : c �_�_�`��a��b�|�c��d��e��f�s�g�l�h�i Cy �j�k  Ic C] �m�p�n�o = Cy�q�r <u = <u�t�|�u�y�v�w =�x t �z�{  t �}��~�� Cy� Cy Cy  ��� <u �� �������� CN CN ��  =  ���� I7 CN ~ ��  C] t ���  � <u ����   � h Cy������� �� <u  =����   �� = d I������ x ҉ �� Q i ��� Z à�� o ü ������ H� H H�� H H m H��� H l H H� H l��� H H�� H�� H H H l���� H H H H�� l H m$�� < H H��%���������� 8  ܜ ï�� s Ʒ ̀ ����  x������  Pp Pp <W � r ������ ˘ �� s ���� ï s G Z�� �� ï� ï Dz z������ �� š�� 6 ł Ʒ� � s ߡ <f� Dz ï�� !� ï �� Z z ������ G s�� ï = ��!�� s x  ƙ�"�# Ñ�$ :y Dz ï�&�O�'�>�(�3�)�/�*�,�+  $ y�-�. 4 x 3�0�2�1  ï �4�7�5�6 ï ƙ s �8�< �9�:�; 6 6 8 ï�= B Q�?�F�@�C�A�B Z š �D�E Z x i�G�L�H �I š�J�K  a o t�M�N s ü s�P�d�Q�]�R�W�S�T > š�U 8 �V ł�X�\�Y �Z�[ 8 r r 8Z ƨ G�^�a�_�` y �b�c . �e�r�f�i�g�h ï ü V �j�m ï�k ï�l ï �n�o ł�p�q j j ł�s�y�t�x 8�u�v�w  ü <,  ƨ L�z�{ Z Z�}��~ d� d� d� d� d� d l d��������� H H� H l H� H� l H�� H� H� H H H�� H H H���� H� H� H H�� H� H H�� H l H H������ H l l H H� H H���� H . H l� H . H���������� l��� H H H H l H� H l H���� m$ l H l�� H l H H H��� H�� H H� H H� H l H���� H� H� H mj H��� H H l H��� H�� H H l H H� H� H l����K��<� ������������� 8 � 8�� 8 8� F 8 8� 8� 8 8 G� 8� 8 8 �� 8��� 8 8�� 8 8�� 8 8� F 8 8�� 8 8���� 8� 8 F� 8 8� 8 F�� 8�� 8� 8 8 � � 8� 8� 8 � �� 8 8 8� 8 ��'��� 8��� 8 F 8� 8 8 ��!�� 8� 8� 8� 8 8� 8 �"�$�# 8 8�%�& 8 F 8�(�1�)�.�*�,�+ 8 F 8 8�- 8 8�/ 8�0 8 �2�7�3�5 8�4 8�6 8 8�8�:�9 8 8 �; 8 8 �=�> š š�?�@�D š�A�B�C š š�E�H �F�G š H š š�I š�J < �L��M �N��O��P�]�Q�X�R�U�S�T D š �V�W  š ? �Y�Z š 5a�[�\ š š�^��_�e�`�b š�a �c�d S S�f�i�g�h E� F�j� .�k�l >�m�v�n�r >�o�p >�q > Y > >�s >�t�u > > �w�~�x�{�y >�z > Y > >�| >�} > ��� > >� Y > >� >� > ~ E������  n �� - ^ R���� = M š ] � m }������� š š�� � ���� > A �� H 5 H ������ š @ š @ š� ( š š��� š š� š �������� š��� (���� ( (� (��� (� (� ( š� š ( š� c� c c� c�� c� c� c c�� c c : š�� š � :� :�� :� :� :� : :���� � � š š� š� : :�� :� : :� š :�������� š :� : :�� : : > ���  c� š��� š  š š� š����� š :� ( �� š : š š��� �� �� 8�� 8 š� š � � š� š� š� � � š��� � š š� š��� š� š š�  š����d����d��=��0� �'�!�$�"�# Z Œ ƙ �%�&  ƙ �(�-�)�* �+ ï i�, i �.�/ :y Œ ց�1�6�2�4 ï�3 Z �5 à i�7�:�8�9 š  ï �;�< > ï �>�O�?�H�@�E�A�D�B �C Dz ï Dz  �F�G y ƙ �I�L�J�K ƨ�M�N ł �P�]�Q�V�R�U�S �T ց ł ց k ï�W ï�X�[�Y�Z ּ Dz ï ּ�\ ï WD ï�^�a�_�` Q5  G�b�c ï . š Z�e��f�|�g�v�h�p�i�n�j ł�k�m �l �o ܹ �q�t�r š�s ` ߿ `�u  L Q�w�z�x�y L ˘ �{ Z�}��~��� s   ï Z� r���� r ƨ G�� �  �������� š ï ƨ�� ű� 7� 8 7 s����� ï�� 5 c c <  Z�� x z W���� Z� ï Z�� Z  ����  �� x� ց��� ü  ü������������ s  � ï Dz�� ƙ���� �  � Q �� š ߡ  ű������ ü  � >� > <I��� ܌� WS :M ƨ���� B& ƙ � s L��������  s ` ƨ�� Ʒ � r�� ï Q^ ï���� � � ü �   Z������ � �  s� �� Z ï� � 65���� ï s r ���� !� � 8 Dz !��3�� ���� � � ܌ ï ü� � ï ! !��  ���� ƨ�� � � � �� ' � z� à à N�� > ƙ Œ�!�-�"�%�#�$  > �&�) �'�( ! 6S !�* ï�+�, 8 Vt K�.�0�/ Ñ �1�2 r ! ;8 r�4�I�5�@�6�;�7�:�8 r�9 !  ! r F�<�? r�=�> F - F r �A�D�B�C �E�F  ï�G �H š 5 š�J�[�K�X�L�W�M ܹ�N >�O > >�P >�Q >�R >�S >�T�U > >�V > <W  �Y�Z  r x Œ�\�_�]�^ ʗ Z š�`�a ł >�b �c �e��f��g��h��i�|�j�o�k�n�l �m ï ֐ ï  ï�p�{ ƨ�q �r �s �t�u �v �w�x �y �z �}��~�  ��� ( H 5 c�� Z� ï � < ������ ï G�� x ï x ���� Z š \�� Z :y  G�������� L G ł ��  ï `���� ց r s x��� ï� O Q^ x ƨ������ x ł ��   x���� ï A ű :y�� `� � K ����������� �� 6 8 6 Ʒ �� s 7 ï 7���� Z  Z�� Z ���� ï� Œ �� Z �  � ן Q����   [�� V��� ��������� Z  š ï���  j ł š���� š s r�� Z Ʒ ������� 2 � X 4? G�� Ʒ ï ����� o �� � r� ł ł ��W��,� �� �� �� � ï ` ��� c k c A ü� c š���� Ʒ d Z ï�� š !��"���� F ! ! Dz� �! ̀ s ł 7�#�% Z�$ Œ s�&�) à�' j�( j ƨ �* �+ 6&�-�A�.�6�/�2�0�1 8  ƙ ƙ�3 ł�4�5 ł ց ł�7�>�8�;�9 �: j �< ï�= ï m�?�@  ï �B�P�C�M�D�E `�F Z�G �H�I �J �K  �L S �N�O Ʒ  ƙ�Q�T�R�S ï y�U�V ƙ 4/ o �X��Y�q�Z�h�[�a�\�]  `�^ r�_�` PP y �b�f �c�d�e   V�g �i�l�j�k Ʒ s  V�m�n Z�o�p š š�r��s��t�u s �v�w �x �y �z �{ �| �} �~ � 7 ��  :���� G š ï �� G r ƙ� Dz� Dz�������� ï�� ï ï ���� š š Z� ������ G�� ��� K 6 8 ï ���� r�� 4/ ï�� à� R à ï� Qk ï����]�������������� ;8� ;8�� ;8 ;8� ;8�� ;8� ;8� ;8� ;8 ;8 ; � ˘��  L ���� ƨ E� �� 6 6 6�� �� ï ï 7 ������ x Z à ܜ���  ï 6 L G�������� M  . ��  Q^  Q5  �� y� ü��   �������� š  Z�� !��� r  r��  r r =����� ! F ƙ !� ł�� ���� š G� � ï x ł� �� �  �� � t  ï��4��#������  Ʒ �� ï d Dz Z�� � ü�!�" ƨ ï ï�$�+�%�(�&�' ï ï Z�)�*  �,�1�- !�. F�/�0 * 9 ! <f�2�3 Z s �5�J�6�=�7�:�8�9  ` �;�<  Z �>�D�?�@ ƙ �A�B�C 8 Vt ƙ�E�F s Z�G�H�I ï ּ ï ּ�K�R�L�O�M�N y Dz ` �P�Q mz �S�X�T�W ï�U ï�V ï C š Q�Y�Z x �[�\ �^��_��`�r�a�h�b�e�c�d Ʒ ܹ �f�g š�i�o�j�k ï y �l�m�n ï Qy WD ï�p�q ` p ï�s�z�t�w�u�v ` �x�y :y V x s�{�~�|�} r �� 7� ł s�������� ƙ Z��� 8 6 �� š ƨ ���� Z Ʒ s ��  ü ������ Z�� Dz ï 3 š�� Œ ï�� ł j ց���� Z� � �� � � � �� � : s �� s ï ���������� r ƙ� � Dz ï 3����� �� $ r���� V ƙ ��   ������� � ï WS Dz �� š ü c��� A A k���� ü G  � Z��������   7�� Z d ` ����� � ï ï OG ܌ �� ł r s š������� � 4 x 4  Tg��� à N����� ��  # ���� Wa QQ QQ ï�� ï � ƨ ł� ł � �� �_� �:� �+� �����  ł Œ�� x A �� 8��(��%��#� 8� � 6� 6� 6� 6 6� 6�! 6�" 6 6 �$ �& �' �)�* Z s �,�3�-�0�.�/ Z k �1�2 =  `�4�7�5�6 = > \ �8�9 . ƙ !�;�L�<�E�=�@�>�?  !�A�B s =�C�D š ( š�F�I�G�H F ! ï�J�K ï Z �M�T�N�Q�O�P Dz 7 Z �R�S ï ł �U�Z�V�Y �W KH�X KH r�[�^ Ʒ�\�] G $ Z�`��a�r�b�h�c�e�d ï 7� ï�f�g š š �i�l�j�k  s  �m�q �n�o�p ; ׁ < N�s�}�t�w�u�v  �x�|�y $�z�{ ï Dz ï Dz  �~� �� 4?� �  �� � � �� K� K� K K�  K �������� ƙ " y�� Z r ï���� Ʒ ` � ������ ƙ� s ï� ï 6�� ï� :y 6� 8���� Ʒ Œ �� Œ� ƨ� 0 ƨ ������������ s ƨ ҉�� Z ï� �  ���� = à�� � � ? ������ 4 š ï�� ƨ  ���� ï ��  ï ï Z�������� Z��� < A H ʗ� ï�� H A :��  ƨ� � , ����� �� N ^ n ~  ��  ������ G  �� ł ` VG ���� ï� ߡ <� < ��� ƨ `��2��!������� � x� x x� � x x� � x� x� x x� L x d� � ��  �� ï ï Qk���� < G�� ƨ ï �"�*�#�'�$�&�%  ˘ š �(�) Z ü à�+�-�, š �.�1�/ Z �0 #� ł �3�I�4�=�5�:�6�9�7 c�8 Qk 0 ï �;�<  ï ƙ�>�D�?�@ �A ł�B�C V ( ( V�E�F $ �G �H �J�Q�K�N�L�M š �O�P V $ ƙ�R�Y�S�V�T ƙ�U 7� 7� �W �X ï 6 ï�Z�^�[ �\�]     Z�`�a�;�b�q�c��d��e�}�f�r�g�l�h�j�i   �k �m�p�n�o   �q  <u�s�z�t�w�u�v t  CN �x �y Cy �{ �| Cy�~�������  t  �� �  �� Ve   ��� ��  ~  ��� I �  �� = i =������� �� <u ���� = ��  � t ������  ��� t   =�� �  �� � C] �  �������� CN  �  �� � ��  ��� � =����  Cy = CN�� =  ��%�� �������� ��� �� � � � � � � c ��� � � � � � � c � � � � � � � c �� ~����  �   ��� ���  CN CN ���� ~ �� �� Cy Œ � �� �� � �� � B  ��� � =������  =��   =��#� �! �" CN š �$  �&�T�'�9�(�1�)�+ �*  CN�,�- d =�. �/�0  d�2�5�3�4 d �6 �7 �8 t = C]�:�L�;�J�<�G Cy�= =�> =�?�@ =�A = =�B�C = =�D�E = =�F i =�H  �I k �K  C]�M�O�N   �P�S CN�Q =�R t  �U�b�V�]�W�Z�X�Y = Cy �[�\   �^�`�_  �a   �c�j�d�g�e�f š�h�i I7 ~�k�n�l�m CN = �o�p �r��s��t��u��v�~�w�{ �x �y�z # #�|�} I7 �� � �� =  ������  ��  �  �  =��������� I� = ��  Cy���� ~ ~�  ~ �� ��� t =����  C] ~ ~� CN �������� � �� = ���� I <u  � d CN������   P�� P d C] ���� �� j = j C]  � ~ ��������  d  ��  I7 P P��� P   �����  ��  t ����  ~  ~ I�  ������ �����   �  CN��� �� = CN  ��� Cy   �������� P  cg P  ���  = <u � ��  CN������ �  � � �  � �   ���� � P P�  ���� <u P��  d ��$��! ��  �" �#  ~ �%�5�&�2 �'�( �) �* BD�+�, BD�- BD�. BD�/ BD�0 BD BD�1 BD�3�4 š P P =�6�8 �7 �9�: P   �<��=��>�}�?�[�@�O�A�E�B�C  �D  �F�K�G�J �H�I CN =   �L �M ~�N dD d^ dD�P�U�Q�S �R  �T  Ve�V�Y�W�X CN = �Z  CN <u�\�n�]�g�^�a�_�` ~  �b�c  �d�e�f # #�h�k�i�j  �l�m �o�y�p�v�q�r C]�s �t�u j   k�w�x  �z�{ P �|  Cy�~����� ���  P ���� I7 ~ Cy �� t���� � �� d � ��  ��������  = d�� ~ P ���� P   �� ���  =  =�  cg ���� �� � �� Sl Cy � �  ������ ��� � �� t Cy Cy � � ��� ����   �  �� � � P� P� P =������ ���   � � CN �� � � ���� P ~ = �� * ~���� ��  ���  � � � 8 � �� � Ic �� <u  I7��t��6�����������  CN�� �� �� � = = F� �  = ������ � P P�����  ~ �  =��   ��*� �$�! �"�#  �%�(�&�' = CN �)  �+�0�,�. �- = �/ = �1 �2 �3�4�5 C? B_ c�7�W�8�E�9�>�:�< �; �= �?�B�@�A   �C�D �F�M�G �H�L�I �J�K 8 8 Cy �N�U �O �P�Q �R �S �T �V = �X�d�Y�_�Z �[�^�\ �] t S t �`�b �a <u  �c  �e�j�f�g P�h�i P  CN�k�n�l�m I t  P�o�s �p�q�r a   dQ �u��v��w��x�}�y�{ �z  �| = �~� � d = � Cy ���� �� o CN�� Cy ~ P���� P  � �������� <u Cy  d'��   Cy ���  �� ��  Cy �����  = �� C? ���  t �� ��� I  dD d��   I��������� ~ �  ���  �� CN   t�� � �  =���  ��  �������� Cy  d' � ���� =�� = ���� �  Cy �� �� 8w ���  CN CN P����������H����N����������  x ��� ü� Tg  Tg à �����  Z�� ; �� !� m� m ! ! F�� �� ��  G Dz à � x � ��� L  Ʒ�� Z ƙ ű��� Dz ��9��2��$�� ��� ï WD ï�� P <W�! `�"�#   �%�+�&�(�' š š >�)�*  ܌ ܜ �,�/�-�. 6 �0�1  �3�6�4�5  ƙ Z�7�8 ï 4? ï �:�G�;�B�<�? Œ�= �> ן  �@�A ï ï C�C�D š Ʒ�E >�F > Pp�H�K�I�J ï x �L�M s à . ܹ�O�~�P�b�Q�Z�R�W�S�V�T ï�U ï O š ƙ�X�Y š r �[�]�\ $ ł `�^�_ Z >�` �a Œ \ Œ�c�s�d�j�e�f ƙ 7 �g�h�i ! / / ï�k�n �l�m 4 x 4 �o �p 6&�q�r ց �t�{�u�x�v �w > > <�y Z r�z r �|�} ` ƨ à��������� WD K  ï��  ï r���� s �  6� ï C��  � Œ ï� ּ ï����� ï Z��� Dz ּ Y Dz�� š i Z š����  �� ï ï C � s Ʒ���������� � Dz ƨ�� š Z Ʒ����� 8� 5 š ï �� Z� �  b������� ï q L ���� � �� W Œ Œ s ���� V ł s��� $�� 5 3_ 3_ �� �������� R Ʒ���  t a��  t�� ï� 8i ï ƨ��� ï �� 8 = N ï������   �� Ʒ� WD K  Z���� Z�� G  r� 4/� 4/ à����������� ƨ  s `��  �� �� Ʒ 4? Dz� � ï ! ï� � ï ï $������ ʗ G ��  ���� ï  ƙ �� ƨ ��6��)� �#�!�" ƙ �$�% G�& �'�( #�*�1�+�0�,�. WD�- 6 >�/ < > �2�5�3 �4 š š > Œ�7�A�8�;�9�: ƨ  Ʒ�<�@ �=�>�? s�B�E�C�D s�F�G   s�I�.�J��K�v�L�a�M�S�N�Q�O�P r  ï�R �T�\�U�[�V�Y�W�X ` š WD�Z ï 0  Œ�]�`�^ WS�_ ï 3 K �b�k�c�h�d�e > L�f š�g < 5�i�j ̀ �l�p�m�n š G�o ܜ �q�u�r �s�t # Ux   �w��x��y�|�z �{ L ï Qk�}� Ʒ�~� r 8Z� 8Z�� 8Z� 8Z� 8Z 8Z� 8Z� 8Z� 8Z  ��� ` ( ���  WD Qk ï >������� ս��     G� ï� ï 3 s� s����� �� � %� %���� %�� %� % %� %�� %� % %� %� %��� %� % % � %� % % Œ�� š š > � Z ���������� ���  ן  Ux s�� ï Œ ï���� ï ƨ� �� W ʵ 6 ?��  Œ V ������ Z� ;8 ł� ł 7��� � x���  �� �  ��  � � XT  X8 ���� ï x \� . Dz��� > 7 7�� >� >� >� >� >� >� > 7 >�������� ƙ L ƙ ��� s ï ƙ�� ł ł���  i��� � � � 7 � ���  %� 5 D 8J 8  �� �����  A� , 5 ;8 Z�� k š� �� R ï ï 6�!�(�"�# ï �$�& O�% O ï�' š š >�)�* ï L�+�,�-   �/��0�j�1�U�2�B�3�;�4�7�5 �6 �8�9 ł ï�: QQ ï�< ï�=�@�>�? �A �C�H�D�G Z�E�F ł ł Œ�I�T�J ï�K ƙ�L ƙ�M ƙ�N ƙ�O ƙ�P ƙ ƙ�Q ƙ�R ƙ�S ƙ Œ ï�V�b�W�Z�X�Y ï 8 �[�^�\ �] 8 4�_ `�`�a o5 | tI T�c�g �d `�e ł�f ł 7��h�i X Œ ï�k��l�z�m�s�n�r�o �p�q    �t�y�u�w�v A�x c  ï�{�~�|�} ƙ = ï��� ï �  à 8������ ƨ V �� y O� ����� ƙ� 6 G�� ű ï����������   ï � s ï����� š ï� 6 o : �� #  ������ i s Z �� ï r c ï���  �� ҉�� 8 4 6 ��������� ï� ï Dz ï� š�� B& k ( 5�� ��� ł ł r y���� � ï� ּ  k��� r� WS } ï� ��� � � � �  � ��   E ������ ƨ��  ï Ʒ ���� ƙ��� ֮ ֞ 9� Ʒ ï� C �� ` n��I����A���� ������ 7 ƨ 5C �� ց ï Dz ����� i ƙ��� . .�� >  ̀ � �� �� �� � �  � ï C 3  �� y  Z���� ï ƨ d !� G !��,��$��!�� ! ˘  �"�# ï ! ƨ Œ�%�)�&�' ׭ 4?�( ց�*�+ š Dz = V�-�6�.�3�/�0 > �1 ï�2 ï�4�5 ï ƨ �7�:�8�9  à �;�>�< ï 4/�= à�? �@ ï 3 ï�B�p�C�Y�D�M�E�J�F�G ƙ �H �I š š >�K�L 7 CN Z �N�Q�O�P ƙ �R�V �S�T�U Q5 6 ! �W�X à à 4/�Z�f�[�_�\�^ �] ł 8�`�e�a�c à�b 4/ R�d à à 4/  �g�j�h�i V  G�k�l ï G�m�n�o 7�q��r�~�s�v�t�u r �w�{ .�x�y�z ʈ ʈ Q�| ï�} ï ���� ˘ �� = ��� O ï ï }������� � j� �� ł  ł �� Œ � x�� 4? 4? S���� Ʒ ü s �� i ï�������������� � �� 3 ּ 6 ï ��  ƨ 6���� \  � �  ; ������ ƙ ï �� š G c����� ï� ƙ� ƙ� ƙ ƙ� ƙ� ƙ� ƙ�� ƙ� ƙ ƙ K r�� 7�� Z 7 ƨ�������� ` ` Œ��� � ï ï 3 Ʒ��� N ï ï C���� Dz�� Z Z �� ܹ  ˘ s������ Z  s��� � j����� 7 Y~� ï  ï  ���� c  y�� 4 ��)������� ������  , ; Q j i ` ƙ� � ï Z ï� � � Qk C 6 S���� 8Z > 8Z�� � ï� ּ ï� � r 8Z r��"���� r ƙ ï� �! 5 r Ʒ�#�&�$�% G J x ï�'�( j L ï�*�:�+�4�,�.�-  L�/�0 ï ï�1�2�3   �5�7 �6 ï �8�9 ï ï Y�;�A�<�>�= ƨ 7�?�@ c z G ƨ�B�F�C�E�D 6D ï�G�H Œ �J��K��L�~�M�l�N�c�O�`�P�Q x N�R�]�S�\ �T�U �V �W �X �Y �Z �[ �^�_ 4/ à à �a�b ּ `�d�g�e�f ;8 r �h�i > ï ł�j�k ï ï Qk�m�x�n�s�o ï�p �q�r ï h 6 ּ�t�u  s�v ï�w 8 4�y�|�z�{  ܌ �}  ��������  ��� �� 9 ï ֐ ּ ���� ï�� ï� ï u�� 6 N Dz ï�� ּ �  � ց������ s 4 ï��   š�� `� G V�� r ˘ ���������� Ʒ �� Dz ּ Dz�  � j ���� Ʒ s =�� ��� T   o��� Y�� ������ ï ï� � ï� ï K����  ï  Œ�� Z ł��  �������� Dz .� 4� š ,� š� š�� š š�� š� š š� , š�� ƨ��� 8 K � x� x� x� x x� x�� x x� x� x���� G Z Z��� � à � ï ������ ��� ï 6 ï ��   �� ï  P 4� �� � ƨ s� � � x 3 x 4�� � � K ( ��h��=��(������ ;  ƙ d��  :y à� �%�!�$ ï�"�# ï ï ּ 8i�&�' r �)�2�*�-�+�, Œ ï �.�1 �/�0    �3�8�4�5 >�6 Z �7 �9�: �; š �< ߰ �>�Q�?�I�@�C�A�B x s  Œ�D�E  �F š�G�H  #�J�O�K�N Ʒ�L�M mz 7 mz s Z �P s `�R�_�S�Y�T�U ƙ �V �W�X L  L�Z�^ ï�[�\�] ֐ R ֐ R 6 �`�c�a�b   �d�g �e š�f ʗ š ï�i��j�|�k�r�l�o�m�n = 6 \ ޳�p�q ï ű�s�v�t�u L  ü�w�{ �x�y�z t  �}��~��� < Ʒ 4?�� ï ̀ ï���� ƨ x  � �������� š ï��� 6 R ï N��� š� š ï ���� Ñ� Dz ï Z R�� s ƨ������� ��   ï ��  ���� ƙ ï� ü ( ï��B����W������������� >� ï 3 ï �� ` Z Q�� r ߰��� ï ü� ï� ï 6�� š ï s������ ï  y�� ł  Z���� s 4N�� Œ Ʒ `�������� s�� ü x ����  ï �� ï ������ G Ñ ��   ï����� ï� � �� � � � � � �  � ��3�� ���� �� �� ï� 6 ï� š š �� ƙ ƨ s� ' 6���� E ü��� t �� ƙ��� 3 ï 6 Dz� � à à �!�*�"�%�#�$ ï  Ʒ�&�' �( i ï�) 3 ï�+�.�,�- V > �/�0 Z ï�1 Z�2 ޕ Z�4�G�5�;�6�9�7�8 ï  �: 4N�<�B�=�A�> Z�?�@ C 3  D ï š�C�D ü �E ï�F �H�P�I�L�J�K  ü s�M�N Ʒ �O r š �Q�U�R�T�S ł ; Z �V ן �X��Y��Z�n�[�d�\�b�]�a G�^�_�`   V �c ï �e�h�f�g Z ï ï Ʒ�i�m Œ�j�k�l # Ux E  �o�x�p�s�q�r ï >�t�u 6 �v �w š c š�y�|�z�{   r�}�~ ܌�  � 6�������� à x�� ï ���� � 6� 6 ï� ï� ï�� �� 4/ à 4/ ������  �� ˘ Z (���� ï �� ` ˘ ������������� ï ï ּ ł� ł Dz ï�� ƨ Z �� 4/ à 4/����  ƨ�� š� š�� š� š š� š� š� š�� š š� š Ʒ š������ V `�� ï ����� 4/ Z� Z F � ï ��������  ï� G����� r�  ï ł�� ï 5 š ������ ï�� ܜ ܜ  ï �� Z  ���� Dz s�� � Dz� Q5 Dz š ï����P��+������� �� ��� l Œ Œ R� � 8� �� s� Œ� Œ \ 4l���� # Ux  Q S ï���� \ Ʒ ߡ��  >��"����  � �! r ű�#�(�$�'�% b�&  S Z�)�* 65  ï�,�B�-�8�.�3�/�0 ł�1�2 ˘ ˘�4�5 ; ܌ �6 Z�7 Z :j�9�?�:�> Z�;�<�= ּ Dz 6 ï  �@�A  8�C�J�D�G�E�F  Œ�H�I s �K�N�L�M  ï  ï�O ` �Q�x�R�d�S�]�T�Z�U�Y�V �W�X # Ux q  L�[�\  �^�a�_�` Z ï �b�c Ʒ d Z Ñ�e�o�f�j�g�i�h 7 `�k�n�l Ñ Dz�m Dz Q5  �p�u�q�r 7 �s �t  �v�w R= Œ x�y��z��{��|��}��~� O ï :M 4!�� ï 6 ï i Z�� Z��� j  ���� ;8 Ñ  �� ˘ \ .������� �� t a ł�� Ʒ Œ ����� �� be ї ї x �� x ï  ������������ �� ƙ ƙ ï �� � � Q ï ����  r  ü�� Dz� ` � ï� 6 ּ������� ��   Œ �� ƙ `��� # Ux # ���� ܹ  ï� � � ï 3 ï��������  i�� Z ���� Œ ü 7�� š ü ï������ �� s ï�� Ñ š š���� š 6 �� š  Z K��!�� ������  Z 4N�� Z Ʒ��� ï ï �� � Z \�� ł� ï 3� �� �� � ƨ� � ï ï Qk ű�� ƨ � x� L x���� ï 5� ï�� à à�� �  �  Ʒ�"�2�#�,�$�'�%�& ï �(�+�) ï�* ï �-�/ �. �0�1 š Z ü�3�:�4�7�5�6 ü  �8�9 Z  Ʒ Z�;�?�<�= ï�>  ï %�@�A ƨ �C��D���E��F�v�G�b�H�Y�I�V�J�K �L �M  �N�O �P �Q �R �S �T �U  �W�X Z �Z�^�[�] �\  �_�` y �a �c�k�d�g�e�f F 7  �h 7�i�j ï O ï�l�o�m�n ˘ �p�u�q�s�r ï Q^  ï�t Qk ï ï �w��x��y�|�z�{  N �}�~ s ���� ł  ï Œ�� š��� Vt 6D Z�� ł j������  à� �� à 4/ à �� N��� ï C O ï ï����� ï� ï 3 ƙ �� \  ����������  V š ï�� ˘�� à 3 à ï�� � ï����� O 6 ï�� ï C O ï ï������ ï 8i ï �� � Z ƙ� ƙ���� � B�  B y x�� ű Œ š�������� š  �� G 7�� Q  Q���� ߰�� Z��� z � � � � � 6� ï��  Q  `������ r ï� Z � ��  � � 4/ à 4/������ ï� ï 3� ï ּ A š�� š ƨ ��m��?��+���������� 3 O� ï� ï� ï ï� � ï� ï� ï ï� ï Dz�   š��  Œ��&��%� Œ �� � � � �! �" �# �$ �'�( y�) Z �* �,�5�-�0�.�/ k s x�1�4 �2�3 o  �6�<�7�;�8 �9�: 7 K ~ 7 V �=�>  š�@�V�A�M�B�J�C�F �D�E < �G K�H�I # Ux % Q�K�L Ʒ c 7�N�S�O�R�P  ï�Q u ï Z �T�U x š ï �W�`�X�]�Y�Z š �[�\ 2 2�^�_ š š Ʒ�a�i�b�f �c�d�e ց y�g�h  �j Z�k�l . �n��o��p�v�q�t�r�s Ʒ ï s r�u \ �w�z�x�y ł �{�| ï �}�~ WS C ï������ V ƨ��� o5  o5 ��  ï���� Œ ï ��  ƙ ƨ������� V �� ï Ʒ Œ� [ Ñ���� Dz Z �� Z ������ ` K Dz��� 3 ï 3 ï � ��� 8- 8 ����� Z� # ï�� ��P������������ ï i ƨ�� ü ï ï ƨ���� >  r�� �� ` ` s������ ƨ �� ���� ��� 7� r �������� G Z G ە�� i��� ï ! S ï 7 �� � �� ` ` Z���� `� `�� š š �� ï ���� Z Z ƙ�� Z ���-���� ���� Ʒ�� /  � �� �� `� �   ��  ű Z������ s �  š �� 8 ��#��"� � �! t  �$�,�%�(�&�' Ux # �)�* Z U ޕ�+ F U 4/ :y�.�@�/�9�0�6�1�2 �3 ï�4�5  �7�8 ű  �:�=�;�< Dz i V �>�? ߡ 8 �A�J�B�G�C�D > Z�E  �F �H�I ï Z �K�M�L s�N�O ` Z �Q��R��S�q�T�e�U�X�V�W Ʒ ƨ�Y�d �Z �[�\ �] �^ �_ �` �a �b �c 8 à x�f�n�g�k�h�j�i Y~ ( š �l�m ï Dz ï�o�p  > V �r�y�s�v�t�u Z Ʒ �w�x r y�z�}�{�| 8 G Ʒ�~�  ` ��������  ƨ �� š G V���� x š �� 4/ ï������ š �� i 4 ���� r ï ��   ���������� ï� � (� Œ� Xc Œ�� WS z ƨ���� s �� : š �� s / s������ s Z �� Ʒ��� ï 3 O ï ;�����  < š ï r�� ` r ƙ N�������� à Dz �� 5 ` Œ���� V Ʒ �� Dz  ������� ` � ï �� ï Œ ï 8���� 8 z Ʒ�� ��� t  ï ����%����7������������ H l H l H� H H� H� H H H� H�� H H� l� H H�� �� ��� H H m4 H� H H H� H� H l������ H H H H� H H l� H� H = H��)��#���� H� H H H� m H� H�!�" l H H l H�$�%�' H�& H l�( H l H�*�3�+�.�, H�- H H H�/�0 H H�1�2 H H H l H�4�5 H H�6 H H�8�j�9�W�:�D�;�A�<�>�= H H H�? H H�@ H H H�B H�C H H�E�N�F�H H�G l H�I�M�J�K H H H�L l m H H�O�R�P�Q H H H H H�S H�T�U�V H H H H�X�c�Y�]�Z H�[�\ H l H H�^�` H�_ H H�a�b H H l H�d H�e�h�f�g l H H m4�i H l H�k��l�{�m�v�n�p�o H M H�q�s�r H H l H�t H�u H H�w�y�x H H H�z H m H�|� H�}�~ H H H H� H m����� H�� H H m4 H H� H� H H��� H H� H l H� H� H H��������� H�� H� H H� H H��� ] m ] m��� H� H l H� H H� H m������ H� m H� H H H� H H� m H��� H H� H� H� m m� H�� H H H m���� H����� H H l H� H H� H H H� H�� H H H� H�� H� H�� H� H H H� H H� l H������� H H�� H = H���� H� l� H� H H�� H H H l� H�� H m H m���� H�� H l H H�� H H H�� H� H� m H��� H� H m H H� H H����� H���� m H H m���� H� H H m4 l H�� H� H� H m H�� � m H� � H H H� H H���� H� H� H m�� H� H H� H� H m H�� ���� l m4 m H H� H H�!�#�" H H m$ H�$ H m�&��'�w�(�D�)�5 H�*�+�2�,�.�- H H l�/ H�0 H�1 H H H�3 H H�4 H H�6�; H�7�8 H H�9 H�: l =�<�A�=�?�> H H m4�@ H H H�B H�C m H m�E�]�F�N H�G�H�J�I H H m$�K�M H�L H l H m$�O�R H�P H�Q H m$�S�[�T�Z�U�W�V H < H�X�Y m l } H H�\ H H H�^�j�_�d�`�b H�a H =�c H l l�e H�f�i�g H�h H l H H�k�n�l H�m H H H�o�q H�p H m�r�s H l�t�u H H�v H H H�x��y��z��{��|� H�} H�~� l l H� H m���� l H l� H m$ H H����� H l H� H = H� H H����� H� H H����� H� H� H � H� H H�� H� H��� H H � H H � l� � �  H� H� H m�� H�� H H H���� mD H m H�� H m�� m� m ]� m ] m���� H���� H H H� H� H l H������ H H H� m H� H� H H� H H�� H� H l�� H� H� H H� H l H������� H H H H� H m��� H l H� H H H���� H� l H H� H l� H� H H H��H������� H�� H� m$ H� H H H�� H� H m� H H� H H������ H�� l H H� H H H���� H H H H H� � H� H� � � H� H H H H��� H H H H� H H��0��'������ H H H�� H H H� H H H� �$ H�! H�"�# H H H�%�& H H m H�(�,�) H�*�+ H H m$ H H�-�.�/ l H l H�1�<�2�5�3 H�4 H l H�6�8 H�7 H H�9 H H�:�; H , H�=�C�>�A�?�@ H = m$ = H�B H H�D�F�E H H l�G H H H�I�~�J�f�K�Y�L�T�M�Q H�N�O H�P H = H�R�S H H H H�U�W H�V H m H�X m H�Z�_�[�]�\ m H m�^ m H m�`�d�a�c�b H H m l m H�e H m�g�t�h�o�i�m�j H�k H�l H H H�n H H H�p�q H m�r H�s H H H�u�y�v H�w�x H H m l�z m�{ H�| m H�} m H������ H�� H H��� H l = H� H�� H = H H��� H� H l H� H� H H H������ H�� H H� H H�� H H H H� H� H H l�� H�� H H =�� H m H� H m��;��i������������ H� H H� H H H� H� H H H����� H H� H H�� H� H H H H���� H H H H� H H l����� H� H H H��� H H l��� H H�� H H� H�� H H�� H� H H� H < H�� m ] m��� H� H� H� H l H� H H� H m��������� H H H� H� m$� H H L�� H� md H� H H� H� H m���� H� H H� H H H����� l H H H H� H l�� �� ��� H H H� H H H H� � H m H� �� H�� H� m$� m H H H� H H� H H��A��/��#��� H�� H H H H��!� H H l�" H H H�$�+�%�(�&�' H H m H�)�* H H m H�, H�-�. H H H H�0�9�1�4�2 H�3 H H l�5�7�6 H H = H�8 H H�:�=�; H�< H H m$ H�>�?�@ H H H H�B�T�C�N�D�G�E H H�F H = H�H�I�K H�J H H H�L�M H H H�O H�P�R H�Q H H H�S H H�U�^�V�[�W�Y H�X H l H�Z H H�\ H�] H H =�_�e�` H�a�d H�b m�c H H H H H�f�g�h H H H H�j��k��l��m��n�~�o�q H�p m m$�r�} H�s�t H�u <�v <�w <�x <�y <�z < <�{�| < < \ l H�� H� H�� l H l H� H H������ H l H H� H� H H H H���� H�� H H H m$ . l����� H H� H l�� H� H� l {� H� H H� H H��� H� H H� H� < H�� H� m H� H m m������� H�� H� H� m H H m� H H�� H m� m H������ H < H�� l H =� H H l H� H� l =������� H H H H� H H��� H H H H� H H��� H H� H H��� H = H�� H H = H�� �������� H� H H�� H l H H� H�� H m$� H�� H H H m4�� H�� H H H H��� H�� l l l H H����� H�� H H H� =� mD H H���� H H�� H H� H mD <�� H� H� H H� H H� H H��!����� H� H H l�� H�� m$� = H <�� H H H H H�� H�� H l� m$ H m$�"�/�#�'�$�% H l H�& H H�(�* H�) H H�+�.�, H H�- H l l H�0�6�1�3�2 H H H H�4 H�5 H H H�7�8 H H�9 H�: H H�<��=��>�_�?�R�@�D�A H H�B�C H H H�E�I H�F�G�H H l H l�J�O�K�N H�L m�M l = H H�P�Q H H H m�S�Y�T H�U�W�V H H H H�X H H H�Z�[�]�\ H l H H�^ = H�`�s�a�o�b�h H�c�d�e = H�f H�g m H�i�m H�j�k H H�l H m4�n H H š H�p H�q�r H H H�t��u�|�v�x�w H < H�y H H�z�{ H = H�}��~ H l H H�� H = m$���� H� H H H� H H H�� m� m� m ] m������������ H l H H� H H H� H H� H H H��� H� H m H� H� H m��� H���� H H H� l H�� = l l H���� H� = H� H = H H� H� H m$������� H� H l =���� H H H m� H H H� H�� H� H H H� H =��� H��� H H H� H H m�� H�� H� H H m H� H�� H� H H H��6�� ��������� H H H� H H H H��� m H� H l� H H���� H� H m H� H m�� H� H m H� H m������ H�� m4�� H H m H H���� H m H H H� H H�� H� H�� H m4� H l�� �� H l l H H� < H� ��� H���� H H = H� l m��� H H� H H�� H� H m$� H l� m$� m$ H� �)�!�$ H�"�# m H m�%�' H�& H H H�( H m$�*�/�+�- H�, H H H�. H H�0�4 H�1�2 m H�3 = H H�5 H m�7�c�8�O�9�B�: H�;�@ H�< H�=�>�? H l H H�A H l H�C�L�D�G�E�F l H H m�H�K H�I =�J H m H H H�M H�N H �P�Z H�Q�R�W�S�T H H�U H =�V m$ H�X�Y H m l H�[�^�\ H�] H H m�_�a H�` H m�b H m H�d�~�e�q�f�k�g H�h H�i H�j H H�l�n H�m H H�o�p l m H H�r�x�s�v H�t�u H H H H�w H�y�|�z�{ m$ l H H�} H H H���� H� H� H H��� H H <�� H H H H��� H� H H m$���� H H H H� H H H����U����}��@� ��������� ї��� ї ї�� ї ї ����� ї ї� ї�� ї� ї �� ї ї�������� ї ї � ї ��� ї ї� ї���� ї �� ї ї ї��� ї ї ���������� �� �� � �� ��� � �� � � ���� �� ���� �� ��� �� �� � ����� ї����� ї ї�� ї ї���� ї ї ї� ї ���� �� ї ї � � � ї ї � ї ї ������ # ї ї� ї��� ї ї ї� ї ��.��(��"�� � �! �#�&�$�% �' �) �*�, �+ �- �/�:�0�4�1 �2�3 �5�8�6�7 �9 �;�<�>�= �? �A��B�[ ї�C�D�M �E�F�I�G �H �J�K�L �N�T�O�R�P �Q �S �U�X�V �W �Y �Z �\��]�p�^�i�_�c�`�a �b �d�g�e�f �h �j�m�k �l �n�o �q�z�r�w�s�u�t �v �x �y �{��|��}�~ � �� � � �������� � �� � �� � � �� � � ����� � ��� �� ���� � � ���� �� ������������ ��  [  #���� � �� � � �� �� 3 ����� � ���� �� �������� � ��� � ���� � �� �������� � � �� � �� ����� ��� dz�� � ���� �� � � � �� �� ����� � ��� � ��P��>� �+�!�%�" �#�$ �&�)�'�( A�* �,�;�-�0�.�/ �1�2 �3�4 �5 �6 �7 �8 �9 �: O �<�= �?�I�@�E�A�C�B �D �F�H �G �J�M�K �L �N �O �Q�h�R�\�S�W�T�V �U �X�Y �Z�[ _�]�b�^�` �_ �a �c�e�d �f�g �i�s�j�p�k�m �l �n�o �q �r �t�w �u�v �x�{�y�z m { �| �~����� ї��������� � �� ���� � ����� � ��� � ���� � � � � ��� � � � ї��������� � � ��� � ����� � � �� ������� � �� ����� � ��� � �� ї�������� �� ��� �� ���� � �� ���� � ���� � � ��� � �� � �� ���� � ї� ї� �� �� �� � ї ї ї� ї ї� ї ����� ї ї � ї ���� ї ї � ї ї�� �}�!�Q�"�:�#�/�$�)�%�' �& �( �*�-�+�, �. �0�7�1�4�2�3 �5�6 �8 �9 �;�F�<�A�=�?�> �@ �B�D�C �E �G�L�H�I �J�K �M�N �O�P �R�h�S�_�T�Z�U�W �V > �X�Y �[�]�\ �^ �`�d�a �b�c �e�g �f �i�s�j�n�k �l�m > �o�q�p �r �t�z�u�x�v�w �y �{ �| �~����������� O O O� O �� š O����� O š š� š O� O O š���� O� O š�� O� š O�� 3 O š O������ O �� O��� O š O�� O š O š���������� O š O š�� š O O š O�� O š O����� š š O O š�� O� š O O� O š������� O š O� š š O O�� š O š�� O��� O š O š���� O š š O š� O š��y����O�������� �� � ���� � � � �� ������� �� �� ���� �� � � � � ���� � � � � � � � � � � ��+��� ��� � ��"��� � ��� � �! �#�&�$ �% �'�)�( �* �,�>�-�5�.�1�/ �0 �2 �3�4 �6�;�7�:�8�9 �< �= �?�H�@�E�A�C �B �D �F�G �I�L�J �K �M �N �P��Q�x�R�d�S�Y�T�V be�U be š�W be�X be š be�Z�_�[�] š�\ be š be�^ be š�`�b�a be be š be�c be š�e�n�f�k�g�i�h be be š š�j be š�l be�m be š be�o�u�p�s�q�r be š be š�t be š be�v be š�w be š�y��z��{�~ be�|�} š be š� be be� be š be�� be� be š be���� be�� be š be� be š be��� be be� be š�� be š be� be š ��� �� be � � be š��� � be be� be š��� be be� š be� be�� š be š be��P��������� ��� �� �� ��� �� � �� ��� � ��� �� � ������ �� �� � ��� � �� � ������ � � ���� ��� ��� �� ��#�� �������� � ���� ��� ���� � �� � � � ����� � �� �� � � �� ���� � �! �" �$�=�%�1�&�,�'�*�(�) �+ �-�/�. �0 �2�7�3�5 �4 �6 �8�;�9�: �< �>�F�?�B �@ �A �C �D�E �G�K �H�I�J �L�N�M �O �Q ї ї�R�S�g�T�\�U�Y�V �W�X �Z �[ �]�a�^ �_�` �b�e�c�d �f �h�p�i�m �j�k�l �n �o �q�v�r�t �s �u �w �x �z��{�2�|��}��~��������� � ��� � ����� � ���� � �������� � � � �� �� ��� � ���������� � ��� �� ���� � ���� ���� � � �� � �� ��� �� ��� � ����������� � � � �� �� � � ������� � ��� � ������� �� ��� � ������� � � � � ��� ����� �� �� � � ��*� �$�!�#�" �%�'�& �(�) �+�1�,�. �- �/�0 �3��4�Y�5�F�6�:�7 ї ї�8�9 = �;�A�<�?�=�> š ї ї š�@ ї ї š�B�D ї�C ї š�E ї ї š�G�P�H�M�I�K ї�J š ї�L ї š ї�N ї�O ї š ї�Q�V�R�T�S š š ї ї�U š ї�W ї ї�X š ї�Z�j�[�f�\�` ї�]�^�_ ї š š ї�a�c�b ї š ї�d�e ї š š ї�g ї�h ї ї�i š ї�k�u�l�r�m�p�n�o š ї š ї�q ї ї š ї�s ї�t ї š�v�z�w ї�x�y ҉ š š ї�{�} ї�| ї š�~ ї š ї������������ ї š š ї ї� š ї��� ї š ї�� ї š š ї�� ї� ї� š ї��� š ї š� ї ї š���� ї� ї� š ї�� ї� ї š� ї š ї�� ї� ї� ї š�� ї� ї š� ї š ї���������� š ї š ї�� š ї ї š�� ї š� ї ї š ї��� š� š ї ї� ї š���� ї��� ї š ї š� ї�� ї š š ї����� ї ї š�� ї š š ї��� ї š ї ї� ї š ї���!������ �� � ��� � � ������� � �� � be be� be ���� � � � � �� ����� � ��� � �� �� �� � � � ���� � �� � �� ������ � � � �"�A�#�2�$�,�%�)�& �'�( �* �+ �-�/�. �0 �1 �3�=�4�7 �5 �6 �8�;�9�: �< �> �? �@ �B�G �C �D �E�F �H�O�I�L �J�K �M �N �P be�Q�S be�R be be�T be�V�i�W [=�X [ [ �Y [ �Z�[ [ [ �\�] [ [ �^�_ [ �` [ �a [ �b [ �c [ �d [ �e [ �f [ �g [ �h [ [ ]=�j�k��l�t�m ї�n š ї�o ї�p�q ї�r ]}�s d [- ї�u��v��w ї�x�{�y�z _ [} \ ї�|� \M�}�~ d [ d���� [ \ ї [� [ ^l [� � ї� \����  [ [  �  ї ї�� \}� ї [- ї� š� [ �� ї� ї [ ї�� ї [ ї��{��"��a������������ H� H H�� H l H H H�� H H H H����� l H H H�� H l l H������ H� H H�� m$ l l H H� H�� H�� H H H H��� H H�� H H� m4 H��� H H� l l H� H l��������� H H H H� H H� H H�� l H� . l������ H� H <� H H� < l�� l H l l���� H H l H� H l H������� H H� l� H < H�� H m$ H H� H� l H���� H� H l� H H H� H�� H H H��-������ �� H� H H H� H H� � � H l H H�� H H� H m��� H� H m4 m$��� H H H� H H H��'�� H�� H H H� �" H�! l H�#�% H�$ H L�& H H H�(�+�) H H�* H l�, H H H�.�D�/�>�0�7�1�5�2 H H�3�4 H H H�6 H m$ H�8�9 H H�:�; H H H�<�= l l H�? H�@�B�A H l H H�C H H�E�R�F�M�G�K�H H�I l H�J H l H�L H H�N�P H�O H H�Q H l H�S�Y�T�W�U�V H H m4 H H�X H H�Z�\�[ H H H�]�^ H H H�_ <�` . <�b��c��d�s�e�o�f�i H�g�h H H H�j�l�k H H m�m�n H l H H�p H�q H�r H mT m�t��u�|�v�x H�w H H H�y H�z�{ H . H�}� H�~ H l�� H l H H���� H�� H H� H l�� l H H H� H H� H H��������� H H l�� H H H H���� H H H H�� l H < H� H�� H�� H H� H H� H H� H� H l�������� H H� H� H d l� H H� H� H m4�� H� H H�� H H H l��� H��� < H� H l H H H��� H� l� m4 l H m4���������� H H� H H�� l H l����� l� H H H H =�� l H H H������ H H H H� H H� H H H� H� H m�� H�� H H� = m������ H m$ H H H� H H H��� l H m$ H���� H���� m m$ H� H l m4���� H�� m$ H� H m$ H� H H� H m���� H� � � H l H� H� H H�� H� m H H� H H���� H� H� H� = �� H� H H H m�� � H H H H�! H H�#��$�t�%�T�&�>�'�3�(�.�)�,�*�+ H H H H�- H H H�/ H�0�1 l H H�2 H l�4�7 H�5 H�6 H l�8�;�9�: H H m$ H�<�= H m4 l H�?�J�@�D H�A�B�C H m$ H H�E�H�F�G H H H H�I H l H�K�Q�L�O�M�N m$ H H H�P H l H H�R H�S H m�U�f�V�Z�W H�X H�Y H H H�[�a�\�_�]�^ H H H H H�` H l�b�d�c H H l�e H H m�g�n�h�k�i H H�j H H�l H H�m H H H�o�p H H�q�r�s H H H H�u��v��w�} H�x�y�{�z H H H H�| H =�~� H��� H� H� H H . H H��� mj H H H���� H� H� H l����� H H H H� H H H H�� H�� l H l H������� H H� H l� H�� H l H H�� H� H� H H��� H H H H� H H����� H�� m H H l� H H� H m�� H�� H H l��� H� H H� H < H� H m��!��������� H� H� H =� H�� H H H m$�� H��� H H� H l� l� l� l� l� l��� l��� l l � l�  ���� H H l H H�� l� H = H�������� l H H .� H H l���� H l l� m$ l H� l H��� H� H l H���� H m$ H H� H H H���� H����� H H H� H H H� H H� � � H� l� l l H����� H�� H l l H�� H�� m$ l l�� H H < H� H H� H� H H�"�L�#�4�$�0�%�*�&�' H H�(�) H l H mD�+�-�, H H H�.�/ H H l l H�1�2 H H�3 H H�5�B�6�<�7�9 H�8 H l�:�; H H l š H�=�>�A�? H l�@ H l H m�C�I�D�F�E H H H�G�H H H l H H�J H�K H H�M�n�N�Z�O�T H�P�Q�S m�R H m$ H l�U�W H�V H H�X�Y l H H H�[�b�\�_�]�^ m4 m H m�`�a H H H H�c�h�d�e l H�f l H�g H H�i�m�j H�k�l l H H H l H�o�v�p�s�q H�r H H H�t H�u H l H�w H H�x�y�z l H l H Z�|�}�8�~����������  � ���� �  ~  š�  =�� = k������   = �  � �  ��� �� �  = CN� CN � � ��  = ������� � C] �� �  Cl �  ,�����    �� �� > : , š���� � � 1 � �� ? M� [ i M�  =�� ����   ��  d CN �� � ��� Cy �� Cy w Cy ���  , �   ���������� �  �� CN �� �  �  ��� � š � � Cy����� � � ����� � I � �� � � t ������ Ve ��    � � � �  CN  � � Ve   CN��)�������� Cy  � �� �  š��  CN ��%� �#�!�"  Cy �$  �&�' �( P �*�1�+ �, �-�. CN �/ �0 8w  �2�3�5�4  CN�6 �7   �9�k�:�V�;�G�<�A �= �>�?�@ CN o �B �C�E�D  t �F  �H�P �I �J�K�L  š�M�N�O dD dQ  a �Q�R�T �S = P�U P =�W�_ �X�Y�\ �Z �[ �] �^ <u�`�e�a �b �c �d = š �f �g�h �i�j 8w �l��m�y�n �o�u �p �q�r �s�t c 8w�v �w�x P Ve �z �{�|�~ �} �� ��� š D B ���  # �� � � � � �� 8w  8w��� � � ��� š � š�� 8 8w� @� � � � � � � 8 � � � ~��^��J��+���� ������ ï W ƨ ï��� ���� ��� � � � � � �� ց � � ʵ �� �� � � �� �  ����� y���������� ï �� r � r ����� ( �� = (� � �� � = O� = ���� � Lt � Lt r ���� � �� � 8Z � Lt ���� ��� Lt 8�  Lt� Lt 8 � ���� ( ( x ѧ�� z r  y� � � �� �\��4��!������ � ï�� ï Dz ï T* ï�� d Z y ���� ï s�� ï > r�"�*�#�'�$�&�% L ̀ �(�) s ï �+�.�,�- x  �/�0 ï Œ�1  7�2 7�3 7 �5�G�6�<�7�9 �8 y �:�; ï ï �=�@�>�? Z Z �A�F �B�C �D�E  8 Ʒ �H�P�I�L�J�K ƨ s�M�O �N Œ Œ�Q�S�R ï�T�U .�V�W  �X�Z�Y ï ï O ï�[ ï O�]��^�p�_�f�`�c�a�b  V s�d�e 7 �g�m�h�i ׭ �j Z�k �l �n�o Z d Z�q�x�r�u�s�t Z s ˘ �v�w ҉ �y�|�z�{ Z ï Z �}�~ Z s `�������� 7 y Z��  ̀ s ���� ï Ñ à �� š ï Z������ Z���� < <  Ku� <  ���  � 6 Z� E ����  �� :y s i���������� ƨ Ʒ�� ï s  ���� ƙ ƨ Z ï�� VG V ��  �����  o5 � o5 � u � �  }������  i L�� ï `� Z� Œ Œ� Œ���� Z����� (� ( š� š (� š 5 š�� š ( š  s��� Ʒ� Z� Z� Z� Z� Z  Z � ï�� ï ï�  ű��������  ï��� Z������ ( š H A�� E/ š ( � š (� ` Œ����� Ʒ �� Z > ׭ ï������ r� ��  � � � ��� �� � �� � ׭ ш���� r ï ï�� s � Z �!�"�i�#�E�$�6�%�/�&�,�'�+ s�( Ʒ�) Ʒ�* Ʒ s ï s�-�. 7 �0�3�1�2  ` ï�4�5 3| r s�7�>�8�;�9�: ï V Œ `�<�= Z L �?�B�@�A   G�C�D ï ƨ Ʒ �F�W�G�P�H�M�I�K�J ï ˘ , Ʒ�L ƨ �N�O �Q�T�R�S ï ҉ �U�V s ï Z�X�_�Y�\�Z�[  G Ʒ ï�]�^ ï ە  r�`�c�a�b ï s ï y�d�e r ï �f š�g�h š š H�j��k��l�~�m�p�n�o �q�} ï�r�s ï�t ï ï�u�v ï ï�w�x ï ï�y ï�z ï�{ ï�| ï ּ ���� r r�� i������ r ï��  s�� 4�� 4 4� 4�� 4 4� 4� 4� 4� 4� 4 ƨ Z�� j ���� Z i s� s ű r�������� ï  i ï�� Ʒ Z  ���� d� ƨ 7�� à s ƨ ������ s V ƨ ï�� Z G y���� Z T: Z �� �� š��  ( � s� n n ;������\��(������ ` i ï ш�� i ׭ V ց��%�� � r������ š�� š� š š� š� š c š� š� š�� š š� š� š� š š�� š� š š�� š� š� š š A���� š�� š� š š� š� š�� š� š� š š � š�� � š���� š š�� š� š c� š c� š� š š�  š� š� š š� � š� š š �� š�� š� š� š� š� š��� š� š  š� š š�  š� š� š�! š�" š š�# š�$ š �&�' Z Q �)�Q�*�I�+�, �- `�.�2�/ �0 �1 ƨ �3�>�4 J�5 J�6 J J�7�8 J J�9 J�: J�;�< J�= J Y J�? �@ ƨ�A �B�C O�D O O�E O�F�G O O�H O h�J�P�K `�L ï�M ï�N ï ï�O ï O ̀ ˘�R�U�S�T Z 3m �V�W x G�X ï�Y ï�Z ï�[ ï �]��^��_�c�`�a ï r �b ` �d�e ̀ �f Ʒ�g� �h�i i�j�+�k��l��m��n�}�o�v�p�s�q �r �t r �u r�w�z r�x�y S r S S�{ S�| S �~� �� k� k k��� k� k �� k k����� k� k� k ��� S� S S�  S� S ���� ��  � � �� >� > >��������� N >� > N N�� N � � � ����� � � š � š š� š� š� š >������ > � ��� D � D �� ������ š š� š } } š����� F š F F � š � š����� š� š�� š� š �  � �� š� š�� š� š ������� B B� š � � H$�� H$ +��� š + š š k��������� k� k š��� : š :� �� : I I� I � š� � � � � (�  (� ( ���� š���� š > >� �� X X��!�� �� X g g v v �"�&�#�%�$ 7 7 7 �'�) �( @7 @7�* @7 š�,�\�-�P�.�H�/�>�0�4�1 k�2 k�3 k š k�5�9 k�6�7�8 k > > R�:�< >�; R > š�= š @�?�D�@�C š�A�B S � S > š�E�F S�G S R\ S�I š�J š�K š�L�N S�M B S S�O S š�Q š�R�W�S k�T k�U k �V k k�X�Y š k�Z�[ k �]��^�{�_�m�`�e�a�b š �c �d �f�i Q�g�h Q �j�k M M�l M š�n�t�o�p š Y�q�s�r ~ Y ~ ~ �u�x�v �w .�y�z . �| k�}��~���  �    ��� $� ( (� k $� $ k� š������� š k� k 4 = D� š S �� b F k r i >���� s �� � � � <�� ï  s���� ï� ҉ ï��� � ` `� `� ` ߿  �� ï�  Œ�� > r � ï�� ï� ï� ï ï�������� x ս c��� ï � � �� � � � �� � Ʒ `���� ï W ï ̀�� V� ï��� � �� < <� < � <������ ï ҉  s�� ï Ʒ ƨ ï���� ï  ï y�� ï x r ï������ ï�  ҉�� k ï�� `� `�� ` `� `�� `� `�� �� ����� � ` �� ` �� � � � � ` �� � ���� ҉ ï ս 3|�� ѧ ü� x�� x x�� x x ��%� �" 3|�! ս�#�$ ս Œ �&�(�' ï V �)�* ï `  ï�,�4�- �.�1�/�0 y �2�3 ï Ʒ �5�C�6��7��8�9  ƙ �:�;��<��=�`�>�T :y�?�@�J�A :y :y�B�C :y :y�D :y�E�F :y :y�G�H :y :y�I :y �K :y�L :y :y�M�N :y :y�O :y�P :y�Q :y�R�S :y :y �U :y :y�V�W :y :y�X�Y :y�Z :y�[ :y�\ :y :y�]�^ :y�_ :y :y�a��b�m�c :y :y�d :y�e�f :y�g :y�h :y :y�i :y�j�k :y :y�l :y :�n�x�o :y�p :y�q :y :y�r :y�s :y�t :y�u :y�v :y�w :y : :y�y :y�z�{ :y :y�|�} :y :y�~� :y :y� :y� :y :y���� :y :y� :y� :y� :y� :y�� :y� :y� :y :y� :y :y�� :y :y�� :y� :y :y� :y� :y� :y � :y� :y :y� :y�� :y� :y :y�� :y :y�� :y :y� :y�� :y :y � :y� :y :y� :y�� :y :y�� :y :y�� :y� :y� :y :y�� :y� :y :y :�� `��  �� � � � z�� ƙ� ƙ����� K��� Ʒ s � ƙ�� ƙ š r� ` s�� š š ���� `��� ƙ š� ƙ�� V š�� ��� ƙ �� ƙ ƙ����� t � `� s ƙ ��� � ƙ� ƙ�  š ƙ����� ƙ ƙ� Wp � ƙ��0��' ƨ���' Z��� Z��� Z���� Z Z��� Z� Z Z Z�� Z Z� Z �� Z� Z� � Z Z� � Z Z�� Z Z� Z� Z h Z�� Z� Z Z� Z� Z� Z� h Z Z�� Z� Z� Z� Z Z� �! Z�" Z�# Z Z�$ Z�%�& Z Z �(��)��*�L�+�8�, Z�-�2 Z�. Z�/ Z�0 Z�1 Z ,�3�6 Z�4 Z�5  Z Z�7 Z�9�D Z�:�;�A�< Z Z�=�> Z Z�?�@ Z Z �B Z Z�C , Z Z�E Z�F Z�G�H Z�I Z Z�J ކ�K h ކ�M�u�N�k�O�\�P�V�Q Z�R Z Z�S Z�T�U Z Z �W Z Z�X�Y Z�Z Z Z�[ , Z�]�c Z�^�_ Z Z�`�a Z�b Z ,  Z�d�e Z�f Z�g Z�h Z�i Z�j Z , Z�l Z�m Z�n Z Z�o Z�p�q Z�r Z�s Z Z�t  Z Z�v�w��x�~�y Z�z Z Z�{�| Z�} Z Z  Z� Z�� Z Z� Z� Z � Z� Z Z�� Z Z� Z ,������ Z�� Z� Z Z�� Z Z�� Z� Z� Z Z 4{� Z Z� Z� Z� Z� Z 4{��� Z Z� Z�� Z� Z Z�� Z Z � Z�  Z�� Z� Z Z�� Z Z�� Z Z��� Z Z� Z� Z�� Z Z�� Z Z� Z��� Z J J Z��� Z Z�� Z Z� Z�� Z Z� Z ��� Z Z�� Z Z�� Z� Z , Z� Z Z�� Z� Z  Z�� Z��� Z� Z� Z� Z� Z�� Z� Z� Z ; Z Z�� Z Z� Z�� Z� Z� Z� Z Z ,��� Z Z� Z���� Z� Z Z� Z , Z�� Z Z� Z� 4{ Z����� Z� Z�� Z� Z Z� Z�� Z  Z� Z Z�� Z� Z Z� Z� Z Y��#� �� �� � Z� Z� � Z Z� Z ,� Z� Z Z�� Z  Z� Z Z� Z�� Z  Z��� Z Z� Z � Z� Z�! Z�" Z ; Z�$ Z�% Z�& Z  Z�(�, ƨ�) ƨ�*�+ ƨ ƨ 4�- G�. G�/ G OU G�1�B�2 �3 �4 �5�6 �7 �8 �9 �:�; �< �= �>�? �@ �A  ï�D�G�E�F Ʒ à �H�I à �K�J�L��M��N�U�O�R�P�Q  >�S�T  Ʒ r�V�s�W�r �X�Y�q �Z �[�\ �] �^�_�h�` �a �b�c �d �e�f �g �i �j �k �l �m�n �o�p  ï G�t� �u�v s�w s�x s�y s�z s s�{�| s�} s�~ s� s� s� s� s� s� s G s � `� ҉ `����  ï���������� Ʒ  ` ï Ʒ� ï�������  ( 7 �   ܜ�� �  ܜ��  ܜ ܜ � ï�� ï Ʒ Ʒ�� ï ï� ï� ï������ ҉  ï �� ï � r������ Ñ s ï�� ï s ���� Z�� s ï ���� ï Ʒ� �� ï s�� ï ï �� Ʒ ï �����   ï� ˘ ï������ ï� Ʒ ï�� ƙ  ï ˘���� ï Ʒ  ï�� 7 ï Ʒ ������ Ʒ  ï��� ï� ƙ ƙ� K ƙ  Ʒ����  ҉ Ʒ�� ƙ ï �� ҉ ƨ y ï����i��/����� ï ï ��� Q��� ���� ï 6� ï ï� ï 6 ï��� ï� 6 ï ï� ï ּ� ï ï�� ּ� ï ï ï�� 3m�  ű ս����  Œ Z ��.��)�� F ���$� �" �! F�# F�% �& F�'�( U �*�+ �,�- ï �0�R�1�4�2�3 `  ï�5�6 ï Z �7�8�E�9 �:�; �< �= �> �?�@ �A �B �C�D 3_ �F �G �H �I �J�K �L �M �N�O �P �Q 65 �S�e�T�U ü ï�V ï �W�X�a �Y�Z �[ �\ �] �^ �_�` d�b  �c �d �f�g ï�h r ` Ʒ�j�k��l��m�o ï�n  ï�p�q  ï�r r�s �t �u �v�w �x �y �z �{�| �} �~ ï �� ï �� �  ï�� r ï ƙ���������� Ʒ ï r Ʒ�� r ï ï r��� ï  Ʒ�� ï ï ������ � V ƙ r��  Ʒ Ʒ ���� ï ƙ Ʒ ï Ʒ�  ï�������� ˘� �� Ʒ ï  ï�� ï Ʒ �� �  r�� ï Ʒ Ʒ ï������ d  � ƙ ��  3| r  ï� Ʒ ���� z 7 ï����������� Z ï��� Z� ` `� ` 3|�� �� � � ���� ƨ Z  s�� Ʒ  ������ ï s��  `���� 7 Œ� � Z  Z� s�������� ï z Œ�� Z Z r���� r ï š�� ��� Q& :y���� �� ï i� � š� � ( š š (� � ï y ï �� � Ʒ .�  Z s������ ҉ W  ш�� Ʒ 8 ï Ʒ��G�� ï V� k�!�/�" �# �$ �%�& �' �( �)�* �+�, �- �. 6& �0�:�1 �2 �3 �4 �5 �6 �7 �8 �9 ց �; �<�= �> �?�@ �A �B �C�D �E �F � �H�I z 3| ï�K�x�L�Y�M�W�N�T�O Œ Z�P Z�Q Z�R Z�S Z ƨ�U�V L L z �X Ʒ �Z�q�[�n�\�] ` à�^�_  �` �a �b�c �d �e  �f�g �h  �i �j �k �l�m   ܌�o�p y ս ƙ Ʒ�r�u�s�t 3| ە Z �v�w ƨ �y��z� �{� `�|�}��~������� r y �� � �� � � �� � � � א���� ï �� ï Z d������ Z > Œ�� ï s TI���� z s �� ï  ï �������� s r Z ï�� Ʒ z�� Œ� Z �� Ʒ N������  s�� ï r ˘ ̀���� y ï ��   Ʒ ���������� ï r y� ï ï Ʒ���� š ׭�� ˘ Ʒ s���� � �� ï s ï r���� ï Ʒ ï�� x ï ˘� V� V� V�  �� ҉�� Œ y�� Œ y Œ��������  s�� s � Ʒ ���� r  �� ˘ š ������� Z Z Ʒ�� ï �� ��  ï Z� �  �  Z ��k��4��$ ï������� Ʒ s s x�� ï  �� �� ï� ï� Ʒ� ƙ à 4/�!�"  ï�# �%�3 x�&�' �( �)�/ �*�+ �,�-�. < < d�0 �1 �2 s ï�5�D�6�B�7�8 ƨ  V�9�:�> r�; r�< r�= r �? r�@ r�A r r 8�C s r�E�Y�F�P�G�J�H�I ƨ Z �K�O�L  �M �N 6 ï �Q�V�R�U ï�S �T ` ï ̀ ҉�W�X š Ʒ�Z�e�[�b�\�] n s �^ c�_�`�a k  k�c�d ï Z ï�f�h �g W ï�i�j Œ ï�l�}�m�z�n�y �o�p Œ�q Œ�r Œ Œ�s Œ�t�u Œ Œ�v Œ�w�x Œ Œ ~ ï �{�| ï x �~��� x Ʒ� Ʒ�� 9% � 9%� 9% 9%�� Œ Ʒ `��q������ ҉ ï �� ï Ʒ�������� ï ű �� s  r� Z ï��� ˘ ��  ƙ �������� � ��� �� S  e������  �� ' 6 E T*  Ʒ�������  ï ��    ����    ���     ������     ï� ï C ï ���� ����   � T�� � ���� � � d � � � d ������� � � � � � � � s $ $� ���� % S S ��  $ ��������  ��  $ � � �� ��� $ �  $ � � � �  E  � ï ��O��@� ��0��/ ����  �  ���. ���(��%�� X)�!�" KW�# KW�$ KW KW�&�' < �)�,�*�+ XF KW�-   š  V�1�2�9�3�6�4 �5 Ux # �7 �8  �:�=�; �<  �>�?   `�A�B�I�C�F�D�E ï z  Œ�G�H ƨ ï �J�M�K�L Ʒ Z�N �P�i�Q z�R�W�S Œ�T Œ Œ�U�V Œ Œ M�X�]�Y Œ�Z Œ�[ Œ�\ Œ 4l Œ�^�c Œ�_�` Œ�a�b  Œ \ Œ�d�g�e Œ�f Œ 4l Œ�h Œ Œ ~ �j�k�p�l Z�m š Z�n Z�o Z Z�r��s��t��u�x�v�w ` �y��z��{ �| �} �~ �� � � � � � Ʒ Ʒ� Ʒ� Ʒ� Ʒ�� Ʒ� Ʒ� Ʒ Ʒ� Ʒ ' ш ���� ï  x���� =� =� = = = `�� G y������  ï ï �� ï Ʒ� y� y� y� y� y� y� y� y� y� 6 E����� � G G� G ï L�� ҉ ������ �� ` ` �� � ց �� ` S �� �� ���������� Œ����� � � � :y x �� ï 4� 4�� 4 4�� 4� 4� 4� 4� 4� 4 4� 4 ƨ���� s ï Z���  j�� j j� j r ï������ x �� V r ���� d 7� ���  tI�� �� tI� tI�� tI� tI�� tI� tI  tI�  tI� tI tI� tI�� tI� tI tI� tI �� Œ Ʒ ��6��(�� ��� ï �� Œ W Œ s� ƨ �!�%�"�# r Ʒ ï�$ 8 ï�&�' d �)�0�*�-�+�, x s�.�/ ï  s �1�3 �2 ï�4�5 Z s ï ޳�7�O�8�B�9�<�:�; r y �=�A �>�? �@ Z c�C�F�D�E N s �G�H ï  �I�J�M�K�L R= L L R=�N L R= Q�P�W�Q�T�R�S Z ï :y �U�V Z  Z �X�[�Y�Z Z `�\�] r ̀ s �_��`��a�|�b�h š�c�d�f �e š  š�g š  š�i š�j�k �l �m š�n š�o š š�p š�q š�r š�s�t š�u š š�v�w š š�x�y š š�z�{ š š d š�}�~� š�� > k� <� < >������ � ��� �� �� � �� � �� > �� � �� �� � � > � � �� � � � >��� �� � �� � � � > � � �� �� � � � >� � � > � š�� š� š� š�� š > š š� š��� š�� š� š š�� š� š š�� š� š > š�� š� š� š�� š� š� š š�� š > š� š��� š š� š� š�� š� š > š š� š�� š š� š�� š š >� ����#������  š š ��� š  š š�� š  š���� �� š  š�� š� š š ���� �  š � �� š š� � �� š� š š� š� š� š�� š� š š� š  š� š� š�� š š� š�� š š�� š  š� �" �!  š  š�$ š�%�O A�&�' š�(�A�) š š�*�+�6 š�,�- š�. š š�/�0 š š�1 š�2�3 š�4 š š�5  š š�7 š�8 š�9 š�: š�; š�< š�=�> š�? š�@ š  š�B š�C š�D š�E š�F š š�G š�H�I š�J š š�K�L š�M š š�N  š�P�a�Q�R : š �S �T �U�V �W �X �Y �Z�[ �\�] �^ �_ �` D >�b�c�q �d �e�f �g�h �i�j �k�l �m �n�o �p > �r�s��t �u �v�w �x �y�z �{�| �} �~ >� � �� � �� � �� � > š�� ���� š � š��� > >� >� >�� > >�� >� >� >� > >�� >� > > � š�� š� š š�� š � >�� > š� >�� : � š�� š� š�� š š� š� š�� š� š� š� š� š� š� š� š� š� š� š� š� š� š� š š š��� š�� š š� š�� š� š� š� š� š š��*���� >� š� š����� š� � � � �� � �� �� � > � š� š š� š� š� š� š�� š š�� š� š� š š� š > š���� >�� �� � �� �� > ���� � > �� � � � � � � � � >� š : š� � š��$��� š š� š� š� > š��!� š š� š� š > š�" š�# š >�%�'�& š š �( š š�) š š�+ š�,�- š š�. �/�0 @�1 š�2 š š�3 š�4�5 š š�6 š�7�8 š�9 š š�:�; š š�< š @�>��?��@�; š�A�B��C��D�S�E �F�Q�G �H =�I �J I�K t�L CN�M�O�N = Cy CN �P Cy <u �R �T�h�U �V �W  �X �Y �Z�[ �\ �] �^  �_ �` �a�b �c �d �e  �f�g  I �i �j t�k�l�x�m�s�n �o �p �q�r  Cy Cy ~ �t <u�u�v <u <u�w t ~�y��z� T�{ c�|�} T c�~ c T� T c� c T� c c� c c � � � � ~� I7 =��������� � � ����� � ��� � CN =��� � �� �� ��� � �� � q �� � � � q � � i$ �� �  Cy  = � � � � � ����� = <u� =�� �� � Sl� � � � � Sl � d ��� �� � � � � �� �� � � � �� � � ~ �� � ��� ����� � = = Cy �� Cy P�   =���� = ��� �� �� � P� d � � � ���� <u t ���� t�� s  � � � ~� � Cy P I7 =��� �  ��  �� ��� I7 �  � P� P ��  �! �"�#�* =�$�% =�& = =�'�( = d6�) = d6�+�1�, = =�- =�. =�/ =�0 = d6�2�6 =�3�4 =�5 = = d6 =�7 =�8 =�9 =�: = i�<��=�œ�>�E�?�A�@��A š�B� š�C�D�v�E�i�F�J�G �H  �I  š�K�c�L�S�M�P�N �O   š �Q �R š �T �U  �V �W �X�Y �Z �[�_ �\ �] �^ š �`  �a �b  š�d �e �f  �g�h  š �j�p�k�n�l  �m š  �o  š�q �r�t�s  š �u   š�w��x��y� �z�{ �| �} �~  � �  š � � š �  � � � � š �� ��� �  š� � �  ��   š���  �� �  š ���� š� �  š  š� � š � š  š� š�������������� š š  5 š� š� : š��� š� š š > š�  š������ c A H�� A 5a 5 A�� š��� š 5 š �� š� š >�� : ���� š� š� š�� š� š š�� š š� š�� š š�� <   ( š������� A A� š  c (� �  (���� (��� ( c�� � ��� � ��� š k� � ��  c D  : (��� š (� š�� ( š >���� ���� ( 5R ( �� c ( <� (� � < ( (���� 5R� 5R (� ( ( 5R��� 5R ( 5R�� B > � ( 5R��& š�� š š� š� �!�$�"�# š š š�% š š�' š�(�)�1 š�*�+ š�, š š�- š�.�/ š�0 š š š�2 š�3 š�4�5�= š�6 š�7 š�8 š�9 š�:�; š�< š š (�>�@�? š : š š : š�B š�C š�D ҉ š�F�S�G�K �H�I š�J š š š�L š�M�N š �O �P�Q š š�R š�T�i�U š�V�h�W š�X�Y š�Z š�[ š š�\�] š�^ š š�_ š�`�a š�b š š�c�d š�e š�f š š�g > š š�j š�k�u š�l š�m š�n�o�q š�p š �r š š�s š�t  š�v�x š�w š �y ҉ š�z�{�Ž�|�‰ š�}�~ š� š�€ š š��‚ š š�ƒ�„ š š�…�† š š�‡ š�ˆ š�Š š�‹ š�Œ š š� B š� š� š�‘ š š�’ š�“�” š�• š�– š�— š š�˜�™ š š�š�› š 5a š š��ž�¬�Ÿ š�  š�¡ š�¢ š�£ š š�¤ š�¥ š�¦ š�§ š�¨ š�©�ª š�« š B š�­ š�®��¯ š�° š š�±�² š�³ š š�´ š�µ š�¶ š�·�¸ š š�¹�º š�»��¼ š�½ š�¾ š š�¿� š  š� š š������� š š�� c A < k��� š š H š�  š š� š� š�� š� š� š� š š�� š š�� š š�� š š�� š š� š� š� d š����ĸ���������� š š ���� � � H������ א� א�� א א�� � � � א �� א א �� �� Z� ޕ ޕ�� ޕ ޕ� � ޕ� ޕ ޕ� � ޕ� ޕ� ޕ� ޕ ޕ�� ޕ ޕ� ޕ� š� š š� ��ı��Į��� š š �� ҉ �! ҉�"�1�#�;�$ Z�%�.�& Z Z�'�( Z�) Z Z�* Z�+�, Z�- Z ޕ Z�/�8 Z�0�1 Z Z�2 �3�4 Z�5 Z Z�6�7 Z 4{ Z Z�9�: Z  Z�<��=�s�>�@�? Z�A�Z�B�H�C 4 4�D 4�E 4�F�G 4 4 �I�R�J�N�K 4 4�L 4�M 4 �O 4 4�P�Q 4 4 �S 4�T 4�U 4�V 4�W 4 4�X�Y 4 4 �[�e Z�\�] Z�^ Z�_�d Z�` Z�a�b Z�c Z Z Z �f Z�g�l Z�h�i Z�j Z�k Z Z Z�m Z�n Z�o�p Z�q Z Z�r Z �t�Ý�u�Î�v� Z�w�x Z�y Z Z�z Z�{�| Z�} Z�~ Z Z�À�È�Á Z Z�Â�à Z�Ä Z Z�Å Z�Æ Z�Ç Z �É�Ê �Ë �Ì �Í �Ï�Ù�Ð�Ô�Ñ Z�Ò Z Z�Ó Z Z�Õ Z�Ö Z�× Z�Ø Z �Ú Z�Û Z Z�Ü Z �Þ�ï�ß�ê�à�ä Z�á�â Z�ã Z Z �å Z Z�æ�ç Z�è Z Z�é Z�ë �ì Z�í Z Z�î Z�ð�ù�ñ �ò Z�ó Z�ô Z Z�õ�ö Z Z�÷�ø Z Z �ú Z�û�þ Z�ü�ý Z Z�ÿ� Z� Z� Z� Z� Z� Z� Z Z� Z� Z ���� Z�� Z��� Z Z� Z� , Z Z� Z� , Z���� Z ,��� Z� Z� Z Z� Z , Z�� Z Z�� Z Z� Z � Z� Z� Z Z�� Z Z�� Z� Z Z� Z ,����� Z� Z Z� Z�� Z Z�� Z Z� Z� , Z�������� Z Z , Z ,� Z� Z� Z� , ,� Z� Z� Z , Z� Z� � Z� Z� Z� Z Z� Z� Z ,� Z Z�� Z��,� Z��"�� Z� Z�� Z  Z Z��� � Z 4{ Z�! Z ; Z�# Z�$�)�%�'�& Z ޕ Z�( Z h Z�* Z�+ Z J Z�- Z�. Z Z�/�0 Z Z ,�2�~�3�c�4 Z�5�^ Z�6�7�@ Z�8 Z�9 Z�:�; Z�< Z�= Z�> Z Z�?  Z�A�V�B�I�C Z Z�D�E Z Z�F�G Z�H Z  Z�J�P Z�K�L Z Z�M�N Z�O Z Z �Q Z Z�R Z�S�T Z�U Z  Z�W Z�X Z Z�Y�Z Z�[ Z Z�\�] Z  Z Z�_ Z�` Z�a Z�b  Z�d Z�e�q�f�n Z�g�h�i  Z�j Z Z�k�l Z Z�m Z ,�o Z Z�p Z Y�r�v�s Z Z�t�u Z Z  Z�w Z�x Z�y Z�z�{ Z�| Z Z�} ކ Z��Ď�Ā�ą Z�ā�Ă Z�ă Z�Ą Z  Z�Ć�Ċ�ć Z Z�Ĉ Z�ĉ Z  Z�ċ�Č Z Z�č Z  Z�ď�Đ�Ę Z�đ�Ē Z Z�ē Z�Ĕ�ĕ Z Z�Ė Z�ė Z ,�ę�ĥ Z�Ě Z�ě�Ĝ Z Z�ĝ�Ğ Z�ğ Z�Ġ Z�ġ�ģ Z�Ģ Z �Ĥ Z Z�Ħ�Ĭ�ħ Z Z�Ĩ Z�ĩ Z�Ī Z�ī  Z�ĭ Z Z �į š�İ š �IJ�ĵ�ij š�Ĵ š �Ķ�ķ š �Ĺ��ĺ��Ļ�Ų �ļ�Ľ�ű�ľ š�Ŀ� ������� Z Z� Z� Z� Z  Z�� Z��� Z  Z Z� Z� Z� Z�� Z Z� Z  Z� Z� Z��� Z� Z���� Z� Z , Z� Z��� Z Z , Z����� Z� Z Z�� Z Z , Z� Z�� Z Z ,� Z Z� Z� Z� ,� , Z��� Z��� Z Z� Z�  Z� Z Z�� Z  Z� Z�� Z� Z��� Z Z�� Z Z�� Z Z ,� Z Z � �s� �L� �5��!��� Z� Z� Z� Z� Z� Z� Z� Z Z�  Z� Z Z� Z� Z�� Z� Z Z�  Z�" Z�#�,�$ Z Z�%�& Z Z�' Z�(�) Z�* Z�+ Z  Z�- Z Z�.�/ Z�0 Z�1 Z Z�2�3 Z Z�4 Z �6�A�7 Z Z�8�9 Z�: Z Z�;�< Z�= Z�> Z Z�?�@ Z  Z�B Z�C Z Z�D Z�E�F Z�G Z�H Z Z�I�J Z Z�K  Z�M�]�N�W�O Z�P�V�Q Z Z�R Z�S Z�T Z�U Z , , Z�X Z Z�Y�Z Z�[ Z�\ Z Z ,�^�m�_�c Z�`�a Z�b Z , Z�d Z Z�e�f Z Z�g Z�h�i Z Z�j Z�k Z�l , Z�n Z�o Z�p Z�q Z Z�r Z ,�t�Ŕ�u��v �w �x �y �z �{ �|�} �~ U�ŀ�ŋ�Ł Z�ł Z�Ń�ʼn Z�ń�Ņ Z Z�ņ Z�Ň�ň Z Z �Ŋ Z Z Z�Ō Z�ō Z�Ŏ Z�ŏ�Ő Z�ő�Œ Z Z�œ Z �ŕ�ŝ Z�Ŗ Z�ŗ Z�Ř Z�ř Z�Ś Z�ś Z�Ŝ Z ޕ Z�Ş�ş�ŧ Z�Š Z�š Z�Ţ Z�ţ�Ť Z�ť Z�Ŧ Z ޕ Z�Ũ Z�ũ Z Z�Ū Z�ū Z�Ŭ�ŭ Z Z�Ů Z�ů Z�Ű Z 4{ š �ų� š�Ŵ š�ŵ�Ŷ�7�ŷ� Z�Ÿ�Ź��ź��Ż�Ž�ż Z Z �ž Z Z�ſ� Z Z�� Z� Z Z � Z�� Z� Z� Z�� Z Z   Z�� Z�� Z� Z� Z� Z Z� Z� Z� Z� Z�  Z���� Z� Z� Z� Z� Z�� Z Z�� Z  Z� Z� Z� Z� Z� Z� Z� Z Z� Z � Z� Z� Z� Z Z�� Z� Z� Z� Z  Z��+�� Z����� , Z� Z Z� Z� Z��� Z� Z� Z� Z Z ,�� Z� Z�� Z� Z Z� Z� Z� � Z , Z Z ,� Z��#�� Z� Z� Z� Z�� Z Z� Z  Z�� Z� Z� Z� Z� Z Z�!�" Z , Z Z�$ Z�% Z�& Z�'�( Z�) Z�* Z Z ,�, Z�-�2�. Z�/ Z Z�0 Z�1 Z�3 Z Z�4�5�6 Z   Z�8�ƻ�9�U Z�:�; Z�<�M�= Z�>�F�? Z�@ Z Z�A�B Z Z�C�D Z Z�E Z , Z�G�H Z�I Z Z�J Z�K�L Z Z , Z�N Z�O�P Z�Q Z�R Z�S Z�T Z  Z�V�Ư�W�x�X�j�Y�[ �Z Z Z�\ Z�]�^�d�_ Z�` Z�a Z�b Z Z�c Z Z�e�f Z�g Z Z�h Z�i Z �k�t Z�l�m Z Z�n Z�o�p Z�q Z�r Z Z�s Z Z�u Z�v�w Z Z�y�Ɨ�z�{ Z �|�Ə Z�}�~�Ƅ Z� Z�ƀ�Ɓ Z Z�Ƃ�ƃ Z Z �ƅ�Ɗ�Ɔ Z�Ƈ Z�ƈ Z�Ɖ Z Z Z�Ƌ�ƌ Z�ƍ Z�Ǝ Z Z �Ɛ Z Z�Ƒ Z�ƒ�Ɠ Z�Ɣ Z�ƕ Z Z�Ɩ Z�Ƙ�Ơ Z�ƙ�ƚ�ƛ Z�Ɯ Z�Ɲ Z�ƞ Z Z�Ɵ Z�ơ�Ʃ �Ƣ Z�ƣ Z�Ƥ�ƥ Z Z�Ʀ Z�Ƨ Z�ƨ Z Z�ƪ Z�ƫ Z�Ƭ�ƭ Z �Ʈ Z�ư�Ʒ Z�Ʊ Z�Ʋ Z�Ƴ�ƴ Z Z�Ƶ�ƶ Z Z Z�Ƹ�ƹ Z Z�ƺ Z  Z�Ƽ�ƽ Z�ƾ��ƿ Z� Z Z�� Z Z�� Z Z � Z�� Z�� Z Z � Z Z� ޕ Z�� š���ǎ��� ����� Z Z�� Z  Z� Z Z�� Z Z�� Z� Z� Z� Z  Z Z���� Z� Z Z� Z�� Z Z� Z� h Z Z�� Z Z ��%����� Z Z�� Z� Z��� Z� Z Z�� Z Z� , Z Z� Z�� Z Z��� Z , Z Z�� Z Z ,�� � Z Z�� Z� Z Z� Z ,� � Z� Z� Z�� Z� Z� Z� Z Z� Z� Z , Z��� Z�� Z� Z� Z� Z Z � Z�! Z Z�" Z�# Z�$ Z ,�&�F�'�9�(�3�)�2�* Z Z�+ Z�, Z�- Z�.�/ Z Z�0 Z�1 Z Z Z�4 Z�5 Z�6 Z�7 Z�8 Z�: Z�;�= Z�< Z�> Z�?�@ Z Z�A�B Z�C Z Z�D�E Z Z�G�`�H�N Z�I�J Z�K Z Z�L Z�M Z Z�O�P�X Z�Q Z�R Z�S�T Z�U Z Z�V�W Z Z�Y Z Z�Z Z�[�\ Z Z�] Z�^ Z�_ Z �a�ǁ�b�v�c�l Z�d�e�h Z�f Z�g Z�i Z Z�j Z�k Z Z�m�n Z�o�t�p Z Z�q Z�r Z�s Z�u Z Z�w Z Z�x�y�} Z�z Z�{�| Z Z�~ Z Z��ǀ Z Z �ǂ�LJ�ǃ Z Z�DŽ�Dž Z�dž Z Z�Lj Z�lj Z�NJ Z Z�Nj Z�nj�Ǎ Z Z Z�Ǐ�ǐ�Ǧ�Ǒ�ǚ�ǒ Z Z�Ǔ Z�ǔ Z�Ǖ Z�ǖ�Ǘ Z�ǘ Z Z�Ǚ , Z�Ǜ Z Z�ǜ�ǝ Z Z�Ǟ�ǟ Z�Ǡ Z�ǡ Z Z�Ǣ Z�ǣ�Ǥ Z�ǥ Z Z�ǧ��Ǩ Z�ǩ Z�Ǫ�ǰ Z�ǫ�Ǭ Z�ǭ Z�Ǯ Z Z�ǯ Z �DZ�Ǹ�Dz Z�dz Z�Ǵ Z�ǵ�Ƿ Z�Ƕ Z h Z �ǹ Z Z�Ǻ�ǻ�Ǿ Z�Ǽ�ǽ Z Z Z�ǿ Z� Z��� Z Z�� Z Z  Z� Z��� Z�� Z Z , Z ޕ š�� � � � �� 8� 8 8�� 8 8�� 8� 8 8�� 8 8� 8��Ȫ� š��� š� š š�� š š� š� š� š�� š š� š�� š š�� š c š š����� �� Z���� Z� Z Z Z� Z� Z� Z� Z� Z� Z�� Z Z��� Z�� Z� Z Z� Z � Z Z� Z� Z � Z Z� Z���� Z Z�� Z� Z� Z Z Z�� Z  Z��\��F��, ���" Z� Z� �! Z Z �# Z�$ Z Z�%�& Z�' Z Z�(�) Z�* Z�+ Z Z �- Z Z�.�/�< Z�0 Z�1�2�6�3 Z�4 Z�5 Z  Z�7 Z�8 Z Z�9�: Z�; Z Z �= Z�>�?  Z Z�@�A Z�B Z Z�C�D Z Z�E Z �G�S Z�H�I Z Z�J Z�K�L Z Z�M Z�N Z�O�P Z�Q Z Z�R Z  Z�T Z�U Z�V Z�W�X Z�Y Z�Z Z�[ Z  Z�]�w Z�^�_�r�`�h Z�a�b Z Z�c Z�d�e Z�f Z�g Z  Z Z�i�j Z�k Z�l Z�m Z�n Z�o Z�p Z�q Z  Z�s Z�t Z Z�u�v Z Z �x�ȋ�y�Ȁ Z�z Z�{�| Z�} Z Z�~� Z  Z Z�ȁ�Ȃ Z�ȃ Z Z�Ȅ�ȅ Z Z�Ȇ�ȇ Z�Ȉ Z Z�ȉ Z�Ȋ Z �Ȍ�ȟ�ȍ Z Z�Ȏ�ȏ Z�Ȑ Z Z�ȑ Z�Ȓ�ȓ Z�Ȕ�Ț�ȕ�Ș�Ȗ�ȗ  Z Z �ș Z Z �ț�Ȝ Z �ȝ�Ȟ Z  Z  Z�Ƞ Z�ȡ Z�Ȣ�ȣ Z Z�Ȥ�ȥ Z�Ȧ Z Z�ȧ�Ȩ Z�ȩ Z  Z�ȫ š�Ȭ�ɰ š�ȭ�Ȯ�w�ȯ�:�Ȱ��ȱ��Ȳ��ȳ �ȴ �ȵ�Ȼ �ȶ�ȷ �ȸ �ȹ �Ⱥ �ȼ �Ƚ �Ⱦ �ȿ ��� , �� � � , � �� � � � � ޕ�� � � ,� ����� �� � � , �� � � �  � � �� ,������ � � �� � �� , � �� � � � , ���� , � � ��� � � � � , ��� � � ,� � � � � �� ��#�� �� �� � ��  � � � � �! �" ,�$�, �% �&�' �( �) �*�+ , , �-�.�4 �/�0 �1�2 ,�3 , �5 �6 �7 �8�9 �;�X�<�H �=�>�F�? �@ �A �B �C�D �E ,�G ,�I�Q �J�K �L �M �N�O �P , �R �S �T �U �V�W , �Y�]�Z �[ �\ , �^�_�m�`�i �a �b �c �d�e �f �g �h , �j �k �l ,�n �o�p �q �r �s �t �u �v ,�x�ɘ�y�ɇ�z�~�{ �| �} ޕ� �ɀ �Ɂ�ɂ �Ƀ�Ʉ �Ʌ �Ɇ ޕ �Ɉ�ɉ �Ɋ �ɋ�Ɍ�ɒ�ɍ �Ɏ �ɏ �ɐ �ɑ , �ɓ �ɔ�ɕ �ɖ�ɗ ޕ�ə �ɚ�ɛ �ɜ �ɝ�ɩ�ɞ �ɟ�ɠ�ɤ�ɡ �ɢ �ɣ h �ɥ �ɦ�ɧ�ɨ ޕ , �ɪ�ɫ �ɬ �ɭ �ɮ�ɯ , š�ɱ�ɲ��ɳ� Z�ɴ�ɵ Z�ɶ�ɺ�ɷ Z Z�ɸ�ɹ Z Z �ɻ�ɾ�ɼ Z�ɽ Z  Z�ɿ Z Z� Z � Z Z��� Z� Z�� Z Z� Z�� Z� Z� Z Z� Z�  Z� Z Z�� Z Z � Z Z��� Z�� Z��� Z� Z Z� Z�� Z Z� Z�� Z Z ކ Z� Z � Z Z� Z� Z� Z �� �� š� š� š� H� �� � � � � � � �� ������   � ��� � H � ��� � א� � � š š ���� š� š � š š��� š š��� š � א š����{��7��$� �" š�! š �# š �%�0�&�) �' �( �* š �+�,�/ H�-�. H H �1�5 �2 �3�4 �6 �8�=�9�<�: �; š�>�@ š�?  š�A�B Z Z�C�D Z�E Z Z�F�G�p�H Z�I�_�J�W�K Z Z�L�M�R Z�N�O Z�P Z�Q Z ޕ Z�S Z�T Z�U Z�V Z Z ޕ�X Z�Y Z�Z Z�[ Z Z�\ Z�] Z�^ Z ޕ�`�h Z�a Z�b Z�c�d Z Z�e�f Z�g Z ޕ Z Z�i�j Z�k Z Z�l�m Z Z�n�o Z Z ޕ�q Z�r Z�s Z�t Z Z�u Z�v Z�w�x Z�y Z Z�z ޕ Z�|�ʧ�}�ʣ�~ š��ʈ š�ʀ �ʁ�ʂ �ʃ �ʄ �ʅ �ʆ �ʇ �ʉ�ʊ = �ʋ�ʛ�ʌ �ʍ �ʎ �ʏ �ʐ �ʑ �ʒ�ʗ�ʓ �ʔ �ʕ �ʖ �ʘ �ʙ �ʚ �ʜ�ʝ �ʞ  �ʟ�ʠ  �ʡ �ʢ  �ʤ�ʦ š�ʥ š y�ʨ� �ʩ� š�ʪ�ʫ� �ʬ��ʭ�ʴ�ʮ Z�ʯ Z�ʰ Z�ʱ Z Z�ʲ Z�ʳ  Z Z�ʵ�ʶ��ʷ�ʾ�ʸ Z Z�ʹ Z�ʺ�ʻ Z Z�ʼ Z�ʽ Z Z�ʿ Z� Z�  Z Z� Z� Z� Z�� Z Z�� Z Z� Z�� Z Z� Z 4{���� Z���� Z� Z� Z  Z� Z Z� Z�  Z�� Z�� Z Z�� Z  Z Z� Z�� Z� Z� Z Z�� Z Z �� Z� Z� Z��� Z� Z�� Z Z� Z�� Z� Z� Z 4{ Z� Z Z�� Z Z�� Z� Z  Z��� Z�� Z Z� Z� ކ Z Z���� Z� Z ޕ Z Z� � Z  Z s š �� š š ��͌��K� š��J š� ���˟��Y�� Z� Z� Z� Z�� Z Z� Z ,�!�+�"�* Z�# Z�$�% Z Z�& Z�' Z�( Z�) Z Z , Z�,�-�2�. Z Z�/ Z�0 Z�1 Z ,�3�I�4 Z�5�B�6�<�7 Z�8 Z�9 Z�: Z Z�; , Z�= Z�> Z Z�?�@ Z Z�A Z , Z�C Z�D�E Z Z�F Z�G Z�H Z ,�J Z�K�R�L Z Z�M Z�N�O Z�P Z Z�Q , Z Z�S�T Z�U Z�V Z�W Z�X Z  Z�Z�t�[�l�\ Z�]�e Z�^ Z�_�` Z�a Z�b Z Z�c Z�d U Z Z�f�g Z Z�h Z�i Z�j Z�k , Z�m Z�n Z�o Z ,�p�q Z�r Z Z�s , Z�u�~�v Z�w Z�x Z Z�y�z Z�{ Z�| Z�} Z Z ,��ˊ�ˀ Z Z�ˁ Z�˂�˃ Z�˄ Z Z�˅�ˆ Z�ˇ Z�ˈ Z�ˉ Z Z ,�ˋ Z�ˌ�˙�ˍ�˓�ˎ Z�ˏ Z Z�ː Z�ˑ Z�˒  Z�˔ Z�˕ Z Z�˖ Z�˗�˘ Z ޕ Z Z�˚ Z�˛�˜ Z Z�˝�˞ Z Z �ˠ��ˡ�̅�ˢ�3�ˣ��ˤ�˴�˥�˨ Z�˦�˧ Z Z �˩�˫�˪ Z �ˬ�˯�˭ Z�ˮ Z Z Z�˰ Z�˱�˲ Z Z�˳ Y �˵�˿ Z�˶ Z�˷�˸�˻ Z�˹�˺ Z Z Z�˼ Z�˽ Z�˾ , Z Z�� Z Z�� Z�� Z�� ޕ ޕ� ޕ Y Z��������� Z Z�� Z� Z Z� Z� Z Z��� Z� Z� Z�� Z Z Z� Z�� Z Z� Z Z� Z� Z� Z�� Z Z�� Z Z ������ Z� Z�� Z� Z Z� Z Z�� Z Z� Z�� Z Z ��� Z Z� Z� Z� Z� Z � Z Z�� Z� Z�� Z Z Z� Z� Z��� � Z� Z� Z Z Z� � Z� Z Z��)�� Z� Z� Z�� Z Z ��"�� Z�� Z Z� Z Z���! Z� Z ޕ Z�# Z�$ Z Z�%�& Z Z�' ކ�(  ކ�* Z �+ �,�- �. �/ �0�1�2  Y�4�f�5�; Z�6 Z�7 Z�8 Z�9�: Z Z�<�]�=�E�> Z�? Z�@ Z�A Z�B Z�C Z Z�D Z�F�P Z�G Z�H�I Z�J�M�K Z�L Z Z �N Z Z�O Z�Q�W Z�R�S Z�T Z�U Z Z�V Z �X Z Z�Y�Z Z Z�[�\ Z Z �^ Z Z�_ Z�`�a Z Z�b Z�c�d Z Z�e Z�g�y�h�s�i�n Z�j Z�k Z�l�m Z Z Y�o Z�p Z�q Z Z�r ޕ  Z�t Z�u Z�v Z�w�x Z Z �z Z Z�{�|�̀�} Z�~� Z Z �́ Z Z�̂ Z�̃ �̄ Z �̆�̶�̇�̠�̈�̍ Z�̉�̊ Z�̋ Z�̌ Z �̎�̕�̏ Z�̐�̒�̑ Z Z Z�̓ Z�̔ Z Z�̖�̗�̜�̘ Z�̙ Z�̚ Z�̛ Z Z �̝ Z�̞ Z�̟ Z Z �̡ Z�̢�̲�̣�̭�̤ Z Z�̥�̦�̫ �̧�̨ Z�̩ Z�̪ Z Z Z�̬ Z�̮ Z�̯ Z�̰ Z Z�̱ Z Z�̳�̴ Z Z�̵ Z�̷ Z Z�̸�̹�̿ Z�̺ Z�̻ Z�̼�̽ Z Z�̾ Z � Z Z ��.����� Z� Z� � Z Z�� Z Z�� Z� Z� Z Z ����� Z Z�� Z� Z Z�� Z Z� Z� Z Z�� Z� Z Z�� Z Z�� Z� Z Z��� Z�� Z�� Z Z � Z� Z Z��� Z� Z Z� Z� Z� Z�� Z Z Z�� Z Z���� Z� Z�� Z� Z Z Z�� Z �� Z� Z� Z� Z� Z� Z� Z� � Z Z� Z� �� Z��� Z Z�� Z Z�� Z Z� Z� Z Z�� Z Z�� Z� Z Z ��&� Z Z� Z�!�" Z Z�# Z�$ Z�% Z Z�' Z�(�) Z Z�*�+ Z�, Z Z�- Z�/ Z�0 Z�1�?�2�7 Z�3�4 Z Z�5 Z�6 Z�8 Z�9�< Z�: Z�; Z�= Z�> Z Z Z�@�A�E Z�B�C Z�D Z Z Z�F�G Z�H Z�I Z Z š �L�͇�M š š�N�O ҉�P�X Z�Q�R Z Z�S�T Z Z�U Z�V Z�W Z �Y�d Z�Z�[ Z Z�\�] Z Z�^ Z�_�` Z Z�a Z�b�c Z  Z�e�o�f Z Z�g�h�k�i Z�j Z  Z Z�l Z�m�n Z Z �p Z�q Z�r��s Z Z�t�u�| Z�v Z�w Z�x Z�y�z Z Z�{ Z Y Z�}�~ Z 4{ ޕ Z�̀ Z�́ Z�͂ Z�̓ Z�̈́ Z�ͅ�͆ Z  Z�͈�͊ š�͉ ҉ š�͋ ҉�͍�͔�͎�͐ š�͏ š �͑�͓ š�͒ ҉ š �͕�͙�͖�͘�͗ š š �͚�͛ š ҉�͜�͝��͞�o�͟��͠��͡�ͷ�͢�ͦ Z�ͣ�ͤ Z Z�ͥ  Z�ͧ�Ͳ�ͨ�ͫ�ͩ Z�ͪ Z Z �ͬ Z Z�ͭ�ͮ Z�ͯ Z Z�Ͱ Z�ͱ ; Z Z�ͳ Z�ʹ Z�͵�Ͷ Z Z �͸��͹��ͺ��ͻ Z�ͼ  �ͽ �; �Ϳ� � �  , � Z� Z Z� Z�� Z Z� , Z Z� Z�� Z Z�  Z� Z Z� Z�� Z Z�� Z Z J Z����� Z� Z�� Z� Z� Z Z� Z Z�� Z Z �� Z�� Z Z� Z� Z� Z�� Z Z J Z�� Z��� Z  Z� Z Z� Z��A���� � Z��� Z� Z Z� Z�� Z Z��� Z Z� h Z�� � Z� Z Z� Z� Z� Z  Z� Z  Z� Z� �� Z� Z�� Z� Z Z� Z� Z� Z ކ��� � Z� Z Z� Z ;� Z� Z Z � �2�!�+�"�%�# Z Z�$ Z  Z�& Z�' Z�( Z�) Z�* Z Z�,�- Z�. Z�/ Z�0 Z�1 Z Z F�3�7 Z�4�5 Z�6 Z Z  Z�8�9 Z Z�:�; Z�< Z Z�=�> Z Z�?�@ Z F Z�B�c�C�N Z�D�E Z�F Z�G Z Z�H Z�I Z�J Z�K Z�L�M Z h Z�O�\�P Z Z�Q Z�R Z�S�T Z�U�Y Z�V Z�W Z�X Z 4{�Z Z�[ Z 4{ Z�]�` Z�^ Z�_  Z Z�a Z�b  Z Z�d Z�e Z�f Z�g�h Z Z�i Z�j Z�k Z�l Z�m Z�n h Z�p��q�Λ Z�r�s�΃�t�~�u Z�v�x Z�w Z �y Z Z�z Z�{�| Z�} Z Z Z��΀ Z�΁ Z Z�΂ Z�΄ Z�΅�ΐ�Ά�Έ�· Z Z  Z�Ή�Ί Z�΋ Z Z�Ό Z�΍�Ύ Z Z�Ώ Z �Α�Γ Z�Β Z �Δ Z Z�Ε Z�Ζ�Η Z�Θ Z�Ι Z�Κ Z Z ,�Μ��Ν�α Z�Ξ�Ο Z�Π�Ϋ�Ρ Z�΢ Z�Σ�Φ�Τ Z Z�Υ ; Z�Χ Z�Ψ Z�Ω Z�Ϊ h Z h�ά Z Z�έ Z�ή Z�ί�ΰ Z  Z�β��γ�λ�δ�ι�ε Z�ζ Z�η Z Z�θ Y Z Z�κ Z �μ Z Z�ν�ξ Z�ο Z��� Z J ކ Z� Y Z� Z� Z Z� Z �� Z�� Z� Z� Z� Z Z�� Z Z� Z Z�� Z Z� Z� Z �� Z�� Z Z�� Z Z� Z� Z�� Z� Z� Z� Z� Z Z 4{������ Z� Z�� Z Z�  Z� Z� Z Z�� Z� Z Z� Z� ; Z Z���� Z� Z� Z� Z Z� Z� Z � Z�� Z Z�� Z� Z� Z� Z� Z ; Z� Z Z� � Z Z� � � Z� Z�� Z� Z� Z Z� Z ,�� Z� Z� Z� h Z� Z� Z� Z  Z��Ϝ��d��K� �'�! Z Z�" Z�#�$ Z�% Z Z�& Z �(�?�)�7 Z�* Z�+ Z�, Z�-�. Z�/�3�0 Z�1 Z�2 Z Z 4{ Z�4 Z�5�6 Z Z 4{�8 Z Z�9 Z�: Z�; Z�<�= Z�> Z Z ; Z�@ Z�A�B Z�C Z�D  Z�E Z�F�G�I h�H Z h�J Z h Z Z�L�M�T Z�N�O Z�P Z�Q�S Z�R  Z  Z�U Z Z�V�W�\ Z�X Z�Y Z�Z�[ Z Z ,�] Z Z�^ ޕ�_�` ޕ�a ޕ�b ޕ ޕ�c ޕ Z Z�e�f�ρ�g�u�h�r�i Z�j�p Z�k�l Z Z�m Z�n Z�o Z �q Z Z �s Z�t Z ޕ Z�v Z�w�~ Z�x�y Z Z�z Z�{ Z�|�} Z ; Z Z� Z�π Z �ς�ύ Z�σ Z�τ Z�υ�φ Z Z�χ�ψ Z Z�ω Z�ϊ�ϋ Z�ό Z  Z�ώ�ϒ�Ϗ Z�ϐ Z Z�ϑ Z  Z�ϓ Z�ϔ Z�ϕ�ϖ Z�ϗ Z Z�Ϙ�ϙ Z Z�Ϛ Z�ϛ Z�ϝ��Ϟ��ϟ��Ϡ�ϴ Z�ϡ�Ϣ�ϧ Z�ϣ�Ϥ Z�ϥ Z�Ϧ Z , Z�Ϩ�ϲ�ϩ�ϫ Z�Ϫ Z �Ϭ�ϰ�ϭ Z Z�Ϯ Z�ϯ , Z Z�ϱ Z ,�ϳ Z Z �ϵ Z�϶ Z�Ϸ�ϼ�ϸ Z�Ϲ Z�Ϻ Z Z�ϻ  Z�Ͻ Z�Ͼ Z Z�Ͽ� Z Z F� Z��� Z Z� Z� Z� Z� Z� Z�� Z Z� ކ Z Z� Z�� Z Z�  Z� Z��� Z Z�� Z� Z� Z Z� Z� Z� Z� Z� Z 4{� Z� Z Z� Z� Z� Z� Z�� Z Z�� Z Z 4{�� Z���� Z��� Z� Z Z�� Z� Z Z� h Z� Z Z�� Z� Z Z�� Z Z� Z� Z h Z����� Z Z� Z  Z�� Z Z� Z � Z Z� � Z Z� � Z� Z Z�� Z Z�� Z  Z������l��m��P š���=� š ���- � �� �!  �"�# �$  �% �&�' �( �) �* �+  �,  š�. �/ �0  �1�2 �3 �4 �5 �6 �7  �8�9 �: �;  �< š  š�> �?�@ �A �B �C  �D �E �F �G�H �I  �J �K�L �M �N  �O �Q�f š�R š�S š�T�U c�V�X š�W c š�Y�_ š�Z�[�] š�\ š š�^  š�`�c H�a H�b š H š�d�e š  š�g�h  š�i�k�j  �l š�n��o�Љ�p�Ѕ�q�s �r � :�t š�u�v š�w š�x š š�y�z š š�{�| š�} š�~ š š��Ѐ š š�Ё�Ђ š�Ѓ š�Є š š�І�Ј š�Ї š ,�Њ�Ћ š š�Ќ�Ѝ��Ў�Л�Џ š�А�Е š�Б�В�Г š  š�Д š :�Ж š�З�Й š�И š š�К š�М�T�Н��О��П�Ч�Р�Ц�С�Ф�Т�У  š  š�Х š š š�Ш š�Щ�й �Ъ�Ы�в š�Ь�Э š š�Ю š�Я�а š�б š š  š�г š�д š�е�ж š š�з š�и š�к š š�л�м š�н š�о š�п š š� š� š ������ š� š� š� š�� š š�� š š� š š�  š� š š� š ��� š� š  š���� � š� š� š š�  š š� š �������� š�� š�� š� š š� š�� š š :� š š W���� š�� š : š š š� š� š� š� š ��� š� š�� �  š��� š� š  š š� š���"� � š� � š� š š� š�� š  š��� š���� š  š� š� š š ��� š š� š� � š š�� š š�! � š�#�6�$�(�% š š�& š�'  š�)�, š�* š�+ š �-�0 �.�/ �1�3 �2 �4�5 k š š ��7�N�8�E�9�>�:�< ��; � š�= š š �?�B�@�A š : : š�C�D H  : �F�L�G�I�H š š�J�K š š :�M š : š�O š�P š�Q š�R�S š š�U��V��W�ѵ�X�Ѣ�Y�l�Z�c š�[�\ š š�]�^ š š�_ š�` š�a š�b š k š�d š�e š�f�g š š�h š�i�j š�k š š k�m�ё š�n�o�v š�p š�q š�r š�s š�t š�u š k�w š�x�х�y�р�z š�{�~�|�} š k š k� š š k š�с�т š�у�ф š k š k�ц�ъ š�ч š�ш š�щ š k�ы š�ь�я�э�ю š k š k�ѐ š š k�ђ�њ š�ѓ�є š š�ѕ š�і�ї š š�ј�љ š š k š�ћ š�ќ�ѝ š�ў š�џ š�Ѡ š š�ѡ š k�ѣ�Ѵ�Ѥ�ѥ š ,�Ѧ�ѭ š�ѧ š�Ѩ š�ѩ š�Ѫ š�ѫ š�Ѭ š š�Ѯ š�ѯ š�Ѱ š�ѱ š�Ѳ š�ѳ š š H�Ѷ��ѷ� H�Ѹ�ѹ š�Ѻ š�ѻ š�Ѽ š�ѽ š�Ѿ š š�ѿ� š š š� : � � š š��� š�� š š�� š� š� š š� š� š š�� š š� š� š� š� š š�� š š�� š �� š� š� š š��� š� š� š� š š� š� š�� š� š � š��� š W�� š š� š�� š� š š�� š š� š���� ��� š š�� š š� š����� š � š š� š� š� š� š� š � � š : š� , š� š� : , š��ҁ��7��.� ��#�� š��� š  , �� �� : š š �!�" š �$�+�%�(�&�' c  k :�)�* � š š H �, š�- >�/�4�0 �1 š �2�3 š š  �5�6 š š�8�=�9 š�:�; š �< š š �>�\�?�[�@�O š�A�B�C  š�D š�E�L�F�I�G�H š š �J�K , � �M š�N š �P�Z�Q�R : š š�S š�T�U š�V š�W š š�X š�Y š  š  š�] š�^�_ š�`�|�a�o�b�i�c�f�d�e š  �g�h : š �j�m�k�l š � š ,�n š �p�u�q�s š�r c k š�t : š�v�y�w�x H W �z�{ > � <�} š�~ š� š�Ҁ š A š�҂�җ�҃�Ґ�҄�҈ š�҅ š�҆ š�҇ š :�҉�ҍ�Ҋ š�ҋ š�Ҍ : š�Ҏ :�ҏ  š ��ґ�Ғ �ғ�Ҕ � š �ҕ š�Җ š ,�Ҙ�Ҿ�ҙ�ҩ�Қ�ҟ �қ�Ҝ�Ҟ <�ҝ < A A š�Ҡ�ҥ�ҡ�ң�Ң š �Ҥ k�Ҧ�ҧ k c�Ҩ : c :�Ҫ�Ҵ�ҫ�ү�Ҭ�Ү �ҭ š�Ұ�Ҳ�ұ H š H W�ҳ W �ҵ�Һ�Ҷ�Ҹ�ҷ > >�ҹ : :�һ�ҽ ��Ҽ � š�ҿ� ,�� š š �������� k : H� š W �� š� š >�� � A ������ :� š  š����  � š�� , c������� :� š  š� š� š  ��ش��5��ֳ����b��(�� ��� š� š� š� š� š� š� š� š š š�� š�� �� š�� š š�� š�� š š �� �� š � š� š š� š š� � š� š�� š� š� š š �� š� š�� š š�� š š��� š � �� � š��"� š� š�! š š ��# š�$ š š�%�& š š�' š�)�U š�*�+�7�, š�-�2 š�. š�/ š�0 š�1 š š�3 š�4 ,�5�6 š , š�8�@ š�9 š�: š�;�<�?�= š�> š š�A�K�B�G š�C�D š š�E�F š �H š š�I�J š š š�L�M�P š�N�O š š š�Q�R š�S�T š š �V š�W š�X š�Y š�Z š�[�^�\ š �] š �_ š�` š�a š�c�ӎ�d�z�e š�f�w�g �h �i�m�j �k �l �n�r�o�p �q  �s�t �u�v  �x š�y š š�{ š�| š�}�Ӌ�~ ��Ӆ�Ӏ �Ӂ �ӂ�ӄ�Ӄ š š �ӆ�Ӈ �ӈ �Ӊ�ӊ š �ӌ�Ӎ š�ӏ�2�Ӑ��ӑ�ө�Ӓ�Ә�ӓ�ӕ�Ӕ A �Ӗ ( 5�ӗ A �ә�ӟ (�Ӛ�ӛ ( �Ӝ A�ӝ (�Ӟ A �Ӡ�ӥ�ӡ A �Ӣ (�ӣ�Ӥ ( ( A A�Ӧ (�ӧ�Ө A ( A�Ӫ�Ӷ�ӫ�Ӳ�Ӭ�ӱ (�ӭ�Ӯ �ӯ �Ӱ  A  (�ӳ�ӵ�Ӵ (  A c (�ӷ�ӽ�Ӹ�ӻ�ӹ�Ӻ A (  A A�Ӽ ( �Ӿ�ӿ  ( (� ( A������� ( A ��  � � A�� ( �  (��������� A (�� ( (  A� c (� �  ( ��� (��  ( (�  A (� � (�� A ( A���� A (� A� A c A��� (�� A��� A (  ( (   (���� ������ ( (�� A�� ( A  ( A ��� (��  ( ( (��� � � � (  ( A ( � ���  (� (�� A A A�� ( A  A� ���  ( ( A��(��# (�� A A�� A�!�" ( c A �$�' A�% A�& A ( ( �)�-�* �+ c�,   c �. c�/�0�1 c ( A �3�ԥ�4�h�5�M�6�>�7 ( (�8�9�: ( š š�; š�<�= š š (�? �@�I�A š�B�E š�C (�D ( š�F�G š (�H š ( š (�J�K�L ( c  c�N�_�O�X�P�U�Q�T (�R (�S ( ( �V�W c ( ( A�Y�^�Z�\�[ A  (�] c  c �`�e�a  (�b�c�d (   ( c�f�g ( c (�i�ԏ�j�r �k�l�p �m�n �o  (�q  �s�ԁ�t�z�u�x�v (�w ( �y ( ( c�{�~ c�| c�}  (� c (�Ԁ c �Ԃ�ԉ �ԃ�Ԅ�Ԇ�ԅ c c c�ԇ�Ԉ c �Ԋ�ԋ c�Ԍ�Ԏ�ԍ c  c  (�Ԑ�ԝ�ԑ�Ԕ�Ԓ�ԓ c  ( �ԕ�ԙ�Ԗ c�ԗ�Ԙ  ( c (�Ԛ�ԛ (�Ԝ ( �Ԟ�ԣ�ԟ�Ԡ ( c�ԡ  c�Ԣ  (�Ԥ ( c �Ԧ��ԧ�Կ�Ԩ�Ԯ�ԩ�Ԭ�Ԫ�ԫ ( A  �ԭ 5 �ԯ�Ը�԰�Դ�Ա �Բ�Գ 5 5�Ե 5�Զ�Է 5 5 �Թ�Ծ 5�Ժ 5�Ի�Լ�Խ ( A  A ( A������ �� A�� ( c ( c c (�� (����� ( A c �� A c (  A c����  � � � ( �� A�� A c �������� c  (��� ( c �� ( c� � A���� A� �  (  (�� c �� c (� �  c ���� (� (� ( A� ( (�� A (�� �� A�� A � � c� � c� � � (  (  (��֑��(��շ�� �� š �� š� š š��i��=��1��)��&��#� , �!�" : >�$�% �' �( �* � �+�,�- � ��.�/�0 � @ :�2�:�3�4 � �5 @�6�7 >�8 : ,�9 , �;�< > , : ,�>�U�?�I�@�F�A �B�C , >�D�E : > @ >�G :�H : ,�J�O�K�N ,�L�M , >�P�T�Q : >�R >�S , > @ : :�V�W�]�X�[�Y : :�Z : :�\ : >�^�d�_�a�` , > ,�b :�c , @ >�e�f ,�g : ,�h > :�j�Պ�k�z�l�q�m�p :�n :�o : @ : @�r�x�s �t�v�u : �w , @ ,�y , @�{�Յ�|�Հ�} @�~ ,� , @ ,�Ձ :�Ղ�Մ�Ճ : , @ ,�Ն�Չ�Շ ,�Ո , , �Ջ�գ�Ռ�Ք�Ս�Ր�Վ ��Տ : : ��Ց�Ւ � ��Փ � :�Օ�՛�Ֆ :�՗�ՙ�՘ � : �՚ : : �՜ :�՝�ՠ�՞�՟ : � ��ա�բ @ : :�դ�ի :�ե�զ�ը�է : : �թ ��ժ � ��լ�ձ�խ � ��ծ ��կ�հ � � :�ղ�յ ��ճ :�մ @ :�ն š : >�ո��չ��պ��ջ��ռ��ս �վ�տ : > >� >� > :�� : >�� > >� : >� :�� : :�� > : ,��������� >� > : >� > >� > :� :� : : :� : ,�� �� : � :� > > :������� : :� :� : : � �� > � ,���� �� : > : :�� : @� š�� �� >�� > > ���� š��� �� : � > > ,�� : , : �� �� �� � ���� > @� , : , @ :�� , � @ ,� @ :��"��� :� : :�� :� �! : : ��#�% �$ : �&�' : :�) š�*�x�+�4�, š�- š �.�/�2 �0 �1 š�3 š š�5�`�6�J�7�@ (�8�9�;�: ( 5�<�?�= 5 5�> 5 c 5 c�A�F�B c�C c�D�E c�G�I �H  c�K�X�L�V�M�Q�N c�O�P c ( c (�R�T�S c c (�U ( ( c�W H c H�Y�]�Z ( H�[ (�\ c H�^ �_ ( c�a�s�b�m�c�i �d�e�f  �g�h   �j �k�l  H�n ( �o H�p (�q H�r 5 A�t c�u c�v ( (�w 5 c�y š�z š�{ š�|�և�}�ր c�~�  c �ց�ք�ւ  �փ   �օ �ֆ  A�ֈ�։  A�֊ š�֋�֎�֌ c�֍ A A c�֏ š�֐ š c š�֒�֥�֓ š�֔ š�֕ š�֖ š�֗ š�֘�֠�֙�֜�֚  (�֛ ( �֝�֞  5�֟ A 5 A�֡ š�֢ š�֣ š�֤ š ( š�֦ š�֧ š�֨ š�֩ š�֪ š�֫ š�֬�ֲ >�֭�֮�ְ�֯ @ > @ ,�ֱ , š�ִ���ֵ š�ֶ��ַ š�ָ š�ֹ��ֺ��ֻ�־�ּ�ֽ , A A �ֿ�  5  A���� ( 5 A (��  (  A� š���� A  5 A� š  š���� š�� š� š�� š š���� š�� š š š� š� ( A���� c � > ,���� ��� � : : ,� š�������� , �� (  ���� > A (  5� ( A� š��� š  :� š� š� š� š� š� š��/��� �� �� �� (� � š >  (�� ��� š : ���� : � � @�� š� š� ( š š� �!�)�"�&�#�% �$  > > >�'�( š�*�- š�+ š�, š :�. : � :�0 š�1 š�2 š :�3�4 > : š�6��7 š�8�q�9 š�:�]�;�G�<�A�=�? š�> š �@ A �B�D�C �E�F š  š�H�R�I�L š�J�K š š 5�M�O�N š š�P�Q š š �S�Z�T�W�U�V š š�X�Y š , �[ š�\ š š�^ š�_�f�`�c�a š�b š š � š�d�e š š�g�m�h�j š�i � š�k�l š š�n š�o�p š š�r�ן�s š�t�׏�u�׃�v�|�w�z�x�y (   (�{ (  A�}�׀�~�  �ׁ�ׂ  (  �ׄ�׋�ׅ�׈�׆�ׇ ( 5 �׉�׊ ( (�׌�׎ �׍ (   �א�ך�ב�ה �ג�ד  (�ו�ט�ז�ח 5 H H ( (�י  (�כ š�ל š�ם�מ ( c c š�נ�׼�ס š�ע�׮�ף�ר�פ�צ�ץ (  �ק  ( �ש�׬�ת�׫ (  ( �׭  (�ׯ�׶�װ�׳�ױ�ײ (  ( A�״�׵   �׷�׹�׸ (  (�׺�׻ A  ( 5�׽��׾��׿��� � :�� �� � >� ������ , : >� � :��� : : � : :� š� š�� : � ��؅��X������ š� š (���� > �� � :� (�� , c ������ š� ���� š � A� š  5������ ( > �� � : ,����� c �� š � ���� �� �� A  5 š š� (� ( ������ š  A š� š ����  š k ��� � š > A��?��*� š� �&�!�$�"�# 5 5 E š�% H š <�' š�(�) š š�+�0 š�,�-�/ c�. c �1�8�2�5�3�4  5  A�6�7 š š �9�<�:�; š š �=�> c , :�@�P�A�M�B�I�C�F�D�E � �G�H  š 5 �J�L�K š A š�N š�O c�Q�W�R�U�S�T , : ��V  š�Y�u�Z�c�[�^ š�\ š�] š �_�a �` ,�b � , :�d�m�e�h�f�g � c c �i�l�j�k k > A 5 ( �n�s�o�q �p �r  š �t > �v š�w�؀�x�z�y š :�{�~�|�} 5 5 E � A <�؁ š�؂ š �؃�؄ š š š�؆ š�؇ š�؈�؉�ؘ�؊ š�؋�ؒ�،�؏�؍�؎ š k , >�ؐ�ؑ A 5 5 5�ؓ�ؕ�ؔ A E <�ؖ�ؗ š �ؙ�ا�ؚ�ء�؛�؞�؜�؝ š�؟�ؠ > š š c�آ�ؤ :�أ , š�إ�ئ  š�ب�د�ة�ج�ت�ث � (�ح�خ � š š �ذ�ز �ر �س  � c�ص�(�ض� �ط�ٮ�ظ�8�ع��غ��ػ��ؼ��ؽ� š�ؾ š�ؿ š š� š (� š� š� ( š (� � � š� š� š š ����� š�� š� š� š š� š (��� š š� š ( : š����� š� ( š ( š� š (�� š� š� H� š H� H š�� ��� (������� ( �� (  ( ��� (  (��  š ( š� š� š� š š (������ š�� ( � (  c :� :� š� c � �,� �#� � � ������ ( �� (  ( ��� (  (�� � (� ( �� (   š� š š ( �! �" �$ (�%�*�& š�'�( ( �) ( �+ c c�- �.�2 š�/�0 �1   (�3�5�4 š  (�6�7  ( ( š�9�ٗ�:�c�;�Q�< š�=�J�>�D�?�A�@ š >�B�C , > ,�E�F : ��G�H >�I š > �K�N�L ��M ( ,�O�P š : ��R �S �T�a�U�X�V�W š : >�Y�`�Z š�[ š�\�_�] š�^ š š ��b š , (�d�ٌ�e�y�f�w�g�s�h�n�i�k�j š >�l�m , > ,�o�p : ��q�r š > �t ��u š�v š , š :�x :�z�ً�{�ى�|�ه�}�ـ�~� š : >�ف�ن�ق š š�ك�ل š�م š š ��و ( , š š�ي š : ��ٍ �َ�ْ >�ُ�ِ�ّ > : �ٓ�ٕ�ٔ : > �ٖ , > �٘�٣�ٙ š�ٚ�٢�ٛ �ٜ�ٟ�ٝ�ٞ š ( �٠�١ : � š ( š�٤ �٥ š�٦�٫�٧�٩�٨ š � š�٪ š ( �٬�٭ š �ٯ��ٰ��ٱ�پ�ٲ�ٵ�ٳ�ٴ > ��ٶ�ٸ :�ٷ � ,�ٹ�ٻ ,�ٺ > �ټ�ٽ š�ٿ��� (� ( � ��  c��� ( š  š�� š�� š š������� š š� š�������� š A š�� š A ����  5 š�� š 5 š������  ( ( š� š  š  (�������� (� ( š �  š� š�� � : >� >� > : š�� š���� :� > � , : ,� š� š� š c� c š š� š� � �� š� š� š š�� š š� š �� k� š� š� ��#�� ��  š š�� š š �! :�" š š š�$ �%�& š�' š W�)�X�* š�+�7 š�,�-�4�. �/�0 (  �1 š�2�3 >�5�6  ( š �8�L�9�>�:�< š�;  (�=  š �?�C (�@�A c :�B : �D�H�E�F c �G �I�J > :�K � : ��M š�N�P �O :�Q�U�R�T :�S : š : ,�V š�W š , š�Y š�Z�d�[ š�\ �]�_�^ š š š�` �a š�b š�c š š�e�f š�g š�h š š�i�j�k š  ( š�m��n�ۤ�o��p�ڒ�q š�r �s�~�t�|�u š�v š š�w�x�{�y š�z š š E] š š�} š � š�ڀ š�ځ�ڋ�ڂ�چ š�ڃ�ڄ š š�څ š �ڇ�ڊ š�ڈ�ډ š š š �ڌ E]�ڍ�ڐ�ڎ š š�ڏ š�ڑ š Em�ړ�ڭ�ڔ�ڨ�ڕ�ڦ�ږ�ڥ�ڗ š�ژ ��ڙ�ښ š c�ڛ�ڞ�ڜ�ڝ � �ڟ�ڢ�ڠ�ڡ � �ڣ�ڤ c š š : c (�ڧ š ( š�ک�ګ�ڪ  š �ڬ > �ڮ�ڳ�گ�ڱ ��ڰ � :�ڲ š , š�ڴ�ڷ�ڵ�ڶ š  (�ڸ�ڹ ( š c�ں�ڻ š�ڼ��ڽ��ھ� š�ڿ ( �� š š �� � � š������ (  š š� š c�� c � š ��g��]��X� š����� š š� š�� š�� d š š s š š���-���� š� š� š� š� š� š� š š��� š š��������� � � š� š� š H š��  c �����  c  ��  �� š� š � š� �� � � � š  š � š š �� š� k š��� š� š� š� š  š š�� š� š H� H š��(��&� š�! š�" š�# š�$ š H�% H š�' š  š š�) š�*�+�, š � � š�. š�/�L�0�<�1�8�2�5�3�4 š �6�7 : : š š�9�:�; š , š ,�=�G�>�E�?�D�@ �A š�B š�C š � š � ,�F š :�H�J�I š : š�K š š �M š�N š š�O�P�T š�Q�R š�S š : š�U š�V š�W š : š�Y�Z š �[ š �\ : ,�^�d�_�b�`�a š š (�c š š ( š�e�f š š �h�n š�i š�j�k �l�m š  :�o�w�p�u�q�s�r š :�t  š �v ( š (�x�{ �y�z š š�| š�}�ۖ�~�ۊ š� š�ۀ š�ہ š�ۂ�ۃ š š�ۄ š�ۅ�ۆ š�ۇ š š�ۈ�ۉ š š B�ۋ š�ی š�ۍ š�ێ š�ۏ š�ې š š�ۑ š�ے�ۓ š š�۔�ە š B š�ۗ š�ۘ ��ۙ ��ۚ ��ۛ ��ۜ ��۝ � ��۞ ��۟�۠ ��ۡ � ��ۢ ��ۣ � B�ۥ�۴�ۦ�۬�ۧ�۩ š�ۨ š �۪�۫  š ( š�ۭ�ۯ�ۮ š š �۰�۱ � š (�۲ >�۳ : š�۵�۽�۶�۹ š�۷�۸ š (  š�ۺ š�ۻ š�ۼ � š�۾��ۿ��� > š š� : š š� � � š š� š� š� š ���� : š ��� š���  š������ :�� š : š�� � �� š ,� , ���� š�� � :  š š� š� š � š���� � :�� š  š�� ,� , š š �� š��� � š� š� š  š š���� š������ š� > š � , š��-��*�� (� � š� š� � ���� ,� š (� š  š���� š > : š� : š�� š (�� (� (� ( (� �! ( (�"�# (�$ ( (�%�& (�' ( (�(�) ( ( š�+�, š š�.�3�/�0  (�1�2 š š�4 š�5�6�\�7�H�8�A�9�@�:�<�; > �= c�>�? � c �  (�B š :�C�D š�E š�F š�G , š�I�S�J š š�K�L š�M�O š�N ,�P�Q , š�R š š , š�T�U�X š�V š�W ��Y�Z � �[ š ,�]�m�^�i�_�d�`�b š�a c š�c š c �e�g š�f � š�h š š �j�l š�k ( š š�n�x�o�u�p�s�q�r > š�t š �v š�w š �y�|�z š�{ ( c�} š�~ A  �܀�ܫ�܁�܈ š�܂�܃�܅�܄ š š�܆ š�܇ š :�܉�ܥ š�܊�܋ š�܌�ܗ�܍�ܐ š�܎ �܏ š �ܑ�ܔ�ܒ�ܓ :  š�ܕ�ܖ ( š > š�ܘ�ܟ�ܙ�ܜ�ܚ�ܛ š š ��ܝ�ܞ �  :�ܠ�ܢ�ܡ š � ,�ܣ�ܤ , c c (�ܦ š š�ܧ�ܨ š�ܩ : >�ܪ š �ܬ�ܱ�ܭ š š�ܮ�ܯ š š�ܰ � š�ܲ� š�ܳ�ܴ�ܷ š�ܵ�ܶ : š �ܸ� š�ܹ�ܺ��ܻ��ܼ�ܾ�ܽ š :�ܿ� š A A 5���  5 ��  , , A������ A 5 5 š� š š ����� š H H� H �� š���� ��� š �� E � E A 5� 5 >���� > A� < A <� š k� k š š�� š� š š � � � � �� �� � �� � � �� � � � �� �� � � � š��N��.��!�� š� š� š� � š� š� š� š� š š� š�� š š�� š� š c š� š� š š�� š� š� š� š� š š� š <�" š�# š š�$�%�"�&�@�'�݂�(�Y�)�I�*�/�+ Z Z�,�- Z�. Z  Z�0�; Z�1�2 Z�3 Z Z�4 Z�5�6 Z Z�7 Z�8 Z�9 Z�: Z h�<�C Z�= Z�> �?�@ Z Z�A�B Z , Z Z�D�E Z Z�F Z�G�H Z Z Y�J Z Z�K�L�V�M Z�N Z Z�O�P Z Z�Q Z�R�S Z�T Z Z�U , Z�W Z Z�X Z �Z Z�[�j�\�f�] Z�^ Z�_�e Z�` Z�a�b Z�c Z Z�d  Z Z  Z�g�h Z Z�i  Z�k�~�l�v�m Z�n Z�o Z Z�p�q Z�r Z Z�s�t Z Z�u Z w�w Z�x Z�y Z Z�z�{ Z�| Z�} Z  Z� Z�݀ Z�݁ Z Z �݃��݄�ݘ�݅�ݓ�݆�݉�݇ Z Z�݈ Z ,�݊ Z Z�݋�݌�ݍ  Z�ݎ Z�ݏ Z�ݐ Z�ݑ Z Z�ݒ Z Y�ݔ Z�ݕ Z�ݖ Z Z�ݗ Z �ݙ�ݻ�ݚ�ݰ�ݛ�ݥ �ݜ Z�ݝ Z�ݞ�ݟ Z�ݠ Z Z�ݡ�ݢ Z Z�ݣ Z�ݤ Z �ݦ�ݯ�ݧ Z Z�ݨ�ݩ Z�ݪ Z Z�ݫ�ݬ Z�ݭ Z Z�ݮ Z Z Z�ݱ�ݲ Z�ݳ Z Z�ݴ Z�ݵ�ݶ Z�ݷ Z�ݸ Z Z�ݹ Z�ݺ  Z Z�ݼ�ݽ Z Z�ݾ�ݿ�� Z� Z� Z Z�  Z Z� Z ���� Z�� Z� Z Z�  Z Z��� Z� Z� Z�  Z� Z Z�� Z� Z� Z Z� Z�� Z Z� Y Z��,������� Z Z�� Z� Z Z�� Z� Z�� Z Z�� Z Z� Z Z�� Z Z �� Z���� Z� Z Z�� Z , Z Z � Z�� Z�� Z Z� Z��� Z� Z Z � Z Z ����� Z� Z� � Z� Z ,� Z Z ,� ,� Z� Z� Z Z� , Z Z���" Z�� Z� Z�� Z� Z�� Z , Z� Z� Z�! Z Z ,�# Z�$�( Z�%�& Z Z�' Z , Z�)�* Z Z�+ , Z�-�;�.�1 Z�/ Z�0  Z�2 Z Z�3�4 Z�5 Z�6 Z�7 Z�8 Z�9 Z�: Z , Z�< Z�= Z�> Z Z�?  Z�A�ޟ�B�n�C�Y Z�D�E Z�F Z �G Z�H�I�R Z�J�K Z Z�L�M Z�N�P�O Z Z�Q Z Z Z�S�T Z�U Z�V Z Z�W�X Z Z �Z�d Z�[ Z�\ Z�] Z�^�_ Z Z�` Z�a�b�c Z , Z , Z�e�f Z�g Z Z�h�i Z�j Z�k Z Z�l Z�m , Z�o�ކ�p�~ Z�q�r�t�s Z , Z Z�u Z�v�w Z�x Z Z�y Z�z Z�{ Z�|�} Z , Z Z��ހ Z Z�ށ�ނ Z Z�ރ�ބ Z Z�ޅ Z ,�އ�ޚ�ވ�ޒ�މ Z�ފ�ތ Z�ދ  Z Z�ލ Z�ގ�ޏ Z�ސ Z�ޑ Z Z ,�ޓ Z�ޔ Z Z�ޕ�ޖ Z Z�ޗ Z�ޘ�ޙ Z ކ Z Z�ޛ�ޜ Z Z�ޝ�ޞ Z Z �ޠ��ޡ�ޮ�ޢ Z Z�ޣ�ޤ Z�ޥ Z�ަ Z�ާ Z Z�ި�ީ Z Z�ު Z�ޫ�ެ Z Z�ޭ Z �ޯ�޺�ް�޴�ޱ Z Z�޲ Z�޳  Z�޵�޷�޶ Z  Z�޸ Z�޹ Z Z �޻� Z�޼�޽ Z Z�޾ Z�޿ Z� Z� Z� Z� Z � Z� Z Z� Z�� Z Z�� Z Z Y������� Z����� Z Z�� Z Z , Z� Z� Z�� Z ,�  Z Z���� Z Z� Z , Z� Z� Z� Z� Z ,����� Z Z�� Z� Z� Z Z� , Z Z� Z�� Z , Z Z� Z�� Z Z� Z� Z� Z Z� Z�� Z� Z� Z Z��� Z Z�� Z Z Y�� Z�� Z� Z Z� � Z Z� Z� � Z Z�� Z Z�  Z� Z��!�� ��� Z � Z� Z Z� Z� Z � Z Z�� Z� Z Z Z�#� �$�n�%�7 Z�& Z�'�(�/�) Z�*�+  Z�, Z Z�-�. Z  Z Z�0 Z�1 Z�2 Z�3�4 Z�5 Z Z�6 Z �8�Z�9 Z Z�:�;�N�<�I�=�E�> Z Z�? Z�@ Z�A Z�B Z�C�D Z Z�F Z�G Z�H Z Z �J�K Z Z�L�M Z Z�O�Q Z�P Z Z�R�S Z�T Z�U Z Z�V Z�W�X Z�Y Z Z Z�[�\�_ Z�]�^ Z ; Z�`�g�a�e�b Z Z�c�d Z  Z�f Z Z �h Z�i Z�j Z Z�k Z�l�m Z Z Y�o�߼�p�߱�q�w�r Z�s Z Z�t Z�u Z�v  Z�x�ߝ�y�߄�z Z�{ Z�| Z�} Z�~ Z� Z Z�߀ Z�߁�߂�߃ Z Z�߅�ߏ�߆ Z�߇�߈ Z �߉ Z Z�ߊ Z�ߋ Z�ߌ Z�ߍ�ߎ Z Z Z�ߐ�ߑ�ߘ Z�ߒ Z�ߓ�ߔ Z�ߕ Z�ߖ Z Z�ߗ Z Z�ߙ Z�ߚ�ߛ Z�ߜ Z Z�ߞ ,�ߟ�߰�ߠ�ߨ�ߡ Z�ߢ Z�ߣ Z�ߤ Z�ߥ Z�ߦ Z�ߧ Z , Z�ߩ , Z�ߪ Z�߫ Z�߬�߭ Z�߮ Z�߯ Z , Z , Z�߲ Z�߳ Z�ߴ�߹ Z�ߵ�߶ Z Z�߷ Z�߸ Z 4{�ߺ Z Z�߻ Z �߽��߾� Z�߿� Z� Z Z� Z�  Z������ Z� Z�� Z Z�� Z Z� Z� Z� Z Z� Z� Z ����� Z� Z Z� Z�� Z Z�� Z Z � Z Z� Z�� Z� Z Z Z� Z� Z� Z���� Z� Z� Z Z� Z Z�� Z Z �� ����� Z Z� Z�� Z Z�� Z� Z , Z� Z� Z� Z� Z�� Z Z�� Z , Z�� Z� Z� Z� Z� Z , Z� Z� Z� , Z� Z� Z Z�� , Z� Z� Z� Z� Z ,� Z�� Z�� Z� Z Z � Z Z�� Z Z  �!�" �# �$ �%�& �'�( �)�* �+�, �- 8 �/ š�0�H�1�E�2 š�3�D�4 : :�5�6 :�7 :�8 :�9 :�: :�; : :�< :�= :�> :�? :�@�A : :�B :�C š : š �F �G  š�I š�J�K�M�L  : š :�O��P�k š�Q�R�V š�S š�T :�U š �W š�X�Z š�Y š �[ �\ �] �^ �_�`  �a �b �c�d �e  �f�g �h �i  �j �l� š�m�n��o  :�p �q�r �s�t �u�v �w�x �y �z �{ �| �}�~ � � š�� š� š š� š�� š š� š� š� š�� š� š š�� š š� š�� š š� š�� š� : , š�������� š  š� š : š� š� š���  š�  š�� �� š� � š� š���  š��  š š� š� �� š š��� š � � � � � � �� � � � �� � �� š š� :�� š����� š� š� � š������ š� š �� : ���� š  �� , � š ������ c k :�� š H W���� > � � š < A�� �� š� š� š š�� š� š š� š ,�  š� : ��� š  š��������� : š š  š� š š � ,� ,� � š  š�  š����� š� š��� š� š š�� š� š� š š š���'��%��! ��� š  š �" �#�$ : š š š�& š �(��)�,�* š�+ š : š�-�. š�/ š�0 š�1�p�2�Q�3�B�4�;�5�8�6�7 š k k š�9�: š k k š�<�?�=�> š k k š�@�A š k k š�C�J�D�G�E�F š k k š�H�I š k k š�K�N�L�M š k k š�O�P š k k š�R�a�S�Z�T�W�U�V š k k š�X�Y š k k š�[�^�\�] š k k š�_�` š k k š�b�i�c�f�d�e š k k š�g�h š k k š�j�m�k�l š k k š�n�o š k k š�q š�r��s�z�t�w�u�v š k k š�x�y š k k š�{�~�|�} š k k š�� š k k š������ š k k š�� š k k š���� š k k š�� š k k š� š� � š š š� ��� � � � � � � B �  � � � � �� �  ��  �� � �   �� :� :�� � �� � � � �� � � � �� � � š � � � � �� � š ����K š���p������� 7 7� 7� 7 � 7 7�� 7 7 ��� 7� 7 7� 7 � 7� 7� 7 K 7��E��V������ 7 š��b��?����� �� � �� � � � � �� Q& ��� � � �� � �� � � � � Q& � �  � �!� � �� �� �� � ��� � Q&� Q& Q&� Q& � � � Q&��   ���   �"�. �# �$�% �& �' �(  �)�* �+  �, �-  Q&�/�3 �0 �1�2 Q& �4�5 Q& �6 �7 �8 �9�: �; �< �=�> Q& �@�\�A�H�B  �C�D�F �E  �G   '�I�M �J �K �L  �N�Y �O �P�Q �R �S �T �U  �V �W �X  �Z �[   �] �^ �_ �`  �a  6�c�m�d '�e ' '�f '�g '�h '�i�j '�k '�l ' ' E�n��o�~�p�y�q�t T�r T�s T c�u�w�v T K T�x T T �z T�{ T�|�} T c  T� s� s���� s  s � s  s T ���� K� K�� K� K� K ���� �� �� �� � � � � �� ������ �� ���� ' 6 E T� 6 6�� E T '� ����  c�� r ��>����� ��� ���� � � � ��� �� � � � � � ����� � �� � ��� ������ � � � ��� � � �� � � � � ��� (��� 6 6�� 6 6�� � � �� �� 6 D��� 6 R a� ' p�� p�� p ~ p� �/� �" � � �� ��� �� ������  , < L�� \ l | ���� � �! �#�$ �%�) ,�&�'�( < L \ l |�*�+�- �, �. | |�0�7�1�3 �2 �4�5 �6 , <�8�;�9�: L \ l |�<�= 7�?�B�@�A K K �C�F E�D�E �G�H�N �I �J�K �L�M   & 5�O�T�P�S�Q 5 5�R D 5 & S S�U  5�W��X� K�Y�Z��[��\�h c�]�^�a�_�` b r r�b�e�c�d �f�g �i�t�j�m�k �l  " �n�q�o�p 2 B R b�r�s r R�u�y�v �w�x �z�}�{�|   "�~� 2 B R b� c���� r� ����  �� � �� �  � " ������ 2� B Q� ` �� o� ~�� �� � B �� � �� � ���������� ��  ) 7��� 7 9 I 7� 7 Y� š š��� š ] @ š������ i� w�� w� w w� w � �� � ��� � �� � �� i����� � ��+�������� 7� 7�� 7 7 ���� 7 + 7 :� 7 I X� 7� 7� 7 g 7���� ����� v� � ��� v� v� v v� � ��� � �  ��  v  � �� � � � ��������  * 9���� H W f u�� 6 ��� � �&�!�#�" 7 7�$�% 7 7 7�'�(�)  7�* 7 - 7�,�A�-�:�.�4�/�1�0 �2�3 = �5�7�6 a 9�8�9  *�; �<�?�=�> D�@ �B š�C K�D K Z K�F�c�G š�H�a�I�W�J�R�K �L�P�M �N�O �Q �S �T�U K�V K �X š�Y �Z�[ Q& �\�^ �] ' T�_ c ~�` r ~�b 7 š 7�d 7�e 7�f�g 7�h 7�i 7�j 7 7�k 7�l�m 7�n 7�o 7 7 i�q��r��s 7�t 7 7�u 7�v 7�w�x 7�y 7�z 7�{ 7�| 7 7�}�~ 7 7� 7�� 7 7�� 7 K 7 7� 7� 7���� 7� 7� 7����������� 7� 7� 7� 7 7 7 �� w g ���� Z��  � 7���� 7 X� 7 ��������� 7� 7� 7� 7 7 K 7 K K � 7�� K � � 7 i���� i i ~ i�  ��� 7� 7� 7� 7� 7� 7� 7 7�� 7� 7 , 7����� 7� 7� 7  7� 7� 7� 7 i 7� 7� 7� 7� 7 K 7��>������ 7 �� 7�� � � � ��� � K�� Q& K T 7 ��� 7�� 7 7 �� �� � �� �� � �� �� � � � ��� � �� � �� � � � � � � �� �� �� ��(� � � �� � �� �� �! �" �# �$ �% �& �' �) �*�+�7 �,�-�2 �.�/ �0 �1  �3�4 �5 �6 Q& �8�9 �: �;�< �= K 7�? 7�@�A 7 7�B�C 7 7�D 7�E 7�F 7�G�H 7 7�I�J 7 7 ,�L��M��N�^�O �P�W�Q�U�R�T �S  = t�V �X�Y�\ �Z ~�[ ~ C]�] <u �_��`�r�a �b�m�c �d�e t �f�h�g  C]�i C]�j�k�l CN Cy =�n�p�o  �q ~�s �t� �u�v �w t�x�y��z� �{�|�~ �} #� # � � �� dz dz �� � dz��� ��� =������ P 6 �� ~   C]���� CN���� <u� h� h� h� h� h h� h� <u h I E ~ �  <u =� =� <u �� � �  = ��� =������ =�� = t���� CN d' �� CN CN � � � ������ ��  t�� ~ � ��� �� � ��� =��� Cy CN �� ���� � i� � ���� �   t�� I��� CN  Cy� =����� =�� �� t � = C] � � P �� �� �� �� � cQ �  ����  �� � �  � � � ��  =� �� � =�� C] = � � � �� ���#��  � �! �" š �$ �%��&�S�'�E�(�;�)�* CN �+�8 �, �-�.�/ dz d�0�1�3 d�2 J T�4�7�5 �6 b d�9�:   CN�<�B �=�> CN �?�@�A o ~ [ CN�C �D  š �F�G �H �I �J�K �L �M�N �O �P�Q �R �T�t�U�f�V�^�W�Z�X�Y  = š�[�\ CN <u�] CN Cy ~�_�d�`�a �b �c j �e �g�m�h�j �i �k�l Cy I Ve �n�q�o�p  CN Ve�r�s I  I�u��v��w�z�x�y Cy k �{ �| �}�~�� � � � � � � �� � � P���� CN � P t P = ���� � � = ���  �� � � ��� k =�� = d � � � 8w������� � ��� ~� ~� ~ � � �� ��� � ��  �� =�� � <u ���� =� = �� � Ic�� � �� �� � � � �� �� �� ��� �� �  Cy� �� ���� š� š� š� : � š š��� š � š� š š� š�� š š�� >� > >�� >� > >� >� >��s��J������� ������� ��� Ve ~� � � � � �  � Cy��� C] � I I�� ~� ~ d' t��:��5��4��1��/ =� �!�(�" �# �$ �% �& �' �) �* �+ �, �-�. cg �0 = Cy �2 �3 = �6 �7 �8�9 P ~�;�=�<  �> �?�Y�@�X�A�S�B�Q�C =�D�F =�E  = =�G�H�M�I =�J =�K =�L  = �N =�O�P  =  = =�R = i�T �U �V �W i =�Z��[��\��]�w�^�f �_�` �a�b�d �c G�e G�g �h�s �i �j�k �l �m�p �n�o �q �r �t �u�v �x�y �z �{ �| �}�~ �� � ���� �� cg� ct ct cg� � �� cg� �� �� � � � � � ������� cg cg�� cg� cg� cg� cg� cg� cg� cg G cg� ���� � � � � �� � ��� G� G � � �� � � � G���� � �  ��� P� � š š < � Cy �������   t� �� �� � �� P������� = = i�� = Ir = � =� = =���� i� i� F i� i  i���� = i� � i = i =� = =� � � �������  8w  8w 8w� 8w 8��� 8� 8w � 8w , :��I � ��� � � � � � = ���H��;��*�������� h h h h� h� h ��#�� � h h �!�" h h�$�'�%�& h �(�) h h �+�/ h�, h�- �. h�0�5�1�3�2 h �4 h �6�8�7 h h�9�: h h�<�B�=�A�> �? h �@ h h �C h�D�G�E�F h h h  �K�]�L�O�M  �N = �P�W �Q �R �S �T�U �V G�X�Z�Y t = �[ Cy�\ = �^�g �_ �` �a�b  �c �d�e  �f  B�h �i �j�k �l �m �n �o �p �q �r ct �t�u� �v�w �x�y �z �{�| �} �~� �� ct�� � � �  ��� � ��� =� d   ��� Cy �� � CN  �� ����/���������� à z ���� d���� d� d� d H d d� d�� d d R� Œ Ʒ� ��� 7�� Z� Q� Q�� Q� Q Q \ ��� r� r��� k r =� r� r� r z ï��� s� � �� Z � ������ b& b� Z Z \� Z � � Z b&�� Z Z b&� ��� �� �� i� i�� i� i i� i L� [� Z Z Œ��� s� �� � ����"� s������  ï� ï V ս�� y� y� y�� y y� y� �� ��� � �� � y �� � � y y� � y� y y� y� y �� � T �� Q&� Q& Q&�� Q& Q&�� Q&� Q& Q&�� Q&� Q&�! Q& Q&�#�% Œ�$ Ʒ �&�2�' �( �)�*�.�+ �,�- h�/ �0�1 h�3��4��5��6�I�7�A H�8�9�=�: H�; H H�< H�> H H�?�@ H H�B H�C H�D H H�E�F H�G H�H H H �J��K�R�L H�M H�N H�O H�P H�Q H H�S�Z H�T H�U�V H H�W H�X H�Y H�[�`�\ H�] H H�^�_ H H d�a�v�b�m�c�g�d�f H�e H < < <�h�k H�i�j < < H�l < < <�n�r�o�p <�q H �s�t d �u א �w��x�~�y�|�z�{ H d �} d �� � H� ���� � H � ���� H d H� H H �� H�� H�� H < <� <� <� H� H� H� H� H H� H d����� H H�� H H��� H�� H H d H ����� H������� < <� H <� <� < < H��� <�� < H < H� <�� H < < H�� <� <��� < H H <�� <� <� <� < H� < <� < H H���������� H� �� � <� < < ���� d� d d� H � H H� ������� H � H�� ����� H��� H H H� < H H�� H H�� H H�� H H d� H H��� H H� H�� H H� H� H ��+� � � � H� � H H� � H� H� H H� < H H�� H��� H H� H�� H� H H H� H�� H� H d H H�!�" H�#�$ H H�% H�&�' H H�( H�) H�* H �,��-�G�.�5 H�/ H�0�1 H H�2�3 H H�4 H�6�A�7�< H�8�9 H H�:�; H H d H�= H�>�? H H�@ H d�B H H�C�D H H�E H�F H�H�\ H�I H�J H�K�L�U�M�R�N�P �O H�Q H �S�T H�V�Y �W�X H�Z �[ H �]��^�s�_ H�`�i�a�d�b �c   H�e�g�f H  H �h  H�j�n �k�l�m H  H �o�q �p  �r  H�t�z �u �v �w�x�y H H �{��| �} �~ H ����� H H � H H�� H� H H� H� H d� H H�� H H�� < <� <�� < <����~��&������ ��������� H� H�� H H � � H ������ H H � H ���� H � H� H������ � H�� H� H �� H� � � H H����������� H H � H�� H � H ���� � H �� H H� H ��� � � � H ���� H� H � H � � H�� H� H��������� H �� H H� H�� � H�� H H ����� H � H � � H��� �� � � H � H � � H ����� H � H ���� H H � H��$� H� H H�! �" �# H �% H H �'�=�(�/�) H H�*�+ H H�, H�-�. H H �0�6�1 H�2 H H�3 H�4 H�5 < H�7 H�8 H H�9�: H�; H�< H d H�>�Q�?�K H�@�A�F �B�C �D H�E H �G �H �I�J H H �L H�M < <�N�O <�P < < �R H�S�y�T�f�U�Z�V <�W <�X�Y H < H <�[�`�\�^�] < H < <�_ H <�a�d�b�c < H < H�e < H <�g�n�h�k <�i�j < H <�l < <�m < H�o�u�p�s�q�r < H H < H�t < H�v < <�w <�x H <�z H H�{�| H H�} H d��� H� H��� H H� H�� H� H H� < H H�� H H�� H� H H����� H < H� H <���� H���� <� < <� < < < H��� H����� < <� <� H <�� <� H < <�� < < H���� <��� < H H <��� < H <� < H <� <��� < < <� < H� H������� �� H H� � H � � � H ��� �� H � H � �� H������� H�� H�� H� H H� H� H � <� <� <� <� < �� H� H H� H ���� � � H H� � < �� �� H� H� H H� H� H <� H H���.�� ��� H H < H�� H H�� H H� � H H� H � � H� ����� � � H � �� H H� ��� H � H H�� �!�%�" d�# d�$ d d H�&�* d�' d�(�) d d H�+ d�, d�- d H d�/�F�0�D�1 H�2 H�3�; �4�5�8 �6 �7 H �9�: H�<�@ �= �> �? H �A �B�C H �E H H�G H�H�p�I�i�J�Y�K�U�L�R�M�O �N H �P�Q H H�S �T H �V �W �X H �Z�b�[�_�\�^�] H H �` �a H �c�f�d �e H�g �h < <�j <�k�l�n <�m <�o < <�q��r�}�s�v�t �u H �w�z�x �y H �{�| H�~����� � H� H � � H � �� H������� d�� H d d H�� d� H d H d�� d� d� d d��� H d d H������ d� H d d� H d� d�� H H d����� d H d�� H d H d���� d H d�� H d d ��� ��� �� y r Z�  � k� ƨ Ʒ��"����� Z� ï� �� �� �  � �  � š� ï ï� ï� ï� O ï � z Z��� ��� �� ��� r R r��� �  �� �  � ��  ��  � ;  � �� � �  � �� � �  � ; � ��� ��� ��  �  �� ��� � � � � �  �   � �  �� � � �  � � ���� r x� � Œ� Œ� \ Œ�! Œ \�#�[�$�Q�%�*�& �' k�(�)  s �+ �,�A�-�8�. �/ �0 �1 �2�3 �4 �5 �6 �7 �9 �: H H�;�< H H�= H�>�? H�@ H H�B�C y �D �E �F�G �H �I �J �K�L �M �N �O �P F �R �S�T �U �V �W �X �Y �Z ց�\�y�] �^ �_�`�i�a�f�b à à�c�d à à�e 3 à�g à�h  à�j�k à à�l�m�x�n à à�o�p à�q à à�r�s à à�t�u à�v à à�w à   à�z�*�{� �|�}��~ o � `� `������� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ��� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ����� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ��� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o � o � o `�������� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ��� o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ������ o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o �� � o � o � o � o � o � o � o 7 o � o � o � o � o � o � o � o 7 o ��� ï Ʒ�� i c� x� x� x� x� x� x� x��$� x x� �! x�" x x�# " x x�% x�& x�' x�( x�) " x�+�,  Z�-�. y ï Œ�0�u�1�#�2��3��4�k�5�8�6 �7  ï Z�9�S�: Œ�; > Œ�<�=�H Œ�> Œ�? Œ�@�A Œ Œ�B Œ�C Œ�D�E Œ�F Œ Œ�G ~ Œ Œ�I Œ�J Œ�K�L Œ�M Œ�N Œ�O Œ�P Œ�Q Œ�R Œ Œ ~�T >�U ˘�V�b tI�W �X�Y  tI�Z tI�[�\ tI�] tI tI�^ tI�_�` tI tI�a  tI tI�c tI�d�e �f tI�g tI�h tI�i tI�j tI  tI i�l�m��n �o��p�x�q �r �s �t�u �v�w �y��z �{ �| �} �~�� � #� �  �� �� �� ��� � � � � �� � � � H � �� �� � <� <���� <� < <� <� <� &y < <� <� <� < <� ��� � � � � � �� � � �� � < �������� 3@ z �� ï��� g�� V8 g V8 g� g TI� Z �� ��� 4? � 4? 4? ��� ï � Ʒ� �� s i� � y� y� y y� y� y�� y 1 y�������� � ���;��������� d� d �� d d� d d� d� d d���� d� d d� d���� d d� d� d � d d� d� d������ �� � d d� �� d d� d d� d d�� d� d d d� d���� d d � d d��-��(� d� �# d�! d�" d �$ d d�%�&�' d ; d d�)�* d�+ d d�, d �.�5�/ d d�0�1 d�2�3 d ; d�4 d �6 d�7 d d�8�9 d�: d d �<��=�O�>�J�?�E�@�A d d�B d�C�D d d �F d d�G�H d�I d d�K d d�L d�M d�N d �P��Q�q�R�c�S�[�T�X�U d�V�W d d d�Y�Z d d �\�`�] d�^�_ d d �a d d�b d�d�k�e�h�f d d�g d�i d d�j d�l d�m�o�n d d d�p d�r��s�{�t�x d�u�v�w d d �y d�z d �|� d�}�~ d d d� � d � d d�� d d� d��� d d�� d d� d � d��� d d� d � d d� d ;������ d�� d d� d� d � d d��� d d�� d� d d� d������� d d� d d�� d d d��� d � d d � d� d� d d� d ������� d��� d d� d d� d d�� d d� � � d � d� d� d d� d ��� d��� d d d� d� d d� d�� d� d d ��   ��� x� � Z Z�� Z J Z y z��� z�� z� z� z� z� z V z�� � �� � � � � � �� �� � � ��� �� � ������� ï� ï� ï ï� ï� � ï ï ï� ï�� ï�� r r ��� r s� G� �� G ە G � i� � �! š ï�" ï�$�b�%�-�& �' �(�* �) �+�,  Œ �.�`�/�]�0�3�1�2 ̀  ï�4�5 r �6�[�7��8��9�g�:�K�;�@�< א�= א �>�? א א�A�G�B�E�C א א�D א�F א א�H א�I א א�J א �L�Y�M�Q א�N א�O א�P א א�R�S�V�T א�U א א�W א�X א א �Z�a�[�^ א�\ א�] א �_ א�` א �b א�c�e א�d א �f א א�h�s�i�l א�j א�k א א�m�n א�o�q�p א א d�r א א�t��u�z�v א�w א א�x�y א א �{��| א�}�~ א א� א א�� א א� א ���� א���� א�� א א ��� א א� א א�� א א��� א א�� א א א���� א א א� א ������� א� א��� א א � א א א�� א א�� א א א���� א��� א א� א א�� א א א���� א א� א��� א א א� א �� א ������� �� א א��� � א א��� א א ��� ��� א � א �� � א א�� א��� א א � א א��@������� א� א� א� א א � א� א א�� א א ��� א� א� א� א א א� א�� א� א א ��(�� <���� �� �� א�� �� א א � א � �� � א �� א א������� א � א��� א � א� �#�! �" א �$�&�% א �' א�)�:�*�2�+�. �,�- א �/�0 �1 א �3�6 �4 �5 א �7 �8 �9 א�; א�< א א�=�>�? א א�A�M�B א�C�H א�D�E א�F א א�G d א�I א�J א�K א א�L א �N�T�O �P �Q �R �S  א�U�V א א�W א�X א�Y�Z א א �\   �^�_ s Z s s�a Ʒ�c�l�d�k�e�f 7 Œ�g�i�h Ʒ y�j ï à �m�s y�n�o�q�p Ʒ�r s�t Œ �v�O�w��x��y��z��{�X�|��}��~�� � �� �� � � � ����� � � �� �� � � � �� � H H� H �� �� < �� � � � � ����� � �� �� �� d � � ��������� H� d�� � H� H ������� � � �� < �� <� < א������ H �� d ���� א �� א ���� < � H ���� H H � א �� � �� � � � ����� � � � �� � � ���� � ��� � � � d �� �� � � � � � �� H�� H <�� < � � � � � �� � ��' �� �! �" �# �$ �% �& �( �)�9�*�, �+ H�-�3�.�0�/ < H <�1 �2 < �4�5 �6�7�8 H < H�:�I�;�D�<�@�= �>�? < <�A �B H�C �E �F �G �H �J�T�K �L�P �M�N�O H <�Q �R�S < �U �V �W �Y�m�Z�c�[ �\ �] �^ �_ �` �a �b ; �d �e�f �g �h�i �j�k �l �n�} �o�p�s �q�r �t�u �v�w �x �y�z �{�| �~�� �� � � � � �� �� �� � �� �� < ��� � � �� � � H � �� � � � �� s���� <��� <����� < <�� <� <� < < <�� <� <� <� < < H� <� < <� <� <� < <� <� <� <�� <��� < <� < � < <� < �� <�� <�� <� <� <� <� <� < d <�� <� < <�� < < <�� < <� � <�� < <� < d� y y s� �� ���� � s �� Z � G���� � � ��� � � � � � � k � � � � � � �� k ��� �� o Ux �� � s s Œ� y� � z ���� y `� Œ s Z���� ��� ï �  ï � i� Z � d ï� �M�!�+�"�%�#�$  ƨ �&�*�' Ʒ�(  �) o5  Œ s�,�A�- ï�.�/�=�0�5 Œ�1 Œ�2 Œ�3�4 Œ Œ ~ Œ�6 Œ�7 Œ�8�9 Œ�: Œ Œ�;�< Œ M Œ Œ�> Œ�?�@ Œ Œ M�B  r�C�D ï�E ï ï�F ï�G�H ï ï�I ï�J ï�K ï�L ï S s�N Ʒ�P��Q�}�R�m�S�h�T�e�U�d�V �W�_�X�]�Y�[�Z š š š�\ š �^ š 7 7�` �a�b�c 7 š 7 ï�f�g   G �i�k�j ï ï�l y Z�n�o��p� Œ�q�r��s��t��u Œ�v Œ Œ�w Œ�x Œ�y�z�~�{ Œ Œ�| Œ�} Œ Œ�� Œ Œ� Œ Œ�� Œ� Œ Œ�� Œ Œ�� Œ� Œ Œ� Œ ��� Œ� Œ� Œ Œ� Œ�� Œ� Œ Œ� Œ� Œ�� Œ� Œ�� Œ� Œ Œ� Œ�� Œ Œ Œ� Œ�� Œ Œ� Œ�� Œ Œ�  Œ��� Œ� Œ� Œ Œ� Œ� Œ�� Œ Œ�� Œ Œ Œ�� Œ Œ� Œ�� Œ Œ� Œ� Œ� Œ� Œ� W Œ ���� Œ Œ� Œ�� Œ� Œ������� Œ� Œ� Œ 4l Œ� Œ� Œ� Œ y Œ��� Œ� Œ� Œ Œ� Œ� Œ� Œ  Œ� ��� Œ� Œ� Œ { Œ� Œ� Œ� Œ Œ��� Œ� Œ� Œ Œ� Œ�� Œ� Œ� Œ Œ� Œ� Œ� Œ Œ�� Œ Œ�� Œ Œ��� Œ� Œ�� Œ S Œ� Œ� Œ� Œ Œ S��d���F��:�� Œ� Œ�� Œ Œ�� Œ� Œ� Œ Œ� � Œ Œ� W Œ� Œ��+����� Œ Œ� Œ� Œ� Œ� Œ� Œ y Œ� Œ� Œ�� Œ� Œ� Œ Œ � Œ�! Œ�" Œ�#�' Œ�$ Œ�% Œ�& Œ �( Œ Œ�)�* Œ Œ Œ�, Œ�-�.�4�/ Œ�0 Œ Œ�1�2 Œ Œ�3 { Œ�5 Œ Œ�6 Œ�7�8 Œ Œ�9 y Œ Œ�;�< Œ�= Œ Œ�>�? Œ Œ�@ Œ�A�B Œ�C Œ Œ�D�E Œ Œ S Œ�G�H Œ�I�[�J�S�K Œ Œ�L�M Œ�N Œ�O Œ�P Œ Œ�Q�R Œ Œ �T Œ�U Œ�V Œ Œ�W Œ�X Œ�Y Œ�Z  Œ Œ�\ Œ�] Œ�^ Œ�_�` Œ Œ�a Œ�b Œ�c Œ M Œ�e�f�r�g Œ Œ�h�i Œ Œ�j�k Œ�l Œ Œ�m�n Œ�o Œ�p Œ Œ�q W Œ Œ�s�t�{�u Œ Xc�v�w Œ Œ�x Œ�y�z Œ Œ Œ�| Œ \�~��� � � i Œ� � ï Z ï�� Œ Œ� Œ�� Œ� Œ Œ�� Œ Œ���� ҉���� ƙ �  Ʒ i� s�������� ̀ Z � ��� š 7 ï ���� � s � ï� s� s s� Ʒ ï ̀������ ï ï �� i  ï d���� ï  ï� ï ��� Ʒ Z ï �  Œ����S����:���������� à s����� �  #�  �  � � �  ������  K9�� � �   K9�  K9  �� � �  K9 �� �� � ց��� � y��� Z r� Ʒ  Z �� ����  ������ j ���� ƙ  �� ן ï� ï��  Œ ï x�  Ʒ ï� �9� �)� � � �� ����� �� # # � �� # � � � ��%� � �!�" �# �$ �&�' �( �*�+ �, �-�8�. �/ �0 #�1 #�2 #�3 #�4 #�5 #�6 #�7 # Z i�;�P �<�= Z�>�A�? �@ ց�B �C�G�D�E �F �H�L�I �J �K �M �N�O �Q��R��S�t�T Z�U �V�X �W �Y�Z�p�[�d�\ �] �^�_ �`�a �b �c �e�j �f �g�h �i �k �l �m �n �o א �q �r �s �u �v�w ï ï�x ï�y ï�z ï�{ �| �} �~ �� � � ï��� ï r � Ʒ y ������ ���� �� � �� �  -�  S �  ` � Z �� � � � 65 �������� ï y Ʒ �� ï  ï� s� ҉  ��� 8 8��� 8� 8��� 8� 8 9� 8 9 8 8��� 8�� 8 8� 8� 8� 8� 8� 8�� 8 8� 8 9� 8� 8 8 9 �� � �� ���� �� � �� � � � : � � � �� � �� : �� � �� � � � � :��,� ��$��!�� L ï ï������� ���� � � � <� � �� �� �� � �� <� �� �� � � � � � � � � �� � < � � � �� � � � H �"�# Ʒ ï ˘ �% �& �'�( �) �* �+ �-�;�. �/ �0 �1�2 �3�4 �5�6 �7 ց ց�8 ց�9 ց�: ց �<�= �>�? �@ �A �B�C �D�E�L �F�G �H  �I�J  �K �M �N �O �P �Q  �R �T�|�U�e�V�^�W�]�X Z Z�Y Z�Z Z�[�\ Z 3 Z ە �_�d�`�a �b�c ï  G  �f�u�g�r�h�m�i�j r ˘�k�l Œ  ï�n�p�o k s�q z ˘ s�s �t �v �w�x�z�y ѧ [�{ ï s�}��~�������� x ï �� ˘ y � � r s ï �� � �  # �������� �� �� � �� � � � �� ��� Œ Ʒ ï� Œ Ʒ���������� Œ ï ï���� ƨ Z Z ï 7����  ï  ï��� Ʒ�� ü x ���� ï� Ʒ� 6��  i  �� ï� Ʒ Œ�� Ʒ r �� i N i ï ��� �� �� � � �  �� � �  ������M��8� ��3����� ï������ �� � � �� � �� �� � � �� � � � � � d ��� � �� � � � �� � � � � � �� � � �� � z ��2��'����� x� # ï Z� �! Z s�"�%�#�$ ü > �& Z Z ]�(�-�)�* i �+ V�, L p L�.�/ 65�0 �1 ï�4�6�5 Z ` Z�7 Z [�9�D s�:�;�=�< 7 �> ˘�? �@ �A �B �C  \�E \�F \�G�H Œ Œ�I�J \�K Œ \�L Œ \�N��O �P��Q��R�t�S�^ �T �U �V �W �X �Y �Z �[ �\ �]  �_�`  �a�b�i�c �d  �e�f �g  �h  �j �k�l�p�m  �n �o �q �r �s  �u��v  �w�x �y� �z�{��| �}  �~ �  ��  �  �  � � �� �   �� S� � � � � � �  �  �� � ��  �� ����� �   S�� � �  S�� S�  S�  S �  � ��   S��� G� Œ r� ű Z �������� d  �� x r��� 7 s z� r ï ��I��<������� �� � � < � � H �� � � � � �� � �� � �� < ���� y W�� ����� � �� �� ��� � � ��� � � � � � �� � � r N�� Œ� Œ Œ� Œ��� Œ� Œ� Œ� Œ� Œ M� Œ� Œ M Œ� s�� Z�� Z� Z� Z Z� Z� Z�� Z� Z Z� Z� Z� Z�� Z Z h�! Z�"�/�# Z Z�$�% Z Z�&�' Z�( �) �*�+ �, �- �. Z�0 Z Z�1�2 Z Z�3�4 Z�5 Z Z�6 Z�7 Z�8 Z�9�: Z Z�; Y Z�=�H�>�E�?�B�@�A s   Z�C�D  ׭ ï�F�G 7 Z 8�J�t�K�s�L�n�M�U�N�O  �P ƙ�Q ƙ�R ƙ�S �T 6 ƙ�V�m�W �X�Y �Z �[�\ �] �^ �_�h�`�d�a �b�c . �e �f�g 6 �i�j �k�l �o�q�p z Z �r ƙ ׭ ï à�u �v�}�w�z�x�y ï s `�{�|  Œ ە �~�� ü �� x s ���� � �� t  ������� ���� � � �� � � �� � � � � �  � �� � � �  �� L����� A š 5a� (� B <��� š š ( š� < š��� š� š� š H š��� ƙ ï � c ï���� �� Ʒ� 7� d� d�� d d� d 7 �  ����� i������ 3@ Z��� r��� � � Y Y  Z��� Z s � Z ������  Z� ƨ Ʒ � � r š ï Œ������ ƨ ��� k s� ï y �  ]= ��� �� �� � � � �� � � � �� �� � � � �'� � š�� š� š  š� š š� š� š�� š� š š� š� š� š� š�� š� š� š� š�! š�" š š�# š�$�% š�& š š �(�~�)��*��+�P�,�B š�-�.�>�/ š š�0 š�1�2 š š�3�4 š�5 š�6 š š�7 š�8�9 š�: š�; š š�< š�= š š�? š�@ š�A š E] š�C š�D�E�G�F š š�H�N š�I�J š š�K�L š š�M š š�O š E]�Q�X�R š�S š�T š š�U š�V š�W E š�Y�u�Z�^�[ š�\ š�] š š�_�m�` š š�a�b�f�c š�d�e š 8 š š�g�h�j�i š  �k�l �  š š�n�o š�p š�q š�r š š�s�t š š �v��w��x š�y š�z š�{��|�~ �} ł � ł 4 ł�� � � š š�� š� � � �� � � �� � � 8� š š���� E � E � E E�� E E�� E� E E ���� š� š�� š š�� š š�� š š�� š š�� š š�� š š� š š�� š š�� š� š� š š���� š š� š� š� š�� š š� š�� š� š� š�� š : š�� š��� š� : š , š š� š�� š š : š�� š š� š�� š š�� š� š� š� š š� š����X��7�� � š��� š� š� š� š š�� š� š� š� š� š� š� š� š ` š� š š���� š š� š�� š š�� š� š š�� š š� š�� š š�� š š� š� š� š�� š� š š� k š� �(� � š� š� š�� š� š š� š�� š� š� š š�� š š� ( š� š š�� š š� š�� š�! š�" š�# š�$ š š�%�& š�' š B& š�) š�* š�+ š�, š š�- š�.�/ š�0 š�1 š š�2�3 š�4 š š�5�6 š š 5�8�H š�9�: š�; š š�< š�= š�>�? š š�@�A š�B š š�C�D š�E š š�F�G š š�I š�J š�K š�L š�M š�N š�O š�P š�Q š š�R�S š�T š š�U�V š�W š š 5R�Y��Z�j�[ š�\ š�] š�^ š š�_ š�`�a š�b š�c š�d š š�e š�f�g š�h š�i š D š�k�z š�l š�m š�n š�o š�p�q š š�r š�s�t š�u š�v š š�w š�x�y š š �{� š�| š�}�~�� š� š� š� š š�� š� š� š š�� š  ` š�� š� š� š š� š�� š š� š�� š H š�� š�� š� š� š š�� š� š š�� š� š� š� š š ?� š š� š� š� š�� š š� š�� š� š� š� š š A��� š š� š�� š� š� š� š š�� š� š š�� š š�� š� š š š� š� š��� š� š�� š š� š� š�� š� š� š š�� š R š� š� š š� š�� š� š� š� š� š� š  š��S��!������ š�� š š� š�� š š� š�� š� š� š� š š�� š ` š� š� š š�� š� š� š� š� š� š� š� š š�� š B š� š š�� š š��� š š�� š� š� š�� š š�� š� š� š� š š� � š� š� š� š ʗ š� š� š š� š� š� š�� š� š� š š�� š� š š� š� B5 š�"�@ š�# š�$�%�3�& š š�'�( š š�) š�* š�+�, š�- š š�.�/�2�0 š�1 š A š š š�4 š�5�6 š�7 š š�8 š�9 š�:�; š š�<�= š�> š�? š > š�A š�B š�C š�D�P�E š�F š š�G�H š�I š�J š�K š š�L š�M�N š�O š r š�Q š�R š š �T�e�U š�V š�W š š�X š�Y�Z š�[ š�\ š�] š�^ š�_ š�` š š�a š�b�c š š�d š A�f�v š�g š�h š�i�j š�k š š�l š�m š�n š�o�p š�q š š�r�s š š�t š�u š  š�w�x š�y š š�z š�{ š�|�} š š >�� š������ š�� š���� š� š š� š�� š š� š� š� š� š š� š � š� š� š š� š� š� š�� š� š š�� š š� ( š��Q������ š��� š�� š� š š��� š�� š š� š�� š š� š� > š š� š��� š� š� > š š�� š� š š� > š š�� š� š� š� š š�� š� š š�� š� š� š š � š� š� š š� š�� š� š š� š� š� š�� š š ,� š���� š�� š� š� š�� š� š�� š� š š� š�� š > š� š š�� š š�� š� š š� > š š� š� š�� š š�� š� š� š š D�� š���� š š� > š� š š�� š�� š� š š�� š� š š�� š A š š� š� � š š� š� š��@��(� š�� š� š� š� š� š� š� š�� š� š š� š�  š� š�! š�" š š�#�$ š�% š š�&�' š A š�)�5�* š š�+�,�. š�- š D�/ š š�0�1�4 D�2 D�3 š D D š�6 š š�7�8 š š�9 š�:�; š š�< š�= š�>�? š š�A�F �B š�C š�D š�E š�G š�H š�I š�J š�K c c�L�M c c�N�O c�P c < c�R�j�S�]�T š�U š�V š�W š�X š�Y š�Z š š�[ š�\ š > š�^�_ š š�` š�a�b š š�c�d š�e š š�f š�g�h�i š š�k��l��m��n��o š�p š š�q�r� š�s�t�{ š�u š�v�w š�x š š�y š�z > š�| š š�} š�~ š� < š >��� š š�� š� š� š� š� š� š� š� š š� 2 š� š š� š�� š š�� š� š š A š�� š š�� š� š D š����� š� š� š�� + @'  š š� š����� D > > D�� @ : ���� š�� š š� > š š�� š� š  š� š�� š�� EM H š���� š�� š���� š  š� š  š š� š�� š š >� š š�� š� š� š� š š� > š��P��-��� š š�� š š�� š� š� š� š� š š��� š� š�� š š�  š� š š� š�� š š�� �� š�� š š� š� š�� š� š š� š���� š š� š <�� š� š š� š�� š š� š�� š š�� š� š� š� š� š� š š� š� š�� š� š� š� š�� š� š� š� š ����  �  c� �  c ( š� š� �! š š�"�# š�$ š š�% š�&�'�+ š�(�) š�* š > š š�,  š�.�H š�/�0�8 š�1 š�2 š�3 š�4�5 š�6 š�7 š š š�9�: š�; š š�< š�=�> š š�? š�@ š�A š�B�C š š�D�E š�F š š�G š š�I š�J š�K š�L�M š š�N�O š š�Q��R�v�S�Y�T š š�U�V š�W š�X š š š�Z š�[�\�b š�] š�^�_ š š�` š�a D š š�c�d�m�e š�f š�g š š�h š�i�j š�k š�l š š š�n�o š�p š š�q�r š�s š�t š�u š  š�w� š�x�y��z��{� š�| š�} š�~ š š� š� š����� š� š š š�� š B š�  š���� š š > F š š�� š š�� š š�� š š���� š� š� š���� � š H š š� ( � š� š� š š��� :� š B š� B5 š š� š�� š� � ���� # t� � š š������� š� š��� ��� : B ( š�� R� 3 N� à N à š � š� š� š� š� š� š š B�� š� š� š� š� š� š � š� š š� š� š� š�  š��/��� � �������h�� š������ š�� š�� š� š� š š 5 š š� š �� š� š�� š š š��� š š� š Em���G� š š� š� š� š��� š� š� š� š� � � š� � � >�� B > @7 š š��� >�� B > @7 š��( š� š� š���" š��� >� �! B > @7 š š�#�$�% >�&�' B > @7 š�)�8 š�* š�+�,�2 š�-�.�/ >�0�1 B > @7 š š�3�4�5 >�6�7 B > @7 š š�9 š�:�;�A š�<�=�> >�?�@ B > @7 š š�B�C�D >�E�F B > @7 š�H�_�I š�J š š�K š�L š�M�N š š�O š�P�Q š�R š�S�Y�T š š�U�V š š�W š�X š �Z š š�[ š�\�] š�^ š š š�`�a�f�b�d š�c = �e š š�g š š�i��j š�k�}�l�w�m�u�n�s�o š�p�r š�q š š š�t š Em š�v ҉ š�x š�y š š�z š�{ š�| š �~ š�� š� š�� š � š š�� š š� š� š� š� š� š���� š��� š� š�� š š� š � š š �� š� š š�� š š� š� š�� > š >������� š� š� y� y� y� y� y� y y�� y� y� y� y� y 6 y� š�� š d š� š��� š š 8� š š�� š š � š š�� š� š š� š��� Em š Em š����)������� š� H š�� š š�� š� š š� š š� š�������� � F 8� � 7 8� 8��� 8 �� �� � �� 8 � � � � 8�� � 8� 8��� 8� 8� 8�� 8� 8� 8 8�� 8 8�� 8 8�� 8� 8 8� 8�� 8 8� 8� 8� 8 � � 8� 8� 8 � �� 8� � �� � 8�� š�� š� š š� š š�� �' š�! š�"�# š�$ š š�% š�& A š�( š š �*�\�+�I�, š�-�6�.�5�/ š�0 š�1�2 š �3 š�4 š š š �7�;�8�: š�9  š š š�<�= �> š š�? š�@�A š�B š�C š š�D š�E�F š�G š�H š š �J�O š�K�L �M š š�N š�P�T �Q�R ƙ�S ƙ 8 �U š�V�W š�X š š�Y š�Z�[ š š �]�` š�^�_ š 8 š�a�h�b š �c š�d�e š š�f š�g š�i�z š�j š�k š�l �m�n�s�o �p �q�r š�t �u �v�w �x�y š �{ š�| š�} š�~ š� š� š š�� š� š� š� š� š š�� š š >���� š�� š š�� š� š � š� š��� š� š š� š � š š�� š� š š�� ������ š��� � š�� š� š š� š � š š� š� š ]��� š� š š� š š�� š� �� � � � 8��� š š�� š� š š�� š š� š� š� š�� š š� š�� š� š š� d š�� š� š���� š š� š�� š� š� c��� c��� c��� c c Y� c Y c c���� c c Y� c Y c c�� c� c c�� c Y c š�� š š� š� š B� š š ����s��;�� ���� š��� š š 8�� š 8 ҉� š�� � š�� H � š� š š š� � š� �(�� š� š�� š š� š��� š� š� š� š š� � š �� � �� �! �"�# �$�% �& �' 8 8 š�) š�*�+�9�,�6�- š�. š š�/ š�0 �1 �2�3 �4�5 š �7 š�8 š š š�: š �<�K�=�A�> š š�? š�@ š �B š�C š�D š�E š�F š š�G š�H�I š š�J > š�L�_�M�^�N�R�O�P  +�Q š @' š�S š�T�Y �U�V š�W�X  š š �Z�\ š�[ š  š�] š + 8 š�`�g�a š�b š š�c�d š š�e�f š š š�h š�i š�j�k�p�l�n š�m š 5�o š < �q š�r š š k�t� š�u�v�~ š�w�x š�y š�z š�{ š�|�} š š���� š���� š š� = �� š š� š š� š� �� š� š� š �� š� š� š� š š�� š���� š� š� š� š� š� š� š� š š � š š�� š š�� š� š� š� š� š > š��� š š�� š� š� š š�� š š� š c š� �� � š�� � � � š � š ���� š���� š� š E] š š�� š E] š� š� š š� š� �� š� š š (�� š�� š š� š� š��� š� š š� š� š�� š š�  š�� š� š�� š� š ( š� š š� š� š� š� � š �W�+� ��� š E š���� 8��� 8�� 8� 8� 8 8�   8 8 8 8   8 8 š š  š) š š š š š š š š š š š š š B   ! B "# $ % & '( š * š,>- š. š/6 :01 > 2 3 4 5 D78 � >9 : š š;< = š š š?@SAKB CF šD šE š  GH šI š J  šL M š šNOP  šQ šR š š T š šUV š š XYcZb[ š d\] š š^ š_ š` ša š šd šefqg šhli šj šk š B šm š šn šo šp Y š šrs š štu šv šw šx šy š šz{ š| š š}~ š š š  š š š š š  š š š š š š š š š š š I I I I I I I I I I I I š š š G  š š š š š š BD š š š  š š   š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š  š š š ZH$ š š š š š š š  š š d š š ҉ š š š š š š  š š� š š š > š š š š š š š š  š š š š š š š š š š š š# š š š  š š š š š š! š" @' + š%=&7'/ š() š š*+ š š, š-. š š : š014 š23 š š š5 š6 š š89; š: š H š< š š> š?@ š šA šBC š šD šE šF šG š ( šIJWKU šLMQ šNOP š E] š šR šST š š V š šX~Y`Z] š[ š\ š š^ š_ E] šajb šc šd še š šfgi šh š š E]kv l šmnr šo špq š  š šst š šu š wy šx š z š š{| š} š š  š š š š š š š (  š š š š š š š š š š  š š š š š š š š š š š  š š š š  š š š š š š š š 5a š š š š š š š š š š š > š š š  š š š š š š  š š š š š š š š š š š š I š š š  šc  š š š š š š š š š š  š š š š  š š š š B B B B > > B B š š� š š š B š š š š š š š š š > š K/ š š š š     <    *$ "! š š š# š%(&' š š š) š + , - . š 0 š192 š š34 š5 š6 š š7 š8 š: ;< =D >? @ AB C šE F G HI J L šMY šN šOP š šQR š šST šU šV šW š šX š šZ š[ š\] š^ š_ š š` šab š c šdef~g š h ij ks l m no p q r > tu vy wx >z { | } š š š š š š š š š š š š š  š š š š š š š š š š š š š š > š š > > š š > š > š š š š š š > š š š š š š š š š š š š : š š š š š š š š š š 5 š š š > š š š š š š š š š š š š š ( š  š š š š š š š š š š > š š š š š š š š š ( š š š  š š š š š š š š š š š c š š š� š š š š š  š š š š A c  š  š š  š š š š š š š š š c š š š š š š š >u9 , š! š" š#$ š% š& š š'( š š)* š+ š B{ š š- š./ š0 š1 š2 š š34 š š5 š67 š8 š š:X;O<G => ? @A B C D E F š šHI š šJK šL šM šN š š ( šPQ šR šS šT š šU šV šW c šY š šZ[l\ c c] c^_ c` c cabg ccd ce c cf ch c ci cj ck š c cm cno cp cqt crs c š c c švwx| šy šz š{ š š} š~ š š š š š š š š š š š š š š š š š š š š  š š š š š š š š > š > š š š š š š š š š š š š š š š š š š š š š š š š B{ š š š š    š  B{        š     š  š š š š š        &    š  š ( ( ( ( ( ( ( ( (� ( ( ? ( ( � š   š     š ٍ % š š$ š ( ( ( ( ( ( ( ( (!" ( (# ( ? š  š 8'y(G)1* š+ š š,- š. š š/0 > š > š23 š š45C š6 š78 š 9: D; D D< D= D>?A D@ D � DB D šD šE š šF B šHUIR šJ šK šLM šNP šO š Em šQ š šS šT Em šVfWd šXY šZ_[]\ š š (^ š š (`ba š š c š š še šgmh š ši šj šk šl š n šo šp šq >rs > >t >u >v >w >x > z{|}~ š š š H š  š š š š š š š š š š š š  š š š š š š š š š š š š š š B š š š Z B š š š š  š š š E] š 8 š š š  š š š š š š  E] š š š š š š š š ( š š  š š š š š š š   š  š š � �  : š :   š š š š š š š @' š š š @' š š  š š š  š š š š š �         š š    P0 š � š š* š" š š š Ve  š L š š >! š š#$ š š% š&' š( š) š š +-, š ű š. š/ š E]1f2 š š3 š45<6:79 š8 š š š; E] š=? > Z š@XA B CDNE F G HI J K L M 8 8O P Q R S T UV W 8 8YaZ^ [ \] 8 8 š_` 8 8 b cd e 8 gDhi šj škl|mxntoq Gp G r Gs G  Guvw G ' ' Gy G Gz{ G G 7}~ G G  G G G G G G G G G G G G  š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š D š š š 8 š 8  4 š š 4 8 š š š š  š ( > š  š š ) š š š š š š š š š š ( š š  š š  š  š š š š š š  š š š š  š  š  š š š  š š š š š š š š š š � š B B š B š B B B B B š   š B š š š š B š š! š š š š š š  š š š š š š š š" š#$ š% š š&' š( š š* š+7 š, š- š. š/0 š1 š š23 š š4 š5 š6 š8 š š9 š:; š< š= š>A?@ , > @BC š > šEF š šGHOI š šJ šK šLM š N š š QbRZ šST š šU šVWX š H šY Em š[a š\ š] š^ š_ š` š š cdefl šghki š šj š š šmnos špq r š t šu šv šw š šx šy šz{ š š| š}~ š š š : š Œ š š š š š š š š š š š š š š š š š  š š š š š š š š š š  š š š š š  š  š  š š š š š  š š  š š š š š š š š š š š > š š ? š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š  x q š C š š š š š"!           š#/ š$ š%& š' š( š) š* š+ š, š š-. š š  š01 š2; 34 š5 š6 š š78 š9 š š: š < š= š š>? š š@ šA šB š D šE`FSG š šH šIJ šK šL šM šN šO šP š šQR š š T šU š šV šW šXY šZ š š[\ š] š^ š_ š š >a š šb šc šde šfig š šh šj š škl šm šn šo š šp  šr jstu šv šwx š šy šz{ š| š š}~ š š š š š š š š , š š š š š š š š š š š š š š š š š : š š š š š š š š š š š š š š š š  š š š š š š š š š š š š @' š š š š š š š š š š š š š š š š B š š š š š š > š H  š š š š š š š š š š š š š š š š š š š š š š š š š š š š 5 š š š š š š š š š š š š š š c š  š š š �  š  š  š  š š   š š  š  š š š H š š   š š  š   š  š š   š š  š   š  š š   š š W  8  š  š š   , ! š š " # š š $ % š & š ' š š ( š ) * š + š A š - š š . / š 0 š 1 š š 2 š 3 4 š š 5 š 6 7 š 4 š 9 š : š ; š < š š = š > š ? @ š A š š B C š D š š E š F G š š I ` J P K š L š M š š N š O > š Q š R š S š T š U š V š W š š X š Y š Z š [ \ š ] š ^ š _ š g š š a b š c š d š š e f š g š h š i š š ( k š š l m s š n o š p r š q š š š t u š v š w š E š y  z  { š š | š } ~ š š  š  š š  š š  š š š š š  š š š š š    š š š š š š š š  š š F š š š š š  š š  š š š š š š  š š    š š   š š  š š  š  š H š   š š c š š  š š š  š š š  š š  š š > š š š š š � š š š š    š š  w    � � š š š � š š   š š š š       7  &     š š   š  š š š B š š š š  š š š B š š    š š š š  š š š š    � ї š     š  š   š š   š š š š    š  š š   š š  š š     š  š  š š  š š   š š   š š š   #  " š ! š š $ š % š  ' š ( . š ) * š + - š , ї š š š / 0 4 š 1 2 š š 3 š š 5 6 š š ~ 8 l 9 M : = ; š š < 8 š > K ? š @ C š A š B 8 š D E š F š G š H š š I J š š L š š  N ` O P š Q \ R š S š š T U : V : W : X Y : : Z [ : : š ] š ^ š š _ š  a k š b c š š d š e f š g š h š i š š j š š m  n  o q š p š E] r s } t | u w š v š š x š y š z š {  š š  ~   š š š š š    š š     š š  š š  š š  š š š  š š š š   š š š  d š š š š H š  *    š š   š                8            8 š k š š š    š   š     š ( A š D     š k c  š   š  š c š  š š ` š š  š   š š š   š  š š     š š  š   2 2 2 2 š š š  š           š š � H š š   š š š  š   š  š š š š š š š   š š š  š  š  š  š  š š  š   %    š š  š  B š  š š ! š " š # š $ š B š & š ' š ( š š ) B š + I ,  -  .  / z 0 x 1 = 2 3 š  4 9 5 š 6 7   8 š @' š š : š ; < š š š > š ? @ [ A M B I C F D E F W G H š š J š K L > ^ ~ š N U O R P Q .  š S T c š š  V X W W > H Y Z  š B š \ j ] c ^ a _ `   š š b š  d g e f š š  h i  k q l n m š š o p 4 š  r u s t E š  v w š } A š š y Cy {  |  } ~ š  š  š š š  š š š š     š  š š š š š š  š š  H  H H H H  H H  H H H  H H š 8 š          š  š š š   š š    š š š    š š ʗ F š š A š š š š š š  š š A š  š š  š š š š š  š š          š  S š  Rk š      š $  Q š š       4 D > B  5 D c A    < c š T š ʗ  š š    ] < A š  š š š š š   š š š š š š   <  9    š �  š  š  š š   š  š  š  š š > š   š  š  š  š  š  š  š  š š   š  š    š  š  š  š  š  š  š  š š  ! , " š š # $ š % + š & ' š ( š ) * š - š š š - š . / š 0 š 1 š 2 š 3 š 4 š š 5 š 6 7 š š 8 š : š  ; š = F > E š ?  @ A C š B š š D š 8 š G š š H š J š K g L W M S š N O Q š P š  R š š 8 T š š U š V š š X š Y Z š [ š \ e ]  ^  _  `  a  b c  d š f š š h p š i j š k š l š š m n š o š š q u r s d š ҉ t š d š v w š x  y z  {  |  } š š ~ š > š   š  š š š (      š   > >  š ( š š š  š š    Y   š      š  š H š š š š  š   š B    š 8 š     š  š š  š   š  š š š   š š  š š R š  š  š  š š š š   š š š  š š  š š š  š š  š š š  š š š  š   š š  š š   š š  š š š  š š   /   š š š š   š š š   8 8  8  8 8 8  š     F 8 8      �        iu 8  8   8 8  ,   F F   F 8   8                  iu   "        ! iu  #  $ (  %  & ' iu  )  *  + iu - 8  . 8 š 0 1 4 š 2 3 š š 5 > 6 8 š 7 š š 9 :  ; = š < š Em š š ? @ š A M B G C E , D , Ry Ry F A > H J I � : RM K L � > @  N T O Q  P A R S R 5 5 H U V c W X  A A 5R Z  [ | \ w ] n ^ š š _ ` š a g b š c š d š e š f š š h š i š š j k š l š m š š š o p t q r š s š š š u v š š x š š y š z š { š } š š ~  š  š  š š  š š     š   š  š š : 5 š š š  š š    š    š š š    š  š š Z š š Z š š š š š š  š š š  š š š     š š  š š  š  š š š  š š I I I I I  I I I I I I I I š  š  š     š    š š   š   š A 5 > š š 5R  š š   š š š     š Em š  š  š š š š š š š  š š š š š š š š  Em š š   š : š  �6  š š š š š š š š š  š š  š š š š š*&  š š š š š š š š  š! š š"# š$ š% š š' š š() š š +., š š- š/ š 0 1243 8 5 87r8d š9 š:; š< š= š>? š@ š šA šBCYDNEH šF šG š IL šJK š šM š ORPQ š š SV šT U š šWX š šZ š[_ š\ š] š^ š ` š šabc š š šefn šg šh šijmk šl š  š <uoqp š šs štuw šv L š šx šyz}{| š š ~ š š š  š  š š š  š š š š š Z š š š š š š š š š  š š š  š š š š š š ( š š š E š E] E š ҉ š š   š     š š š š š š š š  š š š 8 š š š š š š š H š š š š š š š š š š E] š š š š l l d š H s d  š E] š š š š š š š B š š  š š š � :  ( š š  š š š  š , š š  š š 8  š š = šL" š š š š š š š š š š! š#F$& š% š š'(E š)* š+8 š,-3. š š/ š0 š1 š2 š š4 š56 š7 š š9 š: š; š<C= š š>? š@ šA šB š š šD š š šG šH šIJ šK š š H3MNO[ šPQR š S šT šUXV šW š šY  šZ š\ š]^ š š_`abz šc Bdep Bfgl Bhi Bjk B : B 5 Bmn Bo B ʗ Bq Brv Bs Btu B B ʗw B Bx By B ʗ{ š D|}~ D D D D š D D D � D D D D D D D D D D A D D D D D D š š      š š š š B B B R\ B B B B B š B B B B c B B B B B B B B B B B B B B  š š š E E E E E E  š š š š š š š š      š    š š ї š š š š š š  š š š š š š š š š |W š š= š š š š š� š š š š š š š š š š š  š š š š š š š š š š š š š š š  š' š š š š š! š" š š# š$% š š& 5 š( š) š* š+5 š,- š. š/ š0 š š1 š2 š3 š4 š6 š7 š š89 š š:; š< š š>F š?@C šA šB šD E š š G šHRIO šJ K L MN š  š P Q š SUT š š šV šXk šYZ š š[ š\]b^ š š_` š ša š cid š e šf šgh š š šj šlq šm šn šop š šr š šst šuz šv šwx š šy š ( š{ š}~ š š  š š š š  + +  + š + + + + š + š + š + + + B{ š š š š š š š š š š š c š š > š š š š š š š š š š š š š  š š š š š š š š š š š š š  š  š š  š š  š š š š š    (  š š š š š š š š  š š š š š š š š š  š š š š  š š š š š š š š š š š š š š š� š š š š d š š š š š  š š  š š š š š š š š š š š š š dp š š š š š!"# š$. š%& š' š( š) š š*+ š, š š- š š/ š01Z2>3 š485 67 D :9<:; @ : š= � : ?O@IAFBDC >E A G >H > šJMKL  š š :N š � >PUQS cR šT > , >VX >W > >Y � š[n >\]f^a_ @` šbecd > š glhji : @ >k š š >m š owpsq šr š š @t > šuv š > x~y|z >{ @ > >} D : D š š š š š š  š š š š š š š  š š š š š E] š š  š š  š š E] š š š   š š  š š š š 5 š š 5 š š c 5 š š c š š š š š š š+ š š  š š š š š ̀ š 8 š Em š š  š š š š  š š  š š š š š š š š k š š š  š š š š š š š š š š� : : : š : : : š : : š š     š š < š š š š < š š E š š = š' š š $ š š" ! š > # š% š E]& E] š() š* š š,N-7. š/10 š š š2 834 š š5 š6 š8C š9:; 8 š< š= š>?A@ š š šB š šDE šFIG š šH š šJ šK šLM š OiPbQTR š šS š šU šVW[ šX šY šZ š š\]_^ š š (`a š ( ( šcfd š še š g šh š š šjkn šl m šo š šq šr šstuv E] šwxy š z š š{|}~ š š š š š š š š     š š š   š š š š š š š š 5 š š š š š š (  š š š A š š š š > > > š š > c k š  š  š š š š š  š  š š B š š 8 š š š š š š < š š š š š š š š š š B š š š š š š š š B š š š7 š š š š š š š š = š = š š š š   š�  š  KH      KH  š š š  š š š š'  š š š š š š Em Em Em Em š!$" š# š š %& š š(. š)*,+ š š - š  š/0 š š1 š2 š34 š š56 š š š8 š9 š:; š š=>@ š? šAz šBC šDUE šFR šG šH šI J KL M N O PQ S šT š 8 š šVWk šXYZ š[ š š\ š]^ š_ š š`a š šbcgd Ye Yf Y š Yh ši šj š Y š šl šmn o pq r s tu v w x y { š| š} š~ š š  ( š š š  � š š     � š š š š š š š š š š š š š š š  š š D š š š š š š š š š {q š š š 8 š š š š| 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  8  8 8  8  8 8 8 8   8  8 8  8 8 8  8 8 8 8 �Q$  8  8 8 8 8  8 8  8   8  8 8 8 8  8 8 8 8 8!" # 8 %B&2 8'(,)* 8+ 8 -/ . 801 8 8 3<475 6 88: 9 8; 8 = 8>@ ? 8A 8 CKDJ 8EFH G 8I 8 8 8L 8MNO 8P 8 ReS^T\UV 8W 8XZ Y 8[ 8 8] 8 _ 8` 8abc 8d 8 fig 8 8h 8ju 8klqmo n 8 8p 8 rs 8t 8 8vw 8xz y 8{ 8 }~ 8 8   8  8  8 8 8 8  8   8 8 8 8  8 8 8 8  8  8  8 8 8 8 8  8  8 8 8 8 8 8 8 8 8  8 8  8 8 8  8 8  8  8 8 8  8 8 8 8  8 8 8 8  8 8  8 8 8 8 8 8 8    8  8  8  8 8 8 iu� 8  8  8 8 8 8 8 8 8 8 p2      8 8 8 8 8  8 8 8 8 8 8 8 8 8 8!."(#&$% 8 8 ' 8), 8*+ 8 8 - 8 8 8/ 801 8 83H4=56 8 7; 889 8: 8 8< 8 8> 8?@D AB C 8 8EF G 8 IcJ[KTLN 8M 8 O PR Q 8 S 8 8U 8VWY X 8 8Z 8 \ 8]a 8^_ ` 8 b 8 dieg 8f 8 h 8jlk 8 8mn 8 o 8qrs~txu 8 8vw 8 8 y 8 8z{ 8| } 8 8 8  8  8  8 8  8  F 8 8 8 8 8 8 8 8  8  8  8 8 8  8 8  8  8 8 8 8  8 8 8 8 8  8 8 8  8 8 8 š H š š š  š L ѧ š  š š š š š š š š š š š š : š š š š š š š   š š š  š š š š š š š š š š š š š š š š š š  š  š  �          8 š š š š š š š š š š š š š  š* %! š š" š# $ & š' š š( š) š +],4- š.1/ š š0 š š23 š B š5Z6 š7Y š89M:B š;< š= š> š? š š@ šA šC š šD šE šF šGH šI šJ šK šL š š : šN šOP šQ šR š šST šU š šVW šX š š š[ š š\ š ^}_ š`pa š šb šc šde šfog šh ši šj šk šl šm šn š š š > šqrw stu 8 8v 8 xyz 8 {| 8 8 š~ š š š š š š š š š š š š š š ( š  š š š š š  š š š š š š š š š š š š  š š š š š š � š D š � D š 5 A  5  ? ? š š  š š š š š š š š   8 8 š š š  š š š š š š š š =  š š š š š š A š š š š š š š ! š š š š  š š š E E E š š š š š � ( H š š š  š š š š š  š > š š š š š š š  š š ( š š š š š š š š "S#1 š$%(& š' š š š)*+ š ,- . / 0   -2 š3 š4K5 š6?7 88 8 89: 8 8; 8<= 8 8> = 8 @ A šB šC šD šEF šG šH šI šJ š š LR šM šNO šPQ < c  šThU[VY šWX š š šZ š \ š] š^ š š_` š ša šb šc šde šf šg š š 4 šijnkl š m š ] š šo šp š rdstuvw šx šy šz š{| š} š š~ š Em š š š š š š š  š š š : : š š š : š : š š š š š 5 š 5 š š š š ї š š š š  š š š š š š š š š š š š š š š š š G G G  G G G G G G G G  G G  G š š š š š š š š  š ~ š š š  š š š š š š  š š š š š B š š š š š š 7 7 7 G 7 7 L L L  G G � G š š š   d š š š š   š š Em š š š š š Em šK,% š š$ š! š \ š š š RM" š# š š > š & š' š š() š* š š+ B š- š.:/4 01 23 8 8 5 67 8 8 9 8;G<D=> 8 ?B@ A F 8C 8 8EF 8 8 H 8I J 8 šLM šN šOVPUQ š šR šS šT š I šW\X I rYZ r[ r 8 r] L^b_ d`a d dz dc d de š šfg š šh šij šk šl šm šn š šo špq š šrsu št švywx š : : z š  š|} š~ š š ^ Ve š š E š š š  š š š š š š š š š š š š š š š š š š š š  š š š š   š š š š š š < š š  š š š š š š  š  š š š š š š (  š B š B š š š š š š š : š š š š š š š c š š š 4 š š          8   š s š    8  �        8 8  8 8 8 8   8 8 š š  š š  š  š š š š >! š" š#D$9% š&.' š š( š) š*+ š, š- š š š/0 š š12 š3 š š45 š6 š7 š š8 š: š š; š<= š š>? š@B šA + šC š š  šEFKG šHJ šI ( š ( š šLM šNT šOPQ > š šR šS š �UYV š šW šX š : šZ[ š\ š] š š _` šavb šct šde š šf šghr šij š šk šl šmn šo š šp šq š > šs š >u š š šwx šy šz š{ š š|} š~ š š š š š š š š š @7 š š š š š š š š š  :  > š š š š š > : š � : š (  > š : š : š š š  š š š > š > > š š š : š š : š `  š š 8 š š š š š š š š š š š š š š š š š š š š šs\ š š [7 š š š š š š š š 5a š š   8  8 8 F š š š š ( š š�  š   š š  E] š š    8  š š & š š k š š š š š" š š š š : š š B! B š# š š$% š '( š š)* š+ š š, š-. š š/ š01 š2 š354 š š6 š8Y9B: š š;< š=@> ? š A šC šD šE šF š šG šHIL šJK š š M šNQO š šP šR šS šT šU V W X šZ š š E] š] š ^_` š ša šb šcd š šef šg š šhi š šjk šl š šm šno šp šq š šr d štu šv šw š šxy šz š{ š| š š} š~ š š š @' š š š š š š š š š A š A A A š š š š š š š š  š š š š š š š  š š š š  š š š  š š š š š š š  š š š š š š š š  š š!)E-% šW š š š š  š š š š š š š š š š š š š š š š ( š š š š š š š š B š š š š  š š  š      8 š š� š š š ( š  š š š š š  š š P š š š š k < c  š š š E š š š š!# š" š$)% š& š' š( š š B* š+ š š, š-.>/ š071423 � >56 , A � :8<9;: > > š š �= š � :? š@GADBC > �EF , A : �HJI š @ šKM šL > š šNO š > šQTR š šS š U šV š š XYf šZ[^\ š š] Em š_ š` ša šbd šc š 8 še šgu šhi šjnk š šlm š šo š šp šqr šst š  šv š šwx šy š Gz{}| G G ~ G G  š š š  š š š š š ( E E E š š š š š š š š  š š š š š š š c { š š š š š š š š k š š š š š š š  š š š š š š H š š  š š š š Em š š š  š š š š š E] š š E] š š E] š š 8 8 8   7 8 8 8   8 G G  G G  G G G  G G G G G G" š š� š š š š š š š š  š š  š š š  š š š š š š š š k š š š š ( š š (  ! š š# š$ š&G')( š š * š+4, š š- š. š/ �0 �1 >2 >3 >5?6 š7 š8 š š9: š; š< š š=> š š @ šA šBD šC š E š šF š šH šIJ šK šLMNtObPV šQRUS šT š � š š W^ šXY[ šZ š \] š š >_ š` š +a š ckdf še > �gih š š  šj  šlrm šnpo š š q š ,s š šuv| wx{ y z : 5 � š} š~  ( š � : š š  š +  : š š š  D � D š < < D š > š š H  š š š �  : š š D š š   : š š > š š š  š : š š š >  š   < > c š  š : 5 š š  š š š k < k < š š � š š  š  � š š  š  š š š š š     š š š š š š š š š š š E] š š š š š� š ( ( ( ( ( ( (  ( ( ( ʗ ( ( š( š %# š š š š š š š š š š š š š!" š $ š š š&' š š)*+ C] š š, š š./ š š0 š1 š2 š34 š š5 š67 š8 š š9 š: š;< š š= š>? š š@ šAB š šCD š d šF G (HvIQJ šKPL š šM šN šO š š šRSbT š UV_WYX š šZ[ š \^ š] Ve š š` ša š š c šd šef šg šh š šijpkm šl  no : EM qtrs  ( šu š w šxyz{| š} š š~ š š > X 5 š , š A >   5 H  k 5R  A  W A  š @  š  : š D  RM >  c š H ( š š  š EM š š A š  š š š š š š š     š š ( š š š š š š š š š š š š š > š š š š š > š š   8  8  š š š š š š 8 š š š š š š š š š š� š š š 8 š E] š š ( š š š š š 5 š š š š  š  š š š š š 5 c š š šZ6( š š š # š š ! š š" š $&% š š Em š' š )0 š* š+,- š š. / š š12 š š34 5 7G8?9 š:=;< š š > š š @DA šBC š šE š šF šHOIM šJK š šL š šN šPUQ š šRS šT š š 8V š šWX š šY š [\o]g^d_c š` ab � š šef š { šhji š š kml š š n š Em šp{qxrt šs š šuv šw 8 8y š šz š |} š~ E š š š š š š š š š š š š š  B š š  š š š š š  š š 5 š : š š E š š š š   š š š š š š š š š  š š  š š š š š  š š  š š š š E š š š š  š š š š š š š E š š  š š š  š š  š š I š š š š  š š š š š š š š 8- š š š š  š š š E] š š š� š š > š ʗ š š š š š Em   š  š Em š š  š š  š š š ü šT;,$!  š š š E] š"# š š %'& š š š( š)* š+ q -4 š./0 š 8 š1 š23 š  š58 š6 š7 š 9 š š: Em š<E=A š>? š@ š š šB šC šD šFPGNHL šIJ š šK c šM š š 8O š š šQ šRS š š UkVaW[ šX šYZ š š \^ š] š š_` š š bec šd š šfh šg š šij š š l|mtnqo š šp š šrs š E] šuzvxw š š šy š { š Em š} š~ š š š Em  š  š š š š � ? š š š  š š š A š 5 ? š š š š : š š š � š š c š  š š š H š š ( š š   A ? A 5R < 5 c B&  k ( 5 5 5a H  H > 5p š š 5 š A ? A 5R  5p < 5 c B&  k ( 5 5 5a H  c  ʗ  H > š š š š 5 š š š �  š š ? ? ? ? ? ? ? ? B 5 š š š 5 � š  š  š š  š     š  š 5 š š  š B B š š š  š    š   š š ? š       š  š  š š   š š  š  š  š  & ! # š " š  $ š š % š š ' š  ) 5 š * + š š , - š . š / š 0 š 1 š š 2 3 š š 4 š > 6 š 7 R 8 ; š 9 š : š < G = A > š ? š @ š š š B š C D š E š F š š H N š I š J K L š  M š š  O š š P Q š š S p T ` U \ š V š W š X Y š  Z [ š  ] ^ š š _ š 8 a f š b c d š E] e š š  g š š h i j š k š l š m š n š š o ( š q s r š š t  u  v  w y x š š š z {  | š }  ~ š  š š    š š š  š š š  š š š     š  š  š š  š š š E š !  š š š  š š š  š š š š š š  š š  š š š š  š š š d š    š š š š š š š š š  š š š  š š š  š š š š š  š š š š š  š š š  š š  š š š š š  š š š š š d !  š  š  š   š š š  š š š    š š š š š      š š š š (  š š š š  š š : š š š š š š š š š!� š! š! š! š!! š š! š!! š! š Y š! š š! š! š! š!!! š! š! š!! š! š š š !!! š š! š š! š! š!! š š! !! š!" š š!#!$ š!% š!& š š!'!( š � š!*)!+!!,!!-!B!. š!/ š š!0!1 š!2!>!3!9!4 š!5!7 š!6 š š!8 š !:!<!; š š š!= š!?!A š!@ š š!C š!D š !E!F!e!G!M!H!L š!I š!J š!K š E] C? š!N!a š!O!P!W!Q!R 8!S!V!T 8 !U 8 8 !X!]!Y!\!Z ![ 8 8!^!` !_ 8 8!b!c š !d š !f!!g!~!h!v!i!u!j š!k š!l!o!m š š!n š!p!r š!q š!s!t š š E š !w!| š!x!y !z  E!{ E!} š E] š! š!! š! š š! š š! š! š! š!! š!! š ! š š š!! š š! š! š! š! š! š!! š š!! š! š!!!! š  �!! : c š!'!!!!!! !! ! ! ! ! ! !! ! ! !! ! ! !! ! ! !! y !!! ! ە ҉!!!!!!! ï! i s! Z! Z!  Ʒ!!!!! `!! ƙ!! ƙ! ƙ ƙ! Vt ƙ ƙ ! ï ! ! M!! ï s!!!!! ï ï y!! `  s ï!!!! ս Ʒ ï!! Ʒ !!!!! ï! z r!!!! r! r! r! r r ! r r! r! r! r!!  Œ k Ʒ  !&!%!#!""�"" Ʒ ҉ "" i ï" ƨ""u""*""" ?" " ?" ?" ? k" ? ?"" ?" ?""" ?" ?" ?"" ? ? ?"" ? ?" ?" ? ?"" ?" ?"!"% ?"" ?"# ?"$ ? ?"&"' ? ?"(") ? ? "+"7","/"- š". š š A š"0"1 š"2 š š"3 š"4"5"6 š c š"8"U"9"E":"="; š š"< š "> "?"C "@ "A "B k "D 5 š"F"G"R"H"M"I"L"J  5R"K 5 5R 5 "N"O š 5p š"P š"Q  š š"S š"T š "V"^"W š"X š"Y š š"Z"[ š"\ š"] š c š š"_"` š"a"g š"b"c"e"d š < š š"f š k"h"n"i"k"j š c š š"l"m š"o"q"p š ( <"r"s š "t š "v" š"w"x š š"y š"z"{""|""}""~""  � """ ? k B"""" 5R š  š"" k š """" 5R 5" "  5" š k ("" š" š""" " š " c""""" H k <"" H c 5 ʗ""" 5R  "  """" š"" š" š š" š" š" š �""""""" c c"" (  c"" c" c"" c" c c A c" c" c" c"" c c" 5 c š" š" š" š" š" ? 5""" " " " š " " "" " B5""""""" š" š š  š" š" š" š" š" š A š"" š" š š" š (""" š" š" š š"" š" š š" š" š" š" š" š" š š" š"" š" š š" š """" i z W#�# x y x ѧ####J##'###### # # # s 6 # # s Z i ####  # Z## d H# d H ## Œ  ï##!###  ï##   ƨ#"#%###$ s #& ï Œ 7#(#<#)#3#*#- #+#, ï Ʒ #.#2#/ #0 Ʒ#1 š ` ï s#4#7#5#6 ï ï#8 7#9 #: #; 3_#=#C#>#@#? ̀ ï#A#B 7 ޳#D#G#E#F ҉ ƨ#H#I  ï  #K#l#L#[#M#T#N#Q#O#P  ï s ï#R#S 3|   #U#X#V#W ̀ ï  7#Y#Z  #\#d#]#`#^#_ Œ s F#a ï y#b#c   u#e#i#f#h #g y G Z y#j#k Z #m#|#n#u#o#p ï #q#r ƨ #s#t  ł s #v#y#w#x Z r i #z#{  #}##~### ï  ï## i ï #### y ƨ## d #%#### x x ## x `# ##$;## ######## ###  H# ###### < s s < # d# א## # ### H H s 2 ######## < H# d ## < H ### # H## # < 2 ## ## H # # # H##### ### # d H # ####### H# < H# ## # 02 ### d## H# ### <## <  #$ ##### #### < ## ##  < X## א < ##$�## H H$$$  $$$$$$$$ $ $ $ $ <  $$$$ $ < < H $$$$$ H H $$ $ <$ H $ H $ $($!$'$"$# d $$$% $& < $)$2$*$/$+$- $, $. H H $0 <$1 $3$6$4 $5 $7$9 $8 $: $<$$=$$>$_$?$O$@ $A$H$B$F$C$E $D < < $G $I$L$J$K < < d <$M$N $P$T$Q  $R$S d  $U$[$V$Y H$W $X $Z d $\ $] <$^ < $`$a$o$b$h$c$f$d$e H < H <$g < $i$m$j$k d $l $n  $p$x$q$u$r$s < $t $v$w $y$}$z$| <${ 2 < H <$~ R X$$$ $$$$$$ $  H$$$$$ 2 $ <$$ 2 H X$$$$$  d$$ $ ;$ $$ $ $$$$$ $ $ H$$$$$$ H$ H $ < H $ <$ $$$$$ $$$ < < $$ <$$ $ $ $$$ $$ $ < X $%$$$$ $$$$$$ < <$ d $$ $  $ H $$ $$$$ H < $ H $$$$$ < H$$$ / d $$$$ א H d $$ s $%$$$$$ $ d$$$$ $ #� $$$$ $ H $$ d H d $$$ $ X H %� d%%%% %% %% H%% H <% %% % % % %%% %% <% d %%%% H % d H % % % %W%!%=%"%.%#%(%$%&%% %' %)%, %*%+ < %- %/%5%0%2%1 H%3%4 H %6%:%7%8 s א%9 R%;%< 02 %>%K%?%E%@%C %A %B ,] < H%D %F%I %G H%H %J <%L%R%M%Q%N%P%O H H %S%U %T H %V H %X%s%Y%f%Z%`%[%] %\ %^ %_ H%a%d%b%c H H %e H %g%n%h%j%i d%k%l H%m %o%q%p H %r H %t <%u%}%v%{%w%y%x H < < X%z %| < %~%%% <% א %%%% x r% x %% ƨ ï Ʒ%&]%&<%%%% %%%%%%% ƙ% ƙ%%%% ƙ  ƙ ƙ Œ `% ƙ ׭%%%% ƙ%% ` ƙ% TI%% `% % ƙ%%% ƙ %% L %%%%%%% ƙ  ƙ ƙ% š ƙ%% ƙ% ƙ 8%% ƙ K ƙ %%% U ƙ% š% š ( š%%%%% ` `%%%%% ƙ ƙ P%% ƙ  s%%% %%% š% š ( š%%% ƙ% ƙ ƙ%% ƙ ƙ% ƙ% ƙ%% ƙ ƙ 6D ƙ ƙ% ƙ% Œ% ƙ `% s% ׭ ï%%&%%%%%%%%% !% ï ï 6 ï s%%% WS ! ï ï%%%%  Ʒ% š (%%% ï 3  c%&%%%% % � š ï i&�&&& ï& Dz ï ï Dz W ï&& && &&  7  < & & s& && ּ ï 6 Dz :y &&%&&&&&& Ʒ x š&& & ï& ï 3 ï& & 7&&"& &!  ƙ ƙ ܜ&#&$  ï &&&2&'&-&(&, ï&)&*&+  4 + x ƨ ï&.&/ Z  s&0 (&1 : š&3&5&4 Z&6&;&7&9 š&8 š  ï&: ï : ƙ V&=&> Z x&?&@ &A&O&B&H&C&F&D&E Ʒ ҉ &G &I&L&J&K ï Ʒ ï ƙ&M&N ï Z ï d&P&V&Q&S&R  Ʒ&T&U  ï 2 &W&Z&X&Y  ï ï Ʒ&[&\ r r &^&&_&t&`&q&a&n&b y&c&i&d ï ï&e&f ï&g ï ï&h ï 3&j ï ï&k ï&l ï&m ï Dz Ʒ&o &p &r&s s Ʒ ü&u&&v&~ &w &x &y &z&{ &| &} & ҉&& & &&&& ց ց& ց & & ց&& Ʒ& ï& ï&& ï& ï& ï H ï V&&&&& ï k Œ&& ï Z &&&&&&&& ƨ Ʒ ƨ&& ƨ W r &&&&   ï&& ƙ r s&&&&&&&&& ̀& ̀& ̀ ï& ï ̀&&&&& ï ï& o ï& C& ï o ï& C ï& o ï s ï&& ï ï&&  Z y&&&&&&&& VG ï& š ï&& r Ʒ &&&& Z y ï&&  Œ &&&&&& ï s && s &&&& r ï s ҉&& && Ʒ x Ʒ &' &&'H&'B&'?&& Z `& r&'&& x&& x& L L x&' && L& L x&'& x x&&' x&& x x&'� x x' x 4' x x'' x x'' x x 4 x L' ' ' L L x L' x' x' x' x'' x' x x'' x x 4''(''''' L x L' x L x' x x'' x'! x x'" x'# x'$'% x x'&'' x x V')','* x'+ L L x'- x'. x'/'7 d'0'1 d d'2 d'3'4 d d'5 d'6 4 d x'8'9 x': x x';'< x'= x'> x V x'@'A ï Œ'C'E ï'D y ï'F'G Œ 'I'f'J'M'K'L s ï ï'N'O  7'P 'Q 'R'^ 'S 'T'U 'V  'W 'X 'Y 'Z '[ '\']   tI'_ '` 'a 'b  'c 'd'e  T 'g''h'w Œ'i 'j 'k'l  'm 'n 'o'p 'q 'r 's 't 'u  'v s  G'x'y y'z'~'{ y'| y y'} y' y y' y'' y''''''' ' ' ' y ' ' '' ' y' y ' ' '' '' y ' ' y ''' ' '' ' y ''' ''' ' y ' ' y '' ''' ' y ' y ''' ' y ' y '' G G''' š'' Z ''''   ' i''' X '' 1' 1' 1' 1' 1 1' 1' 1 E'' Ʒ ' à''''' '  ' ' ' ' ' ' '  ' ' ' ï  ' '  ï''''' Z Z'''' Z' ' ' Z'''' W W'' W Z W' W W Z Z' Z'' Z' Z' Z' Z W Z  '(O Z(�(( i(((( S( S( S( S Œ( (( Œ( Œ Œ( ( Œ( Œ Œ( Œ( Œ( Œ( Œ(( Œ( Œ( Œ Œ(( Œ Œ((( S S S( Œ S((:( (3(!()("(%(# ï($ Z [ s(& ('(( ҉ ï(*(+ (,(1(-(. ï x (/(0 ̀ K ï(2 ï ï (4(7(5(6 G ҉(8(9 ï ï i(;(B(<(?(=(> Q ï  ï(@(A  y y Ʒ(C(E(D ï s (F(G ƨ y(H ҉(I(L š(J(K Ʒ š Ʒ(M r Ʒ(N Ʒ š(P( (Q(R((S(r(T(k(U(d ï(V(W ҉(X Œ Œ(Y(Z Œ([ Œ Œ(\ Œ(] Œ(^(_ Œ(` Œ(a Œ Œ(b Œ(c l Œ(e(i ï(f(g(h ï ҉ ï(j ƙ(l(o(m(n ï  Z(p(q ï ï i(s((t((u( ï(v(w( (x(y(|(z({ r 8 8 8Z(}( 8(~ (( ( (( (( 8 r y  G (( i ï ˘(((( ( L( L(( L L(( L L(( L L( L( L(( L( L  L ü((  ï Œ(((((((( Ʒ ï ï (( ҉ x r ï(((( Ʒ `( V( V(( V V( V(( V ć(( ć( ć( ć( ć ć( V ć(( r ` (((( (((( (( Q ( 3_ ( 4 3_ ( (((((( s Œ x(( ` ï `(( ï ï((((  (( (( ( (( s  ï ()()e() (((((((( ̀ (( Œ ҉ r (((( ҉ ï ï r(( Z Œ s(( > ()�(((( s ï ï ((( 7((  ƨ y )))) \ ï) ) )) s) ï) ) )   )))))")))) ï :y s )) r ï)) )  ))  ))  ))  ) ) )! )#)&)$)% s G  s)')( Q Ʒ Ñ)*)3)+)-), i ï ). ï ѧ)/)0)2 ï)1 ł  )4)b)5)6 i Œ )7)8)A )9):); )< )= )>)? )@  )B)L)C )D )E )F)G )H )I )J )K d)M)a )N)O)Y)P)S)Q )R )T )U)W)V )X )Z )[)^)\ )] )_)` ; d)c)d G  ï)f))g)v)h)o)i)l)j)k Œ ï  )m)n ï s ׭)p)s)q)r VG ï s)t)u x ï Œ )w))x))y)z ш  ){)| š)} š)~ š š)) š) š š))  ̀ ï)))) Z ƨ ï  ï) ` Ʒ)))))))) s )) H .)) . .) . ))  Z ï )))) ) ï)  ï )) x ï)  ï))))) ҉) ))) š š)) š š)) š) š š))  ) )  š)) i) :y)))) Z .)) š ) ) )))) ï y ï)  ï)))) ï )) ˘ ï ï :y  Ʒ)-/)+)*)*X)))) V s Ʒ s)) 7)*)*)*)))))))) ï r ï)) Z ï ï)))) G)))))  ) ) )  8 ߡ s) ï))) r ï 7)))))) Z y ï)) Ʒ 7 ï G)))) >  2 ï)*� ï r Z **  ï ï ** *  y* s* s* s* s* * s s G*   ****** Ʒ ï* k 7** ** Ʒ **** ** ï ï *!*1*"***#*'*$*& ï*% W Œ ï r*(*) i Z  ƙ*+*.*,*- ï y Ʒ*/*0 ï  Ʒ*2*<*3*5*4 Ʒ ƙ Ʒ*6*;*7 *8*9 ï Ʒ*: Ʒ ƙ Œ  W*=*S*>*C*?*@ Œ *A š*B 5p 5*D ï*E*H*F*G Ʒ ï *I Ʒ*J*N *K *L*M Q& *O *P*Q*R  T *T*V *U ` G ï*W i*Y**Z*{*[*i *\ *]*^ *_ *` *a*b *c *d *e *f*g *h 8*j `*k ï ï*l ï*m*n ï*o ï ï*p*q ï ï*r ï*s*t ï*u ï*v ï*w ï ï*x ï*y*z ï 3 ï*|**} *~********* ە* Z ï** Œ Z **** ** * * * * **  u u  ï Z** 7* * ̀*  * Z Z ï***** s* x** x f x s*  ï****  s * ï* ï* ï >** ƨ `********* r* n* n* n n** n n* n* n* n u r* Ʒ** Ʒ Ʒ ** ï* y*  Z**** 7 * ï WS ï* y****** Z y ** Z ˘ ï Z**** ï  *** Z* * Œ Z** r** r r** r r** r* r r* r* r* r** r r* r** r* r 8 r * * ** ** * * ** * * * ց +�+<++ Œ+ Œ+ Œ++ Œ+ Œ Œ++ Œ Œ+ Œ+ + Œ+ Œ Œ+ + Œ Œ++ Œ+ Œ Œ+ Œ+ Œ+ W Œ++++++ r ï Œ x++ ï z++)++( Ʒ+ 8+!+" 8+# 8+$ 8+% 8 8+&+' 8 8 9 x y+*++ G ҉+, ҉+- +. +/ +0 +1+2 +3 +4 +5+6 +7 +8 +9+: +; += Z+>+B+?+@ ƙ ˘ 6b+A r +C+E+D ï +F+p+G+[+H+N+I+L+J+K Œ G z Œ ï+M r š+O+R+P+Q  r  +S+Z ï+T+U+V k Ʒ+W +X+Y š  š c x x+\+j+]+g+^+e+_  +`+a+c +b # +d # ï+f ׭ +h+i Z ï+k+m+l ï ̀+n+o ` i ű Z+q++r+y+s+v+t+u ҉ ѧ > ï+w+x W Œ ս `+z+}+{+|  ï s+~+ 7 r ï++++++ ` + ׭+ c+ c c++ c+++ c c++ c c++ c c+ c+ c c+ c++ c c++ c c ++ ï ƨ r++++  ï i+ ++  ++ +  ++ + +  + +  Od++ V8  ï+ Z+-+,o++++++++ x r 7 ++ k x G Ʒ++++ ï ѧ Ʒ++ s V+ + ƨ 4+ 4++ 4 4++ 4 4+ 4+ 4++ 4+ 4+ 4+ 4+ 4 4 ƨ+,++++++ r++++ ï++ ï Q5 3 4! ï+ ï 3++ + 3m++ ï k+,+,+,+++++++ š+ š s+ + <u +++ š s++ k s s k++++ G +++ s š + š Z+, š+,� 9 ,, , Z , ,, , , 6& j, , , ,, , , , ï ҉,, G ï  ï,,<,,4,,3 ï,, ,,% ,, , ,! ," ,# ,$ 7�,& ,' ,( ,),.,* ,+ ,, ,- 3_ ,/ ,0 ,1 ,2 3_  ï,5,6 ˘ ,7,8 ,9,: (,; ( š (,=,X,>,H,? ,@ x,A x,B,E,C x,D x L x,F x,G x L x ,I,J,S,K,N,L,M j s G,O,P ƨ ,Q ï š,R š ,T,V,U ï Ʒ r,W z,Y,Z i ,[ ,\ V,] ,^,_ ,`,i,a ,b,f,c ,d ,e ,g ,h ,j ,k,l ,m ,n ,l ,p,q,,r,,s,,t,,u, Ʒ,v,w,,x, ,y,z, ,{ ,| ,},~ ,,   ,, ,  ,,   , , , , ,,  ,,,  ,,  , , ,  ,, , , , , ,   s, Z ,,,, ï G,,, i, ï ï,,, ï, ï ּ ï, ï ּ, Z, , , , ,, , , ,, ,, Q&,,,,,, x ` Ʒ , 8 ,,,,  Q ս Ʒ,, Z ï ï,,  ,,  ,,  , , , ,,  , ,  ,,,,,,,, y r i,, r Ʒ Œ ï,,,, ە `, i , , , , ,, ,, r, r,,, r R, r r R ï,-,,,, ,, L `, y,-,-�, , ï -- ï ï- ï ï-- ï ï -- - - Z  Ʒ - -- 8---- x Z x--- š š- x s--- Z x x š s ï- ƨ- ƨ ƨ- ƨ-- ƨ- ƨ ƨ-! ƨ-"-# ƨ ƨ-$ ƨ-% ƨ-&-' ƨ-( ƨ-) ƨ ƨ-* ƨ-+-, ƨ ƨ---. ƨ ƨ -0- s-1-2-3 Z-4--5--6-}-7-8 Ʒ -9-^-:-I-;-B-<-?-=-> s ï Z -@-A s 3| Z-C-F-D-E r ï-G-H Z x :y Ñ-J-V-K-N-L-M ƨ ï Ʒ r-O-P -Q-U -R-S-T > š 5 < ï -W-Z-X-Y i ï ï -[-\ -] ï  -_-n-`-g-a-d-b-c Œ s ï -e-f Z ï ە-h-k -i -j -l-m ï s 7-o-v-p-s-q-r  -t-u Z Œ ƨ -w-z-x-y 7 ï-{-| Œ ï -~- x Œ z-- ï- :y z -- ï------ Ʒ--- ---   (---- ܜ  ( -  r--- L--- Z L-- ï  x----  ---- x- -- Œ- Œ-- Œ--- Œ Œ-- Œ- Œ Œ - Œ- Œ- Œ Œ- Œ Œ š- š -- Ʒ  d ï-- ƙ-- ƙ 6D ƙ------ ï G G -- G ï ƨ----- --- x- x--- x- x x 4- x- x 4 x- Ʒ- x x- x-- x x ( ە-- ï ە ` r- -/2-/-.# z--.------ x Z ï-- - 7- `- `- ű ` ű-. -- 8-- --- 6 - - 6 ï--.-- ï s ï--.� 9U ֞ ֞ 95 ï..... 9 ֞ 9 9.. ֞ . . ï. ï. ï ̀ Ʒ ...... ï. ̀ x ï .. ш x ï..  . ..  x .. .. y s ï .!." Ʒ  ï.$..%..&.' Œ ï.(..).a.*.T.+.>., Z.-.1...0 Z./  Z Z .2.9 Z.3 Z.4 Z.5.6 Z.7 Z.8 Z Z , .:.; Z.< Z Z.= Z.?.N.@.J.A Z Z.B Z.C.D Z.E Z Z.F Z.G.H Z Z.I Z.K Z.L Z.M Z Z .O Z.P Z.Q Z Z.R.S Z Z .U.[ Z.V Z.W.X Z.Y .Z Z Z .\ Z.] Z Z.^ Z._.` Z  Z Z.b.c.h.d Z Z.e Z.f Z.g Z .i.x.j.t.k Z.l Z.m Z.n Z Z.o.p Z.q Z Z.r.s Z ކ Z.u Z.v Z.w Z  Z.y Z.z Z Z.{ Z.|.} Z.~ Z. Z , Z. ï ï... ï.. ï ï ̀. ï ̀ ï Œ.. ï.... Ʒ ҉.. G Ʒ š..... ҉. Ʒ š. Ʒ Z. ҉. š š Ʒ Ʒ. Ʒ .........  ï.. ï s ï .... Q ü ... . .. G ̀ ï...... Z  ï.. ï  y ە.... . s.. L. 4 4.. Q 4 x _.. Z ï ս r......... ï. . . n ̀...... ...  %  ...   . % ï. ï... ï O O ï ï ....  r ï... 7 ..  Œ i Œ././.. ï.. ï. ̀ . 3 ....... } .. K S.. . ./� K // ï// ` Q s///// / // / /   / š//  / / /  // / /  /  //  ï Z/ / /! /" /# /$ /% /&/' /( /)/* /+ /, /- /. // /0 /1 : /3//4/:/5/9 y/6/7 Ʒ Ʒ/8 Ʒ ï z/;/ k/</=/]/>/M/?/F/@/C/A/B ҉ Œ ï/D/E 2 ց ҉ Z/G/J/H/I y /K/L  3| ҉/N/V/O/S/P/Q i ï/R ï Z /T/U ï ƨ VG/W/Z/X/Y Z/[/\ ü Z r/^/m/_/f/`/c/a/b Ʒ ï ƨ /d/e :y /g/j/h/i y y /k/l ` ï /n/|/o/y G/p/q i/r/s i i/t/u i/v i/w i i/x i /z/{ s ï r/}//~/  ï/ Z/ Z / W Œ//// ï/ ҉ G// Ʒ ï ш/////// ï//// ï// y :y ï / Z//// 7 i// ` y ï// ï ` Ʒ/ Ʒ à// à/ à à// à à// à à/ à/ à/ à/ à/ à// à à/ à// à à/ à /dc/M/D-/>/4/0E/06/05 ////// Z W/ W U/// Z////// Z/ / Z Z Z// Z Z/ Z / Z/ Z Z/// Z Z// Z/ Z/ Z Z/ Z/ Z/ Z/ Z/ Z// Z Z/ Z/ Z F Z/ Z// Z Z/ Z// Z Z/ Z/ Z// Z/ Z Z// Z Z/ W Z/ Z/ Z/0. Z//0/ Z/ Z/ Z/ Z Z// Z/ Z Z0� Z0 Z0 Z W0 Z0 Z0 Z00&0 Z Z0 0 00 0 Z0 0 0 Z F Z F0000 Z F Z F00 Z F Z F000 Z00 Z0 F0 F Z Z F00" Z0 Z0 0! F F Z0# Z Z0$0% Z F Z0' Z Z0( Z0)0* Z Z0+0, Z Z0- Z F Z0/ Z00 Z01 Z0203 W Z04 W Z s 0708 090B0:0>0; Ʒ Ʒ0<0= Ʒ Ʒ 0? Ʒ0@ Ʒ0A Ʒ Ʒ 0C0D   i0F40G10H1:0I1�0J00K0q0L0c0M0P0N0O ï 0Q0R G 0S s ï0T0U ï0V ï0W0[ ï0X0Y ï0Z ï ï 3 ï0\ ï0] ï0^ 30_0` 3 30a 30b ï 30d0g0e0f  ï 0h0l y0i0j0k ѧ s  0m 0n Z0o Z0p Z Z0r0x0s0w0t0v0u ï  t y 0y0|0z0{ 7 s r0}0 Œ0~000 Ʒ00 ł ł K Z TI000000 00000 ï0 ï0 ï 4! ï0 ï00 ï0 ï 000 C ï ï ! 0000 7 ï `000 s00 00 7� ܹ >000000000 Œ Œ0 Œ0 Œ ~000 00 000 0 ï00  y ï 000000000 0 0 0 0 0  00  0 00   0 00 0 0 00000000   00   0000   00   000000   00   0000   00   000  0 % 0 0  s0000 \M  Z00 Z Z00 Z Z 4{00 Œ ï ï111111111 ï 1 Œ ï 1 1 1 1 s s1 1 s Ʒ ï1111 1 ׭  1111 ï ï11 x Œ s11.11$11!11 i Z 1" ï1# s ս1%1(1&1' à Œ 1)1- 1* Z1+ Z1, Z ï 1/141012 11 ѧ i13 ѧ `151716 ï i d1819 ï s ï1;1}1<1Y1=1K1>1D1?1B1@1A Œ ï Ʒ ܹ x1C Z ï1E1H1F1G i s 1I1J Ʒ ï ï 1L1Q1M1P1N1O  ï Œ ï 1R1U1S1T  ï Œ1V1W ï s1X d 1Z1d1[1`1\1^ 1] r 1_ à Z ҉1a1c 1b s 1e1l1f1i1g `1h 1j1k ï 1m1o1n Z ï Z1p 1q1r1w1s1u1t  1v Q& ' 1x1z 1y Q& 1{1| Q&  1~1111111111 s1  1 1 1  o1111 C] ï Dz11 L 1 C 1  s1 ï 1111 ï Œ 6b ï ï111111  11 i1 1 11 1 1 11 1 11 1 Œ G1111 ە ï ű11 ѧ Z 1111111  Z 1 ï :y 111 1 r11111 ,11 1 1 1 11 1 ł ց r1 A 11 ï Œ x ï1111111 r11 r ü 1 1 11 11 ï11 11 1 # 11 11 1 1 #  >1111  Œ ï11  ï13M12121212o12i12h12.121212 112121 2� 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 222 2 א א22" 22 2 2 2 2! א2#2( 2$2% 2& 2' א 2) 2* 2+ 2,2- א 2/22 20 21 # 232@ 24252;26 27 2829 2: א2< 2= 2>2? א 2A2B2W2C2M2D2I2E2G2F d d d2H d 2J d2K2L d d2N2R d2O d2P d2Q d 2S2U d2T d d2V d2X2] 2Y2Z 2[ 2\ א2^2d2_ 2`2b 2a 2c 2e 2f2g א V2j ï Œ2k2l2n2m r  r2p2~ x2q2r 2s :y2t :y :y2u2v :y :y2w2x :y :y2y :y2z :y2{2| :y :y2} :y22 ï N  2222 2 2 22 22 2 2 2 2 2 2 .2 22 2222 . H 2 22 22 H .222 š 22 ï ˘ 2222222 ï s Ʒ222 ï22222 22 2 2 22 2 2 22 2 2 2 22 2 2 2 2 V22 V V22 V2 V2 V V2 V 2222 22 22 2 2 2 2 22 22 V V22 V V22 V2 V V2 V i 222 ï r222  Z 22222  2 r2 22 Œ2222  s 2 ï ï Œ23,23232323 2 72 723�3 7 ~ K 7 Œ 3 s ï333333 3 3 3 3 f : 3 33 u 3 3 3333 H א 33 H  33%33 33 L  G3!3$ 3"3# ѧ Œ3&3)3'3(  ï  ï3*3+ Ʒ ï3-3@3.3:3/323031 š s33 ƙ Œ34353836 37 39 3;3=3< y s3>3?  y ˘3A3F3B3D 3C Ʒ Œ [ 3E ï 3G3J3H3I ï r3K3L ï ˘ Z 3N33O3t3P3f3Q3a3R3_3S3^3T 3U3Z3V3X ї3W \ [= Z3Y \M [3[ ]m3\3] [ [ [ ї  ï3` Œ s3b3d i3c s 3e W3g3n3h3j3i y ï i3k3m3l Z3o3q ï3p Œ [3r3s ï   3u33v33w33x 3y3}3z 3{ 3| 3_3~3 33 3_ 33 ï :y ï3333 r ш ï33 ց 7  ï333333 i ï y s3333333 < š3 < š3 š š <33 <3 <3 < š <33 < š < :y333  i 733 ï z Œ3 Œ33 Œ Œ33 Œ Œ3 Œ33 Œ3 Œ Œ33 Œ Œ3  Œ33333333 ï3 ï 3 ï 3333 Œ ï 333 ï 3 333 ʥ  ï  r3333 3 ï33 s Z ï 3333 s ѧ ï3 ƨ33333333 Ʒ ˘3333 333 ï ü 3333 # Ux KH 3 ƙ3 ƙ ƙ33 ƙ3 ƙ ƙ33 ƙ ƙ3 ƙ3 8 ƙ UZ s3333  3| Z33 Œ 3| ü333333 ї x ï G r34�33  44 W r44 4444 ƙ G  4 4 s z 4 4 444 4 4 4 4 ï  s Z 4 Z 494444?4 44- 4 44 4 4 4! 4" 4# 4$4% 4& 4'4( 4) 4* 4+4, 7� 4. 4/ 40 4142 4344 45 4647 48 494: 4;4< 4= 4> ց4@4b 4A4B4Q 4C 4D4E 4F4G 4H4I 4J4K 4L 4M 4N 4O 4P 6 654R 4S 4T4U 4V 4W 4X4Y 4Z 4[4\ 4] 4^ 4_ 4` 4a 4c44d4u 4e 4f4g 4h 4i4j 4k 4l4m 4n 4o4p 4q 4r 4s4t  4v 4w 4x 4y4z44{ 4| 4}4~ 44 4 4 4 4  4  4 44 ł4 444 4 44 4 44 4 4 4 4 4 44 ł 49} i449j49i 44764544 444444 4 44 4 4 <4 א44444 444 א4 א 4444 א א 44 א א4444 4 4 א 4 א44 א א44 444 א 4 44 א א 4444 4 44 א א 444 4 4 א 4 4 א 44444 4 א4 44 א4444 א א444 4 א44 א א 44 4 4 4  454545 44 4 4 45� d 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5555 5 5 5 55655/55(55# 5 55 5! 5" 5$ 5% 5&5' 5) 5*5+ 5, 5- 5. 50 51 52 53 5455 <575E585> 59 5: 5;5<  5= 5?  5@5A 5B 5C 5D   5F5T5G5O5H5L5I 5J5K d 5M 5N 5P d5Q d d5R5S d d 5U5x5V5b5W5[5X d5Y d 5Z d5\ d5]5a5^5`5_ d d d 5c5l5d5g5e d d5f d 5h5j d5i d d5k d5m5p5n d5o d d5q5u5r5t d5s d d5v5w d d 5y5} d5z5{ d5| d d5~ d d5 d5 d 56r5555555 5555 <5 <5 < < <5 <5 <5 < 55 5 5 5 5 5 < 555 <55555555 <555 < < <55 <5 <5 <5 <55 <5 < <5555 <55 < <55 < < 5 <555 < < 5 < < <55 < <5 < 555 <55555555 <5 <5 < 5 < < 55 <5 < 5 < < 5555555 < < 5 < < <5 < 555 < <555 < < 555555 <5 <5 <5 < < <5 <5555 <5 < 5 <5 < < 55 <5 < 5 < <5 <5 < <5 <5 <5 < d56M56! d55 d566�66666 d6 d6 d d 6 d d6 6 6 d6 6 d d ;666 d d 6 d d 666 d6 d6 d d666666 d d 6 d6 d6 d d 6" <6# <6$676%6+ <6&6'6)6( < < 6* < 6,646-616.606/ < < <6263 < < 65 <66 < < 686B696=6: <6;6< < <6>6@6? < < <6A < 6C6H6D6F <6E <6G < <6I6K6J < < <6L <6N6[6O 6P 6Q6V6R 6S 6T6U 6W 6X 6Y 6Z 6\6c 6] 6^ 6_ 6`6a 6b 6d 6e 6f6j6g 6h6i 6k 6l6o6m6n < <6p6q < 6s66t66u66v66w 6x6| 6y6z 6{ d 6} 6~ < 6 66 6  6  6 6 <6 <6 <6 <6 < 666 66 66 66 < 6 66 6 66 d66666666 d6 d 66 d d 6666 d d d66 d d66666 d d66 d d 66 d6 d6 d d 66666 d d6 d6 d d6 d6666 d6 d6 d d d666 d d 67.66 6 666666666 6 6 666 6 6 66666666 6 66 6 6 666 6 66 6666 6 66 6 6 6 66 66 < 6 7�777 77 777 77 7 7 7 7 77777 7 7 7 7 77&7777 7 7 77#7 7! 7" 7$7% 7'7* 7( 7) 7+ 7, 7- 7/70 7172 73 74 75 <778787797{7:7K7;7A7< 7=7> 7?7@ 7B7G 7C 7D7E 7F 7H 7I7J 7L7n7M 7N7k7O7Z7P7T7Q  7R7S   7U7V7Y7W7X    7[7e7\7b7]7_7^ 7`7a   7c 7d  7f 7g7i 7h 7j   7l  7m  7o7u 7p7q 7r  7s7t  d  7v 7w7x 7y  7z  7|77} 7~777 77 7 H7 77 7 H 777 7 77 7 7 H 77 77 7 7777777 777 7 7 7 7 7 7 77 777 777 77 d 7 7 7 7 77 7 7 7 7 7 7 7 77 7777 7 7 א7 א7 א7 א7 א א77 א א7777 א7 א א א7 א 7 7777777 א א א77 א א 777 א א7 א7 א א 7 77777777 7 א 7 א 77 7 א 77 א א77 7 7 א 77 א 7 א78777 א7 א 778� א א888 8 א 88 א8 88 8!8 8 8 8 8 8 88 8 8 8888  8 88 8 8 88 8 H 8"8b8# 8$84 <8%8&8* <8'8( 8) < <8+818,8/ 8- <8. < <80 < 8283 < 858< d86878988 d d d8:8; d d8=8O8>8H8?8B8@ d d8A d 8C8E8D d d 8F8G d d8I8J8L8K d d8M8N d d8P8[8Q8W8R8U8S8T d d8V d8X d8Y 8Z d8\8_8] d8^ d d d8`8a d d 8c 8d88e8s8f8k 8g8h8i  8j 8l8p8m8n 8o   8q 8r  8t88u8}8v8z 8w8x8y   8{ 8|  8~8 8 8  8 8  8888888   8 88 8  8  88 888   8 88   88888888  8  8888   8  888 8  8  89"888888 <8 888888 8 8 8888 88 888888 8 888 88 8888 888 8 8 888888 88 8 88 88 8 8 88888 8 8 8 8 88 88 8 <89 889 8989�88 8 88  99 9  9  9 99   9 9 9 9  9  99999   999  9 99 9  9  99 9 9 9! 9#9Z9$9+ 9%9& 9' 9( 9) 9* < <9,9-929. <9/ < <90 <91 <939E949>95999698 <97 < < 9:9< <9; < <9= <9?9B9@ < <9A < <9C <9D <9F9O9G9K9H9I < 9J <9L <9M9N < < 9P9U9Q9S9R < < <9T <9V9X <9W < <9Y < 9[9\9a 9]9^ 9_9` H9b9c 9d 9e 9f 9g 9h  Œ 9k9l k 9m 9n9o 9p 9q 9r9s 9t 9u 9v 9w9x 9y9z 9{9| h 9~99 s à9999 8 Z 9 9999 999 9 9 9999   9  9 999 9  99 9  99 r `999999 99 i9 i i9 i9 i99 i i9 i9 i9 i99 i9 i i99 i9 i i 9 s 7 y99999999 i9 999 9 99 9 s9 9 ƙ i9 9 9 999 š Ʒ9 9 ƙ 999 ` `9 i s s9 s9 9 s y Z9 Œ 9<+9;F9999 Ñ99 à99:9:9:X9:.99 99 F 9: 9:9 B99999 F9 F 9 9 ٜ 999 9 B $ 9999 9 79 99 iu :�::: : : B :: B iu iu: :: :: : : :::: F: F F: F : F : :: :: : ::%: : :! :" :# :$ Q :& :':* :( ٍ:) $:+ :,:- iu :/:< :0:1:; :2:3 :4 :5 :6 :7:8 Q :9:: Q F:=:I:>:C:? :@ :A :B iu F:D:E :F :G :H  :J:K :L :M:R:N =:O :P:Q   =:S :T :U:V :W  :Y:s:Z:i:[ B:\ B:] B:^ B:_:f:`:b:a  :c B :d :e B:g B:h B B:j B:k B:l F:m B:n B:o B:p F:q F:r F ٍ %:t::u::v: F:w:x B:y:| F:z B:{ ٍ ٜ:}::~: B F B F B 7:: B: B::: 7 7: 7 B B 7: B: B: B: B: B: :::: 7: B B: B B: F:: B: B: B: B F B:::: : :: :: ٜ: ٜ: ٜ:: ٜ:: ٜ ٜ ٜ: :::: ::: 7 7: 7:: 7 7:: 7 :: 7 : : : : : : ٍ: : ٍ :: B:: B:: B F B:: B: B: B F B B: B::: B: B: ٍ: B: ٍ: B ٍ: ٍ B::::: :: : ::: F: F: F: F: F F: F : : :: ::: : : : F: : : :: : :: : F:: : iu :;;�;;; F; F;; F F;; F F; F; F F; ; F; 7; F; F F 7;;;;; 5 ;;  ;; ; ; ; D ;; F F ; B; ;9;!;0;" F;# F;$ F;%;+;&;) ;' ;( F;* F F;,;- F =;. F;/ F ٍ Q F;1;2;7 F;3 F;4 F;5 F;6 ٍ F F;8 F ;: ;; ;< ;=;D;>;@;? F F;A F;B;C F B;E F;G;N;H;K;I;J y ;L;M ï > ;O;U;P;Q Z 7 ï;R;S ;T ;V;X;W  Ʒ y;Y;Z;;[;;\;| Œ;];^;w;_;d;` Œ;a Œ;b Œ Œ;c W Œ Œ;e;f Œ;g;p Œ;h Œ;i;j Œ;k;m Œ;l Œ ;n;o Œ   Œ Œ;q Œ;r;s Œ;t;v Œ;u Œ   Œ;x Œ;y Œ ;z Œ;{ 4l Œ;}; {;~; { {;; { {; {; {; {;;; {; { ; { {; {; {;; {;; {; {; {; {;; ~ { ~;;;;;; { ~ { ~;; { ~ { ~; {; { {; ~ {; Œ;; Œ;; Œ Œ; Œ; Œ;; Œ Œ;; Œ; Œ; Œ W Œ Œ; Œ; Œ; Œ ;;;;;; Œ; Œ; Œ;; Œ Œ; Œ { Œ; Œ; Œ; Œ; Œ;;; Œ; Œ;;  Œ; Œ ; Œ  Œ Œ;;; Œ;  Œ Œ;;; Œ;; Œ Œ;;;; Œ ;;; ;; Œ Œ ; ; Œ; Œ Œ;; Œ; Œ Œ ;< Œ;;; Œ;; Œ; Œ Œ l; Œ Œ; Œ;;; Œ; Œ; Œ; Œ;; Xc Œ Xc;; Œ; Œ; Œ Xc;;; Xc Xc;; Xc Xc Œ;<� Xc;;; Xc Œ Xc Œ Xc< Xc Œ< Œ<< Œ<< Œ< Œ< Œ< Œ Œ< Œ< Œ< Œ< ~ Œ Œ< Œ< Œ<<<#<<<<<<<< Œ \ \ Œ<< Œ \ \ Œ< Œ<< Œ \ \ Œ Œ< <!<" Œ \ Œ \<$ Œ<%<(<&<' Œ \ Œ \<)<* Œ \ Œ \<,<<-<<.<`</<L<0<F<1<4<2 ï <3  š<5<6 ҉ <7<A<8<<<9<: ï ï<; ï š<=<? ï<> L Z š<@ ï š<B<C  à à<D<E ï S<G<I<H Z ( <J<K Z ï ï<M<Y<N<R<O<P ̀ ̀<Q <S<X<T y c<U š<V š<W  š  ܹ<Z<^<[<]<\ W Ʒ s s  <_ s <a<m<b<j<c<f<d<e ` ˘ ï ï<g<h Od<i Od  <k<l   ̀<n<w<o<q<p ï <r<s ï k r<t<u i i<v i <x<{<y<z ï  <|<} <~<<< << Qy WS N r b 3<<<<<<<<<< L ï <<< Œ Œ< Œ<< Œ Œ<< Œ ~ Œ G s<< Ʒ< à << Œ ï <<<<<< Z c š<< ü< ï<< G i << r PB r<< < z Ʒ<< ѧ Œ ï<<<<<<<< ]m< ï< ï<<<  < <<< < < ï<  <<<< à <<  ï ï<<<<<< Z ï < ï s <<<<<< < < <  < <  <   ï < Z <><=<<<<<<<< [ `  ï< ^ ï<<<< Œ ï <<<<< ܹ< ܹ< ܹ K ܹ Z<< Z Z< 4{< Z 4{ Œ <=<<<< = ̀ s << ]m 3| <<=� ` < s======== == == ï Ʒ ï= =  r Z ï= ̀= ̀ ï ̀ ï ̀ G ï== ï=   =="==== r= ]= ï= >=== ï à= =! ` ï ï ˘=#=)=$=& =% ƨ ï='=( Z ï=*> ï=+=,=j=-=T=.=@=/ 2 =0=;=1 2 2 =2=3=8=4=6=5 2 2 <=7 2 2 < 2 =9=: 2 < 2 2 =< 2 == 2 =>=? 2 2 =A=F=B 2 =C 2 =D 2 2 =E < 2 =G=O=H 2 =I=L=J 2 2 =K 2 < 2 =M 2 =N < 2 =P 2 =Q 2 2 =R 2 =S < 2 =U=c=V 2 =W=\ 2 =X=Y 2 =Z 2 2 =[ 2 d=]=a 2 =^ 2 =_=` 2 d 2 =b 2 2 <=d 2 2 =e=f 2 2 =g 2 =h=i 2 < 2 =k==l=~=m=x=n 2 =o 2 =p=t =q=r=s 2 2 =u 2 =v=w < 2 < 2 <=y=z <={ <=| <=} < < ===== <= 2 = 2 2 ======== === 2 2 == = 2 = 2 ==== 2 2 == 2 ===== = 2 ==== 2 2 = = 2 == = = 2 = = 2 ==== 2 == 2 == 2 < 2 <====== < 2 < 2 2 = < 2 2 == 2 2 <= 2 2 == 2 = 2 < 2 = <============ 2 < 2 <= < 2 <=== < 2 <= < 2 <==== 2 < < 2 == <= < 2 < 2 ===== <== < 2 2 <= < <= 2 <=== <= 2 < 2 ==== <= < 2 2 <== 2 < 2 <===== = = 2 == === < 2 < = = 2 =>=> >� 2 > > 2 >> > 2 > > 2 > >> 8> > Œ \ Œ \ ï r>>0>>>>>>>> Ʒ ï G>> >> ï Œ>> s Œ s > >*>!># ï>" s x>$>%  >&>' >( >) >+>- `>, V 3m>.>/ ï ƨ>1>>2>;>3>6>4>5  ï y ï>7 ï>8 ѧ >9>:   ><>z>=  >>>?>_>@>J >A>B >C >D >E>F >G >H>I # >K H>L >M>S>N # #>O #>P>Q #>R # # >T #>U>Z>V # #>W>X # #>Y #>[ #>\ #>] # #>^ #>` >a>b>j>c >d>e #>f #>g #>h # #>i # >k # #>l>m>u #>n>o>r>p # #>q # >s # #>t # >v #>w #>x # #>y # >{>| s >} Œ>~ r Œ>>>>>>> ï>> >>> > >>> ; > > ł >> >> 65 >> > >> > 65 > >> > >>>  ï  >> ï>> ï> >  > >> > > >  > >>   > >B>Am>A>?M>?>>?>>>>>> G y r> ï Z >?>> ï >>>>>>> <> k>> š>> š š > >>> < <> < (> >> < >> 5>>>>> > 5 ?>> c A ʗ (>>>> B 5 B& >> 5  A A > >>> <>> > > > >   ( <> š > r> r>>>> r r> r> r>> r r> r> r>> r> r r r>> r r?� r? r?? r r?? r r? r? r ? ? ? ? ? ? ? ? # ï ??????? ? ї? ї ї? ї? ї? ї L ï?? à ï ? ?1?!?"  ƨ?# ?$ Ʒ Ʒ?% Ʒ?&?' Ʒ Ʒ?( Ʒ?) Ʒ?*?+ Ʒ Ʒ?,?- Ʒ?. Ʒ?/ Ʒ?0 Ʒ Ʒ?2?3 i?4?5  ?6 ?7?8 ?9 ?: ?; ?<?= : ???F?@?C?A?B ƨ Œ ï ?D?E Z 7?G?J?H?I ` ƙ ï ?K?L Z ` Ʒ?N@?O??P??Q?m?R?[?S?X?T?W ?U ?V ü ?Y?Z ï `?\?g?]?f?^ ?_?` Ñ?a?d?b?c X 4??e ï 6 ï Œ ?h?l G?i?j?k ï s ?n?}?o?{?p?y ï?q?r?v?s <?t?u Ku < < Ku <?w?x < Ku < ?z  ?| ׭?~???  ï ̀ G?? ? ?? ? U?? ?  % ????????   ̀ ƙ? ï?? ï?  Z Ʒ? ?????? r Z? r? r?? r r ï?? ? ? ?? ? ? ? ? ? ? ? א ???? ï ? i???? š? š? š (?  (? š ??? ?? < ????????? ??? ? ??? ? ? < ï ???? > ï ޳?? ï Z k??????  s L ҉?? ց ׭ Z ?????? s ? š? š? š? š š?? š? š š? š? š?? š  š ƨ ?? Ʒ Œ? ?? Œ :y ?@?@?@?? ï W? ï?@� ű ł @@ ï ï [@ ƨ ҉@@ @@  ƙ G@ @ ï@ ï Z@ @@ s G r@@@@@@ ï  Z @ ï  s@@@ ï i ï@@ ï @  @@q@ @F@!@1@"@)@#@&@$@%  ƙ @'@( ï  ï@*@-@+@, ï ҉ ï@.@/  s@0 @2@?@3@6@4@5 ï r ï@7@>@8 Œ@9@= ï@:@;@< N ï ï 3 s ï s @@@C@A@B  Œ @D@E  >@G@X@H@M@I@J Ʒ y@K @L ï [ ї@N@U@O@T ï@P ï@Q ï@R@S ƙ ƙ ï ï@V Œ@W  s :y@Y@_@Z@]@[@\ Œ Z ï @^ 2 @`@c@a@b s ï s@d@e r i @f ï@g@h ï ï@i ï@j@k@o ï@l@m ï ï@n 3 ï@p ï H ï@r@@s@@t@z@u@w@v ` ï r@x@y  Z ш@{@}@| ï š@~@ Z ï @@@ ï Q o @@@@@@ mj y @@@ @ @ @@ @@ @ @@@ @ @ ,M@ @@ b w Z ï@@@@ ï  6b s @ s `@@@@@@ s@  ï@@  3| ï@@@@ Ʒ  ï ï r@@@@@@@@@ H@ H@@@@ H@@@@@ H@ H@ H@ H@ H H@@@ H H@@ H H H@ H@@@ H@@@ H H H @ H H@@ H H@ H@@@ H@ H@ H H@ H@ H@ H@ H@@ H H@@ H@ H@@ H H@ H@@ H H@@ H H@@ H@ H H@ H r @ i@@@ ` s@A�@@@@@ 4@ x x@@ x x@ x@@ x x@ x > Z  `AA ` ` N AAAj ZAA ZA Z ZA A A\A ZA ZA ZAA ZA ZAA ZA Z ZAAA ZA ZAA Z F ZA Z Z F ZAA ZAAAAA/AA&A A#A!A" Z F Z FA$A% Z F Z FA'A*A(A) Z F Z FA+A, Z F ZA- FA. Z FA0A7A1A4A2A3 Z F Z FA5A6 Z F Z FA8A;A9A: Z F Z FA<A= Z F ZA>A?A@ Z F F ZABASACAJADAGAEAF Z F Z FAHAI Z F Z FAKAPALAO ZAMAN F F Z Z FAQAR Z F Z FAT ZAU ZAVAY ZAW FAX Z F ZAZA[ Z F Z ZA]A^ ZA_ ZA` ZAa Z ZAbAc Z ZAdAe Z ZAf ZAg ZAhAi Z Z AkAl Z  AnBmAoArApAq Z s AsAAtAvAu 7 Z sAw kAxAyAAz A{  A|A} A~ A AA  A AA   $AAAAAAAAAAAA Œ sAA y ï Z ïAAAA ˘ ̀ 2 A s ïAAAA ƙA ˘AA ïA ï ïAAAA Œ ïA AAAAAAAA ï ű kAA >AAAA ` rAAA 4N ï A .A 6 AA ï  rAAAAA ï ŒA 3mAA Z r ƨAA `A AAA  ̀ ̀AA 3| ̀ ïAA r \} AB;AB/AAAAAA AAAA A A A AAAAA 6 j 6& AA ; 8 65 A AAA łA łAAA ~ AA y ] PP ;A ;A MAAA  ׁ s zAA Œ Z A 7A 7AA 7 7AA 7 7A 7A 7ABAA rB� B B B B B 6 BBBBB BB Œ B B B B 5a 5a B B B BB BB B X BB ŒBB m B ? BB.B B&B!  B"B# B$ B%  9  B' B(B)  B* B+B, B-  {  ˘B0B5B1B3 ZB2 s  B4 y B6B8 ŒB7 y B9B: G ZB<BGB=BBB>BAB?B@ ï ï Œ BCBE ïBD Œ G BF GBHBZBIBWBJBVBK ïBL BM BN BO BPBQBUBRBS ց j BT 65 ; ï BXBY  r 7B[BjB\Bi ïB]B^  B_ B` BaBb  Bc BdBe Bf Bg Bh    BkBl Ʒ ï N i BnBo sBp s sBqBr sBs s sBt sBu sBv sBwBx s sByBz s sB{B| s sB}B~ sB sB s sB s BC" BBC BBBBBBBB GBBBBBB ƙ ï ïB ƙBBB ܹB Z ƙ ˘B Ʒ rBBBB ƷB Ʒ i ïB ïB ï ƷB ï iBBB Ʒ ïB xBB x sBBB J L x BBBB ïBB   ˘ üBB  rB Ʒ BBBBB ïB ï ` ƷBBBB ï r  ï BB ïB ïB B Ʒ  7 yBBBBBB Ʒ 7 BB ŒB BB B B B BB   BBB B   tB  BB B   BCBB ŒB BBBBB BB B B B B à R àB BB  sB  yBB  BCBBB s B B BB  BB B   B BB B B C� C CC CC CC s C y C CC C ï C GC ƙC ƙ ƙCC ƙ 5%CC ƙ ƙC 5% ƙCCCC ZC zC zC zC Ʒ ŒC C! 7 Ʒ yC#CC$CC%C~C&C)C'C( ]= k Z ïC*C+ ƙ C,C4 C-C. C/ C0 C1 C2C3 C5CwC6CFC7 àC8CDC9 àC: à àC; C<C= àC> àC? à àC@CA àCB à àCC 3 àCE à  àCGCe šCHCICPCJ à àCK àCL àCMCN à àCO à CQCSCR à à 3 àCTCUC]CV àCW àCX àCY àCZ àC[ àC\ à àC^ àC_ àC` àCa àCb àCc àCd à àCfCmCgCjCh àCi à à Ck àCl 3  àCnCtCoCrCpCq à 3 àCs à  àCuCv 3 à 3Cx àCy àCz àC{C}C| à 3 à  àC C CCCCCC ïC Z rCC  ï ïCCCC s ï Œ ZCC ï s ïCCCCCC s ï rC ïCC 7CC 7C 7  KC ~ 7CCCC ZCC  Œ ïCCCCCCCC s CC C C C CC C CC C C CC C ;) CC Ʒ ï ̀ ƨC ƨCC ƨC ƨC ƨC ƨC ƨ ƨ CCCCC C ŒC Œ ŒC ŒC ŒCCC \ Œ Œ M à ƷCC Z  ï ŒCCC 7C 7CC 7C 7C 7C 7 7CC 7C 7 7C , 7CDC ZC ZCCC bCCC 3CC bCC b 3 bC b bC b 3C +C + +CC + Z +CCC 3C 3 3CC 3C 3 3 ZCCC W WC WCC W U WD� W WDD WD W U WDD ZDDD ZDD D ZD Z Z ZD ZD ZDDDD Z ZDD Z ZD ZD ZD ZDD ZD ZD Z Z Z ZD ZDD ZD Z ZD! ZD"D# Z ZD$ ZD% ZD&D' ZD( ZD) ZD* ZD+ ZD, Z Z D.I:D/ED0DF D1D2 s D3 D4D5 D6 D7D8 D9 D:D; D<D= D> D? D@DA DB DC DD DE # DGDPDHDKDIDJ Z  ƙDLDODMDN à s s DQDDRDDSDDTDwDUDfDVDeDW DX ŒDYD] ŒDZ ŒD[ ŒD\ Œ ~D^ ŒD_ ŒD` ŒDa ŒDb Œ ŒDcDd Œ \ Œ Z ïDgDh Z DiDjDvDk սDlDpDmDn š ï šDo ï šDqDtDrDs š ï ï Du  ; s `DxDDyDz Z D{D|D~D} D DDD ŒDDD ŒDDD ŒD ŒD Œ ŒDD Œ ŒD ŒD Œ MDD ŒD ŒD ŒD ŒDD Œ ŒD Œ MD ŒD ŒD Œ M ŒDD ŒDD ŒD ŒD Œ ŒD ŒDD ŒD Œ ~ ŒD ŒD Œ ŒDD Œ ŒD ŒDD ŒD Œ ŒD M Œ r `DDDDDD r ŒD սD սD ս DD Z x [ DDDDD LD LDDD ŒDDD k Œ Œ kDDDDDDD <DD DD D D XD DD D H dDD DDDD .D <D 6 à VDD x i s DEDEaDE(DE"DD ïD `DD DD D DDDD D D D D DD gDD ï  D DEDED DE�EE E E E E E E EE E E EE E E H E E E E EE E E E <E E E E E E! E#E&E$E% UZ r E' s E)E3E*E0E+E/ ïE,E- L LE. L K :y ïE1E2 ï 3m r ïE4EWE5EVE6 ̀E7EOE8EL =E9E:EC =E;E< =E= = =E>E? = =E@EA = =EB ܫ = =ED =EEEF =EG =EH = =EI =EJ =EK ܫ = =EM =EN > .EPER EQ ܫ ESETEU ܫ ܫ Ʒ EXEY Œ sEZ ŒE[E\E` xE]E^E_ Z 5 à 5 EbEEcEnEdEf ïEe y EgEmEh Ei 8 8Ej 8EkEl 8 U< 8 L EoEEpEEq yEr ܹEs ܹEt ܹ ܹEuEv ܹEwEEx KEy KEzE~E{ K KE|E} K K ܹE K KEE K K ܹEEE KE KE KE K KE K ܹE KE K KEE K KE ܹ KE Œ ï 4!EE r ï E E E E L xEEEEEEE E  ŒE E šE E š š EE ҉ EE xEE xEEE Z x 4 xE xEE x ( xE LE LE LEE LE LE L LE L xEEEE s x ˘EE ï sE ˘ rE Z ZE ZE Z +EFEFEFEEEEEEEE [ E ZEEEEEEEE <EE š š E E š  < šE < E EE šE šE š < E E E š EEE  > GEEEE V EE y  EFEEEEEE  Œ EE ƙ x ï սEFEE ïEE šE š š cE E F� F F F #FF Ʒ  Ʒ FFF F F F ï ïF F G FFFF Z r ï FF s 7 Ʒ iFFFFSFF6FF!FFFF ï FF r G  F"F%F#F$ Ʒ sF&F' Œ sF( ƨ F)F*F0F+F.F, 1 1F- i 1F/ y i y yF1F2F4F3 Y Y y iF5 Y yF7FHF8FEF9FDF: ïF;F? xF< xF=F> x y F@ xFA xFBFC m x y 7FFFG   ƷFIFPFJ ïFK y FL FM FN FO  FQFR x > ҉ iFTFbFUF[FVFYFWFX ï ` 6b yFZ  F\F_F]F^ s F`Fa ï ï FcF|FdFyFeFrFf G FgFhFoFi Fj Fk  Fl Fm Fn H Fp  Fq  H ƨFsFt FuFv Fw Fx 6 FzF{  r F}FF~F Z  _ ïFF ƨ  ï FFF kF FF F FF F F ,l FFF FFFF Ʒ  ïFFFFF FFFF  s ZF VF VFF 4/ à 3 àFFFF VFF F FFF F F F FFF d  2 F F < H VF F i FFFFF FF iF àFF àF àF àFFFFFF à 3 àFF 3 b FFFF à àFF N à F F V i FFFF FFFFF  HFF א X < dF FFF s FF X H FF V FF FF 4/ à 4/ àFF y à ҉F sFFFF  Ʒ c ïF ŒF FFF i s i `F ZFHFHgFGoFGFG FG FGG� G G G VV GG G G iG G G sG GG ï Œ V GG"GGGG ׭ W GG GG G G GG G jG G! ï y ïG#G&G$G% ï  G'Gn G(G)GOG*G6 G+G, G- G. G/G0 G1 G2 G3 G4G5 O G7GAG8 G9 G: G; G<G= G> G? G@ .p 02GB GC GD GE GF GGGH GIGLGJGK | u LGMGN GPG_ GQGR GS GT GU GV GWGX GYG\GZG[ q N XG]G^ � R 0AG` Ga GbGc Gd Ge GfGg GhGkGiGj    GlGm s 0 (  GpHGqGGrGGsGGtG (GuGvGGw ZGx ZGy Z GzG{ G| G} G~ G G Z G ZG Z Z  G GG G V ï ŒGG ï Œ y GGGG ҉ GGGGGG bG bG bG b bGG bG b bG bGG b b WG 3 3G 3GG 3G 3G 3G 3G 3G 3G 3 3 WGGGGGGG +G + +G +G +G +GG + +G W + +GG +G +G + +GG + +GG + W +G bG b bG bG bG bGG b bGG b b WG bGGG bG bG b bG bG bGG bG b W bG b bG bG bGG b bGG b bG W bGHGGGG GG G j G G G GGGGG  GGG GG G  tI G G  G GG G G   oG G  GG G   o5G H�  H HH H  Tg   ŒHH,HH)H H(H H HH ïH H ïH ïHHH ïH ïH ïH ï DzHHH ïH ï Dz ï ïH ïH ïH ï Dz ï oHH"H ïH ïH! ï ï oH#H&H$H% ï * ï oH' ï ï o H*H+ ï H-HDH.H/ y H0 ï H1H2H9 H3H4 H5 H6 H7H8 H: H; H<H= H> H? H@ HAHB HC # HEHeHF 8HGH\HHHRHIHL HJHK ց HMHN HOHP HQ 65 HSHZHT HU HV HW HXHY ł H[ ł H] H^ H_ H` Ha Hb HcHd 65 Hf űHhHwHiHlHjHk ï ̀  ZHmHvHn ïHo rHp rHq rHr r rHs rHt rHu r 8 HxHHyHz  ï VH{H|HH} H~ H HH ÑH LHH ÑH Ñ L Ñ Ñ HHH Ñ HH Ñ ÑHHH ÑH ÑH Ñ H Ñ ÑH ÑHH Ñ Ñ ]HH HHHHHH H H H * H HH H b HH HHH H H H g  HI*HHHHHHHHH ï rHH r rHH rH rH rH rH r rH rH rHH r rH r  ƙ HH r ï Œ 3|HHHHH H ZH ZH ZH ZH Z , Z ƙH H HHH H HH HH H  H H HH H iHH H HH H H  H sH sHH s sH sHH s s  HH H H  s HHHHHH ш 7 H V sHI'HI ŒHHIH U UH UH FI� F UII F %  U ƷIIII II I I P3 I I  IIII II  I I II I I I I II M I ց ցI I! ցI" ց ցI#I$ ցI%I&  W I(I)  N s I+I.I,I- Z  I/I9 I0 `I1I2 ` `I3I4 `I5 ` `I6I7I8 ` ƨ I;II<IRI= ƷI>I? ƷI@ ƷIA Ʒ ƷIBIC ƷID ƷIE ƷIF ƷIG ƷIH Ʒ ƷIIIJ Ʒ ƷIKIL ƷIM Ʒ ƷIN ƷIOIP Ʒ ƷIQ ƷISI{ITIgIUIfIVIX IW ƨ IY IZIaI[I^I\I]  ï Ʒ ZI_I` 8  ŒIbIdIc ï ï rIe ï N ï i  IhIi iIj iIk iIl iIm i iInIo i iIpIq iIr iIs i iIt iIuIv i iIw iIx iIyIz i i I|II}II~IIIII 8 I IIIIII ï I x I ƙI ƙ KIII II z ZIIII x  II i ïI  ïII   IIII 7 ҉II ï s ƙ I y ÑII ZI šIII I yI ZII šI š  I š  š `III I II ;) I I I II II I I I I I I I 8 I I I II I I I I I ց ILIKVIJIIIIII  à VII k 7 IJaIJMIJIIIIIIII Ñ  ïII I W Dz IIII iII s ï IIIIII I Ʒ ƨ ZII Z I łIJ�II  r ZI III ̀ ï ZJJ Ʒ ï ï JJ>JJ7JJ1JJ0J ŒJ JJ J HJ HJ HJ J HJJJ H HJJ H HJJ HJJ H < HJ H HJ H dJ H J J J H J J! d J"J#J' J$J%J&  א J( J) J*J- J+ J, J.J/  J2J3 ïJ4 sJ5 sJ6 s J8J;J9J:  J<J= s iJ?JFJ@JCJAJB   GJDJE s JGJJJHJI  I ïJKJL s Z ޳JNJ^JOJ]JP JQJSJR  JTJU dJVJWJZJXJY 7 Z ïJ[J\  7 J_J` V ï sJbJJcJJdJp ŒJeJfJk ŒJg ŒJh ŒJi ŒJj Œ  ŒJlJm ŒJn ŒJo Œ Œ JqJJrJJs ŒJt Œ ŒJuJv Œ ŒJwJx Œ ŒJy ŒJzJ{ ŒJ| ŒJ} ŒJ~ Œ \ ŒJ Œ ŒJJ Œ ŒJ Œ WJJ ŒJ ŒJ ŒJJ Œ Œ  ŒJ ŒJJ ŒJ Œ Œ {J Z JJJJJJJJJJ Œ ï x JJ ƷJ Ʒ  ïJJJJ J Ʒ y JJJJJJ Ʒ Z ƷJ Ʒ ï ƷJJJJ Ʒ š  ƷJJ  ѧJJJJJJJJ [ Z \JJ ï Ʒ ï JJJJJJ ï ü   y JJ ƷJ O J i xJJ š šJJJJ ƷJ x ïJJ Ʒ ƙ x JJ ïJ JJ J xJJJ J J J sJ sJ JJ J ZJKJJJJJJ Z Ʒ k JJJ ZJJ ŒJJJJ Œ ŒJ ŒJJ ŒJ Œ ŒJJ Œ ŒJ ~ Œ ŒJ M Œ ŒJ ŒJ ŒJJ Œ Œ ~ Ʒ JJJ ïJK� sK ` K KK K K K Q&K KK K K K r x KK ïK K K K K KK  KK K  K K KK   s ïKK3K K!  ŒK"K#K+K$K'K%K& ` Ʒ ս K(K) 7 ƨK* L xK,K1K-K. ï K/K0 . . MK2 < ZK4KFK5K8K6K7 ï Ʒ K9 K:K; K< K= K> K? K@KA KB KC KD KE H iKGKH KI KJ KKKLKU KM KNKO KPKQ KR KS KT 4/ 3KWKKXKn KYKZK[ K\KhK]K`K^K_ Œ > ïKaKb  ƙKcKd ï ïKe ֐KfKg ï ֐ ïKiKkKj ï ï ZKlKm Z  rKoKKpKKqKKrKs L Ʒ ˘KtKuK ŒKvKwKz ŒKxKy Œ Xc ŒK{K} ŒK| Œ ŒK~ Œ KK ŒKK Œ ŒK \ ŒK Œ ŒK ŒK ŒKKK ZKK K KK KK ïKKKK KK ï KKKKKKK  sK xKK KKK   ]K yK y P`KK Z ï  KKKK WD Œ ï KK ï ƨK ï ł KKKKKKK Œ ïK ïK ïK ïKKK 6 ( QQ  KK ` Z K KK  K K KK  K K KK  KK  K tI KKKK k ŒK ïK KK z s zKK s Ʒ KLdKLCKLKKKKK S SKKK SKKK SK S S K S KK SK SKK S SK S ŒK S SKK S S ŒKKKKK S ŒK S ŒK S ŒKK Œ Œ SKL K ŒKL�LL ŒL ŒL ŒL L Œ ŒLL ŒL Œ ŒL L Œ ŒL L ŒL ŒL Œ ŒL Œ S ŒLL ŒL ŒL ŒL ŒL ŒL ŒL ŒL ŒL ŒL ŒL ŒL Œ S ŒL L7L!L%L"L# S Œ ŒL$ Œ SL&L,L'L( Œ ŒL) ŒL* ŒL+ ŒL-L1L. Œ ŒL/ ŒL0 Œ L2 SL3L5 ŒL4 ŒL6 S Œ SL8LAL9 SL: SL; S SL<L= S SL> SL?L@ S Œ SLB S ŒLDL`LELLLFLHLG S SLI ŒLJ ŒLK Œ Œ SLMLQLN S ŒLO ŒLP S Œ ŒLRLS S SLT SLULV SLW S SLXLY SLZ SL[ SL\ SL] S SL^ SL_ S Œ ŒLaLb ŒLc Œ Œ SLeLxLfLoLgLh S ŒLiLkLj Œ S ŒLl Œ ŒLm ŒLn S ŒLpLq Œ SLrLt ŒLs Œ SLu ŒLv Œ ŒLw Œ LyLLzLL{L| Œ SL} Œ SL~ ŒLL Œ ŒL S ŒLL S Œ ŒL S ŒLLLL ŒL ŒLL ŒLL ŒL ŒL ŒL ŒLL Œ ŒL ŒLL ŒL ŒL Œ S Œ ŒLL ŒL ŒL ŒL Œ ŒL ŒLL Œ ŒL ŒL S Œ ŒL Œ SLL SLL Œ ŒL Œ S Œ LM#LLL Z ZL ZL W ZLLLLLL rLL ŒL ŒL Œ ŒLL ŒL ŒL ŒL ~ Œ ~ sLL z Z LLLLLLLLLL ŒLL s LL ïLL 7L 7L 7 LL 5 ïLLLL L L L LL L LL L L L L L H LLLLLL 2 Œ ƷLL ü LLLL ï LL L x LL ï Œ ïLM LMLLLL s ï ï ƷLML ï M�M M j ïMMMM ï sM M i N ï M MM MM ï ï MMMMM M M  M o5 M xM xMM x D D x ï MM MM Œ  M!M" k kM$MM%MM&M' s ŒM(MvM)M* x M+ ïM,MRM-MDM.M8M/M5M0M2 M1 S @ M3M4 @ : GM6 M7 :>M9M>M:M< SM; S c 'M= s M?MBM@MA S S SMC SMEMLMF MGMJMHMI  @ MK @ MMMN š 'MOMP S MQ S SMSMhMTM^MUM[MVMYMWMX S @ 3MZ àM\ @ M] à M_MdM`Mb àMa à NMc N @ MeMfMg SMiMqMjMm @ Mk 'Ml ' S @ MnMoMp S SMr Ms MtMu @  @ MwMx Ʒ MyMz M{MM|MM} M~ MM M < M MMM M M M MMM M MM H d <M M M M M M א M MM M M MM M MMM MMMM  Œ ï zMM ï Ʒ ïM ŒMMMMMM r k M ŒMM Œ ŒM ŒMM ŒM Œ ŒM ŒM ŒM ŒM ŒM ŒMM Œ ŒM M ŒMMM ïMM y ƷMM ƷMMMMMM ï ï ï ïM ï M yMMMMMM  Z ŒM Ʒ MM ïM MM Ʒ M ZMMMM V M MM M M MM M  M M M M MM ï  M]MVMTMTYMSMPMN6M ZMN GMMNMN GMM G GMM M N�N NN N N N N G GN N GN N GN GN OU GN GN G GNN G GN GN GN G OUNNN G GN GNN G GN G GN N GN! GN" GN#N1N$ G GN% GN&N' GN( GN) GN* GN+ GN, GN- GN. GN/ G GN0 OU GN2 GN3 G GN4N5 G G N7N9 N8 Ʒ N:N;PN<ON=OEN>NN?NRN@NJNA H HNBNC HNDNH HNENF HNG H H HNI H NK HNL HNM HNN H HNO HNPNQ H H dNSNNTNU H NVNzNWN`NXN\NYNZ < H <N[ H < <N]N^ <N_ < H <NaNlNbNeNc < <Nd H <NfNiNg <Nh < < HNj < <Nk H <NmNq <NnNo < <Np < HNrNuNs <Nt < H <NvNxNw < H <Ny < < HN{NN| N}NN~ N N N N HNNNNN N N HNN NNN H HN N HNNNN N N H N N H N N NN HN HN H HNNNNNNNNN < HNN H < < HNNNN < H H < <N H <N <NNN < < H <N H <NN <NNNNN H < < H <N < H <NN <N < <N < HNNNN HNNN H NNNNNNN NNN H H N N HNNNN N HNN H H NN N H N HNNNNNNN H N H NNN H HN HNNN N HNN H H HN HN HNN HN H HNNN H HNO HN HN HNO� H HOO H H < HOOO HOOOOO O O O H O OOO H O H OOO O O H OOO O O H O H OO O2O!O)O"O% HO# HO$ H HO&O'O( H א O*O/O+O-O, H O. H O0O1 HO3O<O4O7 O5 HO6 HO8O;O9O: < HO=OBO>O@ O? OA H OC OD OFOOGOOHOUOIOS HOJ HOK <OLOMOP <ON <OO < <OQ <OR < < HOT H OVOOWOj HOXOYObOZO]O[ O\ H O^O` O_ H Oa H OcOfOd Oe HOg Oh Oi HOk HOlO~OmOq OnOo Op HOrOxOsOu Ot H OvOw H H OyO|OzO{ H H O} H OOOOO O H O OO H H O OOO H H O HO <OOOO OOO H H O OO H OO O O HO O HO HOO HO HO HOO H HO HO HO d H HOO O OO O < HOOO HO HOO H HOO H HO HO H HOO H HOO H HOO H HO d HOP OOOO HO HO HO HOO H HO HOO H H OO HOO H H O HO HO H HO HO HO HO H HO HOO HOPO HOOOOOO O O H OOO H HOO OO H O OO H O H OOOOO OO H H OO HOOO O H P�PPP H HP H PP P P P P P0P P HP HPP HP H HPP H HP HP < HPP'PP P HP H HPP HP H HP HP HP! H HP"P# HP$ H HP% HP& H HP(P) H HP*P+ HP, HP-P/ HP. H H P1P=P2P: HP3P4 HP5 H HP6 HP7 HP8P9 H H P; H HP< HP>PA HP?P@ H H PB HPCPo HPDPEPZPFPOPGPLPHPJPI < < HPK < H <PM < <PN < HPPPUPQPS <PR < HPT < < HPVPX <PW H <PY < H <P[PfP\PaP]P^ < HP_P` < H H <PbPdPc < HPe < < HPgPmPhPkPiPj H < H <Pl < < <Pn < HPp HPqPw PrPsPuPt H Pv H PxP~PyP|PzP{ H H HP} H PP HP H P H H PPPP P P P P PRPR{PRUPPPP 9 ˘P r PP  P PP  PP P  tI PRT ïPPPPPPPPPP PPP P P א PP PP א א P P א אP PPPP PPP א P א P P א P P א PPP P PP PPP P P א P P P א PPPPPPP P P P P PPP PP P P P P P PP P P א PQPQMPQ PPPPPPP <P P <P < < PPPPP < <P < <PP <P < <P <PQPQQ� <Q < < QQQ < < <Q <QQ Q Q Q < <Q <QQQ < <Q < < QQ6QQ$QQQQQQ Q  Q Q  QQ!Q  Q Q"  Q#  Q%Q+Q& Q'Q) Q(  Q*   Q,Q2Q-Q0Q.Q/  Q1   Q3Q4Q5  Q7Q@ Q8Q9Q< Q: Q;  Q=Q>Q? QAQHQBQE QC QD QF QG QI QJ QKQL QNQmQOQeQPQUQQ QRQS QT QVQZ QW QXQY Q[Q`Q\Q^Q] Q_ QaQc Qb Qd Qf Qg QhQiQk Qj Ql QnQQoQQpQwQqQt Qr Qs QuQv QxQ| QyQzQ{ Q}QQ~ Q QQQQQ QQ QQQ Q QQQQQ Q Q Q QQQQQQ Q QQ Q Q QQQQ Q QQQ Q QQQQQ Q QQQ QQ QQ Q QQQ Q QR4QQQQQQQQQQQ Q Q Q QQ QQ QQ QQ Q Q Q Q QQQQQ QQQ QQQ Q Q Q Q Q Q QRQQQQQQ Q Q Q QQQQQQ Q Q QQ QRQRQ R� R R RR RR RR R R R R RR"RRRRR < <R < <RR < < RRRR <R < RR < <R < <R! <R#R-R$R( <R%R&R' < < R)R+ <R* <R, < < R.R2R/ <R0R1 < <R3 <R5 R6RDR7R>R8R;R9R: ; d ; dR< d dR= d ;R? ;R@RA d RB d dRC d ;RERORFRIRGRH RJRL RK RMRN RPRQ RR RS y RVRkRWRj ïRXRYRbRZR_R[R] sR\ 6 R^ . א 6R`Ra H RcRfRdRe XRgRh 6 HRi < ƨ RlRz 7Rm RnRo Rp Rq RrRs Rt Ru Rv RwRx Ry ł Œ ïR|RR}RR~R ш ш ïR s RRRR r RRR RR ŒR ŒRR ŒR Œ ŒRR ŒR Œ ŒRRRR Œ ŒR l RRRR Œ ~ M R Œ ŒR ŒRRRRRR ŒRR Œ ŒRR ŒR Œ ŒR ŒR ~ ŒRRR Œ ŒR ŒRR Œ ŒR ŒR \ ŒR ŒR ŒR Œ ŒRR Œ ŒR Œ ~ ŒRR ŒR Œ ŒR ~ ŒR Œ ŒRR ŒR ŒR ŒR Œ ŒR ŒRR Œ Œ ~ RRRRRRRR  :y yRR R R R R R RR RR R R R R  RRRR GRRR łR RR ł ï rRR RRRRR ï ! ł xRR s G RRR ; O O ; x ïRSRSRS xRRR :yR :yRR :y :y : :yR :yR :yRS� :y :yS :yS :yS :yS :ySS :yS :y : :yS S ZS ZS Z ZS Z SS ï ï ҉SSSS ï ҉SS Œ Ʒ k SSSSSS,SS+ SS sS sS sS! sS" sS#S' sS$ sS% sS& sS( s sS) sS* s S-S< ZS.S/ Z ZS0S1 Z ZS2S3 ZS4 Z ZS5S6 ZS7 ZS8 ZS9 Z ZS: ZS; ZS=SWS>SGS?SDS@SCSA ƷSB y ï > sSESF Ʒ Ʒ SHSRSISQSJ ySK SLSOSMSN U ' . .SP ' . Ʒ ïSSSVST Ʒ SU ł  xSXS}SYSgSZ ZS[ S\ S] S^ S_ S` Sa Sb Sc Sd Se Sf  t  Sh SiSj SkSm Sl Sn SoSuSp Sq Sr Ss St HSv Sw Sx Sy SzS{ S| S~SSSSS ï š SSSS A  S A A  ƷS SSS SS ս Ʒ S ï SSSSSSSS x ƷSS Ʒ ƷSS ƷS Ʒ ƷS ƷSS ƷS ƷS ƷS Ʒ ƷS ƷSS Ʒ P ƷS SS S SS S S 6 SS SSSS % S %SS ï r xSSS ƨ SS ˘SS `SSSSS ï ïS ƙ ïSSS ï ïS ƙ ïS ï ï ƙSSS ï ïS ï ƙSSSS ïS ï ƙS ï 8 ïSSS ï K ƙS ï ï ƙSTFSS yS >SSS ƨ ï S ï ST.SSSS > ï ySS y S ïSTST SS S t SS S S  S SS SS S S S S S STSSSS   T�T  TT  T TT  TT  T TT  T T T T  TT TTT T  TTT  T  T  T  TT'T T$T! T"T#   T%T&  , T(T+T) T*   T,  T-  T/TCT0TBT1 NT2T9T3T6T4T5 ƨ ï ï ƨT7T8 ï ł ïT:T?T;T> dT<T= ï ï ּ  ïT@TA L ï ï Z x ïTDTE Œ Z  TG TH TI TJTK TLTM TN TO TP TQ TR TSTT TU TV TWTX łTZTsT[To T\T] T^ T_  T` Ta Tb Tc TdTe  Tf Tg Th Ti TjTk Tl Tm  Tn  o TpTqTr k àTtTv ZTu  àTw TxTy TzTT{ T| T} T~  TTT TT TT T  T  T TT  TTTTT 7TTTTTTTT TT T T T T T 6 TTT T TT T TT j j TTT ïT ï ïT ïT ïT ïT ïT ּ ïTT x Ʒ 3| ï y TT ïTTTTT Ʒ y  ZT z Z Ʒ GT T TTTTT ցTT ;)TT ;)T jTT jT T T ց TTTT T T TTT T ց T T ցTTT T TT TT ց ցTT T TT T T T ց ցTT ց ցT ցT ց j yT Œ sTUTTTT G  à TUTUTUT ƙT T TT T T T TU� UU U F ZUUUDUU UU HU H H U U#U UU U U U UU U U U U s U UU UU U U U U! U" H U$U6U%U0U&U+ U'U(U* U) < < U,U- U. U/ U1 U2 U3U4 U5 U7U> U8 U9 U: U; U<U= < U? #U@UA UB UC UEUyUFU_ UGUHUQ UI UJUKUP ULUM UNUO H H UR USUTU[ UUUV UW UX UYUZ < U\ U]U^ <U` UaUbUk UcUd UeUf UgUh UiUj X Ul UmUn Uo UpUqUtUr Us HUuUw Uv H Ux H UzUU{UU| U} U~ U U UU U U UU U UU U U H U UU HU HU HU HUUU HU H U U HU HU H H H UUU yUUUU Ʒ š Ʒ üUU iU ƷUU ƙ s ï  ҉ UUUU G ï UU iUU xUUU xU x xU U xUUU xU x d mU xU x s xU U Z ƙUUU ƙUUU ƙ 8U ƙ ƙ U ƙ ƙUUU 8 ƙ 8 ƙUVKUUUUUUUUU U U U U U s ̀U  ` UUUUU rUUU ï c V x ïUU Œ ƙ y UUUUUU ï r  ŒUUU ˘UU U UU U UU U U U U U U  U UU U V�VVV VVVVV 8 d ŒVV V d V VV VV V Œ s V r VVVV 2 ZVVV  ZV ZV Z  i VVDV ƙVV,VV"V V šV! š š V8V#V(V$V&V% ƙ V' ƙ V) ƙV*V+ t  V-V1V.V/ š ƙ šV0  ƙV2V=V3V;V4V: PV5 6V6 6V7V8V9 6 V V 6 8; VtV< ƙ V>VAV?V@ ƙ ƨ ƙ šVBVC ƙ ޕ ƙVE sVF yVG y yVH yVI yVJ 6 y VLVMVnVNVkVOVf xVPVQVZVRVUVSVT WS ï iVVVW ƨ c kVXVY 8 V[VaV\V] à V^ V_V` V ш VbVeVc ˘Vd Z F Z Vg Vh ï ïVi ïVj ï ̀VlVm  ï s VoVVpVt zVqVrVs   Vu ïVvVVwVVxV~VyV|VzV{ s sV} s s VV GV GV G s VV sVVV  + ;VVVV K [ s kVV { VVVVVVVV GV VVVV  * : IVV G Y iVVV : : s :VV s y sVV ѧ i W VYVWVWVW VVVVVVVVV Œ V VVVVV d V ƨ ƨ šVVVV ƨ  V üVV Œ ïVV ( c kVVV `V ƙ ƙV ƙV ƙVV ƙ ƙVV ƙV ƙ ƙV ƙVV ƙV ƙ ƙV ƙ VGV !V !VV ! !V ! VVVVV 7 V VVV Z  V VV VV V VV VV V 65 V V 65VV Œ Ʒ x ŒVVVVVVV V V V VV   Z ïVV r VWVW� x Ʒ Z WW ` ï ï WW WW WW  s yW W s ï W W`WW]WW iWW ŒW Œ ŒWW ŒW Œ ŒWW Œ ŒW ŒW ~ ŒWW=WW%W WWW#W W! W" W$ W&W0W'W.W( W)W+W* W,W- W/ W1W9W2W6W3W4 W5 W7 W8 W:W; W< W>WIW?WD W@ WA WB WC WE WF WG WH WJWR WKWLWO WMWN WPWQ WSWW WTWU WV WX WYWZ W[W\ W^W_ 7 ï 7 iWaWvWbWsWcWr ïWd 7We 7Wf 7Wg 7Wh 7Wi 7WjWk 7 7WlWm 7 7WnWo 7 7Wp 7Wq 5 7 Ʒ ïWtWu ƨ ̀ >WwWzWxWy Œ ە Œ ïW{WW|W W}W~WWW Z ï ű LWW ïWW Dz N Dz WW W W WW AW ï ZWWWWWW Q& Z ܹWW sW Z ï Z ƷWWW sW sW s sW sWW sW sW s sWW sW s G sWW W WW W W W WW W W W W Y YWWW YWW Y YW YW Y W YW Y YWW Y Y W W W W WW W W W WW WW W WW W W O WYWWWWWW à G Z r z WW i WXWXWX{WWWW 7 y WXzW ïWX:WXWWWWWW 2 W 2 WW 2 W 2 W 2 2 W 2 W 2 W 2 2 W 2 < 2 W 2 W 2 W 2 WW 2 2 WX WX� 2 W 2 W 2 WW < < 2 XXX 2 2 X 2 X 2 <XX 2 XX 2 < 2 X 2 2 X 2 <X 2 XXX 2 X 2 X 2 2 < 2 X H 2 XX&XX 2 X 2 XX 2 2 <XX 2 XX 2 2 XX 2 < 2 2 X! 2 X"X# 2 2 X$X% 2 < 2 X'X-X( 2 2 X)X* 2 2 X+X, 2 < 2 X.X7X/X3X0 2 2 X1X2 2 2 2 X4X5 2 2 X6 2 < 2 X8 2 X9 2 X;XmX<XUX=XTX>XF 2 X? 2 X@ 2 XAXBXDXC 2 2 <XE 2 < 2 XGXLXH 2 XI 2 XJ 2 XK 2 < 2 2 XMXNXQXO 2 XP 2 < 2 2 XR 2 XS 2 < 2 XV <XW 2 XXXaXYX] 2 XZ 2 X[ 2 X\ 2 X^ 2 2 X_ X` 2 <XbXiXcXfXd 2 Xe 2 < 2 Xg 2 2 Xh < 2 Xj 2 2 Xk 2 Xl < 2 Xn 2 XoXwXp 2 XqXuXr 2 Xs 2 2 Xt < 2 2 Xv 2 2 Xx 2 Xy < 2 s X|XX}X~ y > Œ ïXX s Ʒ yXX i iX iXX i i XXXXXX  H  ïXX G X XX XXXX XX X XXX ïXX ƙXX ï ƙ ï ƙXX ïX V ïX ƙ ïX ï ƙXX x 7X X ïX ï ïXX ï ïX ïX ïX ïXX ï ïXX ïX ï ï XXXXXXXX ï r XXXXX r š XX ï ï DzXXX ïX ̀ XXX XX XX X  XX X  X  X XXXXX ïXXX XXXX  X 5X XX ; X r XX X X XX ï rX y X XX  X  9XXXX ïX V QXX rX X sX sX s sXX s sXYY� X ïY Z ƨYY ƨY ƨY ƨY ƨYY ƨY ƨ ƨY ƨY ƨY ƨYY ƨ ƨYY ƨY ƨY ƨY ƨY ƨY ƨ ƨY ƨYYYYXYY*YY#YY YY ï  ïY!Y" y Œ Z Y$Y'Y%Y& ï VY(Y) ï y ï Y+Y2Y,Y/Y-Y. ï V ï VY0Y1 ï  Y3YIY4YH Y5Y6Y@Y7Y<Y8Y:Y9 X < אY; Y=Y>Y? < ,l 02 YAYBYEYCYD YFYG H d Ñ YJYPYK ï YLYM YN YO YQ ïYRYUYSYT s ï >YVYW Ʒ YYY|YZYkY[YcY\YbY] ZY^ Y_ Y` Ya  ` ïYdYjYe sYfYg s sYh sYi s G sYlYoYmYn Ʒ  ï ̀YpYq Z Œ ŒYrYsYvYtYu y ï ƨYwY{Yx YyYz ł X ł j Y}YY~YYY Y ZY ZY ZYY Z ZYY ZY Z ZY ZYY ZY Z ZY Z x YYYYYY r ï s YY ï YYYY x Œ 7 YY ï YYYYYYYY  GY YY  YY Y Y Y Y Y  Y YY ƨ s  YYYY ƨ ï rYY  ѧYYYYYY Œ y ï YY Z s 7YYYY 7YY YY Y Y  Y YY Y  YY Y   7 ƙ YZYZEYYYYYYYY ƷY i ҉YY x à YYYY ׭Y rY L `YY r ˘Y ï kYY Y Y  šYYYY Y > ƨ c YYZ$YZYYYYYY Y Z  Z YY ï ƷYZZ�Z s ïZ Z ƨ 7ZZZZZZ WZZ Z Z Z Z Z Z Z Z Z Z #Z #Z Z Z Z # ׭ ZZ  ïZZ!ZZ  7 ƙZ"Z#  ï Z%Z8Z&Z,Z'Z*Z(Z)  ̀ ïZ+ G Z-Z. ƨ Z/Z0  ˘Z1 Z2Z5Z3Z4 ` 7 sZ6Z7 ï ü s Z9Z?Z:Z< Z; s Z=Z> à s ZZ@ZB sZA шZCZD ï  ZFZIZGZH r y Z ï ZJZKZZLZwZM `ZNZmZOZVZP VZQ r ZR ZSZTZU t  ZWZdZX ZZY ZZZ Z ZZ[ ZZ\ Z] Z^Z_ Z`Za ZbZc Z Ze ѧZfZj ѧZgZhZi �   ѧZk ѧZl ѧ - < iZnZoZqZp 2 2ZrZtZs ҉ ZuZv V   ƙZxZyZZz xZ{Z xZ|Z} x xZ~Z x x m xZZZ x xZ xZ xZ š šZZZ ZZ Œ Œ Z iZZ ZZ  ZZZZZ ,ZZ ZZ Z ZZ ZZ Z Z ,ZZZ ZZZ ZZZ ց yZ ł ł ZZZZZZZZZZZ 3_ W Z ) 6& jZZZZ PB : 7�ZZ X ZZ ł ł ZZ ; Z ; ; Z ; ZZZZZ ; ; ZZ ; ; ZZZ Z 7 4 ł Z] Z[Z[Z[ZZZZZZ ï ï ZZZ rZZ ̀Z ï ïZ ï Z ƷZ ZZZZ Œ ҉ ŒZZZZ ZZ ű > ZZ ZZ Z iZZZ Ʒ ƷZ ƷZ ƷZ ƷZ ƷZ ƷZZ ƷZ Ʒ ƷZ Ʒ K űZ iZZ ŒZZ Z  Z Z ҉Z ҉[�[ ҉[[ ҉ ҉ Z[ ҉[ ҉ ҉ i[[ [[ [ [ ҉ y x > [ Œ `[[[[ ` ï  Ʒ[[ [[[[ y 7[[:[[$[[[ Ʒ ï i[[# i[[["[ ï [! ł  Ʒ [%[0[&[' ï Ʒ[( ï[)[/[*[-[+[, š ʗ  ? ï[. u !  š[1 ï[2 Ʒ[3[6[4 8i[5 3 ï[7 [8[9 ׭ |[; i[< Z[=[s[>[U [?[@[R[A [B[J[C Ux[D Ux[E Ux[F Ux[G Ux[H Ux[I Ux Q Ux[K #[L #[M #[N #[O #[P #[Q # t #[S[T   [V[o[W[Z[X[Y # [[[\ ן[] [^[e[_[b[`[a x [c[d  [f[h [g K [i[j [k[l [m [n [p [q[r Ux # o[t[[u[[v[y[w[x o  Ux[z[[{ [| [} [~[ [ [[ [ [ [ [ [ #  [[[  % E[[ [ k o [[[ [[[[[[ ƙ[[[[[[ ƙ ƙ Z ƙ[[ Z[ š Ʒ š [[[[ ƙ [ ƙ ƙ[ s ƙ[ ƙ ƙ[ ƙ [[[ `[[ z[ ƙ[ š V8[[[[ š ƙ  ƙ ` [[[[[ ƙ ƙ[[ ` ƙ[ ƙ ƙ [[ s[[[ ƙ  ƙ s[[ i ƙ[ ƙ ƙ [[[[[[[[ `[ i[ ƙ V8[ i ƙ[ [ š[[ V8 ƙ s[[[[ š ƙ s ü ƙ[[[ `[ [ ƙ[ i V8[[ [  [[ [ [   ƙ ƙ[[[[[ ƙ[ ƙ š[[ š \ ƙ š[[ ƙ[ š \[ ƙ ƙ š[ r [[ [[ [ [ [ \[\[ [ [\o\�\C\\\\\\\  \ ƙ\\ \ \ \ ł z \ \\ ҉ \\ ց \\\\\\ ƨ Z\ s\ l l \\ Œ ï y \\@\\ R=\ \ O 6S\!\"\+\# .\$ ! !\% !\&\' !\( !\) ! !\* . !\, .\-\> !\.\/\6\0\5 !\1\2\3 ! . .\4 . ! ! .\7\=\8\:\9 . ! . .\; .\< . ! ! . !\? ! .\A\B <f ! ƙ \D\^\E\W\F\I\G\H ü L \J\K Z \L \M\N 7\O \P \Q \R \S \T \U \V \X\[\Y\Z  Œ \\\] Z  8\_\h\`\c\a\b Z ƨ s \d\g\e 6\f Dz ï Dz Z ï\i\l\j\k ű s \m\n s `\p\\q\\r\|\s\y\t\x\u \v\w   ï V\z\{ \ r\}\\~\ 7 Ʒ  \ x \\\\\\ Ʒ ï Q&\\  8 ܜ 8\\\\ ï \\ s i  r\\\\\\\\\ L\ < ʈ < . \\ ï\\ Dz C Dz !\\\\ Dz\ ï\ ï\ ï ï\ ï\\ ï ï\ ï Dz Dz ï\\\\ 6S\\ ƨ 4N ƨ \ \ \ \\ \ \ \ \\ \ ł\ ł\\ \ x\ \\ \ \ \ 65 \\\\\\ ! ï š\\ ï\ \ ( k 5\\\\ Z V  z\\ Ʒ à :y\\ S \\\\\\ ˘ \\\\\\\\\\ \ x x \\ x \ \\ L x \\\\  x\  x K x\  x\ x x\ \ \ x\ x Z\\  i Ʒ\\\\ ` y Ʒ]�] Ʒ]]]] š] c ]]]  Z]  ] >   ] ] Œ]]]J]]"]]]]]] ï]] S ѧ Ʒ]] ] ï ]] ï ] i] H H] H]! H ]#]<]$]5]%]4]& ï ï]']( ï ï])]* ï]+ ï], Dz]- Dz]. Dz]/ Dz Dz]0]1 Dz]2]3 Dz ï Dz ï ï]6]7 7]8 ]9]: Ʒ]; >  >]=]G]>]? Œ ï]@ ]A]D]B]C 4N ]E]F ï  G]H]I s ï ï \]K]~]L]_]M]Y]N]O ï i]P]Q i]R]W]S]U]T i i ]V i i]X i i ]Z]^][ ï]\]] ѧ B ]`]p]a]b ï ]c Z]d Z]e Z]f Z]g Z]h]i Z]j Z]k Z]l Z]m Z]n Z]o Z Z]q]r ҉ Ʒ]s ˘]t]z Ʒ]u]v]x Ʒ]w j z]y z Ʒ ]{ Ʒ Ʒ]| Ʒ]} Ʒ ]]]]]]  G ]]] ]] ] ]]] ] ] ] ]] ] ] ] : ]  Œ] ] ] W ]]]] 8 ï r ]]] s x ` r k]]]]] ˘ ï à ]] y >]]] ] ]]]] ] ] ]]]]]] ]] à] à 3] N à y ]] ]]] ł Z r ƙ]]]] x x]  ï]] 7  Ʒ]`%]`]^ ]]]] ]] V ƙ 6b] 7]]]]]] i r ҉]] i `]]]]]] ` 3|]] i G]]]] ҉ r]^]^] ï]]]]]] N ï ï]] ï ]] i] i ]]  g ]]]] x ]^� ï]]] Q5 ï ï  > y 6b^^ ^^ Ʒ Ʒ^^ Ʒ^ Ʒ^ Ʒ Ʒ^ Ʒ^ ^ Ʒ r Z^^ Z ^_^^ Ñ^^^ G ï ^_^^^^d^^>^^2^^1^^+^^$^^! ^ ƙ^"^# ƙ s ƙ^%^(^&^' ƙ ƙ ^)^* V8  ^,^/^- š ƙ^. ƙ ü ^0 � ƙ ` Œ^3^9^4 `^5^8^6 z^7 ƙ V8 ƙ `^: ^; z^< ƙ^= ^?^L^@^F^A^E^B ƙ ƙ^C ƙ^D s ƙ Œ^G^H V ^I ƙ ƙ^J^K ƙ ƙ š^M^Z^N^S^O Œ^P ü^Q^R ü ƙ ƙ ü^T^X^U^W^V ƙ š ƙ ^Y ƙ ^[^a^\ `^]^_ ^^ š ƙ^` ƙ š s `^b š^c Z ƙ^e^^f^^g^|^h^u^i^p^j^m^k^l ^n^o ƙ \^q^s^r V8 s ƙ^t ƙ \^v^y^w y ƙ^x U ƙ^z ^{ ƙ  ƙ^}^~ ƙ ` ü^^ ƙ^ ü ƙ^^ Ʒ^ š ƙ Œ ƙ^^^^ `^^^ ƙ^^^  t ƙ ƙ ^^^^ š ƙ^ ü^ ƙ ƙ^^^^^^ s s ƙ^ ü ^ z ƙ^^^^^^^^ ƙ^ ƨ ƙ^^ ƙ ƙ z ƙ^^ ü^^ ƙ^ Z^ Z^ Z^ Z Z^^ Z^ Z Z^ Z ޕ ƙ^^ ƙ ^^^^^^^^ ƙ ƙ ^^ ƙ ƙ^ s^^  ƙ �^^^ ^ z^^ Z  ƙ^_)^_^^^ ƙ^^ ^^ ƙ^ <^^ ^^^ ƙ ü š^^ `^ ƙ š^ ƙ 8^^^^ ^^^ ƙ^ V ^ ƙ ^^^^ ƙ^ ƨ  ƙ^ ƙ ^^^^  8J Ʒ^ ^^^^^^^ ƙ i ƙ^ K^^^ ^ š ^__�__ ƙ _ ƙ_ ƙ_ G š __&_ __ __ __ _ ƙ_ ƙ __ K ƙ ƙ š__ 8 _ ` ü_ š___ ƙ ƙ__ Œ_ ƙ__ ƙ_ _%_!_# ƙ_" ƨ ƙ_$ K ƙ  ƙ_' ü_( ü ` ƙ_*_W_+_C_,_1 `_-_. ƙ V_/_0 ƙ ƙ <_2_7 s_3_4_6 _5 � ƙ ̀ ƙ_8_>_9_;_: ƙ Œ_<_= ƙ š ƙ _?_A_@ ƙ ƙ ƙ_B K ƙ_D_J_E `_F_G ü ƙ_H ƙ_I ƙ ƙ_K_V_L_P s_M ƙ_N_O Œ & 4_Q_T_R_S ƙ ƙ t š_U s ƙ Ʒ 7_X__Y__Z `_[ ̀_\ ̀ ̀_] ̀_^___{_`_n_a_f B_b_c B B_d B_e ̀ B_g B_h_k_i B B_j B ̀_l B_m B B ̀_o_v_p B B_q_r_t_s B B ̀_u B ̀ B B_w_x B_y B B_z ̀ B B_|_} B_~_ B_ B__ B ̀ B_ B B_ B_ ̀ B__ ü__ `_ . ü ƙ ƙ___ ƙ __ ƙ Z Z ___ `_ ___ ƙ _ ̀ t  ƙ__ ƙ_ ƙ_  ƙ š____ ш ƨ_____ `__ š___ š  š  G __ s ï ______ ï >___ _ __ _ _ 6 ï__ ï ï__ ï ï_ ï_ ï_ ï__ ï_ ï_ ï_ ï 6 ï__ s ï ï ˘____ ï  Ʒ____ _ ű ___ __ _ _ _ _ _ _ __ _ _ _ _ _ ___ __ _ _ _ _ ____ ҉ Ʒ_ ___ r i___ ܌_ K  Ʒ _`__ _  `� `` ` `  ` ``  U�  ƙ` ƙ` ƙ` ƙ` ƙ` ƙ 6D` Z` ` ` ` `` ` `` `` ` `` ` ` ` `! `" `# `$ `&a`'`) s`( i`*`H`+`5`,`- 7 à`.`/ i `0 `1 `2 `3 ҉`4 ̀ ï š`6`G `7`8 `9`: `; `<`= `> `? `@ `A `B `C `D`E `F Z `I``J``K``L`O`M`N Ʒ Œ G x`P``Q`W`R  `S`T `U  `V Q `X`f Z`Y Z`Z`[ Z`\ Z Z`]`^ Z Z`_`` Z`a Z`b Z`c Z`d Z`e Z Z  Z`g`h`l`i `j `k  Z `m`p`n Z Z`o , Z`q``r`{ Z`s`t Z`u Z Z`v Z`w`x Z Z`y`z Z Z `| Z`}` Z`~ Z` Z` Z`` Z Z` Z ` Z` Z Z`` Z Z`` Z Z````` Z Z` Z`` Z Z` Z` Z` Z 4{` Z Z`` Z Z`` Z Z` Z` 4{ Z Z` Œ Ʒ` Ʒ```` Z ` ҉````  Ʒ Ʒ `` Ʒ``` 6  ``` 8J 5C G``  k ï```` i Ʒ` `` ``` ` ` `` ` ` ` ` `` ` ` 5` ` ` ` `` ` ` ` `` ` ` `` ҉` ` ` `` `` `a ``````` i x Ʒ`` ï```` ` `  `  ï ```` y x ï`a ``a``  ` `ag`a&`aa�a aaaa Xa H aa Ha #� a a a a a aaa / aaaaaaaaaa r  a a a <a a!a$a" a# <a% a'aOa(a;a)a4a*a,a+ da-a2a.a1a/ <a0 H 2 a3 H 2 a5a7 a6 <a8a: a9 a<aDa=aAa>a@ a? H  aBaC aEaJaFaHaG א aI aKaM aL X aN H aPaZaQaV aRaSaUaT H aWaXaY א  02a[a`a\ a]a^ a_ r 'aaaeabac ad < af Hahaaiaajavakasalaoaman Hapar aq  at au awaaxa|aya{az H a}a~ s א aaa daaa X a H a a aaaa aa H aa H a da aaaaaa a  Haa < Xaa a a aa a H aaa Ha a H <aa a H H a aa a a a a a aa aa >a ïaaa a ja j a aaa aaaaaaa xaa xaa x xa x `a a aaa   a x xa xa xaa x x aa xaa x x ҉ xa xaaa x xaa xaa xaa xa = x xa x =aaaaa x x š x ҉aa a ša xa La L x a ҉a = xaaa x ab aa b� b b b b b b bb b b b b b b bb b b 8 bb9bb8bb%bb"bb!b b b bb b bb Q& b#b$ k ˘ Ʒb& Ʒb' zb( Ñb) Ñb* Ñb+ Ñb, Ñ Ñb- Ñb.b/ Ñb0 Ñb1 Ñb2 Ñ Ñb3b4 Ñ Ñb5 Ñb6 Ñb7 o Ñ  b:c b;bXb<bCb=b@b>b? ï ï bAbB ï Œ xbDbGbEbF ï L G ïbH ZbI ҉bJbQ bKbLbNbM bO bP bR bSbU bT bV bW bYblbZbcb[  b\b] b^ b_ b` ba bb Q& bd be bf bg bhbi bj bk bmbbnbbobbpbvbqbsbr ï  ïbtbu L ï W bwb}bxb|by Zbzb{ = = ï Œb~b  8bbbbbb Wb b d db d Hbb d 7 ïbbbb r b bb `bb ` ` ~bb ш bbbbbbbb  7 bb ` ïb bb b bb  ƙ ï bbbbbb ï Œbbb  bbb š s Hbbbb W Œb bb b Ñ Nbbbbbb s ybbbb y bb ï UZb b b 3_bbbbbb ш  Z bb 7  Z bbbb :y bb 7 ï ibbbbbbbb ï  ïbb ï Ʒb ˘ bbbb i Ʒ Ʒbb  ï bbbbbb š ï xbb ̀ Ʒ Ʒb bb b b bb b bb b bcbc� Ʒ   Ʒcc  z Ʒccccc #� א c c cc coc cfcccc ï Z ï ccec ŒccAcc*cc"c c cccc c c < c c c! < c# c$ c%c& c' c( c) c+c9c, c-c3 c. c/ c0 c1c2 < c4c5 c6 c7c8 c:c; c< c=c> c? c@ d cBcL cC cD cEcF cG cH cIcJ cK < cMcN cOcS cPcQ cR cTc\ cUcVcY cWcX cZ c[ c]ca c^ c_c` cb cc cd ïcgcich G ïcjcnck xcl ̀cm ̀ ƙ ̀ cpccqctcrcs ï g  ˘cucv  ïcwcxc rcyczcc{cc| c}cc~ cc cc c c c c cc c c ccc ccccc c cccccc c cc cccc cc cccccc c cc c c ccc c cccccccc X Xcc X Xcccc X Xcc X Xc c cc X cc X c cc c ,]c c c c c cc c c c c c r cccc x Ʒcc ̀ cccccccc ï c ïc ï 3cc ï   ïcc ` ` ccc Z s ց xcd(cdcdcccc y s Ʒcc c cd� ` ü š ïdd ïdd ddd d d d d d ï r Œdddddd ï s dd  š ïd ïdd ï ïdd ïd ï 3 4!dd%dd ƨ d ïd! ïd" ïd# ï !d$ ï !d&d' ` ï Œ Ʒd)dNd*dEd+d5d,d- Z yd.d/d2 Wd0d1 V W s d3 d4 Wd6d7 V xd8 3| d9 d: d;d< d= d> d?d@ dA dB dC dD dFdIdGdH ï  Œ sdJdK  ïdLdM ZdOdVdPdSdQdR y TI dTdU ï x UZdWd`dXdY ï  üdZd[ Zd\d_d] ї Zd^ Z ї ї Zdadb Z Œ ̀ ïddNdesdfgdgedhdi sdjd dkdl ydmddnddoddpdsdqdr Œ ï s xdtd~dud|dvdw x dx xdy Kdzd{ K K אd} d ˘ddd dd dd d d ddd dddd ҉ ï r dd V8 s ï dddddd 7 ï ܹdd ï dddd T*dd Œddd Œd Œ Œdd Œ Œd ~ Œd Œd Œd Œ Œd Œd Œ ~ i dd Œ r ï rdddddddd  y ҉ddd y ցd j ï Œdddd   ەdd ï ï ҉dddddd ս Œ ï rdd s ï Zdddd x y ï sdd Gddd d r dd ddddd dd d d dd dd d dd d d dd O O d dd dd d d dd dd d dd d Z d d d dd e�e ee 6eele Zee:e Ze ee e Œ e Œe Œee Œ Œee Œe Œ Œ ~ee Ge ee e e e eee8ee!ee ï W ` ïe"e7e#e+e$e*e%e'e& r e(e) ` Ʒ ` y i e,  e-e.  e/ e0 e1e2  e3 e4 e5 e6  Od š e9  Ʒe;ege<e? e= re> s ïe@eCeAeB ` seDeE eFeUeGeNeHeKeIeJ d eLeM  ` GeOeRePeQ ïeSeT G ï ï eVe]eWeZeXeY Ʒ  e[e\ y Œ ̀ ïe^eae_e` ׭ ï ebefec Z šedee š š 7 ïehei ejek Ʒ k ƙ em ƨenf2eoe epeqes >er z 7et Ʒeueev ew exey eze{ e|e} e~ e ee e e 6 e ee e e e e ee e e ee e 3_ ef'eeee ï W ïef&eeeeeeeeee :eee :  eee : $ ; :e :eee :e : : e :e :  :eeeeeee :e : 4 Ce : : : seeee se s Re s ee se s Cee 5 seeeeeeeeee : + s  C : :eee s :  eeeeee K a k :ee s C seee p  {e p  Žeee : se se s :eee see G  s eeee s G ­ ½ se s Gef eee  eee ee e e e e e e e e eef f� f f f ff f f f f f f ff f à 3 à 3ff à R R àf ff% f f ff f ff$f ff Vf Vf V f f" Vf! V Vf# V V Z ѧ xf(f/f)f.f* ̀f+ ï ïf,f- ï ï 3 ïf0f1 ï Œ V f3ff4fyf5fTf6fQf7fPf8fJf9f?f:  f;f< f= f>  f@fFfA fBfD fC  fE  fG fHfI   rfKfL r rfMfN rfO R r R fRfS UZ ҉ GfUfwfVfW ï kfX fYfjfZff f[ f\f] f^ f_ f`fa fbfc fd fe fgfh fi  fk fl fm fn fo fp fq fr fs ft fufv  fx  fzff{ff|f} ˘ if~ ïff f Zf Z f f fff < < ҉f f x Zfffff ffffff 5   ff :y ffff ï ƨ sf f Dzf Dz ï kf ff ff f f r f r ff ï fgfff f ff f ff \ f mf Zffffffffff ƙ  Zfff Œ ߿ ` ܹff  ܜ ffff ff ü Waf ï ï ffff ïf ï xfff f N C f R=f Lff L Lf Lf Lf Lff Lf L L R=ffff Zff ( c k š ff ïf 5 ( ƙ 7ffffffff ƨ  ff  ffff 8 ï 7ff i  ï fgffff c łf 6f 6g�g ï ï àgggg Z Lg Ng N WSg g g ïg g Ʒgg ! ï ! ïg Ʒggggg'gggggg g gg g g  g g#g!g" tg$g& g% t   g(gig)g,g*g+ ;  g-gAg.g> g/ g0g1g8 Sg2 Sg3g4 Sg5 Sg6g7 S g9 Sg: S g;g< Sg= S Sg?g@   gBgggCgf gDgEgL gF gGgH gI  gJ gK  gMgU gNgOgRgP  gQ  gSgT   gVg_gWg\gXgY  gZg[ g]g^   g`gcgagb   gd  ge  t gh  gjgogkgl tgm gn gpg gq grgs gtg gugvg{ gw gx gy gz  g|gg}g~   gg   gggggggg  g g  gg g g   gggg g gg  gggg g  gg  g gggggg  gg  gggg  g   ggggggg gg   g “g g   gg  ggggg t g g gggggg  # gg  t gggg g gg gg gg Q Qg g g g Q %gg  gg gg t g  %g % gntgngigggggg g Zg Zg Zg Zg Zg 3 b ҉ y gh\ghghggggggg ïg b b 3 ïgg h�hhh V ï hh ` s Ʒhhhh h h ƙ V Œh h ï  hhhh ƨhhhhhh 3 ï hh i WD  hh i ï ï hh7hh+h h(h!h' ïh" ïh#h$ ïh% ïh& š ̀ š  ïh)h* ï  yh,h4h-h. h/ h0h2h1  š h3  h5h6 ï  s h8hWh9hEh:hDh;h=h< ï ï h>h? Ʒ h@ ïhA ïhBhC r ƙ ï r ïhFhGhJhHhI ƙ  Ʒ ï 4!hKhL hM hN hO  hP hQhR  hShT hU hV  Od hXhZ ïhY ï ïh[ ï ih]hch^h` rh_ x Ʒhahb k hdhvhehu ühfhghnhhhkhihj ̀ Z hlhm ï hohrhphq ï  шhsht Ʒ ï r hwhhx hyhhzhh{ Zh| Z Zh}h~ Zh Zh Zh Zh Z Zhh Z Zhhh Zh Zh Z Z Fhhh Zh Z Z Zhhh Zhh Z Zh Zhhhh Zh Zh Zh Z hhhh Zhh Zh Zh Zhh Zh Z Z Z  Zhhhh , Zh Z Zhhhh Zh Zh Z , Z Zh Z hhhhh Z Zhh Zh Zh Zh Zhh Zh Zh Z  Yh Zhh Zhh Zh Zh Zh Z Zh ޕ Z Z hhh Z Zhh Zh Zhhh Z Zhh ,   Z Zh Zhh Z Zh Zhh Zh Z Zh , Zhhhhhhhh r ïh ƙ hh ï r s hhh ï Ʒ shh  ï ïh hhh 6 6 hhhhhh Z ەhh r z ïhihh W s hh ïi�i Ux #  ii k š Œi ikijni ii iGi ii i `i ii Œii ƙii ƙ  üiiii Œ `i i iii ƨ ü šii4i i(i!i%i" üi# i$ š ƨ ƙ ƙi&i' s s ƙi)i- i*i+ ü si,  i.i/i1i0 s š ƙi2i3  t ƙi5iBi6iAi7i:i8i9 y ` ƙi;i>i<i= ƙ ƨ ƙ ši?i@ ƙ ƨ ƙ V8 z ƙ üiC iDiE ü `iF # `iHi}iIiciJi[iKiTiLiQiMiPiNiO  ƙ ƙiR ƙiS  V8iUiXiV ƙiW `  ƙiY àiZ  ƙi\ib ƙi]i^iai_i` 2 ̀ 2 ƙ ƙ սidirieikif ƙigiiih ű �  ij A il ƙimio ƙin ƙip ƙiq  isixitiu ƙ `iv iw ƙ ƙiy ƙ ̀izi{i| P / ƙi~iiiiii Œii ƙii ƙ s ü Z ƙiii ƙi ƙ i i ƙ iii ̀iiiii ƙ 8 ƙ ii ƙ ` ii սii ƙi ` s ƙiiii ` ƙii ƙ i ƙi ƙi ƙi ƙi ƙ ƙ Vii ƙ i ƙijiiiii `iii ƙii ƙi ƙ ƙi s ƙii i ` ƙ ƙ iiii üi ƙii ƙ  ƙiii ` ƙ ƙ `iiiiiii i iii i i i ii 2 i i i i i 2 ƙi Kii ƙ i ƙ üi i š ii `iiiiii i ս ƙ sii `i ƙ šiii ƙ W~ d ƙ ƨi Œi ƙ `i ƙ tiiii üii ü ` ƙ ƙiiiii t  ƨ ƙ ƙ ij ƙj� üjjj s _ ƙ _ Œ `jj=jj!jjj j j üj ƙ ƙ 7j j j ƙ šjjj üjjjj . ƙ  ƙ y ƙjjjj ƙjj ƨ ƙ #� ƙjj j 7 . 8 ƙ j"j0j#j) `j$j%j'j& ƙ ü ƙj(   ƙj*j,j+ ü ƙ V8j- j.j/  j1j5 j2j3 n j4 } j6j9j7 ƙ ƙj8 t ƙ `j: ƙj;j< ü d Íj>jWj?jLj@jDjA ƙjB `jC šjEjF Ʒ jGjIjH  ƨ `jJ ƙjK  jMjSjNjQjO š ƙjP ƙ  sjR ƙ jT ƙjU ` 7jV = FjXj_jY ƙjZj\j[ ƙ ` üj]j^ s ƙ j`jjjajgjbjd ƙjc  jejf Z ƙ ƙ ƙjhji ƙ ƙ š ƙjkjl ̀jm ƙ  jokjpjjqjjrj~jsjyjtju ƙjv jwjx ` ƙ ƙ jz `j{ šj|j} ƙjjjj jjjj 7 ƙ üjj K ƙ 8J ƙ jj ƙ ƙ ` jjjjjj ƙjjjj ƙjj ƙ Ü ƙ ƙjj ü ƙj ƙ sj `jj ƙ ̀jj jj ן jjjjjjjj ƙ ` ƙj ƙ ̀ sjj s : Gjjj šjjj ` ƙ ëjj s ƙ ƙ š ƙj ƙj `j ƙ jjjjjj `j ׭j ̀jj ` š ƙjj ׭jj üj `  ƙ ƙjjj ƙj V8 š jjjjj j ƙjj 7 j j j ƙjjjjj ƙj ` ƙ új ƙjj ü  š ƙjjjjjjjjjjj š j ƙjjjj t ƙj ƙ ƙ `j ` ƙjj ƙj ` Œj ƙ šjjjjj  ƙj ƙ `jj ` ƙj ̀ š `j `k�kk š ƙk k š ƙk \ ƙkkOkk+k kk k ƙk k k à `k ƙkkk ük k  ƙkk }k ƙ ƨ ƙkk k `kk ükkk 6  ƙ ƙ ük!k*k"k'k#k%k$   k& ` ƙ k( ƙk) š ƙ z k,k<k-k8k.k5k/k2 ƙk0 ƙk1 š k3 ƙk4 ƙ  ƙk6k7 G : ƙk9k;k: ƙ  ̀ `k=kAk>k? ` k@ ƙ `kBkKkCkGkD ƙkEkF V 6 6D kHkJ kI Œ ƙ ZkL ƙkM `kN ` ƙkPkqkQkUkR kS ƙkT ` ƙkVkekWk^kXk]kYk[ ƙkZ ƙ 8k\ ƙ ƙ ƙ ük_k` ƙ ükakc ƙkb ƙ škd ƙ s ƙkfkj ükg khki ƙ Ʒ ƙ ükkklko ƙkmkn ƙ 4 kp ƙ ƙkrkksk{ktku kv kwky kx š ƙkz š ƨk|kk}kk~kkk  k Ʒk š ƙkk ƙ k ƙ š `kkkk ƙkk sk š ƙk kkk š ` ƙkk 8 ƙ skkkkkkk Ʒ ü ƙ ƙk ƙ ƙk ƙk ƙ Kklkl@klkkkkkkk ƙk ߡk kk k ̀kkkk ƙk ƙ ük ` ƙ škkkk ƙ š ƙ š ƙkkkkkkkkkk V8  š ƙk ƙ ƨ ƙkk ƙk ƙk `  ƙkkkkk ƙ ƙk Okk ƙ `k ƙ ƙkkkk ƙkk ƙ ` š `kk : G kkkkkkkkkk `k ƙ ƨ ƙ kk ƙk ƙ Ʒ sk ` Ʒ ƙkkkkkkk ƙ  ü šk ƙk s ƙk ƙ k ƙ škkk ƙ 5C Vtkl klkk ̀ ƙkk ƙk ƙ kl� ƙ llll l Z l ƙ Ʒll ƙ š ƙl `l ll ü ƙl ƙ _ll ƙ s šl ƙll,l üll lll ` ׭ `lllll ƙ l ƨ ƙl!l%l"l$l# ƙ ` 7l&l)l' 7l( l*l+ ƙ ƙl-l9l.l2l/ ƙ l0l1 ս ƙ սl3l5 Œl4  ƙ ƙl6 `l7l8 š `l:l;l?l< l= l>  ` lAllBlolClclDlSlElL slFlGlJlHlI ƙ ƙlK ƙ ƙ ƙlMlNlPlO ƙ ƙ slQlR ƙ š ƙ 8lTl\lUlXlV ƙ `lW ƨ ƙlY `lZl[ š ƙ ƙ l]l`l^l_ š ƙ 7la ̀ `lb ƙldlhle ƙlf ü ülg  lilk `lj ü ƙll lm ƙ ln V8lpllql|lrlxlslv ült ƙlu s ƙ `lw Œ ƙlyl{ }lz ƙ ` ƙl}ll~l ! l Ʒ l `l ü ƙl ƙ llllll ƙ ` ƙ ̀l ƙ `lll U š ƙ šl ƙll ül `l s ƙ ƙl ll Ʒ LG Ʒllllll `lll ƙ ̀ ƙ ƨlllllll ƙ `l ƙ ƨl ƙ ƙlll ƙll š ƙ š zll ƙ � ƙllllll ƨl š `lll l ƨ ƙl ` ƙ ll ` ƙl zl l  olllllll ƙ ü G ` ƙllll ƙ ̀ ül ƙll ƙl ƙ ` zl ` ƙlllllllll ƙ s ƙ l ƙll ƙ � ` ƙ  `l ƙ ` Œlmrlm4lm lllll Œll ̀ll Vt V ƙl l ƙllll l zll ƙ ƙ šlll ll L ƙ zlmll zl ƙl š �m�m ƙm ƨ ƙ Zmmmm `m ƙ ƙ ` ƙm ƙm  tm mm mmm ` ƙmmmmm ` ƙ ƙmm L ü zmmm  ƙm ƙ 7 `m mm ` ƙ sm m.m!m( ƙm"m#m%m$ ` ƙ 8m&m' ƙ  s m) zm*m, ƙm+ š m- ƙ ƙ š ƙm/m0 Œ `m1m2m3 ƙ ƙ 0m5m^m6mHm7mBm8mAm9m< üm: m; Gm=m?m> ƙ  ƨ ƙm@ ƙ ƙ smC `mDmE ƙ ümF ƙmG 8; ƙmImZmJmOmK ƙmLmN ƙmM ƙ ` KmPmSmQ  `mR ƙmTmWmUmV ƙ ` ƙmXmY ƙ ƨ s ƙm[ `m\ zm] ƙ `m_mcm`mb սma ƙ ` ƙ mdmi ƙmemfmhmg s ƙ s mjmqmk Œmlmommmn ƙ Œ mp ` ƙ s ƙmsmmtmmummvmzmwmy ƙmx ƙ Œ ƙm{mm|mm}mm~m ̀ m mm  ƙ 7m ƙm ƙm `m mm smmmmmmm  Œ  Œ Orm Œ Or mm `  ƙmm ƙ smmm  ƙm tmmmm ƙ ƙ m ƙ mmmmmmm ƙ š Ʒ ƙmmm ƙ ƙ ü V `mmmm s ű ƙm `m ƙmm mmm m m m m m ?m m m mm m O mmm ƙ smm sm s s _mmmmm _mm L š zmmmmmmm mmm mm ƙ  š ƙ ƙmmm ƙ š ƙ Emmmmmm s ƙ ƙ m z m ƙ mm š ƙmm   ƙm 8 šm ƙ `m սmmmmm ƙ  t ƙ ƙm š tmn `mmm mm n m !m Œmn�mm }  4 ƙnn 4 Č 4 nnn ƙnn ƙ ` ` ƙn n ƙn n ƙn 8J nn ƙn ƙn ƙ nnn ƙ šn ƙ ƙ nn Ʒ Znnonnnn s  rnnann-n n&n!n#n" ï n$n% `  i n'n*n(n) y s n+n, ï  n.nAn/n2n0n1 ƨ xn3n:n4n7n5n6 jn8n9  ï ,n;n>n<n= ï  n?n@ ̀ 7 ïnBnTnCnNnDnHnEnF 2 d nG nInJ ï nKnL š šnM šnOnRnPnQ ï snS ï ̀ snUn\nVnYnWnX r ï ˘ ƷnZn[ Z n]n^ ï Œn_n` ƨ Gnbnhncnfndne ҉ ï  Ʒng ï ï kninlnjnk ï nmnn r ï npnsnqnr ï k s ƙ nupnvonwn|nxny Gnzn{ ƙ à n}on~nnnnnnn ҉ ` nn n ïnnnn tI   ƨnnnn  N nn ҉ G ě ׭nonnnn W G s ïnn ƙ ün nn nnn nn  nn nnn    n nnnnnnnn šnnn c B& c nn n 5p Ann ʗ B& 5 <nnnnnn  kn ʗ ( nn   (n šnnn  < ( c nnnnnnnn  5Rn H : nnn c c ʗ nnnn  c c B& nn  nn šnnn š š nnnnn š k š šnn 5 n  n šnnnnnn B&n 5pnn  cn  c <nn n š n Ī Ĺ cnnnnn š ( (n š nn ?nnn š ? šn š š n o�o; ooo o oooo  5R o co o"o oo oo oooo 5ao (o k šo ko šo š >oo šoo š <oo o (o š ? <o! ( o#o2o$o0o%o)o&o' A o( o*o-o+o, < (o.o/ 5 c 5 o1  o3o7 <o4 o5 o6 š šo8o9o: k 5a c o<o=obo>oYo?oMo@oFoAoC oB š oD oE oGoH 5oIoK šoJ š oL c š (oNoQ šoOoP A oRoUoSoT š oVoXoW c 5  oZ o[o_o\ o]o^ ? ( R o`oa ocotodonoeohof š og  oiolojok c šom š ? šoooporoq š os 5R ouozov ?ow ox oy  o{ <o|o} co~o c š ooooo io so o ro r  r i Œoo Ʒ ï yoo ko ko koo ko k ko koo k ko ko koo ko k ko koo k ko k o Z Zoo Z Zooo Zo Z 3oooo 3o 3o 3 bo b 3 boooo 3 b 3 b 3o b 3ooooooooo Ʒo ` Œoo Œ Œoo Œo Œo Œo Œ Œoo Œ Œoo Œ \ Œoo y  ï oo Vo ` ƙoo oooo o o ooooo < oo o o o o o  o H  oooo ï Z Ʒoo V ˘ Ʒ ïoooo r ï ko oo o o o o o oo o o oo o oo ł op5opp�ppppp ï  spp i  ïppp p  Zp p ï ïp ïppp  3 :0 pp Z ە rpppppp Ʒ Q s Gpp ip ïpp  x  p p"p!  üp#p1 rp$p%p/p&p*p'p( Lf p) 8Z 8 p+p-p, 8 8p. ߰ 8 8p0 8 rp2 Ʒp3p4 r p6pFp7p@p8p=p9p:  Qp; ïp< i ip>p? s ï Ʒ ïpApDpBpC ï s 3m ï ïpE Œ ҉pGp`pHpSpIpJ rpK rpLpMpPpN rpO r r RpQ rpR r r RpTp_pU spVpYpWpX r pZp[  p\p]p^  š ( x ïpapdpbpc y Ʒpepfp pg phpi pj pkplpwpm pn po pppqptprps  / ,lpupv  >  / pxpy pz p{ p| p}p~ < <p ïppp ïp ï 6 ïp ïpp Dz ï Dz ïpr*pqpp pp ` ` pqtpppp ppppp Ʒpp Ʒ ï pppp  Ʒp ƨ pp Ʒ p pp š ƙp ƙ s ƙ Vpqs ppq pppppp pppppp p pp p p p p pp pp p p p pp p p p pp pp p H ppp pp p p p p pp p pppppp <pp < < 2 <p <pp < <pp <p < א < p p p p ppp pp p p pqpp p p p pp pp p p p p q� qqqq q  qq  q q q q q q qq q q qq q q qq q q qq qq q # q!qcq"qKq#qCq$q;q% q&q3q'q, q( q) q*q+ Hq- q. q/ q0 q1 q2 H q4 q5q6 q7 q8 q9 q: Hq< q= q> q? q@ qA qB qDqJ qE qFqG qH qI H qLqW qMqN qO #qPqQ # #qRqS #qT # #qUqV # #qX qYqZq[ q\ q] q^ q_q` qa qb qdqg qe qf qh qi qj qkql qm qnqo qp qq qr 8 rquqqvq ïqwqxqy qz q{ q| q}q~ q q q qq Q& ە qqq Ʒ qqqqqqqq q  ƨq  š ïq qq ïq s ïqq ï sqqqqqq  KH KH  KH  qq 4? qqqqqq  qqq šq 7 qqqq Q ïqqq  q qq qqqqqq T  T y* T qq q ^  q  T qqqqqqq qqqqqqq ï à ï ïqq à ï š ïq ïq ïqq ï ïq ï ̀qqqqq ï à ï ïqq ï ï š ïq ï 8 zqq 6bq 6b 6bq 6bq 6bq 6bq 6bq 6bqq k xqrqq  ̀qqqq `qqq ̀q ̀  ̀q ׭q ׭ ̀ ׭q `qrqqq  q ׭ qrq q q  qq  r�r   Qr ׭ r  ׭r ׭rr r ׭r r ׭   ׭r ׭r ׭  ׭rr# rrrrrrr ï s ïrr > ` y rr sr i rr ï r ïrr Œr r! Œ ~ ~r" ~ Œr$r% ïr& G ïr' ïr( ïr) ̀ ïr+rr,r- Z Ʒr.rJr/r:r0r2r1 ï  ïr3r9r4r5 \ Œ r6r7 yr8 ( š r Œr;rGr<r= r> Ʒr? Zr@rC ZrA ZrB Z ޕrD Z ZrErF Z Z ޕrHrI r ` ï >rKrfrLrcrMrbrN rOrUrP Œ ŒrQ ŒrRrS Œ ŒrT Œ \rV ŒrW ŒrX Œ ŒrY ŒrZr[ Œr\ Œr] Œr^ Œ Œr_ Œr`ra Œ \ Œ  Nrdre ï ҉ rgrrhri Ʒ rj ƙrkrt rlrm rn rorp rq rrrs s rurrv rwrrx ry rzr{ r| r} r~ rr r r rr srrr rr < r r s rrr Ʒ rr V š ï irr rs�rrrrrrrrrr y  rrr d Z ïrrrr r ܹr ܹr ܹr K ܹr ï r r rr r r r rr r r rr ï Zr rr ïr ï ïr ï rrrrrr i ï rrrr ïr ï ï ;8 ï rrr rrr r r rr d r d V ïrr ïr ïr s r ï rrrrrr ïr rr  ̀ r yrrrr ï ï rr Ʒ ï ï rrrrrrrr rrr rr Ux # Ux #  G Zrr ï 8 ï rrrr ï ï srr r Xr yr Xr X y ssssss  ï ƨ xss ï Œ x ïs s ys ïs s  ï sssss    Œs Œsss s  s   tsustssssssj Zss s` Zs!s" Zs#s3s$s% Z W Zs& Zs' Zs(s) Zs* Zs+ Z Zs, Zs-s. Zs/ Zs0 Z Zs1s2 Z Z W Zs4 Zs5s6s:s7 Z Zs8s9 Z W Z Zs;s<sOs=sFs> Zs? Z Zs@ ZsA ZsBsC Z ZsDsE Z W ZsG Z ZsH ZsIsJ Z ZsK ZsLsM Z ZsN Z W ZsPsQ ZsRsY ZsSsT ZsU Z ZsVsW Z ZsX W ZsZ Z Zs[ Zs\ Zs] Zs^s_ Z Z W Zsa Zsb 3sc 3sdse 3sf 3 3sg 3sh 3si 3 Z Zsk Zsl Zsm Zsnsossp 'sqszsrsv 3ss 3stsu 3 3 Zsw 3 3sxsy 3 Z 3 3s{s| 3s} 3s~s 3 Z 3 Z + bsss Z Zss Zs Zs Zss 3 Z 3 Z Zs Zss Zs Zs Zs Z Zss Z Zss Zs Z Zss Z Zs Zs Zss Zs Zs Z  Zstsssssss Z Z s Z ss Zs s Z s Z Zs s ss  Z st sssss Zs Zs Zs Zs Zs Zs Zs Z Zss Z Zss Z Zs Zs Zs Z Zs bsss 3 b +s 3 +s Zs Zstss Zs Zss Z Zss Zs Z Zsss Zsss Zs Zss F Z Fss Zs Z F Z Fssssss Zss F Z F Z Fss Z F Zs Fs Z Fssss Zss F Z F Z Fs Z Zss F Z Fs Zsts Zs Zs Zs Zs Z Zss Z Zst� Z Ztt Z Z tt Z Ztt Z Z Zt Zt U Z Zt Zt t Utt Z U Zt Z Ztt Z Zt  Ztuttttttttktt2tt"tt Œ Œt Œt! 4l Œ Œt#t$ Œ Œt%t& Œ Œt't( Œt) Œ Œt*t+ Œt, Œt- Œ Œt. Œt/t0 Œ Œt1 Œ ~t3tCt4 Œt5t:t6 Œ Œt7 Œt8 Œt9 Œ Œt;t< t=t@t> t? ŒtA tB Œ Œ tDtYtEtVtF S ŒtGtHtK ŒtI ŒtJ Œ StL Œ ŒtMtN Œ ŒtOtP Œ ŒtQtR Œ ŒtStT ŒtU Œ  Œ ŒtW StX S ŒtZth t[ St\t] Œt^ Œt_ Œt` Œta Œtb Œtc Œtd Œte Œtf Œtg Œ S Œ Sti Stj S Œtlt{tmtp Œtnto Œ Œ S tq Œtr ts Œtt Œtu Œtv Œtw Œtxty Œ Œtz Œ St| St} St~ S S Œtttt Œttt St S Œttt Sttt S Œt Œ St Œ S S Œ Stt t Œtt Stt Œ Œt Œtttt Œt Œt Œt Œt Œt Œt Œt Œt Œt Œt Œ S Œt Œt Œt Œt Œt Œt Œt Œt Œt Œt Œt Œ S Œtttt Œtt Œ Œ 4ltt Œ St Œt Œt Œt Œ Œ 4ltt Œt St St Stt S St St St St St Stt S St St S 7 Œtt Œt Œt Œt Œt Œ 7 Œttttttt t Œtt Œt S Œ Œt Œt Œt 4l Œ st ï ҉ ttttttt t tt t t tt t սtt ï x ït ƨtt Ʒ ï ï tttt rt rt rt rt r ˘ ru�u i ï > u Œ uv uuuuu u u Z Ñ ïu uu u s G 7uu;uu Z u Zuu+uuuuuu   Œuu ï y Ʒuu!uu y Ʒu Ʒ ł u"u# Z y Ʒu$u%u(u&u' F 8 V <u)u* e 8 t 8u,u.u- Ʒ à u/ u0u5u1 üu2u4u3 L 4 p  ïu6u9u7 ïu8 ï ̀ ï Nu: ï 3|u<uu= ƨu>uhu?uSu@uJuAuGuB xuCuFuDuE m x xuH xuI x x ZuKuOuL xuM x xuN L 4uP x xuQuR x x uTuYuU xuV x xuW xuX x uZua xu[u\u^u] x ` xu_u` L x x Lubueuc  ƨud ` xuf `ug ` L `uiuujuukutuluoum `un ` K `upuruq x K Lus tI tI uuuuv `uw `ux ` Luyuz Lu{ Lu| L Lu} Lu~u L L K  `uuuuu ` x x `u `u ` ҉ xuuuuuuuu `u x Lu x x  ` `uu ` xu x u xuu u `u x ` x ` Ʒ Œuv{uuuu `uu iu iuu i iu iu iu iu iu i uuuuuuuuuu ҉ uu 8uu uu H 02 s uuuu ï iuu r Ʒ Ʒ Ñuuuuuu s 8 ïuu ƨ  uuuu  ï ; ïuu 8 Zuuuuuuuu u u u  uuuuuu u ;uu ; u Mu  ׁu Zuu Z K Z uu ïu ѧuu u ̀ ï uuuuuu Zu  Ʒ u r uu ïu ï ցuu ï Z u uv2uv Gv� v ïvvvvv ï Œ vv ï v vv vv vv ű v vv Ʒ Ʒv Ʒ `v шv ï vvvvv Œ ï Lv ƨ v r  ïv 3Pvv%v ïv! ïv" ïv# ïv$ ï ń ïv&v)v'v( ï ü ï ü ïv*v+v. ïv,v- ï Dz ï 6v/v0v1 Dz ï ï 6v3 v4v`v5vJv6vHv7v;v8v:v9 E  E E v<vCv=v@v> Ev?   EvA vB  E vDvG EvEvF E  E E  vI M 3PvKvR `vLvMvN ïvO  švP švQ 5 HvSvVvTvU Œ š Œ švWv\ űvX űvYvZv[ ſ ű ſ ű űv] űv^ űv_ ű Wvavmvbvivcvgvd ve vf ց ց vh s r ïvjvkvl ` Zvnvq ïvovp Z svrvuvsvt s ï ƨ Ivvvw ï vx vyvz v|v~ v} vvvv Gv Zv Zvvv Zv Zvv Zvv Zv Zv Zv Zvv Z Zv Zvv Z 4{ Z Zvv Z Zv Zv Zvv Zv Zv Z Z 4{vvvvvvvvv Zv Zv Zv Zv Z Zvv Zv Z h Zvvv Zv Z Zv Z vvv Zv Z Z ކv Zv Z , Z Zvv Z Zvv Z Zvv Zvvv h Zv Z hv Z h Zvvv Zv Z Zv Zvv Zvvv Z , Zv Z , Zv Z Zvv Zv Zv Z Z vvv Zv Zv Zvv Zvv Z Z v Zv Zv Z Zv  Zv Zv Z Zv Zv Zvv Zv Zv Z Z , ïvvvvvv y ƙ ïvv ï  Zvvv Ʒ vv Œ Ʒ vv  v ˘v v v y vzQvyvy'vxw�wwwwww Œw S Œ Sw Œ Œw Œ Œw w w Sw w Œw Œ S Œ Sww]wwZww4ww!wwwwww ł ƙ ߡw z ïwwww 5p  Zww Œ = xw"w-w#w'w$w% c w& %w(w) w*w+w, Kw.w0 ïw/ ï Zw1w2 Ʒ w3 Dz ֐w5wFw6w?w7w=w8w9 š w: w;w< 54 K <w> w@wCwAwB  Œ :ywDwE Œ   ïwGwSwHwPwIwM ׭wJwKwL ּ ï Dz ï wNwO r rwQwR ü ï wTwWwUwV ï r wXwY  ƙ Zw[ `w\ ï iw^xw_ww`wwawwbwwwcwiwd Z Zwe Zwfwg Zwh Z Z  Zwjwkwn Zwlwm Z Z wo Zwp Zwq Z Zwr Zws Zwtwu Z Zwv  Zwxw}wy Zwz Zw{ Zw| Z  Zw~ Zww Zw Zww Z Zw Z Yww Zw Zww Zw Zw Z Z w Z Zw Zw Zww Zw Zw Z Z  Zww Zw Z Zww Z Zw Zww Zw Z Zww Z Zw Z ޕ Zw Zwwww Zww Zw Z  Zww Zw Zw Z Z Y Zw Zww Z Zw Zww Z Zwww Zw Z 4{w Z Zw Z 4{wxhwxwww Z Zww Z Zww Z Zw Zw Zww Zw Zw Z Z 4{wwwwww Zw Zw Zw Zw Zw Zw Zw Zw Z Zw Zww Zw Z Zw Zw Zw Zw Z Y Zw Zww Zw Zw Z Zww Z Zw Zw Z Ywwwww Zwwwww Z Z , Zw Z  Zw Zw Y Zww Zww Z Zwww 4 Z Zw Z  Z  Zww Zw Z Zx� Zx Zxx Zx Zx Z Z hxxIxxx xx Zx Z Zx Zx Zx Zxx Z Zxx Z  Zx Zx Zx Zxx Zx Zx Zx , Zx Z Zxx Z Z ,x xDx!x7x"x& Zx# Zx$x% Z Zx'x4x(x.x) Z Zx* Zx+ Zx,x- Z ; Z Zx/x0 Zx1 Z Zx2x3 Z J Zx5 Z Zx6 ޕ Zx8x@x9 Z Zx:x; Z Zx<x= Zx> Z Zx? Z Y ZxA ZxBxC Z Z ޕ ZxE ZxFxGxH Z  Z xJx]xKxW ZxLxMxU ZxN ZxO ZxP ZxQ ZxRxS ZxT Z  ZxV Z Z xX Z ZxYxZ Zx[ Z Zx\ h Zx^ Zx_xbx` Z Zxa Z xc Zxdxe  Zxf Z Zxg Z xixxjx~xkxoxl Zxm Z Zxn Z xp Zxq Zxrxvxs Zxt Zxu Z Z Y Zxw Zxxxy Z Zxz Zx{x| Zx} Z Zx Zxx Zxx Z Zxx Z Zxx Zx Z Z xxx Z Z x Z Zxx Zx Zx Zx Z Z xxxxxx Zx Zxx Z Z  Zxx Z Zx Z  Zxx Zxx Z  Zx Z xx Zxxx Zx Zx Zx Zx Zx  Zx Zx Z Z  Zxxxxx Zx Zxx Z Zxxx Z J Z xxx Z Zx Zx Zx Z ޕx x Z Z x Zx Zx Z Zxx Z Zx w Zxxxxx y xxx xx xx  Tg  xx  T  à Gxxxx y ï Zxx ̀ ï ׭xxxxxx Gxx  z r xxxxx zx 8x 8x 8xxxx 8x 8 8 9 8x 8x 8x 8xx 8 8xx 8x 8x 8x 8 8 9 xyxyxyy�y yyy ï s ï Œyyyyy ïy yy yy y   yy  Ʒ ïyyyy i Ʒ ï Vyy Ʒ ï ƨ s  yy Ʒ yy! ïyyy iy"y$ ïy# ï y%y& s à y( y)yAy*y1y+y.y,y- ս G ï iy/y0 Œ Ʒ y2y9y3y8 ïy4 >y5y6y7 ց r G Ʒy:y= ïy;y< ̀ ` ̀ ҉y> Gy? Gy@ GyByyCyWyDyE ˘ xyFyGyPyHyLyI  yJyK   yM yN  yO yQ  yRySyUyT  yV  yXy[yY ï yyZ Œ y 3|y\y]y~y^ywy_yty`ysyayjyb Ʒyc Ʒyd Ʒye Ʒyf Ʒyg Ʒyh Ʒyi Ʒ Ʒ ykyl Ʒym Ʒyn Ʒyo Ʒyp Ʒyq Ʒyr Ʒ Ʒ Ʒ yu Ʒyv K Ʒ yxy{ Ʒyyyz Ʒ Ʒ Ky|y} Ʒ K Ʒ Ky Kyyyyyy  Ʒ Ʒ K Ky K Ʒy K K Ʒyyyy Ʒy Ʒ iyyyyyy ï Zyy Z ƨ Zyyyy  ҉ ïyy ï  Zy 7yyyyyyyyyyy y j ` yy y L ïyyyy ̀ ï ï yy `y y Ʒ ïyyyyyy y ïyy ` шyyyy r ryy :yy :yy :yy :yy :yy :y :yyy :y :yyy :y :yyy :y :y yy s Ʒyz yyyyyy s Z Ʒyy N ïyyyyyy ƨ ïy yy Y yy  ï ƨ ïyyyy ƙ ï y ïyy ïy ï Dz Z xyyyyyyy Ʒ Ʒ oSyy Ʒ Œ ï Ʒyyyy Ʒ ïyy y yy  Z ï yyzyz�yy  Ʒ zz ï yz Wzz zz iz Ʒ  sz z  ï ï Ʒz z9zz!zz  zz ïz ï `z ïzz zz z z z z z z z z k  z"z)z#z&z$z% Œ dz'z( V8 Z ï Gz*z7z+z, 7z-z. z/ z0z6 9z1 z2 z3 z4 z5 9  9 z8 ïz:z; ˘z<zOz=zI Œz>z?zD Zz@ ZzA ZzBzC Z  Z ZzE ZzFzG ZzH Z Z  ƨzJzKzL ïzM ïzN ï ï :MzP ï ׭ xzRzS zT~LzU{zVzzWzzXz|zYzjzZzcz[z`z\z] Ʒ űz^ z_  ƨzazb ï s Œzdzgzezf r  zhzi i Ʒ ïzkztzlzozmzn ï ï Ʒzpzszq zr Ʒ ïzuzyzvzw ï zx  zzz{ Œ  Ʒ sz}zz~zzz z  ƙz  Ʒ ïzzz ï  Ʒzz    ïzzzzzz Ʒz Ʒ  zz T*  zzzzz Ʒ Ʒz  ە x ïz Ʒ Œzzzzzzzzzz yzzz 54 5C 8J 6 Ʒzzz  4z  L ƙzzzz  ïz s Ʒ 7zz à Ʒz z š zzzzzz z zz Ʒ ( 7zz  Ʒz ï Ʒzzzz Ʒ zz Z ïzzz zz   Ʒ zzzzzzzz  r i ïzz Ʒ ï xzzzz Ʒ  ï zz ï r Ʒ zzzzzz  Ʒ x z ï Ʒ ïzz ïz  ïzz ï ƙ z{dz{'z{ zzzzzzzz  ï z ` zz z ï F ï zzzz ï Ʒ M Œz ƙ Œz{z{�zz  i Œ{{  ƙ {{{ ƨ  {{  ï Z { {{ {{ {{ ï Œ{{  {{{{  7{{  ƙ i{{ {{ Z{ Z 8{{ Ʒ { {!{${"{# ï à {%{& ï Ʒ {({G{){9{*{2{+{/{,{- Z 8 {. ܌ {0{1  Ʒ Ʒ s{3{6{4{5 Ʒ  ƙ {7{8 i Ʒ {:{?{;{= ï{< ï Ʒ{> ï  k{@{D{A{C{B Z Ʒ k{E{F ï Œ Ʒ ï{H{V{I{O{J{L Ʒ{K  Ʒ{M{N d 7 ( ï{P{S{Q{R Z Ʒ ï {T{U  {W{^{X{[{Y{Z  ï Ʒ {\{] ƙ 7 {_{a{` ï V{b{c  ï 6{e{{f{{g{t{h{n{i{k{j ƙ  {l{m y  Ʒ ƙ{o{q{p ï ï {r{s x Ʒ ƙ ï{u{|{v{y{w{x Œ Z {z{{ Ʒ ƙ Ʒ{}{ {~  {{ Ʒ i ï ƙ{{{{{{ {  {{  Œ {{{{  ƙ ï{{ ҉  Ʒ {{{{{{  ƙ ï{ C{{ r Ʒ {{{{ ï { ï  {{{{{{{{ ï{ ï Ʒ{{ ï ƨ {{{{ ƙ ï {{ z Œ  Ʒ{{{{{{  à Z {{ ï  {{{{ ï ƙ {{   Ʒ{{{{{{{{ ƙ ƙ {{  r ï Z{{{{ ï Œ {{ ƙ Œ{{{{{{ Œ ̀ Od{{ Ʒ   {{ {  >{{  Ʒ ï {|[{|{{{{{{{{{ Ʒ  ï{{ s  {{{{ ï r ƙ{{ Ʒ  Ʒ {{{{{{ s{{ ł ï N{   ï{{ {  Ʒ{{ G  x{||�||||| r ||  ï || |  i| |  | | i ||||  || Ʒ  ł||| ï x | ï Œ ï||?||.||$||!|| ï  ï L|"|#  ï  |%|)|&|' ƙ Œ|( L |*|+  ï|, à|-   ï|/|8|0|5|1|4 ï|2 Ʒ|3 V Ʒ  ï|6|7  Ʒ |9|<|:|; ï à ï 7|=|> ï r ï|@|M|A|G|B|D |C Z |E|F  Ʒ Ʒ ï|H|K|I|J ï Z  ï ï|L  ï|N|T|O|R|P|Q ï s ƙ ï|S  ï|U|X|V|W Ʒ |Y|Z ƙ i ï|\}Y|]||^||_|~|`|o|a|h|b|e|c|d  |f|g  à  G|i|l|j|k   |m|n  ï Ʒ|p|w|q|t|r|s Ʒ Ñ|u|v Ʒ Œ š|x|{|y|z 7 |||} Ʒ Z |||||||| ï  | ï  ||||  i || Z ï k|||||| ƨ  ï|| Ʒ ï Ʒ|||| Ʒ  e|| ƨ ҉ ̀|||||||||| 6 ï| à ï|| | Ʒ ï|| Ʒ 6 |||||| Ʒ || s ï |||| Z Ʒ k || Œ Ʒ Œ|||||||| Ʒ ï || Ʒ  ҉ |||| ï Z  Ʒ|||||| 6||  i Ʒ x|||| Ʒ Z 6|| ƨ Z 7 ï|}|||||||||| à ï G|| x 8 Œ|||| š i ||  s |||||| i Ʒ Ʒ s|| ï Ʒ ||||  ï  ï|| s Z|}|}|||| ƙ Ʒ ƙ |}� Œ ց d s}} i }}  š ï}}}} } } y Ʒ  Ʒ} } x k z}}}} ï Ʒ }} à Z}}2}}%}}}}}} Œ Ʒ } G Z}}"} }! d y Œ 7}#}$ i à > [}&},}'}*}(}) ï Ʒ ï 7 ï}+ ï}-}0}.}/ V Ʒ ï ï}1 Ʒ Œ}3}B}4};}5}8}6}7 ï Ʒ i}9}:  Dz ï}<}?}=}> Ʒ   }@}A ü i k}C}J}D}G}E}F 7}H}I Ʒ Ʒ }K}N}L}M Ʒ  ҉}O}X}P }Q }R }S }T }U}V }W i ï }Z}}[}}\}{}]}l}^}e}_}b}`}a Z s Dz}c}d ï Z z}f}i}g}h ` ï Z}j}k Ʒ  ï 7}m}t}n}q}o}p ï ` }r}s ̀ Ʒ }u}x}v}w Ʒ ï `}y}z  R ` ˘}|}}}}}~}}} V  ï }} s  }}}} c  V Z}} V  ï V}}}}}} Ʒ ƙ Ʒ}} G à ï }}}  ѧ Ʒ}} ï y}}}}}}}}}} Œ  ï}} Œ à }}}} G ƨ }}  V V}}}} ï} ï }} ï  ï}}}} Ʒ  } à Ʒ}}}}}}}} z Ʒ  à}} à Ʒ Z}}}} ƙ Ʒ  ҉}} UZ ƨ}}}}} ï ï i}} d Ʒ à}}} i}} Ʒ}~}}}}}}}}}} x }} Ʒ ƙ ` }}}  ï Ʒ} ï}}}}}}   ï}} S x }}}} Z ï ï G}} ï }~}}}}}} ï }} r }~�}} s ï~~ s ï ~~ ~~~~ Ʒ  ï ˘ ~ ˘ ~ ~ ~  ҉~~  ï i ƨ~~.~~ ~~~~~~  y ï~  ƙ~~~~ à Ʒ~~ ï  r~!~(~"~%~#~$ i ˘ ƙ s~&~' ~)~,~*~+ ƙ i   d~-  s~/~>~0~7~1~4~2~3 ï ~5~6  ï ە~8~;~9~: ï Z Z ~<~=  x Œ ~?~F~@~C~A~B Ʒ Z ƙ~D~E ï  Ʒ ~G~J~H~I s Ʒ ï~K Z d~Mu~N~~O~~P~q~Q~`~R~V ~S~T~U  z Ʒ ï~W~Y Ʒ~X  Od~Z~[  ~\~^ ~]  t~_ ï  ~a~j~b~e~c~d Ʒ  Ʒ~f~i ~g~h ï Dz ï Ʒ~k~n~l~m ƙ Ʒ ~o~p  ƙ ~r~~s~|~t~w~u~v s ƙ ï ~x~{ à~y 6~z ï Dz Œ ~}~~~~  ï Ʒ~~~ ~~ š Z ï s Ʒ š~~~~~~ x ѧ  Z~~ s  ï ~~ ï~  Ʒ~~~ ~ 7� 7�  ~~~~~~~~~~ ï Ñ ï ~~ Ʒ r~ ˘~ ï ï ~~~~ r  ï Ʒ ï~  Œ~~~~~~ m  ï ƙ~~ ƙ~ ï~ ï Z Ʒ Œ~~~~  ~ ~~ s Z ü ï~ Ʒ ~~~~~~~~ ~~   Ʒ ~~~~ ~ x~~  i ƃ Ƒ ~ ï ~~~~~~ ƙ~~~ ~ ï~~ d y~ š~ š š~~ š~ š~ š š~ š~ B š~~ ï~  ̀ ̀ ƙ~~~~  ï  ï  ï~5~ ~~~~~~~~ ~ r~ r   ï ï~ ï ~~~~ 7 ï ï~~ r ï ;8~~~� ï  ï y ï ƙ ï  ï Ʒ  Ʒ     ï  ï Ʒ Œ  ï à Ʒ Ʒ ï ï -, Ʒ ï ï+ ! ?"%# ?$ ?  ?& ?' ?( ?) ? ?* ( ?    ï.2/0 Ʒ1 Ơ ï34  L ҉ ï6W7F8?9<:; ï  ï => Ʒ ̀  >@CAB Z ï Œ ïDE  Ʒ GMHKIJ ï  ïL  ZNTOP y Q RS Ʒ ï  UV  y Ʈ ïXeY_Z\[  Ʒ]^  Z ï Ʒ`cab Œ  ï N ïd Z ïfmgh ï ij ï Ʒkl Ʒ s Ʒnro ïp ïq ï ̀st ï Ʒ Ʒ ïv wxyz{|} Œ ~   ï ï     ց ï  ï   r Ʒ  ï  Z   ï  ï Ʒ ï Ʒ x Ʒ ï ï ï   Ƴ ï Ʒ  x  ï ï N ï s ï ï  ï   Ʒ ï    ï r ƨ ű Z ï Œ  Ʒ  s ï Ʒ r  š ł  k Z ï Œ ï  ï  à Z ï  y ï  ï ï y ï   r ï  ï   d  ï� ű k y ï         ï Ʒ ïO-   6   Ʒ ï  Z  ï ƽ ï  Ʒ !'"%#$  y ƙ Ʒ ƙ& ƙ (+)* Z  ï ï, ï.@/80512 ï34 ï } s š67 ï s ƙ9<:;  ƙ Ʒ=? ̀> Ʒ r ï AHBECD Ʒ ï FG  Ʒ ILJK Ʒ ï MN ï `  ïPqQ`RYSVTU s ï ҉WX  x Z][\ ï ï š^_ Ʒ Z ƙajbfce ƙd  ƙ i gih à i Ʒ Œknlm Ʒ Ʒ op  zrsztwuv ƙ ï Zxy  ƙ{~|} Ʒ ï  ï ï    i s   ï Ʒ  ï 7  ï ï i Ʒ ̀ ï Ʒ Z Z V ï  ï i à ï  Ʒ Ʒ  ï d   Ʒ  Ʒ  ï ï ï Œ ï  à   ï d ƙ  ï ï  Œ ï   ƙ  ƙ Ʒ ܹ ï  ï ï `  Ʒ s Ʒ y ƙ } Ʒ Ʒ ï K 6 6  Z  ï  Ʒ r x  y Ʒ à Z  š i ƙ  y  y i r�  r z ï à Ʒ  ï  ï ï Z   M0! Œ  ҉  y Z Ʒ  7 s >")#&$% '( ï ` ï*-+, y  > ./ ï  1>293645 Ʒ ï ï78 G 7 3:<; ï Z ˘= Ʒ ?F@CAB  Ʒ 7DE ï y ƷGJHI Ʈ z KL  ƨ  xNlO]PVQSR TU š ƨ iWZXY Ʒ š ƙ[\ Ʒ ^e_b`a Œ  cd ï Ʈ à figh ƙ jk ƙ Ʒ  m|nuorpq   ցst V Z Œvywx š Ʒ z{ Z š  }~    à ï ï ƙ ï d  à ï Ʒ ï Ʒ  à à ƙ i   à y ï Ʒ  s    ҉ i ï ü   ` ï  ï Z  Œ  Ʒ ƙ  Z Ʒ ï ü ï Ʒ ï Œ Ʒ Ʒ    s  ü  ƨ 8  ï ü Z <u Z ï 7 Z Z ƙ ï à  7 Œ Z ƙ Z Z   h <u  ƙ ï <u Z ï   Ʒ� ï Ʒ  ï ï C%    Œ r   Ʒ ƙ š  x ï    Z k ï Z Ʒ   ƙ" !  Z Ʒ#$  y &5'.(+)* V Z,-  i/201 Ʒ  34 Z ƙ d z6=7:89 Ʒ Ʒ ;<  ï >A?@ Ʒ Z Ʒ ïB Ʒ ƙDbETFMGJHI  ï ü ïKL ï ï NQOP ï RS ï :M Z U[VXW ï YZ  ï š\_]^ y ï`a Ʒ ï Ʒcrdkehfg d s  ij r ƙ Zlomn š Ʒ Zpq ƙ  sztwuv à G Ʒxy Ʒ Z  ï{} | ï ƙ~ ï  ï ï ï  7 tI   V  Ʒ s x ï ï Ʒ Ʒ Ʒ Z Ʒ i    Q   i d    ƙ 8 z Z ƨ  Ʒ ` Ʒ ` ` `  ƙ i Z   s ƙ  ƙ Ʒ    ˘   ˘   y   ˘ V ï  Ʒ Ʒ  ˘ d Z Q i Z Œ ï d  7  Œ ƙ `  Z ˘ V   ҉ ƙ< � ï  Ʒ r  ï   ï Ʒ ï i Œ    Ʒ ƙ ï x ï ï ï  ï  ï Œ  1)! Ʒ ï :y "% #$ ï ï& '( ï Œ ƙ*.+- ï, x ï ̀/0 Od ˘ ï 26 ï345 z s ï 7:89 ï Ʒ Ʒ;  ï=i>Z?T@FAEB ïCD  ï GRH ïI ïJ ïK ïL ïM ïN ïO ïP ïQ ï ïS ï z ïUXVW ï ïY ï ü ï[b\_]^ Z   ï`a ï Ʒ  ïcfde 2 Ʒ ï xgh   ïjxkqlomn ï   ï ïp srust  Z Œ vw  ï ï xyz~{| ï }  ü  ï  ï Ʒ Ʒ ï x ï  Ʒ ܜ  ܜ{  ш  Ʒ  Ʒ ï 8 Ʒ Z x Z  ` x  Z  ƙ Ʒ Z  i  Ʒ V 8 Ʒ  ƙ i x ƙ    V ï ï i ï s Ñ  ï Z ƙ ï ƙ  ï ƙ ҉ ï ƙ  s ƙ         à  Z   ï Q5  Ʒ Ʒ  E N  y  :y ï Z  4/ ƙ V   4/ ƙ � ˘ à  Z  ï Z  4/  ï 4/  N  ƨ ƷJ- Z i   ï Ʒ ï  Ʒ Ʒ ƙ &!$"# L ï Z% ï ƙ Ʒ'*() Z  Ʒ+, d Z ï .</502 s1 ƙ 34 ҉ Ʒ s6978 ï Ʒ Ʒ ï:; Ʒ   =D>A?@   ƨ ïBC N EHFG  7 I ƙ Œ àKjL[MTNQOP ƙ  RS  ï ï UXVW  ï Z YZ Z Œ\c]`^_ Œ Zab   dgef ï ï shi ï Ʒkzlsmpno i  ï ƙqr Œ s ƙtwuv x  xxy Z  Z ï{|}~ ƙ s Ʒ  > ƙ V  s G  ƙ `  Œ ƨ    ï s G r ƙ x  ï Z ƙ i ҉ ƙ  ï  Z Z  N   ƙ ï  Ʒ ï G Z > ï y ï O z  ƙ ƙ Ʒ     Ʒ k y ï  i Ʒ  d ƙ  Z Z  V  5% ï Ʒ Z     Ʒ   ƙ Z  ï Ʒ Ʒ ï   ï ï  Ʒ   r Ʒ� Ʒ ï y@"    s ï     ƙ   Ʒ ï ï ï r ï Z Z   G `  s  Œ ! Ʒ ` ï #1$+%(&' r Ʒ ï)*  ï `,. ï- Ʒ /0 ` š 293645 à  Œ78 Z ü  :=;< ï  š >? š  űA^BQCJDGEF UZ Ʒ  HI ï KNLM š d yOP ҉ Ʒ RYSVTU  s rWX ҉  <Z[ \] _l`gadbc y Ʒ ef z Z hji k Ʒ Z Ʒmtnqop ï Z ïrs ï ƨ Œ ̀uxvw N ï Œ 7yz ƨ ƨ Ʒ|}~ Ʒ ƙ  i Ʒ  Ʒ  ï ̀  Ʒ ï s ï ł ł s ï  Œ  ï à V   ï Dz ï ï  ï ʵ   ï ï  8 r   ï ̀ ï  ï š r ï ü ï  ï š ï ï  L ï    Ʒ   r ï  ï Ʒ ï ï Ʒ     ï Ʒ ï ï Œ ̀ Ʒ ï ï ï  ï  ï ̀ ̀ ̀ ̀ ̀ ̀ ̀ ̀ ̀ ̀   x  ï i  3| ï ï ï x ï� ï Ʒ ï Ʒ ï  ïK�  G *   Œ ï ` Ʒ Œ ƙ 7  i #  Ʒ s Z!" 7 ü  $'%& Œ Ʒ Z ƙ()  Z Ʒ +9,3-0./ Œ  12  s 4756 7 Z 8 ï ü:@;= ï< ï Ʒ>? ƙ ï ADBC Ʈ Z ïEF G  Œ HdIWJPKNLM Ʒ Œ ï Z ïO G xQTRS ï ƙUV z ƙ X^Y\Z[ ƙ ï  ] > _a ` ƨbc  xetfmgjhi ï ü ƨ Ʒkl i s inqop   Zrs Z Œu|vywx  ï Ʒz{ k i ƨ}~ ï ï d Ʒ ï s ï ï    Ʒ   Z    ƙ 7 ˘ ï ƨ Ʒ G ƙ ƙ ѧ ѧ ƙ  Ʒ    ï  ü ï r ƨ Z  x ï  ƙ ̀ r z i   ü Z ï 8 ̀ Ʒ Ʒ Ʒ Z  ï ƙ  ƨ Ʒ Z Ʒ ï z  ï Z L ï ï Ʒ Ʒ  ï ̀ Z à ƨ Ʒ ƙ i ƙ Z    ƙ Z   7 Ʒ     ł  à x `@"   Ʒ ï :y ï ï  Ʈ   ï Ʒ ï  Ʒ ƙ  ˘ ï  Ʒ ï Z ï Ʒ ï r  !    ï#2$+%(&' `   ï)* :y ï S ,/-. ï ƙ 01  Z394756 r Ʒ  ï8 ï Ʒ š:=;<  Z >? d A~B`CQDKEHFG  ï ƙ IJ Ʒ i LN ïM Q šOP Z Ʒ ïRYSVTU  ƨWX x Ʒ ZZ][\ Ʒ Z z^_ ï Ʒ ïaobicfde š Ʒ š Ʒgh Z  šjmkl Z G  Ʒn Z pwqtrs  ï uv ï Œ Ʒ x{yz ï ű Œ ƙ|} Œ ï  d ƨ ï c! ï  Ʒ  c! i ï ƙ Ʒ x c! Ʒ Œ   ï x Ʒ Ʒ à ï Ʒ c! Ʒ ï Ʒ  ï Z  Ux ƨ # >  Ʒ z  L       ƙ ï   ƨ y ï            ï    Ʒ ׭ ƨ Ʒ  Ʒ x ï  ï  ï  ï ï 8  ï ï  Ʒ V ƙ VG Ʒ VG  ï y r�  Ʒ Ʒ Œ Ʒ  Ʒ ï s ï r   Ʒ ï ï ƙ -  Ʒ ï ï d ï ܜ  t Od  ï r ï  ï  '!$"# ï ï %&  G ï ҉(* ï) Ʒ +, Ʒ Ʒ ï.;/60312 Ʒ ˘ ï 45  ï i ï79 ï8  ï: Ʒ ï<E=?> ï ï @D ƷABC 8; Œ FI ïGH G ï rJ ï LMFNOPnQ`RYSVTU Ʒ ï WX s ï  iZ][\ ï^_ ï ƙ ƙ ahbecd ï Ʒ Ʒ Œfg  à ik j ƙ Zlm  G  ïo~pwqtrs Ʒ ï uv  ï Ʒx{yz  L |} Ʒ ï Œ ƙ ƨ Z  Ʒ  ï Œ  ï <:  ƨ  7 ï  ƙ Ʒ ƙ ï  `  ï   T Z ƙ ï  D  ï ü ە ƙ Œ    7 Ʒ  Ʒ   z ï ` 7 ï `  Z Œ  ï ƙ r  ï O    Ʒ z ï ï 7 ï ` ѧ  s y ü ï ï  ƙ Œ  ï  7 ï ʵ    ï Ʒ y ï ƙ s ï ï z G >  � z Ʒ  ï ƨ ƙ z ï Q ï x k 7 (   Œ à ш y Z   Z r  Ʒ ï ü" z ï ! ï#%$ ï y&' ï Ʒ ï)8*1+.,- Ʒ Œ/0 ï  2534 ƙ ï 67 z ˘ Ʒ 9@:=;< ƨ `>? Z Z GADBC Z  3| G E Œ GHeIVJQKNLM ï r ˘ OP ѧ RT ïS ҉U ï ï ƷW^X\YZ s ï ï[ Wa ï ï] Ʒ r_b`a ï i ï cd ï ï fvgohlij  k ï ï mn r  ƙpsqr ï   tu Ʒ ï Z Kwx|y{ z ï ï} ~ Z Z Z Z Z Z Z Z Z 4 ï ˘ ˘ Ʒ `  Ʒ  Ʒ 8 y    ï i Ʒ Z r   ï Ʒ  ï ï  Ʒ ï ï  ï  ҉ > ï   ï i ï ï ҉ i   r Ʒ  8  L Z   s  ` ï Z ï ï  Z  ց   x Ʒ ï    r Ʒ   Ʒ Ʒ    ̀  Ʒ ˘ Ʒ  Ʒ ï Ʒ� ï V V  Ʒ Ʒ  ï Ʒ ï  r  Ʒ  Ʒ ` ҉ ` ï Ʒ ï     Ʒ ï ï  ï O0! ƨ ï  Ʒ Z Ʒ  ƨ à s Ʒ Ʒ ï")#&$% ց  ï '( 7 Z Ʒ*-+, V ï ./ ï V  Ʒ1@293645 ï Ʒ ï Z78 y ï :=;< Z z >? ï ƙ ŒAHBECD ƙ ŒFG Ʒ à ƷILJK  Ʒ MN d Z ïPoQ`RYSVTU Ʒ V x ïWX Ʒ ˘ ï ZZ][\ Ʒ Z r ï^_ Z  Ʒ ahbecd Ʒ  Ʒfg Z i  iljk  ï ï mn Œ ï dp~qxrust  ï vw y Ody|z{ z ï à ï}     ƙ ï Ʒ ï   4  Z  ï Ʒ  Ʒ z K  ï ï Z  Ʒ   ƙ  Z   ï  s ƙ ƨ ƙ Z Ʒ 2  L Ʒ Ʒ ï Ʒ  ˘ Ʒ ï  ï   ï š Ʒ ƙ   ï ƙ š i ï 7 Ʒ ï ƙ   Z L ˘ ҉  Ʒ y    ï Œ  Ʒ G  ï Ʒ        ï    ï � Œ Œ   i V ï     Z Ʒ ï > ï  ï  V Ʒ ï ï Z ï XX<. &!$"#  Z % ï'*()  ï ` ï+,  Ʒ- ï/502 ï1 Œ Ʒ34 ƙ ˘  Ʒ6978 r ƙ ï :; Ʒ r Ʒ ï=K>E?B@A r  CD s  ï LFH ïG  ïIJ r LSMPNO  ï r ïQR Ʒ ï `TVU Ʒ  W ï Ʒ YwZg[a\_]^ Ʒ ï ï ï`  Ʒbd Ʒc Z ef ï  3_hpiljk Z  ïmo n ƨ  iqtrs `  Ʒ ïuv Ʒ > xy}z|{ Ʒ Ʒ ï  ï~ ï i ƙ Ʒ Ʒ ï Ʒ  Ʒ Z ï Ʒ  Œ      Z  Ʒ ƙ ï Ʒ ï ̀ ï  š ƙ ï   `  y ï Ʒ    r ï  ï   ï ï L  ï Ʒ  ï  Ʒ  Ʒ Ʒ s ï   ҉ ï ï   ï  ï Ʒ s š ïG ƙ  Ʒ V ï ï  Ʒ Z ە Ʒ Ʒ Z ï   Œ Ʒ Œ    ƙ ï Ʒ  ï ï Ʒ s ï Ʒ G ï ï Ʒ� Ʒ . Z  ï s Ʒ ˘ Œ ï Ʒ ï r '    ï  ï ï  ï Œ Ʒ s ï  ï Ʒ ï ï ̀ V ï"  ï ! 4 Œ #&$% Ʒ ï ï  ï (8)2*-+ Ʒ, Ʒ  Z.0/  ï  ï1 35 ï4  Z r67 ï :y \9?:<; Ʒ ` x= Ʒ Ʒ> ï @D ABC V à űE  F ï ƷHIjJYKQLO ƷM ƨN ƨ r ïP ï NRV ïSTU Ʒ ҉ ïW ï ҉X Za[^\ Ʒ] ï ï š_ ï Ʒ`  bgced ï  Œ ïf ï 6 Ʒh Ʒi Ʒkzlump Ʒno à ï qs Kr  Ʒt 6vw Ʒ `x ï Ʒy ƙ ï{|}~ r  Ʒ k Ʒ z s Ʒ ï  Ʒ  Ʒ Ʒ ü  ƙ i r ï G ï \ ï ï  ï Ʒ ï à ƙ Ʒ ï i \ ï  Ʒ i  ï ׭ ü Œ   Z r Ʒ ï Ʒ Ʒ  Ʒ ï Œ 7 Ʒ  ˘ ï  r  š ï ` ï y  \  J   Ʒ ï Ʒ  ` ï ï Ʒ ƙ Ʒ ƙ x ̀ r ï Ʒ ï ï   ï  ï ï  ï  Ʒ  Ʒ Ʒ Œ  ï ï r ü Ʒ i ï ï ƙ� ï  à ï Ʒ#  ҉ ` š ï Ʒ ƙ    ƙ ï š   9 Ʒ ˘ à š ï  Z ƨ ï ï 6b ï! ï Ʒ" Z `$4%-&)' Ʒ( Œ ̀ Œ ï*+, Ʒ ï š .1 ï/ G0 y 72 ï3  5?6: ï789 ï  ï ;= < > ï  Ʒ@DAC B ˘ ïEHFG à ƙ ï I ƨKLnM^NUOTPR ƙQ ï S ƙ ï ƙVZ WXY Z y Ʒ []\ Ʒ r ˘ ƙ_d`ba ˘ ҉ ƨ Ʒc ƨ `ejfhg ï ï i  ܌ k lm Ʒ ïo~pvqsr Ʒ Ñ t u ï wx  Ʒy{ Ʒz R|} G  Z ï  ï  ï Dz Ʒ ï ï Œ    x  Z Z  y  Œ ̀  ï ƙ ƙ  ï ƨ N N ,{  Z  ï  š Ʒ ƙ ƨ Ʒ s  ï s ï ï Ʒ  ï ï  ï Ʒ ï ` 8 Ʒ  ҉ ï   Z Z š  ï  ï i ï Ʒ   ł à r Ʒ Ʒ7 Z x Ʒ ï ï Ʒ ï ï  Ʒ  ï   `  Ʒ ï Ʒ k Ñ ˘      3_� à  ï  ï ï  ï Ʒ    i Z 7 ï Ʒ ï ƨ Ʒ Œ à  ƨ  Ʒ ï ƨ Ʒ ï  ï1 $!#" Ʒ s ï s%' & ï Œ() * + , - ./ 0 / Ʒ23645 Ʒ  Ʒ ƙ ҉ Œ8X9K:A;? Œ<=> Œ ï ï ï@  BHCFDE r s ï G ï Ʒ ƨ ïI ƷJ ï ƷLQMON Ʒ ƷP Z 7RU 7ST ï Ʒ ïVW ï Z YiZ_[] x\ ï  Ʒ^ Ʒ ƙ`d ïabc Z 8 ü ïeg ïf ï ەh Ʒ  Ʒjvkolnm ï ï 8 ï xpsqr ƙ Ʒ ƙ Ztu à  iw|xz ƙy { ï}~ ƙ  ï :y ƙ  Ʒ Z   ƙ Ʒ ï Ʒ ѧ Ñ ï Ʒ Ʒ Ʒ Ʒ r Ʒ Ʒ  Ʒ Z ҉ Ʒ  N Ʒ s Œ ï > Ʒ  Ʒ  Ʒ  Z Ʒ ï Ʒ  ï Ʒ 7 Ʒ ï Ʒ Ʒ Ʒ Z  ï ï ƙ Z Dz Ʒ ï   ï i Ʒ Œ Z Ʒ s ï  ï Ʒ  r s Z d ï Ʒ s ï   8Z r 8Z à ï   Ʒ  ƙ ƙ ï i ï k ï Ʒ ï 8 K ƙ Ʒ Z  ï ï ƙ ï Ʒ�  Ʒ Ʒ Ʒ ï$ C$   ï  Ʒ ï  ƙ ƙ     Ʒ ï ï   Ʒ ï Z Ʒ Ʒ Ʒ ƙ!# ƙ" Ʒ Œ Œ Ʒ%2&+'* `( `) ï ` ,0- r./ ï r y1 ï  Ʒ3<4957 6 ƙ Z 8 Ʒ Z: ï; =@> ? ּ Ʒ ï ïA B ï ƷDhEUFNGKH ïIJ   ïL ƷM š š OP ï QSR _ T  V]WZX Ʒ ƷY ï ï[ ï\ ƨ Ʒ^d_a`  Ʒ bc s ƙ Ʒeg ƙf ƙ Z ï Ʒivjpkn Ʒl ïm o ï ïqtr rs ƙ xu ï wx}y{z ƙ Z ï| ï ƙ ܹ~      Z ï ï ï r Ʒ Ʒ ï ƙ 4/ ƙ ï     Ʒ   4/ G ï ƙ Ʒ ï x Ʒ V   Œ Z  4/ ï ` Ʒ ï r ï Ʒ ï 4  Ʒ Z Ʒ  ƨ ï  ï  ï 4/   Ʒ  ƙ Ʒ Ʒ  7 Z ƙ Z    ï ƙ Ʒ i  ҉ ï ï Ʒ Ʒ ï Ʒ Ʒ ï ï ҉ ï  s  d Ʒ ï ƙ  ƙ  ü ƙ ƙ K Ʒ 7 ï r ï �  ï Ʒ ï Ʒ Ʒ ï ï s Ʒ ˘   ? .   Ʒ Ʒ Z Ʒ ï ï  4 Ʒ x ł   & # !"  =$ Ʒ% V '-(*)  Ʒ+,  Ʒ ï ƙ ï/6031 2 ï ï Ʒ45 ï z  x7<8;9 Ʒ ï: ï  Z ï=> Ʒ ï ƙ Ʒ@_ANBFCD Ʒ E  ƷGMHKIJ Ʒ ï Ʒ ïL ƙ  i ï ƙOVPSQ ïR r  ïT ï ƙU ï W[X ïYZ Ʒ ï ï \] Ʒ^ ï `takbec d Z d figh ï 7 j  Ʒlqmn ̀ op ƙ r ƙs N Ʒuvzwx ï y 7  {~|} Ʒ > ׭ Z s Z  ƙ Œ ƙ Ʒ Ʒ r Ʒ 6 ï Ʒ ƙ š ` ï  Ʒ ï Ʒ ï VG ï   ï ƙ   ˘ y  ƨ ï  ï Z      i  i  i   i  ï  ï   i ï  ï ƨ ï à ï  ƙ ï s ƙ Ʒ Ʒ ï š  ܜ ܜ ܜ ܜ ܜ ܜ ܜ  ܜ ܜ ܜ ܜ ܜ ܜ  ܜ ï Z i  Z ï à ï Ʒ Ʒ ï ï Ñ Ʒ ƙ x ƙ� V  ï   ï ï ̀ ï r    Ʒ  Ʒ r Ʒ ï   ï Ʒ ï Ʒ  Ʒ ï i ï Ʒ # ï!" ï x Ʒ%6&'g(K)=*2+., Ʒ- ï Ʒ /0 Ʒ ï1 ï ï Ʒ384756 i  Ʒ ï9;: ï Z< ï i >E?B Ʒ@A >  V rCD ƙ > FG ï ƷH ïIJ Ʒ ƙ LXMS ˘NOQ ƷP < ƙR  ƙTWU Ʒ ïV ˘  ïY^Z[  ï\ ï] ï Ʒ_b ï`a  2 ce ïd if  ï Ʒhiujpkm Ʒl Ʒ ïn ïo  ï Ʒqr x ïs t ï Zv~w{x ïyz Z Ñ Ʒ| Ʒ `} ƙ  ï ï G ï ï i   ï   ü ï  ï Œ Œ i  Œ ï ƙ   > ƙ  ƙ ƙ Ʒ Ʒ ï  ƙ ï Z ƙ 7 ï  ï Z Z Z Z Z Z Z Z ޕ Z  s Ʒ ҉ ï ҉  ҉ y ï  Z Ʒ ï ƙ   ƙ V r ï Ʒ ï x Ʒ Ʒ Œ   Ʒ  ï Ʒ  Ʒ Ʒ ï Ʒ Ʒ X  Œ ƙ ƙ ï Œ ï x  ï Œ   Ʒ   Ʒ   ƙ   Ʒ Œ   ï� ï Ʒ ï  Ʒ Ʒ     Ʒ ï  ˘ ˘ Ʒ Ʒ š  ï ï  ï Z ï Ʒ Œ) ï ƙ Ʒ  ï ï  &!#" Z ï$% Z ï Z' ï ƨ(  Ʒ*/+. Ʒ, Ʒ- ï  r01  2534 ƙ ï Ʈ à ï `78~9\:L;D<A=?> ï ` Z@ B üC ï  EJFH G Z ּI  ïK ï 7MTNSOQP ï 7 R ƙ Ʒ ƙ K ïUXV Ʒ ïW ƙ Œ ƷYZ[ Ʒ Ʒ Z]n^f_b ï` ïa š >cd Z Ʒe Ʒ ïglhj ïi k ï  Ʒ ïm ` üotpq ï r ï =s x Ʒuyv swx  ҉ š ïz| ï{ ï Ʒ} ï ï Z Ʒ  ï ï Ʒ ï    Ʒ š Z ï i   Ʒ ï Ʒ  Ʒ ï ï ï ƙ   x ï ï š x i š ï i š Ʒ ƙ 7 ï Z  ï ï 7 ï Ʒ 2  Ʒ ï Ʒ ï s x ï Ʒ x  ï Z ü ƙ x `  ï ï  Ʒ ï VV y   i Ʒ  ï ï ï x   Od Z  Z M ü ï Ʒ ï ï Ʒ j       ï d  ï Ʒ � ï  ï ï i ̀  `    Ʒ ï Ʒ  x ű V ï i ƙ ï6& ï ƙ Ʒ ï  ï$" ! Ʒ :y k `#  Ʒ% ï',()  ƙ Ʒ*+  ï ƙ-0. Ʒ/ ƙ ï 1423 ï Ʒ   Œ5 ï7F8@9=: Ʒ;< ̀ ƙ L r>?  ƨ ƷAD B C ` ïE ƙ Œ àGPHMIK ƙJ ƙ ï ïL ƙ N rO ּ ïQUR ƷST x  ƨ ] ƷV yW Ʒ ŒY8Z[.\]^}_n`faebdc š ƙ ƙ ̀ Ngjh i  ï k Ʒlm ï ƨ ozpvqtrs Z ï ru ï ï ƨ wxy Ʒ ï r {|  `~ Œ Ʒ  Ʒ Dz ï Z Ñ Z Ʒ   ï ï i K Ʒ ƙ ï  Ʒ ï  Ʒ ï ƨ Z ï ï ï Z  Ʒ Ʒ K Ʒ  à ï r ƙ V ƙ Ʒ ƙ ï  ï K s :y ï ï K ` ƙ ï i ƙ i < ƙ i Ʒ Ʒ Œ y y  ց ï ï ï s ï  ï ï Ʒ ï s d  ï à ƙ Ʒ ï  Z  ˘ Ʒ Œ Ʒ x   Ʒ k  ï Ʒ r ï s ï ` ï r Ʒ 7  7 Ʒ Ʒ� Ʒ Z ï ï ï ƨ V Ʒ ï Z   ï   s 7  ï s ï z `  *    !"  #$ % &  ' ()   Od+,  r-   ï/W081 ü ׭236 ï4 ï5 ` ƙ7 Ʒ ƙ 9J:A; < =?> Q& @ ' B ïCGD ïEF  ï Z ï ïHI Ʒ K dLM  yNQ OP ïRUST ƙ Ʒ ƷV  XYc Z[a\] 6 ^ ï_` ! ּ ּ ! ïb 6 ïdueofkgh  Ʒij ï y lnm j C? D> Z p ïqr  st  k ïvw}xz ïy {| ƨ Z s 7~ ï ˘ ï `  `  s ï Dz ï  ï  ï ï ï Ʒ  ̀ ï  ƨ `    ï Ʒ ï 4 Ʒ ï Ʒ o Z  ƨ  Ʒ Ʒ d  ï ï ï ï ï ï ï ï ï ï  Z  ï ï ƨ ƙ Ʒ ï r ï = ï  Ʒ ƙ K ï  ƙ  ̀ x z ï ƙ Ʒ   š i Ʒ d L  ï ` .  N  N   ƙ� d ï   x Ʒ 8 Ʒ ï ï ï Ʒ ̀ ï ̀ Ʒ  ƙ ï Ʒ ƙ   K ƙ ƙ ƙ ƙ Ʒ   ƙ à ï% ï ï x  ҉ ̀ #  ï r ` d!" y Z ï$  ï&+' d ï() ï* ï Ʒ,1 ï- ï. ï/0 ï ï 243 ï  y ƙ5 ï67 ï Ʒ 9 s :; `<D =>A ? @ BC E ŒF `GH ƙILJK 5 ƙ ƷM ƙ š üOTPQfR SThUV`W Œ ŒXY ŒZ Œ[ Œ Œ\ Œ] Œ^ Œ_ Œ Madbc ï ïefgh|inj km l r roq Op = Or Ost Ou Ov O Owx O Oy Oz O{ O}~  = r r = r  O = O = O r r 8Z r  =      r z   ֞ lj  ֮ 9   ֞ 9E  Ǘ   ֞ lj lj  ֞ ֞ 9 :  ֞ ֞ ֞ 9 ֮  ï ï ï š ï Œ Œ ֐ ï ׭ ï y  y 8 ց 8 8 ց ï s          4? TI ï ï  Z Y Z Z Z Z Z  Z Z Z Z Z  Z Z Z Z Z � Z  , Z Z Z h Z Z Z   Z  Z Z Z  Z Z Z Z Z Z Z g >'  ï ï s ƨ  ` !$"# y Œ s ï%& s Ʒ (7)4*3 ï+ ,- . 4?/ 0 1 2 Œ56 ï  8;9: ï ï Z<=   ?V@GADBC ï  ց rEF Œ rHLIJ iK i  ïMU NO P Q R ST 65 Ʒ iW`X[YZ Z Ʒ ï\_] ҉ `^ ü ï i ïadbc ` G n ef i s Z ƨ ̀ijkxlomn ҉ 7 pw qrust b 3 b 3v b 3 + ï ̀y{z ï ` |}  ï~ ï } ü     ˘  G ە ï   ï Œ  ï  ï ە Ʒ ƙ ̀  :y ˘ < <  j j 7� ï ց Ʒ i   ƨ ï  G r ï Z Z Œ Z `           Ƴ à š š š š y  s > ï  r ï   i ޳ ޳ ޳ ޳ Ǧ r x ƨ Ʒ r ï ï   ï ï N ï ï ! m R s G[�O    <9*                   t #     ! "   $ % &) ' (   + ,4-1 ./  0  2  3  5  6 78   : ; =K>D?A S@ BC t ; %EHFG # , KHIJ K* L M N  EP Z ƙQR ƙS ƙ ƙT ƙUV ƙW ƙX ƙ ƙY ƙZ ƙ Ƕ\`]_ Ñ^ ï Z  atb cd üe üf{gnh `i jlk ƙ  ƙ m ̀oup Vqs ƙr ƨ �t ƙ ƙvz `wxy ƙ ƙ | `}~ ƙ ƙ  ƙ ƙ ƙ ƙ ƙ  ƙ ƙ ƨ ƙ ƙ  ƙ š š ƙ   `    G   ƙ ƙ  6  j ł ł ï :y ï  ï Dz Z  Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ ü k   ï ï ּ ï Dz ï ï  ï   7 ܌ x ƙ Ʒ ï  G  q X X y N > P > ï   7 š š   ! ! ! !   Z   9 9�#  4? V    ߡ d F  š š 5 s Z ű ` ` r ` ƨ ł    !" ܜ r G x$a%/&)'( ï s *+ z,-. I 07152 34 ï ּ ï Dz 6 7 >8<9 š:; 8 6 = ƙ>M? r@ rAG rB rCD rE rF r r H r rIJ r rK rL r NVO r rPQ r rRS rT rU r r rW rX rY rZ[^\ r r] r _ r` r r bjcgdf ïe 4 L ï hi ï kqlp smno Dz ï Z :yrs  š N u ïv} wx  yz {| ן  ~ Q Q “   t %                   S  t  t  ,   t        S     “                t  t t   t t t            t   �  t t  7   t    S S  t t t t t t t t t t t($  " ! t  # %& i e' )2*/+- , . 0 1 34 5  6 8N9D:?;< => @A  B Q C  EG F %HK I J  LM  #OZPUQTR S  “ VW tXY [_\^]  `c ab d e  ghijmk Z Zl W Z Zno Zpq Zr Z Zs Zt Zu Zv Zw Zxy Z Zz Z{| Z} Z Z~ Z F Z Z + U Z Z Z Z b Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z F Z Z Z Z W Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z   Z Z Z  Z  Z   Z                 ց    ł  ł        j       �   ł    y  ! 92 Z' Z Z Z Z Z Z Z Z Z Z h& Z Z Z ! Z Z"# Z$ Z% Z h Z , Z Z() Z* Z Z+, Z Z-. Z/ Z Z0 Z1 Z  Z34 Z5 Z6 Z Z7 Z8 Z  Z:;Z<L=E> Z Z?@ ZA ZB ZC Z ZD Y Z ZF ZG ZHI Z ZJ ZK  MSN Z ZO ZPQ ZR Z Z ZTU Z ZVW ZX Z ZY Z 4{[j\d Z]^ Z_ Z Z`a Z Zb Zc Z e Z Zf Zgh Zi Z  Zklwmq Zn Zop Z , Zr Z Zs Zt Zu Zv ; Zx Zy Z Zz Z{ Z|} Z~ Z Z Z  Z Z Z Z Z Z Z Y Z Z 4{ Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z  Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z  Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z , Z Z Z , Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z , Z Z Z Z  Z Z Z Z Z Z Z Z , Z Z Z Z ޕ Z�  Z Z Z Z Z Z Z Z Z Z Z Z  Z Z  Z  Z Z Z Z Z Z Z Z Z Z Z , Z Z Z Z ޕ Z"}#G$2%,&) ' ( *+ 9E 9E -/.  ֮  0 ֮1 3;48 567 3 ֞9 ֞: ֞ <B=?>  9 @A 9 -  9CD ֞ 3EF lj ֮ HkIUJOKM L ֞ ֞N  ֞PRQ = ljST 9  9 :V\WYX ֞ 9EZ[  ֮ ֮ ]h^g _` a b c d e f  L  9 ij 9 : ֞ ֮lvmsnqop ֞   r  t u ֞wzxy  ֮ ֞{| ֞ s~ s s s s s G G G G G G G s G s s s s [ [ [ [ [ s [ [ [ s [ s [ [ [ s [ [ s [ [ s [ [ [ [ s [     j)  r ï  Ux # Ux # ˘ ï ï y Ȉ ȗ > ! ï ï } ï } ï ï ш  ï ï ï i Œ i ï ï ï ï ï ï ï ï Dz ï   ï  s x Ʒ ł 6 ` V ï Z  s ï r i  Œ Ʒ � Œ ï ˘ ï G  Z s ˘  x   i s s ł 8i ï ü ï ï ` ï ï ` ï š š š š š!" š# š š$ š% š&' š( š š*h+F,- ï. G/ 0?1:26 ï345 ï 7  789 ï ּ ! ï;< L= 8> ȥ 8Z@CAB : Z DE L ` ƨGg kHITJOK L M  N  9P  Q RS   9UZ VW X  Y  [  \ ]^ _ ` a b c d e f  3  ѧ ijk ï шl mno Opqrs =t ruv| rw rx ryz r{ r r r}~ r r r r r = 8Z  r = r = = =  ï  Œ Z s s       ï  ï 3|      TX TX            ȵ  ï R s  s ׭ ` ï ` 4 ï ï  G ï  ƨ y s ƨ r y r G ï Ʒ  ƨ  i ï  ï   ï i Œ r  ï ï        � ï r ƨ y ï s r ï   ű Ʒ ï r } + Œ 7  ï r G ï ï s  Z ï &# ï! s " $% ï s') ï( š ï * s ,l-6.3/2 0 x1 m x s ƨ45 r Z  7M8L 9: y; y< y y=> y y?@ yAHBECD y y YFG E 6 I yJK X y y ïNkOjP[QXR ySU yT y XVW y Y yY yZ X X y\f]c^` y_ Y yab y Y% yd y ye y g h y yi y  7 munqop ï ш Zrt ss :y ï Zvxw d yz { | : š~ y Ʒ s s    o5 o5 o5 N u tI Tv T o o5 o5 Tg o5 T  th x:  o5 o5 o5 o5 o5 o5 o5 y o5 ű k  s 7  ï x Z Œ ï Ʒ ƨ  Œ   ï  ƨ  ƙ W r ï 7 Z ە ` Ʒ ï   ï  ï ï ƨ  ï ш Q s ` Z ̀   ҉ r ï s k  Ʒ  k L ` +C ҉ ƙ  ƙ ƙ ƙ š� ƙ ƙ t ƙ K s ƙ ƙ ƙ ƨ  ü 4 ü ü ƙ ƨ s    ƙ ƨ Ʒ ü Ʒ ü ƙ < ƙ ƨ ü ü z ƙ ƙ .'#  ƙ!" ƙ K  _$ ƙ% ƙ& ü(-)* ս ƙ+ ƙ, ƙ š ƙ š/<05 ƙ124 3 ƙ ƙ Z69 78 ƙ ƙ ü z:; ƙ t `=>? ƙ ü@A ƙ ƙB Z ƙDExFdGH `I\ ƙJKNLM #� #� O #�P #�Q RS TXU V W # Y Z [ #]b^` _ ƙ a c ƙ esflg ƙhj i ƙ k ƙ ƙ šmrnp ƙo ƙ šq š t ƙ št ƙu `v ƙ ƙw ƙ yz{ |}~  š ƨ   Q ƙ ƙ ƨ ï ƙ ƙ ƙ à š s  ƙ ƙ š ƙ     #� ƙ ƙ  z  ƙ  ս ƙ  } ƙ   ü s   ƙ ƨ ƙ ƙ ƙ ƙ ƙ ƙ ƨ   ƙ    ` ƙ ƙ ƙ V š ü š ƙ ƙ ƙ . s ƙ Ʒ ƨ ) ) #�         #�   #�  Z ƙ ƙ š ƙ ƙ  ƙ š ƙ ` ü `  ƙ s  Œ� ƙ 7 s     � ƙ ` ƙ _  `(& ƙ ƙ   L L L L L L  L L L ! L L"# L L$% L L ƙ' ƙ ƙ)*  ƙ ,F ü-.7/1 `0 ` ü2 `3 4 ü5 ü6 ƙ ƨ 8 9A:> ü;< ü= ƙ t � ü?@ ü s ƙB ` üC üD sE ƙGYHSIQ JK սLP ZMNO ƙ s ƙ š ƙR ` ƙT ƙ `U `VWX ü ` ` üZm[`\ ` ]^_ s `abf ücd ü ƙe 8gi ƙh ƙ jl k ƙ U ƙn}ovpr üq ƙ ü üst ƙu ƙ wx ü ƙy šz{ ƙ | ƙ K ~ ` ü ü ƙ š s ƙ  ü ƙ ü ï ƙ ƙ ƙ  9% 9% 9% 9% 9% 9% 5 ƙ ï x x x x x x x x x x x x 3 x x x 3 x x x x x 3 x x x x 3 ï y 3|   `   2 V s x r ï  Ʒ ƨ x    ï   ï  ï ï N ï Ʒ à Ʒ Ʒ d Ʒ ï r  ï Ʒ ï ̀ ƨ R QC A  ï ï ï ï  ï ï  Z Z Z Z Z Z Œ Œ Œ� Œ ~ Œ Œ  ï  ï  ï ï Ʒ  H E H  Ʒ V Ʒ :y ï ï ï  id ҉WMH$ "! = r# = %=&' T r()6*0+ r, r- r. r/ r r r1 r2 r3 r45 r r r78 r r9: r; r< r r>? ߰@ =A r rBC r rDE rF rG r r rIJ OKL r = = NSORP ( =Q O = = rT rUV = =XgY` =Z[] \ =^_ r = acb r = dfe = r = r h{i jlk =mn r o p (q (r (sw (tu (v ( ( x ( (yz ( 8 (|~} = =  =  = = =       = r O r r r r r r r r r O r r r r r r r O r O =  = r r O = =   O r = = = = = = = = = = O O   O O r r r r r r r O r c r  O ߰  = O  r r r r r r r O O O  r r r r r r r r r r ( O = O r�> =   r = r  O   = ( =  =% O r =  r r r r r r r r r  "! = r#$ = r &3'1( = =)* + , - ./ 0 = 2 r 4 r =5 r67 r8 r9 r: r; r< r r= r?W@N A rB CD r rE rFG r rHIK rJ r L rM r r OUPRQ O =ST = = rV O ߰ X`Y_Z][\ = r O^ ߰ = a = =bc r r àefghniljk  Ʒm ï Z opq s š r st uv}w x yz {| / ~     V        ï z ï Z  ƙ ˘   ï ï .  . Ʒ ï à Ʒ  Ʒ    x s i i Z b 3 Ʒ ï Z  K 8 Vt Z s Œ Z Ʒ N Dz 3 ł ƨ Dz  Dz 6  3| Ñ ï   ҉ ï i  y Œ ï ï ï ï ï ï ï ï ï ï ï ï ï ï 8 ï 8 ï 4 s Ʒ  ï   i  Ʒ ï G ƨ �     ű š  r Ʒ ï    ï 4 Œ Z ï x >* V  Z  ˘  y ƨ ï  ) i!"&#$ ( % c š' ( š š ( ׭ +2,/-. r ï r01 ̀  r s3;45 ï6 ï7: 8 ï9 ּ ï j ï<= ï   >?c@GADBC ïEF s ï ƨH\I[J sKL sM s sN sO sP sQRVST s CU s C sW sXY s CZ s C s ]b^ _ ` a 8 ï sdselfigh n  sjk ű Z  mpno ƨ ï y sqr ï r ït{uyvxw x V8 ïz ï |}~  ƨ  š   Œ  ï   ï    N y s s ï  ? 5a  š < š k ( Z ï ï ï x L Z ï W ï ï  s y  ï ï  ï ï ߡ 6  ߡ 6 ߡ   ï ï  ҉ G  6D ƙ  s ï  n s ҉ ï s ï 3|  Œ ï G ƨ ï ` r  Z Ʒ   y y y X ï d r  ƙ  h    Œ ï Z ƨ ï  ̀ š�  ï ï ï ï ï ï ï ï  ï ï  ï ï ï  Z ï 8 ï Z  3| ҉ ű '!  i"& #$ %   ш Z(/).* ޳+, r- r 701 ̀ Œ s 3 4@ 56 7 89 : ; < = > ? jA B C DE F G HI J KL MN O P Q RS łURV WzX YZ[|\{] ѧ^ _p` ag bced f ł 6hlij 6k łm no 8 qrvs tu ł w xyz 7� 6 i ï}~ ׭ G G Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Y Z Z Z Z Z Z Z Z Z Z Y h h h h h h h h Y h h h h h h h Y h h h h h h Y h h h h h h Y h h h h Y h h h h h h h h h h Z h  $ Z Z Z Z Z 4{ Z Z Z Z Z J Z Z Z Z Z Z 4{ Z Z Z Z Z , Z Z Z Z Z  Z Z ; h Z Z 4{ � Z Z Z Z Z Z h Z Z Z Z Z Z  Z , Z Z Z Z Z Z  Z Z Z Z Z Z Z  Z Z! Z" Z Z# Z ކ%4&(' Z Z ) Z*0+ Z Z,- Z Z. Z/ Z Z1 Z2 Z3  Z5 Z6 Z7?8 Z Z9 Z:; Z< Z= Z> Z Z @ Z ZA ZBC ZD ZE ZF Z ZHIK ZJ ޕ Lc ,MNYO Z ZP ZQR ZS Z ZTU ZV ZWX ; Z Z ;Z Z[ Z Z\] Z Z^_ Z` Za Z Zb Z ;defvgmh Z Zij Z Zk Zl Z , Znosp Zq Zr Z Z Ztu Z , Z Zwx Zy Zz Z{ Z Z| Z} Z~ Z ޕ Z Z Z Z Z Z Z Z Z , Z Z , Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z 4 Ɂ Z ɐ Z Z ɟ ɮ Z - Z Z Z ɽ Z Z , Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z  ï ï ` ` š š  š Ʒ ƙ  <u ƙ  ` š ƙ ƙ ƙ Ʒ `  š ƙ  x x š x š x x š x x x š š x x š x š x x x š x š x x L x x x  V� x  x x x š x ï 3m ï  G  ï ï 8  ï         u s" ! Ʒ ï Ʒ #A G$%5&' ï ( ) * +  ,-  ./  0 12  3 4  6@ 78< ï9 ï: ï; 3 ï= ï> ï ï? ï ï B սC[DUEOFM ƨGH kI ŒJ Œ ŒK ŒL ŒN k kPQ ƨ Œ ŒRS Œ ŒT Œ VW ŒX Y Z \f]c^ š k_ Œ`ab Œ k k Œ kd ke gohmij L Lk l  Ln  Lpqr Œ s Œ Œt Œ kvywx ҉ ï ƙ ƨ Ñ k{| z}~ ï Ʒ  x x x x D D x s V ƨ ï s   h ` r ï Ʒ ï  W  ï ï ҉  ƨ ƨ ƨ ƨ ƨ ƨ ƨ ƨ ƨ 4 Ʒ ï ï ƨ W s s s s s s s s  s@ 7 ҉  ( ( š š ( ( š ( ( š s          ȵ ï ە   Z ï ï    Ʒ s ï ƨ ï ł ü `  ` ` x i ` ƨ ï y    ƨ ս� ս ï ƨ ï  s 7 ï ï ï Ơ ï  Q 3'& ü 4 % 4    r     ! " # $ %  ƨ (/ )*-+ ï ּ, ּ ï ï. ï ּ 012 s Z L4756 Z  489 Œ  ï:;< = Ʒ>? t  A\BC r D EF G H I J K L MN OVPSQR = TU X 5 ց ;)WZXY L 3_ W [ 5 ) ƨ]^_`yagbd Ʒc Ʒ ef s r s hoinj d klm Z ptq rr s [ [ u v wx s  ï z{|} Z  ˘~ b Z Z U Z Z W W Z  ï r E E  ï  k ] ] k ï Z ï r ï  ï ï 2 2 2 { { { 2 { 2 2 { 2 2 { { 2  s ï Z x R :y  L Z G ï š ï  r 6b s ï G i s  ï     7 s  Œ ï   X Z   s k ï k i s  ï ï Qk Œ Œ � Z  Œ s i y ï   s ï Ʒ y ï r ï ï ï    ï ш ï ï s+[=< 8$         ! "# ʊ%( ʚ&' ʚ ʚ )/* ʚ+-, ʚ ʪ ʚ. ʚ ʪ ʚ0;1423 Ʒ V Ʒ V576 Ʒ Ʒ V8: Ʒ9 Ʒ V Ʒ V ʚ  k >\?M@GADBC ց Œ EF ˘ ï HJ ïI ï ŒK ïL  i NUORPQ ï s i rST ï s ƨ ѧVYWX 7 y ïZ[ ü ` x ï]^_`qalbe Zc d Lfig h š š ij sk i rm Œn Œ Œo Œp ʹ Œ r s t uv w xy z { | } ~ * ï ï 7 s ï N ï Ʒ ï ս ̀ ̀ ï ̀ ï ï ш ш ш    :   O  7 ï Ʒ ƨ s `  s  s   Œ r   ï  i Z  y  Z  s Z ս Œ ï ï s ï r z 7  Z ҉ r ï i Ʒ  x Ʒ s Z Z  Ʒ  N Z Z        Ʒ ï d Ʒ   ï L x L [ > :y  � L  8 8Z r L x 8 8 T 8  ï S ï*   x  x x x  x x x x x L# x  x L x x x x x x x!" x x L$'% x x& x: ( x) x x +Z,:-8.5 ï/04 ï123 6 Q5 ï x 6 N7 ï ï9 ï ҉ ;A<= Ʒ  ï>?@  Z s ïBI ïC ïDEGF ï ïH ï ƷJKYLV MN OP Q RS T U WX ʥ ü ü ʥ 7 ï à\` s] ^_ # abc defqglh ci ` ƙjk ƙ ƙm `no sp ƙ ƙ rs ü t}uxv ƙw 7 š ƙy{ ƙz |  ƙ K~          '   ƙ ƙ ƙ s ƙ ƙ ƙ š s ƙ }  ƙ ƙ s ƙ  ƙ  ƙ    ƙ  ƙ ü Œ   6   š K ƙ ƙ U ƙ s ƙ š ˘ s \  ƙ > ƙ š ƙ ƙ ƙ   ` s ƨ ƙ K ƙ  ƙ  ƙ ƙ  s  š ƙ š ƨ ƙ L ƙ s s ! ! ! !   ƙ  ƙ 6D ƙ s s : G : ï `  ` c s� Z s   Œ  Œ  8   ï à  à à à à à à 4/ i * ï x x x L > > > P > %! " # x$ x L & '( x š) š Œ,-. Ñ / 01Y2G3@4756 ï ï 8= ï9: ;< K < 6> ? ï ` ïADBC Œ s EF s ï r HRILJK ï Z MN 7 O ]PQ ] ] kSVTU ï Z s ïWX ;8 ï Zk[b\_]^ ï s VG `a ƨ r G ce ïd s fjg ï rh i Zl}mznyox pq rs t u vw   ` Z{| ܌ G ~ r ƨ ï                          7  ˘ ï   ï Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z  ï  ï = ï ˘   r r R r r R    ï Ʒ ï Ʒ ï  s à ï ï r ï    N ï Ʒ ï  Ʒ   i ï ï ï  ƨ  z s ü ű Ñ Ʒ Z s Z s� k Z ï  Dz ï Ʒ )( ï    ï ï 8i  ü ï ï Ʒ ï ï  z ï 8 ï   ï Ʒ  `  ï #!" ï  Ʒ$% ï&' ï  ս Œ ƨ* Z+, x- ï._/R0<1 2 3 4 56 7 8 9 : ; =>H ?@ A B C DE F G IJ K L M NO P Q ST U V W X YZ [ \] ^ `a bcd{e f gn hi jk lm ou p q rs t v w x y z |} ~        Ʒ ï   ï r ` ï ï r ï        L ï ï ü    Œ     א < H  H H < < א        ï  y Œ Œ Œ Œ Œ Œ Œ Œ M Œ Œ Œ M Œ Œ Œ Œ Œ Œ Œ Œ Œ ~ Œ Ʒ >   s ï Z Z Z  r ï  ̀  G         � � � �� � � � � � � � � � �  ï ï ̀ d  Z Œ Z s  ï  ï  ZKC$  ! G G" G# G ш%&<'0(, )* + ց -. / 18 235 4 67 ց ց9 : ; ց= >? @A B ցDJ E VF G HI ï s ï ƷLOMN  ս ï VPQ Œ Ʒ ï ŒSTnUW ƨV ïXkY`Z][\ ï y à^_  ï ` ab Ʒ x cdef{gsh Oiojlk r mn r = p qr = = (t ruxvw r O y =z O |} O~ = = =   O  O  O  = = r r r r r r r r r = =   = ( r r r =   =  = = r  = r = r O  r r  ߰ ( O   r (  r r r r r r r r r r r = ! O r  = r = O r =  r =  = r =L& O = r r r r r r r r = r r r r r r r� r r r r r = = =  = =  = = = = = = = = = = =  = = = =  = = r!$"# O r r% = ';(.)+* = c ,- = =/0 r 12 = 3 4 r5 r6 r r7 r89 r r: r<>= ?I@ r A B rCD rE rF r rGH r r JK ( r rMSN OP r Q =R rTc OUVXW r YZ 0 r[ r\ r] r^ r_ r` r ra rb rdg ef r =hij = r =lm Ʒ ï ̀ opqrs|tu ïv ƨ üw üx üyz ü ü{ ü ?}~ 8 ï  ï ï k  ï ï ƨ ï s ƙ ï Œ ï ` r `  ï Z Z Z , Z Z Z Z Z Z Z Z Z , Z Z , ` ̀ ̀ ̀ ̀ ̀ ̀ N r ï ï ï    Q&  ï ï W ( ( ( ( ( š ( ] ֮    l 3  9U 9 ֮ 3 9 9E ֮ ֞ ï ï ï  9 9  9E :> r ە à ׭ ï x   s x k  ˘c  %       �   i    t    ; t t   % #$  ; ,       Q  # !" i   %Y&V'S( )*  + , -B.9/403 12   58 6 7   :?;> < =   @A   CJDGEF   HI   KNLM   OR PQ   T “U WX  % Z[^\ t %] _a`  tb  defuglhi  “ jk  mq nop  rt s  v|w{x yz  %   } Q~                                    t                “ %             S   ï ï ˘ ï ï :y Ʒ ï Œ  ï s x  y  u@ K-  i�  Z ƨ 3| Z   7 y Œ      ï Z  ï ƙ ï ە*)  '       Q&  ! " # $ % & ' ( Q& +, ï V ï .=/60312  ҉ 45 à z ï7:89 ï  ï;< r >D?B@A  ï ï ïC ï EHFG > IJ Ʒ ï r LkM\NVOSPRQ Z Ʒ TU 7 `WZXY Œ 3| V [ ]d^a_` ï s Zbc ƨ ï ehfg  i yij d  ` lzmsnp ïo Z ïqr Ʒ s G stwuv ց ï ïxy {|}~ ˘ Z ï  ï R. R. R. R. R. R. R. R. R. R. ʚ R. Œ ï  ï ѧ Z  k Z ï    s  s ï            {  ï i G  Z ï G     Œ E  E E E  ս  s ï ҉ Œ x š r ï Z ˋ ˛ ˪ Z Z Z ˹ ˹  Z ˋ Z Z  ˪  ˪ ˪ ˪       ˪  Z # s  y Z ̀ ï ï ш ï 8)!�  à 4/ à à à à à  à à  à R à à à R R à ï  VG  2 2 A A   P P "&#% ƨ$ ց Z s'( ï s ` Ʒ*9+- ï, š .8/ Z01 Z Z23 Z Z45 Z6 Z Z7 , ޕ s ï:=;< r ï>? Œ ï Ʒ ABPCIDGEF ï   H ï üJMKL i ï ï NO Q Ʒ  ŒQnRlST ە ï UVaW^X[Y Z ł \ ] _ `` `bh cdfe ` ` `g ł Ʒij ` `k ց ;8m Z sorpq  Ʒ x ïst ս ű ï vKwxy Ʒz {|}~ ï   ï ï ï O ï ï ï ï O  ï ï O O O O O O O O O Dz O ` ï ï ï š ï ï ̀ ï ï 8 ï ï  r r  r r r   o ʚ r ʚ ʚ ʚ i ï Z G G V           0 x r r r r r r r r r r 8 y s ï ï x  Z  ï ï ű ˘ ï s G Ʒ Z 7 Ʒ Y  ï ï        �                ï k ш  ƨ r  ï ƨ r W !7"4#$ s Ʒ% ï&3' Z( )2* G+ 5C, 5C- 5C 5C. 5C/0 5C 5C1 54 5C 8; ï56 Z ï 8H9: Ʒ à 8;< => ? @ A BC D E F G 8 IJ Z ïLMNQOP Z ҉RbS VTYUWV ҉ Ʒ šX ҉ ƷZ] ҉[ ҉\ Z Ʒ^a Ʒ_` Z Ʒ  Ʒ ïcdef ( šgs h ijnk šl šm š  šop  š šq šr š t š šu švw šx š šy šz š{ š|} š~ š š ( c      š  ە ï ï ï ï ï ּ ï ï ï ï 8 ï ï Z ï ï ~ ̎ ̝ ̬ ̻  7 ï ̀ ̀ Ʒ   r r   (  ƨ ï ï ï 4/ 3 4/ 3 4/ à 4/ ï  ҉ ï s Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ y  Œ Œ \ \ Œ Œ Œ W \ Œi6 G  s R  s s G s Ž p   s s � s   s G :   G s s     s & 5 s 8 s s s  * I 4 Y 5  s G s a s!- a" s#$ a a%& a' a( a) a* a+ a a, a 4.3/1 s0 s p s2 s 845 ; 5 7a8I9A:=; s< s s>? D T @ G sBE sCD $ s FHG s s d s GJ sKV sL sMN s sO sP sQR sS s sT sU  s sWX s sYZ s[ s\ s s]^ s s_` s s [bg sc :d sef s : sh s G s jk l  mn o  p q rs  t u vw  x Ui z{ ս ï|}~ Ʒ  r   6 x 7 Z ƙ  Z ï  Ʒ x ƨ š š ( N K s WS ƨ 5 x  ł ï G Ʒ ƙ š 7  ü  L š o o  ƙ z Z ܹ  N  ł  ü   ּ ü L R= L ï  ï ƙ Z  Ʒ Ʒ ï       *        *   Ʒ ï T Ʒ ï Z Ʒ r ï  ï  ï  ï V > ï  š ï ï � `  Œ ` ï   Ʒ š ܜ ï  ƙ ƙ    ï Ʒ ï Z  ï  ׁ ҉ ï "�8 šZ "! š š š#$D%>&2'-(+)* š š H, š 5 š. š �/0 š1 š š D34 š š569 š7 š8 : š:< ; š = š A š?A@ š š 5BC @' š EoFmGH + šIOJ šKNLM š D š : š >PkQS šR š AT šUV šWc šXY^Z] š[ š\ š > š >_` š > ša >b > šd šehfg š > š >ij š > š >l > š c šn > Dpwqtr šs š š šuv š c šx~yz š {| A š š} š š š c š š A : š : š š š š  c DZ Sl Sl Sl I Sl # Sl  š š š š  š š š š šN  š š :  š š š 5 š š š :  D š š , >  š š š D  š š > š š : š š š > š š  š A 5 š š š š > > > > š > š š > š š > š > š š š > > > š > š š š š > > š > > > š > š > š : š š� š � š š : š š š :E5 š2 š  1 š ! š š 5 š 5 5 š š 5 š 5 š 5 š 5 š š 5 š 5 5 š š"#+$& š% š 5'* š() 5 š 5 š 5, š-. š 5 š/0 š 5 š � :3 š4 š  š6?7<8:9 š E> š; š  š=> � š š @D šABC � š š >FMG šHKI š šJ � šL š ( š š D šO šPQ šRY šS tT tU tV tW tX t t š[ š\]d š^ š_ š`ab š E šc še{fjgih š š kvlnm š šo š šp šqrts š š u š  +wy šx š 8z š š|}~ š š š š š š š š š š š š š š š š š š š š š š  š š š š š  š š  š š š š š š š š  š  š š š š š š š š š š  š š š š š š š š 8 8 š š š > š š 8 š š 8 š 8 š š š š š š š š š š š š š  š š  š  š š š  8 8 8 8 8 8 8 8 8 8 8 8 8X š š š š š� š š š šv š š  š  š š  š š š š š š > : š > š?0( ! š š š š"'#%$ š š š& š š) š*-+ š š, š 5 š./ š š 5 š12 š š34;58 š6 š7 š >9: > š š š<=> š š @VA šBMCGD šE š šF š šHI šJ šKL š šNRO šP š šQ š S šT šU š š W] šXY šZ š š[ š\ š ^g_c š` ša šb š d še šf š šhm ši šjk šl š nro š špq š š s št šu š w šxyz{ š|} š~ š š š š š š š  š š š > > š š š š š š š  š š š š š š  š š š  š š š > B š š š š š š š š  š  š Ī š š š š  š š š š š š š  š š š š  š š š š š  š š š š > š š š š š š š B- š š Œ š š š š š š š š š š š š š š � š š 8 š š š  š  š� š d š š š š š š%   š š Em  š š š š š š š : š : : : : : : : : š $!# " B  š  ? š š& š' š() š*+ š, š : š./ š š0 š12 š š34 š5 š6 š š7 š8 š9 š:; š< š= š> š š?@ š šA š dC šD š šE šF šG šH šIJ š šK šLM š šN šO šP šQR š šST š šU šV šW d šY šZ[ š\ š] š^_ š`ahb šcf d e < <g < šijkwlp šmno š  cqtrs  H k :uv : , xy|z{ � š W}~ š š š  c  k š š š š : š š š š š  š š  š š       š  š š , š : š W > > š > š  š š W W W š � c   š š , : š š š š š š š š � š š š š š š  š : š š š š š š � � �  š š š š š š š š š š š š š š š š š š š š š d š š š  , : š� H c k  : �  š š š < š A š     š š š š š  š š š! š š š š š B š š š š š B"'# š$ š% š š& š B(,) š* š+ š B š š-.3/ š0 š1 š š2 š B4 š5 š6 š š7 š B9:N; š< d š=> š š?@ š šABKCHD šE š šFG š š šI šJ š L š šM ʗ O]PQiR S T UbV\W X =Y Z [ Cy] ^ _ ` a  c de = fg d CNh = jk lm nopq~ r st uv w x y z { | }         cQ   J J J      J h J J    B_               ̓ dz b  #       #       t  C] Cy Cy     P     <u C]      s s s s s s s s s s s s s s s s� s s ͑ s s s s s s s s  s s s  s s s s s s ͑&       ~ d  !  "#  $ ͟% ͟ ͬ'Y(P):*4+1, - P. / 0 P2 3 = <u568 P7 ~ i$9 i$ i;G<? <u=> <u @  IA BC D dEF H =I J KL M N O Q tRS T U V WX <u =Z [ \ ^_k` ajb c d e f Cyg h i = l =m = =n =o =p =qrz =s =tuxvw =  = iy  = { =|}  i~ = i          c      š    Cy                8w       =  = = = = = i =       I7      CyH Z Z [ [ [ [ ї ї ї ї [ ї [ [ ^\ Z \ ї Z [ ї Z ї ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ͹ ^< [ ї [ \� Z [ \ [ [} [= ї   ї [ ] Z ^\ ї ї ї [  ї ї 3@ ї [- ї ї b їG Z ї \ x; ї ї1'" ! d [ _\ ї# ї$ [%& [} \ \ _\(+)* [ ^< [} ї,0 [-./ [} ] ї [ Z x25 ї34 \ ї ^6978 [ [ Z ї: ї ] ^\< ї=C> ї 3@? ї@AB ^L ї [ їDE \} [ F š ]= ZIJK ]=LMjN їO ^PZQUR їS [ ^T ]= [ їV [WX [ їY Z [[`\^ [-] ^ [} [_ š їaeb їc їd ї Z їfg ї \h ^i š š ї їklm~n{o [p [q [ [r [st [ [uv [w [ [xy [ [z [ [| ї} ї [} ї ^< [ ї ] ]= Z ї [= ї ^< [ [ [ [ [ [ [ [ [- ї ї \ \  ї ]= ї ї ^L Z Z d ^< ї [} ] ї [- ї [ [- ї Z ї ї ї  Z [ [ ї ^< \M \M ї \M ї \M ї \ ^< [ d [ 3@ [= [ Z Z ї ^L [} ї ї [ \ \m ї \ ^< 3@ ї [ \M Z Z \ ^< ї ї [= [- ї ї [} ї ї [ ї [  Z Z ї ї Z ї [ ї [ \ [ ]= [ \M [#j> [ ї ї [} [ Z [ ї ^L ї� ї ї be ; O Z ї Z  ї  ї ї \= [ \ ї ї be be be š be c be  be be  ' ' be-' " be! ї be#% $ š& be be 7(+) be be* be F , be š.7/402 be1 š be be3 be ˋ be56 be be š89 be š:< ї; ї ї= ї bV?]@WALBEC ї [D [ їFG \ їHKI [J ї ;8 ї ^< \MON ї [ їP їQ їRT їS [ [UV [= \ Z [ їX [YZ\ [[ \m ї ї [^ [_ [`e їab їc їd ї [ dfhg [ Z [ \Mi \ їkl їm їnpo ї ї [ їqrysvt їu ї Z їw ї їx [} їz}{ ї ї| ] \~ ї [- ї ї ]= [} ї ї [ ї \= ї ї \M ї ї \ _< ї [ ї ї ї [ ї Z \ \ \ ї \ ї [- [ [ ї Z Z ;8 ї ї ї ї U e ї Z ї \= [} [ [ [ ї [ [ x x x x c! ї ї ]= ї ]= [ Z ї ї [ ї [ ї [ ї ^\ ї [= ]  ї \M Z Z Z Z b Z Z Z Z b& Z Z b \ ї ї \ ї ї ї ^L [ ;8 ;8 ї ;8 ;8 ;8 ї ;8 ;8 ;8 ;8 ;8 ї ї [ _L d ї ї [  ;8 ї [ [ ї \= ^\ [ [=� [ [ [ [ [ [ [ [ u [ [ [  [ [ [ [ [ u u u u u u u u [ [ [ [ [ [ [ [!" [ [ u$%w \M&' Z(?):*0 ї+,. [- \m [/ Z ї Z ї123 3@ ї465 ї [ Z7 \=89 \ ї Z [ _\; ї< ^=> _L ї \@oAjB^CPDKEHFG  їIJ ї ї beLN їM 7 be beO be їQXRUST  їVW ї  be Y[Z ї be \] be ї ї _e`a š bd cc c ї befgh bei ї ї їk \mlmn Z ї ї [p ї \q їr їs [tuv ї ]= [ [-x [y [z [ [{ [| [} [~ [ [ [ [ [ [ [ [ [ [ [ ΅ [ Z ^< [  \M \M \M Γ Σ \M ]} ^< Z ї ^\ ї ї [ ^ \ \ ї ї ї Z ї [- \ ї ї Z [  ї ї ї ї ї ї ї [ ї ї ї ї ї ї ї \M ї ї ї ї ї ї \M ї ї ї ї ї ї ї ї Z ^< [ [ [ [ ї Z d d d d d d d d d d d d d d d d d d d ^1 d d d% d  ї 3@ d d [ d Z ї d [ d [ d ї d ї ї [ [ ї� ї [} Z Z [  ї d ї Z [- ї Z    d [ d ї [ d ї d \  [ ї [ ї ї \M [ ї ї ї Z ї #!" 3@ [ ї [$ ї [= ї&r'O(<)3*-+, ї Z \ ї./ [ ї0 ї12 [ \M ї [-4756 ї [ ї Z89 \ ї ^<:; ї [} [=H>D?A@ \ [ їB ;8C \ [ їEGF [- ї [ \ [ILJK [ ї \M їMN ї [ ^< їP_QXRUST ї ] ї \VW Z ї \ їY] їZ ї[\ [ [ \^ ї ]= ї`hac їb [ \mde ї ]= \}f Zg Z b&imjk ї [} \l ї [ no ї Z їp 3@q [ їstuv~w}x{yz [- [ ї [ ї| [ [- [- ї [- [ _L [ ї Z [ \ [ ї Z ї \m _\ ї ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8  ї Z \ [  Z \  ї [ [ ^< ї ї [- ї [  ;8 3@ ї α ї [} ї \ ї Z ї 3@ d ^\ [ ї ^\ ^< Z [  d [} d \ ї ї Z \M [} ї \ \ ї \ ї Z \ [ Z ї [ [ [ d ї [ [̵:r = = =  =  d  = = = i i = ~ I =  I7  ~ =   �  ~ ~ d    t  = d I =  P = P = =  = d P = C+ % " ! #$   &( ' )* t = <u ,:-4.1/0  23 Cy d d 576 = 89 = I =;?<= = > P@A P B = DWEPFJ GHI ~ KNLM    Cy O Cy Q RUST t Cy ~ CyV XdY\ Z[ = ]b^a =_` DZ D ~c t ekfigh =  Cyj = Cylpmn CN  <uo = iq P i$ Ps(tuvwxzy Cy ~{| = } ~     ~  Cy = CN j d d = ~ C] d  CN  = = <u I I I I I I I I cQ I I I I I I I I I I I I cQ I P = d <u ~ CN  <u t = Cy  = Cy  d' =  Cy  =  = t  t = =   Cy  �    t P <u =  Cy c   =  <u <u =   = <u  =  <u d ~ = Cy  t     C]    Cy d I7 <u  = I  ~   I  P P = = Cy  d  d!%"$ <u# I7 CN ~&'  )z*T+=,5-2.1/ Cy0  = = 34 <u = 6;7:8 Cy 9 Cy = Cy < Cy>I?B@A <u  CF D >E > �G H   JOKL M N =P d QRS = Cy Cy dUjV\WYX Z[ <u ]e^d_a d` t ~bc  t d  fi gh Cy  =kslnm Cy ~or =p <uq Cy = = twuv  ~xy ~ ={|}~ Cy d  Cy t   8w   P P = = Cy t C]  ~ = C]  Cy =  i$ <u = I  CN d   =    =  = <u P P Cy  Cy Cy P Cy =  d P i3   Cy Cy Cy =   CN h c   C] Cy P <u ~ =    Cy I =  Cy d  Cy <u Cy <u  Cy   C]   CN Cy  t = = <u ~  � = ~   d    d   t  C]    Cy Cy =  C] <u = Cy = Cy  <u>-% P !$ =" =# Cy C] &)'(  Cy <u Cy* =+ = =, ~.3/1 =0  P P2 I 4;586 7 cZ9 CN: <u Cy<= CN Cy?Q@GADBC  CN CN dEF Cy ~ PHKIJ = = LP MNO CN C] Cy CN RXSUT P P PV <uW CN YaZ^[ iX\] CN  D Cy _ I` I <ub = defzgqhnij k lm =  d =op I  I7rust = ~ Pvw = CNx Cyy Cy Cy ={|}~ Cy d =  ~ Cy = P  Cy Cy d  Cy d  Cy I Sl = d Cy  Cy Cy ~ ~   Cy  Cy  Cy  d   P        cQ  Cy  t   = <u    Cy C] = t  Cy  Cy  Cy d  =  C] š C] = Cy   Cy  Cy  <u  Cy CN  =  = Cy   =  = P Cy <u Cy = Cy I d =� =  Cy C]     <u  Cy  j @. = d  = = Cy  Cy = Cy  Cy = C] CN *! "% #$ &(' ) +- d, C] = . ~/90312 ~ CN d4856 Cy CN7 = Cy d :=;< I = P =>? Cy  C] AUBKCFDE =  ~GH ~ ~I J =LRMQ NOP Cy = CN Cy  CNST CN d =V_WZXY  C] = d[^\ š d']  Cy`cab d CN CNd egf Cy Cy =hi d   CNkl~munsorp dq   C] <u t tv{wz Vex Cyy Cy <u d |}  =  I = P d ~ = d    = <u I  I ~   CN  d  CN CN  d    Cy d  = d Cy d t = =  CN t d CN     ( = d =  <u t  Cy Cy ; ; ; ; ; ; ; ; ; ~ CN t = 8w I <u Cy  = d = d  = <u <u <u <u <u <u h <u CN Cy DZ DL  D =    A A Cy Cy CN � CN <u  d d d    t d =    = ~   Cy CN Cy CN  <u Sl # I#" d ! = Cy = d  $' % & BQ cQ =)Y*=+5,/-. d01 2 34 I I 6;7: 8 Cy9 d CN =<  P >F?D@A  B =C  <uE d  GTHI J K ~ ~L ~MN ~O ~P ~ ~QR ~S ~ D ~UV D WX <u  šZp[f\a]^ = ~_ CN` CN Cybc t = <ud de O gkhi d CNj Cy = l m no  = = qzrwsvt u =xy = d d{|}  CN~ Cy d  d I Cy CN    Cy: P d     i3 <u  CN        ~  Cy  =   =  CN Cy  Cy  = =    Cy d d'  = Cy = Cy   = CN D d  <u  <u ~ Cy = Cy  Cy  t d d =  Cy   Cy d Cy  d I I I I I dz  d  J J h =  ~ d'  d CN I  Cy I = Cy =� CN  Cy ~ Cy  P     I   i$  ~ t#  =  d =    I Cy I ~ Cy! d" CN Cy$1%/&.')(  Cy =*+ # b,- d I #  C] 0 = ~ 2534 = = P67 Cy8 =9 = t;<[=L>D?A@ C] ~ PBC Cy C] CyEHFG Cy = = d =IJ K <u <u IMRNP O  CyQ ~ CN =SVTU Cy  =WZ dXY <u C] Cy  =\q]f^a_` Cy <u bc Cy =d e =  Cygjhi I   d'kn Plm CN Cy dop Cy d =rxsvtu = <u iB w  Cyy|z{ d Cy}~ ~ Cy =  C]  = <u <u    d  CN Cy  d  Cy =  Cy š Cy  = P <u t Cy = d     CN =   d P =  = Cy Cy  =   Cy Cy   dD P =  = ~  Cy  =  CNe C]  = = = Cy d'   CN = T Cy  =     D   Cy d CN d d  Cy  t  h � C] <u CN P I   Cy   Cy CN     Cy d = t =   =  d ~ d i3  d = =C4, '!" = d# ] $% & (+) =*   = t -0./ ~ CN ~12 = 3 = j5>6:798 d  CN ;=< Cy  ~ Cy?A d@ = B P DQEJFG = HI = P ~ =KNLM  d <uOP ~  dR\SYTXU VW x <u <u x  CyZ[ Cy Cy d]`^  Cy_ Cy ad bc š š ~f gh{ipjmkl Cy Cy no = ~ qxru ~s Cyt Cy v  DLw DLyz = t = |†}~  =€ Cy : >‚…ƒ „ = ~ = d ‡ˆ‹‰ =Š = jŒ  Cy <uŽ Cy <u Cy ‘´’¤“”—•– = ˜™ <u Cy š›œ d  Cy CNž¡Ÿ  Cy I CN ~¢£ I I CN¥¬¦«§ª =¨ d© = <u  d­°®¯ ~ Cy = ±³ =² Cy  t µ¶·¼¸¹ º» <u  Cy½ P¾ d¿  Cy = P  # # d = Cy = Cy d Cy CN  <u  ~ =  Cy Cy  Cy Cy = t d dj*   Cy =  d  <u  <u   = Cy d Cy  = d Cy Cy d� iB d  d  C] Cy  I =     <u  = ~  Cy    $!  d d  "# = Cy %(&' d  ) = P+I,;-3.1 /0 Ve d2  46 5 7: 89 Cy = = <B=? > Ve@A CN  CFDE t CyGH = <u CN JWKQLN M C] σOP CN  RTS  = CyUV = d <uXbY]Z\ Cy[ Cy ^_ Cy = `a Cy d =cgd e i3f š hi Ve <u CN kúlËmzntorpq Cy  Cys d <u tuxvw ~ y  ={Ä|À}~ =  ~ C]Á = à kÅÉÆ  Ç CyÈ Cy d Ê CN dÌèÍàÎÑÏÐ Cy CN ÒßÓ ~Ô Õ ÖÙ ×Ø I ÚÜ Û IÝÞ áåâã ä =  ~æç d t C] déóêñëì I ~íî  =ïð  I dQ  Cyò  ô÷õö   døù CN ~ Pûüýþÿ  =  Cy    C] = = = Cy <u   <u P P ~ i =  <u = t ~  ~ Ve   <u  =   =   = = = ϒ  =   = d = t ~ Cy 8w <u�  j  j = = d6   i h DL J  h i J DL  P Cy Cy dĵi?(! Cy d Cy = Cy"$ P# = %' =& Cy Cy )7*1+. , š- š (/ 0 Cy = 23 Cy I745 ~6 Cy = Cy8=9: t; Cy< Cy Cy  Cy> CN t@UAKBGCF =DE I I ϛ P HJ I Cy C] C] LRMQN OP = Cy ~ Cy PST Cy  CyV_W[XY Cy =Z \] ^ Cy = Cy`ba Cy ced   f gh cg ϰjđk}lumpno d Cy d qr st <u  dvz wx  =y ~ ={| = ~ d~ĆĂĀā = =㥠d =ą = VećċĈĉ  =Ċ CN ČĐč Ďď = d = Cy CNĒģēęĔĖ ĕ ėĘ I Cy I ĚĠěĞĜ Cy =ĝ = C]ğ = = CyġĢ d Cy tĤĭĥĪĦ = =ħĨĩ Cy  ~ IīĬ  Cy = Įıįİ h Cy  dIJij ~ <uĴ  ĶķĸĹĺĽĻļ Cy d ľĿ CN P  Cy d  d  Cy  Cy d  k  t Cy =   I  Cy     Cy Cy = CN  Cy = CN d   d ~ = = Cy   =  Cy Ͼ  �  A š d  =  = ~    Cy Cy ~ d Cy    C] I = C] C] C] Cy CN Cy P = d+$! Cy "#  CN Cy%(&' Cy )* CN  ,3-0./ Cy12 CN  4756 Cy Cy 89 Cy ;N<u=ń > ?@bAF B CDE  GXHSIJ P  KL MPN O Q R TU = V = <uW  Y\Z[ t  CN]_^ = d` š a ctdlejfg =  ~h Cyi  ~ k d CNmqnp o  d CN rs d u}vx w C]yz {| d  Cy d~ŀ =  Cy Łł Ń C?ŅņŻŇŦňŖʼnŐŊō =ŋ CyŌ = CyŎŏ d őŔŒœ Cy Cy ŕ  ŗŠŘŞřŝ ŚśŜ Cy = d   ş šŤŢţ CN  ť  ŧŵŨ ũŮŪŭū Ŭ = <u = ůŲ i3Űű = ų CyŴ Sl Ŷ ŷ ŸŹ d =ź d żŽžſ d =    d P P   =   d  d  =   =   Cy   d    <u  d Cy Cy = Cy  Cy7�  =  CN ~     d ~         Cy d = +"  P    = =!  #&$% <u '(  d )*  ,3-/.  ~ I701 d 2 d d i3 456  d d 8_9N:C;@<? = > ~  CyAB <u DHEF d G <u IM CyJKL Cy =  = =OVPSQR d d TU C] = PWYX P Z][ \ <u = ^ d d ~`ia bf cd ~ =e = gh d jmk l dnq o p  = rs i =t = vǎwxƱyƗzƃ{| }~ d ƀƁ  Ƃ d CyƄƎƅƉƆƈ Ƈ Cy =  ƊƍƋ =ƌ CN  <u CyƏƔƐƑ ƒƓ Cy =ƕƖ t Cy ƘƥƙƞƚƜƛ t t tƝ dƟƣƠƢ ơ d  Ƥ t tƦƬƧƩƨ  ƪƫ ƭ Ʈ Ư ư CN = ƲƳƴƻƵƹƶƷ Ƹ I ƺ   Ƽƽƾ ƿ  t d C? t  d   = Cy Cy CN d Cy     =  I7 d Cy  Cy = Cy Cy Cy  Cy CN  =     CN Cy d 9 I d d  =  d =� Cy  d = d P d         ~  = Cy  Cy *  d = =  CN !$"#  d %& '()  = <u +3,0 - d./ ~ d Cy12 d' D Ve d4756 = d = d8  Cy:`;J<C=@> ?  Cy AB d DHEG F  =  CyI d CNKXLQMPN O Cy   d RS  8wTVU i = iW  = CNY[ Z \_ ] =^ =  aqbkchde Cy f g = t =ij D CN  Ilomn d I7 =p rǃsv t u <uwǂ xy z { | }~  ǀ ǁ dz DŽljDž džLJLj  t CN NJNj njǍ =  =ǏǐǑǸǒǥǓǝǔǗǕǖ  d ǘǛǙ ǚ  dǜ = CyǞǣǟǠ = Cy =ǡǢ = t <u Ǥ ǦǭǧǪǨǩ E] CNǫǬ dǮǶǯdz ǰDZDz Cy = G Ǵǵ <u ~ Ƿ ǹǺǻǽǼ  Ǿ ǿ CN = Cy d   <u    t  <u C]  = dz      P P <u  =    .  # J d I CN   d     = I I ϛ j =   = = d6�  =(   = <u d         š Cy !    t   I "%#$ d  &' );*5+-, d Cy.2/ 01 SP h 3  4 ~ h 678 d9 Ve:  =<C=@>? P  # hAB  DIEF CyG H = =JM KL = = ~OʿP[QRȒSxTiUbV[WX ~ <uYZ = t Cy\] CN d^` C]_ Cy a cfde  d g h jqkm l  P Pno p  I7 = rsw tuv I d <u CN yȅz~{ |} Cy ȂȀȁ d ȃȄ    PȆȏȇȌȈȉ P Ȋ tȋ d =ȍ =Ȏ  = Ȑ ȑ ȓȻȔȧȕȜȖșȗȘ = Țț = ~ CyȝȤȞȡ ȟȠ = CyȢ  ȣ  ȥȦ    ȨȰȩȭȪ tȫȬ d  C]Ȯȯ = ȱȵȲȳ dȴ Cy =ȶȷ d ȸȹ  d dȺ =ȼȽȾȿ  C]  = iB  t d =   d CN h <u h Cy Cy CN  <u  D  Cy  Cy  d      =  d Cy    =        = I �  Cy   C]   ~ CN     I  Cy Cy     =-!  CN  t  I7 "(#$  % Cy&' = ~ = ~)* ~ d +, d I =.4/10  t =23 d d 5:69 d7 <u8 d Cy d ;< =  d >O?J@EADB  dC = Cy  FG  H <uI Cy =KML  CyN   jPXQS R  TU  VW  C] =Y Z  t CN\]ɡ^~_s`kahbgced Cy  = df d Cy  Veij Cy I7lomn  Cy p ~q Cyr  dtxuv Cy w I P yz}{ = d| d % Cy ɐɀɉɁɆɂɅ ɃɄ CN d  CNɇɈ Cy <uɊɍ ɋɌ = CyɎɏ  ɑɜɒɗɓɖɔ ɕ  ~ =  <uɘɛ əɚ = Cy ɝɟɞ  Veɠ  ɢɣɴɤɭɥɨɦɧ Cy ɩɬ Iɪɫ <u Cy  I dɮɱɯɰ ~   C]ɲɳ  ɵɼɶɸ ɷ  Cyɹɻ ɺ CN  P ɽɿɾ   =   =   <u d      # # #  #  d  P  D  Cy Cy ~ =  Cy = i i  =         c        c   �     c        c  P   PZ4"  Cy   CN CN  ! ~ #,$)%&  =' d (  B*+ d Cy-1 . / d0 ~ =23 J5I6A7>8; 9 =: Cy  < = ?@  CN BF C dDE  Cy GH d  JQKNLM   OP Cy RXSVT dU Cy <u Cy =W  =Y P [ʕ\ʈ]q^n_b` d ta t .c dme df g h i j kl I d Iop = d 8w drʂswt Cyuv = Cy =  x =y =z ={| = =}~ = =ʀ =ʁ = < =ʃʅ kʄ = tʆ  Cyʇ = tʉʐʊʍʋʌ  C]  =ʎʏ   = ʑʒʔʓ = = ʖʭʗʢʘʟʙʜ ʚʛ = = hʝ t C]ʞ Cyʠʡ CN = ʣʨʤʧʥ ʦ = Cy d  ʩʬʪ  =ʫ d <u  ʮʹʯʱ ʰ ʲʵ ʳʴ  = ʶ Cyʷʸ Cy = =ʺʽʻʼ d  ʾ d d L d CN =     =      #   Cy = ,   ,     Cy Cy = P P P    Cy  Cy CN   #�   Cy (   = Cy    CN   = Cy CN  ! d  =  Œ Œ \  I  = ="%#$ d P &' P d CN ):*3+.,- d  /2 0 d1  CN C] 4756  = C]  8 9 ~ h;B<?=> Cy d@A P   PCHDGE dF   IJ  K YM˄NlOYPT QRS ~ I U V W X = = CyZ`[^\]  CN  _  CNafbc  Cy Cyd CNe Cyg hji  ~ k  ,mvnr op q t I7 Cysut  Cy  w~xzy  = d{ = |} <u I <u ˀˁ <u˂ ˃  = ˅ˬˆˌ ˇˈˊˉ CNˋ  d ˍˣˎː ˏ  ˑ˒˔˓  ˕ ˖˗  ˘˙˞˚ ˛ ˜  ˝  J˟  ˠ ˡ ˢ  Jˤ˧˥˦   = ˨˩ ˪˫ 8w X ˭˼ˮ˵˯˲˰˱  ˳˴  ˶˹˷˸ d d ˺  CN˻  =˽ ˾ ˿ d     Cy  CNS   d š DL P = =  ~        d  = d = <u  =  =     = =   =  CN CN  Cy d  t�   = d    =     d   3# d Ve  d       P = d Cy!" P   $,%*&  '()  I = Cy +  -0./ =  12  Cy d ~4D5=6978 =  : ; <  >A?@  BC  EKFIG H   J  LPMO dN =  d QR d Cy T̆UpVkW^X[YZ e P  \ ] = _g`fadbc = j F =e = = i  h i j Sl I l mn  o qyr su t  CNvxw d CN  z̀{ |~ } Cy  = Cý̄̂̃  C] ̅  ̛̇̈̏̉ ̊̋  ̌̍  d̎ d iX̐̓ ̑ ̒ <u̙̔̕ P Cy̖̗̘ = d = P̚ P ̡̜̪̝̤̞̟̠  ̢̣  CN ̥ ̦ ̧̨̩ <u = d̫̯ ̬̭̮ P t ̰ ̱̲ =̳ ̴ CN d Cy̶̷̸ζ̹͇̺̻̼̽ ̾ ̿   Cy D ~ Ve   d  =     =    X 8w 8w 8 8w   Cy  d d d  ~         ~  d I7  Cy d d � =  Cy Cy <u ~ = ~ = = d6 N 2     š CN =  ~ = ~ = Cy  =  Cy d,'  Cy!$"# r Ё А П%& Ю н (+ ) * Cy  -0./   1  <u3A49576  t = 8 P :> ;<  d= d ?@ CN J BJCFDE  Cy  G HI = K LM  ,  ,O^P]QYRT S UV  d W dX I Z d[ d\ ~ š  d _q`e a bc CN d  =flgk dhij = = mpn o  Cy = d r}sxtu dv w š šyz { | Cy Cy ~͂̀ ́   ̓̈́ Cy ͅ ͆ = =͈+͉͊ͳ͔͍͋͌͐ ͎͏ Cy CN  ͑ ͓͒ d <u͕͖͗͘͝ P P͙͚ P d ͛ =͜ dͫ͟͞͠  ͤͣ͢͡ CN d = Iͥ . ͦ ͧ ͨͩ ͪ =ͬͭ  CNͮͱͯͰ A š A šͲ d = ʹ͵Ͷͽͷͺ ͸ ͹ Dg ͻ d Cyͼ d;Ϳ    = I C? I  =  =   <u <u   =  = d   =  P Ve <u d     = d     =  =    C]    I7    �  d  DZ    CN    ! 1 @ O ^ d =  ~ Cy   P! P  Cy = d   ~ "'#$  <u% d& <u Cy d ( Ve) =* d,o-N.A/60312 t d45 Cy <u P7:8  9 , ;>< = š š?  =@  B CJDG EF = Cy  =H I  CyKL  C]M  <u O_PXQV RS CNTU m d <u W   Y\ Z[ = d CN]^ d `facb  = de  Ve gjhi CN = kl tm n C]  VepΑqΈr}sxtu d Cyv w b yz {| d =~΂΀ CN΁ Cy CN΃΄ ΅ Ά·  I ~ IΉΏΊ΍΋Ό   Ύ ΐ  ΒΥΓΚΔΗΕΖ  ΘΙ ΛΠΜΝ Cy  Ξ Ο I Ρ΢ P PΣΤ Cy d ΦάΧ ΨΩ  ΪΫ = I έΰήί Cy αγβ Cy I7 Veδ ε  Cyηθ3ικλμν ξ C]ο        CN š C] ~ i3 = d  P   Cy = CN  d  8w c  ~    =   d   =   d <u =   CN = CN [ Cy CN = =� Cy > σ = = d   C] CN =  =    = Cy =     ,  I   d ( %!$" CN d# = &'  d ).*+ CN <u, Ve - C] Cy / 012 6 6 4ύ5S6D7@8>9< :; Cy  d d= Cy I7?  C] AB C EMFKGJH I =  d  L  CNNQOP  P P  PR P TxU]V[WX | Y Z = Cy\  ^d_` Cya bc =  Cy =e =f g ohmij ы њkl ѩ Ѹ ~nqop o O !rust ^ vw r А ? @yσz{| } ~ <u  <uπς <uρ Cy  = τϊυωφ CNχψ  d =  ϋό =  tώϯϏϡϐϛϑϖϒϓ =ϔ ϕ  dQ ϗϚ Ϙ i3ϙ = Cy ϜϞ ϝ  ϟ Ϡ Cy I7 CyϢϧϣϥϤ   dDϦ  dϨϩ Cy ϪϮ ϫϬϭ 4 8- Hp ϰϱϺϲϵϳϴ = d ϶Ϲ Ϸ I7ϸ Cy ϻϿ ϼ CyϽ Ͼ  P P ~  = t = F Cy |  D Cy CN X Cy C]  o$  d I C]  Cy Cy Cy C] d = CN  = Cy =       ~ = d  d  T d d = =�   Cy <u Cy CN = = I  Cy  d  d6 = t = d Ve  Ve  d CN Cy  Cy <u     [  CN!"# = d = <u%J&8'4(0), * <u+ d = C]-./ <u = d 12 CN 3 D  567 Cy CN9@:=;< d = Cy> ?  d tADBC  CN Cy EIF dGH =  = = K\LUMRNQO P =  ST =  CyVX PW P  YZ CN[  Cy]f^d_a `  =b Cyc = d Ve e  glhki j Cy = I =  m Cyn CN pqЕrЂsxtv u Cy  w Cy y~z{ ~ Cy | Cy}  ~ Ѐ CN ~Ё = dЃЈЄІ Ѕ Cy PЇ P Cy PЉЏ CyЊЋЍ CyЌ Cy  =Ў Cy hАВ CyБ h Г Д A š �ЖЯЗХИОЙЛ К  C]М CyН Cy = ПР Cy СУТ   = =Ф d ЦЩЧШ CN   ЪЫ Ь CNЭЮ  = d айбев г Cyд = Cy Cyж Cyзи = кнлм CN Cy о CNп  d = ~ D  =   C] =  = <u      =   =  = Cy  Cy Cy  = =    CN CN  = d  P P Cy   =   =  = CN    CN � CN d <u =  d  dxP Ѯ U /   CN d   =   Ve =   t   =(&"  ! CN  #$% <u Cy iB ' Cy Cy )-*, Cy+ t = h . = 0B1:28374 56 = t  d = 9  ;@<? =>  = Cy  A CyCLDGEF  HKI dJ I <u = t MO dN CyPQ Cy =RT S  = =VzWfX^Y\Z[   ]  d_a ` = be c =d = ~  Cygnhmij Cy CN kl  =  P oups q Cyr = dt d CN vyw x Ve  Ve ={ї|ч}х~ Cyруст I7  Cy  4^ф Or ц  шющэъ ыь  = D CNяѓ ѐёђ <u   є ѕі 8w  јѡљѝњќћ CN  Cy CN ўџ Cy =Ѡ Cy =ѢѧѣѦ <uѤѥ   ѨѬ ѩѪѫ = d Cy ѭ d Cy ѯѰѱѲѺѳѸѴѷ ѵѶ Cy CN Cyѹ P PѻѾ PѼ ѽ  ѿ  d     d  = C] Cy =  P =  =   Cy Cy t CN   Cy P d P    ~  I Ve Cy Cy Cy d D C] t ('� Cy  ,    = CN C] I d  I D Ve   Cy    =     d  d = Cy d C] d C]!  Cy Cy = "# Cy$% X =& = (;)2*-+,  d  Cy.1 / 0  ,  38475 CN6 d  ~ Cy9: Cy  Ve<H=E>D?A@ š � šBC CN D Cy  t CNF G  = INJM K I7L = CN dO  CN QRҝSsT`UYV WX Cy Cy Z][\ CN = ^_ C] d ahbecd  Pfg  injmk dl =  I d orp Cy Vq V . 7 tҋu҂v}w{ xyz I CN I =| Cy 8w~ Cy C]Ҁ CNҁ : š ҃҈҄҇ d҅ ҆  d CN҉ Ҋ = ҌҔҍґҎҏ Cy dҐ d Cy Ғғ Cy  ҕҘҖҗ = Cy Cy ҙҚ  CNқ CNҜ  = CyҞҟұҠҩҡҤҢң <u Cy  CyҥҦ  ҧ <u Ҩ ҪҮҫҬ CN =ҭ  šүҰ d d CyҲҺҳҶҴҵ Cy ҷҸ  ҹ  Cyһҽ Ҽ Ve ~Ҿ CNҿ Cy  Cy  C] d =  Cy CN C]  <u CN  d T E E CN  N   = CN Cy CN  CN d = %  C]   Cy  = C]  ^ t C] I7 = �   = Cy    k y ҇ Cy = Cy  CN = d I! Cy C] d ~ Cy Cy =  Cy  =     ~ =" # CN$ CN &M'4(-)+ * d,  Cy .2/  01 = CN Cy 3  Cy5A6<7;89  Cy: Cy = I Cy Cy=> ?@ I   =BHCD  EFG : > > šIJ CN K dL   <uN`OVPSQR  CN TU d Cy W[X Y  CyZ C] =\] Cy^_ I ambhcd C] Cye fg  Cy d =ij = CNk Pl = = tnsop Cy CNq CNr CN <utu CN CNv w = IyԚz{Ӽ|ә}Ӌ~ӃӁӀ  ӂ CN ӄӈ Ӆӆ Ӈ Ӊӊ Ve   ӌӔӍӒӎӏ Ӑ ӑ = d ӓ d ӕӗ Ӗ <u P PӘ P ӚӮӛӤӜӠ ӝӞ CN CNӟ  d =ӡӢ  dӣ = ӥӪӦөӧ Ө = Cy ӫ Ӭ =ӭ  =ӯӴӰӲӱ Cy I Cyӳ  Cy ӵӺӶӹ ӷӸ <u  Cy CN ӻ Cy  CyӽӾӿ Cy  =  =  <u CN  Cy = d   d  Ve   > Cy  = P = P   P Cy   Cy    I7 I Cy Cy Cy Cy =  Ve     d CN  Cy Cy F"  CN� CN =   C] Cy CN <u d = Cy    t   = =  d =  = Cy =  d <u  I7 =  !  #4$*%' & =() I7 +0,-  ./ <u 12 3 <u 5A6;78 Cy9  : <@= CN>? =  Cy = = PBD PC P E Cy  GsHYIOJMKL Cy CyN Cy  CyPSQR Cy CyTW U CNV CN ҕ šX d Zh[d\] ~  ^ _`  a b c I e  f g  Cyil jk CN šmon  d D pqr  tԇu~v{wx CN y z d  d|} CN = ԂԀԁ  = d <uԃԄ ԅ tԆ  =ԈԓԉԎԊԍԋ <u =Ԍ ~ d t ԏԐ ԑԒ =   cԔԗԕԖ d CN CN Ԙԙ ~   ԛ*ԜԝԺԞԫԟԨ ԠԡԥԢ C]ԣԤ d = ~  PԦԧ P қ Pԩ Ԫ  P CyԬԲ ԭԮԱ ԯ CN԰ = =ԳԸԴԵ Զ Է d Cy t Թ  ԻԼԽԾԿ  = = ~ CN    CN   CN CN š CN Cy CN =  Cy  Cy CN    C]  d =  d      Cy Cy  Cy =  = =   CN = I d  C]   = �  I7 CN d Cy d  =  <u  = = i  = Cy Cy Cy t =  Cy       d Cy C]  C] !% Cy" =# Cy$ Cy =&'  Cy ( ) I +v,H-:.6/1 Cy0 Cy 23 P 4 I5 =  789 = Ve  =;A<?=>  Ve @ <uBFC  CyD dE C] G Cy  I`JTKOLN CNM Cy CN  dPQ Ve =RS I7 = hUZVY WX  Cy = Cy [\ P ] Cy^_ I C] akbgcd  CN e f  =hj =i Cy CN I7lpmn o  Cyqt rs CN C] du I7 = dwխx՛yՏz~{} =| d Cy Cy Հ I7 d d ՁՂ Ճ Մ Յ Ն ՇՋՈ Չ Պ  Ռ ՍՎ  ՐՖՑՕ ~ՒՓՔ  ~ CN = Cy ՗՚՘ ՙ   Cy <u՜բ՝ա ՞ =՟ՠ = =  գժդը CNեզէ  Cy d թ d =իլ =  CNծվկյհղձ ճմ Pնջշպո  Cyչ Cy P ռս = տ P  =  = c CN  =   t kظ`  =   = = =   I7 CN  d = Ic CN  <u CN   CN  <u Cy  Cy Cy <u     D =  �  =     d Ve    CN Ve I I7  ~   ~ =4"  Cy   CN   ! j d6 i =#*$& % Cy' (  8w) 8w+2,/ - Cy. Cy  0 1 Ve Cy 3 CN P5J6@7;89 P : Cy ~ <= >? ~ d C] =AGBC CN DE C] = =F = HI   KWLQMN dO CN P Cy RTS  U =V =  =X\Y Z [ = d ]^ = _ � Cya֮b֎c{dqekfg d thj i = lom  n # tp Cyrs  tx uvw D   yz   Cy|օ}ց~ CN I ր d ւ փք = ~ ֆ։ ևֈ  Cy CN֊֍֋ Cy֌ Cy ֏֡֐֑֚֗֒ I7֖֓֔֕ I CN֘֙ P P ֛֞֜֝ P š֟֠ Cy = ֢֣֥֤֨ CN d ֦ ֧ d ֩ ֪ ֭֫֬ = ~ = Cyְֱ֯־ֲֳִַ P ֵ  ֶ  CNָֻ ֹ =ֺ d ּ Ve Cyֽ k dֿ  =   I  c d   = d   8w   Cy j Ҩ   d d  I  Cy = I  d CN d d   k   D CN CN I    ,  Cy   =   = P ҵ P� = P CN P׫O)      i3 =  = = <u Cy    = ~    Cy <u CN& # Cy! " <u C]$ <u%  ='( = *;+2,/ Cy-. 0 1 = 3645 P  Cy78 d Cy <u9: C] <G=E>B? =@A Cy = CyC ~D C] ~ F  HKIJ = P CN L MN Cy CN dPxQgR\SWT U >V > >XY Ve Cy Z 8w[  ]b^_ P I7` da <u cf ~de CN Cy CN  hsinjmk l Cy  = Pop CN q r = Cytwuv d  Cy   y׏zׅ{ׁ|׀ =}~  =  = Cy  ׂ׃ ׄ Cy d c׆׌ׇ׉ P׈ d = =׊׋   F׍׎ 6 אםבטגוד CNה Cy i3 d ז ח # Iיל ך כ = d מפ Cyןנעס = C]  I7ף Cyץצ I ~קשר CN CNת ~ I7 CN׬׭׮ׯ׾װ׸ױ׷ײ״ Cy׳  ׵׶ # = Cy׹׺ % P׻ ׼׽ =  d CN׿  I7 C] = C] CN   d <u d <u =  Cy        ,  <u   = Cy  =    P CN CN Cy Cy  Cy  Cy C]�  : š š š š š š š : š š š š š š š : š = š Cy  Cy =   CN  CN I =  =  CN =   ~ CN  = d Cy Cy C.$   = d CN  !" Cy Cy#  Cy%)&' CN ( <u <u C]*+ š  ,- I/905142 3 I t =67 =8  CN :=; =< CN <u CN>B? P@A C]  =   CND[EMFJGH  CyI = KL Cy = ~NTOP  QRS  d  CyUZVYWX c ^ Cy D = \خ]؅^a_  Cy` Ve b ctdle f g h i j k c m n o p q r s c u}v w x y z { | c ~  ؀ ؁ ؂ ؃ ؄ c ؆؈؇   =؉؋ iB؊ <u ،؝؍ؕ؎ ؏ ؐ ؑ ؒ ؓ ؔ c ؖ ؗ ؘ ؙ ؚ ؛ ؜ c ؞ئ؟ ؠ ء آ أ ؤ إ c ا ب ة ت ث ج ح c دس ذ ر ز = CNش ص ضط š > š ع#غـػ1ؼؽؾؿ         c        c        c  Cy d Cy  P I7 = Cy     d Cy     ~ = C] C]  C] Cy   c�  P P    Cy  Cy š Cy CN   Cy I = C] =     d Cy t CN &!  I7 Cy = "#  C] CN$%  '-(, )*+ =  I7 =.0/  = CN I7 2V3C4;57 6 8 Cy 9 <u: d <>=  Cy ? @ CyAB DLEI CyFG CyH CN  tJK Cy CN dMQNPO   Cy Cy RUS T Cy = d WrXeYcZ^ Cy[\] _a ` ~ = <ub Cy =d  flgk hij C]  d C] = Vemn  opq  Cy Cy Is}txu Cyv Cyw = Cyyz C] { Cy|  = ~   Cyفق٦كْلٌمىنو CNه D ~ t =يً ~  = ٍَُ CN ِّ CN ٜٖٕٓٔ Cy <u ٗٛ Cy٘ٙٚ I  C] = = <uٝ١ٟٞ  d٠ = <u٢٥ Cy٣٤ CN Cy ٧ٹ٨ٰ٩٫ ٪  ٬ٯ٭ ٮ I7 = Cy  Cyٱٴٲٳ CN = Cyٵٸ ٶ ٷ I  CN ٺٻټٽ  پ ٿ  CN I Cy P P   CN CN ~  Cy  8w   Cy =      CN = CN = =      Cy t Cy CN   Cy Cy ~  Cy      Cy  CN d Cy� = CN d Cy  Cy d =  Cy D     CN   d P  Cy CN =   = i P Cy d = = CN "! iB d iB Cy = Cy $%~&R':(1)/*,+   - .  Cy0 Cy ( Cy24 Cy3 596 78  t =   CN;G<>=  =?D@B dA d  dC = Cy CNE IF <u IHKIJ  P Ve LP CNMNO =   Cy Q = CySkT^U[VW Cy P PXYZ CN Cy \] CN   Cy_c ` =ab d d Cydge f d <u =hj i = Cy Cylump no  Cy = qrs t =  CNvxw =yz Cy {} | 8w = Cyڤڀڏځډڂچڃڅ Cyڄ  d ڇڈ = Cy Pڊڌ Pڋ P ڍڎ CN CN tڐژڑږڒړ  ڔڕ   = ڗ CNڙڞښڛ CN ڜ ڝ dڟڠ = d ڡ Cyڢڣ Cy C] <u =ڥڲڦگڧګڨڪ =ک =   =ڬ Cyڭ  Jڮ J Cyڰ ڱ d Cyڳڹ Cyڴڵ ڶ CNڷڸ = Cy Cy ںڽڻڼ  I7 = CNھ ڿ  <u <u Cy    Cy CN Cy    = D   I d  Cy  = I C] I CN  CN ~  Cy Cy CN P  =  Cy  CN  I = I CN Cy CN CN 6  D   =  �  CN  = d Cy     Ve CN =    I CN CN d Ve  Cy   CN C+ CN  d =  = Cy %! "# š CN$ d CN &'  Cy Cy()* C] D T C],9-4.1 /0  I  ~2 <u3 = c58 Cy6 C]7 Cy = CN Cy:< Cy; Cy =? > CN d CN@AB Cy CN =DdEGF Cy  CyHMILJ CN C]K Cy = = N Cy =O �PQ R S T_UYV W X > Z [] \ >^ >` ab c > Cyefigh CN d  P Pj Cy lmnopۚqۂr{syt uw C]v SP C]x   Cy z  |ۀ}~  k d Cy ہ CN CNۃێۄۊۅۈۆ CNۇ = ۉ = ۋ ی ۍ  Cyۏۖېۓ ۑے = = D۔ =ە  ۗۘ Pۙ Cy CN ۛ۴ۜۧ۝ۢ۞ۡ۟ P۠ CN o CN Cy ۣۦۤ CN Cyۥ  CN C] CNۨ۬۩۪۫ CN  Cy CN ۭ۰ۮ ۯ I = I ۱۲۳ = Cy Cy d ۵۾۶ۺ۷۹۸ Cy Cy ; = CNۻۼ  ۽ t Cyۿ  Cy  CN Cy  d  Cy   =  Cy ~ CN CN  t Cy  Cy Cy   d <u t Cy   Cy P Ve P   C]    CN Cy  Cy Cy   CN  CN   d  CN Cy = t ~ �   s  CN CN <u CN  d  Cy    CN   =   Cy =h?2%   = CN = $! CN"#  = Cy  I7 &+'*( CN ) = Cy CN ,/ Cy- Cy. CN = 0 CN1  d394756  Cy Cy8 CN:=;< CN P Cy Cy> Cy @UAJBEC CyD I =FIG H d Cy =  KQLN C?M Cy CN CNOP CN = CyRS c T CN =V`W^X[ YZ Cy = \ ] = <u_   ac b dg ef  Cy   diܕj܁k{lumqno  Vep Ve =rt Is I = Ivz wxy   = Ve CN Cy| } ~ Cy܀ Cy d܂܉܃܅ ܄ CN ܆܈܇ I7 CN d ܊ܒ܋܏܌ CN܍܎ š  Cyܐ dܑ Cy ܓܔ = CN ܖܭܗܠܘܛܙܚ  CN = Icܜܟܝ ܞ  CNܡܧܢܦ =ܣܤܥ Cy = P I7 ~ ܨܩ Cy ܪ =ܫܬ d Ӂ C] mܮܹܯܴܱܰܲ C] i$  ܳ ܸܵ =ܷܶ Ve  = ~ܻܾܼܺ Cy =ܽ = Cyܿ <u <u  = CN CNy' =  = Ve Cy š     I    d  ~ D ~ ~ ~ ~ ~ ~ ~ 6 ~ CN t I7 CN Ve   d  CN  P P Cy Cy  Cy CN   � = Cy =    I   Ve    CN Cy = Cy d  CN  <u Ve   Ve Ve = Cy Cy   I <u Cy = Cy !$ "# Ve  Cy%& = C] Cy(T)@*8+1,-  . /0 Cy  d CN25 34  ~ 67 d = 9; : d<=  d> ?  =AIBD C =EHF tG Cy h ~ I7JOKL = >M CN =N =PS QR  UjVaW\XY Z[ CN ~]^ CN _`   Cybecd C] <u fi g h = Cy  kqlomn CN  Cy p  rts  CN Puvxw d B_zݶ{ݠ|ݑ}݈~݂݃݀  CN݁  Cy  =݄݇݅ ~ ݆ CN d݉ݍ݊݌݋ =  ݎ ݏ ݐ  <uݒݚݓݕ ݔ CNݖݙݗ CN ݘ Cy  Cyݛ ݜݝ Cyݞݟ = Cy = Ӑݡݴݢݩ Cyݣݤݥ  dݦݧ CN ݨ  ~ ݪݱݫݮݬ ݭ =  = ݯݰ d  ݲݳ Cy  Cy  ݵ Cy ݷݸݹݺݽݻݼ Cy Cy ݾݿ CN I   Cy = ~  Cy 8w Cy  Cy Cy CN  =  I P d d d d d d d d d  d  CN I  CN 8w ^ ӣ dQ dQ ӱ Cy ӿ  Cy  C] h    Cy Cy  Cy  � <u d d   Cy     =  Cy ~ I      =rqF0&#"  ! CN = = $% = '+ CN() CN* = d J,/- .  CN =  d1<2936 Cy45 C] Cy 78 d d =:; =B > ?@A = CN CD t C] E Cy GZHUIQJNK LM dD I  <uO P Cy ~ =RS CN T P  CyVW CN CyXY  [f\a]^ CN CN_ w` Cybc  d CN =e Cy =glhj i ~k  Cy m  nop Cy t rޘsފt|uyv CN w dx d iB Cyz{ C] h }ރ~ނ CNހށ t Cy <u I C] ބކޅ CN Cyއ CNވމ =  Cy =ދޒތޏލގ Ve   CNސޑ Cy P ޓޕ Cyޔ CN Cy ޖޗ = C] Cyޙޯޚޤޛޞޜޝ = Cy Cy CNޟޡ Cyޠ Cy  ޢ ޣ Ve Cyޥީ ަ Cyާ I7ި  CNުޫ Cyެ ޭ dޮ d  dް޹ޱ޷޲޴޳ Cy  CN Cy޵ ޶ d =޸ CN : Cy޺޾ Ve޻޼޽ =   Cy޿  Cy = Cy" d Cy  Cy d    CN Cy  <u CN CN t      K  Z Z   #  Z  1 = Cy Cy D CN Cy  ~ d  = CN Cy Cy CN = t q  Cy d =�  CN d d Cy  C]    d  = ~ d  8w       d  Cy    CN  ! = = ?#S$?%7&+'( CN)* Cy D Cy Cy,-/ Cy. = 0 12 34 56 8=9< CN: ;  Cy  > d@IAE CyBC  D  C]F CyGH  c dJPKL Cy CyMNO Cy <u = QR C] Cy TcU]VX W : YZ Cy d[ \ Cy <u^a_` <u CN db dhef g iojk  Cylm I n ~ Cy pq Cy Cy Lstuߨv߇w߀x}yz Cy{ | d Cy ~ d߁߅߂߄ CN߃ =  Cy߆ P CN߈ߎ߉ߌߊߋ Cy d ߍ Cy Pߏߓߐߑ I7  Iߒ  CN Cyߔ dߕߖߗ � šߘߠ šߙ šߚ šߛ šߜ šߝ šߞ šߟ > š šߡ šߢ šߣ šߤ šߥ šߦ šߧ : šߩ߼ߪߴ߫߮߬߭ š <u Cy ߯߰ Cy ߱߳ ߲   Veߵ߷߶  Cy ߸߹ CNߺ Cy ߻ l߽߾߿ Cy  d Cy CN CN Cy  Cy CN  Cy Cy Cy  CN I7 CN I7 Cy Cy  Cy CN Cy  Cy  C]   C] ~  t CN t CN d Cy  Cy   CN   CN C] C]  = �  P Cy C] d P Cy I =  P  =  Cy Cy   Q ן  Q <u = Cy  Z h C] =  CNoC0("!  I  Cy CN#$ CN% Cy&' = d =),*+  CN d -. CN = Cy/ CN 1:2534    CN697 Cy =8 Cy ;><= CN I CN?@ CN CyA B <u Cy =DYELFJ GH I : K P = CNMSNO P P CyQR F   =TU VW CN =X Zb[_\] =  Cy^  =`a CN CN <ucjdge  =f Cy =h CNi d knl I7m  t pqryst CN Cyuxv  Cyw = z}{|  C] = CN~ Cy I7 ~ CN  I7 Cy CN    = CN CN t D      = I =    Cy  Cy    Cy   = D Cy  Cy CN  P d d    =   h  d  Cy  t  t Cy Cy  CN Cy CN Cy Cy h Cy   Cy  Ve P P Cy  d Cy   CN š j d <u I7 C] d = Cy CN =     P  CN  Cy  CN CN Cy� =  Cy  CN CN Cy H!    Cy ~ =  CN  P P Cy   <u h CN <u        = CN d"7#-$'%& Cy Cy (*) ~ Q ƨ+ C], = ~.0/ CN Cy162534 v SB D Ԅ t Cy Cy 8A9 P:< Cy; CN Cy=?>  @ Cy I7BECD Cy dF CyG = dIuJ_KSLN CyM C] =OP Cy QR d d CyTYUXV W t = Z\[ <u  Cy d]^ iX  Cy`laeb Pc Pd t ( tfig d CNh š = CNj k Cy mrno Cy dp Cy Cyq <u Cyst Cy vw}xz dy d ~{| CN d CN~  = =   CN d   " d <u t  = C] Cy = =   = Cy Cy d 4  I7 Cy  d  Cy  d  Cy    CN    I CN <u   = Cy   Cy   CN  CN    = CN CN  CN   Cy d  CN CN  Cy Cy <u   CN =  CN  = = Cy   Cy Cy  = Cy  CN Cy   =   = Cy  Cy   Cy CN � I  Z I P = P    Cy <u  <u !  ~ CN CN Cy d CN  Cy =  CN  d  = CN = "+#%$ CN ~ d&) CN'(  = CN h*  Cy,0-. P  / CN =132 d  Ve  CN5z6\7G8@9>:; C]  <= = ? CN Cy =ADBC d CN CN E CN CyF = CyHUIOJLK CN = CyM CyN  I7 CyPT QRS CN Cy Cy CN VX W Cy Y[ Z  l CN]i^d_a ` š bc ef  CNg Cy h  =jqknlm CN CN Veop CN Cy I7 Cyrvsut Cy = CN C]wx CN Cy y  CN{|}~ Cy  Cy  =  Cy P >   Ve   C] d Cy    Cy  = Cy CN = CN  Cy  Cy =          t  =  d  CN ~  CN  Cy    CN Cy   =     CN Cy Ve Cy Cy   = CN   = ~ CN1 CN Cy Cy Cy = ~ Cy Cy      t <u Cy CN  CN  Cy  Cy   =  CN = CN  = P = �  Ve =   = CN    d Cy  Cy t   Cy #  =  ԓ# CN    =! ="  Cy$)%(&' D P CN CN*.+-,   Cy d CN / t0 I =2h3R4B5<6978 CN  P CN: = Cy; I7 =A>@ ? t  C] C] CKDHEF Cy dG Cy  CyI dJ Cy CN LM  CNNPO = dQ S^TXUWV C] d CN CN Y]Z[ CN Cy \ Ve  d _e`ba  ~ cd ~ CN Cyfg  = ~ Cyijzkslom <un <u = Ipr q  Cy Cy CNtx Cyuvw  y P CN{|  CN}~   Cy P d t  CN  I7   d  t      <u  Cy = <u     Cy C] Cy =  CN  CN = =  Cy  Cy Cy d C] Cy Cy  Cy ~ Cy   Cy   = P  = d    Cy P   P Cy CN CN  Cy = <u   t d Cy CN CN <u  CN CN CN I7 C] CN Cy t CN d  <u   CN   Cy = CN� CN  =  Cy C]   CN =  Cy =    <u = =  CN Ve R-  P CN Cy CN Cy = Cy& $!" Cy  Cy# = P% P Cy'*( ~) = = + , C] =.?/6021  , 34  Cy5 I <u7;8:9 Cy   <> = d d Cy@IADBC d Cy Ve PEG =F <uH t d'JNKML Cy  OQ CyP C] = C] dSwTfU`VYWX  CN Z^ [ \ ] ԝ C]_ acb CN CN Id e P I7 =gnhkij P Cy CN Cy l m Cy ospq C] CNr ~  Cytv <uu Cy  Cy xyz~{} d| Ve  CN  P  Ve  Ve     =   =  CN CN   Cy  = I7 = CN( I7  P ~ I    Cy Cy  CN  š C] = Cy P Cy  P d j  Cy  I7 ~ = CN <u ~ CN Cy  Cy  Cy Cy CN CN  = Cy = CN CN d <u P = Cy  Cy  ~ CN   C]     Cy I7 =  ~   <u  =    CN�  <u =  š CN  =  CN CN  Cy  Ԫ mz Cy      <u = Cy = CN Cy  CN = C] =   =! Cy  CN "%#$ E  d P&'   =)m*M+;,3-0./ CN C] 12 CN CN =4756  Cy 89 t: = d<F=B>@? š A Cy 8w CE CyD  C] <u CyGIH  JK  L Cy CN CyN[OVPR CNQ * CNST CyU  WY X ~  Z  \d]a^` _ I  <ubc Cy CN Cy eifh g =   jl tk CN ~ no|puq Prs t CN CN vxw Cy P y{ Cyz Cy = Cy C]}~ Cy   d ~ š CN P = Cy  <u Cy d  Cy Cy  = d CN =  = CN ԓ d š =   Cy  <u  Cy Cy C] t = Cy  Cy  Cy  = I Cy  Cy; d = Cy   Cy  P  Cy P  CN = Cy  = Ve =  CN d = ~ =  Cy Cy Cy  CN  CN  = P I  Cy CN    Cy  <u   Ve   �  P CN X  Ve  <u  =      <u  CN =   Cy Cy CN = (  d Cy I7  Cy š Cy!$"# Cy I Cy%& P ' š )3*0+-, = Cy ./ = i 12 ;8 475 Cy6 Cy I8:9 Cy 8w Ը Cy<x=]>N?F@DAC CNB Cy  Cy E  GJ HI Cy Cy =KL Cy M š OWPRQ   CNST I CNUV =  CNXZY Cy [\ Cy = Cy^l_c Cy`ab š dg ef  =hj CNi CN Ick = Cymp Cyn Cyo  Cyqtrs = Cy Cy CNuwv d ^  CNyz{|} Cy ~ P CN P  CN CN iX Cy Cy  CN   <u  k   Cy I    CN Cy  = Cy Ve P I P  P = I7 Cy = Cy ~ Cy   Cy CN d   Cy Ve = CN I =6 Cy  Cy Ve C] Cy Cy Cy =     Cy CN Cy t Cy CN ~  Cy   d d ~ d  ~ CN Cy Cy P Cy Cy = Cy 8w CN   = = = Cy CN I7        Cy = <u � Cy Cy   Cy ~  Cy  Cy = P  CN CN Cy Cy  Cy Cy Cy ~ Cy  Cy*$!  Cy I7 CN"# CN ~ %( Cy& Cy' CN ) Cy  +1,.- Cy Ve Cy /0 CN I243 5 Cy ; Cy7w8X9I:@;= P< P >?  CN CyAEBDC   ~ FH =G D Cy CN CyJOKM CyL  N CN CyPTQSR  d D Cy UWV I  CN 8w PYgZa[^\] CN Cy Cy CN_` CN CN becd Cy f  hpimjk Cy l CN  Cyno Cy qurt CNs I = CNv Cy Ve xyz~{| Cy CN} Cy CN Cy Cy ~ ~ = C]  Cy CN I     Cy Cy Cy = C] Ve  Cy <u Cy Cy CN  CN Cy  Cy ~ Cy Cy  C] = CN I Cy Cy CN P P P 2  CN  = CN P CN P Cy Cy  =  Cy CN  =  CN   = Ve CN Cy  Cy  Ve CN Cy  Cy CN  CN  = CN  c  J =     I Cy =  =   Ve <u  =  d Cy  Cy CN Cy C] �  I I7 CN =       t = D    Cy Cy   Cy% <u = Cy I Cy D Cy  " ! = #$  I7 CN &,'*()  ~  + -.  Cy/10 =  3r4T5D6=7;89  Cy Cy: Cy  Cy< >@ ? AB CN  CNC Cy EMFIGH Cy P P JK CN C]L Cy = NPO Cy = CyQR CN S I7  =UeV]WZ CyX CyY  = Cy[ Cy\ š^` Cy_ Cy C]ac b  Cyd  Cy flgi h P Cyjk  CN I CNmon Cy  dpq  P Pstuzvywx   Cy  Cy{} Cy| Cy ~ Cy  Cy   CN Cy CN CN W6 ï    CN = I7 P P CN  I 8w     8w | Cy  Cy Cy Cy = I7 Cy CN Cy I Cy  CN <u Cy Cy Cy   Cy Cy Cy5 Cy =  σ  CN  CN Cy = Cy  I7 Cy CN Cy   =  Cy CN  Cy CN CN I P   =  I Cy CN Cy Cy CN Cy <u Cy C] CN  CN Cy CN Ve ~ Cy CN  Cy CN     =  � C] d <u  3   CN    C]  P    C]  CN  CN  Cy k " Cy  Cy  CN Cy CN CN ! = = #,$(%& '  )+ Cy* = Cy š -1.0/ Cy = <u 24 3 CN = Cy P6z7\8J9A:=;< CN  >@ C]?  P CyBGCED Cy  F Cy HI d KULPMN C] Cy O  IQS R d = T CyVYWX Ve  CyZ[ CN  CN ]k^d_b ` a  Cy CNc  Cyehfg Cy ij = lsmqno  P p  CNr = 8wtxuv  Cyw Cy Cy =y  Cy {|}~ CN 8w   Cy Cy CN CN c  Ͼ     Cy   # Cy   CN CN P P  Cy Cy 8w = CN      = Cy I7 = Cy Cy  C] = Cy t Cy Cy = = Cy Cy Cy  = C]  P 8w PG P Cy CN Cy : C] Cy CN CN Cy = CN = � š Cy  CN = CN C] Cy  CN    CN Ve = Cy  CN CN  d  Ve = Cy Cy C] Cy Cy  Cy Cy t C] Cy Cy � Cy P $   t =     Cy   Cy =   C] ~ Cy   CN Cy <u = Cy  = Cy Cy!# " š � ~ Cy%6&-'* Cy( Cy) = +,  C].2/0 C] 8w1 =34 Cy 5  Cy7?8;9: Cy <u <>= CN = P C]@CAB P C] =DE = F CN = CyHIhJXKQLOMN CN ~ ~P Cy Ve CNRTS Cy  CyUV = dW CN ~Y`Z] Cy[ Cy\  =^_ CN C] C]adb Pc t <u =ef P CN CNg ~ Cyi|jrkolm = tn  Cypq Cy = d =sxtv šu  =w = = y Cyz{ I Cy  d}~  Cy Cy ;8 O CN = C]  Cy   CN P P  CN  d CN   Cy   = š  Cy   Cy Cy  CN =  Cy <u CN  CN <u  Cy = Cy CN  = ~   Cy CN Cy Cy Cy = Cy   h  C] P P P Cy CN = t e% = [ = Cy  Cy CN D ~  CN ï Dz =   Cy CN I = Cy   C] P  Cy P Cy t  =   Cy�  =  Cy Cy =  Cy  Cy   Cy C] CN CN Cy Cy  c  C] Cy  <u CN" ! A# $ A&F'7(0)-*+ = ,  ./ Cy CN1524 I73 Cy CN Cy 6  CN8>9; P: P ~ < = ?C@B <uA   ÑDE  <u GXHQIMJK =L <u NO =P <uRUST CN VW CN =Y^Z\ [ CN Cy] CN Cy_b Cy`a Cy =cd = C]fgh|isjokml Cy  = n Zpq = r C]  Vetxuv = =w  Cyyz š CN{ = Cy}~  Cy C] Cy  ~ = CN CN i  Cy =   = P P P CN d Cy I  Cy ~  =  Cy Cy <u  CN CN D = C] t = <u Cy  CN Cy Cy Cy    I <u Cy Cy  = CN D  C]   =  Cy CN ~ CN   I Cy Cy Cy CN Cy = I7 CN  Ve = P  CN CN P  Cy CN = I7  CN = Cy Cy  Cy   PV$ P     ~ I7 ~ CN  Cy  = �   I   <u I7    CN =  Cy    C] <u t Cy Cy Cy  Cy Cy Cy t Cy  P l CN ! Cy"#   C]%;&-'*( Cy Cy) I7 Cy Cy+, CN Cy =.4/201 CN P3 Cy Cy5867 P Cy P 9:  C] CN <G=D>B?@ = iX C]A š =C  iX E CyF Cy  CyHM CyIJLK  ~  CN NROQ VeP P S TU  = WXzYhZa[] \ C] =^_ D Ve`  bdc I7 C]eg Cyf Cy CN Cy iqjlk =  mo n CN p Cy Cy rwsu t CNv  =xy  i d{|}~ Cy t  I7 CN  P P   ~  CN CN = Cy    D Cy Cy CN  ï = Cy  ~    =    Cy C] CN Cy Cy  P P Cy Cy   CN ~ CN I7 ~ = CN Cy  Cy Cy Cy  Cy    I7    P CN   Cy P Cy   7�   <u Cy Cy CN PO P P P Cy Cy    I7 P P P P = P  k CN  P CN Cy P   CN Cy Cy � = ~ ~ Cy Cy P P      Cy I7   CN Cy t Cy Cy CN  Cy 5& Cy Cy = Cy  = C]  Cy  #!"  Cy t$% C] Ve = '-(+)* Cy = Cy ,  .1/0 CN CN 23 4 I  CN6C7<8 9; <u: = <u CN ==A>@ ?  Cy  CN CyB  CNDIEG CyF <u CyH  CNJMKL Cy C] CyN Cy Cy PQpR_SXT UV Ve  W Cy Y]Z\[ P  = P  Cy^ `haebd Cyc I7 CN  CNfg C] I7 Cyimjk Cy  l  Cyno = Cy Cy qrzswtu Cy C]v  = x Cy y CN {~ Cy|} = I CN C] I7 Cy <u  = Cy =  = =    Cy Cy      CN = =   Cy Cy   C]    =  I   Cy Cy  ~ C] CN P   C] C] P      CN  =  C]  <u CN9� CN CN = CN C]  Cy   = Cy  Cy    = C] CN    = Cy = CN Cy Cy =  Cy  d = CN   Cy   <u I7   =  Cy CN Cy  Cy Cy  CN    Cy     <u Cy  CN  Cy Cy ~ Cy   <u   Cy  8w+ &!# Cy" Cy I7$%  CN')(  Cy CN *  ,2-/. 01 = Cy 364  5  =78 CN Cy Cy :s;Q<J=D>B?A CN@ CN t CN C Cy ~ EG CyF Cy PHI C] Ͼ KNL  M CN  PO PP P CyRdS\TXUV  W  YZ CN C][ C]  Cy]a^` _ = CN  b Cy c  Cyelfig h  Cy  j k  Cympno Cy CN Cy qr CNtuv|wy CNx ~ z{  }~   Cy        I  CN     CN CN  Cy  Cy  Cy Cy     Cy Cy  CN Cy Cy  Cy =    CN   d d d% P P Cy = CN Cy  CN Cy I7 CN Cy  d Cy # Cy   Ve Cy Cy � = Cy  Cy  P  P Cy I7 P P CN Cy   š   J  =  = Cy   Cy    = Cy Cy CN t  Cy   Cy Cy Cy   CN <u� Cy =  Cy   ~   Cy  Cy        = Cy  Cy  Cy  Cy   š    P  " ! Cy#$ P CN &^'E(7)1*/+.,- t CN CN   0 24 P3 I7 P5 6  = 8>9<:;  P = Cy CN?A@  C] BD C =  CyFTGNHJI CN  CNKL Cy M Cy ORPQ Cy  Cy CNS  UZVYWX P   CN Cy[ P\] P Cy Cy P_{`pahbfced Cy Cy = ~ Cyg Cy <u imjk  Cyl CN  Cyno CN C] I qvrt Cys Cy ~u P CN Pwy Px P CNz Cy Cy |}~ Cy  Cy = Cy  Cy P P CN CN   =   CN =  Cy =  I Cy  I = =  h  = Cy d Cy I7  I7   I7 P Cy P P P ~ Cy Cy   C] t Cy <u CN  Cy CN Cy  Cy    Cy   d' Ve CN P Cy C] = P Cy = Cy <u Cy t CN Cy   <u  Cy  I  d  Cy  = C]   d Cy C] Cy  Cy = d  d4s+    Ic  �   I7   = I d         <u CN   = d =  I Sl $"! = d = <u  # %(&' P)* <u   ,L-<.8/301  2 <u =4 5 67 <u = C] Cy9 : ;  <u=F>D?@  dABC =  = E  =  GHI  Cy J 8wK X 8wM_NVOTPSQ R G <u U  W\X[ YZ = d CN ]^ d `fadbc   e = ghr ijn kl m o p q tuvw{xy = z  |}~   # #  d  =    =   ~  C]    a dD % dQ =   =    Cy      Cy I  P    =  d =      CN <u = ~ Cy  d  Cy    = CN Cy =  =   Cy   C?       =  CN Cy ~ Cy Cy  Cy =        CN =   P  P O.� d   t Cy d P  A  A A  A A A A A š  <u d   Cy C] Cy J  $  = ! <u"# = d%*&' ( <u)  =+ ,- d Cy /@091423  56 d = d78 t d :=;< C] d >? d š d AGB CFD  E = ~  HJ I CN PKL PM PN ҵ PPqQcRYSVTU WX  ~ Z\ [  C]]b^` CN_ d  <ua <u ~ <udmehfg =  dij  k Cyl d = Cyn op  rsw tuv = ü CN dx{yz = I |} h ~ Cy d = Ve     CN =      =    t CN d d i i i i i i i E i  CN  I7  ~   = d   = j = =     ~ =  ~  ~    d = Cy  <u = Cy = Cy Cy  CN  d = Cy CN  Ve d   CN  k  <u I)       CN P P� P P <u Cy P  CN = = <u      =  CN    d Cy =#   d  ~ CN  !   2"  CN t$)%'&   ( ~ *-+,  CN Cy. /0 1 2 3 567t8e9S:C;@< = =>? DLAB Cy P P DPE F CNG HI J K L M N O QR   PTXUV  W  CNY`Z][ \ I # ^ ?_ I adb c P fjg h i Cy Vek lqmn C]o d "p " rs  uvzw x y {| } ~            CN  M  =  CN  =   d Cy = i   C] š     d  Cy  CN d d Cy Ve     Cy Cy =  CN  = <u Cy = d   I #  , , , u!� d ~ ~ = t  Ve  d d d  d    d  d CN d Ve h =    d = Cy  CN        # I #   CN  CN = I7 d  =  = <u =  = CN <u "J#7$-%*&' (  8w) 8w+, d =.2/ =0 d1 <u 34 56 Cy d 8B9<:;  CN =A> š?@ = Cy  CE PD P FG  H I  KgL\MPNO  CN  Q R dzST dzU dz dzVW dzX dzY dzZ dz[ dz dz]b^a_ t`  cd C] CNe f dhnik j =lm ~   dorpq  = CN s t  =vwxyz|{  }~ \ d = T  <u   d  š    Cl        I d  d   Cy   Ve  CN Cy = I t  P P   CN = Cy  Cy   <u d = ~ = P    d  ~ <u I7 C] d = =  Cy  = d        CN =           Cy   Q0> =  = �   = Cy t  k     ,     <u g u d = Cy   Cy&  CN <u Cy t      = $!  Cy"# = = i% = I CN'0(-), * +  =  Cy./  t = 12= 34 5  67 8  9 : ; <   ?n@WANBJCGDFE = Cy = CyH <u CyI <u CNKL  CNM = ORPQ d  =SV tT C]U D = dXbY] Z d[ m\ C] Ճ^_ CN C] ` da d Cyckdieg f Cy h D D  ~j d lm =opyqurts d d Cy vw  x ~ = dz}{| = d ~ Cy = = <u CN  d  <u CN  =  = Cy G  C] = Փ գ ղ  CN 8w =     Cy CN  d  d  =        Cy Cy  d Cy = d  d  =   = t =    = Cy  <u x <u  d = d Cy  =    d =  CN <u d E      Cy = Cy    Cy   8w d   <u   �  = = Cy  I7 ~   Ю r А    d d =   š  CN $  d 8w d  =!" = P# ;8%-&* '() I I Cy+ , = ~./ = š123`4E58 6 7 i$ 9?:; t< => D ~ = Cy@A <uB CD  #  FMGKHJI ~ I7 = L  CN NYOP Q R S T UV W X Z][ I\ = = i^  _ = <uaqbf cde  2  glhi d j dk BQ mpn to d ~ d d r|swtvu <u = x{y  z d Cy = }~ I  Cy Cy Cy  =       CN Ve I7   = I C] C] Cy I7 = P   Cy    d t  =   d Ve d d CN CN       # d d  P  dQ  =  = d  BQ BQ J Cy    % Ve 5 I7 CN  C њ ы Cy d = Cy C? <u <u I  Cy   Cy     CN d   d d  Cy  ~ CN <u =� = CN =  d  Cy Z Z Z Z  Cy  d 1    = Cy = Cy = Cy     d!+"(#$ = Cy% &' Cy d = d)* = d,.-  /0 d 2B3;4857 =6 =  ~ 9:   d <?=> =   @A Cy \ d CJDFE  Ve GIH  I  `KOLM  8wN  ,  P  R6STUoV^WZX Y  [\]  CN `_g`cab  P d  e f  Cyh Pinjl tk  d m  C] pqzrxsw Ptuv <u = d C]  y {| } ~  I    = Cy <u š � š �  = =      =  = i     =  ,    ~ = <u d CN CN = d  CN     Ve =  Cy = C]   Cy  Cy   ,   d =  š   1    d        Cy CN Cy  d d CN          Cy =        = Cy Cy š :�      Ve   ~ CN Cy <u =      = d CN  Ve CN  CN  P + &! "$ # % Cy t Cy'* ( ) =   š,0-. d  CN/ ~ 132  =  Cy45 Cy Cy 78c9R:H;B<?=>  ~ @  A  ,C D EFG d = CyIOJLK PMN  P  PQ Cy SWT U V X]Y[ Z CN \ , ^ _ ` ab  = = duem f ghi CNj ~kl | ѩ @n oqp  , r s =t P = vwz xy P  P{} P|  d~  C]  =  CN   CN     ~ Cy  d    Cy P     8w c 8w   =   = ( A  C] d Ñ d       = =  d  Cy  d 8w = = d d' Cy  =  <u =  = = i d d I  <u Cy Cy =   = = <u P d  Cy = Cy  ~ = = I       <u  d t �   ,   C]    d  Cy =     8w  Cy CN  = d Cy     d .% " ! =#$ Cy =&+ ='() t Cy Cy*  Cy ,-  Cy =/70312 465 Cy <u d C]8;9:  CN = P<?= I7 => Cy d@ d h BCkD[ENFJ GH =I = KM L  i3 d OVPUQS <uR <u IT R W CyXYZ  = Cy\b]_^  <u =`a   cfde  = Pgh <u di j CN =lzmsnqop = Cy  r tx =u v w Cy y  = {|~}     = C] Cy =  Cy   = = P <u d    Cy <u = I =     =  = =  I d  = P    Cy ~ Cy  Cy Cy   = <u = d  =   P Cy   = =  Cy d d Cys$ CN t d  P = Cy d  Cy  ~  d CN ~      Cy   , ? , d d š   Cy CN iB�  CN I =    C]    =    =  = CN  =    o o o ` o Cy Cy!" d #  Cy %M&='4(0).*,+  d =- = =  / Cy d132 }  5867 ~ P CN9<: d =;  ~ >D?B @ CyA Cy  CNC d tEJFIG H <u d tKL ~ I NaOYPVQUR ST  <u d WX = Z\ Cy[ ]^ I _ d d` =bkcidh Pefg h ~ {  Cy j  lomn d pq r d <u tuvwxyz CN { |} #~ J J J J J J J # J CN     d   Cy  CN ~ ֊ ~ d' š ( š = <u  = d d Cy  d   Cy  CN   ~ d t  . U ֘ .   =  = d CN = Cy  CN    d I     ֦         d d š       Cy  Ve = d6  Cy Cy  Cy  �   CN `  P  <u =  CN  = Cy  CN  Cy Cy =    ~ CN  d d   d ~!M"#~$O%A&:'*()  +7, - . /30 1 2 # dz 4 56 Sl 8 ~9 Cy =;?<>= Cy t @ P ~ PBICFDE Cy =GH d =JLK <u = CNMN  = P PhQaR\ST  =U[VXW d YZ # ִ = d]^  I7_ <u` <u =becd = d = Zfg  <u  iujnkl = m I šor =p q Xs =t = ~vzw x I7y <u  C]{ =| } Cy Cy  ~  = <u  =   P I7 <u    = d  t  Cy   Cy Cy  Cy     CN <u   Cy Cy Cy = ~ d  h d ~ I7 I Ic t t Ve =  <u = =   =   I   = ~ = CN d d P  D =   P =   d ~ = =   d Cy d <u   C] d    CN d  = �  d   CN = Cy CN   Cy  Cy    =   = Cy8%     = Cy =   ~ #!" Cy = $ =&/',(+) * Cy  d Cy C] - . : 0512 = 34 J( = Cy67 =  9E:? ; <=  Cy> = @BA d CD I d =F GKHI I7 J  PL NOP[ Q RSVTU d WZ X Y = \m]e^a_` d C] db  cd Cy Cy fjgih  Cy =  dkl Cyn{ovpsq r d Cy t u =  Cywz x dy E d | }~ d ~   =  Cy CN <u  d š  P P CN d = = I d = P Ic  Ic    Cy  = Cy P   = <u    =     <u  = CN P P P <u  I d k = ~   # Sl Sl Cy  ~ d   <u = Cy P d   d      CN <u d d =  P  d  =  =  � d  =  = d  d   <u =  P P  ~    =   d l = Cy  d  Cy!    d = "%#$ <u  &'  ~ CN)*G+,l-L.</502 d1  34 d 6978  d CN:;  <u d t=F>A?@ d BC D E  = GI H  CyJK M^NWOTPS QR = = <u  UV  <u X[YZ   \] ~ <u _g`cab   d ef = C] šhi = jk d CN mnozptqs =r Cy =  uv w txy Cy  = d{~|} t <u d    <u    <u <u  = ̀        cQ    <u     ~ = iB I  d   = Cy d = Cy i =      =  P = d  ~ CN d6  = <u I P I <u =  <u d d Cy d  = Ve Cy    Cy l     t d D   Cy = š  Cy Cy = CN   <u   Cy d =� <u = %   d  I    = Sl d    Cy  =   CN CN =  <u =# <u P! Cy" =  $ &5'.(+)*  CN,-  = ~/201 <u d 34 Cy  6=7:89 ~  <u;< ~ P >C?@  d dA B d =DF E d Cy HIJhK^LSMPNO  CNQR d d TWUV  Cy  X\Y Z[  d <u Cy] = _b ` a cfde Cy g  J i~jsknlm = C] P CNop I q Ir I tyuxv Cyw CN d  C]z{ C] <u CN| d}  ~ = = Cy <u d  d I =   Cy     Cy      d  d  d   d   Cy  = = ~  CN   CN t  ~ Cy C] Cy CN P  = =  = d l d t t d d <u Cy d Cy    C]   CN = = = =   Cy Cy = d P h P9  Cy = t t =  = =  dz  <u  t =  d d d d Cy �  ~  = C] P d  Cy  Cy ~  ~ D ~ $  = = Cy =   cg     d Cy! =  #" t Cy# = %-&( ' ~)* + P, ~.3/0  1 2 = =45  6 78 š <u = š:`;L<D=?> Cy = @CA Cy CyB Cy Cl Cy dEIFH CyG š Cy CNJK d  <u tMVNSORP =Q C] d <u =TU d WZXY  Cy  [^ \] = = Cy Cy_ C] Cyaobhced = fg  <u ij kn lm Cy = p{qvru <us Cyt I wzx y  Cy Cy |}~ = Cy  = CN d Cy  <u =  = = d CN =  =  Cy  = d  Cy     =     = d  Cy =  P  <u = Cy CN  <u =  Cy  d  CN d   Cy  d  CN  P  d     =  <u Cy CN = Cy = = %   ~  ~  P d  =  =  = = d6 C] d  �   =   d d    ~ Cy  =  C] = d Cy   aB/$  σ σ 3 = d!"  = P# d %*&' ( ) CN d +, <u - =. ~ =0<1423 CN d5;6  78 9:  A N <u =? d> d@A  <u d CPDKE FG d I7 HIJ i J DL hLN M  O  Q[RWSV T dU <u Cy <uXY  = Z d C]\_]^ <u <u ` <u =bcrdje fg ~ = dh =i Cy =k lm np Cyo =  Cyq  =sytvu = dwx  z~{|  } = CN   = Ͼ Ͼ ] =  =  Cy   = <u d d =  I Cy   ~   CN  CN  d�E P  = Cy = Cy      Cy d =  d  C] d h Cy d  Cy =  d    I  J   C?  d   =   d  Cy   d  Cy =     I  CN     = <u P�&�������� Cy ~ d� �� �� �  CN CN� � <u   ������ =� Cy  t �� � Cy P =���� d� ~� Cy  ~��" Cy� �! = <u t �#�$�% Cy  = d�'�6�(�/�)�,�*�+  t <u �-�.   C]�0�3�1  CN�2 �4�5 d �7�>�8�;�9�: <u =  �<�=  Cy �?�B�@�A d �C�D  d �F��G�o�H�\�I�S�J�M�K�L <u = P�N�O P �P �Q�R = Cy CN �T�W�U�V  P �X�[�Y  Cy�Z = Cy  �]�h�^�c �_�` �a�b 8w ^  8w�d�e  CN =�f =�g CN Cy�i�k �j Cy �l�m I�n d Cy�p��q�w�r�t�s =  <u�u�v <u�x��y�~�z�|�{ š š � =�} I CN Cy �� I7 I7 ����� ��  <u� š 8w d�� d P ���� j� <u�  <u j  � � I� I ���������� C] �� Cy Cy t�� = <u��� d Cy CN =����  d �� =� Cy = �����  d �  P���� ,   ,��  Cy� Cy� I7 ������� C] d��  C] � Cy �� d�� Ve  ~��  ���� d� d�� d  d����   P�� Cy � =� =���� ���� E š�� š� š� š š� š�� š š� š�� š� š š� 5�� 5 5�� 5 š 5� š�N š�� š����� š� š š �� š 8 š š š  š š  š   š š   š  š 8 š š š š š š E šD842 š š B k !  "# �$ �% �&, �'(*) � � > �+ � r- �.0 �/ D > �1 � r3 š š 56 i š š7 š 9A:?;< š= š> 8@ š š šBC š šEIF š šGH š š JK š šLM š šOgPeQa šRS ( (T (U (V (WX (Y ( (Z ([\ (] (^ (_ (` (  (bc d  š : šf šhHiDjkwl šm š šno š špq šr š šst šu š (v ( šx šyz{| š} š~ š š š H š H š H š š š A š š š š  > š  š š > : š š  š ( š   , ( > š  š š > : š : �  š (  š ( � š  š š > : š : � , š  ( ( � š š š š š š š  : � š � A  (  š � � š š š š   š  š š (  > š š1  š š š š š  š > š š š š� š   š š > š š  > š " š  š  > ( š > � � ( š ( š š  : ! : š š ( š (#' š$%& š > š �(. š)*-+, : :  A š/ š0 š H š2 š34>5<6 š š78:9 š ; ( (= š (  š?@BA ( � (C  šE š (FG  ( IVJQKPL (MN š  šO >  šRS š TU š : : šWXYZn[d\`]^ 5 A _ ( ab ( 5 Ac A ekfg ( A hij A   (lm  5 A (opyqu rs At  ( v wx 5 ( ( A z{} A|  ~ : : š c > ,  > 5 (   , 5 A š š š š  ( š š š š š š š š š š š š š š š > š š š  š š š š > ( š >  š š š : š š � š š , š š š >  š  > @ > > , ( š š � š � š  š š ( š š  šZpo  š ( ( š š : : 5R š 5R š 4 š š  š � D � š D � š� @ š > H ( ( ( š A A c š š D š  š D š  )   > ? š D  š š š š � š š c c š! š c"( #$% c : š& š' H š š (*P+8,/-. ( : : š01 š  2 š346 š5 , š 7 : š9J :;D<A=?> � š > š@ š �B � �C � šE šFH šG š I > š > šKL š šMN > 5O š >Q]RX S TUV > š šW � Y � Z [ \ š^g_f` :adb š c š :e : š : šhl ši šjk š š šmn š š pqrs} štu šv šwz šx šy š { | š >~ š š š š  ( š š š š  š š H (  š � H š š >  š  š > š     š š : š , ,  ,  , , , , H š : , H š H H E> š  š š c š >  + š :  c :D H : : : H H , ,  š š , ʗ > š š : � š � š > š > 5 D A D š D š   > > š k š ( š š ʗ š  š @ @ @ @ š� : : š : š š : : š š    @ D š D š  š , š , E> A š A š š š š > > š4 š *!% š"#$ š š &(' š ) š �+., š A- š /10 š š k23 š š 5 š6@7<8: š9 š ; + š = >? + B 5 šACB 5p š : šEUFNGH : IMJ : šK :L : š : šOT šP QRS : : š : šVfW_X :Y :Z\[ : š :] : :^ : š` > :abdc š : š e š >gh š >ioj 5km >l š 5 5n š 5 qdrstuv|w{ xyz c š  š �} š š~ š : H š : š  š š  �  š   š 5 5 š 5  š š š 5 š ( š š 5   š 5 š 5 > > š š  š   š  š     š  < < <  A < k < k < k k k š k š < < < ( < š @ A A A A š  5 c  > š  š > š H š >  š š ( š ( š c ( k  c c š c š � > š > š: �� H š š š : š š š      š š š    š š š    š š š    š š š  5!,"'#% $  š š& š (* )  š š+ š -2.0 /  š š1 š 3 š 4  š6 š š78 š9 š  š >; < š=> ?  k 5AVBMCH šD E F G  š šIJ š šK šL š N šOP š šQRT S š šU � šW_X]Y\ šZ[ š c š  š^ š : š`a š 5bc :   :efghpij š kol m š n š šqzrv šstu š � š :w :x :y : š{ >| :}~ š š 5 š š š š   š   š  š  > � c  > > 5a > 5a � 5a š 5a š š  š �  š � � >  ? š š š  š š   D D  D � š < D š k � � š š š � š > > � > š + š š + + š š š š š �& š :  : :    š š š :  + + + š A A š : š > š š š � š c š š > š > š š š š� š ( š ( š (  š ( š  ( š (  š  ( š ( š ( ( š š š ( š ( š š š ( š 5p > š š  %! >"$ # > > c > c'C(:)0* A c+,.- 5p c � 5p/ š 512 š 3 š49 5567 5 š8 š š � 5p š;><= š  ? š@ š šA šB š >DREIF š šGH š > š šJK LOM N  � AP AQ š 5pS šTU A AV šW 5pX AY � š[\d]^_`naibhc šdfe   šg š  š  šj š šk šlm A š Aox Apq šrus At : v šw š Ay šz}{| š š �~ š š š š : š 5p š ( ( ( ( š ( š ( š ( š ( š ( š ( š ( š ( š ( š ( š ( ( ( š ( š ( ( ( š ( � � š E  š � š š š š š  � š š š : : š š š š B{ š š     � š š š š š � š š ( š š š  š  š š š š š š  š  š R\ š R\ š : š : š š > >   ( š � š š š š š š (  D  � š D D @ @  š :  @ š š : š : : : š : š š š � >  š š !8"-# š$) % &' k( š : š * + ,  š.1/0 š : : š š2 š34 š š567 š š 9W š:;V< A= A 5> š?@ šABG šC šDEF š @ š @HOILJK š @ š @MN š @ š @P šQT šRS @ @ š šU @ š A X] Y Z [ \ š ^_ `acb š š > efghqi šjk  lmp no k k š š �r{szt uwv š x  šy � š  š| š} š~ š  š D š  š š š š š š  k  k k @' š @' @' š š š  š > š > š š š š A A š : A : š š š : : š š  < >   š š š  š  š  š  + H    š š  : �  š  � � � š š    A š  š  š š š š š š ʗ : š š , š A  5   > š š š š ʗ š š š ( š š š�  ( š š š > š > >   : š   š     š~F/ š š š : š : š � % š !"$ # š š &' š ( š),* š + š �- : . š0513 š2 š4 : š :6>7=8 >9;: > : > A< A � > A?@ A � �ABC � kD 5 šE < GXHO šIJNK �L šM � š � � PWQR  �S @ šTU V  š D YjZb D[\ š]a ^_` š > � c šc š �deif šgh 5  c š �kp šlm :n Ao : š :q A :rs A At Auv A Aw Axy A Az{ A A| A} A š A A  �   š š      š   š š š A š š  š š š š   ? š  š  š š š š  š š   š š š : � š  : + ( š : : : > > š : : > > š š š š š ( š � š H š � š � + B š ( š š   š  š  š + š : n -  : š š c š � c � š � � š � š š š � š  š �   š c  c �  š š  !  c    š   B B š   š �      š  š       š  š    š  š   š  š š   š š  " ' #   $ % &  š  š š ( ) � * + š � , 5p � š . G / > 0 6 1 4 � 2  3  š 5 š  š 7 � š 8 9 ; R :  : � < � = � š ? A @ š E š B > C D E � > � F š � H ` I T J K š c L M š N Q O , š P c š š R S š š ( U ^ V \ W š X Z š Y š  [ š H š ]  � _ š  ( a d b š š c � š e š f j g š  h i š š k m l š š � � A o  p  q  r  s { t A u x v š w š > š y š š z  A | } š ~  A š š � š š  š š š š š   š     c c A c A     š     A š c �  š     � š 5 š š š    š š š   � š š �      š  š  �  < š <  š < < š š š c      š š š š š : š         š    š  š š 8    š š E E d š š   š š          š š š š š š š š š   š 8 š š š  u    Z  &        š  š 5 š     5 D š    š    �  š 5  š  š �      A @ H   š  5         , > š    5 š H      ( š A 5 š       @ A ( š   5 š  š  # ! " D  � š $ % >  D ' B ( 3 ) / * - + , ʗ š š  . D 0 š 1 2 š � š 4 > 5 7 6 š š 5a 8 9 š š : ; š š < @' = @' š š ? @ A š   A C M D H š E F G š D , š I K J š š 5 L š š c N U O R P Q : š š @ S T c š  V X š W > š Y š D [  \ x ] j ^ e _ b ` a @ š š c d ? D f h š g < š š i 5 A k r l o m n k š : š p q š A  s u t š ,  v w : � y  z  { ~ | } + c 5 š š  š >    >    š A š       š 5 ( š 5p �      c  B& 5 � š          š A A (  �  k š    : š š 5R š š     š 5p š  š A š 5    D � R š š @ š        š D A  š A š    � š š k   š š A      š  š š  �  š � š   : š 5a  /        š š ? š  š � š   š A      š A A š š š š š > 5a     š š 5 š  š : 5a  @ EM š      š D š >  5a š ( 5p    š 5a A š š š �        š  @   š :  š š š š :       @ 5 5 š   5  š    š  c š  š  š  "   š  š  š    š A š ! š � > # ) $ & % š ,  ' ( š š * - + , A � . š š  0 [ 1 G 2 ? 3 9 4 6 š 5 A š 7 8 š � š  : = ; < š š A š > š  @ D š A B C A š š š E š F � A H R I O J M K L A š � š N š š š P š Q  š S X T V š U š š W š š Y š Z š A \ m ] d ^ a _ š ` š 5 š b š š c š e j f h g š > : š i š  š k l š 5 š n š o š p r q š š  s t A @ > š v  w  x š y š z  {  | ~ } ( ( š  š  š A š �  š  š (  š  � š š A   š š   š ( š š   š B � š š  š š  š 5 š š š š  š    š  š š  š š š    š  š ( š š ( š ( š š š š š  š š    š  š D š    š  š  š š : š š š š : š š   š  š š š š š š > š š š š , š  š  š  š 5 c š   k  \ U      y  C          8 8  8 8 F 8 8  8   8 8 8 8 F   8 8 F 8 8 8  8 8 F �    8 F 8    8 8  8 F  8 8 F 8      8 8 8  8   8  8 8 F    8 B 8 8   7  0  )    8 8   8 8 F 8  ! " &  # $ % 8 8  '  ( 8  * / + 8 8 , - 8 . 8 8 F 8 8 1 2 6 8 3 4 8 5 8 8 F 8  8 < 8 9 : ; 8 8 F = 8 F > 8 ? @ 8 A F B 8 F 8 D _ E R F N G I H 8 8 F J M K 7 8 L F 8 8 O Q P 7 8 7 7 8 S X 8 T 8 U 8 V W 8 F 8 8 Y 8 Z 8 [ 8 \ ] 8 8 ^ F 8 ` k a d 8 b c 8 8  e g f 8 8 h i 8 j 8 F 8 8 l m o n 8 8 p x  q r u s 8 t 8  v 8 w 8 8 z  { 8 | 8 } ~ 8  8 7 7 8  8  8 8 8  8 8     8 8 8 8   8  8 8 8 8 8 F  8 8            8   8 8 8 8 8 8 8 8 8 8   8 8  8 8      8 8 8 8  8 8  8 8     8 8 8    8 8 8 8 8 8      8  8 8  8 8 8  8 8 8 8  8 8  8 8 8   8 8 F 8   8   F 8 8 8     8 F 8 8  8  8 8 F   š š š š š  š š š š š         + š    �       ( (    (   (  (   >    ( ( š     š    š    š  š > > š  (  $      ( ( š   š > ( š ! " # š > š % š & š ' š ( š  ) *   , J - A . 8 / 4 0 2 š 1 š ( 3 š  š 5 7 š 6 š ( ( š 9 < š : š ; š ( = > (  ? @  > š B F š C š D š E š ( G  ( H I š ( š K V L P M š N š O š  š š Q R U S T š > > š š W u X l Y a Z ] [ š š \ š ( ^ ` š _ š ( (  b g c e d š  š š f š ( h i (  j k  > š m q š n š o š p š ( r  ( s t š ( š v  w { x š y š z š  š š | }  ~  š > > š š š  š š š š š           š š (  ( š š (    š > š š ( š š  š  š > š š š š š ( š š š  š         š š (  ( š š (    š > š š ( š š  š š >  š š š š š (          š š š >  š ( š š  š    ( š � š    :  > : š          š š  š : (  š ( š  š   š š š >     š  š  š (  š ( š š š   š ( š š š     �   š š š (  š š ( ( š š š š ( (   > š  š š š š (  ( š ( š š š š  š š š > > š š š  $! š" š# š š%E&<'1(-)+ š* š (, š  š.0 š/ š ( ( 27354 š  š š6 š (89 ( :;  > š=A š> š? š@ š (B  (CD š ( šFOGIH š  š šJKML > š > šN š P šQ šRS T š  š šV šW łXY šZ š[ š 8 š]^_}`iaeb š šc šd š šf šg šh šjukrlp šm šn šo š Em šq šs š t švy šwx š dz š{| š š E~ š š š š š š š š š  š 8 š š G  š š š s š  š š š š š š š ? ? ? ? ? ? ? š š A A š  š š  š š 5 š š k c � š Em š c š š š š 2 š š š š   š  š  š : š š š š š š š š š š š š  š š š š š š H 5p š š  š š š A š 8 š š š š š š š � 8 8  š  8 š š š š š     8 8  8 8 š šD6 š H š š(! E l v E E ׁ ׌ i"%#$ E ח ע E&' ׭  ׸ )0*-+, E./ 132 E  45 ( 3 =7 š8@9>: š;< c = š c š? š š ʗA šB šC š š šE šFGcHWIPJMKL H H ] šNO 2QTRS  aUV W  TX\Y Z[ f]`^_ V 8- p ؀ab ؐ ؠ دdselfigh š Ry 7 Djk F ؿ Fmpno W š š qr 8 t{uxvw šyz F  B|}~ + ;  J Z j  š š š š š š š š š š  š š CR% š š š š  š š  š š  š š š š š š š š š š š š š š  š š      8      8  š š š š š  š š š š š š 7 š š š š š  š š š  š š š š š š š š š š š š š š š š  š š  š š� š š š ( š š š y š $     š š š š š š š 8 š š š š š š  š š š!" š š# š š š&',( š š)*+ š : š :-4 ?./30 ?1 ?2 ? š ? ? š5C A67 A A8 A9 A:; A A<= A> A A?@ AA AB A A AD AEF AGH š AI A AJK AL AM AN AO A APQ A A šSTzU šV`WYX š šZ_[ š\ š] š^ ( š G apb šcldk šef š g h i j š š šm šno š š ( šqrvs š štu š š šw šxy š š š{| š š}~ š š š :  š š š š š š ( š š ( š š š š ( š š š š š š š  š š > š š  š š š š š š š š š š š š š  š š  � š � š š ( : > : š š š š š š  š š š š š ( š š  š  D š š ' š š :  š š : : :  : š E š š š E] š š š š E E] š š š š š  š � š š š š š š  š š š š    š  š š š š š š š š š š š š š š š d š;! š š š "+# š k$ š%&( š' š )* š 5, š-4.3/201 š : š š š c5967 š š8 : 5 š: < c< š š=> š š?@ šA šB š š (DEUF šGHIJKiLZMTNQOP B ~RS S ^ FUW šV B YXY š š @'[b\_]^  ى ٙ`a ٤ . ٴ -cfde gh š Y  Zjykrlomn   HCpq $ 4 D 8svtu S v wx E :z{~|} b q ڀ ڐ  ڟ ڮ ھ  g š š  š c  c  š 8 8 8 7 8 š A A A A A  š š š ( š š š  š 8 š š š  š š š š š š š š š š š š š š š 8 š# 8 8 8 8 8  8 8 8 8 8 F 8 8 8 8 8 8 8 8  8 8  8 8   8 F 8 8 8 F 8 8 8 8 8 8 8 F 8� 8 8 8 8 8 F 8 8 8 8 F F 8 8 8 8 8 F 8 8 8 8 8 F 8  8 8 8 F 8 8  8 8 F 8 8   8  8 8 7 8 8 8  8 7 8 7 8 !" 8 7 8 7$I%2&+' 8(* 8) 8 8 , 8-0./ 7 8 8 81 7 83;4 85 86 8 87 889 8: 8 F 8< 8=F>C? 8@ 8 8AB 8 F 8 DE 8 F 8GH 8 F 8J KL 7 MN OP Q R ST 7VxWwXkYdZ š[_\ š š]^ š d` šab šc š š šef šg šh i šj š š lm š ҉nt šop šq š šrs š : š šuv š š šy šz š{ š| š}~ š š š š > š š š š š 5 š š 5R š š  š A > š š š  : š š : š š   : š š  š  š c š š E] š š š š E] š š š  š š š š š š š š š š š š  š š š š š š š š š   š š 8 š š š š š � š  š  š š D   B  > H3   š g š  šrF8 š š š k š š7 - š š š š š š� š B š š š š   š š B š š B š š š B% š B š š š š B š š B š š š B š š š š! š" š#$ š B š& š' š š( š)* š š+, š B š. B/ B0 B1 B B23 B4 B5 B6 B @7 B š 89> š: š;<= š B š ?B@ šA š š CD E šE š š GbHXIQJ š KLOMN š : š šP š RVS 8 šTU š š W š šY_Z\[ š š š]^ } `a š ] šckdg šef šhi š šj š 8lom š šn p šq š šst š u švwx}y š z{| š E] š~  š š š š š š š š š š š š d d d  d d iB d d d  d d  d š š  š   š š ( š  š  š ( š š  š  ח d H d d d H iB d E d d 4 H * ח d 4 H d ח d d d 4 E d 4 d  d d d ח d d iB d E d 4 d d  E d d E do > > > > 5           �  I  š š š > š  š š  š š š š > š š š š š š š > š š ša š,& #!" � š D A$% R B5 '*() R r R+ š k B-[.X/0 Rk N1 >2 ]3 ]4N5@69 ]7 ]8 ] =:=;< $ m 4 }>? = E AHBECD } = D +FG D +ILJK ` ` ]M ] ] `O ]PUQS ]R ] ]T ]V ] ]W ]YZ B B\_]^ R\ š` š šbckdh Emefg Em D Em Emi Emj : Em Emlm Emn Em š Emp}qs šr št| šuvy šw šx šz š{ š š š~ š š d d d E d E d d iB d š š š š š > š > š š š š š š š š š š r  š š š   š š š š  š š  š š B š š  š š š š š š  š š 8  š š š d š š š š š š š š š y E] š š š š š  š E š š š E ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї be їR:-%� \M \] Z \] _ } [-  ї \ ۍ ї _ ї \M \M \M Z ۝ \M \M \M \M ۬ ۬ ۻ Z \M \M ۻ \M \M #!" _ [- \ ї ї$ Z \M&'+ \M()* \M  Œ \M, \M Z.6/30 ї12 Z _ [- \4 \M5 \M \M7 \M8 \M \M9 _ ї;I<C=@ \M> \M?  ŒA \MB \M \MDF ZE \ \GH _ [- b \JOKM їL ї ZN \M \M \MP \MQ \M їST]UX \MVW \M \M їY[ \MZ \M š\ \M ї \M^d_b`a \M   Œc \M \Mepfg \M Ñ hilj \]k \] \] Zm _no _ ї ї _qr{sv _t _u _ їwy _x Z їz _ _ ї|}~ _ _ ї _ ї _ ї _ _ ї _ Z _ ї _ ї ї Z Z \ [- \ _ ї \ ї \M \M Z  \M ї \M \M _ ї Z \M š ї _ ї \M   \M Œ \M ї \M \M \M _ \M \M \M ї ї _ Z Z ]= Z ]m [ ]= Z [ [ [ [ [ [ [ [ [ [ [  Z \ Z ї ї ]= Z ї ї ї ї Z ї [ [ [ [ [ [ [ b b [ b \  [ ]m \M ї ^< [ ^ \ _L \ ї [.      t     =�    Cy CN  CN         =     -        ! "  # $ %&  '(  ) *+ ,   I /y0^1 š2 š3 š š4 š56 š7Q8O9B:; 8< 8= > ?@ A 8 CFDE 8 8GH 8 IJ K 8LM 8N 8 8 šP š R šS[TV šU š (WY šX š ( (Z ( š (\ (] ( š_ š` š šablc šd š šef š šg šhi šj š šk B šm š šn šo špq š šrsv št šu š Bw šx š B šz š{ š|} š~ š š š š š š š š š š š š š š š š š š š š  š š š , š š š > š ʗ š , A > A  > > , š ƨ š ƨ ƨ ƨ š ƨ š š à š ƨ š š š š (  š š š š š š š > š š š š š š š ve š š š  8 8 8 8 8 8 F 8 8 8 8 8 8 G 8 8 7 8 8  8 � 8 8 8 8 8 8 8 F 8 8 8 8 8 8 8 F   8 8 8 8 8 8 F  8 8  8  8 8 8 8 8 8 8 8 8 8 8 8 7>/  8 8 8!'" 8 8#$ 8 8%& 8 8 F() 8 * 8+ , - . 70;132 8 8 F45 8 867:8 F9 8 8 F 8 F< 8 8= 8 ?R@JAC 8B 8D 8 8EFHG 8 F 8 8I 8 F 8KLM 8 FN 8O 8 8P 8Q 8 S 8T_UZV 8W 8X 8Y 8 8 8[ 8\] 8^ 8 8 8` 8a 8bc 8 8d 8fgh{isjpkm l Fno F  F q r F tx uvw F yz F F|}~  F   F F    F F    F F F F  $ F i i 3   j j   B F B F  F F F  F F  F   F  F F F   F F  F   F F  F F   F F  F F  F F  F F  F F   F F F F   F G F G  F G F G � F F F G   š š š š š  š š š < š šD) š  š D š š ʗ :  š :"  c < ! > š #&$% @ D'( , : A š*6+1,/-. D > , š0 D š ,24 �3 D ,5 � š ,7=8;9: š  D ʗ ʗ< D >A?@ A A DBC > D �EcFR šG šHI šJ šK L M N O P Q š šS šT šU šVW\ šX šYZ[ š š ] ^ _ š` šab š šdje šfh šg š ši š < šk šlm š šno šp šq š šr šst š šu H š šwx šy šz{ š|} ~ š  ( š š š  š  š š š š š š 8 š š   š š š š š š š š š š š š š š š š D š š š š š š š š š š � š � š š š A š š  š š š    š   š š š š š š š š š š š ( š š š  š š š š š š š : š š š : š š š š š š š š š š š š š š� š š š ( š š š š š š š š , š š  š š š š š š š š šf% " š š š š š š ! Y š š Y# $ š š&H'. š() š* š š+, š- š š š/0 š1?2;38465 V 7 9 : < => š@AEBC šD ( šF G šI_JMK šL š š 8NQOP E š š 8 šRS š šTU š šV šWX š šY šZ š[ š\] š š^ š ֞` ša šb šc šde š : ( šghz šijyk šl šm š Bno š šp Bq šr šst š šu šv šw šx B š š {| š}~ š š š š c š : š š  š š š š š š š š š š š š š : c š š š š š š š š š š š š š š š š š P š š š š š š š š š š : š š š š 9% 6 š š š š š š š š š š š š š H š š ( < š š ( š š c 5p 5  š ( š š c š : š : (  : c  : (  š  š ( š : š  c c� c c c c c c c š š   š š :  š  š š š š š c š š : š :  ( š ( š š! š" š#$ š š%& š š'( š š)* š+ š, š š- š. š/0 š š12 š š3 š4 š5 š 78O9 š:M;  < =>  ?@  AB C  DE  FG  HI J K L  š N š > šPQRStTdU_VXW š š YZ š [ š\ ] ^ ``ba š : š šc š ejfh šg š ši š km šl š šn šop šqr š A šs š >uvw š xy šz{~| š} š š š š > : š c š š š š   š š š   š š š     8  š š š š š š š š š š š š š š š > š š š š š š š š š    B B B B B  š      š   š š 5p c : > š š � š š š �  š š š  š š š š š š  š š š š š š š š š š š š� š š š š š š š š š š š  š š  š š š š š š d šR Z+         ! " #$ % &' ( )* 65,- k s.8 \/ \0 \12 \3 \ \4 \5 \6 \7 Œ \9<:; V ï G ï=Q> ï?E@B bA 3 + +C +D 3 +FOG bH 3 bIJ b bKL bMN b 3 + bP b b 3 W ïSTPU àVWX{YlZa[] \ ï s^_ ց  ` bicgd ï e f h p yjk ï mtnqop ï z srs 7 ï y ïuxvw ï ï yz VG |}~ ï :y  ە  ï Ʒ G  s  s  :y ï Z Z s r 7     Z ï 2 i  s ( E> y š   s  Z ï s     ` s ï  ï ̀ k  i ˘  K     Z y   ï  ï r  s ï ƨ  . r   ï  Q  ï y  ï `  ï ï  s $  ƙ  � Z Z Z Z Z Z Z  4{ Z s    R R R #      ,l   R R R R ! R R" R %& ï r' V(+ L)* L ܍ x, L x- x L/A0:1726 Œ345 7 Œ :y 3m G89 VG Z Ʒ ï;><= ï ˘ ï y?@ ï ` BICFDE r VGGH  sJMKL ï r NO ï ïQTRS r ҉ UgV W 7 7X 7Y 7Z 7[\ 7] 7^ 7_ 7` 7a 7 7bc 7d 7 7e 7f ܛ 7 hijrkl ï Z ïmn o p q x sytu šv ïwx d ` Dzz ï{|} ~ ï ï m ï Dz Ʒ Ʒ ƙ ï Ʒ   i ` ` ï ï Ʒ ï Ʒ  ï Ʒ à Ʒ ï Ʒ Ʒ  ï ï Ʒ ï Ʒ  ï ƙ Œ ց  :y  x s G r ï i i i i i  ï      ܰ L  Ʒ    6&  ï Z s Z  ï  ï  Ʒ x  d ï r ш ï  r ` y  ` y   ï ï   ï  G ` 3 L ï ` ï r r r r r r r r r� r r r r ܿ ï  s s  s s s s s s s s s s s s s s s s s k7)( ï !#"   9$ % & '  3  ï x*,+ - x.2/ x0 x x1 x f3 x4 x f5 f6 f x8J9:  x;< `=B> ? @A  `  CED   FHG   ` I ` Kj LMeNaO P QR S TU[VW H HX HYZ H H\ ] ^ _` H Hb c d f g h i ï rl{mx ïno ïp Œq Œr Œ Œst Œu Œv Œ Œw ~ Œyz ` Ʒ|}~ ï 3| ï ׭ ű ï   7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7  7 7 7 7 7 7 7 7 7 7 7 7   x à ï W  ` y      ̀ y ï ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ K ƙ K ï  r  ï  ƙ ҉ ƙ ƙ 6 6 ƙ ƙ ̀ ҉ ̀ ̀ ҉ ï s ï ï  y   ,l  ï ï ҉ ï  ï Ʒ ï             �            Ñ z y  r ï ü à ï ï y Z ï Zj ïL0 &!#" Ʒ Ʒ ï$% ï Ʒ ï Ʒ'/() r Ʒ* +, :y ï - ï. ï 6 ï Ʒ1=27354 ï y ï Ʒ6 ï Ʒ8;9: Ʒ ï ƙ ï< ï Ʒ Z>F ï?@EA ƷBC Œ ïD  Ʒ 7 Z ƷGI ïH JK ï ƙ Z ïMRNPO ï ֐Q ï i ïSgTU Ʒ G ƷV LWXY L xZd[ x\ x] x x^ x_` x xa xbc x 4 xef x L x Lhi x y xklmxnqop ѧ Ʒ ïrs 3mt  uvw    Qy{z ï ` ̀|} ~              ï  ï r     S  2  i ï     d y  Z ` ï ] ] ] k k k ] k ] k ] k ] ] ] k  Z y X  y Y y y y y y y y y y X  Y% s Ñ  Ʒ d Z r ï ƙ s ű   ï  ׭     ׭ Œ  ï  C R ` ̀  ҉  ï  Ʒ Z  x L ` ï Ʒ� ï Ʒ  à Ʒ   ï Ʒ ƙ ƙ  K ƙ   ƙ ï N PX  ű r ï Œ ` ï à ï ï V  ï!+"%#$ Q Œ W &(' ï  ï)* ï ̀ ï,U-0 ˘. `/ ` ű ï12L3>4:57 `6 89 ƨ ;; `<= ` ?F@CAB DE s ł GI H JK ` ` MNROQ :P ` ł `S T `VW Ʒ r YZ[{\k]d^a_` `  Ʒbc s  s ehfg i sij Z ï ltmpno s r qsr x  ïuxvw Z G ƨyz  Z Ʒ ï|}~ y         #  7   y y y  r Ʒ Q Q Q Q Q Q Q Q Q Q Q Q s 7 ̀ s s  r ï     ü ï ï s ï ï  Z ï à ï s r ּ ï ּ    ï s ï Z    :y   r  ï     Z ï Q š y y  s ï Œ r ï ï ׭ r r r r r 8 r r 8 r  > ƨ &  �      s :y    ƨ Dz  ł Dz  Dz ï  ï  ï ˘     7 i  ï Z ï       ï          ׭ ï   ï ï ּ  # ! " ï s  $ % ш  ï Z ' 6 ( / ) , * + Z s r i - . ï ï s 0 3 1 2 Œ ս ̀ ` 4 5 WD r  ï 7 G 8 D 9 : ` ׭ ̀ ; < ?  =  >  @ B A  C  E F r Z H M I L J Z K E  E  N O ï y s Q h R e S d T Ʒ U  V W  X  Y  Z [  \  ]  ^  _ `  a  b  c  z Ʒ f g y i  j  k  l  m  n x o v p s q ï r ï  t  u ( O  w  r y  z } {  | (  ~   r        ( (  + +  ߰    ( (  ( ( (  ( (      (  8Z =   ï O      0  r  (   ï à   ! !F !               ~      =  Cy  iX = =     C] =       I7   C]   <u = t  t t t t t ( t     P Cy I             I dQ dQ N   = <u   I7   CN     = Cy P  !  t  !     =  !� Cy ! ! !! ! ! !-! ! !  ! ! !! ! ~! !!#!!"!! ! !!!!!! CN =  Cy! t !! !! = t t!$ !% !& !' !(!) !* !+ !, !. !/!0 !1!<!2 !3!7!4 !5!6 <u !8 !9 !:!; Cy !=!E!>!C!? !@!B !A = Cy =  !D   C]!G!|!H!O!I!K !J Cy = =!L !M !N ~!P !Q!g !R!S !T!d!U t t!V!W t!X t t!Y t!Z![ t!\ t!] t!^ t t!_!` t!a t t!b t!c ( t!e !f   t!h!i =!j!s!k!r!l !m!o !n  d !p!q   !t!w!u !v !x!z =!y <u  !{ = !}!~ !!  !!!!! !!!! Cy! ! = !!!!!! ! =! <u = !!!! ! =  j = C] ! ! = !!! !! ! ! J ! !!! ! !   !! =! =! = 3m!"P!!! !! ! !! !! ! !! ! !! ! ! !! ! ! !! c ! ! !!! !! ! ! ! ! c !! ! ! !!! ! c! c !"2!"! !!!! ! ! ! ! <u P !!!!!!! =!! =! = =!! = =!! = =!! =! =! =! = = d6 ~ Cy! !!  ! ! <u! !"! "� Cy " C] Cy"" "" t ""#" " C] " " " " "" ~"" ~ ~" ~"" ~" :" :" :" : :"" : :" : E"  " " " "! "" P "$ Cy"%  "&"'". C]"( Cy")"*"+ = t", "- "/ "0"1 "3"4"F "5 "6"7"A "8"9"; ": = "<"@"="> = "? = =  = "B"D"C I7"E  C] "G"H "I"J"K "L "M ="N"O  I"Q"p"R"g"S "T "U "V "W "X "Y "Z"[ "\ "] "^ "_ "` "a"b "c "d "e"f S "h"m "i"j "k "l  "n"o "q" "r "s"t"u "v" ="w"x "y""z""{"| CN "}"~" "" " " " "" " Cy ~" = """ "" " """ """" " t"""  "   d" " =""" Cy" "" " """ "" " "  " " """" = ~ ="" =  ",^"&*"$"#P"#"""" " " " " " "" " " """ " c" c " " " " " "" " " """ " c" " " c" c c"" c c" c" c" c""" "" """ " " " P"  I  "" """""" P Cy "" Cy Cy" "# """ #�# ## ###  # Cy #  <u# <u P  # # # # # #### # #  t ##9# # ## ## d # #  # #.#! #"## #$#)#% #&#' CN #( #* #+#, P ~#-  #/ t#0 =#1#2 #3 #4#5 #6#7 Cy =#8 #: #;#D#< #=#>#B#? P #@ #A  #C #E  #F#G#O #H#I =#J#M #K#L = <u#N P  Cy#Q$#R #S##T#e #U#V #W#X#Z#Y  CN#[#\#` Cy#] #^ Cy#_ = ~ #a#b#d #c = ~ i3 #f##g#i #h #j##k#}#l#s#m#r#n I =#o#p#q  = Cy I P#t #u #v#x#w Cy = #y #z#{#| #~### # = # I  ## #### <u CN t P## ~ P# P## P P# P## P P## P P## P P## P# P P# P ` ### ######### :# :## š# š š# š# š ,# š# > >## ># ># ># ># > > š######## š# š# š## š## š# š š š## š š# š # š š#### š# š# š# š š## š# š# š ># > š# š# š# š# š š# š# š # # # # # ## # # > ### # = ### # =# #  ## # #$ ## # t### Ic# P = #$# ###  = #$� = Cy $$ $ = $$ $ $ $ $ d$ $ $ Cy $ $$ $$  =$$ =$  P$$8$ P$$$$ $ $$ $  $ $! $" $# <u $% $& $'$( $)$* $+ $, $- $.$/ $0$1 $2 $3 $4 $5 $6 $7 ct $9$$:$a$;$U$<$@$= $> $? d $A$S $B$C $D$I$E$F = $G$H C] $J$M$K $L <u j$N =$O$P <u $Q Cy$R  i  $T  I7$V $W $X$Y$` `$Z `$[$\ ` `$]$^ ` `$_ ` C]$b$$c$h$d ~$e $f $g $i $j$$k$ $l$m$~$n$|$o$z $p$q Cy Cy$r$s Cy$t Cy$u Cy$v Cy Cy$w$x Cy Cy$y v Cy =${ $}  =$ Cy$$ = CN$ $$$ Cy = $  $ $ $%N$$$$$$ Cy$$$ $ $ <u $$$$$ $ $ $$ $ 8w$$ 8w $ $ $ $ $  $$$ $$ $ $ =$ Cy = $$$$ CN $$$ =$  = $$$$$$$ =$ =$ = i$ = = d6 <u $ Cy  $$$ $  Cy $$$ $$ $$  $ $$$ $ I I  =$ =$ =$$  Cy $$ $ $$$$ t $  $$$ $ $$ $ Cy $ <u Cy$$$ $  = $ Cy$$$ $ $ $ $ $ $$ $$ $ 8w $ $ $ $%=%� % %%%%%% t%%% % %% % % CN Cy d =  CN t%% ~% %%%%% <u% %  % Cy% CN% % <u% <u %% %!%4 %"%#%,%$%' %%%& Cy %(%+%)%* Cy = <u %-%. %/%3%0 =%1 = =%2 d6 = %5  %6%7 i$%8%:%9 %; %< Cy = %> %? %@  %A %B%C%J =%D%E%F %G%H%I C] Cy %K  %L%M Cy Cy%O%%P%%Q%` %R %S %T %U%V%Y%W %X =%Z%^ %[%\  %] = t%_ %a %b%c %d %e%f %g%q%h%m =%i %j%k%l  CN %n%o C] %p %r%s %t %u %v %w %x %y %z %{ %| %} %~% cQ %%%%% P%%%% = t%% %%% =%%  %%  <u%% % CN Cy  = %  %%%%%%% d %% I%%%  d P %% % Cy % % % % %%%% ~ = =% = i%% ݀% i% i% i = = i  t%%%%   % %%%% % %%%% = % %  = Cy %% %% % I% <u CN% CN% CN %&(%%%%%  = ~% % %% % % =% ~% P%&% %%% %  % %% ~% %% %%% P =  %%%% =% Cy% %  % %&%%% d d% d% d% d C]%&%%%% % % &� C] d& d C] &&& && & Cy& && && & & & & & & Sl =& = & Cy t &&&  = Cy&&' &&& C]& C] =& =&!&#&"  d&$ <u &% && I <u &) &+(&,'&-&&.&&/&f&0 &1&]&2 &3 &4 &5 &6&:&7 C]&8&9 Cy = &; ~&<&Q&=&J&>&C&? &@ I I&A&B I I&D "&E&F &G &H &I " &K&O&L&N&M BD &P I &R&Z&S &T &U&V &W &X&Y C? &[ &\ I &^&_ &` &a &b d &c&d&e CN Cy <u &g&h&x&i &j&k &l &m &n&p &o š Cy &q &r&s&v&t&u dQ dQ &w a Cl dD&y &z&{ C]&|&}&&~ & t& Cy CN&&&&&&&& &&& &&& & =&&& &&& I7 Cy&& = <u  &&& &&&  i$ &&&&& t P Cy& && CN& I7 && Cy   Cy& C]  && &&  &&&& & &&&&  & <u&&& = t& && =&& C]& && <u = d6&&&& <u Cy& Cy && & Cy  I7 &&&&&&& &&& G&&& && && & & & G &&&&& G& G&& & G& G G G& G & & G && &  <u P&&  & &&  P& & & = &&'&'&'/&'& '�''''' ' Ic' P ''' ' ' <u' ' ~ ''''  Cy ' = Cy' <u' I CN''% ' ~'' '''' Cy ='  C]' '! '" h'#'$ Sl I Sl '& '''('+ ')'*  ','.'- <u Cy d = '0'@ '1 '2'3 '4 '5'6 '7'8 '9': ';'< '= '> '? 5'A'd'B 'C'D'U'E'N'F'K'G'J Cy'H'I 8w <u CN'L'M = CN CN 'O'R'P'Q I C] I7'S'T t 'V']'W'Z'X'Y < ~ '['\ d CN'^'a'_'`  CN 'b'c I Cy CN'e 'f''g'{'h'p'i'm'j Cy'k Cy'l 'n'o d Cy'q's Cy'r Cy CN't CN'u 'v'x !'w ݎ ݞ'y'z ݮ ? O @'|''}''~' C] A ''' C]' = = ? CN '''' '' ;8 '' t t''''' '' = CN Ve C]'''' <u C] Œ <u'' d = CN'''''' CN Cy  '' Cy = ''' Cy ='' Cy d ~ CN'' '''''''''  P''' = Cy' Cy CN' = ' '' CN'   ' ' '' ='' Cy = ' Cy'' C] ' ' ''' ' '' ' '' ' ' ' ' '' ' ' ' cQ '''' ' = '' ' =''' = <u'' ' <u' <u '''' ' '' Cy Cy ' = '('(~'(G'' P ' '(6 ''(&'('('( (� Cy (( ( (((( (( BQ C? BD ( ( ( (( ( ( = ( (( C](( Ve(((( = j i =( = i(( =( =(! = =(" =(# =($(% = = (' (( () (* (+ (, (- (. (/ (0 (1 (2 (3 (4 (5 ݼ (7 (8 (9(F(:(A(;(< = C](= Cy(> (? J((@ J( J((B(D(C  = (E i$ (H(L (I (J (K t(M(s(N(Q (O (P c (R(j (S(T(d(U(Y (V(W (X C] Cy(Z ([ (\ (] (^  (_ (` (a (b (c (e (f(i =(g Cy(h ~ <u = Cy(k (l (m(n(o I =(p (q Ve(r Ve (t (u(v (w (x(y({(z  (| (} CN =((( (( (( ( ( ( = Cy(((( ( ((((( C] Cy(( =(( Cy Cy(((((( Cy ( Cy Cy (((( Cy CN M ( Cy ( P(( ( Cy((( ( ((( ((( = <u( CN(( # Cy(( I   (( ((((( ( (((( =( (((( = i = j((  F =(( =( = =(( = =(( =( = i =(( <u = (  ( (((( t Cy I7(( =(( ( I(( C B_ C?(  P (*m()e(((  ( (( ((((((( (( ( (( (((( ̓ I( ( ( ( P ()')�) ) ) P ) ))) =) ) ) ) ) CN <u ) ))) )) ) <u) Cy) = ))&))) ) ) ) ) =  <u) )) )#)!)" Cy  I7  )$)% Cy  <u )()^)))E)*). Cy)+ Cy),)- Cy ~)/)0)7)1 )2 =)3)5)4 P )6 )8)9)B):)<); h)=)?)>  )@)A = )C C])D d')F )G )H)I)P)J P)K )L )M)N )O )Q)Y)R)T C])S = )U)V =)W )X " " ~)Z)[)\ ~)] ~ )_ )` )a )b =)c)d  =)f))g))h))i)j  )k)p Cy)l =)m =)n)o  k )q )r )s )t)u )v )w)x )y )z){ )| )} )~ )) ) ) ) <u) ) ) )) )))  Cy = Cy)) ) t))) ))  ) CN) CN) CN I))) ) ) ))) ) )) ) 8w ))) )) c) c )) c )) )))))) )) ) )) ) ) ) @) )) )) ) )) )))) ) ) ) ) ) ) ) )*`)*1)*/) )*# ))))))) ) ) ) ) ) ) ) ) ) ) ) ) # ) ))) # ) ) )))) ̓ )  )) dz ) b )*)* ) )) ) ) ) ) *� * ** * 8w ** ** * * * * ** ** 8w ** *** * 8w * * * ** ** * *! *" 8w*$ *% *& *'*(*,*)** # I*+ # dz *-*.  *0 *2  =*3 *4*5*Z*6*A*7*>*8*=*9 h*: *;*< h h i J *?*@ DZ J *B*X*C*D J *E*O*F*K*G*I*H I C? *J I*L*M I I*N I*P*U*Q*S*R *T *V*W C J I *Y "*[*_*\ *]*^ I *a*i*b*e *c *d *f*g  *h *j *k *l *n+*o+~*p+@*q**r*|*s *t*u *v *w*{ *x*y*z = Cy Cy = Cy h*}**~******** *** * * * * * * BD* BD** BD BD* BD** BD* BD BD* BD* BD** BD* BD BD * ** * *  ** Sl * Sl* * ** * ** * ** Sl ** ** ** = ** CN Cy = Cy*** = =* =* = ***** <u *** * =* =** = <u = <u = * * P** Cy CN*** ** ****   = = P* ***  =* = **** P* CN Cy * P* * ** * ** * * ** * * ** * ** ** * *+*+** 8w* 8w* X* X* X* 8w X*++�+ 8w ^+ 8w+ 8w ^ 8w 8w++ 2 8w ^+ + + + + + + +++++ C]+++ = CN  t+++5 ++ ++2++'+  + + +!+" +# +$ +%  +& Cl +(+)  i+* ++ +,  +- +.+/ +0 +1  +3 +4   dQ +6+7+8 = +9+:+=+;+<  C  C+>+? !  B +A+d +B+C+\+D+K+E +F +G+H+I CN+J ~ I =+L +M+W+N t +O+P+T+Q+S =+R Ѹ ݞ Cy +U+V ~  +X+[+Y  +Z  +] t+^+_ +`+a+c +b Cy <u +e+f+p+g+i+h  +j+k +l+m t+n+o I +q +r+s+x+t+v+u t+w +y+{+z C] +| +} = =++++ +++++ + C] +++  +++ + t++ =+ = +++ ++ +++ ++ ++ + + + + ++ + ++ + C? ++ ++ + ++ + + + ++ + + + 0 + ++ + + + + ++ + + + + + +++ + + = +++ P+ = ++ Cy+ Cy ++ + + ++ + + + + + + ++ + + + + + + + ++ ++ ~+++ Cy+ Cy ~ Cy ~ t+,++, ++ C] ++++ ++ CN+ =++ + = CN+  + ,�  , ,,, , ,, C], d',, , , t  , <u, ~ C], ,,  = =,,,, ,, BD , , , , , , , , ,! ," ,#,$ ,% ,& ,' ,( ,) ,* ,,,-,G,.,5,/ ,0 ,1 = <u,2,3 ,4 <u =,6,F ,7 ,8,9,A,:,>,;,< d Cy,=  <u I,?,@ I ,B,C,D  Cy ,E  Cy ,H,J ,I ,K,L ,M ,N,S,O,P = =,Q,R i Cy,T,\,U,W,V  Cy Cy,X,Y =,Z =,[ = = i ,] D ,_0,`-,a-+,b,,c,,d, ,e =,f ,g,h ,i,j,k = ,l,o,m ,n Cy,p,,q,u,r >,s  ,t i dQ,v,~,w Cl,x,},y L Cl,z,{ Cl,| Cl Cl Cl dD, Cl Cl, Cl dQ, = Cy  ,, , ,, ,,,  CN, ~, , , CN P, ,, ,, , , , ,,, , P , P  ,,,, ,,,,, =,,, =  , =, = , ,, I7,,,  CN <u Cy, , , Cy, = ,,-&,,,,,,, ,,,, <u , <u, <u,, <u, I,, I,, I I, I, I,, I I <u I,, I, I I <u , ~,-%,-#,,  <u,-,,,, =,, =, =, =, =, =, =, =, = j =, =, F, =, = =, i =,-�,, ,, =, =, =, =, =, =, =  =, =, =, = =,, =, = =,,,  Ir =- = i =------ j =- =- =- - =- = =- - =- =  =- = j =- =- =--- =- =- =- =- =- = ? =- =- =- =- =- = =-!-" = k =-$  P ~ ~-' -( -)-*  -,-----.-;-/ -0 -1-:-2 -3-8-4 -5 -6 -7 = -9  -<-L -= -> =-?-@ -A -B-C-I-D-G-E-F C] CN d -H   -J -K = -M-v-N-a -O-P -Q-W-R -S-U-T   -V Cy -X-`-Y-[ Cy-Z -\ -]-^ P-_ = -b-j-c  Cy-d-e-g-f Cy C]-h -i = -k-s -l-m  =-n-o-q-p Ve -r = -t-u   i$-w -x-y -z-{ -|-~-} --  Cy------  <u- - - =- <u -- --  -- d6-- = d6 = =- =-- š = š--- -- <u- --- - --- Cy Cy - I -- -----  Cy =-- = I Cy-   -- - - - - -- -- - - Ӑ ~- - ----  I - = ---- = -- - - ---  =- =- -  CN ----- = d = - - - -- -   -/-.-.-._- --- - - - - - - ~ t -.]-.4-.3-.--- Y- Y----- Y Y- Y Y- Y Y--- Y- Y- Y-.� Y Y... .. . . .. Y. .. . . Y. . . Y ..... . .. Y .. . . Y .... .*.!.'.".%.#.$ Y Y.& Y .( .) Y .+., .- Y ./ .0 .1 .2 Y 8w.5.\.6.9 .7.8  .:.G.;.D.<.A.=.? .> i.@ J DZ.B .C J h J.E .F .H.O.I.K.J .L .M.N ".P.T.Q .R .S J.U.X .V.W J .Y.Z s J .[ 1 J .^  .`.a <u.b .c.l .d.e.f  =.g.h.j.i =.k Cy .m .n .o.s.p .q .r d C] Cy .t .u .v .w .x .y.z .{.| .} .~ . . F .... =.. . ..  . =... CN =. = ... . Ic. .  = . . .... . = .. CN.. Cy Cy. Cy Cy ... =. =. <u =. d P.. ű ű. ű. ű. g ű. . . ././... . . ... ...  Cy.. . =... . # .. P. C]. Cy. Cy ~.. = .. Cy.  = ... =. . . . . .. Cy CN  t. . t. .... . . CN . ./�..... G... . . . . . . . . . .... . .. . . ct . . cg/ // // / / / // / / / cg / / / / / / / /  //P/ // / / //  = / /!/J/"/?/#/*/$ /%/' Cy/&  =/(/) Cy =/+/1/,/0/-///. Cy = <u /2 /3/4 /5 /6 /7/8 /9 /: /;/< /=/> /@ /A =/B/D/C I P/E /F/I /G/H d Sl /K /L /M/O/N  = = /Q /R/S//T /U /V/g/W/f/X/e CN/Y/Z /[ I/\ I/] I/^ I/_ I/` I/a I/b I/c I I/d I Cy Ve/h /i/z/j/w/k cg/l/o cg/m/n cg /p/q ct cg/r cg/s cg cg/t/u cg/v cg cg G/x /y cg/{//|/} cZ /~/ cg// / // / j/ / / / / / / ϰ/// cZ/ cZ / cZ/ cZ cZ/ cZ/ cZ/ cZ /// /// // =/ <u / š š //// š/ = <u / <u  ///  ///// u/ u/ ބ ޒ/ ޒ// I/ I/ I/ I/ I/ I/ I/ I/ I I/ I I/ I// I/ I/ I/ I/ I/ I/ I/ I/ I I/ d// ~/ /  /0@///// P/ / / =///// /  CN //// // // CN ///// j / = = // // / // / //// / d # b/ / h// 8w  // /0#0�0 000 0000  =  0 0 00 0 00 <u =00 =  00 000 =00 ~ ~ 0 0 = =0 0 000" =0 =0 =0! d6 = 0$0%0?0& 0'050(0+0) 0*   Cy0,020-0/0. Cy =0001  CN C]03 Cy04 = 060907  08 <u 0:0<0; 0=0>  CN 0A0`0B0O0C 0D0E 0F 0G 0H 0I0L0J = 0K  CN0M ~0N 0P0Q 0R 0S 0T 0U 0V0Z I0W 0X 0Y CN 0[0]0\ iX0^0_ = Cy0a0p0b0n0c0g 0d 0e 0f  0h0m0i 0j 0k =0l  CN 0o = 0q0w0r0v 0s 0t 0u d Cy 0x00y 0z0{ = 0| t0}0~00 0  000   0000 000000000  CN Cy00 Ve Cy0000 ~ CN = 00 d <u t000000 CN = ~ Cy00 = š C]0000 CN š000  8w00 d I7 00000000 Cy CN 0 0 <u 00 CN = š 0000  00 <u d  =000000 = CN Ic 00 <u CN CN0000 Ve Cy 0 Cy Cy000  0 00 = 00 <u 0000 = Cy00 02020101;010000 000  0 000 0000 C?00 0 " 00 BQ D" B_ ӿ0 00 DL DZ I 0 <u0 CN d 00 ~000 0 0 = 01�111 1  1 C]  11/ 11 11 11 11 11 1 1 11 1 ޡ 1 1 1 t11 Cy  1 I7 d 1 111 1! 1" =1# = =1$ =1% =1& =1'1( i i1)1* i1+ i1, i1- i1. i i =10  11 1213  14 1516 17  18 19 1:  B1<1N1=1H1> 1? 1@1A 1B1C1F 1D1E  Cy 1G 1I 1J 1K1L  Cy ~1M 1O1 1P 1Q1R11S1j1T1i1U1`1V1]1W1Y1X = 1Z I 1[ 1\ I1^1_ 1a1b 1c 1d Sl1e1f Sl1g Sl Sl1h Sl 1k 1l11m C]1n11o1z t1p 1q1r 1s 1t 1u 1v1w 1x 1y "1{1~1|1} i ޯ ޯ i111 ޯ1 ޯ1 ޯ ޯ1 ޯ1 ޯ11 ޯ ޯ1 i ޯ i ޯ1 t Cy =11 1 CN  111 t1 t   111111 1  1111 1111  =11 =11 111 11 ~11  = I <u 1111 11  Cy  1 1 1 1 <u 111111 J1 J 111 h1 t P11 <u1 <u1 <u <u I1 111 I1 P1 =1 =  Cy1 ~1 = 1 = 11111 11 1 1 Cy1111  ~ I 11 111 <u 1  ~11  <u1  1 1 11 11 1 1 1  ~ 1 11211111 1 1 D 1 1 = 11 2�22 = 2 22 2 2 22 2 <u 2 2 = 2 2  2 =2 =2 =2 = d622q22k226222 222 2 = 220 2 2!2" 2# 2$ 2% 2& 2' 2( 2)  Cl2* Cl2+2, Cl Cl2-2. Cl2/ Cl  Cl t21 22 232425 Ic  27 28292T2:2Q2;  2<2=2D 2> 2? 2@2A 2B2C I 2E 2F2K 2G2H2I 2J I I 2L2M2O 2N 2P J 2R 2S P 2U2X2V2W   2Y2g2Z2b 2[2\ 2]2`2^2_ = 2a C] Cy 2c2d2f 2e   2h =2i  =2j = 2l2m 2n 2o 2p 2r2 2s2t  Cy2u2v 2w22x =2y =2z2{ = =2| =2} =2~ = d6 22 22 222 2222  Cy 22  C] = 2222 P 222 Cy = I t2222 P2 = 2 d2 22 22 <u 22 P P22 P P2 ޾ P 222 22 2  22  2 2 2 2 222222 2222222 22 2 2 cg 22222 2 2 2 2 2 222 cg 2 2 2222 cg 2 cg 2 2 cg 2 222 G 2 G222 2 G 22 2 2 22 2 2 2 2 cg 2 22 2 2 2 2 =2 =2 = P2 =2 2 = =2 =222 = t = d222\3�E3=373535Y34(3434333 33 š3 3K3 3A3 3/33333 i3 G3 ƙ3 ƙ3 3 3 3 3 3 3   y ï33'33#33! ƙ3 ƙ 3" #� ƙ '3$3% K L3& ƙ ƙ K3(3, ƙ3)3*3+ ƙ Ʒ ƙ3- š3. K K ƙ303731 ï32 i3334  ï3536 K*  T* 383< 393: L 3; ï L3=3?3> : 43@ s s3B3H3C3F ï3D 3E 73G r ï 3I L3J L L3L33M3l š3N3O3^3P3W3Q3T3R3S A  D3U3V , A D3X3[3Y3Z š  ʗ3\3] D A ʗ š3_3e3`3b :3a A ʗ3c3d @ š ʗ3f3i3g3h D D 3j3k D > A3m33n3y3o3s3p3r3q š A : D š3t3v3u š š 3w3x , c  D3z33{3} š3| š : š3~ š š3 �3 � 33333333 š > š 33 š A A 33 �3 � A33 D > > š33 š333 @ š š > �33 š > ,333333333 > š3 š >33 >3 > š3 š š >33333 š š >3 š š A3333 � > A š3 š 3 š333 š @ š3 š š3 > š333333 š3 š3 š 3 š š3 > 3333 D D3 š š � š333 š A A š3333333 š š A š3 š 333 š  š3 š 33333 š š3 š š 33 š3 š š š3 š š3 š33 š š3333333 33 3 3 33 3 33 33 š 33 3 š š3 š3 š3 š 34 š34�4 š4 š š 44 44 44  A44 š A A ʗ4 A > š š4 4 š 44444 š š š4 š44 š4 š 4 š š44$44 š4 š4 š y4 4" 4! š 4# š š s4% š š4&4' š š 4)5 4*4U4+4;4, ï4- s š4.4/43 3|40 4142 s 444845 `4647 ï 49 k4:  s ï4<4= Z i4>4? i i4@ i4A4B i i4C4D i i4E i4F i4G4H i i4I4J4Q4K4N i4L4M i i i4O i4P i i4R4S i4T i i4V4X š4W š 4Y54Z4c4[ š š4\ š4] š4^ š4_ š4` š4a š4b š D4d š4e44f44g44h4y4i4o4j4l4k š : š4m4n A š š >4p4r4q š , 4s4t4v A4u 5R 54w4x 5 5a > A4z44{44|44}44~ A4 A4 A4 A4 A4 A4 A D A4 A4 A4 A4 A4 A4 A4 A A A4 A4 A4 A4 A4 A4 A4 A4 A > A44 A A  A444 š < A š44 š4 ,4 ,4 ,4 ,4 ,4 ,4 , ,4444 š44 A š A š44 š , š444444 š š4 š š D4444 š D š 544 � D E W44444444 : š4 > š ,44 A4 A D44 D D D D4 š4 š ,4 , š4444 :44 > 4444 B  B{44 + > A444444 B  B{ +44 > A E4 š 45444444 4 4  ( (44 c ( c44444 ? c ? A4 A ʗ44 ʗ 5p44 5p < < H45454444 H k k 545� 5R B 5 A5555 5a > 5 55 B A Ĺ R5 A5 5 5 š R R5 55 5 š5 š5 š5 š5 š5 š5 š R š  >5 š5 š >5 D5 D5 D š55 š Z š5!5,5"5'5#5% š5$ š5& š š5(5* š5) š5+ š š5-58 š5.5/ š50 š51 s52 š53 š54 š55 š56 š57 š > š š595:5;  š š5<5=5P5>5G5?5C5@5B s5A Ʒ Z 5D5E s5F  5H5J5I Ʒ Ñ5K ƙ ï5L5M5N 5O   5Q ҉5R5U Z5S5T  ï š5V5W ƨ5X Œ 75Z55[5x5\5t5]5b5^5`5_ š š5a  š5c5e š5d š à5f5s5g  3P5h5i5m5j5l Z5k Z z ï x5n5q5o5p ï 5r 3| ƙ `  š5u š5v š5w š š š5y5z55{ š5|  5}5~55 š š5 š5 š5 š55 š š 5 š š55 š š5 š55 š š55 š5 š š55 š š5 š5 š5 š555 š = 5 š š 555555 š5 š5 š55 .5 .5 R555 š š5555555555 H H5 š l5 H H H5 H5 H H l55 H555 H H H55 H5 H H5 H H l5555555 H H H5 H m4 H5 H55 l H H H H55 H55 l H H H5 š5 š ï555 ï55 5 Z Ʒ Z ҉5 š š5 š5 š55 š55 š55 ҉ š555555 š š š55 š55 55 5 55 5 5 5 5 5 5 5 ł 5 š š5 = š5656E565656�5 š5 š [ š66 š6 š 6 š 66 66 66 Œ š [ š6 š Z š6 6 š6 66 š š 66?66266( š6 š6666 š6 š š6 š6 š6 š6 š 56 š6!6& š6" š6# š6$6% š 5 š6' š š c6) š š6* š6+6, š š6-6. š š6/60 š š61 š 636< š6465 š66 š67 š68 š69 š š6: š6; š 6= š š6> ]m ^< š6@6A6C6B š [ š6D š š6F6d6G6S6H6N6I6K š6J š 6L6M š š6O6Q6P š š š6R = š š6T6U6b6V6W Z š =6X6Y6^6Z š6[6] 6\ š š 6_6a š6` š š š6c = š6e6o6f6l6g6i6h š = 6j6k š Z 6m š6n š Z š š6p6q6} š6r6s š6t [ [ 6u6v x W6w6x6z W6y Z W6{ W6| W W Z6~6 š  =66666666666 š 6 š  š666 š š66 \ š i 66666 š š66 666 š6 š š6 š66 š š š6 š6 š 6666 š66666 �6 ,6  >66 š > >6 š6 , >66666666 š š66  š š6666 š H š66 c š k š6 š6 š6 š 5 š š66666 š66 š � 66 H c66666 š6 š6 š k š š66666 š š6 š6 š š6 š6 š š6666 š66 6 �  š 66 5 š 6 � š66 š6666 š š 66 š š Z666666 š y Œ š6 Z = Z6 š66 Z6 Z66 Z Z , š 67867.67%67#7� 7 š77 š777 77 77 š H7 š š7  7 š H š7 š7 š7 š7 š š k š77 š77!7 š š777 D š7 š7 š7 š7 š7 š š7 š77 š D š7" š š š7$ š Z š7&7'7- 7(7)7,7*7+ \ ї ї [ ї \ š7/7570737172 ҉ š š š74 76 š77 š š 797y7:7t7;7j š7<7=7I7>7E7?7C7@7B7A J J 7D 7F7H7G 7J7]7K7T7L7M J DL7N7O7P " 7Q7S7R " " " 7U7V7[7W J7X7Z i7Y J i J i7\  i 7^7_7d7` 7a 7b 7c J 7e 7f7g 7h7i š7k7l š š7m7n š š7o š7p7q š7r š š7s š 7u š7v7x7w ] ї š7z77{7} y7| y š š7~ š 7777 š 7 š7 š7 š7 š777777 š7777 š7 š š77 š š77 š š7 < š š77 š7 š7 š š77 š š7  š777 š77 š7 š77 š š77 š7 š < š7 š7 š7 š š77 š7 š š 7 š š7 š77 š š7 š77 š7 š š 7 š7 š7 š7 š7 š š77 š š77 š7 š š <7 š7 š7 š7 š7 š7 š š77 š š7 š7 š7 < š77 š7 š777 š777 š7 š7 š7 š �7 š š7 @ š š7 š77 š7 š ( š  š7:79@78[7877777 š7 š7 š77777 77 ׭ :y7 Z77 7 ց s77777 Z Œ s ï7 ս ,] š777 š š š78�888 š s  š8 š Œ š88:88+888 8 š 8 8 š š8 š8 š8 š8 š8 88! š88 š88 š88 š š8 š 88 š8 š8 š B š8 š8 š B8" š8# š š8$8%8( š8& š8' š 8) š š8* š D8,80 š8- š8. z8/ G81 š82 š š83 š8485 š š8687 š88 š89 š š 8;8M8<8K š8= š8> d8?8@8G8A8D d8B8C š d š8E š8F š š8H š8I8J š š š8L š8N8X8O8W =8P8Q š š8R š8S š8T8U š š8V š š 8Y8Z   8\8x8]8i8^8c8_8a š8` Z y8b š š 8d8g8e8f š š š8h  Z8j8p8k8m š8l  8n8o Z š š 8q8s8r š 8t8w 8u Z8v Z G š =8y88z88{88|88} š8~ š8 š8 š88 š8 š8 š88  š š Z š88 Œ š = š8 š8 š 7 89:8888  š 89) =88888888 š8 š8 š8 š š88 š š8 š88 š š88 š š8 R š88 š8 š888 š c š8 š8 š8 š8 š8 š8 š8 š8 c š8 š888 š888 š š88 š š88 š8 š š8 R š888 š8 š8 š8 š8 š š8 A š8 š8 š8 š š88 š š8 A š88 š (8 š c 8888 š888 ( ( š š8888 š8 š8 š š88 š8 š š888 š <88 < š < š8 <8 š š8 < š š8 š8 š888 š š88 š8 š8 š8 š8 š8 š š8 š 89 888 š š8 88 š š š9� š99 A9 š9 š9 š9 š9 š š9 š9 9 9 š  9  š š999 š999 š9 š k š99 š š99 š š99 š š99 š š9 š k š99 š9 9'9!9$ š9" š9#  š9%  š9&  š 9(  š š9* B9+ B9, B9- B9. B9/ B9091 B B9293 B B94 B95 B96 B9798 B B99 B9;9>9<9= Z š š <u9? š š 9A99B9h9C9^9D9J9E9H9F9G š = š9I š š 9K 9L9U s9M š9N9O š š9P9Q š9R š š9S š9T 9V  9W 9X 9Y9Z 9[ 9\  9]  9_9b 9`9a š 9c9f9d9e š š = š9g 9i9s9j š9k9n9l9m š  ( š9o š9p š9q ҉ š9r @ š9t99u99v9~9w š9x š9y š9z š š9{ š9|9} š š @' š 999 š 9 ս99 9  Ʒ š 9999 š999 99999 ` k 99 Ʒ 99 ł 9999 i9 999 š9 H š š9 5 š99 99 Z9 F Z9 Z r9 r 8 x999 x9 x9 x9 ( L x99999 x9 x99 x x9999 x x99 x 4 x x99 x9 x 4 x x 4 x9 x Z s š99 š Z š9:199999999 s999999 ï99 d r r Z999 ï d99 ű9 ű9 ű9 ű99 ű99 ű M4 ű M4 =9999 <u9 999  <u <u 9999 <u <u = <u š9 š š999 x š š9:,9: 99 ` š99:99 š9 š ?9: ?99 ? ?9 ?9 ?9:� ?: ? ?: ?: ?: ?: ?:  ? ? š š: š: š A š: : š::": š:: š: š:: š: š š: š: š: š: š: š: š:: š š D: š š:: š:! š B š š:#:$:( š:% š:& š:' š D š:) š:*:+ š š :-:. <u š:/:0 = š š :2:;:3:8:4:6:5 i š i:7 i Œ:9 Œ :: Œ:<:@ Œ:=:>:? Œ š š:A:g:B:f:C š:D š:E:N š:F š:G:H:K:I:J T :L:M  s :O:]:P:W:Q:T:R:S  c Q&:U:V Q& E :X:[:Y:Z ' E 6:\ :^:a :_ :` Cl :b:d :c dQ:e  % dD š s š:h:i::j š š:k :l:m:|:n:u:o:r:p:q < c  :s:t k < c :v:y:w:x k < c:z:{  k <:}::~::: c  k:: < c  :::: k < c :: k < c::::: ï:: Ñ ï::::: : : : :: : : 2 :::: V ï ű:: s s : `:::: : :: : : : : : :: : ï s Ʒ:: Œ ҉ :;::: š: š: š: š: š::::::::: H: H l H H:: H H::: :: : :  : l :  ::  ::   l::: H H: m4 H: H H: H l::::: H H: H H: H H:: l: H H:: H: H: H H: mj H::::: H H l: H H mT: H H: H m s: s: s:: s s:::  s: s s:;3: š š;�; š; š; š;;;; ; H;; ; H H H H; H H; ;; H;; H;; H; H H; H; H; H;; H; H; H < H H H;; H mj H;;(;;%; ;#;!;" H H U H H;$ H H;& H H;' = H;);.;*;, H;+ H H;- H l m;/;1;0 l < m;2 H H H;4;;5;p;6;9;7;8 š Œ š ;:;o;; š;<;`;=;V;>;F;?;D;@ H;A H;B;C ! 1 A ! H;E H l;G;T;H;I H ;J H;K H H;L;M H;N H;O H;P H;Q H;R H;S H H <;U H H H;W;\;X;Z;Y H H H H;[ H H;] H;^;_ H H H H;a;k;b;e;c H H;d H m;f;h;g H H;i;j H H H H;l H;m H H;n l H  š;q;s;r š š;t;;u š;v;;w;;x;;y;{;z H H <;| H;} <;~ š l l; H;; H m4 H H; H;;; H H l; H H H;;;;; H H; H H; H H; H H;;;;; H H H; H l H; H H;; H l l š ; š;; ; s Œ;; Œ; ;;;;; ׭; ;; ; ; ;; ; ;; ; ; Q ;; 3m Œ ; ű;; r Z r ï š;; š; š š;<L;;;;;;; ;; š š ; š;;; š š; š ;;;; ;; š;;;; š; ( š;; š;;; B5 š š ; š š;;;; š; š ;; š; š; š B5;;;; š < š k; š š;;;;; š B5; š;; š š; š;; š š < 5; š k s  š; š ;<);<";< ; ;;< ;< H<� H<<< H l m H<< H<<< l f H H< H< H H m$< <<< H<<< H . H H H< H< H H<<<< H< l H H< H l<< H H<< H m H H i<!  š<#<&<$<% š = š<'<( =  s<*<G<+<E<,<D<- <.<=</ <0 <1 <2 <3 <4 <5 <6 <7 <8 <9 <: <; <<  <> <? <@<A <B <C j m š<F š  =<H<J<I š š =<K š š<M<<N<<O<<P<R š<Q š <S š<T š<U<n<V<d<W<\<X<Z<Y l H H H<[ H l<]<a<^ H<_ H m4<` m4 mD<b<c H l H l<e<j<f<h H<g H H<i H H H H<k<l<m l H H m<o<w<p<s<q H H<r H m H<t<u<v l H H H<x<|<y<{<z H H H H H H<}<~ m H m<< š< <u<< š Œ <<<< š< š < š š <<< š š =< š <<<<<<<<<<< H H l H<< H H < < H<< l H H H<<< H< H H H H<< H = H< H<< H<<< mj H m$ H< H< H H l<=<=<<<<  š< < š< <<< š š < < š< š< š š<< š š<< š<<<<< š š< > š<< š< š  š< š< š< š š< < š<=< š<<< << < < << <<< < < v < ߀ << < <<  <<  < << <<< <   < <  <<< < << << < << < << o  i< =�= = == k ן=== == == ן  < XF= = ߐ Q X8 ߞ= ן= ן Ux ן= =  a  š ==== š = š = ==== š= = š == š= =#=!=" š š =$= š=%=&=M=' š=(=?=) š š=* š=+=, š=-=8=.=4=/=2=0 š=1 š š=3 š š š=5 š=6 š=7 š=9 š š=: š=;=< š===> š > > š=@ š=A=F=B š š=C š=D š=E š >=G š=H š=I š=J š š=K=L š š =N==O=`=P=W=Q š=R š=S=T � š=U š š=V š (=X š=Y=\=Z š=[ š > =] š=^=_ š =a=o=b=j=c=f=d š=e š � š š=g=h š=i š š =k š=l š=m š š=n =p š=q= š=r=s=|=t š=u š=v=y=w š š=x š (=z š š={ š =} š=~= š  ( š= š= š== �= š==== š == š š= š š==== > š >== š > > š š========= ( š š== š ( š= š= š= š ( š= š (== š (= (= (  š= š ( Z=========== H H H H= H= H= d ߬ d== H= . H H= H H H== H H= = H===== H H= m$ H H== H H H=== H= H m$ H H==== H H H H H=@=@== š== š= š à= à= à= à š=>7===== š= š= š š== š š= š= š >====== š====== = B == , : š= š  == š š == š Z y š==== š  = š m$=>=> š>�> Z š Z>> Z> š š>> š š>> š š> > š š> > š š>  š>>>>>> š š >> <u š>>> m$ >>.>>&>>! š> š> š> š>" š># š>$ š>% š  š>' š š>(>) š>* š š>+ š>, š>- š >/ m$>0 š>1 š š>2>3 š>4 š>5 š>6 š B š>8>F>9>B>:>@>;>= š>< š >>>? Œ š š >A š >C >D >E š>G>a>H>S>I>Q>J>K š >L Z>M (>N (>O ( :>P , (>R š >T>W>U>V š = š>X š š>Y š>Z>[ š š>\ š>]>^ š>_ š>` š š >b@ š>c>d@>e>m>f >g>h >i >j>k >l # >n?V>o?>p>>q>x>r š>s š š>t š>u>v š š>w š  š>y>z> š>{>|>>}> š>~> >> š   š >  š> š> š š>  š>> š>> š š> š A š> š> š>> š š> š >>>>>>>> š> š>> š> š> š š >>> š> š>> š> š  š>  š> š š>>> š> š A š> A š>>> š> š š> š> š  š>> š š> š> A š>>>>>> š > >> š> š> š š >> š> š>> š> š š > > š> š >>>> š š>> š š> š> š ( š>> š> š (>> š š (>>>> š> š>>> š > š> š> š  š š> š>> š> š š A>?>> š>>>>>>>> š š š 5 5 š> š> š> š >>> š>>> š > š> š> š ( š š>> š š>?� š š ?? š? š? š?? A š A??? ? ? š? š š? š ? š  š š?? š š? š? š A? š? š??2??%??? š? š š? š? š š?? š?!?# š?" š ?$ š š?& š?'?-?( š?)?,?* š š?+ š š š?.?/ š?0 š š?1 ( š?3?D?4?9 š?5?6 š?7 :?8 A š A?:?@ š?; 5?<?= š?>?? 5 š 5 š?A š?B š?C š 5 š?E?N š?F?G?J?H š š?I š ?K š š?L š?M š ?O?S?P š š?Q š?R š 5 š?T š?U š (?W??X??Y?m?Z š?[ š >?\?]?e >?^?_?b?` :?a : > š :?c?d : : š?f?i :?g?h : : š?j š?k?l : š : š?n?x?o š?p š?q š?r?v?s?t A :?u : š :?w š : š?y?z š ?{ š?|??}??~?? š š š ??? š š??? š?? š ? š š?? š? š š??? š????? š??? ? š ?? ?? š š ?? š??? ? š ??? š š š? š ??? ? š?? š? š š? š??????? š š ? š š??? š @ š š? š? š? š? š???? ( š? š  š?? š? š (? š ( š?@2??? š???? š? š????? š? š (? š ( š? š? š š (?? š??? š?? š ( š?? š ( ( š????? (? ( š ( (? (? ( š? š? š ( š? š? š? š? š 5 š? š?@ ?? š? š? (? (? (? ( š?@?@ ?@ @� @ ( @@@@ (  ( š@@ (  ( @ @@ @@ @ š   (@  ( @@ @ ( @   š@@@ (@ (@   (@@ (@@  (  @  š@! š@"@+@#@' @$@% @&   š@( @) @*  š @, š@-@0@. @/   š@1 š  š@3@6@4 š @5 ( š@7@k@8@R@9@L@:@E@;@@@<@= š ( š@> š@? š (@A š@B@C ( š@D A ( š@F@H@G : š :@I@K@J : š ,@M š@N š@O š š@P@Q š š @S@[ š@T@U@X@V � š@W š �@Y š �@Z � š@\@f@]@` š@^ š@_  š š@a@b@d@c š š @e š @g š@h š š@i š@j š š@l@m@q š@n@o š š@p > š@r@y@s@w š@t š@u @v š@x š š ,@z@~@{ @@| @@} @ @ š@@@ š @ š@@ š š@ š m@@@@ m š š@ m$@ m$@ m$ l@@ š m@@@@@@ H@@@@ m$ H H H@ H H H@@@ H@ H H l H@@@ H H H m@@@@@ H@ H H@ l@ l š@@@ H H H@ H@ H@@@ H@ H@ H@ H@@ H@@@ H@ < H H@ < H@ H@@ H@ < H@@ H < < H@ H@ H@ H@ H@ H@ H H@ H@ < H@@@@ H@ H H@ H m H@ H@@ H H H l @@ @ @ @ @ @@ @ @ @ @ @ F @D@A@A?@A@@@ š@@@ @ @ c@@@ :y@@ s @@@@@ š@ Q&  ï@ ï š@ š =@A @A @@ š 3| =@ A�AAAAA ï ï ˘A  sA A ׭ ƨA A š  šA AAA š Œ š AA š AA7AA"AA šA 3mA š A A A A A A A A! vA#A5A$A% š A& š šA' šA( šA)A* šA+A1A,A/A-A. = A0 š š A2 A3A4 I Sl # šA6 š yA8A; šA9 šA: 7 šA<A> šA= 7 Z šA@AlAAATABAK šAC šADAE šAF š šAGAH š šAI šAJ A šALARAMAQ šAN šAO šAP š š AS š šAUA[AVAYAWAX š š šAZ š A\ šA]A^ A_A`AiAa ïAbAc ZAd ïAeAg yAf yAh y X pAj s Ak ï AmAq An Ao Ap šArAAsAu šAt š =AvAw š šAxAyAAz A{AA|AA} A~A A A A A A AA AAAAA A A A A AA A AAA AAAA A AAA A A AA A š šAA šAAAA šA ( A šA AAA A A A A A AA AA A A AA A A ADACAAAAAAAAA šA A š šA šA šA šA š šA šA š AA šA Œ š šA AAAAAA = A AAA A A AAAAA   A A A   AAAA A A  A  AA A A  k AA = š š AAAA š š AB� š Z ZBBBBB'BBBB BB B B Sl B B hB B B B B BBBBB BB B BBB B B h B B! B"B# B$ B% B& ̓ B(Ba ̓B)B*BM ̓B+B,B<B- ̓B. ̓ ̓B/ ̓B0B1B6 ̓B2B3 ̓B4B5 ̓ ̓ B7B: ̓B8B9 ̓ ̓ ̓B; ̓B=BEB> ̓B? ̓ ̓B@BA ̓ ̓BB ̓BC ̓BD ̓BF ̓ ̓BG ̓BH ̓BI ̓BJ ̓BK ̓BL ̓BNB^BOBXBP ̓BQ ̓BR ̓BS ̓BT ̓BU ̓BV ̓BW ̓ ̓BY ̓ ̓BZB[ ̓ ̓B\B] ̓ ̓ B_B` ̓ Sl Sl ̓BbBBcB{BdBnBeBiBf Bg Bh SlBj Sl #Bk #Bl #Bm Sl #BoBr BpBq Bs BtBu Bv Bw Bx By Bz B|BB}BB~ B BB B BBBB B BB BBBBBB SlBB B BBB B B  B Sl BBBBB B BBB Sl SlB SlB SlB SlB Sl SlBBBB B BB B BB B SlBBBB Sl B Sl B B B Sl B Sl BBB SlB SlBBBBB SlBBB SlBB Sl #B Sl Sl # SlBB #B SlB SlBB SlB SlB B Sl # SlB Sl BB SlBB SlB SlB Sl SlBB Sl # SlB Sl SlB SlB SlB SlB SlB Sl #BCBC]BCBCBCBBB B B BB B SlBBB BB B BB h hB BB BB B Sl C�C C Sl C #CC ICCC Sl C C SlC Sl SlC Sl CCCC SlC SlC Sl CCC # C CC C C SlC SlCC4C C+ C!C"C$ C# I SlC%C'C& Sl C( C) C* Sl C,C. C- I C/ SlC0C1C3 C2 Sl SlC5CH C6C7C: C8C9 Sl C;CBC<C= Sl C> C?C@CA Sl CCCD Sl CE CFCG Sl Sl CI CJCXCKCR CLCM CN CO CPCQ Sl CSCU CT Sl CV CW SlCYCZ SlC[ C\ SlC^CC_CvC` SlCaCoCb CcChCd Sl SlCe SlCf SlCg SlCi SlCj SlCkCmCl Sl # Sl SlCn # SlCp SlCq SlCr SlCsCu SlCt # Sl # SlCwCCxCCy SlCz SlC{ hC| SlC} SlC~ Sl Sl h C SlCCC #C Sl # # SlCCC SlC SlC SlC Sl SlC Sl SlCC Sl SlCCCC SlC Sl h SlC SlC SlCC h SlC Sl h SlCC CCC C C CCCC  C Sl C C C CC bC C C C C C C b CCCCC šC š šCCCC š C CC šCCCC C šCC (CCCC šC (C (C š š ( šC (C š ( (C (C šC ( šC š ( šCCCCC šC > šCC š šC š š CCCC >C šC ( CC šC ( C šC š > šC šC šC C  š šC š CCCCCC š = šCC š š CCC š 7 šCC  š C C CCD 02C D� DD D D X XDD XD X #DD D #D # XD D X # X #DD DD 02  02DDDDrDDFDDC šD šDDD*DD# šDDD!DD šD š š D" š š šD$ šD%D&D' šD( šD) š š 8D+D:D,D2D-D1 šD.D/ šD0 š š šD3D7 D4D5 D6 š šD8D9 š š D;D@D<D>D= š š šD? š šDA šDB šDDDE t š š DGD_ šDHDI DJDY ߼DKDLDXDMDODN E] ߼ E]DPDTDQ E]DR E]DS E] E] ߼DU E] E]DV E]DW E] ߼ E] ߼DZD]D[ ߼D\ ߼ ߼ E] ߼D^ E] ߼D`DqDa š šDb šDc šDdDe Df DgDh Di Dj Dk Dl DmDn Do Dp Z šDsDDtDDuD DvDwDDxDzDy š š D{D šD|D} ( (D~D ( (D (D (D (D (D (D (D (D ( šDDDDD �DD š ( ( š š D  ( š š =DD Z Z šDDDD šD šDD šDDD šD šD šD š š  DD š š � š DD D šD  D DD  DDDD D  D D D D DD  D D  D D D DD  DD  DDDDD šDD š Z šDDD t š ҉DD šDDDD šD šDD šD š šDD š šD š  Z DDD š š  šD šD GDDD ïD sD s DDDDD ` D `D ƨD DD D ł DDDDDDD ł DD ` ` D `D łDEDE0D šDEDED šE� š šEE šEE šE š šE šEE šE š šE šE š E EE šE E E E E E E 8 E š šE šEE šE š šEE š šE š �E E%E!E# šE" š šE$ š E& š šE' šE(E) šE* šE+ šE, šE- š šE.E/ š šE1Eh šE2E3EY šE4E5 šE6 šE7EEE8E=E9E: š šE;E< š š  šE>E?EA šE@ š šEB šEC šED š 8EFEQEGELEHEJ šEI šEK š š  šEM ENEO EP 8 EREW šESET šEU EV š š EX  š EZ š šE[E\ šE] š šE^E_ š šE` šEa šEbEc šEd šEe š šEf šEg š šEi šEj šEkEl š šEmEnEEo ZEp Z ZEqErE} ZEsEt Z ZEu ZEv ZEwEx ZEy ZEz ZE{ Z ZE| 4{ ZE~ Z ZEE Z , ZE ZE ZEEE Z ZEE ZE ZE ZEE ZEE ZE ZE Z ZE , Z ZEE ZE ZE ZE Z , ZEEEE ZE ZEE Z Z , ZE ZEE ZE ZE ZEEE Z  ZE Z  Z ZEE ZE Z ZEE Z ZEE Z ZE  ZEEEE šEE š šEE š š šEE š šEE š š ׁEEE šE š šEE š š šEE š šEE š šEEEEE š EEE š šEE šE š B šE š šEE šE š � šEE šEE EE E � EEE šE šE šE šE šE šE šE šE š šE šE šE B šEEE šE šE šE šE šE šE šE š šE šE šE B š šEE šE šE šE š šE B šESdEKF�H FFF šF šFFFFFF šF šF šF FF F F š A š šF F šF šF š šF š  šF šFF šF š šF šF š AF šF šF šFF<F šFF6F F! F"F4F#F, F$F% F& F'F( F) F*F+ D F- F. F/F0 F1 F2 F3 D F5 DF7 šF8 šF9 šF: š šF; B F= šF> š šF?F@FC šFA šFB B šFD šFE š B šFGF{ šFH šFIFJ šFK šFLFM š  šFN šFO šFPFQ š šFRFSFgFTFbFUF[FVFXFW  cFYFZ k < ( ?F\F_F]F^ > 5a H AF`Fa A 5p 5 5Fc šFd šFeFf  A g šFhFvFiFoFjFlFk  cFmFn k < ( ?FpFsFqFr > 5a H AFtFu A 5p 5 5Fw šFx šFyFz  A g šF| šF} šF~ šF šF š šFF šF šF šF š šF šFF šF šF šF š šFF š š dFG#FFFF šF šF šF šF FFFF šF š šF š F =F F šF š šF š FFFFFFF E]F F FF šFFFFFFF ן ן s FFFF t   FFFFF FF ן ן F F  FFFFF š F (FF (F (F (F (F (F ( (  : š šF š F šF šF š šF š :F š šFFFF š = = ŒFF FGFFFF šF š ŒFF y šF š šF šF šF šF šFF š šF šFFFF šF ï šFF FFFF  F F F F F F   šFFGFG šFG� š š GG GGGG š šG šG š G š š šG G šG G š šGGGGGGGG š šG š š G š šG š šGG šG š ߼ š šGG šG!G" š  = G$G.G% šG&G) šG' šG( G*G,G+ š š šG- šG/GG0GG1G3G2 š š ŒG4GG5 šG6GSG7 šG8 šG9GDG:G= šG; šG< ( G>GAG?G@  š cGBGC : š šGEGLGFGIGGGH > š š >GJGK k ,GMGPGNGO ( GQGR : šGTGY GU VeGV šGWGX š š GZGG[GoG\Gg šG]G^ š šG_ 5G` 5Ga 5Gb 5GcGd 5Ge 5Gf X 5 XGh šGi š šGjGk šGl šGm šGn š š >GpGGqGGrGGsGz GtGu  Gv GwGxGy  5p ?  HG{ HG| HG} HG~G HG HG 5 H 5G AG šG šG š šGG š šG šG  šGG <G G G G GG GGG @' @' G  A šGGGG GG š šGG š šG šGG šG š š kGGG ( 5G 5G 5G 5GG 5GGG Ĺ 5 Ĺ AG A 5 > GGGGGGGG G G G GG G  + G � š A GGG ?  š GGG šGG ( G šG šG : š š GG  šGG šGG šG šG š šGG šG šG š ? šG šG šG šG š A šGHGG šG šG GG G G G G G G G G G G G G G j G šG šG š šGGG GGG ( (G (G ( cGG H� H H c šHHH H š šHH š š š ƙH K H HH HHH šH šH šH š H šH šH š š HH#HHH šHH š  dHH HH š š H!H" š š yH$H)H%H' šH& š šH( š H*HtH+H,  š ŒH-H.HSH/H;H0H5H1H4H2H3  CN Cy P PH6H7H8 CN H9  H:  H<HBH=H? H> = H@HA ~  HCHFHDHE  P ~HGHH t PHI Cy IHJ IHK IHLHM I IHN IHOHP IHQ I IHR I ϛHTHjHUHc HVHWHb C]HXHY HZ  H[ H\H] H^  H_H` Ha   CN HdHgHeHf Cy  = HhHi  CN I =HkHoHlHnHm  C] = C]HpHr C]Hq Hs = ŒHu HvHw \ ;8HxHy ;8Hz ;8H{ ;8 ;8H| ;8H} ;8H~ ;8H ;8H ;8HH ;8H ;8H ;8 ;8H ;8HJHI;HHHHH š \ šHH  š šH šH šH šHH H  H H D HI9HH š H šHIHHHHHH HH ZH Z ZH ZHHH ZH ZHH Z ZHH Z Z , ZH ZH ZHH ZH Z Z ,H ZHH ZHH ZH Z ZH ZHH Z  ZHHH ZH Z ZH ZH ZHH Z Z  ZH Z  ZHHH ZH ZH ZHH Z ZH ZH ZH ZH Z , ZHH ZH Z ZH ZHH Z ZHH Z Z ,HHHHHHH Z ZH Z  ZHH Z ZHH ZH Z Z ,HHH ZHH ZH Z H Z ZHH ZH ZH Z Z ޕ ZH ZHH Z ZH ZHH ZH Z ZH ZHH Z ZH ZH ZH Z ZH ZH ZI�I Z ZI ZI ZI ZII$IIIII Z ZI I ZI ,I ZI ZI Z Z , ZI ZII Z ZII Z ZII Z  Z ZII Z ZII Z ZIII ZI ޕ ZI! ZI" Z ZI# Z I%I, ZI& ZI'I( ZI) Z ZI*I+ Z  ZI- ZI.I5I/ ZI0 ZI1 ZI2 ZI3 Z ZI4 Z I6 Z ZI7 ZI8  ZI: š = šI<JI= š šI> I?I@IjIAIVIBIOICIKIDIGIE šIF š š šIHIIIJ  š š šIL šIM šIN š šIPIQISIR š šIT šIU š š IWIeIXI\ šIY šIZI[ š 9% šI]I` šI^ šI_ š Ia š šIb Ic šId šIf šIg š šIh šIi 9% šIkIIlIImI{InItIoIrIpIq < ? k Is IuIxIvIw š c IyIz A š 5 �I|II}I �I~ š ,II ʗ : III š > II š  I šI šI šII : š IIIII š šIII  IIIIII   II  :  :III š , šII š B B šIJIJIJIJ šIIIIIIIIIIII HI H A H @ I @ I @ I II R RIIII R AI A AI A AIII A A AI 5RI 5R A 5RIIIII  EMI EMI EM  I  >IIIII B& >I > B&I 5 B& 5III kI k 5 k RI RI R 4IIIIIIII 4I 4 R RII B R BII B AI R AI A RIIIII 5 R 5I 5aI 5a 5 5aII I I  D DI D RIIIIII RII R R R R < <II > < >IJJ�JJ BJ B > B J J S�JJ S�J S�  J J  AJ JqJJ>JJ(JJJJJJJ HJ H ʗ H @ J @ J @ J JJ R RJJ"JJ R AJ A AJ! A AJ#J%J$ A A AJ& 5RJ' 5R A 5RJ)J0J*J.J+  EMJ, EMJ- EM  J/  >J1J7J2J5J3 B& >J4 > B&J6 5 B& 5J8J;J9 kJ: k 5 k RJ< RJ= R 4J?JYJ@JLJAJGJBJD 4JC 4 R RJEJF B R BJHJI B AJJ R AJK A RJMJSJNJPJO 5 R 5JQ 5aJR 5a 5 5aJTJW JU JV  D DJX D RJZJcJ[J`J\J_ RJ]J^ R R R R < <JaJb > < >JdJkJeJhJf BJg B > B Ji Jj S�JlJn S�Jm S�  Jo Jp  ʗJrJJsJJtJJuJ|JvJyJw HJx H ʗ H @ Jz @ J{ @ J} J~J R RJJJJ R AJ A AJ A AJJJ A A AJ 5RJ 5R A 5RJJJJJ  EMJ EMJ EM  J  >JJJJJ B& >J > B&J 5 B& 5JJJ kJ k 5 k RJ RJ R 4JJJJJJJJ 4J 4 R RJJ B R BJJ B AJ R AJ A RJJJJJ 5 R 5J 5aJ 5a 5 5aJJ J J  D DJ D RJJJJJJ RJJ R R R R < <JJ > < >JJJJJ BJ B > B J J S�JJ S�J S�  J J  ʗJJ 5 R R RyJJJJ c 5JJ 5a Rk D DJJJJJJ D R\ R RJJ š š šJJ š š šJJJ = y šJJJJJJJJ  r šJ š š <JJJ š š JJ = š =JKJK� šJ š \ K šKK šKKK K > š (  š (K šK K  Z šK KMKK8KK+KK(KKK š š ZKK! KK yK yK yKKKK  y &KK y Y yK y yK y EK"K'K# š šK$K% šK& š š š K) š šK*  šK,K1K-K/ šK. š =K0 š š K2K5K3K4 š = šK6K7  = ї šK9KFK:K?K;K= šK< š šK> = šK@KB šKA š їKCKD = š KE š šKGKHKJ šKI šKKKL š š KNKKOK^KPKZKQKXKRKS š ZKT KU KV KW 5 KY š \ š šK[K\K] s š K_KdK`KbKa š šKc ї š KeKhKfKg š y =KiKKjKzKkKsKl KmKpKn Ko š š šKqKr š š Kt Ku Kv Kw Kx Ky K{ K| šK} K~ y KKKKK šKK  š š šKK š š šKKKK šKK š š \}KPKN,KLKKKKKKKKKKKKKKKKKKK H HK HKK m H mKK HKK H HKK H HKK H HK HK C H HK H HKK HK HK H HKK HK H HKK H H l HKKKK HK H H HK HK H H HKKKK H H lK H l HKKKKKK  K š š KK   šKK š K  šK ŒK ŒKK ŒK ŒK Œ Œ KK š Œ =KK š šK Œ šKKKK šK š KKK Z šKK š šK šK šKK šK š š šKK = š šK šKLgKL:KLKLK šKKK šK š š KK š 5 šKKL L� LL > L L L D L šL L L L L LL 8LL9L LL'LLLL HLLL H H H H HLL H H HLL$LL!LL H H H l HL" HL# l šL% HL& H H HL(L0L) HL*L- HL+L, H l lL.L/ m$ H m HL1L4 HL2 HL3 H HL5L7 HL6 H H HL8 H l šL;LeL<L= s šL>L?L^L@LHLALGLB LCLD \ rLE rLF r š šLILJLZLKLN šLLLM š , š šLO šLP šLQLR šLS šLTLWLULV @'  5p ?LXLY 5 X Ĺ AL[ šL\ š šL] š E šL_L`La š šLbLcLd š E šLf š = šLhLlLi šLjLk 7 š š LmL šLn šLoLpLLqLzLr HLsLwLtLv HLu l l = mTLxLy m4 H HL{L~L| HL} H m$ HLL HL H lL H H =LLLLL HLL H m4 H HLLL H H HL H l HLLL H HL HL l šLLL H H HL H H H šL y ZLLLLLLLLLL š s šLLL šLL šL L LLL  (  LL šL š šL š ( s =LLLL š š LL š = š =LLL šLL =  šLL šL šLL šL š :L  šLL šLLLLLLL HLL H H H H HL HL m4 H HL HL HL l HLLL HLL HL H mL H H HLLLLL H HL HL HLL HL HL HL HL HL HL H H < HL l H HLLL m S HLMnLMWLMHLM ZLLLLL HL HL HL H HL H HLL H H HLM LMM�M HM H m HM H .MMMM mD H m HM H H HM MM H HM H HMM HM H H HM H H šMMM,MMMMM HM H m HM HMM HM l < H mT HM M!M#M" H H H HM$M% HM&M)M'M( c s M*M+ c sM-M=M.M7M/M2M0M1 H H < HM3 HM4 mM5M6 H \ < \M8M: HM9 H HM;M< l m H HM>MD HM?M@MCMA mjMB H . HME HMFMG l H H HMIMJ ZMKML ŒMM ŒMN Œ ŒMOMP ŒMQ ŒMR Œ ŒMSMT ŒMU ŒMV Œ Œ MXMdMYMcMZ š M[ M\ M]M^ M_ M`MaMb R . Œ Me šMf š šMgMh šMi šMj š šMkMl šMm š @ šMoM šMpMqM šMrMsMMtM~MuMyMvMxMw H H mD H HMzM| HM{ H HM} H H HMMMMMM H l H HM H H HMMMM l H H HM H H HMMMMMMMM H H H HMM H l H HM HMM m$ HM HMM H HMMM H HM H HM HM H H HM MMMMMMM H HM m HMMM H H HM H H HMM HMM H m4 HMM HM H HMM H H H <MMM H HMMM H H H m4M HMM HM = H HM H HMN!MM šMMMMMM HM HMM H H H HMMMM HM H H HM H HMMMM l H H lMM H H H HMMMMMM HM H m4 HM H HMMMM H H l HM H l HMMM H HMM H HMMMM HM H HM H HMM H HM HMMM H H HM H H HM šMN MNM HN�NN H H = HN m4 H HNN HNN m H H lN NN NN NN H H HNN m H H HNNN H H H HN m HNNN HNN l H H HNNN H l HNN H m4 H mN" šN# š N$N%  N& N'N(N+N) Dz N* i  Dz N-O5N.NN/ šN0 šN1NN2NN3 šN4NN5NN6NcN7NQN8NJN9NDN:N? 8N;N< 8N= 8 8N> 8 8N@NA 8NB 8 8NC 8 8NE 8NF 8NGNH 8 8NI 8 8NKNL 8NM 8NN 8NO 8 8NP 8 NRN\NSNU 8NT 8 NV 8 8NW 8NXNY 8NZ 8 8N[ 8 FN] 8N^ 8 8N_N` 8 8Na 8Nb 8 NdNNeNrNfNlNg 8 NhNi 8Nj 8Nk 8 8 8Nm 8NnNo 8 8Np 8Nq 8 NsNuNt 8 8 NvNNwN{ 8NxNy 8Nz 8 8 N| 8 8N}N~ 8 8 8NN 8 8N 8 FNNN 8 8N 8NN 8 8NN 8 8NN 8N NN FN FN FNNN F 8 8 F 8N 8 NNNNN 8NNN 8 8 8NN 8 8N 8N 8 F 8NNN 8 N 8 8N 8N 8NN 8N 8 8NN 8 8N 8NN 8 8NNNNN šNN š 5  šNN š šNN š � šNN 8N 8N 7 8 šN šNN š šN š = NN sN šN šNN šN šN šN šN š @ š à š šN šNN NN šNNNNNN HNNNN m H H l HN HNN mD mD mNNNNNN = H H .N H H HNN HN mD HN H H m$NNN HN H HN l HNNNN HN H HN H HNNN H m H HN m4 HN O�OOO OO OOOO H = l <OO H H H m HO HO H HO OOOOO m H H m$ HO < HOOO H H m HO l HOO)OO#OO HO lOOO B O!O" H H H HO$O&O% H H HO'O( = H H HO*O1O+O- HO, m HO.O0O/ H š l H H HO2O3O4 H H m HO6P.O7OO8OO9O; šO: = ZO<OF šO= šO>O?OA O@  šOB šOCODOE š š OGOH OIOlOJOYOKOROLOPOMON H LOO OQ HOSOWOTOVOU H X 6OX . HOZO`O[O^ O\ O] 6 O_ HOaOfObOdOc < Oe אOgOjOhOi s L X .Ok 6 Om šOn ěOoOsOpOq  Ʈ ƮOr  ƮOtOvOu Ʈ Ʈ OwO ƮOxOy ƮOz ƮO{ ƮO| ƮO} ƮO~ ƮO Ʈ 4 Ʈ 4 ƮOOOO O O OO O O O OO O O O O O O O j š 7OOO 7OOOOOOO H HO H m$O H HO H H HOO HOO HOO HO HO H HO HOO HO H HOO H H < H <OOOO HO H HOOOO H H HO H H lOOOO HO H m HO H HOOOO H l HO HO HO HOO HO HO HO H HO HO  HO H H HO šOOO  OO  OO O O  O T OOOO oOO o oOO oO o oO x oO O O O   oO U�O  OO  O T OOOO šO š <uOO d ŒOP,OO = OOPOPOPOO HO H mP� H H HPPPP H m H H HP l HPPP P HP P HP P l š š lP H H H HP HPP HP l  lPP!PPPP HP H mj HP H mP HPP H H HP l lP"P& HP#P$P% H H H HP'P*P(P) H l H H HP+ H HP-  š P/PiP0PA P1P2P@ P3P4 šP5P7P6 š š šP8P9 P:P=P; šP< š �P> šP? š š š ZPBPEPCPD Œ š <u šPF šPGPHPQPI PJPL PK C?PM C?PNPO PP C? PRP[PS PTPVPU C? PW PXPZ C?PY BQ C P\PaP] P^ P_ P` J PbPe Pc Pd C?Pf Pg Ph C? C? PjPoPkPm šPl š Pn šPpPvPq Pr Ps Pt Pu PwPx d šPyPzPP{P HP| HP} HP~ H mPP HPPP H H H HPPP HP lPP H l l lP H H mPPPP HP HP m HP H HP H H HP HP HP HPP ! ! mjPRuPQPQ.PPPPPPP Cy P PPPPP PPP P Cy P  =PPPPPP  I7 I7 =PP PP P CNP 8wP 8w PP = C] <u =PPPPPPPP CN i$ PP t Cy Cy d PPPP <u =PP ~PP PP P CN 1P 1 APPPPPP  P I PPP   P   2P P PPP P x PQ-P PQPPPPPPPP < ƨ ƙ PP ƨ :y ïPPPP ƨ  Ʒ NPP 4N ï PQ�PPPP  Z ï PP s QQQQ  ƨ QQ  r š yQQQ QQ Q Q Q G (QQ ƙ s sQQQQ 7 Dz QQ ï QQ%QQQQ 7 G QQQ Œ Œ Q Q! ƨQ" Q#Q$ 8J VtQ&Q*Q'Q)Q( ( š ! ŒQ+Q, ƨ Z šQ/QX šQ0 šQ1Q2QT iQ3 iQ4Q5QC Q6Q7 Q8Q?Q9Q<Q:Q; ' K K Q=Q> K Q&Q@ QAQB K QD QE QFQIQG QH #� QJ QK QL QMQN QO QP QQ QR QS šQU QVQW QYQ`QZQ]Q[Q\ š šQ^Q_ š ї Z šQaQoQbQc š ŒQdQeQg JQf J QhQi B_ BQQj QkQnQlQm BQ BQ B_ B_ QpQQq šQrQ{QsQwQt š šQuQv š š šQx šQyQz š š Q|QQ}Q šQ~ šQQ š šQ Q E] šQ šQQQ š šQQ šQ š � Q š š 8 š QRHQQQQQQQQQ š ҉QQQQ š šQQ š šQQ šQ QQ š šQQQQ š šQQQQ šQ š šQ šQ šQ šQQQQ š š :Q š : š š š š šQ šQ šQ šQQ šQ šQQ QQ š :QQ šQ šQ š QQQQQQ <uQQQQQQQQQQ š š šQ > šQQ šQQQ E < @ D šQ š QQQQQQ š HQ + AQ : : >Q QQ @' 5R 5 QQQQQ ( šQ > c šQQQ š Q S QQ šQ D DQQQ : E> D BQ Rk š H k šQ = šQQQQ š 7 zQ šQ šQRQRQ R�RR R   R RR  RRR R R R  R  R  RR RRRRR  R  R RR RR   R  R R R0R!R& R"R#  R$R%  R'R,R(  R)R*R+  , e R-  R. R/ R1R6R2  R3R4 R5  R7RCR8R=R9R; R:  R<  R>R@ R? RARB  RD  RERFRG RIRjRJRaRKR^RLRM Œ yRN RO RPRQ RR RS RT RURV RW RX RY RZR[ R\ R] Hp R_R` Z š Rb yRc yRd y šRe šRfRg š šRh šRi ( š yRkRlRsRmRn y šRo Rp RqRr   Rt š Z šRvSMRwRRxRRyRRzR}R{R| s = šR~R = =RR R š C]RR šRR š šRRRR šR šR šR šR š š LRRRRRRRRR � š RR : šRRRR šRR šR šR š  š šRR šR šR š ( šRR šRR šR šR š 5R šR <R šR šR š šRRRRRR c š šR šR šR šR šR š š šR šR šRR š 8 RRRRR š š yRR   šRRRR RR  Z RRRRRRRR Z šR =RR ן Q RR y 7 RRRR = š R šR RR šR R R š R šRR š RS0RSRR šR ƨR š RR RR šR ( :R šR šRR š (R (R (R ( (RR (R ( (RS� ( ( šSS/S šSSS <uS šSSSS S šS S : šS S   dQ šS šS šSS$SS SS SSSSSS SS : : S : : S! :S" S# : S%S& : šS' šS(S)S,S*S+  S-S. : � š S1S5S2S4 S3 š šS6S7 = S8SJS9SC dS: dS;S<S@ dS= dS>S? C] d C]SA dSB C] d C] SD dSESF d dSGSH C] dSI d C] ƮSK ƮSL Ʈ SNSXSOSQSP Cy SRSSSVSTSU = = SW SYS`SZ šS[S]S\ šS^S_ Cy š = š šSa šSb šSc š CySeX SfTbSgSShSnSi šSj šSk šSl šSm š Cy šSoSSpSw šSqSrSt šSs š SuSv š Z =SxSSySSzS{ S| =S}SS~ š šSSS  šSS š c ( š šSS šS šSSSSSS d SlSS Sl P b dzSSSS d h h ^SS  Sl # ŒS 4l šSS šS šS šS šSS š šSS šS š š ASS Z Z šS SSSSS š S š šSSSS š šSS @SS šS šS šSS 5 S S S S S šS š šS šS šS šS šS šS šS š >SSS š š sS š SSSSSS SSS S š šS š SS šSSS m t Œ šS šS š =SSSSSSS š š SS sSS šS š šS šSS š š Œ S šS šS š =S =S =S =S =S = <uSSSS šS š S š š SSS š š šS š HSTSTT�TT šT š š TTTT <u š š T T T šT TT š šT T š A šT šTT šTT š š T š šT ( šT šTT šT šT š š CyTT:TT%T T#T!T" š š šT$ T&T( šT' š EmT)T* š T+ šT,T1T-T. , : T/ T0 šT2T5 T3T4 � AT6T7 AT8 � �T9 � šT;T[T<TYT=T> šT? T@TRTA šTBTM šTC šTDTE š šTF šTGTH šTI šTJ šTK šTL š B šTN š šTO šTP šTQ B š šTSTT š šTUTV š šTW šTX D š šTZ šT\T_T]T^ š šT`Ta š = š TcVzTdTTe TfTTgTThTTi Tj TkTwTl yTm TnTq шTo lTp i yTr TsTuTt Tv TxTTyTz y T{T T|T} (T~T š ( ( š ï ZTTT T ZT T  TT T T  T  yT yTT y yT y TT T TT T T TT ց T TTT ѧTTTTTTT ïT ïTTT ïT ï 3 ïT 4! DzT ïT ï ïT ïTTTTT 3T ! :0TT  WS Q5T ֐ oT ïTTTT R m : vTT C O ï ïT ïT ïTT ï ïTT ï ïT ï 3TTTT ï :y  T š  Z T TT T TTT TT T TT 5 TT T TT 5 TT TTTTTT ŒTT ƙ š TTT  TT T T T T T  T T TV<TVTUHTT 7 T TUTUTUTUTUT xU� L x L iUU  j \ ïUU UU  VU U ł łU U ƨ UUUUUU ш š ƙ UU < ï .UUU  U 8U K VUU ƨ > Z sUU2U U)U!U&U"U%U# ! >U$ : :yU'U( <  ł U*U, !U+ ï ZU-U1 ƨU.U/U0 Q 6& 65 !U3U=U4U7U5U6 = s ƨU8U< U9U:U; š , A D š ZU>UBU?U@ UA Œ ï DzUCUEUD V ( GUF WUG \ ŒUIV UJUKUvULUP UM UN ZUO Z UQUmURU]USUXUTUU ( cUV šUW  šUYU[ šUZ š (U\ š š (U^UaU_U` š , , šUbUlUc šUd šUe cUf cUg cUh cUi cUj cUk c < c š 5RUn dUoUsUp UqUr B 5R šUt +Uu š (UwUUxUUyUUzU} K*U{ U| TU~UU   U  UUUUUU Ui  KH X)UU X) UUUU UU U U U U UU U e UUUUUUUU K  K*UU   UUU } Q ߞ UUUU U  UU     UUUU UUUU UU U  UU    U UU U  U  U  UU U U  U    UUUUUUUUU   U   UUU    U  UUU UU    UUU  UU U U  UU  UU   U   UUUUUUUU   UU U U  U UU  U   U  UU  UU    UV�UU U  UU    VV V V V V V V V V  V   V   š CyVV:V š šVVVVVVV V Ʒ ï ïV ï шVVV  ï Z V V VV! <V  sV" V#V/V$V. ÑV%V& Ñ ÑV'V( ÑV) ÑV* ÑV+ ÑV, ÑV- Ñ Ñ Ñ cV0V1 cV2 cV3 cV4 c cV5 cV6V7 cV8 cV9 c cV; š s V=VOV>VMV?VL šV@ VAVB VCVKVD łVEVHVF VG : VI VJ : ł š ZVN š VPVSVQVR = š A šVTVi šVUVV š šVWVX šVYVe šVZV[ š šV\V] šV^ šV_ šV` šVa šVb šVc šVd š šVf š šVg šVh š šVjVk šVl šVm šVn šVo šVp š šVqVr šVs šVt šVu šVv šVw šVx š šVy B šV{W3V|VV}VV~VVV šV šV 7 = šVVVVV ŒV VVVVVV š ە V ˘ VVVVVV š šV šVV šV šV š šVV š šV šV ? š šVV š šVV šV šV šV šV š šV šV 5 š ï V šVV VVV  7V s ZVVVVVV   ZV  Ʒ V V ѧ  šV šV šV šVV šVVV šV šV š šVV š šVV š B šV š šVV š š V šVVV š VVVVV ( V šVV š šVV š š V š  š šVV š šVV šV šV šV šV šV š š BVW!VWVWVW�V šV šV šVV šV šV šVV š šV šVV šV šV š V šVV š šV šV šV šV šVV šV šV š š ? š W šW šW ҉WW š jWW šWW WW W šW W š š WWW š �WW š  š d šWWWW = W  W rWW  W ZWW š š ZW"W&W# šW$W%  š ҉ šW'W( š šW) šW* šW+W, šW- šW.W0W/ š > š šW1W2 c ( BW4WW5WW6WW7WW8W}W9WE W:W; W< W=W@W> W? WA WBWCWD WFWeWGWZWHWTWIWPWJWNWKWL šWM š š šWO šWQ š šWRWS š O šWUWW šWV ~ š šWXWY š š W[Wa šW\W]W^ š HW_ š šW` š Wb šWc šWd š šWfWmWg š šWhWi šWjWkWl š š HWnWtWo šWpWr šWq šWs š šWuWyWv šWw š šWx š šWz šW{ šW| šW~WW ZW ZW ZW ZW Z ZW ZW Z W WWW yW y š yW š  šW š ƨWW šW šW šWWWW š WW š šW B š š (WWWW š šWW š šWW š šWW š šWW š šW � šWWW šW š š šW šW š WWWWWWWWW š šW š WWWW àWWW àWW à àWW à à àWWWWWW à àWWW à A 3 àWWW àW àWWW àWW à 4/ 4/W š šW š à àWW àW àWW 4/ àWW R 4/ W ZW ZW ZW ZW ZWW Z FW Z ZWW W WW W WWW d W W W W WW W G š šWW š š zWX�WWWW š š =W š XXXX š  s šXX  7 šX zXX ZX X X <  ŒXYXYXXXXkX XXhXX=X X XX8XXXX š X šX XX 8X šX! š X"X# X$ X% X& X'X-X( X) X*X+ X,  X.X3 X/ X0X1 X2  X4 X5X6 X7  X9X;X: š š šX< E šX> X? šX@ šXAXB šXC XDXUXEXMXF XG XHXI XJ XK XL 8 XN XO XP XQ XRXS XT 8 XVXW XXX`XY XZ X[X\ X] X^ X_ Xa Xb XcXd Xe Xf Xg Xi Xj šXlX XmXnXwXo Xp XqXr Xs XtXu Xv XxX{Xy Xz š X| X} X~X X X X X X X XX X XX X X 7X X 7 XX X XX XXX šXX šXX š šX }X } " š šXX šX š X š wX X X 8XYXXXXXXX X šXX X X š šXX š XX XXXX XX X XX 0X X X 0 X X XX XX 0 0 XX X X X X X X XXX X 8 8X 8XX š X šXXX šX šXX šX š šX š š XX X X XX X XXXXXX šX š š  šX šX š X šX š šX š X XXXXX šX š šX  šXY XX ( X š Y�Y  Y Y YY  Y YY Y  Y  AY Y š � ( šY YYYY š Y šYYWYYRYYYYY Y šY Y š Y YLY!YI Y" Y#Y$ šY%Y5Y&Y+Y' šY( šY) šY* š Y,Y-Y2Y.Y0 šY/ š Y1 š šY3Y4 d š Y6YDY7Y?Y8Y:Y9 š d Y;Y= šY< š šY> šY@ šYA šYBYC š 8YE šYF š 8YGYH  šYJ YK šYM YNYO ҉YP šYQ š YS YT YU YV š YXYYYYYZY^Y[Y]Y\ š š Y_Y Y`Ya YbY|YcYrYdYkYeYg šYf š Yh š šYi šYj š YlYnYm š šYo šYp š šYq š YsYv šYtYu š š YwYyYx š šYzY{ 9% š šY}YY~YYYYYY šY k šY š š YY š Y šYY š šYYYY š š YY š Y š š Y šYYY š šY šY šY š š Y YYYY YY YY Y Y 8Y Y YY 8 Y YY Y Y FY Y Y šYY YY YY Y šY š šYY š  šYY Y Y ҉YY šYYY šY šY šY šY šY šYY š šY ( ʗ šY šY š BYZYZ[YZYYY šY šY šY šYYYY HYY HY H HYYYYYY H H H HYY H H H HY HYY =YY H H l m HYY HYY HYY m4 H H HYYY HY HY l lYY H H m$ H šYYZ šY šZ�Z š šZ šZ šZZZZ š  š šZ š Z šZ Z šZ šZ šZZ š šZZ šZ š B Z šZ š šZ šZ šZ šZ š ZZGZZ>ZZ& šZZ šZ šZ! š šZ"Z# š šZ$Z% š šZ'Z/Z( š šZ)Z* šZ+ šZ, š šZ-Z. š šZ0 š šZ1Z2Z9Z3 šZ4 šZ5 šZ6 šZ7Z8 š   šZ: šZ; šZ< šZ= š š (Z?ZAZ@ š š ZBZDZC š š šZE ZF Q&ZHZMZIZK šZJ ZL H šZN š šZOZP šZQ šZR šZS šZTZW šZUZV ?ZX š šZYZZ š š >Z\ZsZ]ZaZ^ šZ_ šZ` š šZbZcZfZdZe š šZgZrZh Zi ҉ZjZk = ZlZmZp Zn Zo t DLZq DL šZtZZuZyZv šZwZx <u y š ZzZ{ š HZ|Z} H šZ~ šZZ šZ š yZZ šZ �ZZ š š �ZZ šZZZZ Z š šZ > š Œ =ZZZ š š ZZ š Z šZ[GZZZZZZZ šZZ ї 7 ZZZZ šZ šZ šZZZZ šZZZZ š šZ š Z š šZ š ZZZZZ š Z š Z š šZ š ZZZ š š Z š šZ š šZ šZZZZ š šZ š Z š šZ š š Z šZ š iZZZZZZ H HZZZ H H mD HZZ HZZ H H HZZZZ H H H mZ H l HZZZZ HZZ H m$ m4Z HZZ HZ l Z H l lZZZ HZ H HZZZ H H lZ H H H šZ šZ šZ š Z[ZZZZZZ ї š ZZ š š Z[ Z[ šZ 7ZZ 7 7Z 7Z 7[�[ 7 7[ 7[ 7[[ 7[ 7[ 7[ 7[ 7[ 7 7 š d š[ = š[[$[["[  [[  [[  [[ [ [ [  [ [[ [  [[ [!   [# š  š[%[/ š[&[' š[( š š[) š[* š[+ š[, š[-[. š š [0[1 = š[2[3[8 š[4 [5[6[7 š > @[9[= š[: š[; š[< š [>[B[?[@ ( : :[A : c š[C š[D š[E 5p[F D [H[[I[[J[S[K[Q[L š[M š[N š š[O š[P ~ [R š Z š[T[[U[V š d[W š[X[k[Y[b[Z[_[[[] H[\ H l H[^ H H[` H[a H H H[c[h[d[f H[e H m H[g H H[i H[j H H H[l[v[m[s[n[p H[o H l[q[r H H < m[t H[u H m4 H[w[}[x[{[y[z H l H m[| H H H H[~ H[ H mD[ š š [[[ š[[[ š[[[[[[ H[[ H l H[[[[ H H H H[[ H l H H[ H[ H[ H H H[ H[[[ H[ H H m$[[[[ H H m4 H[ H H H š[[[[ = Œ = š[[ š š[[[[ š[ š[ š š[[[ š[ š š š[ š[ š[ š [[[[[ š[ š s[[[[ š z š[[ š Œ = [[ š[[ š[ [ š[ š š[[[[[[ [ s . [[ #�[[ H s V[[[ š  š[[ š[[[[[[[ H[ H[ l m4[[[[ l H m H H[ m H[[ H[[ H H =[ H H[ l H[[[[[[ H[ H H H[ H < H[[ H l H[[[ H H[[ H[ H < H H[ H\� l H\}\l\b\`\]\]'\\t\ \i\ \N\ \;\ \ d\ š\\\ \ \ š\ š\ š\ š š �\\%\\#\ š\\ \\ \\!\\   \"  ן \$ š  š\&\'\9 š\( š\)\* š š\+\, š\-\3\. š\/ š\0 š\1 š �\2 � š š\4 š\5 š\6 š\7 š\8 � š \: t \<\M \=\> š\? š š\@ š\A š\B\C š š\D š\E\F š š\G š\H\I š š\J\K š š\L D š = š\O\P\Q š š\R\S\b\T\\ š\U\V\Y š\W\X š : š š\Z\[ š š š\] š\^\_ š š\` š\a  š š\c š\d š\e\f š\g š\h  B \j\p\k\m\l š  š\n\o Œ W H m4\q š\r\s L š š Œ\u\\v\\w\{\x\y š\z š š 8\| š\} š\~\ š\\\\ š\\ š\ š \ �  �\\ š\\ š\ š  š  š\\\\\\\\\\  š š  š\  š\ š\\  š  š š\\\\\\\  š  š š \\  š  š\\\\ š\ š\ š \\\\ š  š \   š\\ \ \\ š  š\\ š\  š \ š \\\\ š š \ š Ʈ š\]\] \ š\ š\\\\\\\\\\ CN \ Cy \ c\\ = P P \\\  dQ \ \\\\\  \\\ CN\\\ <u\ <u <u\ <u\\ <u\ <u <u\ <u\ <u h <u I \\\\\  [\ ig o C? CN CN\ C] \\\\\\\\\ C]\ C] \\ ~ CN = \\\\ CN =  =\\  ]�]]] ] ] ]] ]]  = ] ] =] d ]] =  =]]%] š Z]]]]] Œ ] Œ] Œ Œ]]]] Œ ] Œ Œ Œ] Œ] Œ]! Œ]"]# Œ Œ]$ Œ š]& š Œ](]])]Z]*].]+ š],]- k <u š š]/]0]Y]1 š]2]O]3]A ]4 ]5]6 ]7]8 ]9]: ]; ]<]= ]> ]?]@ 3_ ]B ]C ]D ]E ]F]G ]H ]I]J ]K ]L ]M]N j ]P ]Q ]R]S ]T]U ]V]W ]X j š d][]o]\]^ š]] š]_]` y ]a ҉]b]c]k]d]g š]e]f š š š]h]i š]j š š ]l š]m š]n š š ]p]w š]q š]r]s]t š ]u š ]v š š]x š]y]z]]{] ]|]} ]~]] ]  ] ]  > ] ]   ] ] ]]  ]]  $ ]]]]] š]] š = š š] š] = š]] š] š] š ]]]] I š ƨ ]] š] y š] š]]] š ]]]  š �]_e]]]]]]] = š]] = =]] =] =] =] = =] =] i = =]] š = š] š] š] š š ]^7]] š]] š y Z]^] š] š]]] š š] š]] 8 š ]]]]]] 8] 8]] 8 8 F]] 8]] 8 8 ٍ] 8 8] 8 7]]] ]] ] ] ] ] ] F]] ] ]]] 8 8] ] ] 8]^]^] 7]] 7]]]] ] 8 8] ] 8 8 ] ]]^^� ^ ^ F F ^ F^ 8^^ ^ 8 8^ 8^ Hp^ 8^ 8^ 8^ 8 5 8^^^^ ^^ ^ ^ ^ F 8^ 8 ^ š^ ^ š^^ ^3^!^& š^"^# š^$ š š^% š ( š^'^( š š^) š^*^+ š š^, š^- š^.^/ š š^0^1^2 š š š^4 š^5^6 š š ^8_R^9_Q^:^H y^;^< y y^=^>^C^? y^@ y y^A y^B X y^D y^E y H^F^G y l y^I y^J_F^K_@^L_>^M^^N^^O^\^P^V š^Q^R š š^S š^T š^U š >^W š^X š^Y š^Z š^[ š ^]^^^^n^_^j^`^e š^a š^b š^c š^d š ^f <^g š^h š ^i š ^k š^l^m H š š^o^^p^t^q š^r š^s š š (^u^y š^v š^w^x š ^z^} ^{ ^| š š^~^ š  š^^ š^^ š^ š^ š c š š^^ š^^ š ^ š š^^ š^^^ š^ š^ š^^ š š^^ š^ š^ š^ š ^ š š^^^ š^^ ^^^ <^^^^^^^ < H H ^ < H <^ < >^ > <^ <^ < ^ <^^^^^^^ k^ k ( š^ š k^ k š^^ ^ ^ ^  š^ š^ š^ š  š^^^^^^^ š^ š ? š^ š (^ ( š^^ A š^ š^ š A š^^^ c^ c^ c c š^ š c^^ š c š^^^ :^^ :^ :^ :^ :^ : , :^^^ > >^^ >^ D^ > A >^ ^ ^^ ^ ^ D ^^^ š š^^ š^ š^ š  š^^ š ^_8^_ š^ š^^_ ^_ š_�___ š š _ š + š š__ š__ š > _ š š_ _ š__ š  >__/__,_ _____ _   __ _ A ?__ 5R 5p H c__&_ _#_!_"  B& k 5_$_% 5 5a ʗ D_'_*_(_) < H A (_+  > _-_.  5 � _0_1 (  _2_3 _4 _5 _6_7   c _9 š_: _; _<_= : š_? : _A_B_D _C _E   _G_I_H < _J_N_K _L _M   _O _P  y š_S š š_T š_U_V š_W š š_X_Y š_Z š š_[_\ š_] š_^ š__ š_` š_a š š_b_c š š_d š B_f__g_|_h_v_i_t_j_k š y_l š _m _n _o _p _q_r _s V š_u š ~_w_y_x š  š_z_{ Z = ï š_}__~_______ ___ š___ š_ š_ š_ š _ __ F __ š_ š _ š __ ___ _ _ 4? __ _ Y`_  _ __    š_ š_ š__ š_ š_ š š__ š š_ š__ š_____ __ _ _ _ __ _ __ __ _ 8 ___ _ ___ 8_ _ _ _ 8 _ _ _ 8 ______ __ 8_ __ _ _ _ _ __ _ _ 8 _ __ _ 8 = š___ š š__ š_ š š_ š_ š_ š___ š š_ š__ š_ š_ š_ š_ š š___ š š _`�_ š 7 š š` ( ``````Z``V``` `  ` ` ` ` ` `` ` ` `` `` ` ` ` : ``%` ` `  ` ` `!  `"`# `$   `&`' `(`H`)`.`*`-`+ >`,   > `/ Œ`0`9`1`4 `2 `3 `5`7`6 `8 `:`A`;`>`<`= H H `?`@ א `B`E`C`D r < `F`G s O `I`R`J s`K `L `M`O `N `P`Q  `S`T  `U Ʒ `W `X `Y   š`[``\`m`]`c `^`_ `` =`a =`b W' i =`d `e  `f `g`h `i  `j`k  `l `n``o``p `q``r`t`s  Œ`u š`v`}`w`z š`x`y ( š`{ š`| š š `~` š` š , š   ` ` ` ` `  ``  `` j `` ` `  š ````  ` ` ` ` ` ``   ,` ` `` `` ` ` `  ` ``` ` `  ` ` `  ` ``` ` ` `  `` j ` `  ` ҉ ``` ` ` ` `  ` ``  ` ``  `` `  ``  `` `  ``  S `` ` ``  ` Ʈ `bo`````` Z `` Z````   Œ``` Ʒ` G G`` G G`` G` G` G G Z``a`aV`aP`a` Z`a `a Z`` Z` Z Z` Z`` Z Z` Za� Z ,a Z Zaa Za Z Za Zaa Z Za Z ,a aa a Za Za Zaa Z Za Za Za Za Z Za Zaa Za Za Za Z Z Z aa=aa2a a,a!a$a" a# Z Z a%a'a& Z  Za( Z Za)a* Za+ Z  Za- Z Za. Za/a0 Za1 Z Z a3a: Za4 Za5 Za6 Za7 Za8 Za9  Z Za; Za<  Za> Za?aF Za@ ZaA ZaB ZaCaD Z ZaE Z aG Z ZaH ZaI ZaJ ZaK ZaLaM ZaNaO Z   Z ZaQaR Z ZaSaT Z ZaU Z aWa ZaXaYaaZa{a[ad Za\ Za] Za^a_ Z Za` Zaaab Z Zac Z aeam Zaf Zag Zah Zai Zaj Zakal Z Z an Zaoau Zap Zaq Zaras Z Zat Z av Zaw Z Zax Zay Zaz  Za|aa} Z Za~ Zaa Za Z Zaa Z Za Z  Zaa Z Za Za Za Zaa Z Za Z  Zaaaa Za Z Za Zaa Za Za Z Za  Z  Zaa Zaa Z Zaaa Za Zaa Z Zaa Z  Za Za Z Zaa Za Z Za Za Z waaa Za Z Za  Za Za Z Za  Zaaaaa Zaa Zaa Z Zaa Z Za Za Zaaaa Z Za  Z Zaa Z  Za Zaaaa Za Za Za , Z Zaa Z Za ,aa Z Z ,a Za Za Za Z Zaa , , Zaa Za Zaa Za Z Za Za Zaa Z , Zaa Za Za Zaa Za Z Zaa Z  Z Zaaa Za  Z Zaa Za Za Z Za Z ޕab2ab Zaa Zab Zab� Zb Z Zb Z bbbb bb Zb Z Zb Zb b Z ޕ Zb b Zb Zb Zb Z Zb Zb Zb Z Zb Z bb! Zb Zbb Z Zbb Z Zb Zbb Z Z Yb"b,b# Zb$ Z Zb%b& Z Zb'b( Z Zb) Zb* Zb+  Zb- Z Zb.b/ Z Zb0 Zb1 Z b3bZ Zb4b5bKb6bE Zb7b8b@b9 Zb:b= Zb;b< Z , Zb> Zb? Z , ZbA ,bB ZbC ZbD Z Z , ZbF ZbG ZbHbI Z ZbJ Z ,bL ZbM ZbNbU ZbObP ZbQ Z ZbRbS Z ZbT  ZbV ZbW ZbX Z ZbY  Z Zb[ Zb\b]bfb^ Zb_ Z Zb`ba Z Zbbbc Zbd Z Zbe Z Zbgbh Z Zbibj Zbk Z Zbl Zbm Zbn Z bpbwbqbtbrbs Z  Z bubv  bxbbyb Zbzb{ O ńb| ïb}b~b ïb ּb ïb Dz Q5b Ob ï Dzb Dz ï  Œbb  bbbb c ïb ïb ibbb ̀b ˘  ï xbbb ï ïbg�beobc;bbbbbbbbbbb šbbbbbb b :y Zbb b b b ; bb ̀ b bbb  Zbb Z , Z  Z bbb ̀bb  s b b  b bb  b b b  y b š  šbb šb š =b šb šb šb šb šb š šbb š šb c šb š šbbb š Œ šbbbb šb šb šb š šbb šbbbb bbb D bb D b b b b b bb b D b bbb B šbbbbbbb s š  G'b š šbc8bcc� š c dcccc Zc Z Zcc Zc Zc Z Zc c Zc Zc Zc Zc Zc Zc Z  Zcc* Zccc c Zc Zc Zc Zc Zc Zc Z Zc Zc Z c! Z Zc"c# Zc$ Z Zc%c& Z Zc' Zc(c) Z  Zc+ Z Zc,c- Zc. Zc/ Zc0 Zc1 Zc2 Z Zc3 Zc4 Zc5c6 Zc7 Z Z c9c: š d šc<cc=cc>cc?cyc@cA ї šcB cCclcDcHcE cFcG ï ̀ cIcRcJcN LcK LcL LcM L x xcO xcP xcQ V xcScecTcW LcU LcV x LcXcbcY x xcZc[ xc\ x xc] xc^ xc_ xc`ca x x Vcccd x L L xcfcicg x Lch L xcj xck x x Lcmcucn ïcocp ` Zcqcrct Bcs B A H Bcvcw ï ƙcx Œ šcz c{c| šc}cc~ šc š š c š šc šccc š occcc y š šcc šc šc šc šc š š c š š cccccc c l šc šccc šc šc > šc š cc š c šcc š šcc šc š  š šc š c šccc šcccccc šcccc =ccc i =cc =c = =cc =c = i = =  cc š = šc t tcc tc t t .c š cc cccccc = šccc š = <uc c ~  šccc šc c ~ šc  c š š šcdcccccc š š cc s c 7c rc rc r rcc rc r rc rc rc rc rc rc rc rcc r O rcccc   cdc  c cc c d�d d Ƴ G šddddd šd šd drd dLd d$d dd ddd Sd S X Xd X YBdddd YB S YB `dd o } Y dddd d X d }d d" }d! YQd# YB d%d.d&d*d'd( Y` d) Xrd+ d,d- S Y d/d6d0d3d1d2 K Y` d4d5 4? 7 d7d9d8 X Xrd:dC d;d< d= d>d? d@dA dB dD dE dF dG dH dIdJ dK XdMd\dNdUdOdSdPdQ dR dT dVdZdWdYdX d[ Y` d]dkd^ded_dbd`da 4? X K `dcdd ` } YB dfdidgdh X } Y Ydj dl dmdpdndo S 7 dq Xr odsddtdduddvd}dwdzdxdy YB YQ Yd{d| Xr Y` o `d~ddd Y Y`d Y` dddddd S Xr d Y` 7dddd X 4? d K dddddddd dd YQ 4? ddd } Yd YB o `ddd dd X YB YQ dddd Y` Xr dd Y ddddddddd K dd 4? 7 X ddd Xr dddddd S Y Xr Y`dd o ` YQ Ydd d X d dddddddd Y dd } YB YQ Ydddd Xr Y` o `d dddddd Sd K dddd Xr 7d X 4?dd = d =d dd d d d d d demdedd šde*de d rdd rd dd O 8Z Od =d de rdd rd r rdd r rd re� re r O ree r re re ree re re r O re e e reeee re ree r re re ree re r r = (e =ee#ee!ee e = = 8Z re" r e$e'e% e& = e(e) = = re+e=e,e/ re- re. ( e0e:e1e6 =e2e3e4 ߰ = =e5 r e7e9 =e8 = =e;e< = Oe>eLe?eDe@eB OeA = (eC r eEeH eF eG R = eIeJeK = = eMe]eNeReO ePeQ = =eS eTeU eV eW eX eY eZ e[ e\ Oe^ece_ea =e` =eb = = ee š šef šegeh šei š šejek š šel š ?en š z šepeeqeere~eseyetev šeu š ewex š s H šeze|e{ š  še} š їeeeee š = še še še šeee še ?e ?e ? š ?eee š šee še š B š š ?ee še š l šee e eeee e Oe (e O = e ee =e e ee ( Oeee = z = e z (eeeeeeee e š e e e ee e He š H šeeee š š <uee y Œ š 7eeee e = še ї šeee š šeeeeeeeee  Œe š šee š š ee  Z 7 à  (eee ïeee 6e ïe 9 eeee ֞ 9 9 ïee ïe ïe 9 ïeee ïe ï ï ïee 6 ï ּee š š efMef1ef eeee y k =efe še ] ef =eef� e Cy ff CN ff ffff P f f f f Cy Cy > f  ff f ff f ff f ff f f ff f šf! šf"f# šf$ šf% šf& šf'f+ šf(f) š šf* š f,f/ šf- šf. š šf0 š f2f?f3f5 šf4 f6f7 yf8 šf9 š šf:f; šf< šf= šf> š  šf@fCfAfB  š š fD šfE = fF fG fH fI fJfK fL  fNfYfOfUfPfSfQfR y š  fT ї  šfV šfWfX ї š šfZff[fzf\fm šf]f^ sf_ s sf`fa sfb s sfc sfd sfe sff sfgfh sfi s sfj sfkfl s s Âfn šfo šfp šfqfv šfrfs š šft šfu š šfwfx š šfy š šf{ šf|f}ff~fffff ï  s f 2 ïf f f Tf ff s  Œ Zfffff 6 6f 6f 6ff 6f 6f 6f 6f 6f 6f 6 6 yf yf yf yf yf y yff yf y yf yf 6 y yff 6ff 6 y yf yff y 6 yffff  Z š ҉fff ffffffffff > f š šf šff š š  šf šf šf š fffff šf šf š šf š ff ff šf R B{ fffff A Ī EM >ff B& A fff šf f š 5f H šff šff šf š šf < ff šf šf š šf š fffffff ff rf  f t  jf  ەfff ff ł ff fff s Z > d ï gjgg{ggMgg8gg-gg+g š šgg gg gg gg g šg g šg š š g gg g šg š šg šg šg š šgg šg šg š š šg g!g& šg"g# šg$ š šg% šg' šg( šg) šg* š š šg,  Gg.g1g/g0 š = šg2g7g3 Œg4 g5g6  y 7 Œ š šg9g:g< šg; š zg=gLg>gDg? šg@gCgAgB > ` > Œ >gE i igF igG igHgI igJ i igK i ̀ šgNgWgOgQgP š r šgRgUgSgT š = š gV  Œ ïgXgpgYg[ šgZ t šg\go zg]g^ s šg_ šg` gagbgigcgfgdge š š gggh c š cgjgmgkgl  š gn š  š šgqgr šgs šgt gu gv gw U�gx U�gy U�gz U� U� g|ig}ig~ggggg š Hggg =g =g =g =g =ggg = g  =ggg g g g  gg   g  g š =giX šg šgghgh šggggggg (g ( š šggg (gg (gg (g (g (gg ( ( š (gg ( (gg ( ( šg ( (gg ( (ggg (ggg ( š ( šg ( (g ( šggggg šggg (g (g (g (g (g ( š (g (g ( (gg ( (gg ( š (gg >gg šg š šg šg šgg š š >g >g >g > > šgg šg c šg š gg š šgg šg šg šg š š ghghggg š gg š šg šg šgg š šg š g šggg Ag Ag Ag Ag Ag A Ag h� h h  h h  šhh š š h h šh h šh šh Ah Ah Ah Ah Ah A š Ah šh šh šh Ah Ah Ah Ah Ah A š AhhQ šh (h šh!h"h- :h#h$ šh%h(h& šh' š : šh) šh* š šh+h, š š :h.hEh/ šh0h;h1h6h2 šh3 šh4 šh5 š š :h7 šh8 šh9 šh: š š : šh<h=hA šh>h? šh@ š š : šhB šhChD š š :hF šhG šhH šhIhM šhJ šhK šhL š :hN šhO š šhP : šhR HhSh|hT (hUhshVhdhW hXh^hY hZ h[ h\ h]  š  h_h`  hahb  hc  šhehl hfhg hh  hihj hk   š hm hnho hp  hq hr  šht  šhuhv hw hx hy  hz h{  šh}hh~hhhhhhhh >h >h >h >h > š > >hh > >h >h >h š >h >h >h >h > >h >h š > >hh > >hh > >hh >h > > šh šhhh >hhh > >h >h >h > šhhh > >hh > > š >hh > >h > š >hh >h >h >h > >h > š šhhhh šh šh šh šh šh šh š : š šh šh šhhh : š š :hhhh  šhiIhiEhi>hhhh šh šh ch ch ch chh ch c c šhhh chh chh ch c ch ch c š ch ch ch ch ch c šh chh ch chh ch c ch c šh c chhhh c ch c šh c ch š chihi :hhi :hh :h : :hi� : : š :i :i :ii : :i : šiii :i : :i i :i :i : : ši :i :i : :ii : :i : šii"iii : :i : ši :i : :i :ii : :i! š :i#i* :i$i% :i& :i' :i( : :i) š :i+i6i,i1 :i-i. : :i/i0 : : š :i2 :i3i4 :i5 : : š :i7i8i< :i9i: :i; : : š :i= š : ši? (i@ šiA (iB (iC (iD ( iF àiG àiH à 4/iJ šiKiQiLiOiMiN š , ( � �iP � šiRiUiSiT š iViW š 5iYiZ = i[ ši\i}i]ini^igi_idi`ia ïib ic ieif ü iihikiiij Z Z ilim ƙ ˘ ioiuipisiqir ƨ i xit iviyiwix s L 7 izi{ i| ł i~iiiiiii < Ñ  xii Z V Œiiii :y Z ˘ Zii P ï s ïiiiiii  ki i ii  s iii S iiii Œ Ʒ  ši siiii ši ҉ ii ši  i ii  i i i i i tI iiii  š iii 7i ii ši ši š i E] š Z ziiiiiii Z šii Z š z š šiiii =iiiiii šii ši š šii š š i šiiiii š š ši D ši ši ši š š šii ši š š ї yiiiiii y ši š i i i i ii i ii G Gi Gii G Gi Gii G G 6 ši š ii š siji ši šj�j šj šj šj šj š @ š š Zjk1j jj jj j šj j j = š šjjj šj šjj šj š šj šjj š šj šjj šj š šjj š šj š j jdj!j6 Zj"j#j.j$ Z Zj%j&j+ Zj' Zj( Zj)j* Z Z , Zj,j- Z  Z Zj/j0 Z Zj1j2 Z Zj3 Zj4 Zj5  Zj7jHj8j=j9 Zj: Z Zj;j< Z Z j>jE Zj?j@ ZjA ZjB ZjC Z ZjD , Z ZjFjG Z  ZjIj^jJjZjK Z ZjL 4jMjNjTjO 4 4jPjQ 4 4jR 4jS 4{ 4jU 4 4jVjW 4jX 4jY 4 4 ; Zj[ Zj\ Zj] Z  Zj_j` Z Zja Zjb Zjc ޕ Zjejjfjjgj Zjhjij{jjjsjkjl Z  Zjm Zjnjo Z Zjpjq Z Zjr  Z Zjt Zju Zjv Zjw Zjx Zjyjz Z Z  Zj| Zj} Zj~ Z j Zj Zj Zj Z  Zj Zj Z Zj Z jjjjjjj Z Zj Zj Zj Z j Z  Zj Z Zj Zj Zjj Z Z jjjj Zj Zj Zj Zjj Z Zjj Zj Zj Z Z ޕ Zjj Z  Zj Z Zj Zj , Zjjjjj šj š šjj šjj j jj   šjj > � š šj jjj jj š š jjjj šj š šj jj j  šjj ~ šjkjkjkj sjjjjj jjj šj šj šj š š j š šj šj šj šj šj š šjj š šjjj j jjj àj š àj r ߰j r y jkjjj j j j jj o j s sjj sj sj s sj sj s Tj k�kkk oS  tI o5 tIk Tg  x  šk š k k šk š Zk k Z š ˘kk'kkkk šk š šk škkk škkk  ( c k š :kk Œ k š šk šk!k" šk# š šk$k% šk& š š Dk(k+k)k* š Œ šk, š k-k. k/k0 H k2kSk3kHk4k:k5k8k6k7 šk9 š Z k;kFk<k= = šk>k? š šk@ škA škB škCkD škE š škG š škIkPkJkMkKkL š = Z =kNkO d ˘ Œ Z škQkR š Œ škTkZkUkV š rkWkYkX à ˘ à à šk[ltk\ š šk] šk^k_lk`kka kb kckkdkskekmkfkjkgkikh 6 5 6 6 .kk V .kl . V 6knkokq 6kp R V Rkr Vktk}kukykvkx Vkw V . . 6kzk{k| 6 *  k~kkkkk 7 R 7k V kkk R kk Rkkkkkkk k R kk ,]k 6kkkkk 6 6 6kk 6 6kkkk 6 Rkk 6 6 kkkkkkk R Rkk * 5 Rkkkk R V Vk . kkk 6kk % 7k k 6 6 6klklkkkkkk kk  kkkk k kkkkkkk kk k #� <k < dkkkkk kk א H אkkkk א < <k < kkkkkkkkk  k kkkk s s kk < < /k kkkk s <k H Hkkkkk kk kkk < < kll�l ll d l bl l l l l l l Hllll r א l b l l l l rll ,] l l llUll8ll+l l$l! l" l# X l%l(l& l' Ll)l* L l,l2l-l0 l. l/ L Ll1 Ll3l6l4 Ll5 L l7 l9lGl:l? l;l<l= L Ll> l@lClA lB lDlElF lHlNlIlL lJ lK lM lOlRlP lQ lS lT lV lWlklXlalYl\ lZ l[ <l]l^ l_l` L <lblglcld lelf < lhli L lj ll lmlqln lolp L lrls lulw šlv Z rlx š ly lz l{l| š šl} šl~ šll š šlwlnlmlllll šl šllll H š Œ <ll šll š šll šll šl šll š  lllll š  šll š �lll š : šll š š G šlll šl šl  šllll š šlllll šlllll šlll š š šl šl š šll šl š š ll šl šlll šl š ll š r = š šll šll šl š š llllllllll l š šl šl šl š šl š šll š š šll š šl šllllll šl š šl š šl l šllll šl šl šll  š  l šl š š ll Z š š klmlmlm=lm:lm+l šl šm�m*mm&mmmmm �mm D mm m k A šm 5pm m mm m  mm m  š mm"mm šm š c km �mm km km k kmm km k km! W km#m$ m% š šm' šm( m) š šm, m-m1m. j m/m0 š m2m3 š šm4 šm5m6m9m7 šm8 š š š m;m< k km>mOm? šm@ šmAmImBmF šmCmD š šmE š mG š šmH š šmJmK mL mM mN š šmPmQ mR šmSmrmTmnmUmlmVmkmWmamX š šmYmZ š šm[m\ šm] š šm^ šm_m` š š mb š šmcmd š šmemf šmg š šmh šmimj š š š ( ,mm , momp ( šmq , š šms šmtmum{mvmx šmw š Hmymz š 5 m| šm}m~ š šmmm šm y š Ʒm šm š šmmmm šmmm š Hm H m$ mm šmmmmm šmm š >m šm šm š m mm m mm m m m m mm š m šmmmmmmmm šmmm š Ammm š š š mmm šmm š A šm šm š m šm šm š šm š mmmmmm šm mm š šm šmmmm š šm š > šm šmmmmm š š m š A šm šmm A š š A šm  ҉mm šmm y š y šmnmnmmmm šm šm š Œmmmm Œ š Œmm šm šm šm šm šm šmm š  šmm y š š Zmmmmm š š =mm  š š cm šm š šn�nn šnn š šnn šn š šnn šn nn šn š šn šn n š šn š c šn šn šn šnn š šn š n šn šnn šn š � nn š š �n nKn!nEn"n3n#n$ Œ šn% šn&n'n+ šn( šn)n* š š Emn, š šn- šn.n/n1 šn0 š n2  šn4 šn5 šn6n= šn7 šn8 šn9n: šn; šn< š š @n> šn? šn@ š šnA šnBnCnD š @ šnF šnGnH š ZnI š šnJ šnLn}nMnznN š nOnPnS šnQnR š š nTnonUnYnV šnW šnX š B šnZnd n[n\ n] n^ n_ n` na nbnc B nenf ng nh ninj nk nl nm nn D npnu šnq šnrns šnt š š D šnvnw šnx š šny � šn{n| š = šn~nnn š Ʈ š n šn šnnn šn šnnnnn n  nn n  n n n nn  B n n   Bn šn šn š šnn šn š šn šn šnn šn š B š šn šn :nnnn š šn šn šn šn šn šn šn šnn š D šn šn š D šnnnnnnnn šn š =nn  šn mn m  m mn mn mn mn mnn mn m mn mn m / mn mnnn mn m nnnnn n yn n nnn Znn nn  n n ן n šn šn šnn š  š ( n nnnnnnnnn < š < kn c š k c nnn š n  š šn šn  š š Hnunt.nsAnrnpno nn ƨ š šo� oo ̀oo o s oo oo Z < o ҉o o  s ;8 ƨ s üoo šoooqoo1oo)ooooo šo šo š šoo š ( šo š šo š (oo$ ?oo o! o"o# ? o% ? ?o&o' šo( š š (o* šo+o.o, o- š  š o/ šo0 š o2oWo3oKo4oCo5o=o6 šo7o:o8 š šo9 š šo;o< š š o> š šo?o@oBoA š š š šoDoEoJoF š šoGoH š šoI š š oLoT šoMoNoQ šoO šoP š šoRoS š šoUoV š šoXomoYok šoZ o[o\ š šo]o^ šo_oeo` š šoaoboc š od š šof šogohoi š oj š šol š on šoo šop š š oroosooto}ou ov šowox šoy šoz š šo{o| š šo~ š šoo šo šo šo šo šo šo šo šo š 5 š šoooo šo šo šo šo šo š šo 5 šoo šo š A A šooooo šo š A šoo šoo š X šo šooooo š š Ao šo š A šo šooo šo šo š š Ao š š Aooo šoo šo šo c šo š c šo 5o šo šo šo š šo š 5opop"ooooooo oo o o o o oo  o šo šo š šo š <oo šo š coooo šo šo šo šoo š šo š o Ao Ao Ao Ao A Aoo Ao Aoo A R R Aoooo š <o šo šo š šoo š 5 šo šo šo šo š šo šo šo š ( coopoo š ?p�p špp šp šp šp š šp < š špp šp šp š šp šp š (pp cpp c cpp cp cp cp c 5 cp š šp šp špp šp š šp špp š šp! šp#p|p$pxp%pTp&p' < ?p(pM 5pp)p*pAp+p9p,p2p-p/ 5pp. 5p  5pp0 5pp1 5p p3p6 5pp4p5 5p 5p p7 5p 5pp8  5pp:p>p; 5pp< 5p 5pp=  5pp? 5p 5pp@  5ppB 5ppCpJpDpG 5ppE 5ppF  5ppH 5ppI   5ppK 5ppL 5p 5p pN 5p 5ppOpP 5p 5ppQ 5ppRpS 5p  5ppUpjpVp` pWpX pY < <pZ <p[p\ < <p] <p^p_ < < papb pc pd pepf pg ph pi < pk plpr pm pn po pppq k ps pt pu pvpw c cpy pzp{ š p} šp~ppp <p <p < 5appp š < šp < < š š <pppppp špp šp pp c c šppppppp šp šp šp šp špp šp š šp š šp š špp š špp šp šp šp š špp š š pppp šp š šp šp š šp šp šp š pppp š <p š A šp  šppp šp š cp š š c špppppp šp š šp š Appppp šp š šp špp šp š šppp š k kp k š š kp <p <p š šp šppp š < < šp šp šp šppp p š špp šp š šppp š R Rp R š R špqppp š šp šp šp šp špppp š � šp š š šppqpq7pq <pq�q <q <qqqq < <qq <q < < <q <q q < <q <q < <qq <q <q <q <q < <q <q <q > <qq6qq( šqq šq šq šqq" šq q! š  šq#q&q$ š šq% š q' š š q) q*q0q+ šq, šq- š šq.q/ š š cq1 š šq2q3 šq4 šq5 š š k cq8qgq9q^q:qJq;qCq< š šq=q> šq? š šq@qA šqB š ( š šqD šqE šqFqG šqH šqI š šqKqL > šqMqXqNqS šqOqP š šqQqR š š HqT šqU šqV š šqW š HqY šqZ šq[ š šq\q] š š q_q` qaqb qcqd qe qf <qhqqiqq šqj šqkql šqm šqn šqo šqp š š šqrqsqyqt šqu šqv š šqwqx š šqzq (q{q|qq} q~  šq š  q q  šq (q ( (q (q ( q > cq cqq cq cq cq cq c c 5Rqqqq <qq q ? q qq q q q q q  qqq š šqq šq š šqqqqq šq šq š ( šq šq š (q šq šq š ( š šq šqq šq šq šq š šq šqq š šqreqqqqqqqq qq šq š š Aq šq šq šq šq šqqq š šqq š šqqq š 5p 5pq 5p šq šq š 5p šq šq šq šqqqq šq š <q š šqq š š < šq < šqqqqq šq š k šqqq š šq šq š qq šqq šq šq šq š š šqqqq cqq š < š c < šqq šq š š (r�r>rrrr šrrrr < š < <r <r š <r šr šr r šr š Br šr šr š šr šrr š B šrr-rr!rr šrr šr r r šrr š  š  šr"r# š šr$r% š šr& šr' šr( šr) šr* šr+ šr,  šr.r8r/ šr0 šr1r7r2 šr3 šr4 š šr5r6 š 5 š š 5r9 cr:r<r; š c šr= š š cr?rWr@rD šrArB krC k š k šrErF šrG šrHrN šrIrJ šrK šrL šrM š šrO šrP š šrQ šrR šrS šrTrU š šrV š ? šrX šrY šrZr[ šr\ šr] šr^ šr_ šr` šra š šrb šrcrd š š rf šrgrrhrrirxrjrmrk š šrl < šrn šrorvrp šrq šrr šrs šrt š šru š rw š š ry šrz š šr{r| šr} š šr~r š šrr š šrrrrr šrr šrr šr šr šr š šr  šr š šrr š šrr šr šr šr š šr  šr rr r r r r r < r šr š šrr š š <rrr šrr k (rr  cr crr cr c crr cr c  crrrrr š šrr šrr šrr š šrr š šrr šr šrr š š r š šr šr šrr šrr šr š šrrrr š šr š A šrr š š Ar šr šr šr šr šr šr š c š rr šr šrr šr < š šr < šrsrs šrrrrrr šr šr šr šr šrr šr šr šr š šrr šr š šr š šrrrrr š š <u šrr š šs� šs š s s šsss š šs šss šs šs ss šs š >  šs šs @'s šs šs š šss,ss+s šss s š šs šs šs šss š � š šs! šs"s# šs$s( šs%s&s' š ( š s) šs* š š ̀s- šs.s4s/s2s0 šs1 š š :s3 š s5 šs6 šs7 šs8 šs9 šs: šs; šs< šs= š šs>s? šs@ š ( šsBssCssDsc šsEsF ksG šsH šsIsVsJ <sK <sL <sM <sN < <sOsP <sQ <sR < <sSsT <sU < B < <sWsX <sY šsZ šs[ š šs\s] šs^ šs_ šs` šsa š šsb š <sdsse šsfszsgstshsmsi šsj š sksl š šsn šso šspsr šsq š ( šss ( su šsv šsw šsx šsy š 5 šs{s šs|s} šs~ šs šs šs šs šs šs š š c šssssss < <s < š <ss < < š <s š <s šs šs š A šs šs š š ssssss š à 5 š šss š I ststs šsssssss sss s ss ss s s ss 8s s s s s s 8s ss ss s ss s 8 sss s ss s s s 8 s s 8 s ssss ss ss ss s s s s ss ss s 8 ss ss s s s sss s s s s s s 8s s s s s ss 8 8 st sts s st� t 8 tt t t tt 8t t t t tt tt t t t t 8 š  štt štt't ïttt&tt! üt łt łt"t$t# t% 7� ï t( xt)t+ st* r Zt,t- ï st/tt0tt1tYt2t< št3t4 š št5 št6t7 št8 št9 š št:t; š < š št= št>t?tGt@tE štAtBtC R\ < ktD < c tF < >tHtP ktItJtLtK <  š štM HtN HtO H štQtTtR štS š š <tU š štV ctW štX < štZt\ št[ š št]t^ št_ 5t`tyta štb štctn štd štetf štg š šth šti štjtk štl š štm š 5to š štptq štr š šts štt štutv š štw štx š 5tzt št{ št| št} št~t š št št štt š št št št 5 št š št št št štt št št š št štt št š š 5ttttt š štt š šttt štt št št št št št š št  š št štttt š štt št š š  štt št št š št š  štt štt štttt š  št ( t št š <tt štt c ( š Atttt št št š š ؠt 5 B št štt 5 š ktttttt št štt štt < c š št št štt šttt c š c št <t < <t < št št <t š <tt š štt š št št št št št št št štu+tutt št š tu t štut št šttt <t <t < < šu� < <u <u š <u š šuuu u k kuu š k š k šu šu šuu šuu šu š c š 5u D <uu šu šuu šu šu šu š <uuu <u < š š <u!u" š ҉ šu# šu$u% š šu& šu'u( šu) šu* š � šu,u}u-uOu.uEu/ šu0u>u1u8u2 du3 d šu4u5u7 šu6 š š d du9 du:u; u< du= d š du? du@ d duAuB d duCuD d d š šuFuGuL šuH šuIuJ š šuK š šuMuN š š uP š šuQuRu[uS šuT šuU š šuVuWuYuX š š šuZ š  šu\u] š šu^u_ur šu` šuaubujuc šud šue šuf šug šuh šui š šuk šul šum šun šuo šup šuq š šus šut šuu šuv šuw šux šuy šuz šu{ šu| š š šu~ šuu šuuuuuuuu  ï G u  7uuuu uuuuu ( š (uu   š ` Vu ׭ ï u ï uuu ï uuuuuuuuuuu š šuuuuuu BD u "uu BDuuu u u uu uu u uu u BD u u BD J DLuu s  7 =uuuu šuu š šuu š šu šuu š  š š su š ƨ šuuuuuu = š  8u š šuuuu š u uu uuuuu ï Z suu ï ï u 7uu ïu u uuu Y 4? E u š Ʒ uuuu šu šu š =uu šu =u š šu u u = uw*uw!uv uuu šuu šuv šv� švv šv š š �v švv šv š  šv v v v G шv vvvvWvvJvv5vv,vvv Zv Z Zv Zv Zv Zvv& Zvv Zv Zv Zv v" Zv! Zv# Zv$ Z Zv% Z 4{ Zv'v( Zv) Zv* Zv+ Z ; Z Zv-v. Zv/ Zv0 Zv1v4 Zv2 Zv3 Z Y  Zv6v=v7 Zv8 Z Zv9 Zv: Zv; Zv< Z v> Zv?vD Zv@vA ZvB ZvC Z  Z ZvEvF ZvG ZvH Z ZvI Z h ZvKvL Z ZvMvN Z ZvOvP ZvQ ZvR Z ZvSvT Z ZvU ZvV h ZvXvevY ZvZ Zv[ Z Zv\v] Zv^ Z Zv_v` Z Zva Zvb Zvcvd Z Z ?vfvvgvvh Zvivr Zvj Zvkvl Z Zvmvn Zvo Zvp Zvq Z Z ,vsv{vt Z Zvuvvvy Zvw Zvx h Zvz Z Z  Zv|v} Z Zv~ Zvv Z Z vvvv Zv Zv Zv Z v Zv Zv Z Z v Z Zvv Z Zvv Zv Z Zv Z ޕvv Zvvvv Z Zv Zv Zv 4{ Zvv Zv Y Zv Zvv Z v Z Z  Zv Zv Zv Zv Zvv Z Z vvvvvvvvv Zv Zv Z Z vvvvv Zvv Zv Zvv Zv Z Z Zv Zvv Zv Z Z w Zv Zv Zvv Z Zvv Zvv Zv Z  v  Z Zvv Z Zv Zv Z Yvvvv Zv Zv Zv Zv Zv Z  Zvv Zv Z Zvv Z Zvv Z , Zvvv Zv Z Zv Zvv Zv Zv Zv Z Zv Zvv Zvv Z Zv Zvv Zv Zv Z Zv Y Zv Z Zv Zv Zvv Zv Z , Zv Zv Z Z Zw�wwww Zww Zw Z Zw Zw Zw  Zw ww Zw Zw Zw Z Zw Zww Z Z ;w Zw Zw Z Zw ކ Z Zww Zww Zww Z Zww Z  Zw Z Zw"w'w# w$w% yw& z  w( w) w+wUw,w7w- w.w/ w0 w1 w2 w3 w4 w5 w6 w8 w9wB w:w; w< w= w> w?w@ j wA 6&wCwRwDwHwE wF wG š wI š wJ wK wLwMwO wN J IwPwQ =  wS wT wVwkwWwbwXwY wZ w[ w\ w]w^ w_ w` wa wc wd wewf wg whwi wj  wlwwmwwn wowwpw} šwqwr šwswtwxwu wv ww š wy wz w{ w| šw~ w š w š Z šw wwwww ïwwww šww ( š (w w w w  w uw Tv  rw w ï w űwww ׭w Z ïww ï ܹ wzxwx,www w w w w ww w w w w ww www www P h ww h h ww P Pwx ww ww š =wwww š ywwwwwwwwwww  t w  twwww <u =  CN wwwwww  = ~  ww ww Cy Cy I7 w  wwwwwww Cy Cyww  Cy ~w ww <u  J <uwwww w I7 w  twww w  dlw dl ww  Cy Cy w š šwwxww w w wx� J xx x hx xxx x x x J h x xxxx šx š x šx x x xx x x Oxxxx š š šx šx šx! šx" šx#x$ šx% šx& šx' š šx( x) x* x+ Bx-xx.xx/xx0xqx1xox2xg x3x4xOx5xDx6x>x7x:x8x9  C]  =x; x< CNx= Cy x?xBx@xA  xC Cy xExLxFxIxGxH  ~ xJxK =  =xM xN  xPx[xQxVxRxT xS I xU xWxYxX  Cy  xZ ~ Cyx\xbx]x_x^  x`xa  CNxcxexd   xf  xh šxi š šxjxkxl š xmxn š 5 >xp š Œ šxrxs š xtxu z š šxvxw xxxy xzx{ x| x} x~ xx x xx x x k xxxxxx š s s šx  = šx šx šxxxxxxx H š H H š šxxx š = š Zxxxx šx s š šx š xxx = š = =xx = šxx š š Dxz!xxxx šxx š š xx šx š =xx  <u =xx šxxx š  šxxx š š s šxx xy?xxx šx šxxxxxxx šx šx šx š šxx šxxx š x š š šx šxx šx š xx š  Wxx šx xx šx šx šx šx šx š  šxx xxx š šxx šx š šxx š š šxx šx šx š cx  šxy xyxxxx šx š xx š šxxx š šxy� š : šyyyy y �y š � y :y yy yy šy y  š  šyyy š  :y š yyyyyy � �yy , H H y šyy4y y y*y! šy"y& šy#y$ š šy%  š šy' šy( šy) š  šy+ šy,y-y/ y.  š y0 y1y2y3  š š y5 šy6 š šy7y8y; šy9 šy: š  y<y= š y>  šy@y`yAyWyB šyCySyDyPyE š šyFyGyJ šyH šyI š yK šyL šyM š yN yO  šyQyR š : šyTyUyV š : šyX šyY š šyZy[ šy\ š šy] šy^y_ š š yay|ybyi šycydyf šye  Hygyh  š š yjywykyuylytym šyn š šyo ypyq šyr šys š š � š šyv š yxyz šyy š y{ š � šy}yy~y šyyy ky šy š šyyy šy šy š  y y y  šyy šy š � šy š y šyzyyy š šyyyyyy šyyyy šy š k šy š ky šy š š ky šy šy šy š š kyyy š šy šy šy š kyy šy šyyy š k š kyy šyyy š k š ky šyy š k š kyyyy šyyy šyy š šy c šy šy šy šyy š k š k šyyy šyy š šy š cy šyyyy šy š yy š š y šy š š yzy šyyyy šyyyyy š k š kyy š k š ky šy šyy š k š kyyyyyyyy š k š kyy š k š kyyyy š k š kyy š k š kyzyz� šy š kzz š k š kz šzz š k š kz š šz šz z šz šz š š kz šzzz šz š šzz šz šzz šz š kz š š kz š šz šz šz šzz š š z"z+z#z(z$z& šz% š Œz' š š = šz)z* š Œ z,zgz-zdz.z/ š z0 šz1zKz2z>z3z8z4z6 z5  z7  z9z<z:z; = <u z= z?zEz@zB zA  zCzD  8 zFzIzGzH CN k zJ zLzXzMzSzNzQzOzP <u  = zR  zTzV zU zW d ~zYz_zZz\z[  z]z^ šz`zbza zc zezf š šzhzvzizj šzkzl 7zm 7zn 7zo 7zp 7zqztzrzs ~ i  Kzu 7 � šzw Ʒ zy|zzzz{ sz| sz} sz~ szzz sz s < Gz s s z|3 szz sz sz sz sz{0zzzzzz :zzzzz :z :zz : :zz : : azz :z :zz : :z : az : :zz :z :z : G :zzzzz : :z :z :zz : a : :z :zz :zz :z : az : :zz :zzz :z : : z :z :z : : Gz :z :z : :z :z : azzzzz :z : :z :z :zz : :z :z :z :z : az :z : :z :zz :z :z : :z :z :z : [z : :zzz :zz : : az :z : : az{z{z :zzzz :z :z :z :z a :z :z :z : :zz : :z :z :z :z :z :zzz : a : :z :zz :{� : :{{ :{{ : :{ :{ : a{{{ : :{ :{ :{ :{ :{ : :{{ : :{{ :{ : a :{{ :{{ : :{{ :{ : :{ : a :{{{' :{ :{! :{" :{# :{$ :{%{& : : {( :{) :{* : :{+{, :{-{. a : :{/ : {1{ :{2{3{t{4{K{5{C{6{; :{7 :{8 :{9{: : : a{< :{= :{>{@ :{? : a{A :{B : a :{D :{E : :{F :{G{H : :{I :{J a :{L{l{M{Y :{N{O{V{P{T :{Q{R : :{S : :{U a : :{W :{X : G{Z{k{[{` :{\ :{] :{^ :{_ :{a{e{b :{c : {d :{f :{g{i :{h : {j : : :{m{n : :{o{p : :{q{r : :{s a :{u{{v{|{w : :{x :{y :{z{{ : : a{}{{~ :{ :{ :{{ : :{ : :{{ : :{{ : :{ : a{{{{{{ :{{ : :{{ : : :{{{{ :{ : G{ :{{{ : :{ : :{ :{ :{{{ : :{{ : :{ :{ :{ :{ : :{{ :{ :{ : :{ ^ : :{{ :{{{{{{{ :{ : : :{{ : : :{ :{ :{ :{ :{ : :{{ : :{|{{{{ :{{{{ :{ :{ : :{ :{ :{ :{ : :{{{{ : :{{ : [{ :{ :{{ : a :{ :{ :{ : :{ :{ :{{ : :{ a :{{{{{ : :{{{ :{{ : : a{ :{ :{ :{ : a :{ :{{ :{ :{{ : a :{ : :{ :{ :{{ : _ :{|{|{ :|� : :| :| :| :| :| :| : a||| || : :| | : :| : :|| :| :| : :| : :| [ :| :| : :| :|| : :| :| : G||) :| :|!|" : :|# :|$|% :|& :|' :|( : : s :|* :|+ :|, :|-|. : :|/ :|0|1 :|2 : a :|4|z|5|m s|6|7 š s|8|9|T|:|F|;|A|<|> š|= |?|@ š š |B|D|C š š ( š|E š |G|M|H|J š|I : >|K|L H : |N|Q|O|P š :|R|S  š c |U|a|V|[|W|Z|X|Y š < š �|\|_|]|^ š A š |` š š|b|f š|c|d|e š  |g|j|h|i : A 5|k|l k 5 š |n š|o|w|p |q š|r š š|s |t |u|v š|x š|y š |{||| š š|} š|~ X H||| š  š š| š|| Z| Z| Z| Z| Z| Z| Z| Z Z|| Z| Z Z|| Z| Z Z| Z ,|||||||||||| š =|| š š|| š š ƨ| š|| š š|| š|||| š|| š š|| š š |||||| :| š k š š|| š š | š| š| š š | š|| š| š||| š < š 5p||||| š š (|| š  A š|| š| š c š| š k||| š š| | š|| š š| š| š ||| š š || Œ y d š|| š||| š| š|| d ҉ š Ʈ|||||| š Œ = š|| š < ||||  š š y| š š |}|}�| š| š| š || š š| š| š| š|| š| š B š}}}} š}} š <u} š š} d} d} d} m} }} }} 4} Ʈ} Ʈ } # Ʈ  Ʈ} Ʈ H Ʈ}}p}}*} } } } } } } } } }! }" }#}$ }% }& }' }( }) `}+}, `}-}N}.}G}/}A}0 }1}5 }2 }3 }4 K 4?}6}=}7}:}8}9 4? Y X};}< 7 YB X}>}@}? X X X K }B ï ï}C ï}D}E ï}F ï ï}H}I  ű}J}M}K}L ̀ Œ ˘ ە}O}[}P}V x}Q x}R x}S}T x}U S }W x}X x}Y x}Z x x}\}l}]}a}^ ̀}_ x}` x }b}c  ï}d}g š}e š}f A}h}j š}i š < š}k š A }m}n}o r ï `}q}r}}s}}t}}u }v}}w}}x}}y s Œ}z Œ}{ Œ}|}} Œ Œ}~ Œ} Œ 4l}  Ʒ} 7 Ʒ}}} ƙ} ƙ ƙ}} ƙ ƙ 6} ï} W W} W} W} W}} W W}} W w W} O }}} } Ʒ}}}}} c   H} š 5 š} y  r ƨ x} ҉} Ñ}}}}}}}} y }}}} Œ Œ} Œ} Œ} Œ} Œ 4l}} Œ} Œ} Œ} Œ} M Œ} Œ} Œ} Œ} Œ Œ M} } }} 65 ï}}} V ï } }} Œ}} V x} V }[}}}&}~T}}} š} š} š} š H š}~.}~*}~#} š} š}} š }}}}}} }} }  }} # d}} h h ̓}}} b }}}} P } }  }~ }~�}} }}} ̓ }}} # #} # ~~~ ~ ~~~ I I~ b I b~ ~~ ~~ ~~ ~ b ~ ~~~ ~ ~~~~~~ dz dz ~  ~~!~~ b b ~" b~$ š~%~( š~& š~' I š~) š š ~+ š~, š š~- š~/~2 š~0~1 š  š ~3 š~4~5 š~6 š~7~C š~8~9 š š~: š~;~< š~= c~> š~? š š~@ š~A š~B D š š~D~E š š~F š~G~H š ~I~J ~K  ~L ~M~N~Q ~O ~P  š š~R š~S š ~U~~V~l~W~e~X~c~Y~[ š~Z y š G~\~]~`~^~_ � A ~a~b � , š š~d š ~f~i~g~h š i l š~j~k = Z š~m~s~n~q~o~p š Z š =~r š H š~t~~u~ ~v~w~~x~~y~~z~}~{~| ߡ  . `~~~ ˘  ~~~~ ƨ V `~~ Ʒ ~~~~~~ s r ~~   ł ~~~~ Z ï~~ Z z 8 ~~~~~~~~ ƙ ï Z~~ Z ` V~~~~~ ~~ V ƙ 54 K Z~~ y Z~~~~~~ ~~ ~ ~~ ~ ~ ~ ~ ~  ~~~ ~ ï ~~~~ š ~~ ~ ł~ 7� ł y =~~ H y y i~~~~~~  š = ~ š~~~~~~~~~ ~~~ I~~ ~~ # ~~~ ~ I~~~~~ ~ ~ ~~~ ~ ~~ I ~~~~~ ~ ~ I ~ ~ ~ ~ ~ ~� #           #  ї  ї \M ї ї ї ї ї ї ї š!$"# ї š i š% Cy š'B(<)0 š*+.,- š š l š/ š 1724 š3 š =56 š  š8:9 š 7 <u; š mT š= š>A š?@ H š H lCD šEF šG šHIaJXK šLPM š šNO š š 5QT šR šS ( +U šVW @'  š  šYZ][\  ( c^ š :_ :` A šbwcodh šefg : ( iljk > > šmn � š špsq š šr š + štuv š > > šxy~z{ š |} c �  �  š � š š   > š  A H > š š 5 š š š š š š D š ( š š > < A š k c k š š š š š š š š š š ( š š c š š A H š š < š š H H          H H š š š š Z l m4 l l H H mD H  š š š š š š < š š š š š š y š š š Ʒ š š š š š š y š š š š š š� š A š š š š A š š A n š š   š Œ šg F8&"  L L L L L L L L L L ! L Q L Ʒ#$ Ʒ% Ʒ ' 9 (),*+ tI 6-. V 6/ tI 0 1 2 3 4 567 6 6 9A: ; <> = ; 6&?@ 65  8 ZB C D E ; jGe < HIVJQKNLM j 6 ցOP  ׁ ;)RTS ; XU M )W\ sXY =Z ; [ o ]^a_`  65 X 8bc 6& j d 5 ʵf Z šh i j ҉kl  m o}pxqv rs t u 6& w š y{ šz š = | y <u~  š š Œ Œ Œ Œ Œ Œ Œ Œ š          Ӑ        Ӑ            G         cg I~AA* š [ \= ї \ [ [ \ [ [- ї \= š š  š š   š š  š š š š  š  c š š < š š  š c š š š š š š š š š š   �  š š c š š š š š š š š š š š š š š  4& š š š š š š š  š$ š! š" š š# š% š š' š(.) š* š+ š, š- š š / š0 š1 c2 š3 š š 5 6789:;<q=Z>G?B Tg@A th Tv o5CED w th TvF u o o5HPIL o5J TK Tv o5MO TvN Tg tI Tg xQVRT xS y tI uU N TWX Tv x: tIY t: o5[h\a]_^ o5 o5 T `  o5bec Tvd  o5 thf o5g u tI T o5ijnk o5lm T T x: Tg op   yrst{uxvw  u  tIy Tz o u ||}~ o5   N  Tg  o5 u T  tI  u o5  T   o5  o5 o5  u }3  tI Tg T o5 }3 u  u tI | Tv u | x:  o5 o5 T Tg o5  u  tI tI Tg tI y pw N  o5   Tg   o5 sP  u Tg  o N th u u Tg o5 th u tI T tI Tg o5 Tg N u o5  o5 tI T o5 u T tI o5 Tv Tv Tv   T T N T N Tg  tI o5 th th u th t o5 }3  Tg Tg o5 Tv Tg Tg o5 u  Tg N T o5  u� tI o5 tI u  tI th u tI Tg o5   T th T Tg  o5 xg o5 }3 th  o5 o8# Tg tI o5 N Tg tI T Tv tI o5! tI" N tI N$, o5%&+') o5( Tg N* N th Tg o5 tI-0 N. N/ tI T152 N34 N o5 }3 N6 o5 tI7 th Tg9W:H;A<>= N N |?@ th o5 o5 BFCED } Tg o5 o5 G T Tv NIPJM TgKL u u Tg NN O tI NQURTS o5 o5 N o5 NV T o5 TvXiYaZ^[\ o  T] u th_` o5 N Tg o5be Nc o5d th ufh ug N u T uj Tkm Tl } o5 Tn o5 pqr~s|tyuw Tv | th thx th u xIz{ tI Tg T } o5 N tI o5 o5 T T x: N t: o5 tI u  o5 T } u th } th T th  T u  u o5 o5 u T tI o5 o5 Tg o5  }  Tg  Tg o  tI T o5  T tI o5 o5 th o5 o5 o5  Tv o5 o5 tI   pw  o5 u  o Tg  th o5 th  tI   Tv  o5 tI Tg  | } o5  tI o5 o5 o o5 o5 T  N tIL U- T  o5  o5 | o5 | | o5 u o5 o5 | T tI o5 o5 o5 xu o5 T o5 o5 T tI o5 t: t: N� o5 } N o5 tI tI Tg   o5 x: T tI Tg o5 tI o5 o T o5 th u o5 u | T o5 tI tI u tI o5 x: x: u2 *! u"&#$ T o5% o5 o5 Tv')( o5 | u o5 x Tg+,0-. tI o5/ u o5 tI1 o5 u o53@4956 pw o578 u T th T:=;< T Tv Tv o5 o5>? o5 tI o5AFBD o5C T o5 o5E o5 tIGJH N TI tI o5 TgK o5 TvMNgOZPXQTRS o5  u o5UV T ~GW T T tIY tI N o5[b\_] tI^ tI tI o5`a  tI T o5ce tId o5 tI Tgf u pwhzisjmkl tI T }3 Tnp uo T Nqr N Tg Tg Tvtx tIuvw tI T tI o o5y }3 tI{|~} tI tI } tI t: o  o5 T o5 Tv Tv Tg tI tI tI u tI o5 o5 tI o5 u o5 u u o5 u tI o5 Tv o5 Tv tI tI o5  o5 u u  u o5 T u T T o5 tI th u tI tI o5 tI o5 Tg o5 tI Tg T o5 tI o5 o5 o5 o5 o5 o5 th o5 o5 o5 o5 o5 o5 th th o5 o5 o5 o5 o5 o5 o5 tI o5V o5 o5 o5 o5 o5 o5 th o5 o5 o5 o5 o5 o5 th o5 th o5 th o5 th o5 o5 o5 o5 o5 o5 o5 th o5 o5 o5 x: Tg o5 }3 T o5 tI o5 T } tI tI  tI� } o5 N Tg o5 Tv    tI u Tg tI o5 tI o5 o5 o5 th o5 u T o5 tI o5 o5 tI o5 tI Tg o5 o5 Tv o5 tI tI o5 <!,"&#$ o5 Tg o5% Tg tI')( u tI o5 o5* tI+ p9 ^-3.0/ u o5 u Tg12 }3 tI o54856 o5 }37 o5 y o59: o5 u; tI th Tv=H>@? tI N o5AEBDC tI o5 tI u tIFG tI T T IPJK tI o5LN o5M y tI TO x o5QS o5R u o5T tI o5U u o5W XYZr[e\a]_^  t: u` Tg w }b Tvcd T o tI Tgfmgj tIh ui o5 Nkl o5 tI x o5no T x:pq } Tg x o5syt tIu o5v o5wx o5 tI o5 o5z{~|} tI ~) x: o5 u o5 tI o5 Tg tI o5 tI pw pw o5 o5 u o5 }3 tI o5 o5 u N N o5 u T o5 Tv T o5 T th o5 T Tg tI o5 o5 o5 T N u Tg o5 N o5 x: N o5  o5 Tg o5 tI o5 o5 o5 T Tg Tg u u Tg Tg T o5 T o5 u o5 o5 }3 ^ u Tg o5 x o5 T o5 x T T u o5 T Tg o5 o5  o5 o5 u  o5 T T o5 Tg o5 x: o5 T o5 o5 Tv o5 Tg tI o5 tI o5 u x o5 u tI tI o5 u� tI o5 Tg o5 o5 o5 Tg u u o5 T T t+ pw pw u u u o5 y o5 T  o5 T tI o5 tI hB(   o5  o5 tI o5 N tI th  u! o5  tI tI o5 tI"$ }# u tI%& Tg tI }' T Tg)4*-+ tI, tI o5 tI.2/ u01 Tv o | 3 u Tv Tg5>6<798 Tv Tv :; tI o5 o5 Tv= o5 o o5?A o5@ tI u o5 tI o5CDVELFG tI o5HI T o5JK  o5 o5 tIMQNPO T x Tg o5 uRTS o N o5U o5 Tg TWaX\Y[Z tI o5 x: tI th]_ T^ x: u` N tI o5bfcd o5 tI tIe T ug Tv }3 o5ijkwlsmon  o5 tIpq ~G o5r }3 Tv o5t tIuv } Tv Tg }xy}z| o5{ o N o5 o5~ o5 x th o5 o5 Tg o5 o5 o5 ^ T N Tg tI tI o5 tI o5 o5 u N o5 T o5 o5 tI o5 tI tI o5 o5 o5 T T Tv o5 Tv Tg tI tI Tg o5 o5 o5 u o5 o5 Tv pw } Tg th o5 o5 tI o5 o5 o5 Tg t: o5 tI o5 tI x: Tg o5 tI T N o5 t: t: o5 o5 o5 T tI Tg o5 tI o5 o5 th o5 tI x o5 tI tI tI tI tI tI tI u tI tI tI u tI u tI tI tI tI tI tI tI }3 tI o5 o5 o5 o5 o5  o5 o5 T } N tI T u u o5 t: � N T t: tI  o5 tI tI o o T o5 tI Tg o5 Tg tI o5 Tx6 tI tI o5 tI T o tI tI u u o5 tI T tI -!'"&#% T$ Tg tI tI u u tI(* T) u tI+ tI o5, tI o5.1 tI/0 tI tI Tg tI235 tI4 o5 tI T tI7Z8G9@:=;< o5 tI tI o5 tI>? v+ o5  o5ABD o5C u o5EF T }3 | THRINJL TK T tIM T o5 }3OP T uQ N T tISWTVU | o5 tI u |X u tIY tI T[p\g]c^`_ tI tI Tab u T T ode t: o5 tIf o5 t:hki Tgj T tI t:lnm tI o5 t:o tI T t:qwrt o5s t: tIu tIv tI w tI sP t:yz{|}~ o5 tI o5 o5 o5 tI tI y tI ; tI Tg Tg o N o5 tI o5 Tg tI T tI T T tI Tg o5 u u tI Tg N tI tI th T tI t: tI t: tI tI o5 tI T tI o5 tI tI tI tI th tI tI Tg o tI xg T u o5 o5 tI u u tI N u t: u u o5 T tI tI th N Tg tI T o5 tI Tv o5 tI tI tI }3 tI T tI o5 o5 T T tI tI T T tI o5 tI tI tI u th tI th u o5 th th tI th)           u        u  �     u   u      u        u    u     u#     u  !"  u $ % &( ' u   u o5 +,-./+01w2U3F4<596 4N7 ї 8 ї: d; =@> š? 4 A BC їD E GNHKI beJ L M ї ORP Q S T ї _ їVfW^X[Y Z ї ї\ C?] ї ї_b` bea š šc bede 4 gphli šjk   >mon   beqtr s ї m їu bev m xyz{~| } ї m ї be  @  be ї m ї  m  , 6  be 6  5 be š be be  š be 5 ;   < ї  5  be < ї K \  be \  be PP  [ ї       ї        ї   ˋ \  š \   k    š 4  y ї k ї š  d ї k ї be 4   k    be :   4  be� :  be ї ї ї k   ї  ї  š ]=  be be be š be š be d be be be ! be š be be" š#$ š š% š&' š( š) š* š š ,\-L.8/402 š1 š d3 be š be be567 ї ї bV9< š:; be be š=A > ? @ š BKC šD bVE bVF bVG bVH bVI bVJ bV be bV be šMVNR šOPQ š š be šSTU be š 'W X[YZ š >  I š]v^i_d`b bea : c c T cehfg š ł be šjpkml š š beno š š beqsr be be štu WD be š Iwxy|z{ š be be ł}~ ł be š  š be  _ š š  š be ї be š Z š be ї ї ї ї ї ї be ї ї ї be be ї be š š š š  š š š š š š ? š š š š š š c š D D D < š š š š š š š š š š : : : š : š š š š š š š š š š  š š š š š š D š š š  š š š > > > >  š � š š š š š š š š š < š š š š š   š  š š  š  š š š š š š š  š š š š š ,( š š š š š š š š š š š" š š š ! š R R š# š$ š š%&' š R R š) š* š š+ š <-;. š š/0 š16 š23 š4 š š5 < š š7 8 9: š  š< š= š> š š? @ šBCXDGEF šHP šIJ šK š šLM šN š šO š Q šR šS šT šU šV šW š  šYZh š[\ š]c^ š_ š` šab š B B šd še šf šg š š ciujpk šl šm šn šo š ? šq šrs š 5t š švwx}y šz š{ < š| < š~ š š š c š š š š š > š > š š H š š š š š š š š H H H š š š H š š š š š š š š š c š š š š A š š š š š š š š A A A š š < š š < š š š š š c š š š š R š š š š š š š  š š ( š š š š š ( š c š š š c š š š š š š ( < < š < š š š š š  š š š A š š A š š š š š š  š š š š� š  š š š š  š š    š < <  < < š š š  š š š š š š A š A š oU' š ! š" š# š$ <%& š < < š(2)- <* <+, < š < <. </0 <1 < < š3H4B š5687 š  š9 š š: š;< š= š> š? š@ š šA B šCED  šF šG š  šI šJ š šKL š šMN š šO šP šQR šS šT š > šV_ šWX^Y šZ š š[ š\] š š š š`a šbkchdf še c š cg c <i šj š > @'l šmn š c c špqzr šs št šu šv šw šx šy c š c š{| š}~ š š  š š š š   š   š š š   š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  š š  š š š š š š ? š š š š š š š š š š š š š š > š š š š š š c š š š š š š š < š š š š \ š š š š š š š š š š š š š š š c š š š š š š š š š š š š š š c š š� š š š š š < < < š  e +  š š š š š A š š k š š š š c š" š < < < ! š < š# š$ š%(& š š' š k) k* š k š,=-;. š/6031 > š2 š > >4 >5 > š7 š8:9 š > š > š< š A š š>? @YALB š šC šDE šF šG š šH šIJ šK š š MN š IOXP IQ I IRS I ITU IV IW I I š IZ š š[ š\ š]^ š š_ š` šab šc š šd šfpgnh im <j <kl š < š š < šo < šqrx šst š šuv Iw I I š šyz{ (| (} (~ ( ( ( ( 5 ? c A ʗ ( B 5 B& (  ( 5  A A š ( š š š ( š š š š š š š š  š š š š š   š A š š š š š < š š š š š š š ű š š š < š < š < š š k k š š k < < < š < š š  š š š š  š š š � š š š � ( š ( A k (  š ( ( 5  š š š ( < š < š < < < < � š š š š š š š B5 š B5 š š < š+  š š   < < < š < š š š š š š  š š š š" š š š! š k š#&$ <% < š < <'( < <) š* < š,>- š.9/40 <1 <23 š < < š <56 <78 š < < š: š; š< š š= š ? š@ š < šBCDEFkGU šHIK šJ A šL š šMN BOSP B BQR š š B šT š BV [WjX^Y\Z[ ї [ \M ї [ ] Z \}_e`c _\a _\b _\ % їd ^ fig їh ^  ^ [ ^< ї l xmx [nor їpq ї [ ]}svtu [ d [ ]w \ ї [y|z{ \} ї ^< ї} ї~ ї [ \ ^l ^l $ \= [- \M ї \] _ Z [- ї _ Z ї [ \ [ \ ї Z [ [ ^ ;8 ї \ ї \ ї ]= \m _< ї ї ї ї ї 9 [ [ \M [ Z [- [ ї ї I [- \ \ Z ^L d [ ї e e ї ї Y e e e i ї ^L [} [- ї \} [ \ [ ї ї Z ї ї [ \ ї [} ^L 3@ ї \ _< ^L 3@ ^< y ;8 ; ^l ;8 ^l ;8 _L  [- ї ї ї ^L Z \ ^ ]m ї [ _< 3@ \ d E d ї ^L 3@ ї [- ї \� [- _\ ї ^\ ї  ї ї [ [  ї [= [ ї r ї}+m ї:'   $ #!" % & (0)-* +, . / 1624 3 5 78 9 ;T<J=C>A?@ B DGEF HI KOLNM PR Q S UcV]WZXY [\ ^`_ ab dhegf ik j l nopq|rxsvtu š O š O Ow š Oy{z š O š O š}~ š O O š O š O š O š š O O š š O O š š O O š O š O O O O š O š O š  >  > > > >  > >  > > > > > >  > >  > > > > > > >   > > > > >  O š š O O š š O š O O O š š O š š š O O š O O š š O O š O š O O š š O š O O O š š O š O � š O š O O O š O O š š O š    š O O š š O š O š O š  O O š O š š O š O š š š O!("%#$ š O š O&' O š O š) š š* O š,-z.V/A0815 O234 O š O š6 š O7 š O9>:<; š O š= O š O O?@ O O šBKCHDFE š š O šG š OI šJ š š OLRMO ON š OPQ O š O šSUT š š O š OWkXaY^Z[ O š\] O š š O_ O O` š Obhcfde š O š O Og O šij O š š Olo šm šn O špuqsr O š Ot š O švxw O š O Oy O š{|}~ š š š O O O š O O š O O š š O š O š O š O š š O š O š š O š O š O O O š O š š O O š š š O š O O O š š š O O O š š š O š š O O O š O š O š O š O O O š O) O  O  O s  ;  ; O O š O ; 3 3 k O š O š O 3 š O O š O š O š O O š š O š š š O O š O š O š O š �           >      ># !" $&% '( > *Z+C,8-2.0 O/ O š O1 O š3645 š O š O š7 š O9>:< š; š O O= š O?A@ O š O OB š ODPEJFH šG O šI O O šKNLM O š O šO š O šQVRT šS O š šU O šWYX O š O O š[o\c]`^ O O_ O šab O š O šdjehfg š O š Oi š O škml š š O On š Opzqvrt Os š Ou O O šw Oxy š O š O{ O|}~ O š š O O š š O H O  š O O š O O š O š O O š O O š O O š O O š O š O O O š š O O š O š O O š O š O š š š O O š > >  > >  > >  > >  > > >   > >  > > > > >  > > > > > >  O O O š O O š š O O š A  5R  >  �  : R H ( {  7 5 E T ʗ  c R r   A  š  O š O š O š O1$  O š V O š O O!"# O š O š%+&)'( š O š O š* š O,. š- š O/0 š O š O2=37465 O O š š O8:9 O š O;< š O O š>C?@ O šAB š O š ODE š OFG š O š OIJKcLXMRNQOP š ; š OSVTU 3 3 šW O šY]Z[ \ ^a_` b dpejfhg O C? O Oi š Oknlm š O O š Oo O šqvrts O C? O Ou š O Owxy O C?z O O{ O| O}~ O O O O O  C] C]  C] C] C] C] C]  C]  C]  C] C] C]  7 O š O O O O š O š š O O O  O O O O š O O                           �     b 5       >   >  !."(#&$% ' ),*+ - / 021 34 > >6L7B8=9;: < >@? A CHDF E G IJK >MZNTORPQ S UXVW Y >[^ \ ] > _` a cdeqfkgi h j >lomn p rxsu t >vw > y|z{ }~ > ͬ   >    >  > > >  >     >    > >  >  > >    >      > ( š O š O O š O O š š O š š O š O O š š O š O O š O š š O O š O š O š O O O O š O š O š O š� O š O š š O O š  š š O š O O š   O š O O š š O O š O š O O š O O O š#  š O š O!" š O O š$& š% š O š' O š)Q*=+3,/- š. š O š01 š O O2 š O475 O O6 š O8:9 š O š;< O š O š>F?A š@ š OBDC O š O OE O šGKHJI š š O O šLOMN š O O šP O š ORgS^TYUXVW š O O š š OZ\[ š O š O] š O_b` Oa O O šced š O šf š š Ohsinjmkl O š š O O šoq Op š Or O O štxuv š O Ow š Oy{z O O š š| š O~ O š O 7 O O O š O 7 š O O O š š O š O š O O O š O O š O O š š O O   O O O  O O O š O  O O š O  > >  > > > >  >   >  > >  > > >  > >  >  > > > > > > š O š O š O š O š O O O š O š O O O V O O š š O š O�  š š O O š O  O š O š š š O  š š O O š O O O š O O š4'  O š O O O!$"# š O %& š O O(.),*+ š O š O- O/201 O š O3 O 5C6=7:89 O š š O;< š O O š>A?@ O O B O ODJEGF O O šHI O OKNLM O O O šPQRkS^TYUWV X Z\[ ] _f`cab de gi h j lymrnpo q svtu wx z{}| ~                                                  �       c<% O O š Rk  Rk  O š O š O O š!$"# š O š O š O&0'* O() O O +-, O š./ š O O172534 O š O 6 O š O8;9: O š š O=R>E ?@B A CD FLGI H JK MPNO Q S_TYUWV X Z][\ ^ `b a de|frglhj ši š O Ok O šmpno O š O š Oq O šsxtv Ou š Ow š O šyz š O{ š š O}~ O O š O š O O O š š O š O O š š O O O O š š O š O š O O š O š š O O š O O š š š O š š O š O O š š O O š O š š O š O O š š š O O O š š O O š š š O         O O            �                 S!:"/#)$&% '( *-+, . 06132 45 7 89 ;G<B=? > @A CED # F HNIK J LM OP QR TlUaV[WYX Z \_]^ ` bgced f hkij mwnroq p sut v x{yz |~ }     ͬ >  >           >  >     >          >  }fQ+        �              O                 O #     ! " O $ % & ' ( ) * ,O->.6/ 0 1 2 3 4 5 7 8 9 : ; < = ?G@ A B C D E F O H I J K L M N P R`S] TU >V W X Y Z [ \ O ^_ ac b de gqhnikj lm o p > rwsu t v >x{yz > | >~                     O  > > > > > > > š > >     >  >  >    > >   8 O be 7 7  O š O be O š O O š O be O be O š O O O be be O š O be O O be O O š be O š be O� be O O be O be O be O š be O !    O O  be O O O be O O O  be O be O  O O ",#'$% be & O O be(*) be + O-4.1/0 be be O23 O O 5 O67 O be O 9k:Q;H<B=@>? A CFDE G IMJ KL NPO R^SYTWUV X Z\ [ ] _e`ba cd figh j lm{ntoqp rs uxvw yz |}~          ^ be  ; ;  š O O š O š O š š O O O O O O O O  O  O O O O O O O O                  -� be š š O O š O š O š O    O š O O š O O š š O O š! O š š O O O š O š š O O O š"&#$ š O% š be O'*() š O š O+, š O be O.I/<061423 O š O š O5 O š79 O8 š O:; be š š O=B>@? O O beA O š OCFDE š O O šGH š O be šJRKO OLMN š O š OP OQ O š OSZTWUV š O š beXY š O š O O[\] O š O š_`axbmchdf Oe be O Og š Oik šj O š šl O šnro Opq be š be šsut O be Ovw š O š Oyz{} | ; ~ ;  O be O O be O O O be be be O š O O š O O š O O š š O O š O O  O O O  O O  O O š O š š š O O š O š O O š š O š O O O š                           �            [ [5 \= [ ї [ ї ^L Z _\ ї! \= [ [ [ ї _<", [# \m$ [%&' [- Z() ^L ї* ї+ d \= d-1./ _< ї0 ] ї Z243 ї [ ї \= ї6T7 Z8 ]m9: [ [;I< [= [> [ [?@ [ [A [BCF [D [E [ G [H [ [J ZKPLM \M ZNO \ \M \M [=Q [=RS Z \M [- _\UVY [W [X ї [-Z [[{ [-\ \}]^r_b`a š _ _ Γc Γd Γe š šf šghl šij š šk š ` šmnp šo R šq š  šsxtvu ї  \]w _ [ ї їy Γz _ _|} 3@ ^l ]m ї Z Z ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ( ]= [ Z&]o* ї ї ї ї ї ї ї ї  ї ї ї  ї ї  ї ї  ї ї ї ї ї ї ї ї ї ї  ї ї ї ї ї ї ї ї ї  ї ї ї ї  ї ї ї ї  ї ї ї ї ї ї ї ї ї  ї ї ї ї ї ї  ї ї  8 ї ї ї ї ї  ї ї ї� ї ї ї ї   ї ї ї ї ї ї  ї ї ї ї  ї ї ї ! ї ї ї  ї ї ї"'#%$ ї& ї ї ї() ї ї+,}-Y.F/904132 576 8 :?;=< > @CAB DE GOHK I J LM N PSQ R TV U WX Zg[_\ ] ^ `ca b dfe hrimj kl nqop sxtv u w y{ z | ~                                be be be be š be š be š be be be be š be be š be be š be be be š be be š be š be š be š be š be š be be š be be be V be� be š V be be š be š be be š  be  be V be š  be š be š be š be be š be š be be be š š be š beE1 '!$ be" be# V be be% be& š be(.)+ be* be š,- be š š be/ be0 be be š28354 be š be6 be be7 š be9?:=;< š be š be be> be V@CAB V be be šD be š beF\GUHNILJK š be be š beM be šORPQ be š be šST be š be šVZW beXY š be š be[ be be š]e^a_ be be` be šb becd be š be šfig beh be be šjl bek be šmn be š be špqrstu|vy w x z { }~                                         š         be š be be š be be š be be be� be š be             jD.$!  "# %)& '( *, + - /90513 2 4 687 :?;=< > @A BC EXFK G HIJ LRMPNO Q SVTU W YbZ_[] \ ^ `a cf d e ghi klmwnsoqp r tuv x{ y z |~ }                         ї  be be e < be be š be š be be š be š be be be š be be š be be š be be š be š be be be š be š š be š š be š be V be be š be be š be V be V be š be be be V be š be� be š be š be be V be be š be be š be be be š be š be be V be 3  be be š be be š be be be š be be be š be be V be š )!&"$ be# š be% be š be' be be( be š*.+ be,- be š be š/1 be0 be š2 be be š4H5>6;79 be8 be š be: be š be<= be be š?E@BA be be šCD š be be šF be beG be šIPJ beKNLM š be be šO be be šQWRT beS š beUV š be š beX[YZ be š be š\ š š be^1_ ї`abcsdkeh befg be be bei bej belo bemn be be š bepqr š be be štzu bevx bew be šy be be š{~| be} be š be be š š be be š be š be be š š be be be š be š be š be be be š š be be be be š š be š be be be š be be š be š be š be be š be š be be be š be be be š be š be be š be be š be be š be š be be š be be š be be be š be š be š be š be be be be š be š be be be š be š š be be š be be be š be š be š be š be š be be be š be be š be be be š be?% � be t  be be š be š be   be be be š be š be š be be š be š š be be š be š be! be be š be š be"#$ > be š be&2'-( be)+ be* be š be, š be be. be/01 š be š be3;47 be5 be6 be š89 š be be: be š be<=> be š be š@iAUBMCIDGEF š be š beH be be šJL beK be š š beNQO beP be š beR beST be š be šV`W[XY š be beZ š be\^ š] š be be_ š beafbd bec š bee be be šg beh be be šjkulrmpno š be š be beq be š bes bet š bev|wzxy š be š be be{ š be}~ be š be be be š be be š be be š š be š š be be be š be                                          �                ) # !" $'%& ( *- +, .0/ 2o34|5[6F7@8=9: ;< >? AC B D E GPHL IJK MNO QVRT S U WZXY \k]f^a_ ` bdc e g hij ltmqnpo rs uy vwx z { }~                                be be be š be F be k k k   be š be š š be be be be be  be be be be be  be be  be be be   be be be š be� be š be be š be š be š   š š be š š be be be be š be be š be be š be be š be š beF0' # be! be" be š$% be š& be be V(, be)*+ be š be š-. š be be/ be š1;26354 be š be be š798 be š be be: š be<B=@>? be š š beA be š be beCDE be V be šG]HPIM beJKL be š be š beNO be be šQWRUST be š be š beV š beXZY be š be[\ be š be š^f be_`cab be š š bede š be š begjh be ši š bekm bel š ben š be špqrstuzvx w y {} | ~                                                       U,�               !'"$ # %& (* ) + ->.8/2 01 3645 7 9 :<; = ?I@FADBC E G H JOKM L N PSQR T V|WjXaY\ Z[ ]_ ^ ` bec d fhg i kxlqmo n p rust vw y z { }~                @1 š š š š š š % > > > > > > >  > > > > >  > > > > > >  >  > > > >  > > > > >  > > > > >  > > > > � > >  > > > > >   > >  > >  > >  >  >  > > > > (# > !" > > $& >% >' > > ), >* >+ >-/. > > 0 > >283 4 56 7 š 9 :; < =?> ABCnD\EQFLGJHI > : >K > > MON > > P ͬ > ͬRWSUT >V > >XY > Z[ > >]h^b_a ` > > ced >fg > > ik >j > >l m >opq~r|s > tu >v >w >x >y >z >{ > š > >} > > >  > > > > > > > > > >  > >  > > > > >  > > >  > > >  > >  > > >  > > > > > > > > > > > >  > > > > > >  > >  > > >  > >  > >  >  > > > > > >  > > > > > > > >� > > > _6  > > >   > >  > >  > >  > >  > > : D D A- '!$"# > >%& > > (* >) > +, > >.1/ > 0 >243 > >5 > 7G8C9?:=;< > > > > @BA > > >D > >E >F >HSINJLK , > M > >OQ >P >R > > TZUWV > > XY > >[] \ ^ >  >`avbmchdf e > >g > ik >j > >l >npo > > qtrs > > >u >wx|yz > { > > >}~ > > > > >  > > > > > > > >  > > >  > > >  > > > > > >  >   >  > > >  > > X6 š > > > > > > > > >  > >  > > > > > > > > >  > > >  >  >  > >  > > > > >  > >  > > > > > >  > >� > >  > > >     > >  > > >  > >  > > > > > > > >!+"(#% >$ > &' > >) >* >,2-0./ > > 1 > >345 > > 78 9:;<_=N>F? @ A B C D E G H I J K L M OWP Q R S T U V X Y Z [ \ ] ^ `qaib c d e f g h j k l m n o p rzs t u v w x y { | } ~                                                                                        �                             5$           ! " # %-& ' ( ) * + , . / 0 1 2 3 4 6G7?8 9 : ; < = > @ A B C D E F HPI J K L M N O Q R S T U V W YZ[e\`] š^ š_ š š Rk ša šb šc šd V šfgshnikj > > lm > > oqp > >r > t{uxvw > >yz > >| }~ > >  > > > > > > > > >  >  > > > > > >  > > > > > > > > > >  > > > >  > >  > > > > > > >  > >  > > > >  > > > > >  > > > >  >  > > A? >  > >  >  ,  , > >  > >  > > >  > > � > > > > > >   >  >   >  > > -  > > >  > >  > !'"%#$ > > >& > (+)* > > , > > .6 >/0312 > > 45 > >7: >8 9 >;= >< > >> >@gAUBLCFD > >E > GJHI > > >K >MP >NO > >QSR > >T > > V_W\XZ >Y > >[ >] >^ > >`dab >c > >e > f > huipjlk > > mn > o > > >qr >st > >vw}xz >y > {| > >~ > > >  > >  > > > > > š     J > > > > > > >  >  > >  > > > > A > > >  > > > > >  > > > > > > >  > >  > > > >  > > > > > > > > > > >  > > > > > > >   > > > � > >  > > > >  > > >    > > > > > > >  > > > > >8* #! > " >$'%& > > () > >+2,/-. > >01 > >354 > >67 > >9@:=; >< > > >> >? >AFBD >C > >E > G >HI > >Kr šLMdN[OUPSQR > > >T >VX >W >YZ > >\a]_^ > > >` > >b >c >ei >f >g >h > jm >kl > npo > > >q >s štuv{wyx > > >z >|} > ~ > > > > >  > > > > > > > > > > >  > > >B   > > > > > > > > > > > > > > >  > > > > > > > > > > >  > > > > >  > >  > >  > > > > > > >  > >  > > > > >  > > >  >�  >  > > > > >    > > > >  > > > > > >  > > >2' $!" š # š š% š š& š(,)* š + š š-0./ š š š1 š 3: š45867 š š 9 š;> š< š= š?A š@ š šCDEuFYGRHLI JK MPNO Q SU T V WX Zg[a\_]^ ` bd c ef hniljk m orpq st vwx{ yz |~}                                                 �         ͬ ͬ #  dz  # I # dz # !     š " # $% H'= \()3* [ [+, [- [ [./ [0 [1 [ [2 W [ Z45 Z6 Z7 Z8 Z9 Z Z:; Z< Z Z e> ]m? ]m@ ]m ]mAB ]m ]mCD ]m ]mE ]mFG ]m ]mH ]m tJKL}M šNtORPQ [= š š S šT š 6U 6VW 6X 6Y 6Z 6[ 6\ 6]i 6^_d` 6a 6 6bc 6 6 ye 6 6f 6gh 6 y 6 6jk 6lpm 6 6n 6o 6 y 6qr 6s 6 y 6uw šv Zx|y š [-z Z{ [ [ š ~ š <u š š š š š š š š š = š š š  š š š š š š š š š š š y  š š š š š  D š š š š B š š <u = š  š š š š š š A š š  š š š = š š š š š [ š š š š š š B š š š š š  š š š   D D D D D D D D  A  š [ ї š š š š 5 š š š š š š š š š š š (� š š š š  š š š š  š š š š  š š D  š š š š š šoe5 š š  š Z Ʒ    Z !*" # $'%& X ł( ł) 5+,0-. B H/ < > :132 @' ( 4 5 H 56E7@ 89?: ; š<= i > Œ  iA šBC š ҉D š šFdG šHJ ZI :j ZKXL ZM N OP Q R S T U VW ZY ZZ Z[ Z\ Z] Z^_ ` ab c š =flg šh š =i j k o5  šm šn Ʒ beptq šr šs š š šuvywx š s š = šz{ š|} š~ š š š š š š  (  H 5p c 5R 5  k š š š : > š š � š š š š š š < : š š [ š š š š  = š z š y š š š š š š š B š H š š š ƨ š š y  š   ї ї be be be be be be be be ї ї ї  š ї š š š  š š š š š š š š B ]              š s \ š� š š š         š š š  š š ʗ š H š š H š<-& #!" R R N 5$% D F'*() Rk +, F � 5p 5.5/201 ׭ ԓ34 š 6978 Ī A :; B5 > A =L>E?B@A B : =CD 8-  FIGH > A 4 XJK g r MTNQOP F HSRS š ʗ � ?UXVW H$ š AYZ A R H @ \E]^7_`abc šd še šfy ]ghl їijk [ ї [} їmvnsorpq ї $ ű ї 3 ї tu š š wx ї  ű їz{ [ ї|}~ ї ї [} d ї [ ї ї \} ї ї Z [  ] ї [ ї [ [ ї š       F š <u <u <u <u <u <u <u u s š d Ʒ Z š š š š š š š š š š š š š š š š D = š š š  Z š š d' d' d' d' d' d' d' d' B š  š š š š š š š  š š š š š ( š š š B š ї 3@ \ \ \ ї ї Z ^ [  š š  š š š š š š   š Œ = Œ y š s š� š  š <u š\R š G š š  7"  ł ł  ?   s   65  !  #* š$%& ; ' ; () ; ; +- ; , ; .1/ ; 0 ; ; 2534 ; ; 6 ; ; 89F: L ;<@=?> Xr YQ P XrAE XBCD ` Y X Xr HI š <u šJ šKL šM š šNO š šPQ š š SVT š šU š  šWX š šY šZ š[ > š]^_ š` ša lbci šd šef šg šh š š :jtkpln m š šo š q šr š s šu šv{wy šx š > šz š >| š}~ > š > š š š š š š > š š š š š š  š  š š š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š � š � š š š � š š š š š > > A  > > >  : , D @ > > > > > > > : > š š � š šl> š š� š5#  > A    , D : > @ D D    :    > A , D  : > @ D!" D : $ %1&* '() > A+.,- , D : >/0 @ D D 2 3 4 : 6 š7 š8 š9 š: š š;< š š= š š? š@A šB^CPD EI FGH > AJMKL , D : >NO @ D D Q RXSU T >VW A , DY\Z[ : > @ D] D _ ` ae bcd > Afigh , D : >jk @ D D mnvo šp šq šr š šst šu š šw~ šxy šz š š{| š} š š  š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š B š š B š š š š š š š ?  ( > < B&  ?   5p    5  H A  5 > B 5a ? c < k ʗ  5 š c 5 5R k H  5 A 5 B A A š R\ š š š š š š� š š š š š š ? ? š š š š š š > š š š š  š  š š š š š š  š š š š š N š š š ])& š ! " #  $%   '( y š Z š* š+ š, š- š š./ š š0 š1 š2 š3 š4 š5 š6 š B89 Z:B;? š<=> š  š @ šA š š 8CZDW šEF G šH š šIJRKNL M 6 s OQP ' 6 STU . <V HXY s <u  š[ [- š\] ї^_g š` šabe šcd š š šf š hiyjuk šl šm šn š šop š šqr šs š št š > švwx  ( c <z š{}| š š~ š 5 H š š š š š š š + š š š š š š š š > : A � š š � š Z"O                                 "   �                ! #:$.%*&( ' ) + ,- /4021 3 5867 9 ;F<A=? > @ BDC E GJH I KM L N PQqRdS[TW U V X YZ \_ ] ^ `ba c emfig h jl k n o p rs|twu v xz y { }~                                     y3 ї ї  ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї� ї ї  ї ї ї "    ї ї  ї ї  ї ї  ї ї  ї ї ї ї  ї ї! ї ї #*$' ї%& ї ї ( ї ї) ї +1,/-. ї ї ї0 ї ї2 ї4b5H6@7:8 ї9 ї ї;><= ї ї? ї їAEBD їC ї ї їF їG ї IVJPKML ї NO ї їQSR ї ї TU ї їW]XZ їY ї [\ ї ї^`_ ї ї їa ї cj їd їefigh ї ї ї kslpm їno ї ї їq їr їtv їu ї їwx їz{|}~      o k                                              7 s s 7�     Z     } }  ' '      ! # ї$%l&J'>(5).*,+  be š be- be š/201 š be be š34 be š š be6:798 be š be š be;< š be be= be š?F@CA beB be be š beD beE be š beG beH beI be šK^LVMSNQOP be š be šR š š be beT beU š beW[ beXYZ be š š be\] be š be š_c be` bea šb š bedhegf be š be š be beijk š be be šmnoxpsq be ber be štv beu be š šw š bey|z be{ be š be}~ š be š be š be be š be be š be š be be be š be š be š be be š be š be be š be š be be š be be š be be š be be be š be š be š be š be be š be š be š š be be š be š be š beZ k                         �          =1%    " ! #$ &,'*() + -/. 0 27 345 6 8:9 ; < >K?C @A B DEHFG IJ LUMSNQOP R T V WX Y [\|]i^e_b ї` їa ї їc їd ї f їg ї їh ї jqknl ї їm ї їop ї їrysvtu ї ї wx ї ї їz{ ї ї }~ ї ї ї  ї ї ї ї ї ї ї  ї ї ї  ї ї ї  ї ї ї  ї ї ї ї ї ї ї ї ї ї  ї ї ї ї ї ї ї ї ї ї ї  ї ї ї ї ї  ї ї ї 8 ї ї  ї ї ї ї  ї ї ї  ї  ї ї ї ї ї 8 ї ї ї ї ї  ї ї ї  ї ї  ї їR š' > >  > >� > > > > > > >   >   > >  > > > >  > > >"  > >! > > #&$% > > > (;)2*/+-, > . > > 01 > > 364 5 > 79 >8 > : ><G=B>@ ? > A >CE >D >F > > HLI JK > > MPNO > > >Q > STUnVaW\XZY š ;8 [ ]^ _` bicfde ;8 be šgh ;8 š bejl šk m = o{puqsr š š O Ot š Ovywx š O O šz š O š| O}~ O O š O O š O O š ;8 š ;8 š ;8 ;8 š ;8 ;8 š š ;8 ;8 š ;8 š ;8 ;8 š ;8 ;8 š š ;8 ;8 š ;8 š ;8 ;8 š ;8 š š ;8 ;8 ;8 š ;8 ї ;8 ;8 š š ;8 ;8 š ;8 š ;8 ;8 š ;8 š ;8 ;8 š ;8 š š ;8 š ;8 ;8 š ;8 ;8 š ;8 ;8 š ;8 š ;8 š š ;8 ;8 ;8 š š ;8 š ;8 š ;8 š š ;8 š ;8 ;8 š ;8 š š ;8 š š š ;8 ;8 ;8 š š ;8 š ;8 ;8 š š ;8 š ;8 ;8 š ;8 ;8 š ;8 ї� š ;8 š ;8 š ;8 š ;8 ;8 š `3     O  š O š O š O O š O O O š š O O š š O š O š O š!+"&#$ O O% O')( O O* O ,.- O O /1 O0 O 2 O O 4H5?6:79 O8 O O ;><= O O O @C OA B O DF OE OG O O IUJPKML ONO O OQSR O O T O OVZWX š OY O O š[^\] š O O š O_ O šab}crdkehfg ij lomn pq sxtv u w y{z | ~                         z) ; ; š O ; 3 3 s  =  H  m I7 O O O  O O  O  O O O O O O O �  O O  O O O O F š O š  š O š O š 7 7 dz dz 7 dz O O O  O O #! O O" O$'%& O O( O *Q+;,4-0. O O/ š O132 O š O O š57 O6 O š89 š O: O O š<E=A>? š O O@ š O šBCD š O š OFMGJHI O š O šKL O š š ONO š OP š š ORdSXT šU šVW š O š OY_Z][\ O š O š^ O š O`b Oa O šc O O šeofjgi šh š O š Okm Ol O š šn š Optqr O š Os š Ouwv š O šxy O š O š{ |}~ ;8 ;8  3 ;8 š ;8 ;8 3 s  ;8 š ;8 3 3 3 #                        W- š  Z < k  Z š : š � š Rk š k : š š š š š š š � š š  š  š š  š š      > > > >   >  > > > > >  > > > > &!$ >" ># > >% > '* ( ) > >+ >, >. š/F0:1624 š3 š š5 š 79 š8 š š;A<> = š?@ š š BDC š šE š š GRHMIKJ š šL š š NP O šQ š š S šTV šU š š XY_Z š[ š\ š] š^ š š `xalbe >cd > >figh > >jk > >mrnpo > > >q > sut > > vw > > yz{~|} > > > > > > > > > > > >  > > š š š : š F š š š š š š š  š š š  š š š š š š š  š š  š š š š š š š š š š š š š š š š< :                   #   �       (             "  ! #% $ &' )-* + , .7/301 2 456 8 9 ;<_=O>H?B @A CFDE G IL J K M N PXQWRUST V YZ][\ ^ `takbhced fg ij lo m n pr q s uv{wyx z |~}                                     y1  be š be š be be Z š š be be š be be š š be be be be š be be š be be be š be� be be be š be š be š be š š be    š š be be š be be š be be be š š be š be be š š š be -!'"%#$ be š be š be& š be(*) be š be+, š be š be. be/ be0 be be š2Y3J4@5;6978 be š be š: be be š<>= be be š? be š beAGBDC be š beEF be š be šH beI be š beKRL beMPNO be š š be beQ be šSV beTU be š be beW beX š beZl[e\a]_^ be š be be` š beb becd be š be šfig beh be be šj be bek š bemrn beo bepq be š š beswtu be š bev be š bex be šz{|}~ be be be š be be š be be š be š š be š be š be be š be š be š be š be š be be be š š be š be be be š be be be be š be be V be be š be be š be be š be š be š be š š V be š be š š be be V be š be š be be š be š be be š be be š be be be be š be be š be V be be be š š V be be be be š be be be be š be be be š be š be be be š be be š be š š be� be be š be be š be be be š be š be be š 8  T;# ї ї ї  ї ї ї ї ї ї ї   ї ї!" ї ї$/%*&' ї () ї ї +- ї, ї. ї ї 061423 ї ї ї5 ї 798 ї ї: ї ї <E=A ї> ї? ї@ ї їB їC їD їFLG їHJ їI ї їK ї MO їN ї PR їQ ї S ї їU{VjWbX^Y\Z[ ї ї ї] ї _a` ї їcfd їe ї ї їghi ї ї kp їlmn їo ї ї qwrust ї ї їv їx їyz ї ї|}~ ї ї ї ї  ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї  ї ї ї ї                                       �          #       ! " $-%( &' )+* , .3/10 2 46 5 7 9:f;S<F be=>C?A be@ š be beB š beD beE be š beGOHKI beJ be be šLM š beN be be š beP beQ beR š beT]UYV be beWX be š be beZ be[\ be š be^b_ be be`a š be šc be bed bee be šghsim bejk be bel be šn beoq bep š be ber be štx beu bevw be š be beyz}{| be š š be~ š be š be be be š be š be be be š be be be š be š be be be be š be š be be be š be be be š be be be  š be š be be š be be be š be be š be be be š be be V be be V be be be š be be V š be be š š be š be be be be š be V be be š be be be V be be be š be š be be be š š be be be be š be be š be be be š be š be be š be š be š be be š be be š š be be š� be be be š be š be be š   š be  be š š be be be š š be š& be be š š be š š be be š be be !$"# š be be š% be be š'3(.)+* be be š,- š be š be/1 be0 be š be2 be š4957 be6 be š8 be š be: be; be be š=>P?@mATBI beCDG beEF be š be beH š beJNK beL be beM š beO bePRQ be š be beS š beUhVdW^X[YZ , be , be\] , be > be_a` be š bebc be š š be bee befg be be ši bej bek bel be š beno~pyqt ber bes be šuwv be be šx be š bez be be{|} š be be š be be be be š be be be š be be š š be be be be š be š be š be be be be š be š be š be š be be š be be š be be be be š be š be š be dz be š be k k  k  7  be be š be be be be š be be š be be be be š š be be š be be š be be š be be be š be be be š be be be š be be be š be be š be be be be š be be be V be š be be š be"� š be š be be š be be be š  be š be be š be   š be š be be š š be be be be š be be be š be be š be  be š be! be be š#:$/%) be&'( š be š be*-+, be š be š. be be š05132 š š be4 be be š687 be be š be9 š be;F<A=? be> š be@ be be VBDC be be š beE be šGMHKIJ š be š be beL š beN beO be š beQ�RS}TjU_V[WYX їZ ї ї\ ї]^ ї ї `eacb ї їd ї їfhg ї ї i ї ї kvlqmo n їp ї ї rt s ї їu ї w їx{yz ї ї | ї ї ~ ї ї ї  ї ї  ї ї  ї ї ї ї  ї ї  ї ї ї ї ї ї ї ї ї ї  ї ї  ї ї ї ї ї ї ї ї  ї ї ї ї ї ї ї  ї ї  ї ї ї ї ї   ї ї ї ї ї ї  ї ї ї ї ї ї  ї ї ї ї ї  ї ї  ї ї  ї ї ї ї  ї ї ї ї  ї ї  ї ї ї ї W* ї ї ї    ї ї   ї ї ї ї ї  ї ї ї ! ї ї ї ї ї  ї "'#% ї$ ї ї& ї ( ї ї) ї +A,5-2.0/ ї 8 ї ї1 ї3 ї ї4 ї 6;798 ї ї : ї ї<> ї= ї ?@ ї їBKCHDF їE ї їG ї їIJ ї їLRMON ї їPQ ї ї 8SUT ї їV їX{YjZb[_ ї\]^ ї ї` їa ї ї chdgef > > > i >ktlom ї їn їpr їq їs ї їux vw ї ї їyz ї ї |}~ ї ї ї ї  ї ї ї ї ї ї  ї ї ї  ї ї  ї ї ї ї ї ї  ї ї ї 8 be be š    be š be < be be be š be š be š be š be be š be be š be š be be š be be š be š be be be š be be š be be be š be š be be be š be be š š be š š be š be be š be be š be š be š be be š be š be š be be be š š be be� be be š be  be be be š   be be š be be š be be š be be š š be$  be š be š be be be š be be š! be be"# š be š%/&+')( š be š* be š be,- be š be. be š03 be12 be be š46 be5 be š š7 š be9:a;R<H=C>A?@ ї ї B ї ї DF їE ї їG ї IOJLK ї MN ї ї їP їQ їSZTWU їV ї ї X їY ї[^\ ї] ї ї_ ї ї` ї bwcldgef ї їhj i їk ї їmrnp їo ї їq ї su t їv ї ї xy~z}{| ї ї ї  ї ї ї  ї ї ї ї ї ї ї  ї ї ї  ї ї ї  ї ї ї  ї ї  ї ї  ї ї  ї ї  ї ї  ї ї ї ї ї ї ї ї ї  ї ї ї  ї ї ї ї ї  ї ї  ї ї ї ї ї ї ї ї  ї  ї ї ї їZ"�                             ! #<$.%)& ' ( *+- , /3 0 12 465 798 :; =N>I?D@BA C EGF H J K LM OVPS Q R TU W X Y [\]r^k_e`ba cd fh g ij lomn p q sytw uv x z} {| ~                                                �      4 L          d š š Z Z) Z Z!" Z# Z$ Z% & ' ( Z*/+ Z, Z-. ޕ Z ޕ Z0 Z12Y3F4 F5 F6?79 F8 F :< Z; , Y=>  S U@ FADBC J ɽ :[ E F FG FH FIRJL FK F MO ZN , YPQ  S US FTWUV J ɽ :[ X F Z[w\ ]h^b _` a ce Zd , Yfg  S Uiojmkl J ɽ :[ n 4{ hpt qrs ޤ ޕ uv xy z{} Z| , Y~  S U  J ɽ :[  4{ h ޕ ޤ  ɽ h  ޕ -   ޤ      h ɽ  ޕ  ޤ   -       Z , Y  S U   J ɽ :[  F Z Ʒ  s s š    š š š š  š š š š � � š A   š š H š š  k š 5p š : c š ( š� š A � š <  š š A š š š š š š  b \ = š!     š   š    š    š  š "4#-$)%& š ('( (  ( *  + ,  š.3 š/0 š š12   š ( š5 6;7:8 š9 š š  š <   š> š š?@LAEB C šD š š ( šFG šHI š  šJK š š MWNTORP Q  š  šS š U V  š X[ šY šZ  š (  š]^ š š_` š ša š  šcdje š šf šgh ši š š k šl}mvnr o (p šq  š s tu š š  šwx š y z š{| š  (~ š š  š   š š  š š   š  š  š š  š 7 š š š š š  ( š š š ( š š š š  š ( š š š ( š š š š š š : š  š š š 5  ( 5  c A  5 A ( ( 5 c ( c ( 5 ( c A c  ( A  ( A ( A š š š š  , , š > , > š , : š š , š , � š : š : � : š š > ,  š š5 š'� š  ( š š š A š š š  š @ š š ( ( š š , š š  š š  š  š >! š � : "$# ,%& A A š(1).*, š+  š- š  š/ š š0 š 52 š š3 š4 š 5 š6 ( 8K9 š:; š š<=D>A š?@ š šB š šC šEIF šG šH š šJ š š š MlN]ORP Q S T UV W X Y Z [\ ^e_b`a d cd = H šfigh š šjk H š šmn opq”r†s{txuv š w š y šz š |‚}€~ š š  š ƒ„… š š ‡ˆ‹ š‰ šŠ šŒ šŽ š š  ‘’“ š š•°–˜ `— ™£š ›œ  ž Ÿ   ¡¢ 6& j ¤«¥¨¦ T§   š© ª ł ¬­ ®¯ , S ± ²¼³¸´ Z µ¶·  ł ł ¹ yº »   $½ ¾¿ ; s s  š Z l          *      a  CN Cy <u d Ve              d CN `    Cy�  CN P P 21 š       6 6 6 6 6 6 6 6 . 6 V         G ! . ."#+$ .% 6& 6' 6 6( 6) 6* 6 6, . 6-. 6 6/ 60 6 6 š3 š 56U7H8B9;: š = < š š=> š? š š@ šA šCFDE Z š s šG š šIOJMKL š š N š šPR šQ š =ST ` Ʒ ZVWXZY š [\ 7 š š]^_Ú`{albfc de R R 02gi h jk O mtnqop q u 9rs N uxvw y � kyz  * I -|Ë}Ä~ÁÀ 1 5 "Âà   7 ÅÈÆÇ X gÉÊ  X אÌÓÍÐÎÏ O   rÑÒ ,]   gÔ×ÕÖ 2 < 0A <ØÙ   / ÛúÜëÝäÞáßà s  âã &  z #�åèæç &y ' ', }éê  -  ìóíðîï e (  ñò  /  ô÷õö B B øù ! % ' ;ûüýþÿ 0    w > B  v   ' $= +   \  v f X X       < 6 ,l R L b  Z š Œ Z š W š š t š G  Œ Œ Œ Œ  Œ Œ  Œ Œ Œ� š š  š š š š k    š   š +  š š : š š : š š š ï š š Ĺ^ š š!" š š#$A%7&,' š( š š)* š š+ š- š. š/2 š0 š1 > š35 š4 > š š6 š8 š9 š: š;> š< š= š? š š@ šBTCID šE š šFG š šH šJ šK šLO šM šN > šPR šQ > š šS šU šV šW šX[ šY šZ š\ š š] š_ š š` šab šcĎdvekf šg š šhi š šj šl šm šnq šo šp > šrt šs > š šu šwĂx šyĀz} š{ š| š~ š š šā š šă šĄĉąĈ šĆ šć + š B{ BĊ šċČ š B{č š B{ šďġĐĖđ šĒ š šēĔ š šĕ šė šĘ šęĜ šĚ šě > šĝğ šĞ > š šĠ šĢĭģ šĤīĥĨ šĦ šħ šĩ š šĪ šĬ š šĮ šįĴİij šı šIJ + š B{ Bĵ šĶķ š B{ĸ š B{ šĺ šĻļ šĽ šľ š šĿ š š š š š š š š š š > š š > š š š š š š š š š š š š š š š š š + š B{ B š š B{ š B{ š š š š š š š š š š š š š š š š > š� š > š š š š š š š š š š š šŃ š š š š š š_</$ š  š š @' š " š! š š#  š%*&( š' š š) š+- š, š š. + š0:1624 š3 B š š5 B{ š78 š B{9 š B{ š; š B{ š=R>I?D@B šA  š šC @' šEG šF š šH  šJM K šL šNP šO š šQ + šS]TYUW šV B š šX B{ šZ[ š B{\ š B{ š^ š B{ š` šavbmchdf še  š šg @' šik šj š šl  šnq o šp šrt šs š šu + šwŁx}y{ šz B š š| B{ š~ š B{ŀ š B{ šł š B{ šńŎŅ šņ š šŇ šňʼn š šŊŋ šŌ šō š š + šŏŐ šő šŒ šœŔŽŕũŖ šŗŢŘŝřś šŚ  š šŜ @' šŞŠ šş š šš  šţŦŤ š šť šŧ B šŨ šŪ šūŶŬűŭů šŮ  š šŰ @' šŲŴ šų š šŵ  šŷź Ÿ šŹ šŻ B šż šž šſ š š  š š @' š š š š  š  š š B š š š š š š š š š š 7 š š  š š  š š š š š š š š š š š =&  š š = š  š  š�  š š š  š  š š š š   š  š š š š š š š š D š y š š  š š š š š  š! " #$ % '<(* š) š Z+; ,-6.3/2 š0 1  45 ( š � š798 š š : š š š =B>? š y@ šA š CD š H š FGKHIƂ šJ šKL š šMN šOdPQ š R_S T U V W X YZ [ \ ] ^ š ` ša šb šc š  šewf šgsh ši š šj škl šm šn šo š šp Bq Br š Bt šu šv š š (x šyz š{ š| š š}~ š šƀ šƁ š š DƃƨƄƏƅ y šƆƇ š šƈ šƉ šƊ šƋƌ šƍ šƎ š D šƐƓƑƒ = Ɣƕ  =Ɩ s ïƗƘƥƙƜƚ 6ƛ Q5 0 ƝƟƞ N Ơƣ 4!ơƢ O ï :Ƥ 4! oƦ ïƧ 0 Dz ƩƪƫƬ š ƭƵƮ Z ZƯư ZƱ Z ZƲ ZƳƴ Z Z FƶƷƸƿƹƽ šƺƻ š šƼ š šƾ š  š š  š š  š š  š š š š š š š  š š  š š  š š š = š š š ` x ï s y s Z `  š š  š š š š < < c  k < <  <ǖljDŽ�  š Ʒ Ʈ š š[-       8     8       8 )! " # $ % &' ( 8 *+ , 8.=/ 01 23 45 6 78 9;: 8 8 8< 8 >G ? @A B CD E F 8H I JKS L MN O P Q R 8 TU VW XY Z 8\~]t^b _ `a 8c dekf gh i j 8 l mn op qr s u vw xy z{ | } 8 ǀ ǁ ǂǃ 8DžLJ šdž š Ʒ šLj š NJǏ šNjnj š šǍǎ š š ǐǓǑǒ š = šǔǕ š šǗDzǘǥǙǜǚǛ š m š ǝǤ šǞǟǡ šǠ : šǢǣ :  ( D s šǦǯǧǨ š Œǩ šǪǫ š šǬ šǭ Ǯ šǰDZ t s šdz/ǴǵǶ y š šǷ šǸ šǹǺǾǻ š šǼǽ š š ,ǿ š š š  š š š A š (.! š š š š š š š š š š š š š � š š š š š š š š š š š š š š š š š š š š š š š D D D D D D D � D š š š� š š š š š š š š � š  B& B& B& B& B& B& B& B& B& B& B& B& B š š š š š š š š š š š < š" š#( $% š& š' š š š)* š+ š š,- š š š š0 1 Œ2 34E5= 6 78 9 : ; <  > ? @ A B  C D  FG H IJ L*MuNcOUPSQR š T š  šVWbX šY\Z V[ š š V]^ Cy =_ <u` <ua I = š doelfg  šh š šij šk š šmn s y y šprq š šst Z š švșw|x{yz = d' k š }Ȋ~ȉ ȀȂȁ   ȃ Ȅ  ȅȆ  ȇ Ȉ  l šȋȌ i אȍ šȎȏ šȐ š šȑȒ š šȓȔ šȕ š šȖ šȗȘ š šȚ(țȜȝȞ šȟȠ ȡȼȢȩ šȣȤ šȥ š šȦ šȧȨ š šȪȶ šȫȬȯȭ šȮ š š Ȱȳ šȱ šȲ š ȴ š šȵ šȷ šȸ šȹ š šȺ šȻ š Ƚ š šȾ šȿ š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š  š š š š š š  š š š š  š š š š š  š š š š š š š š š š  š�  š š  š š š š š š  š š š  š š š š š š š š š  š š š š š š š  š  ' !" #& $ ׭%  š š) š Z+M,3- .1/0 Z ˘ r ˘2 r ˘ 45867  š9:  š; < š=J>F? š@ šAC šB š DE š š G š šHI š š šKL š š NɟO]PSQR š T\U šV šWY šX šZ š[ š Z^ š_ɞ ` Œabmc Œ Œde Œf Œ Œgh Œi Œj Œk Œl Œ \ Œ Œn Œopɇ Œq Œrs{t \u \vywx \ M ~ z \ Œ \| M}Ɂ~ Œɀ \ M ~ ɂɅɃɄ \ M ~ Ɇ M Œ MɈ Œɉ Œ ŒɊɋɖ ŒɌ Œɍ ŒɎ Œɏɐɓɑɒ Œ \ Œ Mɔɕ ~ \ Œɗ Œɘ Œə Œɚ Œɛ Œɜɝ M ~ Œ šɠɰ šɡ šɢ šɣɤɯɥɫ šɦ šɧ šɨ šɩɪ š šɬ š šɭɮ š š š jɱɵɲɴɳ OU y p ï l šɶ šɷɸɹɿɺɼɻ ˘ ï ɽɾ r ï  Z Z d ï Ʒ ï s Œ 7      X  Y` X X  4? YB s ˘ʙ9  ҉ š š š Œ š ( c (          � š š š š  =    U�  š  0   m š š/ s  i Z ѧ ƨ ` ƨ $    8 ! " # F % & '-(+) 8* 8 , Hp. F  š1423 š š 586 7 š Z:C;@<> = š š? Œ š šA šB  šDMEJFIG šH š š Z KL = š š NP šO y šQR  š šST šU šVw šWX š šYZi[a š\ š] š^ š_ š`  šb š šcd š šef š šg šh š šjkrl šm š šn šo šp šq  šs št š šuv š š šxy šzʏ{ʈ š| š}~ʂ šʀ š šʁ š ʃ š šʄ šʅ šʆ šʇ > š šʉ šʊ šʋ šʌ šʍ šʎ : š šʐ šʑʒ š šʓ šʔʕ šʖ šʗ š šʘ šʚʛʹʜʯʝʭʞ š šʟʠʧʡʤʢʣ š ʥʦ š š ʨʪʩ š �ʫ š (ʬ šʮ š š ʰ šʱʸʲ =ʳ Œʴ Œʵ Œʶ Œʷ Œ Xc Œ š ʺʻʽʼ š yʾʿ Z š š š  š š š š  š � š          š š � š  š  š š š = š š ï š Z0, š+&    6 Z   ƨ    �    H  H           <%  b 6  R ,l " ! #$ 7 6  ' () * š - š./ š š Œ1Q24 š3 š5 š š67>8; <u9: š <u <= <u <u?C@ šA B ~ <u ~D EMFJG HI ן  K L  <u ~ šN šO <uP <u ~R š šST šUV š WXˢY{Zx[n\m š]^d_ š š`ab k šc š k š šef šg š šhik šj  šl š  š š ko špvq šr š šst š šu š k šw š k šyz š k š|ˎ š}~˂ šˀ šˁ š k š˃ š˄ˋ š˅ˆ š šˇ šˈ šˉˊ š k šˌˍ š k k š šˏː˞ˑ˛˒ š˓˗ š˔˕ š š˖ š k˘ š˙ š š˚ k š š˜ š˝ k š˟ šˠ š šˡ š kˣ˾ šˤ˥ š˦˨˧ š k š˩ š š˪˫ š šˬ˭˶ˮ˱ š˯ k˰ k š˲˴ k˳ k š k˵ k š˷˼˸˺ k˹ k š k˻ k š˽ š k š˿ š š š š š š k š š š š š š š š š š k š š š š š š š š š š k š š š š š š š š š š š š š š  š š š š š š š š  š š š š  š š š š� š š š š  š š š š  š š š š š š š  š š š š š š š š š š š š q )!$"# š y š š% & š'( š š* š+E š,->. š š/ š01 š24 š3 5 š6 š7 š8 š9 š: š; š š<= š š š? š@ šAB š šCD š šF šG^HZI JNK L M OP QR ST U V W X Y [\  ] _j ` abgce �d � f  � hi J  i kp cl m n o c h r̂swtu  šv ƨ x́y s z{ | } ~ ̀ , š Z̹̃̽̄ ̗̅̆̇̉̈ š š (̊̏ š̋ š̌̍ š š̎ š 5̐ š̑̔̒ š̓ š 5 š š̕ š̖ A ç̛̘̯̙̠̞̜̚ š š̝ š > ̟ š ̡ ̢̤̣ š š̥̦ < H ̨̩ š :̪̮ ̫̬̭   š š̰ š š̵̱̲̳ š š̴ š ̶ š̷̸ � D š ̺ š̻̼ š > š̾̿  š š   š y š š š   š y Z š š š š š š š š š  š š   š    H         6 . V    �      . V 7 Z š š  š  š š š š š š š š š š Œ š͂,#  t Œ Œ i! š =" š$)%& Œ š š'( š š*+ š Ʒ =-K.1/0 š s 23 š s š45; š6 š7 š8 š9 š: š<D= š> š?B@ š šA > š šC : šEI šFG š šH š šJ š cLOMN y Z š P šQwRpSgTb šUVaW šX Y šZ š š[ š\] š š^ š_` š š š šcd š šef š šh ši š šjknlm š š o š š šq šrs š štu š šv šx{y š šz š š| š}~ ̀ ́ ͈͇̓͑̈́͋͆ͅ  š š͉͊ d š š ͎͍͌ š  š͏͐ š ͓͔͕͒ͩ š ͖ š͗͛͘ ͙ š͚ š š͜ š͝͞ šͤ͟͢͠ ˘͡ ˘ Aͣ ˘ 2 ˘ͥͧ ͦ ˘ ˘ͨ ˘ ͪ š ͫͬ ͭͮͻ ͯͰ ͱ Ͳ ͳ ʹ ͵ Ͷͷ ͸ ͹ͺ # ͼͽ ; Ϳ G     š = š š  y > Œ Œ W Œ ƨ   ƨ i s ˘  ï ü  ï s L R= L  Œ r Ʒ  ï ï k = L s Ʒ ű   ,ԍ; Π�  š š \M _\ ї \} <u š    š š š š š š š š š š š š š š š š š ΛP  !"8#.$' š%& š d C](+)* d ї d H,- d [/5021 d Cy d d3 d4 V 6 ї 3@7 š d9D:= ї; d< ^\ d>@? H š dAB d dC ї \ELFIGH \ ї l dJK X M HNO Cy d ї dQΚR SnTaU[VYWX  d  Z ї d H\_]^ H d ` bhce Hd CN dfg H H H liljk Œ d ƨm d ^\ dozpt dqrs   WDuxvw H l H m Hy H l{΅ H|}΀ š~ ` d [΁΃΂ = d [΄ Cy d [Ά΍·ΌΈΊΉ [ d l΋ š d šΎΗΏΐ d H dΑΒ HΓ <ΔΖΕ < < ; ; <Θ ї Ι d š d ΜΞΝ Ο d šΡ΢ΣΤΪΥ š šΦ šΧ Ψ šΩ šΫ šάέΰήί š ( αμβθγδ šεζ š šη šι šκ š šλ š νξ šο š š š  š   ( š š š  š š š z š                     \ :             �          T  a .  = š s y y š  š ƨ š ]= s" š š š š š! š š š#$) š%& š š' š( š š*+ š, š- š š/[0X12 s š š34O5L6D 789 A  5: ;<  B=> B B? B@A BB BC B B EHF G š >I šJK D š š šMN š � P šQS :R : šTU šV šW > YZ š  š\_]^ š ]= ]= š` š Z šbncjdgef s  hi š š Zk šlm ]= šopsqr š \ G їtϫu їvϏwςx| yz{ be K be K}~ K K beπρ be K K beσψτφ Kυ be Kχ K K beωόϊϋ be K K beύώ K be KϐϜϑϗϒϔϓ K K beϕϖ be K K beϘϚ Kϙ be Kϛ K K beϝϦϞϡϟϠ be K KϢϣ K Ϥϥ ϧ ' Ϩϩ 'Ϫ be be їϬϭ їϮϯϰϻϱϴ їϲϳ ї  šϵϸ϶Ϸ ;8  ; ;8ϹϺ ї ;8 ;8 O їϼϽϿϾ ;8 ;8 ^< ;8 ^< ;8 ї d [ \ ї [ \= ]} ї \} \ ї \ ї [ ї [  ] ї Z ї ї ї [ Z [ [ be ї š ї šr š š [ [ [ š ( š ( ( ( ( ( ( ( ( ( ( ( ( (  ( š ( š š ( š (� ( ( š š ( š ( š ( ]= k  ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ( ]= ] s bV 6 ї!"/#)$'%& < K [ Z ( i*-+, 3 x K . 0 1423 }5  } 7Q8F9?:< ; => @CAB 7 � DE  - < ,GK bVHIJ bV KLOMN F [ [ j buP bu yRaSZTWUV XY [^\] ї _`   ! <bhcfde y / > Mg o \ i j $ klpmon R\ š d q sжtЩ uvЛ wx yІz š{Ѐ|} ~ Œ š ׭ sЁЄЂЃ  Cy Ѕ ЇЗЈБЉЎЊЋ CN Ќ =Ѝ C? ЏА CN ВЕГД  h Ж   И ЙК  МН šО š =ПР =С =ТУ = iФЧХ iЦ = =Ш = i =ЪаЫЭ šЬ ` ЮЯ š  бг rв r де s 7 = зий [кл š [мн ї їо їп ї ї [ [ ^< ї Z š š š Z = š š d  d    CN  t  [ [ š H H š CN 8 š š š Z ї [  [  H  š  <u  H B� B B  š [ s >  V   H H . H  H H H H H H H H H H H l H H = H l5   4!."- [#$ [% b& b b'( b) b* b b+, b b [ \ [/ [0 z1 [ [2 [3 [ b \ ^68 7 9: š š be< =>ђ?c@ZAXBWC šDPEIF mD lG šH š JNK L H HM š l mjO mTQVRT S  lU H l l ZY š y [a\`] ƨ^_ š E/ š H šb š šdqehfg š H ij  šk l lm Hnop = mj Hrust H l š svw š <ux šyхz{ | } ~ р ст у ф цч ш щъ ы ьэ ю я ѐ ё  ѓєѕѦ šі їјўљќњћ š  šѝ š  (џѢѠѡ š ( š ѣ šѤѥ š š (ѧѨ š ѩ šѪѶѫ ѬѲѭѱ Ѯ šѯѰ š š šѳ šѴ šѵ š ѷѼ šѸ šѹ šѺѻ š šѽ šѾ šѿ š = š š š E] š š š = Z     D  š š = š š š š š š  š š š š š š  Œ V Œ š l š š 7 š  šmd] Ic <u <u [ š š š š š š š š �9 š š š š š š š š  š  š  š š B + @' S š š š š B + @' S& š š š š š!# š" š $%  S E >' š( š)1 š*+ š,. š- š B/0 + @' S2 š3 š46 š5 š B78 + @' S:K;B<@=  > ?  A   C šD šE š šF šGH šI šJ š š L šMY šN šO šPQ šR šS šT š šU šVW š šX š D šZ š � ҉\ š^a_` bc š  Hejf gh š i  š t kl  nғoҊp šq šr҂s t u v w xy z { |} ~ Ҁ ҁ ϰ ҃҄ š ҅ š ҆ ҇ ҈ ҉ šҋҍ ZҌ Z šҎҒҏ š šҐґ š š ҔңҕҠҖҗ šҘ šҙ š šҚ šқ šҜ šҝ šҞ šҟ B šҡҢ šҤ ҥҦ š ҧҨҩҳҪҲҫҮҬҭ F DүҰ i ұ be FҴҺҵҸҶ Zҷ ҹ š һҾҼ ҽ ҿ      c c I c  bV š be bV    I  ł ł ł ł  ł ł ł  d ł ł š� be      ց  3 }  be n !  4 x ? A be be ł be š š Ӗ wOIFE š2. š š š š š' š š š š š š!" š š#$ š š% š& š : š( š)* š+ š, - 8 7/ 0 1 š ( š3?4856 š 7 š š9:<; d š = š š> š @ šAB š šCD š š š lGH m$ š šJL šK l ~MN = ~ =PUQS šR = sT š H šVXW š = šYvZ š[ š š\]m^ š_g` š ša šbc š šd šef š  š šhi šj š škl š š n š šop š šqr šs š št šu  š  šxӎyӄz š š{| š} š š~ šӀ šӁ šӂ šӃ š š B šӅ šӆӇ šӈ šӉ šӊ šӋ šӌ šӍ š š šӏӐӓӑӒ š š Ӕӕ š H šӗwӘmәӚӥ šӛ šӜ šӝӞ šӟ šӠ š šӡ šӢӣӤ š   šӦӧ = š šӨөӹӪӳӫ š šӬӭӰӮ š šӯ š šӱ šӲ š 7 šӴ šӵӶ š šӷ šӸ š ӺӻӾӼ šӽ š š Eӿ š š š š š H š š š k t š šL : š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š    š š š š > š� š š > š š š š š š > š š š > š  > š > š. š š š š š%! š š > š š > š š š > š"# š$ š > š&*' š š() š > š+ š š,- š š >/B š0172 š3 š4 š5 š š6 š > š8 š9: š š;<?= š š> š > š@A š > š šC šD šE šF šG šHI šJ šK š > š :MN :O :P]QX :RS :TVU : : W : : Y : :Z[ :\ : :^f_ :`c :a :b :d : :e : :gh :i : :j : šl š nq šop š = šrust š šv š Em šxԂy} šz{| š k š~Ԁ š = š šԁ l šԃԆ šԄ šԅ t šԇԊԈԉ d š š ҉ԋԌ 8 š š =ԎڊԏԐ=ԑԒԓԣԔԡԕ šԖ š ԗԘԞԙ š Ԛ ԛԜ š ԝ E šԟ šԠ š Ԣ š Em šԤԦ šԥ š ԧԸԨ šԩ šԪԫԴԬԯԭԮ š H  ԰Ա C] CNԲ šԳ š š ZԵԶ E] šԷ š = Թ šԺ Ի Լ ԽԾԿ c 8w c c c c c c c c c c 8w 8w 8w 8w 8w 8w 8w 8w 8w 8w  c 8w š š š š š š š š š  š š š š š š š B š  š  š š  š š š š š š Ʒ Ʒ š š š Z š š� š  š š š š š < š š š š   š š š š š � š š š š š š š š š  š  š š ! š"(#% c$ c B_& B_ B_' J c) *7+1,.- B_ B_ c B_/ B_0 B_ 2 354 B_ B_ B_6 B_ 8: 9 c; c< c >՟?F@C šA šB šD šE š š GR šH šIJ šK  LM N O P  Q T S šTՖU šV š šWXՇYpZe[`\ š] š š^ š_ > ša šb š šc šd šfkg šh š ši šj šl šm š šn šo : šq|rws št š šu šv � šx šy š šz š{  š}Ղ~ š š šՀ šՁ šՃ šՄ š šՅ šՆ ( šՈՏՉ šՊ šՋ šՌ š šՍ šՎ 5 š šՐՑ šՒ šՓ š šՔ šՕ š՗ š՘ š šՙ š՚՛ š՜ š՝ š š՞ š ՠաբ šգ š šդեժզ šէ šը š šթ > šի šլ š šխծ š šկհձղռ šճմշյ š šն š šոչ š šպ šջ šս šվ šտ š š š š š š š š š š š š B š š š š š š š š  š š š š <u š š š š š š š š š š B š š = š š š š š š š š (  š š š : > š֮ š, š š š š š� š š š š š š š š š š :   š š š š    š  š š š š š ҉ š %! š š"# š š$ š š&'*() š š š+ š -0. š/ = š = š1 23 d4n5P6E7>8; 9 :: :< 4 E = E ?@  cAC @B @  E/D E/ �FKGH I � HJ H > �LM šNO š š 4QeR_ šST š šUVW š > >XY >Z >[ >\ > >] >^ >`ba  c  d š fkgjh 5 i  š (lm  : š o֌pցqwrts 5p k š Du šv š Bx~y{ z S|} A W A r  ր šւֆփ քօ և։ֈ H > š֊ ,֋ , �֍֠֎֘֏֕֐֑֓֒ c 4  k֔ � R\ ֖ D֗ RM֙֝ A֛֚֜ š Ry Ry֞ 5 D֟ D š֦֢֥֣֡ D֤ � A  ? 5֧֨ A š֩֫ B֪ > B š֬ š֭ š֯ب šְֱSֲֳִ šֵ ֶַ־ָֺ šֹ š ֻ šּ šֽ š <u šֿ š  š š  š š  š š š  8 š š š  š š š š E] š š š š š š š š š š š E š š š š š š š š š š š š š  B 8 š š� š š E š š š š  š  š 8 š  8 7 š š1# š š  7  š š  š š! š š " š š$' š%& š E] š(-)* š + š, š E E./ š 0 š Em š2;384 š57 š6 š š š9: š š <H=D>B?A@ š š š šC š E šFG š šIP šJK šL šM š šNO š ? šQ š šR  šTUכVׂWbX^ šYZ š š[ š\ š] š _ š š`a š š c|dxe šfug šh i j k l m nr opq 8 8 s t 8v w š šyz E š{ d š š} š~ š׀ š šׁ ( š׃גׄ šׅ׏׆׈ׇ š š š׉׊׌ ׋ iu׍׎ 8 iu šא šב š šד šהוז š חט šי š ך לםמץןע šנ šס šףפ š š צ šקרש š ת׭׫׬ 5 Ĺ R r׮׷ׯ Aװ 5 5ױ 5ײ 5׳״ 5 5׵ 5׶ š 5 5׸ š׹ ׺ ׻ ׼׽ ׾ ׿ š š š š  š š š d š ƨ š  š Em š š                š š š  š             � š š 8 š š š  š  8   š š š Em š š F _=*%" š š š Em! š Em# š$ š š &( š' š ) š E] š+3,0- š š./ G G L š1 š2 š 475 š š6 š š89< : ; . š>I?C@ šA š šB š DGE š šF š = šH š JSKN šLM š š šOP š šQR š š E]T]U[V WYX š š @Z š  š\ š š š^ š `؇aqbe šc šd š fm šghj i Ek š ƨl ƨ šnp šo š E] š r~sytv du šwx š š z š{ š |} š š A؂ š؀ š؁ š Em؃ š؄ š؅ š؆ š š؈؝؉ؑ؊،؋ š š؍؏ š؎ š ؐ š š šؒؓؕؔ š š ؖؗ š ؘ؛ؙؚ š š š؜ š ؞إ؟أ šؠ šء šآ šؤ š š = šئا š šةصت šث šج š šحخ š šد šذر š šزس š šش � šضh šطظ)عغػؼؿ šؽؾ E]  š š  š š  š š š š š š š š š š š  š š E] š š š š š š  8 š š š š š š š š š E š š š Em š š š  �                  T T T T T T T T T T T T T T" š š ! š š#($'%& d š š š š *D+6,3-0. š/ E š š12 š š š45 š š G7 š8=9;: š š š< š >@ š? š E] šAB šC š šESFNGKHJ I š L šM š š OR šP šQ š š TX šUV š šW šY^ šZ š[\ E š] š _` ša š šbcg de šf š š ši j٥kٍl|mtnqo š šp šr š s š E]uwv š š x{y šz E d E š }ن~قف šـ š š كم ل š šه šويى š š  šً šٌ šَُِّٖٚٓ š šْ šٔ š šٕ šٗ š٘ٙ š š ٛ١ٜٞٝ š E šٟ š٠ š š š٢٣ š š٤ š ٦ٿ٧ٯ٨ š٩٬٪ š š٫ š ٭ š šٮ š ٰٺٱٶ šٲٳ šٴ š šٵ k šٷٸ š šٹ š ٻ šټٽ š šپ š  š š š š  š š  š š š š  š š  E 8 š š š š š E] š š š š š   E� š  š š š š š š š š > > > B > B{ B B > > B > > > > š > > B� š š > š š > š š š š š @' š Q .  š š š  š š Em š š š š š' š š š  % š!" š#$ š š š& E(* š) š š+,- š š /C0:1724 š3 š5 š ~6 š š89 š š ;@< š= š š> š? š A šB š š DKEHF šG šI š šJ  šLOM š šN š šP š RmSXT š šUV š šW šYcZ][ š\ š š ^` š_ š ab š š dje šf š šghi  H š škl š Em šnwos šp šqr š št šuv š šxy| šz{ š š}~ š šڀچځڃڂ š š ̀ڄ 8څ 8 ڇډڈ š š š ڋ۟ڌ3ڍڜڎ ڏږڐړڑڒ š Œڔڕ š Z š <uڗښژڙ = Z H šڛ š ڝڞڢڟ šڠڡ š y šڣڤ š ڥڲڦ ڧک ڨ Fڪګ cg ڬ ڭ ڮگ P hڰ Pڱ P ڳڴڵڶڷںڸڹ i ڻ ڼھ =ڽ = ڿ = d6 d  CN =  d = = = i = = CN ~ = = = i i = <u = <u d6 = = <u = <u = =  CN I7  CN I <u =  <u š  I I I I I I I J I i h ~ = <u ~  ~  = <u� <u I <u <u I =.  d     = I7   =    =  !  CN = CN ~    CN Cy "'#%$  Cy & (+)* ~ = = ,- Ic = /10 2 Z d Z4 Z56ہ7V Z89 Z Z:;C< Z= Z> Z?A @ F B F F D ZEOFLGI ZH , JK J F F U FMN F Z FP ZQS FR TU " KWۀX ZYZn[^\ F F] F U_j`fadbc , Z e S g Yhi :[  Zk Zl Z Zm , Zozp qwrts uv K x y  { Z| Z} Z~ " 2 š ۂۜۃۄ š Z =ۅ šۆۇۍ šۈۉۋ šۊ š šی šێۘۏ۔ې šۑ šےۓ 8 8 šەۖ šۗ š š ۙ šۚۛ š š۝۞ š š d۠mۡۢ۩ۣۦۤ ۥ d š ۧ ۨ ۪۬ ۫ šۭ۰ۮۯ  š š ۱۲۷ ۳ ۴۵ ۶ ۸۾۹ Œۺ Œۻ Œۼ Œ۽ Œ  Œ Œۿ Œ Œ Œ Œ Œ Œ  C  s 7  7 7      š š š š , š š š , š š š , š , , š š  c  c H < A B k 5 (  ʗ ? š š š š š� š > š  > � š � � š š š š  B Z H4 H( H H H H H H H H H H H  H H H H! H" H#$ H% H H& H' } H) H* H+ H H,- H. H H/ H01 H H2 H3 H 5 H6 H7 H89 H H: H;< H= H H>? H H@A H H y DeEHFG š m4 I\ JK šLVMQ šNO šP š š >R šS šT š šU > šW šX šY šZ š[ š š] š š^_ š`a šb š šcd š šfkg šh š ši šj š @l š š =nܶoܯpܬqs šr š їtu ї bev їw܃ bex beyz| be{ be 7 be}~܁܀  < F j܂  y ї܄ܢ܅ܛ܆܏܇܈ be bV܉܌܊܋  K  ܍܎  K ! [ܐܗܑܔܒܓ  - [ ܕܖ bu  ܘ }ܙܚ  Z ܜܞܝ be be } beܟ beܠܡ be } beܣ 'ܤܦܥ 7 ܧܨ bVܩ 'ܪܫ be be їܭܮ š šܰܳ ܱܲ  ܴ ܵ  dܷܸܻܿ ܹܺ š ܼܽ = š šܾ š  š š š š š š š š � š š š � š š š š š š š š l š l š š š š š š š B š š š p   ̀ Z Z        Œ Œ Œ Œ Œ Œ� Œ Œ Œ Œ Œ Œ Œ Œ Œ Z    Œ Œ  š  7(  7 Œ&% H ̀  ˘ Œ x!" #$ Ʒ ە E] š' š)W*,+ š Œ š- š. =/U0M1E2B374 56  X X 8 9: ;< => ?@ A C D X FIG H XJ KL XNRO PQ X ST 2 2 šV  šXZ šY š [ š \ ] ^_ `l a bc d e f gh ijk m n o  qr݊sy štu v w š šx š z}{| š mT š =~݉ š l݀݁ l l݂ l݄݃݇ l݅ l݆ l V݈ l V l š݋ݐ݌ݎݍ š = Zݏ š š Hݑݒݤݓ šݔݙݕ beݖ beݗ beݘ be ї beݚݞ beݛ beݜ beݝ ї be beݟݠݢݡ be ї be beݣ be їݥ šݦ šݧݨݶݩݭ ݪݫ Jݬ J ӿݮݱݯݰ B_ ӿ C?ݲݴݳ C? ݵ ݷݸݽݹݼݺݻ J Jݾ B_ݿ B_ J B_ ӿ C?  ӿ ӿ J J B_ B_  š  (   š  š š š š  l = l š  š š š š = š š = š š t š  ƷU  Z Z Z Z Z Z Z Z s Z {n�$ Z  Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z h Z Z Z Z Z Z Z! Z" Z# Z %M&>'0( Z Z)* Z Z+ Z, Z- Z. Z/ Z w1;2 Z354 Z Z 6 Z Z7 Z8 Z9 4{: 4{ Z Z< Z= Z ?H@ ZA ZB Z ZCD ZE ZF Z ZG Z YI Z ZJK Z ZL ZNa ZOP[QVR ZS ZT Z ZU h Z ZW ZXY Z ZZ  Z\ Z Z] Z^_ Z` Z Y Zbe Zcd Z Z  Zf Zg Zhi Z Zjk Z Zlm Z Z ޕ Zo Zp Zqrw Zs Zt Zuv Z Z  Zxy Z Zz Z |޺}ޯ~ޖޒހމ Zށ Zނ Zރބ Z Zޅ Zކއ Z Zވ 4{ Zފ Z Zދ Zތ Zލގ Z Zޏ Zސ Zޑ Y Z Zޓޔ Zޕ Z Z ޗ Zޘަ Zޙޚޣޛޝ Zޜ Z h Zޞޟ Z Zޠޡ Z Zޢ , Zޤ Zޥ Z  Z Zާ Zި Zީ Zުޫ Zެ Z Zޭ Zޮ  Zް޵ޱ Z޲ Z Z޳޴ Z Z ޶ Z Z޷ Z޸޹ Z Z  Z޻޼޽ Z޾޿ Z Z Z  Z  Z Z Z Z  Z Z Z Z Z Z Z Z Z Z J|L� Z Z Z Z  Z Z Z Z Z Z Z Z Z , Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z 4{ Z Z Z Z Z Z Z Z Z , Z  Z Z Z Z Z  Z Z Z ; Z  Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z Z Z Z  Z , Z!8"& Z#$ Z Z% Z ' ( Z) Z*3+/ Z,- Z Z. Z Y0 Z1 Z Z2 Y Z4 Z Z56 Z7 Z Z Y9>: Z; Z Z< Z= Z , Z?@E ZAB ZC Z ZD ZF ZG Z ZHI Z ZJK Z Z MY ZN ZOP Z ZQR Z ZST ZU Z ZVW ZX Z  ZZe[ Z\ Z Z] Z^ Z_ Z` Zab Z Zc Zd Z ކfj Zgh Z Zi Z ކk Zlt Zm Zn Zo Zpq Zr Z Zs 4{ Zu Z Zv Zw Zx Zyz Z Z{  Z}ߥ~ߏ Z Z߀߁ Z Z߂߃ Z߄ Z߅ߊ Z߆ Z߇߈ Z Z߉ Z ,ߋ Z Zߌ Zߍ Zߎ Y Zߐߠߑ Zߒߗ Zߓߔ Zߕ Z Zߖ Z  Zߘ Zߙߚ Z Zߛ Zߜ Zߝ Zߞߟ Z Z ߡ Z Zߢߣ Zߤ Z  Zߦ߻ Zߧ Zߨߩ߰ߪ Z Z߫߬ Z߭ Z Z߮߯ Z Z ߱߳ Z߲ Z  Zߴߵ Z Z߶߷ Z߸ Z߹ Z Zߺ Z Z߼߽߾ Z߿ Z Z  Z Z Z Z Z Z Z Z Y Z Z Z Z Z Z Œ        . .   ï `  ï ̀ s Z  ï à 7 ï ï Dz ï ` x ű Z   s  ї ї š š š� š š š š š š š š š š š š š š B šT š š š š š =Q1 š š  š) š š! š" š#& š$ š% š '( š š š* š+ š,- š. š š/ 0 š2 š3=4 š5 š š67 š8 š9 š: š;< š š š> š?@ šA šBGC šD šEF š � šH šI šJN šKLM š š OP š š šR šS š š beVW šXYZ [w\k]d^a_` [ \ Z [=bc \ ї ї [-ehfg [ ї [ їij [} ї d їlqmon ї Z xp ї ї _Lrust [ [ Z [v ї f їxyz}{| [ [ α \}~ 3@ ї ї \ \ ї ї ї ї l | d ї [ ї x [  H H < H H H H l H H H H l H l H l H H H H l  š H H H l H l H H m H H H H H H H < H H m$  š š š š š Z 3|   ï š š š š š š š š ` L ҉ ï ` ï r ׭ U ї š š š � : š W  š , c š + > B{ B > B{H$ š R A A A  5R EM�  > B& 5 k R H 4  R B A R @     5 5a  D R R < < > B S� R @  5 5a  D R R! < 5a >"# B S� š%3& š' š( >) š* š+ š, š-0. >/ > š > >1 >2 > š465 c 7=8:9  S;<  + B>B?@ S @' BA  SCE D FG + B @' BIcJXKQLOMN + š š + >P B B{RUS AT A V RW R Y\Z[ : , ( 5p]_^ R\ � RM �`a �b R\ � RMdekfigh 5 R ʗ 5j H ʗ A Almtnqop S  Brs B @' Suxvw  S y|z{  B B @'}~ S   š š    be  ї š ї = š d d 3@ ї ї ^< [- ї d š š            I  š š  š  š ( �  š š be š š = š š š  [= [ š ї R\ š c c c    " š š Em š š = š r r r r r r r r       r ї ї ї ї ] [ [ [ [ [ ї ї ^\ ї ї ї ї be ї be ї be ї š ƙ š š� š <u   š    š = š  š  š  ї Z Z Z Z \ Z Z \ Z Z Z Z \ \ x ї \m ї [! š š #4$1%(&' š mD d)0 *+ , - . / š š23 š š5:68 š7  š9 = š;=< š š> š?E š@ šA šBC š šD š E šFG š šH šIJOKM šL B šN š š APSQR š ( ( š T šVWXqYmZl[ š š\] š^ š_ š` š šab š šc šde šf šg šh š ši šj šk š B  š šnop d  = їrt їs ї šu švw šx š šyz š{| š} š š~ š š š š š š š š š š š š š š š š š š š š š š š š š š š š š � � � š š š ї š š x x x x x x x x x x x x x x x x " š š š š š š š š š š = š š ї be ї be ї be ї ї ї ї be ї ї ї ї ї be ї ї ї ' ' ї ї ' l l l l l l l H l š  = š š =kX* š š š š š š š š š  š š� š š š š š  š š š š  š š š  š š š š š š  š š š š š š š  š š š % š!" š# $ š&' š š( š) +- š, š.O/ <u0G1:26 š34 š5 š š > 78 9 š ;C<A=?> š ( k@ š  šB š @ šD šE š šF : šH šI šJ šKM šL , A �N š šPQ šR š šST šU šV šW š 5R šYeZ\[ [ š t]^ š  š_ š`a š šbc šd š š fh šg šij š  šl{meno špqrs}tw šu šv ? šxy c z{| ( (~ š š š š     š   š  ʗ 5p ʗ A H ʗ c           š        A 5 k ʗ ? ʗ < A : : D D D D D D > D : : A : � : � > : š  š H H H H H H H H 5 5p š A k c 5 B&      š       š   š š > > > > > > > > > š�  ,  >  ( š š š   š š š   š š  š š  =  š30.$ ;8 Œ ;8 ;8!"# Œ ;8 O ;8%+&)'( O O * O , - š / š O12 Z  y4X5? Œ67<8:9 bu ; be š= bu> be š be@KAGBDC be EF > H IJ LSMPNO > > їQR > > TV U > їW >YdZ O[`\^] O _ O >a Obc O > O s f šg šhriojl šk šmn  ( p š šq � їs їt їu їvw їxy Z їz ї ї|}~ =   š  š š š ї š š š š š š š š š š š š š š ( š š š  šw š š  1  < d d   < < H  H  H <     X     X H <     X <  H  s  # א ;    d #      א א א א א א א   א    �     <  א     א  < s   < א d H+ א $ א!" א א# א%( א& א' א א) א* א, א- א א./ א א0 א2Q3A4=596 א78 א :< d;  >? @ BJCGDF #E # HI # א KML NPO d א RlS_TZUXVW < d < HY < < [^\] < H < X `gadbc < ef H d hji <k msn oqp < r t u v šx šyz š{ | š} š~    š  š š = <u š š l š š  š     ̓ ̓ I h d h ̓ ̓  I d h h  I š <u š ї š ҉ š š š š š š š š š š  š š š š š š š A š š š   š d š š l  š l š š  š =  š š  š š š š š š š š š š š š š A š š A š š š š š š š š š š š š + š š š š š š š š +" � š š H š š š š š š š š š  š š š š š š š š š š B š  š š š š l š = š ! mT#$H%E&8' š( š) š š*+ š k, k- k./ k0 k1 k2 k3 k4 k k56 k k7 > k š9 š:;@<>=  ( š? š ( šACB š š D � šF š šG šIJKL š Mp šNOgPYQ šRV šSTU � š š W š šX š :Z š[a\^ š] š @'_`  šbecd ( šf š š A šhi šj škm šl cno < š qrxs št š šuv šw š š B šyz}{ š| š š D~ š š   š š š š š š : š š š š š š š š š š š  ҉ š    š  š š š  š  8 8 š š š  š š š š š š š š š š š š š š š  š š š  š ( š š ( š š   š š  ( š  š ҉ š  š š  š c k > š š = š š  mT š š ҉ š šk         8  � 8     8     B      8   ٍ ;+ ! " # $ %& ' ( )* 8, -3. /0 12 8 4 56 7 89 : 8<X= >H ? @ A BC DE FG 8I J K LR M NO P Q 8 S TU VW 8 YZ [ \]d^ _ `a b c 8 e f gh i j 8 lmxn oqp 8 r s tu v w 8 yz {| } ~   8         8     8        8  B B B B B B B B B B B B  B š mT š š š = š š 9 š = š š = š š š š  š š š š š š l š š š š ƨ ƨ ű ƨ ƨ a  ƨ ƨ Ñ ƨ   ƨ ƨ ƨ  š š  š = š š   š š š š (   š š š       �       ʗ š - š š š  $ !   <u Cl   =   <u <u     <u <u I :" :# : =%& t'+( ) <u* <u š, <u <u  š./0 š š1 š2 š3 š4 š5 š6 š78 š š B:;D š<=B š>? š@ šA  šC š š CyEHF šG š = šI`J[K š šLM šN š šOP šQV šRS š šTU š š W šX š šYZ š š š\] š^ š š_ š a šb šci šde š fg h š šjkwl šmn  o 5pq  šrs št šu š v  šxy} z{| J I~ J   I  š š š  š š š š š š š D š š š B š š  š š š ( š š š š š š B š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š @ š š š š š š š š š š š š š š š š š D š* š š š  H m$ H H m H l = H H H H H H H H H H m H H . H H H H H H H m š H� H H H H H  H = l  H H H m  H H š l < H H H H H H l H H H H H l&"! m4 l l  H m$#% H$ l š H H' H H( H) H H+ š H š-./0A12|3 š4 š5 š6 š7R8D9@:=; H H< H m$ H> H? H HA H HBC H H fEI HF HG HH H HJOKL H HMN H l H m HPQ H H H ST{U šV šWpXhY šZa[ š\ š š]^ š š_` š b šc š šde šf šg š ik šj š l šm š šno š šq šr šs št š šuv š šwx y z š š š}~ š š š š š š š š š š š š š š š š 5 š š š š š š š (  š            š  š (     š  š š ( ( ( ( ( ( ( ( ( ( ( (  ( ( ( ( ( ( ( (   > > > > > > > >  d  > > > >  š š š š š š š š š š š š š š š š š B š š š š ї <  d="� O ; " O ; O  O ;   3 O  ; ; 3 O ;8 ;8  3 O O ; O O ; ;8 O ;8 ! ;8 O 3 ;8#0$*%'& ;8 ;8 O() ;8 O ;8 O+-, ;8 ;8 O./ ;8 O ;8 O172534 ;8 O $ ;86 ;8 ;8 O8;9: ;8 O 3 O< 3 3 O>d?U@IAF OB ;8CDE ; O O ;GH ;8 O ;8 OJOKL ї be MN !PQ ї beR beST be bu be buV_WZXY ;8 O ;[\ ;8 O ;8] ^ ;`ba ;8 ;8 Oc ;8 ;8 Oerfkgih ;8 ;8 Oj ;8 ;8 Olomn ;8 O ;8 Opq ;8 O ;8 Bs|tv Ou ; w{x Oyz O ; O ; O ;} O~ O B O  O ;8 O 3 š H š š š š š š š š š š š š š š š š š B š š š ї H H H H H H m H H H H H = H l H H m H H H H H l H H H H H H H H l l l H H l H m H H P  =  H H š š  š š : š š : š š š š : š š  ( š k š  š š  š š š k š š < š š š š š š š     �     š H š š H š   š š š š š š  š š š š š š š š ?> t. ' H!"$ H# H m$%& m$ H H m(+ H)* H l _ H,- H H H/6031 H2 H < H H4 H5 mT H7: H8 H9 H m$;= H< H m$ m H š i$ š@  šBCDyEiFfGeH šIYJPKML be be NO bV їQVR їS їT ї їU bV їWX  ї 'Z`[ ї ї\ ї]^ ї_ ї ї be їa їb їcd ї ї be = gh = š = šjv škl ƨmsno : p q �r ( štu : wx = š ї šz š{| š} ҉~ š š š : š š > 5 š š š A š š  A š � � š š š  š š š š š š š  š š š š š š š š š š š š š š š Em š š š < š < š š š < š = = = = = = = = F = = = = i i i = = = = Ir =  ї š š š š š š š š š šG š  š š š š š š š > š š š  š š  ї m m m m m m m o m š \ \� \ \ \ \ \  \< š š - K K  K  K K K K K K K Q& K Q& K K K K K Q&% K K  ! " # $  Q&& K'( K Q& K) K* K+ K, K Q& š. š/ š0 š1 š2 š34 š586 š š7 > š š9 š:; š š >=> ї š š? š@A š šBC š šD šE šF š HIKJ š H šLu šMNcOZPUQS HR m$ H HT H HVX HW H HY H H l[`\^ H] H m H_ H m Ha Hb l Hdk Hefhg H m4 Hij H H H Hlqmo Hn H Hp H H Hr Hs H Ht l švw š kx š šyz š š{| š š}~ š B š š = 8 8 8 8 8 8 8 9 8 8 8 8 8 9 8 8 8 9 š  šl š š š š š š š š š š š š š š š š š H H m H H H H H H H H H H H m H H H m$ H = H H H H H l H l H H H H H l l l H H H H H H H H H H H H H H H H H H H H H H H  H H  H H  H H H H H H m$ H H H . H� H H H H m4   H H l H H H H H  H m H _ H H H H Hk>&! H H H H H H H H H H H" H#$% H H H H'0(-)+ H* H H H, H H H. H/ l H1724 H3 l H5 H6 H H H8;9: H H H l<= l H H H?Q@F HABD HC m HE H H HGLHJI H H H HK l HMPNO m4  H f H mR_SVT HU H H m4WZXY H H H l[\ H H]^ l l`gadbc H H H Hef . H H H Hhij l H H H = šmo šn s šp šqrsxt Hu Hvw H m < Hyz}{| m4 H 6 H H~ H H H l H H H H H H H H m$ H H l l l H H H H H H H l be š š š ї ї R\ š = š  š š š š š e š š š š š š š š ? š H H H H H m H H H H H  H H H m H H H H H H H H H H l š H H H H H H H H H H H H š H H H l m4 m H H H H H H H H H H H l H H H H H H H l H H H H H H l H l š š š� š š š š š š+ š    H H H m4 H l m H m H H H H H H H H H H H'#! H H H" H S H$ H%& H l l H H( H) H* H H H,-S š./ š0G1< š2 š3 š45 š š6 š7 š8 š9 š:; š @ š š=> š? š š@ šAB šC šD š šE šF > šH šI šJ š šK šLM š šN šO šPQ šR š š PTVU š š WdX šY šZ š š[\ š š]^ š š_` š šab š šc š � šfgi šh š mj škpl šm šn šo š š šqr}sztvu š š šw šxy š š š{ š| š ~ š š š š š  š š š   š = = = = = = = = i Z Z Z Z Ñ ї ]m [ ї x x x cA x x cA cA x \ ї [ ї š m š š š š š ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї be ї   š � š š š š š š š � š š š š š š � š � � � š š š š š š �        T   š  š š š š š š š š š š š š š  š š š� š š š š š š š š š š š š š š š š š š š š š š š š š š š š š $! " š# š š%&'[(M);*0 š+ š, š- š. š/ š 1 š2 š3 š4 š š56 š š78 š š9: š š <H š=>B š? š@ šA  šC šDFE š š G š š  šI šJK šL š š  šNOVP šQ š šR šS šTU š  š šW šXY šZ š š \ ]t^i_ š š`a šb šcd š šef šg šh š š šjko šl šm šn šp š šq šrs š š u švw{x šy šz š š| š š}~ š š š š š š š š  š š š š š š ( š š š š š š š š š š ( š š š š š š š š ( š š š š š š š š ( š š š š š š š š š š š š š š  B 5 B B B B B B B B c  š š š š š š š š š š  š  š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š < š š š š š š š� š š š  š š š š š š š š  š š š šp šoJ ,1 š š š š š š š š( # š! :" : š$& :% : š :' : š).*, :+ : š :- : š/ š :0 : š2 š34 š : š56? š7 š8 š9 š: š;< š š= :> : š@ š šA šBC šDFE : š : :G :H :I : šK šL ,MfNU šO šP šQR š šST š > šV š šWX šY š šZ š[\ š]a š^_` š > > šbdc š š >e š > šg šh š šij š škl šm šn š > š > q š šrs š štu šv š šwx šy šz š š{| š š}~ š š š š : š š š š š be š š  ӿ c  ӿ  1   B_ B_ B_  B_ 1 C? C? C?  š J c ӿ B_ ӿ B_ c ӿ 1 B_ 1         J J c J J J c J J  C? C?  C? C?  C? C?    c š  š š š š š š š š H š š š š B š š š š š  D : š š  ҉ š š š  �     \= [ ї  ї [} ї ї ї ї ї ї ї ї ї <L H š š'" š š š š ! š > š š#$ š% š& š š (5 š) š*+3,/ ʗ-.   š02 1  š ( š4 š ʗ6 š7@8>9 :< š; E] š= š š š? š ACB š š DG šEF š š Em šI šJK š = ї šMNRO šP šQ š ű š šS šT šUVvWhXaY\Z[ [- ї ї \]` [^_ ї ;8 ї Z їbecd [ Z [ їfg [ d d їiojmkl [ ї [} [ їn d 3@psqr ^| \m \ [tu _L 3@ \ їwxy}z|{ [ ї  _\ \M~ \ \= ї [} Z Z ї ї ї [ [ ^\ ; ї  ;8 š ;8 O ї ї [} ї [ ї ^\ [ Z š š š d ї [ Z ї [ ї ^ ї ї [ ї [- \  ї ї [ [ [} [ \ ї \ [ [ [ Z [- ї [ \  [} [} [} [} [} [} [} [} [} \ [} [} [} [} [} [}  ї \ [ ї \= \ [ ї \M ї ]= [ [- [} ї ї ї d [} ї [ Z ї [ ї ї [\(  š š š� H H l l l H m H f H H H m$ H H H H H H m . H  H m m$ H H H   š š š š š š š  š š š š š š š š š š %! š"$ š# š  l š& š' š š m)* š+-, š š .F š/ š0 š1293 š š457 (6 (  8  (: š š;< š= > ? @ A B CD E š ~GHnI\JUKPLO šM šN š š QT šR šS š šVXW š šY šZ š[ š š]d^` š_ š šab šc š Es šelfjgh ši š šk E šm š šosp š šqr š štu{vw š xy šz š š E] š|} š~ 8 š š š  š š š š š  š š  š š > š š H H H mT H mT H H  H H H H H H H H H H H H š š š  š š š š š š š š B š š Em š š  š š š š š š ?P š š š š š š š š š š š š š š š š B š š š š š š š š H š š m š š š š š š š š š š š š š š š š A D š š š š š š� š š š š . H  H H H H H H H H H H H H H H H l H H H# H H H H H H ! m" H H H$+%(&' H H H H)* m H H H H, H- H l/B0814 H23 H H H5 H67 H m$ l H9< H: H; H H=@>? H l H < HA H mCJDG HEF H H H HHI H H H HKLN HM l H HO H HQ2RSTUnVbW HXZ HY H H[a mD\ H]^ H H_` H H  H mchdf He l H Hg m4 Hiljk H H H Hm H H Houpsq H Hr H lt H H Hvyw H Hx H Hz|{ H H H}~ m H  H H H H H H l H m4 H H H l l l š H H H H l H H m H H H H = H H H l š H H H H H H m$ H H H H š H H H H H H l H H H H H m$ H H l H H l H H H H l H H H l H H H H  H H H l H < H H H m4 H H H H H H H H H H H H H = H H H H l H H H H H l H H  H H l H H l l l H H H)� š  H H H H H H H H   H H m4 H H H H H mD = H H H H H H m  H H H H l H!%"$ H# l š H H H& H' ƨ( H m4* š+ š, š- š. š š/ š0 š1 š B3= š45 š6 š7 š š89 š š: š; š< ( š> š Em@SAG šBCE šD š ҉F š š ŒH šIJ š K š C?LM C?N C?OP Q R C? T š šUV šW šX š šYZ š[ š : š])^_` ša šbc šdv še šf šg šh šijqknlm > H 5 kop <  ʗ Ars ( t š (u š (w š šxy š šz š{|} š~ ( š ( š š ( š š ҉ š š  š š š š š š š š > > > > > > > > > š > š š š D š š D š š > > > > > > > > > > D > > D > š š š  š š > š š š š š š š š š š š > š c >  š H H m H H H H H H H H m4 H H H H H = H H H H l H H H l H H l H m H H H l H H H H H š š H š š =� š š š š š š š š š š B  š š š š š š š š š š š  š š m š š  š š( š š š! š" š#$ š š%&' : > š š *f+b,L-6 š./ š0 š1 š24 š3 ( š5 š š š7 š8 9:; š<A= š š>? š@ š šBHCFD  E š  šG šI š šJ K šM^NWO šP š šQR šS šT š šU šV š X š šY šZ[ š š\] š š_ š š`a š š c šd š še H šg/hiqj š škl šm šn šo š šp š šr šstu{ Hvwyx H H Hz H H l|}~ H H H H H m$ H H H H H H H H H H H m$ H H H H H H H H H m H < H H š l š š H H H H H H H H ( H H H H H H H H H m$ H l H H H H H H l H H H H H H H H H    o        tI  ; l H H H H H l H H l H H H H H H H H H H l H H H H H H H H l H l H H H m H H H H H H H m � H H  H H H H H H  H H H H   H l H H l H H H H m$ H l H&  H H H H m H l H!#" H H H$% H H H l'*( H H) H l+- H, H m. H H H01C2< š34 š5 š š6 š78 š š9 š: š; š š=> š? š@ š šAB š š DElFXGN HHIK HJ l HLM H = H HOT HPQR H H =S š lUW HV H m H mYeZa[]\ H H H^`_ H š l H lbd Hc m4 H H Hfi Hgh H l H Hjk H l Hmn|orp Hq H mj Hsytwu H Hv = lx H 8 lz{ l H l H} H H~ H m H H H H H H H H H H H H H H m H H H H H H H H m4 H H H H H H H H H H š l l H  H H H = H = H l H = H H m4 H H H H H m4 mD m4 H H l H H H H H < H H H H H H H H H H H H H H H H l H l H H H H H H m l H H < H l l mT m m H H m H H l H = l . H m HY š� š š  š š  š š š š  š   š š  š š     š š š š  š š š š š k š š š   š š š 7!.")#& š$% š š ' š š(  š*+  š, š-  š/3 š0 š12 š š 4 š š5 š6 š 8I9D:= š; š< š >A š?@  š BC š   šE š šFGH š  š JTK š šLMON š š P šQ š šRS š š BU šV š šWX š k šZ[|\k š] š^ š_ š` ša šb šcd še š šfg šh ši šj š š Hl šmon š š p šq šr šs št šu šv šw šx šy šz š{ š š D} š ~ š  7 H H H . H H l H < H H H H H H H H m H H H H H H H H H H = H H š l H H H H H H H H H m$ HicQ  t  Z  G Z Z Z Z , , , 4{ Z Z Z  i i i i i i i i i F y Z 3_ y L ` L [ . s ü ƨ š  Œ 4 V Ʒ Ʒ s ˘ t  ü ! ! ! ! U ! . ! ! ! c Z :y y Z� Ʒ   ï ƨ š k 5     š   s ï š ߡ  z ü z s ï > 8 šON#     !" 7� $%3 Œ&'*() y ï  ï+0,/-. r ï  G Ʒ ï1 ï2 s4B5;697 Ʒ8 ï Ʒ Œ:  ï<= Z ï>@? Ʒ 7 rA r 8CJDIEGF Ʒ 8 H Ʒ i 7 ï K ïL ïM ï  7  P GR S T U ŒVWX  ZY^Z][\  r Z _`a  b ï ïdge šf š h t jks šl šm šn šo špq šr š š t š šuv šw šx šy šz š{ š| š} š~ š š š š c š P š š š š ? š d š š š š š š š š š B š B š B š š š š š š š B B B B B B B š B B B š B B B B B B š B B B B B š B B B B š B B B B B š B B B B B B B B B š B B B B š B B B B š B B B š š š?  ʗ D    N  š š H � š A š š > š š š š� š < š ] š B 5a D   F  . %  š Ī  š š 5 š! š       �" š#$ B5 > � B5&+') �( g �* š š Ī,- B H š/705 k12 š34 E> Rk E> 6 A š 5R8;9: B& š D B<= D ʗ >> > @kAYBOCJDGE š AF > A ʗH @ I D K šL šMN m S @PVQS šR R R\ šTU š š aWX š ( > šZ`[] š\ D ^_ Rk š ahbe >cd  B5  �f Ag : R\ij >  Dlmunroq 5p X šst A  : v|w{x >yz š E> š }~ > š D A Ĺ š A + š  B  RM > š W R\ @ c  š a @ m  š š š š š š š š š š š š š š Y š ` d š š š : š : š š : š š : š š >  š š š š š š š š d d d d E d d d 4 d E d d d  š š š š š ( š š š ( š š š š  š š š š š š š š š   F  š š š š š š 5&�   š š k š š š k  š š š  H k š š < š š š š k  š š š š š E] "! R > 5R #$ @ >% H š ' š š()+ š* š,3-0 š. š/ š1 š D2 š š4 B 6U7H š89F:A;><= š š? š@ š (BECD š š šG š šIQJO šK L M N šP š RS šT šV š šWX š š šZ[ š\]p^i_e` a šbc š E] šd E]fg 8 šh šjk š šl šmn šo šq{ šrsxt š šuvw š > š šy šz > š| š š} š~ š : š š  H š š  š    r    (  š (  š : š H$ �  š  š 5p 5 š š š  š > @ š š c š A š : B š š  P 5p š š 5 A š ( A  - S ( : A š , š c š c š š š š š š š š š š B 5 š > š > q  5p  k š š A 5p � ʗ  š 5 5 5 5 5 5 5 5 5 5 5 5 5  š < A A š   `       H<1 š 8 š 8  š š  ) š!"%# š š$ š & š'( D � š :*.+ š, š š-  š š/ š0 š2 8 š346 š5 E] š 78:9 8 7 ; 8 = >D?A@ š š šB C š šE šF šG šIwJ^ dKL šMTNQ OP šR šS š š UYV šWX š (Z\ [ ] š _s`a š bjcgd šef š š h ši š š (kpln šm š ( šo š q š šr < št šu š šv š xy šz š{~|} š d š š  š š 8 8 š 8 š 8 š š 8 š ߼ š 8 8 8 š 8 š š 8 š š š 8 E š š 8 š š š 8 š š š  š š š š š š š k š  š š (  š š k š š š    š  š 5 š š š š ŒC : š     š š š  � š  �    š š  š š : : : :   �  š š š š š š š š š š š š š š š ( š š š š� š ( š š š ( š š   š , š š š  š š š A š š š š � š/$  š š , š!#" š š : š %*&(' š : ) š :+-, š š . š š0;152 š34 š ( ( š6978 : < ʗ: š ʗ (< ,=@>? ʗ < < AB ( , A š šDETFI šGH š š dJK šL š šM NO š šP šQ šRS š ( šUV Em šWXvYgZa[^\] B&  @'_` + B š becd š k D š f B hoiljk  k : šmn ? B špsqr R tu c Hwxyz {| } ~    A š  > > B{ š š k š > š �   k k k k k k k I k k k k k k I X  A , š  : > š c 5 ? š   š     A š   A A c c < š ? š š š 5  > š š B&   c ? H >    š ( A š š š L š š š š š š š š š š š    � š š š š š š š š š š š H š Z š š      ł ł ł ł ł ł ł ł ł ~ ł   j  ł ł 4 ! "1#+$(%'& 6 ; ) * ě X ,0 j-. / ? ; ց2 3 ; 5E6 7 8?9= 7�:; 6< 7� > 7 6@D 4AB C 4 4 F G H I JK ~ ~ MNOa šPQ šR šS šT šU š šV šWX š šY šZ[ š š\ š] š^ š_` š  šb šc šd še šf šgsh ši šj šk š šl šm šno šp šq šr š š št šuv šw šx šy š šz{ š| š š} š~ š š š š  Z š =  Z P = = = = = = = = = = = = = = i =  Z Z  š  š š š š   �  � š š  š � š > ( A  š  š š š š š š š   š š š š š   š  š    š š š š š š š š š š š š š š š š š   š š  š š š  š š š š  C?  š š š š š� š š š ( š š š š š š š  š š š š š š š š š š š š š š > š=, š š š š š š! š"# š$ š š%& š š'( š) š* š š+ d š- š. š/ š0 š š12 š š3 š4 š5 š67 š š89 š: š; š š< d š>?F@ š šA šB šC šD šE š GZH šI šJ šKTLRMQNO š šP 5  š : >S > šUW šV š AXY A : A : š[\w]l^f_d`a š :b  c š e  š gih š jk 5 šmrnp šo š šq š ?su št š v š � šxyz}{| >  � š š~ š š : : > : š š š ( � š   š ? š , š 5 š  š š  F  8 š  š š š š   š  š     š š š š š š š Em š š š š š š š š  š š š š   (        š      (    B  � � > > š š� š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š B š š š��;N% š š š š š š! š"#$ ( š š&@'6 š()0 š* š+,. š- š / š ( A1 š2 š3 š45  š 5 š7 š š89 š š:; š<?= ( :> : š ( AA šBD šC š šEF šGKH šIJ š š L M š šO šPQ š šRSoTjU VXW š ( 5pYZb[ 5p\ 5p] 5p^ 5p_ 5p 5p`a 5p 5p c cc 5pd 5pef 5pg 5ph 5p 5pi 5p ck šl šmn š : : 5pu šqr (st š  š v šw šx šyz{| š (} š š~ ( š š ( ( š š ( š š š š š š š š š š š š š š š š š > š�: š š š š š š ( š š ( š š š  š š > š : š š š > > š š > š  > š š š š > š š š > š > š š  š š š š š > > š š š š š š > š š š š š š� š š š š š š š š  š š š š š š š š š š š > š š š���� š š� š� + š�� �� š� š� š š� š� š š� B š��%���� š� š š��� š�� š š� š� š�� š�� š š� B š�! š š�"�# š�$ š š �&�0�' š�(�+ š�) š�* š�, š�-�. š�/ š š > š�1�2 š�3�7�4�5 š �6 š �8 š�9 š š�<��=�s�>�N�?�G�@ š�A š š�B�C š š�D š�E�F š š�H�L�I�J š š�K š �M š š�O�P š �Q�r�R�`�S š�T�[�U�X 5�V�W š ( š�Y š�Z c š�\ š š�]�^�_  š š A�a�k�b�f�c�e�d š  š <�g š�h�i�j c š k�l�o�m�n š k > �p�q š š E] š�t�x�u š�v�w š �y� š�z�{�}�| š š�~ š� š� š� �� � š E] š� š�������� š š ��� � ���� < š š� A š�� š E> š������� š �� š :�� �� ( @ š��� š A D������ A >� š� š A š��� 5�� š š k� š š�  š�������� š�� š š c�� š� š < š c���� :  @ D� š �� š� š :�� š >� š�� š � ?�� š� š� š���� š ? š ?� š š ?����� š��� š c š D ,� š š�  ��� � š� š� š� A š� š��� A � š ,� š š� š ��S�#�� š����� š š� š Em��� š š š š� š�� š E š E E E E E E  E E E E E E E E E š š E] š š š š š š  š š š ! š š" š $2 š%& š'.(+) š š* š š,- š š =/ š0 š1 š  š3C4<5 š6 š7 š š89 š: š; š ( š=? š> š š@AB š š DELF š šG šH šI šJK š š MN š šO šPQ šR š š TUV~WbX_Y šZ š[ š\] š^ š š` š ša š cmdk šef šgih iuj F šl š šn šo špq|r šs št š šu šv šwx š šyz š{ š š } š : š š š š 8 š š  š š  š š š E]  š š š š š š š š š š š š B š  š š  š š ̀ š š š š : š š : š : š : š š : š š š : š š š š š š š š š š  š š š   š š š š š š c š š ( š š > š š š 7 š š š š š š  š š : š , š š š  š š š š  š š š  š š š  š š š � š š š Em š š š š š š š š  š š š š š š š š š  š š š š<1 š š !) š"#& š$ š% ( š' š( š ( š š*+ š, š-/ š. š (0 š ( š2:3 š4 š š56 š š78 š9 š š ( š; š = > ޳ @BABCED š šF šG šH š šIJW šK šL šMNUOR šPQ š š S šT š š šV šX Yf šZ[` š\]_^ š 5 H š adb š šc š še š ghsipjmkl ( š c (no š c š  šq šr š (tzuw šv k šxy k š š {~|}  š > š  + š š š š š ( š š š  š š š š š š š š š š š A š š  š š š š š š š š š š š š š š š š š š š  š š š , š š š š š š š š š š š   š š š š š š š š š š D š š d d E d d d iB d d d d  d d d d d d d  d š š š 8 š š š š š š š š š ( š š š ( š (  ( š� š � š š  š š    > : š + š ҉ š š š  š š š 5 š š š c š$! š š š š" š# š c%( š& š' š) š š* c š- š š./ š š0 š1 š23 š4 š š56 š š7 š89 š: š; š< š= š> š? š š@ šA š B{CDER F G HI J CNK L MQN OP ~  S =TUsV WXlY Zi[ \c]`^_ C2 C$ ab ͟ Cdfe ͬ C ͬgh ͬ   Cj k = CNm n o p qr cQt uv wx =yz} ={ =| = d6 =~ = = d6 = = = d6 = = d6 =  = =    Cy          d     P Cy =    I Cy P = Cy = C]  = C]  ҉ 3m C] C]  C]    Cy  d <u Cy Cy     =    ~ ~  d   Cy   =     I       l  Cy        �    =  8w = <u t      = Cy  Cy !  c 3p gG  ! "0 # $ % & ' () * +, -. / ł 1 2 34 5>6 7 8 9: ; < = . ?@ A BC DE F >H yI[JN KLM ` ˘ sOQ P 7R S  TU V  WX Y  Z  y Œ\ Œ]^ Œ_ Œ` Œ Œa Œbc Œ Œde Œf Œ ~ Œh ïi àj à xkln `m so r ï qr ҉ i stuvwx~y}z { |       ï ű ׭  ш ш ш ш ш ш J ш ш ш ш ш ш ш ƨ\ Z Z Z Z Z Z Z , Z  Z Z Z Z Z Z Z , Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z  Z Z Z Z Z  Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z , Z Z Z Z Z Z Z U , U Z Z Z  Z Z Z Z Z  Z)� Z Z Z Z Z Z Z , Z Z Z Z Z Z Z , Z Z Z Z Z  Z Z Z  Z Z Z Z Z h Z Z Z Z Z Z Z Z$ Z! Z" Z Z# Z % Z Z&' Z( Z  Z*B Z+,;-5. Z Z/ Z0132 Z , Z Z4 Z J Z6 Z7 Z8 Z9 Z: Z < Z Z=> Z Z?@ ZA Z Z  ZCDPE ZFK ZGH Z ZIJ Z  ZL ZM ZN Z ZO Z QV ZR ZS ZT ZU ; ZW Z ZXY ZZ Z[ Z Z ,]^_w`oahb Zc Z Zde Z Zf Zg , Z Zi Zjk Zl Zm Zn Z , Z Zp Zq Zr Zst Zu Zv Z Z xyz| Z{ Z }~      4{  Z Z Z Z  Z Z Z Z ޕ Z Z Z Z Z Z , Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z  Z Z Z Z Z Z  Z Z Z Z Z  Z Z Z Z Z Z Z , Z Z Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z Z Z Z _ Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z , Z Z  Z Z , Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z ; Z Z Z Z Z� Z Z Z Z Z Z Z Z Z h Z    Z  Z Z Z Z Z Z Z Z Z ކ Z ކ Z Z Z Z Z Z Z Z , Z!*" Z# Z$ Z Z% Z&' Z( Z) Z , Z+ Z, Z- Z Z./ Z Z0 Z12 Z  Z4g5a6 7P8 ƨ9G:?;<  s=> ï s @AB K KC KDE F K KHJ ïI Ʒ ïKML ҉ GNO ց ï Q R S TU V WX YZ [ \ ] ^ _ ` ƨb ҉cd ҉ >ef  ` h ïij ƨk} ïlmx norp q nst ƨ u Zvw Z U ,y{ z Z| ƨ~ ï Z ï Dz Q5 ï 2 ï ï ƨ ï ƨ ï ł ï r | ï ï d  ï  `  N     Œ ш  Z  ï   ܜ  Z Œ s           4    4  ï Œ ` Z  ï z ï Ʒ  V s c c ( c (  c 3|  ˘  š š š ? k V    G ï V V s 7 ` s 7 ï  i ï r ïe\�F Œ! ̀ V ï ï    9 9 9  9 9 9 9 9  9 9 9  9 s s s s s s s s G s ` ` "#7$' % & ï V( V `)* Z+, ( š-6. š š/ š0 š1 š2 š34 š5 š 5a š 5 8B Z9:A ;<?=> H H@ H ї i CDE r x ï GGYHI J yKSL MPNO ï ÑQR Z  Ñ TU r V WX Œ ï y rZ k [ ï G ] ƨ^_ ` za zbc Ld z fghijkrln ïm Ʒ ƙo pq ï  ï ƙs{tyuxvw 4N  ;8 Ʒ Ʒz ƙ ï |}~  Od   Od   = R  Ʒ  r ï Ʒ  Ʒ  . ï  ï ï Ʒ ƙ  L Z d d d 4 d  r Ʒ  ҉ 8 ƨ ï ƙ  r Ʒ ï ï ï ̀ ̀ r ̀ r ï ï ҉ ѧ Ʒ ï ï ï ï ï          ï  ï  d ̀  WS  Ʒ ï ï Od ` ` ï  ï Ʒ ï Ʒ r Ʒ  y s ˘  ï�  Ʒ r ï r  ƙ r Ʒ ï  `  Ʒ    ï  Ʒ ï  ƙ ï ï ï ï ï ּ Ʒ     š r ƙ s i!D"/#( $ %&'  Ʒ ï)- ï*+, ï  Ʒ  ï.  0162  Ʒ345 Œ ҉ s 78>9: o ; ű<=  > ï ?@ :ABC k š k šEWFPGLHJI ï  ïK Ʒ V ïMNO Ʒ QT ïR S ˘ UV ï à ïXbY\Z[ ï ˘ Ʒ ]_ ƙ^ ï `a ï Ʒ Ʒ rcf de  ï Ʒg ïh ï  ïjk{lqmp n o ï ̀ rxsvtu Ʒ š ï L Mvw ï  ïyz ï ƙ |} ï~ ï ï  ï Ʒ ˘ ï Ʒ  Ʒ     ï s  ҉  d  8 ƙ K y 8 ï ̀ ̀ ï ï ï Ʒ ï ï ï ƙ Ʒ ƙ ï   š K     ï  Ʒ ï k Ʒ  ƙ Ʒ > ï š y ï  Ʒ ï š       ï ï Ʒ ƙ ï ï Ʒ  ï ï > ï ˘ ï ï ï Qy ï Œ z à   8J 6D ï ï x ƙ ƙ  ï ï ï ï VG   ƙ Ʒ    �  ï  ï ƙ ï  UZ ï ï  ï   r ï Ʒ    Ʒ ï  ï Ʒ ï ï  ï   ï    ï s š G ï   Ʒ ƙ  ƙ K  B  3  '        4 4 ƙ ï  ! ˘ " # $ ˘  %  & = ( / ) ï * + ƙ ï , ï - Ʒ .  x  0 2 1 ï  Ʒ ƙ ï 4 @ 5 = ï 6 ï 7 ï 8 9 ; :  7  <    > ? ï ƨ  A ï ï  C e D P E L F I G ï H ï ï > J K d   ̀ M O ï N ƙ ˘ ï Q ^ R U S T ï Ʒ  3| V [ W Z  X ï Y ï m r Z \ ] W ƙ WS _ ï `  a ƙ b ï c d 7 ü  f j g  h Ʒ  i ï  k  l ï m p n o ü G ï q  r u s t ï v  w x  y  z  {  | }  ~ 4 ï x 4 x          r k G   s ï      s ƙ Œ à       z z ü  r E    ܹ s ï ƙ  Ʒ Z ű  ̀  V            ï š ï ï   Ʒ ï Z  ï QC             ï  ï  ƙ   ï š ï     Ʒ y ƙ Ʒ ï    ï         ï r ï  ï ̀  8      ï   s s Ʒ Ʒ Ʒ ` Ʒ  ï Ʒ Ʒ ï   `    ü ü r           3m        ï    ï V Ʒ Z ï �  ï    ï    Ʒ  Z  I  *                          ï      ï Z ï   6 ƙ y  % ! ̀ " ƙ ` #  $  & ' ƙ ( ï ) ï d + ; , 4 - 0  . / Ʒ ï  1 ï ï 2 3 ï Œ d 5 7 ï 6 ï ƙ ƙ 8 r 9 ï : Ʒ L ï < = @ >  ?  Œ ï A D Ʒ B Ʒ C > E G F Œ ï  H  k  J L K ï  ï M ï N O U P T Z Q R S m y š V W ï y  X L Y x L [  \ | ] f ï ^ _ d ` ï ï a b c ï z ï e Ʒ  g d h u i p j m k l j ł  n o 4 ;  q s r 4  t ց  v  w y  x  z { j ; ł }  ~  ƙ     Œ ï    ƙ ü ƙ         ƙ š ƙ   š ƙ ƙ  ƙ  ü    ƙ  Ʒ ƙ  Z  Z Z Z Z Z  Z Z Z Z  Z Z Z Z Z Z Z  Z Z Z  Z  Z  (    ï ï   s 6b Ñ s ï ƨ   ƨ      ï `  k   s  Ʒ  ` Œ y        x ï V   š  ű ï 3 ï   Œ Œ Œ Œ  Œ Œ Œ Œ Œ Œ \ ̀   ï Z ï ï r i   ƙ      ̀ }  ƙ à ƙ 9 ` s    ƙ  ̀ ̀ ̀  ̀ ̀ ̀ ̀ ̀ ̀ ̀ , } �   ƙ ƙ   ƙ   . ƙ       4    n   n n  n  n  n  n   n n  n   n n       ƙ  ƙ s ƙ š ! $ š " # ƙ ƨ  ̀ % & ' ƙ s š ƙ ) D * ƨ + à ҉ , - . G ï ƨ / 0 ? 1 ; 2  3 8 s 4 5 6 s G G 7 G s 9 s : G G s < ï Ʒ = > s s  @ L A B r C  ł E  F s G s ƨ H I P G J K M L ű ш Ʒ N O ï  à Z Q T  R  S  ҉ ï U V W ï y Ʒ X Y Z Z Z [ _ \ Z ] ^ Z 4{ ` Z a b Z 4{ d 5 e  f  g H h i w H j k q H l m H H n H o H p H H H r H s t H H u H v m H x H y H z  H { | H H } H ~ l H H  H H H H H H H H H H  H H H H H H   H H   H  H H H  H  H H H H  H  H H  H H H H H H H H H H  H H < H H H H  H H H H H < H H  H  H H  H H H H  H H H  H H H H H H   H H H m$ H H H  H d l       H H H H H H H H  H H m$ H H  H H    H H H H H  H H m$ H H H H H m$ H  H H  H H H H H  H H H H H  H H    H  H � H  H H  H  H  l H H  H  H  H H  H H H   H  H  H  H  H  H  H m$  H H   H  H m4 H H  H  H   ,  & H  H ! H " H # H $ H H % < H H ' ( H ) H * H H + m H - H . H / H H 0 1 3 2 H H l 4 H m$ H 6 f 7 [ 8 Q 9 H : H ; H < H = B H > H ? H @ A H l H H C D H E H H F G H H m$ I H J H K H L H H M N H H O P H H H H R S H T H U H V H W H H X H Y Z H m H H \ H ] ^ H _ H ` H a H H b c H H d H e H l g  h t H i j H k H l H H m H n H o p H H q r s H H H H H u H v w H x H y z H { H |  H } H ~ l H H m$ H H H  H l F l  m  m m  H m  l H H  H H l l m  H m H 1                         ł              TI  Ʒ y ï    x ï Z   Œ Z      r ű  r r V    ï y ï ü ü ü  ü ü  ü ü  ü ü L  ï  Ʒ Z         ï          ü Z  ˘  ï      Z  ƨ ï ï       Z `  Ʒ     Z s s Ʒ  ï � Y  !         c  Ʒ 6  s ï Z     Z s    y s z       ï r ҉     ï ш       i 4   ƨ ï Z  " G # 5 $ ' % & ï  ï ( ) ` G *  +  , -  .  /  0  1  2  3  4 \  6 D 7 8 ï Œ 9 i Œ : Œ ; Œ < = Œ > Œ ? Œ @ Œ A Œ Œ B Œ C Œ \ E F s  ƙ H R I O J N K Ʒ L  M M Ʒ P Q ` z Z r S V T U s Z  W X  > i Z  [ v \ o ] l ^ k Z _ ` Ñ Ñ a b Ñ Ñ c Ñ d Ñ e Ñ f Ñ g Ñ h i j Ñ L L Ñ d m n ű ï ï  p s q r  `  ï t u y  r ` w } x z y Z Z  { | ̀ Z s ~   ï Œ   G  Z s        ï s 6b   Z 7     ƙ z ˘  y Ʒ >        ï Z   i d    Ʒ s r  ï r i s  Œ Œ Œ  Œ Œ Œ Œ  Œ Œ Œ  Œ c a ` O y m          Z    Z Z Z  Z Z Z Z Z  Z Z  Z  Z  Z  Z Z Z Z Z  Z Z Z Z J Z Z Z Z Z Z  Z  Z  Z Z   Z Z Z Z , Z Z Z Z Z  Z Z ކ Z  Z Z  Z Z Z  Z Z Z Z Z  Z Z  Z Z  Z Z Z � Z Z Z Z 4{ Z Z Z Z Z Z Z  Z Z 4{ Z8( Z Z Z Z Z Y  Z Z Z Z Z  Z# Z Z Z!" Z  Z$ Z Z%& Z Z'  Z) Z*/ Z+, Z Z- Z.  Z0 Z Z1 Z23 Z4 Z Z56 Z Z7 Z h9N:G;@ Z<= Z Z> Z? Z ZAB ZC ZD ZE Z ZF Z  ZH ZI ZJK ZL ZM Z ކ wOYP ZQ Z ZR ZS ZTU Z ZVW ZX Z ޕ ZZa[ Z\ Z] Z Z^_ Z Z`  Z Zb Zcd Zehf Z Zg Z ; Zij Zk Z Zl Z 4{nopzq Zr Zs Z Ztu Z Zv Zwx Z Zy Y Z{|} Z~ Z Z Z Z Z Z , Z , Z Z Z Z , Z Z Z Z  Z Z  Z Z  Z Z Z Z  Z Z Z Z , Z Z Z Z Z Z Z Z Z Z ; Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z h Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z , Z Z Z Z Z Z Z k Z Z Z Z 4 Z Z Z Z Z Z , Z Z Z Z Z Z Z w Z Z Z Z Z Z  Z Z� Z Z Z Z Z Z Z 4{0  Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z  Z+ Z Z!" Z#%$ Z Z Z& Z' Z() Z Z* Z Y, Z- Z. Z Z/ Z 1]2I3D Z4596 Z Z78 Z Z : Z; Z< Z Z=>A? Z Z@ ZB ZC Z Z ޕE Z ZF ZG ZH ; Z ZJKRL ZM ZN Z ZOP ZQ Z Z SU ZT , ZV Z ZW ZXY ZZ Z[ Z Z\ Y Z^q Z_`j Zabgc Z Zd Zef Z Z  Zhi Z Z k Zl Zm Zn Zo Z Zp ޕ Zr Z Zs Zt Zu Zvw Z Zx Zz9{|}~ Z Z Z Z Z  Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z w Z Z Z , Z Z Z Z Z Z Z Z Z J Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z  Z Z Z , Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z  Z Z Z Z Z Z , Z Z Z , Z Z Z Z Z Z Z Z Z Z ; Z Z Z Z  Z Z Z Z Z  Z Z Z Z Z Z Z Z� Z   Z Z Z Z Z Z Z ; Z Z Z Z  Z Z  Z Z Z Z Z Z Z Z Z Z Z , Z Z ޕ Z 8! Z Z"# Z Z$%1 Z&',( Z Z)* Z Z+ Z - Z. Z/ Z Z0 Z 2 Z Z34 Z5 Z6 Z Z7 ކ Z  Z:;<o=^>S?L@FA Z ZBC ZD ZE Z Z G Z ZH ZI JK Z  ZM Z ZNO ZP Z ZQR Z Z ; ZT ZUVY ZW ZX  ZZ Z Z[\ Z Z] Z_ Z` Zagb Zc Zd Ze Zf Z Z , Zhi Zj Zk Zl Z Zmn Z h Zpq Zr Zstz Zuv Zw Zxy Z   Z{ Z Z|} Z~ Z Z U , U Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z             Z Z Z Z , Z Z Z Z Z Z  Z Z Z Z , Z Z Z Z , Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z 4{ Z Z Z Z Z Z Z  Z Z 4{ Z Z Z Z Z Z Z  Z Z Z Z Z Z , Z Z Z Z Z Z Z , ZB  Z Z Z Z Z Z� Z Z Z  Z Z Z Z Z Z Z , (  Z Z Z Z Z Z Z  Z Z Z Z J Z Z ޕ , Z Z Z Z Z!"% Z#$ Z Z & Z' Z Z Y)/* Z Z+ Z,- Z Z. Z071 Z Z2 Z34 Z Z5 Z6 , Z8>9 Z: Z Z; Z< Z= ކ Z Z?@ ZA Z Z C ZD Z ZE ZF ZGH ZI Z ZJ ZK ZL ZMN Z ZP ï ïQR ïS ï ïT ïU ïV ïWX ï ïYZ [ \ ] ^ _ ï Ʒ b ï ˘ Ʒdreof 7 Gg ïhi ïj ïk ïl ïm ïn ïpq ս 8  sxtw Ʒu ïv ï zyz 8{| (} ~            ï ï y Œ i Œ r Ʒ ҉ Z Œ Œ Œ Œ W Œ M Œ Œ Œ Œ Œ M y ï ï  ï x ׭ ü ï ł Q       Q        Q        Q         Q                 Q  � ш r ï Œ      TX š ҉   ҉ ̀   3| 7fa?9 ï% #!" š $ š &*')( š š ( š+,  - (. / 01 23 4 5 6 78 š : `;< ï 3m= ҉> V ï V@`A BNCHDFE Z  7 WG ƨ ILJK Œ x sM ü ï s üOP^QR ï ST :yU :yV :yW :y :yXY :yZ :y[ :y\ :y :y] : :y i_ Œ  bd c ƙ ïe ˘gjhi 7 z ky 6blmx 3|n ïo ïp ïq ïr ïs ït ïu ïvw ï 4! ï ï iz{| }~ Z ƨ ` s Z 8 ƙ   Q   ƙ ƙ  ƙ ƙ ƙ ï i  ï ï ï ï ƨ  ï  3| ï ܜ ƙ ï ï Qk     ܜ Ʒ ƙ Ʒ  Ʒ   3| ï V 8 ï ï  ï 3| y G   k ï ï l ü 3| x ï ` ï2 Z Z Z Z Z Z ޕ Z T*   k  T*   T* ï                         ï � ï ï ï T* T* T*  T*  T* ï ï T* ï )  ï    ï          '&    ! "  #$ %     ( XT *.+- , ï    /01    3g4N57 N6 /8?9< 4!: 4!; 8i ï=> ֐ m K D@K 4!AB 4!C ïD ïE ï ïF ïGH ïI ïJ ï 3 ïL 4!M C Qk ïOZPWQVRS R ƠTU WS Wa N ï N  XY N WS [c\_ N] 6^ : 4!`ba Q5 Wa 4! T 4!df ּe ּ 4! / Dzh ս սi սjk ս z սmznw o 3|p 3|q 3|rs 3| 3|t 3|uv 3| 3| ïx `y ` ={|  Œ :y}~ ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ï Ʒ ï   ï9 Z 7 ï ï ï ï ï ï ï ï ï ï ï ï ï ּ ï   S ;  ï      p9  ï   ï ï r i ï ï   ƨ  G ï ƨ s  . ï  ̀ ï Ʒ Ʒ ï ł ł Ʒ ƙ  d ï  Ʒ Ʒ ï s Ʒ ï ƙ  ƙ ƙ ï Ʒ ï   ï    � ï  ï ï r Ʒ  Z Ʒ 6 ï ï ï Ʒ  Ʒ  ï Ʒ  Ʒ ï r Ʒ  ƙ  ï ï Ʒ ï ï . Ʒ ï V - Ʒ ! ï" ï# ï$ ï% ï& ï' ï( ï ï)* ï ï+ ï, ï  ï/0 ` ï132  ï45 Ʒ V6 78 L ï L:;<f=N>H?A @  ƷBC ï ƷD šEFG š 5a š ?IK ïJ r ƷLM  Ʒ O[PSQR N Ʒ r ïTV ïU  ï ïWXY B š šZ B š\_]^ Œ Ʒ ï`a  ïb ` zcde Ʒ Z gvhniljk ï 7 ïm ï Ʒ ïot ïp q xrs Z 2 ïu Ʒ ïwx{yz Ʒ r ï|} ï ï~ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ O Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ O Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ O Ʒ Ʒ   Ʒ ï ƨ  z s r Ʒ ï ï  ï ƙ s š  š Œ ï V ҉ ï N  s Ʒ  Ʒ Ʒ Œ ս Ʒ ï  Ʒ s  Ʒ ï  ï  ï `   Od      TX      TX      TX   TXZ  y ƨ ï Ʒ!  ï  ` = Œ ` � ï s š š A ï > >  ï c c    s ï  ƨ  ï   ׭  Z   ï  V V ï ï"3#-$*%)& ï'(  Z  r s+, ̀ š  ï.0 /  ш12 ` G Ʒ4I5F6< Ʒ78; ޕ9: K ' z V s=>  ?@  A BC D  E  GH xJQKL Ʒ `M s N OP RYS T UWV   X  x ƨ[\]^_s`ladbc ï r ` Œef `g rhji k mpno ï Ʒ ï sqr y r yt{uxvw > s yz 7  s Z|}~ Z G Z   ï r   i ï ï Ʒ š ە y ï Œ  Z x 8 s  s r s s ï  Z   Ʒ   y s ƨ Z H    ï  ƙ  s Z y  ï Ñ i   Z ƨ  s Z  ï   Ʒ  Œ ï  r  Z ` ï Œ Z Ʒ ï ` ï ` ս ˘   x    W   W    � > > > > > > >  > >   ƙ Ʒ   s        R  Z  ï Œ s* '!" Z y#$ %& X Y() Z r  s+.,-  E Z d/0 ï s ï2345|6z7x8 l9 H:R;O< m=F>@? H H lADBC l H H H mE H HGH l m4ILJK H H H HMN H l lPQ d l H mSmTiUYV HW HX H H lZ][ H H\ H H^ mT_` l m$a lb lc ld le lf lg lh l l Hjkl H H H Hn Ho m4psq mr < H Htv <u m4 Hw H l Hy m$ l m{ H l H} mT~ = H H H H H = H H H H H H H H H H H H l H H H H . H H H H H H H H H H H m$ m$ m$ m$ l H m$ H H H H H H H H H  H Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku Ku   H H H H H m$ H H H H H H H H m4 H l H m$ H H l H H H H m$ H H H H H H l H H l H H H H l H m4 m H H H H l H H H H� m$ H l H  H H H S d H H l H H H H . H H l l3 H H l l H l'# H l H H  !" � $% m4 H& H l š(.),*+ š H H m$- H H /10 H H H2 H H l4=5;6 !7 H H8 H9 l:  H< l H>?@WANBDC l lEIF l G łH ł J lK lL lM l l lOSPRQ l ł l lTVU l l l l XqYeZ`[\ ł] ^ ց_ 8 ab c ցd flgh łi łj ցk ;) mn o ցp 6& r~sytu łv w ցx ց z{ ł| ց} ց  ł  ց 3_   ց  ł ł ;) ł ց   ց  ց  ł  ց  ց  ł 8  ց  ł  j  ց    ց  ł ł  8      ł   ;  ł  ց  ł       W  ł ł  ց    8  ł   4  ł ł  = S+�  + + + + + + + l : :  : : : : : : I l š l F l : l l G : š X&   !" l l# $ % l '( )* { g l ,E-6.2 l/ H01 H H v 34 H5 H 7>8;9 H: H v H<= H E ?B H@A H EC HD H H FJGH l š lI l FKO :LM HN H v P l HQR H TgU]VYWX l lZ[ l l\ l F^`_ l  laebdc l šf l F lhiujq k llmn  'o lp l l lrs Ht H E 6v}w lx lyz g D{ l| l l l~ H H E l   l l l l l S l l S l l l S l l S S l l l l S l l l S l l l l l l S l  l l l l l l H m4 m4 m4 m4 < m4 m4 < m4 m4 < m4 < < m4 < H H . l l H H l H l H H H H H H H H H H H H H H H H H H H H H H H H H H H H H < H H < H b H < r < < b        �   Ӑ    ~  a    O Cl>!    Cl Cl I Cl   Cl    i ":#$ Cl %5&+' ( )* i i,2-. i / i01 i 3 4  6 7 8 9  > ;= Cl<   Cl ?@GAFB  CD  E Cl  Cl HI J K L M Cl dDN dD PQ}RfS\ ClTU ClV WZ ClXY   Cl[   Cl]e iK^_ ` a bdc       gr Clhimj Cl Clkl Cl Cl n o p q  Cl s  tu v w| xy  z{     ~ L  L  Cl Cl  Cl Cl  (     Cl  dD  Cl  Cl      Cl         Cl Cl Cl Cl Cl dD Cl Cl Cl Cl Cl  N Cl N iK Cl ( Cl Cl Cl Cl Cl Cl % Cl Cl Cl   dQ dQ dQ dD dQ       dQ       Cl Cl Cl Cl Cl   Cl Cl Cl  /     iK  dQ dQ    Cl  iK    iK �  iK Cl   Cl   Cl  Cl Cl            Cl  dQ  dQ   dQ  iK% Cl Cl Cl Cl  !  " # i$ i & dD' (+) Cl* dD  dD, -. dD   dD0J1 2<3 45 6 79 8  :;  => Cl ? @FA B CE D  G H I KN dQL dQM Cl dQO`P_QV dQRSU dQT Cl dQ dQ ClWZXY dQ Cl dQ dQ[\ dQ dQ] Cl^ I Cl Cl dQ dQ bnc di ef g h jk l m op Pqtr s uy C]v wx = z~{| = } = = Cy CN  d  =  I I I I I I I I I I I I ϛ I I I I I I I I I I I ϛ I  = Ic   = = = Q    t     d  Cy d  Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ Ӑ    P d   d = <u P  =   CN  CN  I I I I I I I I I I I I I I  C] =  =�  dQ dD a CN  =   =    Cy   Cy  D"              ! 8w #9$6 %& '5()  *2+0,- = ./ C? 1 Cy Cy3 4 = C] 78 t =  t :; <B = >? @ A =CID EF = GH JPKOLM =N = = k  <u RSeTU V W X Y =Z =[\b ] ~^ d_`a d ԓ ԓ Ecd  = fg hit j CNklqmn  op <u t CNr s 8w u CN vw{xy  z Cy  |} ~            I   = I  = t Cy  Cy P           J      =   =  <u   t <u t I =   = I  i3  Cy          =   =  Cy  ҉    <u = Ve   I =   # #  Cy = =  Cy Cy Cy Cy     C? �    C? Cy Cy Cy  \  H  H H = H = H H = H < l H l H ! S% H"! : O : ] . .#$ . .& H'6(0)-*,+ l l š l./ l š13 2 l 45 l l š7L8I9H l:;>< = l l ? l@DA l lBC l lE lF l lG l H lJK š lMPNO l l Q lRZ lS lTU VW XY [ ]^v_` m$ H la Hbcodne Hf H Hg Hhik Hj lm H < lp H Hqr Hs H Htu H H Hw Hx Hyz H H{ H|}~ H H H H H H H H  H  H H H  H H H  H H H  H  H H H l l H H H l H H l H . H l l l H H H  H H H l H H H H H H H H H H H l H H l l H H H H < m4 H H  m4 H m4 = < m$ H š l m$ H H S l =  l l m4 m4 m4 m4 m4 m4 m4 H H m H l l H H H H H H H H H l� H H H H H H H  H H H H H H H   l H m H H H H H H l H l H m H m43' m4 m4! H H"#$ H % H& H H H(+ l) <* < H l, l-.1/0 m$ H H l2 S m l H5 H6:79 =8 H H l l;< l H=;>?@AtB]CRDIE �F HG HH H  HJ KNL HM H  HO HP HQ H H <SXT <U HV HW H , HY <Z H[ H\ H : H^i_d` ša Hb Hc H He <f Hg Hh H I Hjok <l Hm Hn H X Hp 6q Hr Hs H h Huvw|x <y Hz H{ H H} ,~ H H H  H < H H H 6 H  H H H E H š H H H v H š H H H H < H H H H < H H H  H  � H H H I H E H H H H < H H H H H H < < H H H H < H H H 6 H < H H H H š H H H H H H < š H H H H < H H H H E 6 ( < < < < < < < H < H H < š š <  < < š < F < F < F � < <� < < š š š  š š  <  F F < < š < š < < </( B š š š š š  ! @' @'" @'#$ @' @'%& @' @''  @'), * + š - š. š  š041 < <2 <3 H 56 š <79 <8 < š <: < H<�=>?n@WALBGC <D HE HF H HH I HJ HK H h HMRN <O HP HQ H I HS <T HU HV H  HXcY^Z <[ H\ H] H I H_ <` Ha Hb H & Hdie <f Hg Hh H 6 Hj 5k Hl Hm H  Hop{qvr <s Ht Hu H Hw <x Hy Hz H v H|} <~ H H H , H < H H H H < H H H  H < H H H v H < H H H E H < H H H H < H H H H < H H H h H < H H H H < H H H  H < H H H H < H H H 6 H D H H H v H < H H H h H < < < H H H H 4/ < < š < š š < š < š < š š < š < < š < H < < H < š < H H H H H H < H š < H H H H H H < HvkU š š š    ` R     N  š > R  - S r  š + ٤ W 5p E B!>"4#,$ š%)&( EM' ؐ A R b*+ r F - š.1/0 R23 F R 5 š6 š7;89  N: > P<= R ?R@IA šBECD E/ R\ @' DFG B E H Z gJ šKNLM R , E>OQ AP E� B{ E BS šT š A 5VbW^X[Y šZ š ( H\ š] š š c_ š` ša š ? Ac šdge šf š ( 5h ši šj š 5p š <lmrnpo < < Hq < H <stu < F F <wxy}z{ š <| < < F~ š š š q < < š š < š š < š š < < H < š < F < š < š < H H m4 H m4 m4 < m4 m4 < m4 < m4 < m4 < < <  < < š < < š š < <  < < š š < H H H H l m$ m4 m$ H H m4 H = H H l m H l l H H H H H H l l H H m4 m4 m$ m4 m4 m4 m4 H H H H H! v N Cy  t  Cy   <u CN  Cy        Cy   Cy � <u      =   = Cy  Cy  Cy     K  '         CN    <u Cy             t   I7  iX š   %   ! $ " # <u iX y O  & Cy t ( )  * + 6 , 5 - 0 . / š Cy 1 4 2   3 i CN I7 <u ~ 7 8 I 9 : =  ; > < = = d6  ? @ i A B i C i D i E i F i G i H i i j J  L M ~   O W  P  Q  R S   T U t Ic V I7  X Y c Z  [  \  ]  ^  _ `  a  b @  d e  f  g h  i  j  k  l  m n  o  p  q r  s  t  u  w  x   y  z { }  | <u  ~   C]               CN =    d    =  d <u   P   =  CN     CN                             ~  i$            t          <u P  = =    = = = = = = = =  = = = =        =  P     =    ~      Cy   CN           !!�! !! Cy t!! Cy ~!!! I !! i i ! !! !! !! 8w c 8w !! C] Ve  ! = =!!K !! !!' ! ! !! ~!!  !!!"!$ !# ~ =!%!&  !(!9!)!5!*  P!+ P!,!- !.!0 I!/ = Cy!1!3 ~!2 I !4 !6!7  !8 !: t!;!<!B !=!> !?!@!A P t !C!F!D!E P Cy !G !H P!I !J I7!L !M!N!R !O!P !Q ~!S !T!q!U !V!W !X!Z !Y =![!n!\ !]!^!i!_ !` !a !b!c !d !e!f !g!h !j !k !l !m I!o !p =  !r!s !t !u!v !w d !x!y!!z !{! I!|!}!!~ ! ! !! ! I ! !! I! ! ! ! ! ! #  Cy!x_!u!%!%7!#!#N š!!! š! š! t š!"_!!!!!!!!  š! š! š š! š!! š š !!! š @'!!! ! š! š � š!! ( k !!!!!! � , <!! š š !! ,!!!! š!! š š š! � š!!! š š ! š š! > š!!!! š! š! š! š !!! š � š š! , š!!!!!! : š �!! š š : š!  š!!!!! > š : :! š! š !! �  š! ! š >!" !" !!!! k!!! š :! : š!!! š!! š š �!! š! š! � E>! š @ !" š!!"� š �" š"" 5 š š >"""" š � š >" š : š" "" "" " š"" š š" š �" š š """""" š" � :" > D š" : � A " � " : :"!"<"""-"#"' <"$"% š :"& : "( �")"* ( š "+", š A š"."/ š A"0"2"1 š š �"3"7"4"5 : š š"6 � š"8":"9 š š >"; D š "="M">"E"? š"@"C"A"B 5 š � š š"D š �"F"I :"G :"H : š š"J"K š š"L š �"N"\"O"X"P"R š"Q � š"S"V"T"U , š š �"W ( > �"Y š š"Z š"[ š š"]"^ D A "`#,"a""b""c""d"o"e"j"f"h"g š  š"i > š"k"m"l š š A"n š š"p"u"q"s"r š š >"t š š "v""w"y š"x š "z"{ >"| :"}""~""" :" : š"" : š : š"""" : š : š"" : š : š"""""" :"" š : š : š"" : š : š"""" : š : š" : : š" š """""""" š A c š" š" š š" š" š" š A"""" š"" š D š"""" ( >" š > š""""  š" š š >"" š : š" A š"""""""" š : š @ š""" , š š >"" š""" š @'" š š �"""" š H š""" š š :" š š :"""""" š" š " š š"""" š > š" š "" š" > š š" >"""" š"" š š " š 5 š" š @'" š"#&"#"#"""""" š EM �"" š � š "#"#� D D# š �# >## ## ## > š ># A ># š A# š +### š š 4## š : š## #### š# E 5## D � � ,### š E> # š D#! #"#$ @## : š#% A š#' š#( #) #* #+ š#-#;#.#6#/ š#0#5 š#1 #2 #3 š#4 : š š �#7#9#8 š š :#: š š #<#J#=#H#>#G#?#E#@#A š #B#C š š#D š H š#F š > : š#I š š  š#K#L#M š � š , š#O#P š#Q š š#R#S#u#T#i#U#[#V š š#W#X#Y � > š#Z D š#\#f >#]#^#b >#_#`#a š : >#c#d š > >#e š k #g#h š #j#l >#k ( A#m#n : š#o š š#p#q#s š#r š#t š š #v##w##x##y##z#~ š#{#|#} š � � š A### : š ## š####### > š ># ># ># > > š# š# š# š ># > š# š# š# š# š š# š > š# � š##### š# š @ š š D š# š# � š###### � š š## š  š �### š # š# > š## š >## š > š# š k### š#### š# 5 > š š##### A š ## : š � š### š## �# š :## š# � š 5p š 5## š > 4#$## ## š š# š# š#### š š# š š #$## š# t š#$I#$%###### š > š# � >#### š## š š# # š#### ### š � š >### š# š � š D#$#$#$� š A � > š$$$$ š  $ 5p �$$ š$ $ $ � H š$ $ š$$ š$$$$$ š$ š š >$$ š$ š > š > >$ >$$ š >$ > š$$!$ š š$ š $"$$$# D � š š$&$/$'$) š$( $*$. š$+ $, $- š š >$0$3$1$2 5 š c$4$B š$5$6$;$7$9$8 > š$: š > š$<$?$=$> � š D A$@$A � š D H$C$F š$D$E š � ,$G š$H š @ A$J$w$K$b$L$U$M$N H š$O$R $P $Q š H$S H$T H š$V$Z š$W$X$Y A š >$[$_$\$^ >$]  š $` š$a E/ š 5 š$c$d$k š$e$f$h$g š š >$i š$j š $l$o$m$n H š A c$p$s š$q$r š š$t š$u$v � š $x$~$y$|$z${ š E/ A š š$} > $$$$$ š$$ D > $ š$$$ š :$ > : š$$$$$$ š$ š > :$ D š$ š$ k E/ $ D >$ >$ > š š$ š$$$ $$ š š$ š $$$ š$ š$ š B$ B$$ š š B š $ š š$$ š$%)$$ š$ š$$ š$$ š$$$ š$$$$$ š$ < $ š  š$ š š$ š š$ š$ š$ š$ <$$ š š <$ š$ š š$ š :$%$$$ š š$ š$$ š š$ š$$ š š$ š$$ š š$ ( š$$$$$ š š$ š$ š $ š$ š$ š$$$$$$$ š š$ š$$ š$ š š A$ š š$ š$ š$ š$  š$ š$ š š$ š$$ š$ š š c$ š$ š š$ š$$ š š$$ š š A š$ š$%� š š% B š%%%% š% š%% š š š% % % š% % š ( š%% š š (% š š%%% š%% š š% š% š% š%% š š%% š š% 5R š š% š% %! š š%"%# š%$ š%% š%& š š%' š%( A š š%*%+ %, %- %.%/ %0 %1 %2%3 %4 %5 %6 %8%%9%K š%: %;%< š š%=%> š š%?%@ š š%A%B š š%C%D š š%E%F š%G š%H š%I š š%J RM š%L š%M%e %N%O š%P%R%Q š š%S š%T š%U š%V š%W%\%X š%Y š š%Z š%[ š%]%a%^ š%_ %` š š š%b%c š%d š š%f%%g%%h%l%i š š%j š%k š%m š%n%p š%o š %q š%r%z%s%w%t%v%u H š H š š%x š%y ( %{%%|%%}%~ c 5 % < : <%%%% > � � (%%  c B H%%%% E š%%% š š% š š 8 š% š% š š%%%% š%%%%%%% š š % % % š %% % š%%% c š k %% c% > ʗ c%%%%% š%% H ( š% š% š% ( %%% š% % <% š š%% c  š% š š% š š%% š š%% š B š%L%8%/G%*_%(&%'%& d%%&@%&%%%%%%% Ʒ% Z ï V%%% Ʒ Ʒ%% y ï Z Ñ%%%%%%  Ʒ ï%% ï%%%% G r Z %% Z z x %%%%%%%%  r %% ƙ Ʒ Z %%%% x ï Ʒ % Q ü%%%%%  ï%% ï y&�&&& x i ҉  &&"&&&&&& & & ï y  ï& & &&&& d :y Ʒ&& ï ` ü Œ&&&&&& s ï Œ r & V&& && Œ Z Ʒ&!   &#&2&$&+&%&(&&&'  s ű &)&* :y ƙ&,&/&-&.  s Œ&0&1  &3&9&4&6&5 s  &7&8 k ï ï d&:&=&;&< Ʒ ە  z&>&? s ҉ 7&A&y&B&`&C&R&D&K&E&H&F&G ƙ 8 Ʒ &I&J  &L&O&M&N x 7 s&P&Q  Œ &S&Z&T&W&U&V Ʒ  &X&Y Z ƙ &[&] ï&\  &^&_ x Œ ƨ 6b&a&m&b&g&c&e ï&d ï Z&f Ʒ ï&h&j&i Z&k&l z r y &n&t&o&r&p&q ƙ Z 2 ƙ&s š &u&w &v s &x  c&z d&{ d&| d&}& &~  &&   d&&&&&&&&&&&& s `&  &&&&& Ʒ&   &  r& & r &&& 7& c Ʒ&&&&&& ï &&  k ï 7&&&& L ï && Ʒ ï&&&&&&&& ց š && s&  t Œ &&&&  &&& && Y ï ە&&&& &  && x  š&&&& ̀& S Œ ҉ &&  6b Z&&&&&&&& y& r i&& ï  Z ї&&&& ï s && Œ& g ƨ Ʒ&&&&& Z ï&& & & & & & s &&&& V8  s&& Ʒ `&'�&&&&&& Z š G ï&& à  Ñ r&&&& 7 Z ï&&  ï '''''' V Z ` ''  ` 7 z' ' ' ' Ʒ š' ' ï G s''''U''0''"'''''' ` Œ '' ` Z `'''' y  Z' '! r ï Z'#'*'$'''%'& r ƨ > Z'(') x ս z '+'- ', ` ï'.'/  '1'A'2';'3'6'4'5 z i s'7': ï'8'9    s '<'?'='> N ƙ y'@ ï'B'L'C'I'D'H'E 'F'G E b * r ï'J'K ƨ Ʒ i `'M'R'N'Q'O ƨ'P à ƨ 'S'T Z 'V'u'W'f'X']'Y'['Z ە'\ ï Œ'^'c'_'`  ï'a'b ;8 ;8 ('d'e ѧ  s'g'n'h'k'i'j r L z'l'm s'o'r'p'q Ʒ  Z's't s x  'v''w'~'x'{'y ï 'z <'|'} ï ҉ `'''' ï i '' ƙ 8 ƙ'' ƨ s '''''' ï s s ï'' s Z Ʒ V'''' r G' ' y y' y'' y y'' y' y y'' y X y'' s '''''''''''' Ʒ Œ ï'' V ە 3| Ʒ'''' N ï''  Ʒ V Z'''''' à s z'' ï  s Z'''' G ''   '' Ʒ ï ï'''''' ' G Z''  G''''  ï  ï''' ''' P P' P > P >  '''''' s  Z' ï c'''' ï  ï'' s ï ï '('''''''' ƨ Z W Z'' r r ï''''' Z ' % ï r' ï V'''''' Z Z '' O ï ï(�(((  š Ʒ Z(( s ï V ((((( ( ( y  y( ( ï ï L(((( Z Ʒ ï(( ƨ ï (((((( y ï x(( d x y((#(("( (! ï ($(% Z j >(')+(((()(b(*(G(+(9(,(3(-(0(.(/ ï ƨ(1(2 y ï s Z(4(7(5(6 ƨ s  š Z(8 r (:(@(;(>(<(= Z ü G Z(? Œ (A(D(B(C Z d' (E(F s ï(H(V(I(P(J(M(K(L ƨ (N(O Z s ƙ ï(Q(S r(R `(T(U  ï r(W(](X([(Y(Z s ï (\ ï  N(^(` (_ ̀ r (a y Z(c((d(u(e(n(f(i(g(h Œ i (j(m(k Z (l < i (o(r(p(q ƨ  :y(s(t š s Ʒ Œ(v({(w(y(x ï ű ï(z y (|(~(} Z ѧ(( ˘ r( Ʒ( ̀ ̀ ((((((((  i(( ï s Z ƨ((( ï Œ ( ï ((((( ï 8(( s ƨ(((( ï ƙ(( ƙ  Z (((((((((((( ï à i ((( ü Z(( Z( Z( Z Z(( Z Z(( Z Z( : Z Ʒ y(((( s V ï((    ï(((((( à((( ;8 š ` ` s(( r ((((  (( ҉ Ʒ G(((((((( ï Œ š (( ï ((((  Y ï(( Z ï ï s(((((( (( i ш i((((    r(( 3@ Z() (((((((( y ï 3m ƨ(( s (((( ï  à(( ï s  ï()())�) ` ï 3|))  ` š)) )) Œ Ʒ Ʒ) ) Œ ҉ š) ))))))) Ʒ ï ))  ï s )))) Z k  G)) ` y Z))$))!)) s ï )")# ƨ Z )%)()&)' s ï s )))* ï ƨ ),))-)).)L)/)=)0)7)1)4)2)3 Z   )5)6 ׭ Ʒ ű ï)8): Z)9 Q <);)< Z ï y `)>)E)?)B)@)A ï y )C)D ï ï)F)I)G)H Z ` ƨ)J)K  k  ï)M)w)N)p)O)e)P)d)Q )R)[)S  )T)U )V  )W )X)Y  )Z  tI )\ )] )^ )_ )` )a)b  )c  tI )f)o )g)h Œ)i)l Œ)j Œ)k Œ 4l Œ)m Œ)n Œ 4l ï )q)t)r)s ҉ ҉)u)v , 6 )x))y)|)z){ r Z)}) ï)~))  ֞   )) ï) >)) ш Œ ï)))))))))) ï  )) > ̀ ï )))) ï Z ѧ ï)) ƨ )))))) Z )) ))) ï Z r  y)))) Œ Z) H)) H)) H)) H) H) H) H H) H H)) H) H X ï) ï y)))))))) ï ï )) Ʒ ))) Ʒ ï s)) ï Z Ʒ )))))) à )) Z Z s))))  ` Ʒ ە))  s)*)))))))))) Z ï s ))  ƨ ܜ))) ï ï ) )))))) ï Ʒ s)) ` )))) d ̀ Z )) Ʒ ˘ Z )*))))) Z ш)) Ʒ )*)*� `  ƨ Z* ( r** ****  ҉ z ە * > * ** * r Z r s** Œ Z ű r**1**"****** Ʒ  ** Z k Z V** *** ï ކ ƨ Ʒ Z*! š ï*#***$*'*%*& Z i *(*) Ʒ ï ï *+*.*,*- ï r*/*0  ï Œ i*2*M*3*F*4*C*5*@*6 Ʒ Z*7*8 Z*9 Z*: Z*; Z*< Z*= Z*> Z*? Z Z Y*A Z ü*B 7 *D*E r y 3|*G*J*H*I s  s ï*K*L  ï*N*X*O*R*P*Q ƨ  *S*V*T *U ּ ï ּ*W  X y*Y*\*Z*[  Ʒ *]*^  r*`,*a+*b**c**d**e*v*f*p*g*j*h*i 2 8 ï *k*l i  ű*m *n*o ï *q*s Ʒ*r Z*t*u Z ï *w**x*{*y*z ï ޳ *|**}**~* r Z** Œ W W ~* Œ** à 4/ 4/**** ï ï ** ï ******** Ʒ s ï i** Ʒ ï i**** z ** ï r ****** Œ ** ï š Z****  ` ƨ** 7 ï* Z** s  :y r********** ï ** ï s ï**** ï Ʒ ** s i Z ******   ï**  ï ï y**** r s ** ƨ r 3 ****** ï* ƨ ï** ï s**** Ʒ ï **   ****** i ï **  r i I**** ü k V <u** Z Z <u*+[*+*+ ****** i ï 7 ** ï s r**** ï*+ *+� + + + ++ + + + O x V+ ++ ++ + ˘ Ʒ ++ Z Œ ï ++++ Z 7 ï ï+ ï++K++!++++ Ʒ Ʒ++ 7 `+"+%+#+$ > Œ Z +&+' Ʒ +( T* L+)+*+9++ L+, L+-+3+. L+/+2 L+0 L+1 R= L R= L+4 L+5+8+6 R= L+7 R= L R= L+: L+;+B+< L+= L+>+A L+? L+@ Q L Q L+C L+D+G +E +F R=+H L+I L+J L +L+T+M+P+N+O Œ ï à+Q+R Z ` +S T +U+X+V+W ƙ x s +Y+Z s ׭ ̀+\++]+o+^+e+_+b+`+a r  +c+d ï +f+l+g+k +h+i+j X M z+m+n Z  +p+y+q+v+r+u+s y+t 6 p ˘ 8+w+x ƨ  ƨ+z++{+ +|+}  +~+++  + +  + + ++  ++   d ++ ш Ʒ  ս++++++++ s i Z s + W ++++ Z s  ++ ï 7 s ++++++ ̀ ï++ V++++ Z + Œ Z +,7+++++++++++++ +  Z Œ++ Z Ʒ ű V++++ L Z ï+++ + ց ց > ++++++ s+++ ( <  c ҉ ï++ ï Z x ++++ > y ++ 3| ̀++++++++ ï i++  Ʒ ҉ x++++ ` y Ʒ ï+ ܜ ++++++ ű  i++ ++ h w `  š++++ ï + i y+,+,++++++ ƨ à ++ ` s +,+,� Ʒ i ,  Z ,, ,,,, ï ` s `, , Z Ʒ Œ ƙ, ,, , , , F ,, Z Q V ,,(,,",,,, d,,, Q 7 ű, ï, ï O, ,! Œ Ʒ Z ï,#,&,$,% r  s,'   ƨ,),0,*,-,+,, Z r  ƨ,.,/ ] r,1,4,2,3 T* i ,5,6  s ,8,w,9,X,:,I,;,B,<,?,=,> ƙ Ʒ ,@,A  ï `,C,F,D,E  s ,G,H Z  ƨ ï,J,Q,K,N,L,M ̀ i ,O,P s ,R,U,S,T r ƨ  ,V,W Ʒ Z y r,Y,h,Z,a,[,^,\,] Z Ʒ ,_,` ï ,b,e,c,d ƨ Z ï,f,g ˘ ï ƨ ,i,p,j,m,k,l  Z ï,n,o ˘ Z ,q,t,r,s d ï r,u,v ƨ ,x,,y,,z,,{,~,|,} ï Ʒ,, Ʒ  s,,,, ï Z Ʒ,,  , 02 ,,,,,, ï ƨ,,, ս ҉ Z,, ï s z Z,,,, Z  d,, ˘ ҉,,,,,,,, ` Z Z ,, y Ʒ ,,,,  z à,, ս Z,,,,,, , K,,  i ,,,, ï ,, Ñ 7 š ,.,-p,-&,,,,,,,,,, ` r ,, Z r Ʒ Z,,, ï ,,  ï ï ű,,,,,, à,, O Ʒ ï,,,, ց,, Y s WD,, ï s 4,-,,,,,, ш  ` Z, Z Z `,,,, Ʒ i  ï,, y,-,,,,, Z, Z, Z, Z, Z, Z Z W Z,, Z, Z, Z, Z Z, Z W Z, Z-�- Z- Z- Z- Z Z- Z W-- Z- Z- - Z- Z- Z- Z Z- Z W Z- Z-- Z- Z- Z- Z Z- Z W------ Z Ʒ Ʒ à-- ï Ʒ - -#-!-"  ` r-$-%  ï  `-'-P-(-;-)-4-*-1-+-0-, ï---/-. ë N ï 6b-2-3 ï z -5-8-6-7 Z Œ-9-: ï-<-I-=-@->-? ï s -A-E -B-C-D ï-F-G-H r-J-M-K-L ƨ d Ʒ-N-O  Ʒ -Q-b-R-Y-S-V-T-U s s i-W-X Ʒ ï š-Z-]-[-\  ѧ `-^-a ï-_ H-` A r -c-j-d-g-e-f  s-h-i i Ʒ -k-n-l-m   s -o ˘ `-q--r--s--t--u-z-v-y-w x-x ƽ Œ -{-| 7-} ï-~- Ñ Ñ---- ` ï -- ï  i------ s ƨ ï -- ҉ Z ---- ï Z -- ï ï- :j Z-------- y s-- ƨ  ----  y ï -- --- i y 1-- 1- 1 1- 1-- 1- 1 1- 1 ׭ ------ ï-- s s G ï---  7 i ï Z---- `- - YB-- 7 Z ---------- i  --  y ----  `  ï-- ï Ʒ ѧ G------ ܹ ̀ s Z-- ï c ---- Œ ï à -- i--- Ñ B Ñ -------- - ï---- ï Œ Œ --  Ʒ-.�---- ï i-- ï ű ҉.... Z š Œ .. Œ . .. .  . .  . . .   ....e..:..&...... ƨ .. Ʒ L ˘ Z..#.." .. .!  T  Z .$.% s  ƨ.'.1.(./.)...*.,.+ s i 5.-  2 .0 s .2.5.3.4 r ü .6.7 Ʒ.8 ˘ >.9 P >.;.J.<.C.=.@.>.? y ƨ Œ .A.B ˘  à .D.G.E.F ƨ .H.I Ʒ (.K.T.L.Q.M.P.N r.O r .R.S .U.b.V.W  Z.X.Y ï.Z ï ï.[ ï.\.] ï ï.^._ ï.` ï.a ï ï .c.d Ʒ .f..g.w.h.q.i.n.j.k 7.l Ʒ .m U.o.p Œ z .r.t Z.s Z .u.v 9% ï ï .x..y.|.z.{ Z s i.}.~ G Ʒ ҉.... s s .. Œ . ï ƨ.. ƨ ƨ. ƨ.. ƨ ƨ ........ ï c.. s Z  ˘.... s... KH S.. . ;.. # % K9 .. Z ...... ƨ `  s.. `.. . Z .. Z s ............ Ʒ ` ï.. ï š Z....  ï s.. Z 7  s.... s. š `.. s ׭ Z.... ï i ï s.. s ï ˘ Ʒ...... Z. .. :y ҉ Œ ..... E C <...  ..  s ` s...... ï  .. Z Z ï.... y ï. . ;8 ;8 ; . ш 7././ ./.... Z  ./. ./� 5  Ʒ //// r Z // Ʒ / / / s G / ///// s ̀ i// Ʒ  Ʒ >////  ï ï/ x `//)//#// // š ï Œ/!/"  Z k/$/& ï/% /'/( i  Ʒ Ñ/*/@/+/=/,/</- Œ/. ï ּ// ּ/0 ּ/1/2/7 ּ/3 ּ/4/5 ּ/6 ּ ï ּ/8 ּ/9 ּ/: ּ ּ/; ּ ï  />/? Ʒ ./A/D/B/C  /E/F >   /H4H/I1/J0s/K//L//M/n/N/]/O/V/P/S/Q/R ü Ʒ Œ ƨ/T/U :y ƙ /W/Z/X/Y k ׭/[/\ Ʒ ï /^/i/_/f/`/c/a ï/b R C R /d/e /g/h ï y /j/k Z /l/m ï /o//p/w/q/t/r/s ` ï /u/v Ʒ x Ʒ/x/{/y/z r ï 7 /|/ à/}/~ C O C ï k////// š Œ Œ// Z  Z //// 3| z  // š ï ////////// r Z//   Z ш//// :y Ʒ Z ű// G s ƨ//////  // G L Z //// i  ü s//   ï 8//////// ƨ r/ ï// G  r//// ï//  S  V ï// W ////// ï ï // Z (////  ï ƨ ï// Œ ï  /0//0///////// y  i// ű ï/ Ʒ m//// Z s/ // / ,l// // Ʒ / / / / //// X H // s /////// š/ ̀ ׭ Ʒ// s 0�00 d00 000000 0 0 ƨ i0 Z0 s [ s00  ܹ ï 0000 `  00  ï 000000 s0  00,0 0+ 0!0" W W0# W0$0% W0& W0' W0( W0) W W0* W Ʒ ï0- s0. 6000Q010>02080305 ï04  0607 ̀ ƨ 090;0: ï  ï0<0= 7 0?0H0@0E0A0B 0C 0D 0F0G y Œ 0I0N0J0K   Ñ0L0M ł 0O0P  ï ï 0R0a0S0Z0T0W0U0V ï ł 0X0Y 0[0^0\0] ï 7 ï 70_0` x 0b0l0c0h0d0e ï Ʒ0f Z0g y 6 y0i0j y 0k ï ̀0m0p0n0o 7  Œ0q0r š 0t1-0u00v00w00x00y0|0z0{ 7 Z0}0 0~00 š  5  y0000  00 y s  ï000000 Z s 000 00   W 0000 00 0 00 0 00 0 0  ï 00  y00000000 s  000 < ƙ 00 8 Ʒ ï0000 r 7 Ʒ ï00 8  i ܜ000000 =  ׭ 00 y Z 0000  d z ѧ000 0 y 6 y 000 ƙ 00000000000  š d V00  Z0000 Ʒ0 i Z s0 ï ï `0000 0  n00 s i ű s0000 6b000 - m < 6b00 Ʒ s  01 000000 ï 00 Œ \ Œ00 à Z0000 ű ï 01� s1 ï 41 411 41 41 41 41 41 41 4 ƨ 41 1$1 111  s11 k 111 Z11111  K F11 F1 Z  Z1 F Z F11 K1!1# Z1" Z Z F1%1*1&1) 1'1( K  š1+1, ˘  >1.1~1/1[101@111812151314 1617 ï Z i 191>1:1=1; ł1< 4 ł 1? 1A1H1B1E1C1D  y  1F1G ï  Z1I1X1J1L Œ1K  1M1N1O r r1P1Q r1R r1S r1T r1U r r1V1W r Z r1Y1Z y G1\1k1]1c1^1a1_1` s k1b  1d1g1e1f ï i1h1j V1i i Q r1l1w1m1s1n1o :y Z1p ï1q1r R 4/ 3 R1t1v1u ű  š  Ʒ1x1{1y1z Ʒ  y1|1} š Ʒ s1111111111 ï H 11 ï s11 r 1111  ҉ 11 1111 š š11 š1 š1 š š1 š11 š š ? š111111 š1 š A11 š1 A1 š1 š 1 š š 111111 111 Z 11 ï 111 s ï1  Œ11111111 ï Œ Z11 Œ ï 7 Z1111 Ʒ Z 11 ` s111111 ï  y ï11 k y Z 1111   ї11 s 13 1212/1211111111 ï s111 G11 ` ï ш š ï1111 ׭ ï i11   111111 7 ƨ ï11 r ƨ 1111  Z1 11 ü š 12� Ʒ ` 22222222 ï2 22 2 2 2 2 2 2 2 65 G22 Z ƙ Z 2 ï ׭2222 x 22 ׭ Œ Q22$22!22 V Ʒ 2"2#  s  s2%2*2&2' Z Ʒ2( > 2) 2+2, ` 2- 2. ł 202x212j222923262425 ` Z 2728 y  Z2:2f2;2< s  ï2=2>2J2? 2@ 2A 2B2C 2D 2E2H2F2G < H 2I  2K 2L 2M2\ 2N 2O2P2U2Q2S 2R s 2T 2V2Y2W2X s d X H2Z2[  X  2]2^2b 2_2` 2a H 2c 2d 2e H2g 2h2i ;8 ;82k2r2l2o2m2n y Ʒ s 2p2q Ʒ ս Œ Ʒ2s2u2t ï2v2w ï k ï 2y22z22{2}2|  Ʒ 2~2  Œ Z 2222 ï s ï Œ22 Z ï 222222  ï ׭ ï22 ƨ s 8 `22 2 7222 62 X y  s222222222222 ˘  ï22 ` Z2222 L ە ï Ʒ22 ï  ï222222   ï2 ï ï 2222 VG Z ï Z2 ï22222222  Z Œ 22 ï š ï2222 s ï y ƨ22 Z ï Ʒ Z222222 ű   š22 z `  2222 ` Z 22   2222222222 7 ï ï 22 s  222 Z ` 2222 Z Z22 x Z222222 š Z 22  ï ï2222 ï >22 22 ˘ 7232323�22 r Ʒ i33 s 7 š3333 # s G33 3 3 3 3 3 3 3 u ׭333333 ï  G33  3333  ƨ 33 Z   3!33"3m3#3E3$3/3%3*3&3(3' ï ï 3) 3+3-3, Z ` 3.  303;3137323633 ï3435 383:39 ̀ u Tv Z 3<3>3= y `3?3D `3@3A x3B h3C x x h ï x3F3U3G3N3H3K3I3J   Z3L3M z  ܹ3O3R3P3Q  ï  Ʒ3S3T s Œ r3V3g3W3d3X3Y ƨ 3Z 3[ 3\ 3] 3^ 3_ 3`3a 3b 3c ł 3e3f s Ʒ s3h3k3i3j  ï3l ` 3n33o33p3~3q3{3r3z 3s3t 3u 3v3x 3w 3y  ' š ƙ3|3} i 3333 Z y Q 33 i33 7 7 r ï333333 x Q `33 ï Œ 3333 ï 333  j3 j Œ r33333333 Œ r >33 ï i x Ñ3333 š Z33 y Z i `3333333 G [ Ñ r 33 ҉ Ʒ 3333 Z 33 7 Z33333333333 ï ` 33 ï > s 3333 V i ƨ ï33 ï ƨ  ü333333  s à33  ï  Ʒ3333 ï s Ʒ `33 š 33333333 y s33 8 3 3 ï O ï3333 x Z Ʒ 33   333333  ï Ʒ33 3 Tg  ` 3333 y Z  33  Ʒ  34 34343434� 7 ׭ t44   744 44 ï y44 ł ł4 4 ? 4 4 ` ï ە 444444 Ʒ 7 44 Z š 4444 s44 š ( š s44  UZ  4!434"4,4#4&4$4%  s 4'4* 4(4) 7  74+  3| ï4-404.4/ G Œ  à4142 r ű G :y444;45484647 Œ  > ï494: r4<4?4=4>  s 4@4A Z y4B š4C4D š š4E4F š š4G š4I64J5`4K44L44M4p4N4]4O4V4P4S4Q4R Ʒ 74T4U ï r ƨ Ʒ4W4Z4X4Y s ï G Z4[4\ Z s ; ޳4^4e4_4b4`4a Ñ  ï T:4c4d Œ 4f4m4g4l4h4j4i 4k 7 4n4o ï ̀4q44r4y4s4v4t4u Ʒ Z s4w4x  ̀ y 4z4| 4{ Ʒ 4}4~ Ʒ ƨ ï 8444444  Z 4 ƨ4444  Ʒ ï44 4 Z ˘4 ˘ w4444444444 y s Ʒ44 Z :y Ʒ4444 = ƨ44  s 444444 ï 444 `  x 4444 `44 à 3 à ` ï44  44444444 ƨ Œ 44  Ʒ  4444 W  44 7 r444444 y Ʒ s44 Z s 444 444 s Z `44 ï  s i454444444444 ü ï V 4 ï G4444 Z ` Œ 44 Ʒ Z 44444 Z Z 44 ï  4444 > 44 Z r45444444 Z = ï 44 4 R4 R ` ï4545� Ʒ 55 :y 55 55 55 i ï 5 5  ˘ ï 5 555  r 55 5 Z5  ܜ 55;55,55$5555 Œ š5 s 5 X55# 5 5!5" ƨ ï s 4/ 4 r5%5(5&5' Œ ƨ ` 5)5+ o5*   5-545.515/50 G  i5253 Ʒ k55585657 Ʒ  595: ƨ Ʒ d ï5<5K5=5D5>5A5?5@ z s ï5B5C Œ  Ñ ï5E5H5F5G s 5I5J Z Ʒ G5L5U5M5R5N5Q5O 5P  ` ҉5S5T ï ш Z ű5V5\5W5[ Œ5X5Y5Z 8Z 8 8 8Z y ѧ5]5_ r5^  r 5a65b55c55d5u5e5n5f5k5g5j5h 5i š ( š s 5l5m ց ï5o5r5p5q Z y Z5s5t x  ï 5v5|5w5y5x ï s ï5z5{  Z L 5}55~5 r ű  55 s ű5 Z 5 6 55555555 ׭ ï5 ï55 A A F55 š ï W5555 Ʒ r5  Œ555555 Ʒ 5 x r 5 r 5555  ƨ ս 55 s š 5555555555 s r  55 ï Z 5555 s d55  Ñ ƨ555555 Œ s 3| 55 Z 5 555 .5 .5 .5 .5 . U . . 5555 Ʒ :y 55 y s Ʒ55555555 Ʒ Z `55 Ʒ s Ʒ 5555  Œ5 5 š5 š5 š š55 š š55 š5 š š5  š55 Z y555555 s ƙ ƙ 5 5 Œ5 R à 4/5555 ï55 5 5 555 5 5 56� c ҉  s66F66"6666 66 66  Z 6 6 Ñ ï ƙ y6 666 s Z ï 66 ï Ʒ Ʒ 666666  66  ƨ 6666  Ʒ 6 6!  6#646$6+6%6(6&6' ս ï ˘6)6* ҉ s ű6,616-606. ű L6/ 6263 ï  Ʒ 656<66696768 Œ 6:6; s  Y6=6C6>6B 6?6@6A M& ˘ ï6D6E ï 7 6G6g6H6Y6I6P6J6M6K6L ï ƙ Œ G6N6O  z6Q6T6R6S ׭ ï :y6U6V > 6W ï6X ï Dz6Z6a6[6^6\6] Ʒ 6_6` s s 76b6e6c6d Z y 6f  6h6w6i6p6j6m6k6l   ƙ6n6o Z :y 6q6t6r6s Z s ï6u6v ű 6x6~6y6{6z i6|6} i s  6666 ` x 66 Z 6767/666666666666 s s `66   666  Ʒ66 Z  Œ 666666 š à 66666 ;86 ;8 ;866 ;86 ;8 ;86 ;866 ;8 ;86 ;8 ;66 x L L x Ñ `6666 ` i 66 ï s 666666 6 i66  Z s66666 i66 P666 P6 <W666 <W mz <W <666 <W6 <W66  666666 , < K Z66 Z  j6666 P <W <I x6 P 7 P s Ʒ66 Z y Ʒ666666 ű ҉ š Z66 Ʒ Œ s6 U 6666   ƨ66 Z Ʒ ە ѧ6766666666 Œ  Z66 s ï66 6 ü6 š Z7�7 7777 ƨ ̀77 77 ƙ Œ 7 7 7 7  Œ s 7 ш Z77 777777 7 ` Œ 7 Z7777 T* ` Œ 77 7 7 7!7'7"7$ 7# ` 7%7& s ޳ Z7(7,7)7+ 7* C s ï7-7. ƨ ï y707y717\727M737F74777576 s Z ű787E79 x7: 7; 7< 7= 7> 7?7@ 7A7C7B 7D Q& 7G7J7H7I r s7K7L Ʒ  i7N7U7O7R7P7Q y V Œ7S7T k 7V7Y7W7X 7 ˘ s 7Z7[ WD s s ï7]7l7^7e7_7b7`7a  s y Œ7c7d Œ  ï 7f7i7g7h Ʒ 7j7k Z ï7m7s7n7q7o7p s  7r ï i7t7w7u7v G Z 7x ï ` ƨ7z77{77|77}77~7 r Ʒ Z 77 7 s ƨ7777 >  Z ƨ77  ï 777777 ƨ 77 s V Ʒ 7777 s i Ʒ777 `77 = =77 = =7 =7 =77 =7 = = ܫ r 7777777 ï s77 r š s 7777 Ʒ s 7 ï 7 ˘ ҉777777 ï 7 77 r y ï777 7777 Ʒ i WD y77 ƙ ï 78D787777777777 Z ï 7 Z š7777 ` ï77 ï  77777 x G77 7 š7  5 2 Z7777 G r Z77 š 77777777 Œ ï ` s77 \ Z ï 7777 y Z à y77 Z  Ʒ s777777 s 7 i7 K š K77 ï 8�888 ƨ Ʒ ]88 U 88 s Ʒ 8 8(8 88 88 88 8 Ʒ s88 ˘ V ï 8888 ï ƨ88   88!8888  7 ï88 r ï8"8%8#8$ < 3| Œ8&8' Z 8)878*818+8.8,8- ï  8/80 Z š82858384 Z s ï86 Z Z s888=898<8:8; ï  V WD8>8A8?8@  r Œ8B8C L ï  ï8E88F8g8G8U8H8O8I8L8J8K s 7 ƙ 8M8N  s8P8S8Q8R Q Z s8T  `8V8]8W8Z8X8Y  V 8[8\  Ʒ8^8a8_8`  ï  r8b8d 8c  à8e š8f š >8h8u8i8n8j8m8k8l G š y 8o8r8p8q y  :y8s8t ҉ Ʒ Z 8v8~8w8{8x8y ï ï8z  Œ8|8}  Z88 Z8 ` x88 s s Œ8888888888 ƙ s88 G  r 8888   s G88 Z s  ï888888  8 8 ѧ � ѧ88 888  ű s s Z8888 r s r Ʒ88 ï ƨ 88888888 s ƙ 88 š   ˘8888 s  s Z88 :y k ï888888 Z ï Ʒ 88 y ï 8888 N s ҉ `88  8B8=W8:8989e898888888888 Q888 ѧ Ñ ï8 à8 4/ à88 x c Ʒ8888  r ï88 ï ѧ 888888 7 s Œ d88 ƨ ە ƙ8888 8 š8 š 88   89898888 Z  888 Q&  89� Z 9999 7 99 ` 7  9 99 9 9 9   8 s9 r ï 9999 ï ü99 š ï 99899&999999  G ï ï9 Z9 9#9!9" Z s9$9%  Z 9'919(9.9)9* d 79+9,9- s Z9/90 Z r92959394 Z 9697 Z i 999U9:9H9;9E9<9? 9= Œ9> 4l Œ9@9B9A ï ï 3|9C9D s S i9F9G à ï y 9I9R9J9K 9L 9M 9N9O 9P 9Q ,l 9S9T Œ 7 Œ9V9]9W9Z 9X9Y ƨ o ï9[9\ Œ s ˘9^9b9_9a Z9` % 9c9d  Z ű9f99g99h9u9i9p9j9m9k9l i 8 ï9n9o Ñ s ï9q9s9r r9t G9v9}9w9z9x9y 3| 9{9|  ï  9~999  Z   9 Ʒ ƨ99999999 :y ƙ .99 Z 9999 L99  99 i r9999 99 ˘ à99 Ʒ ï 99 `9 Z 99   9999999999   Ʒ `99 y 9999 ƨ y 99 ï Œ 999999  Ʒ Z 99 ` Z ï9999 ` 9 ƨ y99999999 i r9 99 ן ן Z9 Z `9999 ï ï 99 :y ` r9999 9  ƨ99 ` Ʒ 9999  s99 ï 99 = 9:t9:19:99999999  99 99 ï O ï Ʒ r9999  x99 Q  9:9999  r G 9:� Q5 ї  ï::::  ï :: ï à : :!: :: :: :: V: L L :: ï Z ï: ł:: ł::  M ; y::::  r y :: s  WD:: s :":+:#:(:$:':% :& s G s :):* > r r ƨ:,:. Z:- :/:0  WD :2:S:3:B:4:;:5:8:6:7 d ű :9::  Ʒ :<:?:=:>   Œ:@:A ˘ :C:J:D:G:E:F r Z:H:I ï š :K:N:L:M G  ˘ `:O:R :P :Q < ï:T:f:U:^:V:Y:W:X š ï  :Z:[ :\:] š ( š:_:d:`:a 7:b :c Œ Œ :e ] s:g:m:h:j Ʒ:i :k:l ҉  ï:n:q:o:p  Z  :r:s ƙ Z :u::v::w::x::y:|:z:{ ˘  3|:}:~  r :::: Ʒ  7::   `::::::   7 z:: ܹ ƨ :::: ƨ Ñ ï ::  s Œ:::::::: ï ƨ:: s :::: ï :: Z Ʒ  ü:::::: s : r :::   ::  à ::::::::::  s ::  Ʒ :::: r s:: š ï  :::: ï: ï:: ï :::: ï G :  ƨ:::::::: 3m: V:: X < T:: WD Z ` Œ:::: :: :y : Z: 4 Z:::::: ` ï Ñ:: y WD L :::: Z: I: <u h r V:: Ʒ s :<:;:;;:;:; :;:;�:: Z r ;; G  ` ;;;; Ʒ i s ;;  x ; ;; ;; ; ; ł; ł; ; � s;; ` Z ;;;; y ű ;  ;;-;;';;"; ;! Œ  i;#;& ï;$ <;% < k R=;(;* ;) 7 ;+;,  Ʒ ï;.;5;/;2;0;1  Ʒ ;3;4 i  y;6;8 ï;7 ;9;: ƙ š Z ű;<;\;=;L;>;E;?;B;@;A ` y;C;D ï y ;F;I;G;H  š z ;J;K Z x Ʒ;M;T;N;Q;O;P > i `;R;S Ʒ ;U;W;V r r;X;[;Y ;Z ` ` 7  >;];l;^;e;_;b;`;a 4N > s ;c;d V ܹ;f;h;g r s;i;k ;j WD Wa ;m;t;n;q;o;p ï i ƨ Z;r;s Ʒ ï WD ߰;u;;v;;w;z;x;y Œ Z ` s Ʒ;{;| Ʒ Ʒ;} Ʒ;~; Ʒ Ʒ; Ʒ;; Ʒ Ʒ; Ʒ Z x;;; s ;  } s Z;;;;;;;;;;;; N Z ;; H Q ;;;;; s;  u  Z ;; i Z 2 r;;;;;;  ;; Ʒ;  ; ; ;; Z N ï ;; ;;;;;  ` ;; Œ s;;;;;; ˘ Z r;;  ï;;; ï;; s ;;;;;;;;;; Ʒ ï ;; ҉ ;;;;  Ʒ Œ ï;; x ƙ; ;; 8 8 ;;;;;; ï Z ;; ï ï ;;;; ű š s;;  r Z;;;;;;;; Wa r Z;;  ;;;; Ʒ š ;; ï ; ï; ï O;<�;;;; G ` `;; ƙ d<<<< ս r <<<  < ï < << <S< <2< <!< <<<<< Z k<<<< + ߰ <<  Q^ Q5 Qk<<  Z Z <<<< ű << ƙ s 5C<"<+<#<&<$<% Œ   <'<*<( y ï<) ï  <,</<-<. s Ʒ ï<0<1 Z Z <3<D<4<><5<8<6<7 Ñ  ҉ s<9<: ï d ƨ<;<<<= ƨ<?<A <@  Z<B<C   <E<L<F<I<G<H Z ƨ ƨ Ñ<J<K ï<M<P<N<O ï <Q<R Wa ѧ ` ï<T<u<U<d<V<]<W<Z<X<Y ƨ š ï 7<[<\ ï  <^<a<_<` s z ܹ<b<c s ܹ 7<e<l<f<i<g<h  Ʒ<j<k s ƨ <m<r<n<q<o <p 6 <s<t Z y  x<v<<w<~<x<{<y<z . WD š<|<} ˘ ï <<<< s<<<<< << << Z <<<<<< 7 ï< Dz  7<<< ï š ï<< ï < < š à <=<<<<<<<<<< r<< s ` ï<<<< ï x< >< <<<<<<< j 6& ց << 8  6< < 65 ł<< s r <<<<<< s y Ʒ WD<< Z ƨ ï<<<<  r ï ï <<<<<<<< L Ʒ N Z<< Ʒ ˘ Z<<<<  e <<< Œ 4^ Œ<< 7 <=<=<= <<<<<< < < < < < <  < < < < < < <  <<< < < < < < <  < < < < < < =�   == y z== == :y y= ï R= = = Ñ  ==/========  ƨ== 3| ==== Ʒ ü == WD s `= =)=!=$="=# ï WD=%=( =&=' y y  V=*=,=+ ` ï=-=.  ï x =0=?=1=8=2=5=3=4 ï WD š=6=7 Z  `=9=<=:=; š ===>  z=@=F=A=C=B  Z =D=E ̀ Z=G=J=H=I k %  ï=K=L Ʒ =M =N ҉=O ҉=P ҉=Q ҉ ҉=R ҉=S ҉=T ҉=U=V ҉ ҉ =X?=Y>=Z>?=[==\==]=o=^=h=_=b=`=a x  =c=d Z ƨ ш=e=f=g ï r s=i=l=j=k Ʒ ű 3m=m=n G 4 Ʒ y=p=w=q=t=r=s  ƨ k=u=v ̀  =x={=y=z Q ` ш à =| =}=~=  3 L l======== ƨ 3m== ï  y==== Ʒ ە ׭== Z y ====== V `= ï= F F== Œ Ʒ Œ==== ===== == == = = == = = == ==== = === === === = = = = == == = = = = = == = = = ==== :y ï  ==  ï Œ======== s=  y== G ï ==== L i ` Z== Z Ʒ ====== ï š ׭=  ===== š `= ߿ ` Ʒ Œ= = i 4 4=>+=>$=> == = => =>=>>� š>> š> š A> š 5p H š> š> š š> š> š > >> >> š>> š> š A>> 5p H >> š> š k š ? š> š> š>> š> 5p H>> k 5p H >!>#>" WD ï ƨ Z>%>(>&>' Wa>)>* Wa >,>8>->0>.>/ z Z >1>7>2 >3 >4 >5>6 ׭ ï>9><>:>; 7 V ƨ>=>> ï >@>>A>j>B>R>C>I>D>G>E>F s ï >H ï `>J>M>K>L  x >N>Q >O à>P à 4/ >S>Z>T>W>U>V ` à  >X>Y  >[>]>\  >^>_ s ҉ >` >a >b>c >d >e>f >g >h>i *>k>y>l>s>m>p>n>o  s ` >q>r Z  >t>w>u>v ` s ƙ>x  ï `>z>>{>~>|>}  ï [ >> > r> r 8Z x ƨ>>>> s i G r>> ï Ʒ ƨ>>>>>>>>>> ï >  y> Z `>>>>   Ʒ>> 7 r >>>>>> > ە>> ە ە>> ە ە> ە z `>> ` ` Œ>>>> Z >> ` ׭>>>>>>>> 7 j>> ƨ š>>>> y s>> ` ` Z>>>>>> y ` ` >> `> k> + : à>>>> G d Z>> ï ƨ k ە>?Q>?>>>>>>>>>>  > 7 Œ>>>> ï y ï >> ս Œ i>>>>>>> ű ƙ> ƙ  >> s s >>>> s  ï>> Z z>?>>>>>> i Ʒ >>  r ï>?�>> ` ҉ s ï? ï s ƨ?? ????   Z ??  Œ `? ?? ?  s r ս?? Œ ï Œ ??/?? ????? ï i??  s s ???? ˘ i? ?!?(?"?%?#?$ ` ƨ Z?&?'  r?)?,?*?+ Œ ƨ ?-?.  ;8 ?0?>?1?8?2?5?3?4 y ` ?6?7  :y Œ?9?<?:?; ï r  Z ƙ?= ƨ???F?@?C?A?B s š ƙ ƨ?D?E  s ï ?G?J?H?I Z  Z ƨ?K?N?L ?M ?O?P s n?R??S?o?T?c?U?\?V?Y?W?X  ƨ ƨ?Z?[ 7 ?]?a?^?_ `?` ѧ Z?b  Q?d?k?e?h?f?g ƙ i ?i?j ƨ s Z ?l ï?m?n r Œ Œ ?p??q??r?u?s?t s ï Z V?v? ï?w ?x ?y?z??{ <f <f?| <f?} <f?~ <f?? <f <f? <f? <f <f? <f? <f? <f? <f ƨ ????  ƨ Z ?? Z `? ???? ?? ?? ? ? ? Q& ? ?????? Z s à ? `???? ??? Tg   T ە?? ƨ Z?????????? 7 ˘?? ƨ s???? r? r? r r? r? r? r? r? r?? r? r ܿ r?? y ??? G r  ?????? Z s s? Z i ???? Z  ??   ƨ 7???????? Ʒ r?  ? s ???? à Œ  ƨ??  ???? ï?  ? > ???? Z Ʒ?? P ?? s  ƨ?A+?@?@B?@!?@?@ @�@@@ ƨ@ r@@  Z y Ñ@@ k z ű ƙ@ @@ @ @ @ Wa ȗ : y @@ ` @@@@@@  r @@ V s V @@@@ WD ï Z @@ Œ  7 ï@"@1@#@*@$@'@%@& ƙ ƨ Œ @(@)  ` ï@+@.@,@- ï s ƨ@/@0 ` š @2@;@3@8@4@5 Z @6 s@7 s R@9@: ï @<@?@=@> @@@A s r `@C@h@D@S@E@K@F@H@G ï y @I@J  d @L@P@M@N @O s : I@Q@R @T@]@U@Z@V@W Ʒ Z @X@Y z z Ʒ@[@\   ű y@^@e@_ Wa@`@c@a@b z ҉ ű ï @d ܜ 7@f@g ` r x@i@x@j@q@k@n@l@m Z  ѧ @o@p  A  :y@r@u@s@t Z Z @v@w Ʒ s Ʒ @y@@z@}@{@| k  Œ@~@ , V@ š@@ 4/@ à@ à@ à@ W à@ à à@ à@ à a@@ @ 7 ѧ@@ ƙ ە@ @@ %@@@@@@@@@@@@ ƨ  @@ ҉ Œ @@@@  z@@ i k@ 5@@  @@@@@@ i s ̀ @@@ G @@ @ k@ k@ k@ k@ k@ k@ k k ҉ @@@@ Z ï ű @@ i s V@@@@@@@@  @@ ï  @@@@ ˘  @@ Œ y 7 s@@@@@@  @@ y 2 @@@@ ï G@@ ƨ š ս @A @@@@@@@@ ѧ š @@ ű @@@@@ Z @@@ 4?@@@@@ K z@@ Y X } }@ 4? @ s ï@A@A@A� y ܌ AA Z AAAA  A A C A AA AAAAA ü GAA s y AAAA s r r ïA G sAA"AAAA ˘ rA A! ׭ Ʒ ZA#A(A$A% Z A& A' b W ZA)A* s  ïA,AA-AqA.AQA/AAA0A:A1A4A2A3 ƨ ` ` ƨA5A6  ZA7 սA8A9 a $ #A;A>A<A= ï Z ` A?A@ Ʒ y  ABAJACAGADAE  AF AHAI ս tAKANALAM k s AOAP G ARA`ASAYATAVAU ï xAWAX ï  ƷAZA]A[A\ ƙA^A_ ï AaAhAbAeAcAd ƙ 7 AfAg  ƨ R (AiAnAjAm ׭AkAl Œ AoAp i Ʒ ArAAsAAtAAuAAvAAwAy 8Ax z  dAzA{ dA| dA} d dA~ dAA d dAA d d AA 7 T*  AAAAA Z ƷA Ʒ ï AA ƨA rA 4AAAAAA G ƨ Ʒ AA i ƷAAAA ƙ ïAA NAAAAAAA Z ƷAA s `AAAA Œ ~ A üA AA sAAA AAAAAAA H A A A < A A <A < <  AAAAAA i Ñ sA  ï AAAA AA š š AA Ʒ Ñ ƨ ïABRAB.ABABAAAA r  ŒAAA sAA  ( > šAAA j AABAAAAA nAAAAA n n A n n AAA n n A n nA n nAA nA n nAA nAA nA nA n nA nA nB�BB n nB n n nBBBBBBB B nB n n nB B n nB n nBB n n nB nB nBB n � nBBBB ï 7 BB r Z ŒBB'B B#B!B" ï Ʒ Œ B$B& sB% s B(B+B)B* `  ïB,B- >  B/B?B0B6B1B4B2B3 Œ s 7 Z B5 ï ˘B7B:B8B9 s  ï šB; B<B=B> H B@BKBABFBBBEBC BD  BGBJ BHBI ï ï  ZBLBOBMBN ï  BPBQ y  BSBxBTBgBUB`BVBYBWBX ƨ 8 Z BZB]B[  GB\ G ` B^B_   BaBdBbBc s BeBf s `BhBqBiBoBjBnBk BlBm  o5 6 7 Bp Œ ƨBrBuBsBt Wa ï BvBw r ByBBzBB{B~B|B} s s ÑBB s Œ ` xBBBB Œ ƨ ƨ BB  ` ű ƙBBBBBB Ʒ r űBB  kBBB s sB ï WDBB s x BGXBDBCBC4BBBBBBBBBBBB ï  Ʒ BB s BBBB zB WD Wa y BB Ʒ BBBBBB ш y BB Wa ï i ցBBBB s Z սBB ƨ s Ʒ ׭BBBBBBBB sBB : ּ 3 š BB Œ  Œ ZBBBBB xBB ƙ  `B k  ƨBB ü i Z BBBBBB ƨ sBB s BBBB 6b 8 BB ` Œ xBCBBBBBBBB Wa ƨ sBB Ʒ r BBBB Œ >  BB  ̀ iBBBBBB V x Q5BBB yB ֦ š BCBC� u  sCC ̀ ` sCC à à CC$CCC C C C Œ V  ZC C łC >C > Pp sCCCC L ï CC C C C C C C C C 8 C C#C! C" 6& Z yC%C-C&C( yC' ï ZC) s GC*C+C, A H 5C.C1C/C0  s C2C3  > ïC5CC6CVC7CFC8C?C9C<C:C; ̀ s VC=C> Z ű C@CCCACB i Q5 CDCE  ƨCGCMCHCKCICJ Z  ̀ ïCL ̀ CNCSCOCP i LCQ .CR . CTCU ` Z  CWCqCXCbCYC\CZC[ Z z Z C]C^  C_C`Ca ł ű \M šCcCo sCd šCe KCfCg K Q&Ch Q&CiCj Q&Ck K KClCm K Q&Cn K Q& Cp CrCyCsCvCtCu Œ CwCx ˘ ƨ шCzC}C{C| ш 8 C~C Œ k ƨCCCCCCCCC ï ïCC  dC \CC CC C < <CC C C CCCC  Œ VCC 7 CCCC rC CC ƙ CCCCC ս ;8 ; Ʒ CC Z r i ̀CCCCCCCC C ACCCC C C C C CC (C š šC šCC šC š šCC š š C ï 3|C  ZCCCC  ï ƷCC r t ŒCCCCCC Ʒ ƨ Z CC ` CCC  . . CCCC s k CC CDuCD/CD CCCCCCCC š Z sCC s ű ï ZCCCC s  d' `CC N  CDCCCC ̀ CD sCCD =C =C =CC = =CC = =CD� = L = = rD sDD 8D ïD  ï ï sD DD DD DD D   DD ҉D 4! NDDDD s DDD DD s Z DD(DD"D D!  r  yD#D' D$D%D&  ҉D)D,D*D+ ̀ Ʒ  sD-D. ە sD0DQD1D@D2D9D3D6D4D5 y ܹ D7D8  ; ï ZD:D=D;D< y s  D>D? ܹ Œ DADHDBDEDCDD Z r Ʒ DFDG i DIDNDJDMDK DL ƙ DODP  DRDdDSD^DTDZDUDV Ʒ DW iDXDY ֞ 9U D[D]D\ L [ i D_Da D` DbDc k Z ƷDeDlDfDiDgDh  Q5 ïDjDk Z s  rDmDpDnDo ` Ʒ űDqDt Dr Ds  ן DvDDwDDxDDyDDzD}D{D| à  ï D~D Œ r  yDDDD Œ ƨ s D K yDDDDDD  ̀ rDD Z ƙ DDDD r Œ yDD WD ̀ ï DDDDDDDD ̀ sDD  ƙDDD Z DD Z ï  ƷDDDD D DD ŒD DD r \ ߰ DDDD DD DDDDDDDDDD  DD   ïD D DDDD š t  DDD s ŒD 4^   Q5DDDDDD Z ï DD s `  DDDD ï D D  DD s i DDDDDDDD ` ï ZDD ˘ ƷDD   DD ïD ̀ DD ̀ ̀ ŒDDDDDD ƨ  ŒD V DDDD DD  ` ` DF<DEDEFDEDE E�EEEEE z ï  ŒEE  ƨ s EE ƙE ƙ  ƙE 6b E EEEEE Ʒ  ZEE  ïEEEEE E 2 2 k ï EE ï s sEE4EE)E E&E!E# E" t E$ E% Œ W {E'E( z Q5 űE*E-E+E,  ZE.E/ ƙE0E3E1E2 H d d EE5E?E6E<E7E;E8 ƙE9E: ` x  ` n E=E> r ï E@ECEAEB ` ` EDEE `  EGEnEHE_EIEXEJEUEKEQELEOEMEN 9 :" :"  ƙEP ƙ šER ESET  5 XEVEW ZEYE\EZE[ ƙ WDE]E^ ï 7 ŒE`EgEaEdEbEc Z EeEf ƙ sEhEkEiEj ` s ïElEm ` EoEEpEwEqEtErEs s  Z ƷEuEv   Z 7ExE}EyE| EzE{ B ï LE~E à i `EEE EEEEE   ׭ sE E EE E E E   EEEE ï VG EE ` `EE `E ` `EE s Œ z EEEEEEEEEE E ZEE z ƨ  űEEEE à ï EE  ï EEEEEE  7 EE  EEEE ! LE ïE ïEE G ïE EEE Ñ ÑEE ÑE Ñ ÑEE Ñ ÑEE Ñ [ Ñ zEE [E [E [E [E [ [E [E [ zEEEEEEEE àEEE  Z ` EE `  ̀EEEE Z Ʒ ïEE Œ EEEEEE V ï `EEE Mv L MvEE L Mv LEE ƨ  Z EEEE  ` 7EEE EE ( š ( š EFEF EFEFEF� iFF `FFF  ` FF   `F FF FF F Ʒ  ï 6bFF  Z F F F  FFFF š  à F  FF*FF#FF!FF ï ƨ  Ʒ sF" F$F'F%F&  i ̀F(F) i s F+F2F,F/F-F. i sF0F1 7  ە F3F9F4F5  ZF6F7F8 r  G F:F; ï ` ` ïF=FF>FF?FcF@FPFAFIFBFD ïFC FEFHFF ïFG ï ï V rFJFMFKFL Z ü FNFO Z rFQFWFRFTFS  ƷFUFV à ;8 ï FXF^FYFZ ` iF[ iF\F]  F_ rF`FaFb ƨ Z r ZFdFvFeFoFfFlFgFkFh Fi Fj Q& ü xFmFn ü à ü ƙFpFsFqFr ï ` FtFu ü xFwF|FxFz ïFy ïF{ ïF}FF~F  ZFF ҉   iFFFFFFFFFF  iFFF F FF FF F FF F 7 s ƨFFF FF  s `FFFFFF i s ` iFF ` L i FFFF  ` FF ï ш FFFFFFF ` iF àFFFFF FF ï ZF s ҉ FFFFFF ш Z ïF  ï սFFFF   FFF ` sP  `F ƙF Z ƙFGFFFFFFFFFF Ʒ ï FF s ƙ `FFFF n ïFF Ʒ ï xFFFF F  FF i Z FFF FFFF Z  ս àF  sFGFFFFFF WDFFF Od   W ˘FF ˘ y  FFFF  ï  G�  GG GGGG Z   rGG ï ` G G G G ` ҉ `GG ƨ ` `GG/GG GGGGG ` GG Z 4! iGGGG ` V ZGG ï Z Z G!G(G"G%G#G$ ` sG&G' ` ï G G)G,G*G+ r ï ̀ rG-G.   G0G?G1G8G2G5G3G4 Ʒ ` G6G7 Œ G9G<G:G;  ï G=G>  VG@GGGAGDGBGC 7 š 7GEGF G x ï GHGUGIGT GJGK ZGL ZGM ZGN ZGO ZGP ZGQ ZGR ZGS Z  Z ƨ ZGVGW Œ ƨ s GYIGZHG[GG\GG]GG^GnG_GfG`GcGaGb s  GdGe Z y rGgGi `Gh GjGm ܹGk Gl  š WD sGoGGpGvGqGr  Gs GtGu ҉  ƨ ïGw s GxGy sGz s sG{G| sG} sG~ s sG s :GGGG c GG Œ Ʒ ï GGGGGGGG `  Œ ïGG ` ` GGGGG r `  G s űGGGGGG ׭ s 3m `GG i s GGGG ï Z ű ïGG G G GG ? 6 GGGGGGGGGG ƨ GG  ïGGGG Ʒ ̀ Z ˘GG Z  ` GGGGG ï Z GG   GGGG Œ ű ïG ` ïGGGGGGGG ̀ N k G kGGGG Z GG Œ GGGGGG  ï GG ï  ƨGGGGG iG  S  GG ï >GHVGHGHGGGGGG s Z Z GG  GHGHGGG E Ux GH�G ցG G G GG G G ł ց iHH 7 ƙ y HHHH HH ҉ `H šH H H s  ƷHHHH Z Œ HH :y sH HH à N R 3HHBHH;HH8HH7 ZHH H H! H" H#H$H, H%H&H)H'H( 8 H*H+ 8  3_H-H4H.H1H/H0 6& 65 H2H3 ց ;H5 H6 ց  H9H: š H<H?H=H> š H@HA > x  `HCHLHDHIHEHF ƨ  HGHH  5HJHK Z ƨ HMHSHNHRHO HPHQ K X s HTHU ս ï Œ HWHzHXHgHYH`HZH]H[H\ r  r ѧH^H_ G ƙHaHdHbHc š  ƨ ƷHeHf V HhHqHiHlHjHk K r `HmHn Ho ƙ Hp HrHuHsHt ï  r HvHw Ʒ Hx Hy X KH{HH|HH}HH~HH sHH X 4? HH ï ï :0HHH `HH  < ïHHHH ֐ ` HH r ZHHHHHHH HH ł ց ÑHH ƨ à 7 ƙHHHH à H yH yHH X 4?HICHHHHHHHHHHHH s y iHHH t HH ` ` HHHH  `HH r HHH s i s ZHHHHHH 7 rHH  s ZHH x Q xHHHHH šHH H YB Z HH HHH ƨ Ʒ ï Œ HHHHHH ZH Ʒ ̀HH  i ƨ HHHH `  H i Z HHHHHH ̀ ï ï xHH  HHHH ҉ ï šHHHH H H <  HH y ƷHI#HI HIHIHI� = ű II ZII X K  ïII II z u I Z ` I IIIII > I I Ñ Ñ [II x ƷI Z _ xIIIII ïII à y ű ƨ Œ II" sI I!  ƨ šI$I3I%I,I&I)I'I( ҉ L ` ïI*I+ ï ïI-I0I.I/ ܹ  I1I2 s xI4I;I5I8I6I7 y `I9I:  s I<IAI=I@I> Ñ kI?   ï IB  ïIDIIEIgIFIUIGINIHIKIIIJ Z ƙ ű `ILIM Z  IOIRIPIQ ` Œ i űISIT ׭ IVI]IWIZIXIY ï Z s I[I\ r  L ZI^IaI_I` ű  IbIc k Z ҉IdIeIf z ï IhIyIiIrIjIoIkIn űIl šIm š < ` ƨIpIq :y ` IsIvItIu > ï IwIx ƨ i s IzII{I~I|I} ƨ ƙ II Ʒ  IIII šII x i àIIIIIIIIII ï ` ƷII Z IIII  š II ï IIIIII ï II ƨ  IIII r Œ  II Ʒ `IIIIIIII I I II Ʒ 7IIII ` Z ցII  G Ʒ IIIII Z  ZII Ʒ  r šII sI II ` s III X K IJIJUIJIIIIIIIIII III X X KI XI `IIIII I 4? YB y IIIII :y I YB K s II ï IIIIII Ʒ r ̀II s ەIIII y ÑII Z  ` àIJ IJIJII  `IIJ� ű ҉JJ ƙ JJJJ ` 7 ` J ï Z dJ JJ ` `J ` `J `J `J J : JJ4JJ#JJJJJJ VG  JJ L ŒJJ sJ ŒJ!J" V ` iJ$J+J%J(J&J' ˘ ï J)J* ̀ ï J,J/J-J. s J0J1  J2 ƨ üJ3 üJ5JHJ6J=J7J:J8J9 ` ZJ;J< s x sJ>JB šJ?J@ i AJA ( cJCJGJD JEJF š š ս JIJOJJJL JK V ŒJMJN s JPJSJQJR  ü ïJT ҉JVJJWJxJXJjJYJ`JZJ]J[J\ š à ƨJ^J_  s ïJaJgJbJf ̀JcJdJe X r sJhJi  ˘ X ƷJkJqJlJn Jm Œ JoJp ` Ʒ JrJuJsJt Ʒ Z Ʒ JvJw y  ҉ JyJJzJJ{JJ|J} ƷJ~JJ \ \ Ʒ JJJJ ZJ J ;8 ƷJJJ ҉J ҉ iJJJJJJ y ƨ J J ƙJ ƙ KJJJJ s :y JJ x 7 űJJJJJJJJJJ ƨ s ïJJ ̀ ҉ Z GJJJJ s ̀ ïJJ ƷJJJ > ƨ  JJJJJJ ï ` Z ïJJ Z yJJJJ ƨ ƨ JJ ƷJJJJJ JJ r ƙJJJJ Ʒ ï ïJJ Z 3| xJJJJJ ï `JJ ` s  ƷJJJJ Œ s J ƙJL,JKJJJJJJJJJJ  ïJ JJJJ ƙ sJ yJJJJJJ  yJ r ƨJJJ y JJ ` Ʒ kJKJK�JJJ Ʒ JJ ű ï `KKKK ï  `KK ï s Ʒ ïKKK K K Z K K ï  Z KKKK ï ZKKK KK š Ʒ ƙ sKK:KK+KK"KKKK Ʒ  àK K! ï `  K#K&K$K% ƨ  ïK'K*K( Z K)  ï K,K3K-K0K.K/ š s ï K1K2 i <u ̀ K4K7K5K6 ï ƙK8K9  ƷK;KJK<KCK=K@K>K? r Ʒ > KAKB s  KDKGKEKF y  y KHKI  š KKKRKLKOKMKN ï  ï KPKQ  iKSL*KT KU KVKKWKKX KY KZKtK[KiK\KbK]K_ K^ ց ; K`Ka j 6 KcKfKdKe 65 ց  8KgKh X 6&KjKpKkKnKlKm ;) M ; ׁ Ko W =KqKr \ Ks  5KuKKvKzKw KxKy 5 P3 K{K~K|K} ց ց ; KK j 6 KKK K 65 KK K łK łK łKK łK łK łK KKKKK ł ց łKK n y NKKKK PP K ł ^ ~KKK KKKKKKKKKK K ց ; KK j 6 KKKK 65 ց  8KK X 6&KKKKKK ;) M ; ׁ K W =KK \ łKK 5 5  5KKKKK KK P3 P3 KK ցK ց ; KK j 6 KKKKKK 65  8KK X 6&KKKK ;) M ; ׁ K W =K K KK K K  5K KK 5 P3 KL#KLKKKKKKKK łK ց ; KK j 6 KKKK 65 ց  8KK X 6&KKKKKK ;) M ; ׁ K W =KK \ łKK 5 5  5KL L�LL łLL P3 P3 LLLL ł ց ց ; L L j 6 L LL LLL 65  8LL X 6&LLLL ;) M ; ׁ L W =L łL łLL łL łL  5L łL!L" 5 P3 ł łL$ łL% łL& łL'L( ł łL) łL+ ` ` `L-LqL.LRL/L>L0L4 `L1L2L3 ` y L5L;L6L:L7 yL8L9 ű ,  ` L<L= 7 i  `L?LIL@LFLA ƙLBLDLC ; ;8 $LE LGLH ï k ïLJLMLKLL iLNLQ LOLP LSLaLTL[LULXLVLW ï ` sLYLZ d i `L\L^ L] L_L` ƨ ï y ƷLbLiLcLfLdLe ï r ` sLgLh ƨ LjLnLkLmLl Z # LoLp Z LrLLsLLtL{LuLxLvLw Z à LyLz 3 Ʒ ï L|L~ sL} y LL i LLLLLL LL Z i LLL  i yLL  Ʒ LLLLLLLLL s L LL L L L L L L u  L ïLLLL ï y LL   LLLLLL s LL s sLLLL ï Œ ` sLL Z  yLa LW&LQLNLMLMVLMLLLLLLLLLL Œ ï d LL ƷL sLLL Vt 6L 6LL 6L 6 6LL 6 6L 6 V VL 5CLL 5C 5CL 5CLL 5C 5CL 5CL ƙ 5CLLLL  ű < LL ` LLLLLL Z i sLL ` ï  LLLL ƙ iL L LL L L LL LL 8ZLL ƨ LM LMLMLM� ` ZMM y s ` ƷMMMM ` M M ս  M MM MMM ï 3| MM ï MMMM d i  ZMM ƙ MM9MM+MM$MM!MM ׭ ű VM"M# > y M%M(M&M' Ʒ ƙ ZM)M* ̀  ï iM,M3M-M0M.M/ y  ƷM1M2 ` s ׭M4M6 ïM5 `M7M8 Ʒ ` `M:MHM;MBM<M?M=M> ï r d M@MA ï yMCMFMDME Z ` MG ` MIMPMJMMMKML ̀ ` ` ïMNMO ` ` MQMSMR ` `MTMU ` MWMMXMMYMoMZM`M[M^M\M] Œ `M_ V MaMlMbMc Md MeMf .Mg .MhMj .Mi ! = 1Mk U .MmMn ű V ƨ VMpMwMqMtMrMs y  `MuMv ï à d MxM}MyMz i M{ ƷM|   M~M ï Z  MMMMMMMM  ە  MM 7 MMM  i ŒMM G ƷM iMM K ƙ 6 ƙMMMMMM ߡMM Ʒ ï ˘MM M ï šMM  ï MMMMMMMMMM   MM s Œ  `MMM Z Ʒ MM ƨMM I  I Ñ rMMMMMMM ïMM ߡ 6 ҉M ` Z `MMMM ҉ ` ;8 ` `M `MMMMMMM ` ` M ` à `MMMM ` ` ïM à MMMMM Z MM ƨ s .MMMM Ʒ M s Ʒ rMNdMNMMMMMMMMM  šMM  ï ïMMMM MM šMM ց s MMMMMM Z s Z šMM ` :yMMMM Z M ƨ r ZMN N�NNNN  NN  àNN NN Q s ƙN  N NNNNN ï r 8NN ` Œ NNNN s Z NN ï V NN=NN+NN$NN!N ï N"N# Z š N%N(N&N' š  ï N)N* Z r ˘N,N6N-N3N.N/ ƙ ŒN0 kN1N2 K X X N4N5 Z ҉  sN7N:N8N9 r N;N< Z 8N>NMN?NFN@NCNANB Z V k yNDNE r š ` NGNJNHNI Ʒ ` 8 NKNL ҉ rNNN]NONYNPNXNQ rNRNS NT NU }NV }NW } X } ŒNZN\N[ Ve tI  s N^NaN_N` ű ҉ s NbNc r ` šNeNNfNNgNuNhNoNiNlNjNk r s ŒNmNn Œ 7 iNpNr ïNq NsNt s  rNvN}NwNzNxNy  s ï N{N| G ŒN~NNN ` NN z L ï yNNNNNNNN սN s N NN  ï s ZNNNN r  s NN  š ƨ ˘NNNNN ï x NN  ˘  NNNN x ï ̀NN y  iNNNNNNNNNN Ʒ rN 7 lN lN ? lNN r `NNN ƨ NN ս iNNNNN ƙ űNN ï Ʒ sNNNN s ƨNN s Ʒ ZNNNNNNNN N Z y ł NN r ï š ߡNNNN Z ïNN Z ï NNNN Z   7NNNNNN Ʒ ű ш N Z ƨNNNN Ʒ ` ï ZNN   šNP.NONO/NONNNNNN N ƙ ̀NN NNN 6 & p y NNNN ï Z šNN y k ƨ NONOO�O  ïOO ƨ ƷOO OO O `O O L \ L \ rO O i  sOO OOOOOO y Ʒ s OO ս ű Ʒ OO O `OOO `O š ( š ï O!O(O"O%O#O$ ` r r ƨO&O' 7 `O)O,O*O+ Ʒ O-O. ű O0O[O1OLO2OEO3O6O4O5 y ߡO7ODO8 O9O; ѧO: ѧO< O= O> O? O@OA OB OC f ` OFOIOGOH  š 7 OJOK Ʒ `OMOTONOQOOOP Z ïOROS  s ƨ OUOXOVOW  `OYOZ i 3| rO\OsO]OiO^OcO_O` ƙOa Ob š š OdOe r Ʒ OfOgOh s OjOmOkOl ï d OnOr ïOoOpOq Y Y ŒOtOzOuOw Ov  sOxOy  ƨ  O{O~O|O} s Z ï OO ҉ Ʒ ZOOOOOOOOOOOO ï ׭OO  OOO š A H cOOOO y s z rOO  OOOOOO Œ r y ïOO  ƨ ï OOOO 7 Z rOO ZO űO M4 űOOOOOOO ï VO i ZOOOO ï d à `OO x ï rOOOOO ï š OO  L s rOOOO Ʒ  ƷOO  r  ïOOOOOOOOOO x ҉ OO Ʒ ZO sOOO F OO O OO t OOOO š Ʒ 7OO s Ʒ  OOOOO ` OO i y OOOO i s ïOO  ҉ ƷOOOOOOOO š Z N OO  y OO yO OO s  yOPOOOO ƨ  P�P ï r шPP+PP ˘ à iPP PPP PP B5 B5P P B5P B5 B5P B5P  B5PPP P P P P  P P P P P  P 4PP% E P E P!P" E E P# E P$  E E P& E P'P( E E P) E P* A E P,P- à Z Z >P/PP0PP1PqP2PIP3P:P4P7P5P6 i ` ߡP8P9  Ʒ ˘P;P>P<P= Œ ˘ ZP?PH šP@ ŒPA PBPC 4lPD 4lPE 4lPF 4lPG 4l 4l ` PJPQPKPNPLPM Z  ƷPOPP  PRPUPSPT = Ʒ GPVPpPW ŒPX rPYPhPZPa rP[P\ r rP]P^ rP_ r rP` r rPbPc rPd r rPePf r rPg rPi r rPj rPk rPlPm rPn r rPo r Ʒ ƨPrPPsPzPtPwPuPv Z ï Z PxPy ï s P{P~P|P} ï L s šPP š V  PPPPP ű ZPP Z ZPPPP  ` rPP ` rP Ñ PPPPPPPPPP  Z ű ÑPP P Œ zP z ÑPPPP ƨ ` ï PP ` PP L x LPPPPPP i y ïPP s y ïPPPP ` ƨPP ŒPPP > ïPPPPPPPP Z ` Ʒ PP i Œ yPPPP PP P PPP PP P P P PP P P P  ` sPP ï s šPPPPPPP PP š Ī š P XPP 7 ` ƨ PPP ï ï sPP ` ѧ PQ@PQPQPPPPPP  š PP sP P PP PPPPP P Dz Dz ï  PQ� ˘ Z V QQQQQQ ï s Œ  Q s `Q QQ Q Q ïQ ּ Dz 8 QQ s `QQ"QQQQQQ ZQQQ X K K QQ  s `QQ Q s Ʒ š Q! ZQ#Q7Q$Q'Q%Q& y ƷQ(Q3 rQ)Q* Q+ Q,Q- Q. Q/ Q0Q1 Q2 X Q4 Q5Q6 . . Q8Q>Q9Q: 7 `Q;Q<Q= ; ;8 ;8 ;Q?  y sQAQcQBQTQCQKQDQFQE yQGQJQH ̀QI š  š ҉ QLQOQMQN Ʒ ű šQPQS GQQQR ܌ QUQ\QVQYQWQX ƙ ` QZQ[ x Q]Q`Q^Q_ š  ïQaQb r Ʒ WQdQrQeQkQfQhQg ̀ ŒQiQj  Œ s QlQoQmQn Ʒ ïQpQq  7QsQzQtQwQuQv V ׭ G `QxQy y y ïQ{QQ|Q Q}Q~QQQQ Q Q QQ QQQ Q QQ QQQ Q QQ Q Q Q ` ZQQQ ZQ š š < iQTdQRQRZQQQQQQQQQQQQ š  dQQ  š ïQQQQ Z   ZQQ ïQQQQQQ ` š s 4QQ ƙ à QQQQQQQQ ` R RQ X  QQ Z s QQQQQQQQ y ï QQ Œ Z ʚQQQQQ ˘ Q Q QQ QQ QQQ 4? X Q QQ K }  à ƷQQ r š QQQQQQ Z  ï QQ s š QQQQ  QQ Ʒ ƨ ZQR4QRQQQQQQ :y > ` š Q  àQRQR ZQQRQR R� R R R R <RR RR R R R R RR š ʗ (RR ï ï RR*RR'RR&R RRR RRR 9 9R 9 R!R" YR#R$ 9 9R% 9 š ZR(R) ü s ŒR+R.R,R- š s  R/R3R0 R1R2 . .  ïR5RDR6R=R7R:R8R9  ƙ ïR;R< G  šR>RAR?R@ r z RBRC  ` yRERORFRIRGRH s GRJRK  àRL RMRN \ ߡ mRPRR RQ d սRSRW RTRURV 8w s i ZRXRY à à RR[RR\RR]RlR^ReR_RbR`Ra ̀ r Ʒ RcRd ̀ š Z šRfRiRgRh Z RjRk Ʒ RmRyRnRvRoRuRpRsRqRr s šRt š c ï ZRwRx  ƙ kRzR}R{R| Ʒ y  šR~R ׭ ï  šRRRRRRRR Q s ս ŒRR x r ïRRRR s ï ŒRR  RRRRRRR y RR  ZRRRR Ʒ ;8 RR 8 Ʒ RRRRRRRRRR Z  RR 8RRRRR ïRR c ( š ` rRR ü d RRRRRR Z ƷR R i iR iRR ï ` RRRR  x RR  s > !RRRRRRRR ï ` R š i ZRRRR ` sR R 6 RR ` ` RRRRRR š  Q ZRR RRR c H <  ZRRRR x Z Z ŒRR Z r ƷRSlRS)RS RRRRRRRR s =RR y  ï RRRR š ï  šRR š  xRSRSRS� Ʒ SS ï ƨ SSSS s Dz sS S [ s Z S SS SSSSS š  ŒSS x ҉ s SSSS x Z rSS y š sSS"SS SS ս sS! ï ï rS#S&S$S% Z   S'S( ƨ Z ZS*SIS+S:S,S3S-S0S.S/ Ʒ Z S1S2 y R= S4S7S5S6 s   ŒS8S9 ï  ZS;SBS<S?S=S> ï S@SA mj  SCSFSDSE ï ƨ x SGSH š Ñ ïSJS\SKSUSLSPSMSO rSN ߰ r  SQSTSR d ïSS H ï SVSYSWSX ï  SZS[ ҉ r sS]SdS^SaS_S` Ʒ rSbSc Z SeSjSfSg iSh Si 8 ïSk š àSmSSnSSoSSpSSqSvSrSuSs  St ƨ o ïSwSSx SySSz ƙ ƙS{ ƙS| ƙS} ƙS~ ƙS < ƙS ƙ 6DS 6DS 6D  SSSS ƷSS   SSSSSS s  i SS Z xSSSS ҉ `SS y Z rSSSSSSSS ƨ Ʒ š սSS S SSSSSS SSSSSS H SS <S dSS  2 א <S SSSS SS  g > S S SSSSSS H SS <S dSS  2 א <S SSSS SS  g > S S SSSSSS H SS <S dSS  2 א <S SSSS SS  g > ï SSSS Z ZSS š  SS š  šSSSSSS i SS  r 8 SSSS s V ƷSS Z Ʒ ZSTHST/T�TTTTT ˘ Ñ y šTT y s TT T T s ̀ T T šT ZT ZT ZT ZT ZT ZT ZT ZTT Z ZT TT$TTT T T T T T!T" T# T%T*T& T'T( T) T+ T,T- T. T0T7T1T4T2T3 Z Ʒ T5T6 ս  i sT8T;T9T: `  T<TGT= Ʒ 7T>T? 7 7T@ 7TA 7TBTC 7 7TD 7TE 7TF 7 ï sTITVTJTQTKTNTLTM  V  TOTP ս xTRTS  rTTTU Z ܌ ZTWT]TXTZTY i àT[T\ Z T^TaT_T` š  TbTc ï Ʒ rTeUTfTTgTThTTiTyTjTqTkTnTlTm ToTp  ƨ Z ˘TrTvTs sTt  pTu yTwTx Z 7 TzTT{TT|T~T} I s ƷTT ï  ƨ ïTTTT r TT ˘ ` Ʒ ƨTTTTTTTTT ïTT ( š 3| sTT s r sTTTT Z TT Œ G ï TTTTTT ï ˘ i TT  TTT  ŒTT s  sTTTTTTTTTT s Œ Z sTT Ñ ZTT ƷT 7 ïTT ە  Œ TTTTTT 7 r sTT r  ïTTTT Z  sTT Z  sTTTTTTTT L ï TT >TTT d^ i ŒTTTT V TTT R=TT y ~ ł ` TTTTTT rT ïTT ïT ïT ïT ï ïTT ï ïTT ï ï ֐T T 6 TT `  G ƨTTTT ƨT TT s TT ï Z ƨ iTUHTUU�UUU UUUU š U ܜ UU y ï U U U U Z  sUU ï rUUUUUU s i ï UU  s UUUU Ʒ  ŒU ï `UU.U U'U!U$U"U# ƨ Z 7U%U& Z ƙU(U+U)U* 7 6b ZU,U- i  ` 8U/U6U0U3U1U2 ï ï U4U5  ƙ >U7UEU8UD U9U: ŒU; ŒU< Œ ŒU= ŒU>U? Œ ŒU@UA ŒUBUC Œ M \ ~ sUFUG i š ս UIUhUJUXUKUQULUNUM ` Z UOUP ï y URUUUSUT r i Ʒ UVUW ˘ UYU_UZU\ U[ ` U]U^ i Œ  ZU`UcUaUb > z UdUg ïUeUf ï 7 s UiU{UjUqUkUnUlUm r i š yUoUp ƨ i űUrUuUsUt ս s  ZUvUz sUwUxUy š  c  U|UU}UU~U sU ;U ; UU V y V 6UUUU V ƙU `U U UU U U UU U UU Ñ x >UV+UUUUUUUUUUUU ï ƨ  :yUU ` Z UUUU Ʒ rU `U  7 UU  7 zUUUUUU ï ZU Z UUUU i R=UU y r UUUUUUU ˘ sUU s G UUUU  7UUU Vt 54 ï UUUUUU s . UU  U U UUUU  s WUU s UUUUUUUUUU  ` ƷUU i s UUUU ѧ ƨ UU s y UUUUUU  7  UU i y UUUU ïU U ց > iUU ïUU ï   LUVV�VVVVV ܹ 7VV  VV V V V Ʒ ŒV 4l Œ Œ ƷVV ű ïVVVVVV Z r T* ƨVV s ŒVV(VV sV Ʒ V VVV# V V! V" 5 A V$ V%V&V'  < B V)V* r Z ïV,VV-VV.V=V/V6V0V3V1V2 :y Z V4V5 ű sV7V:V8V9 ս s ZV;V< iV>VEV?VBV@VA r ƙ VCVD V s սVFVWVGVP VHVIVNVJ HVK VL VM VO H VQ ZVR VS VT VU VV VXVl ïVYVZVcV[V_ sV\ sV] V^ G sV` sVa Vb sVdVh sVe sVf Vg s sVi sVj Vk sVm VnVwVoVs Vp Vq Vr Vt Vu Vv VxVz Vy V{ V| V} V~ VVVVVVVV VVVVV V V V V V V VV V V V V V V š sVV VVVVV V V V V V V VV V V V V V ï VVVV i  `VV > 7 sVVVVVV  VVV s i VV  3| zVVV s VV šV VV  j ց VVVVVVVVVV s š ZVV n  > rVVVV ïVVV sVV c c sVVVVVV ïV V VVV d V  V rVV V r s VVVV Z Z dVV ƨ VWVVVVVV ï r  VV s ï `VVV T  x TVWW�W  ï r ïWW ` ш WW WW WW y W W 7WWWW  à WW% WW �W W 7W 7WW 7W 7WWW 7W 7 WW  W! 7W" 7W# 7W$ 7 7 7 W'\EW(YW)X\W*WW+WyW,W[W-W<W.W5W/W2W0W1  Z ƷW3W4 r 6 ƨW6W9W7W8 Z ï š W:W; Ʒ Z  W=WJW>WDW?WBW@ ҉WA š d^ šWC  4WEWIWF WGWH t  t  ƙWKWUWLWT WMWNWQWOWP ;) ց 8 XWRWS ;  ` ˘WVWZWW WXWY 7 ƨ k s ZW\WkW]WdW^WaW_W` 7 s ï WbWc WeWhWfWg WiWj ` ïWlWrWmWoWn  ƨWpWq r ï 7WsWvWtWu  шWwWx  WzWW{WW|WW}WW~W š x WW  WWWW ï ` ZWW ï y ïWWWWWW ïWW R= d^ R= G yWW > ƙ ƷWWWW WWWW š  š à ƨWW ` d yWWWWWWWW y W šWWWW ƨ Z ˘WW ï WWW � k 5aWWWWWW s ïW GW ł 7� 4WW ܜ Œ ü sWWWW ׭ x ïWW r rWXWWWWWWWWWW G rW ï 4W x 4WW L  r 7WWWW ï s `WWWWWWW o ;  WWWW ? 6 65WW s  GWWWWWW ƙ W ˘ ƨ šWW Z W ïW   WWWW Ʒ i WW  UZ àWXWWWWWWW üW   i üWW ƨ à ѧ WXX� Z սXX Z k  ïXX XX XX ە Z r ïX X Z ` X XXX X z ïX ï ּXX š 7 XX8XX+XXXXXX  XX š N ZX X#X!X" ƨ r üX$X*X%X(X&X' s o  łX) 4 3_ ZX,X3X-X0X.X/ Z š X1X2  Œ ` X4X6X5 ƙ X7 ҉ ZX9XJX:XAX;X>X<X= ƨ Z xX?X@ à ïXBXHXCXD ҉ XE sXFXG  2 א dXI i ï rXKXUXLXRXMXN ü i XOXPXQ G ш  XSXT Z ս ZXVXYXWXX Q Z ïXZX[ ï x  X]Y X^XX_XX`X|XaXgXbXeXcXd ü iXf ҉ à ҉XhXvXiXu XjXkXpXlXm ; MXnXo  5XqXr 6& jXsXt 6 6 XwXx ü Xy XzX{ ;8 ; ) ;8X}XX~XXXX r š ( ` XX ü sXXXX  XX ZXXXXXXXX սX ƷX >X >X >XX >X >X > >X >X >XX s ʗ  7XXXX š Z š ïXX s X ҉X s K sXXXXXX à % ս XX > Z ű XXXX Z ҉XX x  ս `XXXXXXXX X ҉XX ƨ x `XXXX " ˘ `X  ƨXX  š sXXXXXXX 7� 4 PB :XX P3 5 P$ W XX ~ r ׁ XXXXXX Z  i XX Œ ł s kXXXX x ` k GXX ï ` ï sXXXXXXXX  ˘XX Z ƷXXXX   X  #XXXX ï X Œ ;8X 8 ;8XX W ƙX ;8X O ;8XYXYXYX y ZY�  ï `YY  š ï xYY YY ï ł V Y  Y YcY Y/YYYYYYYY  ZYY ï ű YYYY Œ yYY  VG `YY(YY"Y Y! L ï Y#Y' Y$Y%Y&   G  8Y)Y,Y*Y+  Z ` rY-Y. ` L i Y0YAY1Y:Y2Y5Y3Y4 G G Y6Y9Y7 ŒY8 š 5 š R= Y;Y>Y<Y= R= Z Ʒ Y?Y@ y YBYHYCYFYDYE  ï 6YG  Œ YIYNYJYK G ŒYL YM K YOYP ï Œ 7YQYRYb VYSYTY[YUYXYVYW PP N nYYYZ U Y\Y_Y]Y^ e   uY`Ya  ] P` ^ Œ NYdYYeYtYfYmYgYjYhYi Z   YkYl Z s YnYqYoYp Ʒ ەYrYs 7 s ü ƨYuY{YvYx rYw ` YyYz  Œ GY|YY}Y~ ( ` s àYY s V ï `YYYYYYYY Z ü ҉ ƷYY x à YYYY  i xYY ŒYYY s r šYYYYYY s ҉ YY r ƷY ZYY r YYY  ï YY s ZYYY Z r YZYZNYYYYYYYYYYYY Y Y YY YY 6 s `YYYY s z V ZYY  Z ïYYYYYY à y sYYY Y 6& s YYYY s šYY V ƷYYYYYYYY  YYY r  YY Z ƨ šYYYY  sY sY Q QYY s i ï ZYYYYYYY iY  YY WD Œ YYYY  ïYY 6 i ; YZYZYZYZYZYZYZ� ł ł ZZ ` ű iZZ  ` s Z Z Z Z ` Œ sZ Z ҉ ZZZZZZ ƨ > Œ ZZZ   Z ZZZZ k ï šZZ  ZZ.Z Z'Z!Z$Z"Z# š Z%Z& à ï ZZ(Z+Z)Z* ս yZ,Z- s ƨ s `Z/Z@Z0Z=Z1Z< Z2 (Z3Z4 šZ5 šZ6 š šZ7 šZ8 šZ9Z: š šZ; š à Z>Z? Z ï ZAZHZBZE sZC ZD ZF s ZG ZIZJ  ZKZLZM ł ł ցZOZZPZtZQZbZRZYZSZVZTZU ï  d ZWZX  Z iZZZ_Z[Z\ Ʒ sZ] Z beZ^  beZ`Za  ï š ZcZmZdZjZeZiZf ZgZh Z ü  k Œ šZkZl Z G  ZnZqZoZp Ʒ \ZrZs 8 iZuZZvZZwZzZxZy  ܹ s ÑZ{ZZ| ZZ}Z~ > ű ƨZZZZZ Z ƨZZ Œ ü ZZZZZZ  ł Ʒ ïZ ܹ ZZZ L L L QZZZZZ rZ P P > L `ZZ r y ZZZZZZZZZZZ ZZZ X ïZZ ü Z ƨ ZZZZ  s  ZZ  `Z : š ZZZZZZ 7 ü ս ZZ ï Z ƨZ 4Z 4 ƨZZZZ ï ZZ Z ÑZZZ šZ  HZZZZZZZZ  V ˘ZZ :y x ҉ ZZZZZ ï 7 ZZ V ƙ ZZZZZZ ï iZ Z Z ïZZ š s ZZZZ ZZ  ï Z[Z[IZ[ZZZZZZZZ ` 7 ZZZ ZZZ š š > üZZZZ ü ł GZZ ƨ łZ Z 6Z[ [�[[[[ `[[ ս Œ[[ à Ʒ  y[ [[ [  ˘[ =[[ = =[ =[[ = =[ =[[ =[ = =[[ 6[ R[ r R [[<[[)[[$[ [#[! [" 8 ï s[%[([&  [' Z [*[9[+[. [,[- [/ [0[1 [2 [3 [4 [5 [6 [7 [8 V [:[; s  š[=[B[>[@[? s [A  Ʒ `[C[F[D[E Z ű Z ս[G[H Ʒ Ʒ r[J[[K[w[L[f[M[P[N[O ï Œ [Q[R ƙ [S [T[e[U[][V [W [X [Y [Z[[ [\  [^ [_[` [a [b [c[d [g[t[h[s[i ï[j [k[l [m [n[o [p [q [r 8 [u[v ш [x[[y[|[z[{ Z ï [}[~ ï s  ï[[[[ Z  ` ł[[  Z[[[[[[[ d [[ ü r [[ r r [[[[  ` ս[[ ï  š L[[[[[[ Œ Z[[[ :y : :y[ : :y[[ s  Œ[[[[[ [[ ł   s[[ ü r Z[[[[[[[[[[[[ s 7 Œ Ʒ[[ G ƨ ƨ[[[[ ܹ [ r[ [[ Z z[ [ [[[[[[ 7 ƨ [[ y c r[[[[  ܌  [[ Ʒ i Ʒ [[[[[[[[ ï ` Œ[[  Ʒ[[[ 5 I  G[[[[ > ï r[ ܜ [[ ` 7 [[[[[[ ï 7 ` [[ :y  [[[[ ս[ ս [ [[  Œ ` ł[\ [\ [\[[[[ Z r [\� ï  \\\\ à L ï\\ ս\ M 6\ \\ \\ \ y\ \\ š : > ï `\\ ü r\\\\ Z k\   Od\\\\ y Ʒ à\\ ï Z s\!\5\"\.\#\)\$\% ï ˘ \&\'\( \*\+ Z \,\- ï Dz ï\/\2\0\1 š ï\3\4 7 k ˘\6\>\7\:\8\9   š\;\=\< 7 r\?\B\@\A WD \C\D `  ш :y\F^\G]|\H\\I\\J\m\K\Z\L\S\M\P\N\O \Q\R s ï Œ\T\W\U\V ` y x ш\X\Y š A ` \[\f\\\a\]\^ Z ˘\_ \` H \b\c \d š\e š \g\j\h\i Œ \k\l  Ʒ \n\\o\w\p\s\q\r r \t\u  Z \v \x\}\y\|\z Z\{ Z ˪ Z \~\ Z Œ \\\\\\ ѧ s \\  y x \\\\  Z \\ \ ~ Œ \\\\\\\\\\ VG ˘ ˘ ە\\ \\\\ 4?\\\ 4?\ 4? X\ 4? X\ X X K o :y\\ s\ Z\\ ѧ ï x \\\\\\ Œ WS\\\ \ 4? L \\\\ ï  ï\\ ï ł i \\\\\\\\ `  \\ \ ց\\\\ \ \\ \ \ \ \ \\ \ \ \ \ `\\\\ i Œ Ʒ\\  Z \\\\\\ s \ ï\ s\\ s  \\\\ Z\\ š š r ` WD\\  s i\]7\]\]\\\\\ s x\\ i Z\\\\ ï\]]� š]] ]] ]] ] Z] ] Ʒ š s] ]] ] Ʒ ` ]] i  Œ]]"]]]]]] ï Z Œ]] I ս š Ʒ]]]] r] ]! z Œ Z ]#]0]$]+]%](]& š]' 65]) ï]* š  š],]/]- ]. ï ï ּ `]1]4]2]3 ƙ  Ʒ]5]6 ƨ ï Z s]8]Y]9]G]:]@];]= ï]< ̀ š]>]?  ƨ :y]A]D]B]C r ï 7]E]F Q Ʒ ]H]O]I]L]J]K  ѧ ï `]M]N 3| ï d Q]P]V]Q]U i]R]S]T O  G `]W]X Z ï]Z]i][]b]\]_]]]^ y Ʒ ]`]a ï Z ƙ]c]f]d]e ï ` ï]g]h Z š ï]j]r]k]o]l]m Z ï]n š % Q]p]q  `]s]v]t]u ï ]w]{ à]x]y]z y š ]}^]~]]]]]]]]]]] r ]] r 8]] 8  ƨ]]]] z ï 7]]] `]] <] <]] <] < <] <]] <] <  <  < ï ű]]]]]] y 7 G 7]] ш Ñ G Z]]]]  à ] ï WD]] Ʒ s ï]]]]]]]] ` ƙ ˘ k]]] ]] > ü V š ]]]] ï 2 ]] ï s ï]]]]]] š]]]   ï Ʒ]] Ʒ ï ]]]] ]] y ï]] Z ï Œ]]]]]]]]]] Œ Z] ]] R. R.]]  i z]]]]  ü Œ]] ü ű r y]]]]]] ҉  Z]] y  Œ s]]]] š ƙ ս]] ]^]]]] ] s ] Z x]^]^ ^�^  Od ܜ ^^ r ` r ^^^^ ^ ^ ï ^ ^ š  Œ i^^^^ ü  ^^ ƙ ï  ^^j^^A^^.^^ ^^ ^^ E ł^^ ï N  ^!^# ^" Z ^$^'^% ^& 4? ^(^)^* ^+^, ^- K ^/^:^0^5^1^4^2 ^3 d  à^6^9^7 Œ ^8 j ^;^>^<^= Ʒ  d ï^?^@  s ^B^[^C^J^D^G^E^F WD 7 ш s^H^I  d^K^X^L^W ^M^N ^O ^P ^Q ^R^S ^T ^U^V 3_ Z s^Y^Z  ƨ^\^c^]^`^^^_  s i^a^b s G ̀ `^d^g^e^f Ʒ ƙ ƨ^h^i š Ʒ ` Z^k^^l^{^m^t^n^q^o^p Z s r ï^r^s š^u^x^v^w } Ʒ i *^y^z ï Œ Z^|^^}^^~^ Z s r^ ï^^ ҉^^^ ł ł  ^^^^^ ^^ [ z [ z^ ^^ 54 5C 6D <^^ 7 3| ^^^^^^^^ ` à ҉ Z^^ Œ Œ ^^^^ ï ƨ ƨ ï^^ ^ 8^ ց z ^^^^^^  ï  ^^ Z Z ^^^^ Ʒ Z ˘ Ʒ^^ N š ە Z^_^_P^_^^^^^^^^^^ Z^ ^ Ʒ z Ʒ^^ à Ñ ƨ ˘^^^^ ` s ï ^^ ` ï  x^^^^^^  ï^^ Ʒ  Œ^^^^  ս ^^  Ʒ^^^^^^^^ ï^^^ t  s^ ^^ Ñ^^ ^^^^  ^^ ^^^  %  Z ^^^^^^  ű ^^ ƨ d^ =^ = j^_^_ _�__  x  ï __ s à r__._ __ __ __ _ ï Z Z __ ` ï š____  _ s (_ ( š__  ï ƨ__$____ ï ս _ _#_!  ł_" ł j _%_(_&_' i ƙ ï _)_* ƨ Z ï_+_,_- ł ց _/_=_0_6_1_3_2 ï r à_4_5 WD ï z_7_:_8_9  ű_;_<   mj _>_G_?_B_@_A  _C_F_D _E r _H_K_I_J 7 ƨ _L_M ` _N  _O X _Q__R__S_g_T_^_U_\_V_X_W r ï_Y s_Z_[ š š Ʒ_] ___d_`_c Œ_a r_b R r y_e_f ` Œ š_h_t_i_q_j_n_k s_l_m (  5  Z_o_p F_r_s :y z Z s_u__v_w Ʒ _x__y _z E_{ E_| E_} E_~ E v ƨ 9__ x ________ ƙ y x ï_ Ʒ_ 7 ł____ r __ V ï ______ ï r c__ 3| 7 Ʒ ____ Z ï _ r `___  R=  R=__________ :y __ ƨ  y Z__ à s__ ` Ʒ ___ L s ï______ G ű__  ` ï ____ 7 ƨ __ ï š  ________  V r_ i L____ à Z_ s__ j j __ 8 ƨ ï______ ս ï r ű__ Z___ š B R A Z s____ __ y_ ł_ _____ ց ց j _ : ł G Œ_`_`6_`_` _`____ ___ 4? _ 4? ï_`� i s š```` ƨ d `` ``   o G` `   ` ````` Ʒ  š` Z s ƨ```` ï r ` `` ` Ʒ ``*``#`` `` ƨ `!`" ƨ  Z`$`'`%`& Z Ʒ Z `(`) Z r ˘`+`0`,`.`- ï  `/ :y `1`4`2`3 Œ x ˘ `5 ł `7`g`8`M`9`A`:`=`;`< r  `>`? ï Z`@ Œ ł `B`G`C`D r `E `F `H`I Œ ƨ`J s`K`L # `N`U`O`R`P`Q d s`S`T Œ  r`V`Y`W`X ï  š`Z`f`[ `\`] K Vt`^ ƙ`_ V V`` V`a V`b`c V V`d V`e V V ` Ʒ`h`w`i`p`j`m`k`l ƨ ï Ʒ `n`o  Z`q`t`r`s ï ƙ Z`u`v   Z`x``y`|`z`{ ï x Ʒ`}`~  Ʒ  ```` Z``  ï`````````` ï` `` š ` d ````  d ï ``` ` 4?` ` š š` ``````  ``` ` ` `` Z r :y Z```` x ï `` r ï ï ```````` :y s ł`` Œ  ``` y s ï` ï ï````` s` s ```` š  ``  . ``````````  š `` > y ̀```` ï Z `` Z VG ï k``````  H ```  Z```` s  s ``  ;8```````` ҉ ï`` Z  Z ```` ` :y` :y ``  s r G`a`aa�a ï Za àa W àaa ï aa a a 8 ` a  ƷakafacabUaaaa_aa=aa+aa!aaaaa a ;8 ;8 ` aa a ïa  a"a%a#a$ 7 7a&a' a( ïa)a* 8w ca,a3a-a0a.a/ a1a2 x a4a7a5a6 ł Ʒ  ïa8a9 ` a:a; \ ca< V f Va>aNa?aFa@aCaAaB  s aDaE  Z aGaKaHaI  aJ 65aLaM 7 aOaVaPaSaQaR  7aTaU   aWaZaXaY y 8a[a^ Ʒa\ ïa] 6 Dz  Ga`aaaasabaiacafadae s ƨ agah ł ï ajapakao alaman X YB š daqar ƙ x >ata{auaxavaw š ayaz r ï ya|aa}a~ r UZ Ʒa iaa v aaaaaaa ï r ׭aa L Ña aaaa Ʒ ƨ aa ш   saaaaaa ï ïaa ` I š Gaaaa  iaaa aa ە  ҉ ï sab�aaaaaaaaaa  s űaaa r Ʒ ƙaa  aaaa ï raa > r aaaaaa r ս `aa Z 7 aaaa  < ï aa š Z սaaaaaaaa Z ҉ š aa aa ł  Zaaaa  Z ƨaa a ܌aaaaaaaa Z , Yaa a U Jaa ޕ h :[ Sa Zaaaa ކ :jaa 4{ ޤ ɽ Z 4{aaaaaa VG s Zaa Ʒa Ʒ 6 aaaa Ʒ š Z aa à `  bb,bbbb bbbb i ü  šbb b > ƙb ƙb 8 ƙ 7bbbb ҉ ї b ƨ Gbb%bb"bb  `b šb šbb šb šb š šbb š šb b! š > šb#b$ š r Z Œb&b)b'b( b*b+ i b-b>b.b7b/b2b0b1 s 7 yb3b6 ïb4b5 ï b8b;b9b: ï ib<b= ü ïb?bIb@bCbAbB Ʒ  8 bDbE y šbF šbGbH  obJbRbKbL r ƨbMbObN Œ W ŒbPbQ 5R X š AbSbT ï  Z ƨbVbbWbbXb{bYblbZbcb[b^b\b] ł š ƙb_b` šba bb Z ïbdbgbebf Œ bhbi s bjbk Z 65 übmbtbnbqbobp t Z ibrbs  y šbubw bv  bxby ï tIbz ї àb|bb}bb~bbb   սbb ս ` bb sb ï bb :y ï šbbbb b bbb N b bb b bb bb b b Nb bbbb ł Ʒ ïbb ï Z bbbbbbbbbb ە s ïbbb Ñ š 5 b łb ł ցbbbb ïbb 7 7bb 7b 7b 7b 7b 7b 7 7b 7  b bbbbbb `b  ïb ï ּbb  Z Œbbbb  Z c Zbb ` y ƨbbbbbbbb xbbb tI  Tg  i sbb r d x Zbbbb i bb шbbb ܹ ƨ Z bbbbbbb ƨb ł ł àbb y s ybbbb Œ s ï bb Zb ł j łbcKbc+bcbc bcc�c Ʒ Œ Œccc s ƨcc Ʒ Zc łc ł c cc c [ ï ücc ƨc šcc z Ñ Ñcc Ñc Ñc Ñ Ñc Ñcc$cccc d ƨ Zcc Œ c! yc"c# š A ? Xc%c(c&c' s Ñ c)c* L s s ƨc,c:c-c4c.c1c/c0 Z c2c3 ` ï sc5c8c6c7 ` 4 G ս c9 c;cAc<c?c=c> Œ ƨ c@ s cBcEcCcD Z ZcFcJcG cHcI k  Z `cLcmcMcZcNcTcOcRcPcQ ï ï L cS s GcUcXcVcW Z x Z cY s c[cdc\c_c]c^ ` s c`ca r ƨcb šcc ( šcecjcfci cgch ł 8 ł šckcl s š šcnc}cocvcpcscqcr Œ ctcu ï cwczcxcy ï Œ ƙc{c|  7 Z c~ccccc Z cc ` cccc 8 <  icc 8 ս  Ʒcdcd0cccccccccccc V cc Ñ [ Ñcc ï ƨ ƨcccccc c ł c ƨc ƨ ƨc ƨc ƨcc ƨc ƨc ƨ ƨc ƨ x Ʒcc Ʒcc Ñ Ñ cccc >c i cc Ʒ s cc c rcc ccc ƙ 6 8 c cc  ï ҉cccccccc ш  ïcc Z s ï xcccc ï Z ï cc s Œcc cccccc Z L Z šccc :y ; ï cccc c š  cc ï š :y ycd cccccccc n rccc zc   ïcccc xc ïcc B& š  šcc ` ï z cdcd�cc s  sdd x ï ydddd c  d y Ʒ sd dd dd dd d ; ƨ  šdd d 5d 5 š dddd ï Œdd sddd 5 d^ m d^dd&d d#d!d" W V  Œd$d% ƨ  ƨd'd+d(d*d) 5 ł r ˘d,d- s d.d/ d dd1dd2dZd3dBd4d=d5d:d6d9d7 d8 Q5 6 Q5 i ïd;d< Z 6Dd>d? šd@dA Z ` ZdCdJdDdGdEdF Œ dHdI  ƙ `dKdUdLdP dMdNdO ^ dQdSdR d 4 ddT d 4 ddVdYdW dX ; s Ʒd[dwd\dgd]d`d^d_ s  G ҉dadfdb dc dd Fde F F  dhdt di šdj 8dk 8dl 8dm 8dn 8dodp 8 8dqdr 8 8ds 8 7dudv Œ < s dxddyd|dzd{ d}d~ Œ ï Ʒ łdddd 7 ҉ dd j łdd ƨ s  dddddddddd i ! s dd V s Zdddd ƨ  rdd ű dddddd d ս  sdd dd r r 8d dd s ƨ Œ dddd ï s ҉dd  Kd s d r dddddddd Ʒ  š Zdd ï ƨ 3| rdddd ` ƨ s Zd dddddd š šdd ł dddd Ñ i Ndd   Ʒdeqdeddddddddddd d  Œ šdd r ï  dddd :y  Z dd   ە dddddd  ƨ dd ս s ս dddd ddd s L Zddd  ï kdd i 3| Z ïde de�dddd s Zdd Œ ïeeee Z x ` Zee `e Zee 8 : e ee ee e Ʒee d Zee Z Ʒ seeee Ʒ ƨ ƨ ee i ZeeBee0ee&ee#e e! se" ł e$e% ƨ y ҉ e'e*e(e) Z s e+e, Œ  e-e.e/ <f <f e1e;e2e8e3e7 ïe4e5e6 I ł u F G Le9e: Ʒ  4e<e?e=e> z š e@eA  łeCeUeDeKeEeHeFeG ï r VeeIeJ  Ʒ eLeOeMeN Q& s :y ePeQ ƙ 8 LeReSeT t eVeheWebeXe[eY š łeZ łe\e_e]e^   `e`ea š š Receged eeef x K K x `eielejek Œ 7 ïemep eneo ł j ł G ereeseeteeue|eveyewex  y s eze{ š <u ҉e}ee~e ̀  ee y ƙ e Oeeeeee Œeee ƙ š L ee ű s `eeee 8 ï Œee Ʒ Ze űee i 7 eeeeeeee ҉ Z ee L ieeee ï š űee 3 eeeeee  ïee ܜ šeeeee de 8 G 8;  `ee ł  àeeeeeeeeee ï  Ge x Lee š ï ҉eeeee ƨ e Zee ` ƨ eeeeee ï ` ee Z ï šeeee š ee š  ceeeeeeee  š  ee Ʒ > eeeee Le L r eee ee s eeeeee  = e eeee x  ee ïf� ł ł ?fhfg.ffffKff$fffff f f f š š f f s s ff f Z sff x Œ  Zffffff Œ ï `ff i Z yff!ff VG ƨ s ƨf"f#  ܹ f%f;f&f0f'f*f(f) s Zf+f, `f- šf.f/ š 5pf1f8f2f3 Ʒf4f6 f5 X f7 ` `f9f: N ` sf<fDf=fBf>f? ï š ïf@ fA łfC  ifEfHfFfG G  s łfIfJ s Z fLfxfMf^fNfWfOfUfPfQ 6D fRfSfT  ƨ .fV ï Z fXf[fYfZ ս ïf\f] ҉ Z  f_fqf`fcfafb Ʒ fdfpfefhfffg x Z  fi  ʗfjfk ʗ ʗflfm ʗfn ʗ ʗfo ʗ X ï šfrfufsft > Vfvfw ï  fyffzff{f~f|f} š Zff  fffff f     ff š Z Z `ffffff ff Œ  l ս ff Z  i ffff y ł x fff ff ï  Ʒ Ʒ łffffffffffff  y ff > S ffff  Ʒ ƙ ïff s ï ffff f šff  ƨffff  Zff s  Ʒffffffff  i à ïff ł fff k Ʒ sfffff rff  s sff i ffffff ` ff sf Œff ƙ < ƙ <fffff f X X iff ï s ƨfgffffffff ï š sff Z Ʒffff ł ˘f ff 5 C]fff yff K K ` g�ggggg y dgg s ` ` gg g g 8 rg g ïg gg t c gggggggg N Œ Zgg ł   ïggg s ï g  rg g(g!g%g"g# r g$ i x g&g'  g)g,g*g+ ï  ïg-  g/gg0gg1geg2gUg3gAg4g9g5g8 ïg6 šg7 š Z ü rg:g@ sg;g< Z Zg=g> Zg? Z Y  Œ ïgBgHgCgGgD gEgF ց W K Ʒ gIgJ ` 8-gKgL =gM =gN =gO =gP =gQ =gR =gS =gT = ܫ =gVg_gWg\gXg[ ƷgYgZ ł g]g^ ï g`gcgagb Z dgd gfg|gggrghgkgigj ;8 Ʒ üglgqgmgogn š šgp  s gsgygtgu c Ʒgv ƨgwgx 8 G 54 gzg{ s z :yg}gg~ggg ` ( gg i Z ggggg Zg Zg Zgg Zgg Zg ޕ ,g Zgg  4  gg V ̀  gggggggggg ï s ` gg šg ٜ g ï ;g ł gggg Ʒ ggg > s űgg y  gggggg 7 Z gg g g 8 ߰ rgggg   gg s gggggggg ï gg ˘g ցg 7�g ï Œg Œ gggg Z ` ƨgg O gg Z  gggggg d gg  ï s šgggg ï  gg V y àgh9gh gggggggg s 7g gg  ןgg y   Ggggg k `g s ƙg ƙ g ï Zghghgh� dggg K X   ïhh  Vhhhh ƙ h  rh h+h hh hhh  h šhh   hh(hh" ïhhh! hh I Ih Ih Ihh I Ihh I I  v h#h$h% B& 5Rh&h' 5R A R Ah)h* ï h,h3h-h0h.h/ ˘ s h1h2 Z Z h4h6h5 Z h7h8 š ï x ïh:h\h;hJh<hCh=h@h>h? d Œ ZhAhB r Z hDhGhEhF I  ƨhHhI ïhKhRhLhOhMhN Z  Ʒ hPhQ ihShVhThU  hWh[hX šhYhZ  ;8 s  `h]hph^hgh_hdh`hcha <hb < Z shehf s 8 ` hhhkhihj ̀ Z shlho ïhm hn j > hqh|hrhuhsht s Œ hvh{hwhy 8hx = hz 4? Yp h}hh~ `hh shhh = ܫ = ܫ i hihiAhhhhhhhhhhhhh Lhh ן ן h dhh Z hh ï ˘ Z hhhhh Zhhh K 6D V < ҉hh > > Phhh h Ʒ Y ïhhhhhh s L hh ï 4 sh Zh Z hhhh Z ï š hh ƨh h # `hhhhhhhh սh h z  hh Z Œ ihhhh  ˘ Ʒhh Ʒ sh ƙh ƙ yhhhhhh ï սh ï h ց hh rhhh h h łhh Z ï hihihhhhhhh h 2h 2h 2 2hh 2 2h 2hh 2h 2 2  ҉h h <hh ̀ shhhh hhh Z L ߿ hh i�ii ű ł 7iiii ii iii ƙ 6 5C G űi i  ű iiii à ҉ ii iii  i i  Zii2ii%ii" i ;8ii i! : F F 4Ni#i$ ł Z i&i/i'i+ `i(i)i* 4N š Dzi, սi-i. ł \ ł ji0i1 ̀  ̀i3i:i4i7i5i6 Z i8i9  Ʒ š i;i>i<i= Œ s r i?i@ x Z ցiBiiCiaiDiRiEiLiFiIiGiH d = ï kiJiK Œ ˘iMiPiNiO Z  i siQ  łiSiZiTiWiUiV x ï  iXiY i x ri[i^i\i] d ïi_i`  ibiuicinidiiieih ifig ł L ijim Zikil Z šioiripiq  Zisit ï d iviiwi}ixi| iyizi{   7   Zi~ ƨ iiii  i 8 ii  ƨ Z iiiiiiiiii siii ï Z  i Zi Zii r š iiii š ï sii G ! riiiiii x ii  s š iii 7 ii ` s i xi x `iiiiiiii k > ii ` iiiii rii : ( 5 š r Zii ƨ s  Œiiiiii  Ʒ Zii Z iiii s Z s ii Z  ijij2ijiiiiiiii Z ii zii ł V rii ïi ï sii i ƨ 4Niiiiii Ʒiii 6 K 5C Z iii ii s  s  i iii  ii i i ii i i i i jj�j űj j m ˘ jj jj jj jj >  šj j  ƨ jjjj սjj j j j jjjj S j  jjj ׭ 6j V ƙ Gj!j+j"j&j#j$ j% R àj'j( y  j)j* r r ߰j,j/j-j. . =j0j1  j3jj4jBj5j;j6j9j7j8 y s j: ij<j?j=j> x i  ïj@jA y `jCjjDjjEj LjFjGjjHj\jI 4jJ 4jKjO 4jLjM 4jN 4 ł 4jPjWjQjTjRjS 6 4 6 4jUjV 4 PB rjXjZ 4jY 7 4j[ 4 7� 4j] :j^ :j_jtj`je :ja :jbjcjd : PB 6jfjmjgjjjhji ց 5jkjl 5 P3 : rjnjqjojp r 7 7 4jrjs 4 7� 7� :juj|jvjyjwjx 6 6 njzj{ 6 PB rj}jj~j nu n 7 4j : 7� :jjj 7�j 7�jj 7�jj 7�jjjj ց łj 7� ł 7�jjjjjj 6 6 njj 6 PB rjjjj nu n 7 7�j 7�j 7� : 7�j j jjjj :j :jjj : PB 6jjjjjj ց 5jj 5 P3 : rjjjj r 7 7 4jj 4 7� 7� :jjjjjj 6 6 njj 6 PB rjjjj nu 7 4j 7� : s jj Ʒ Z jjjj i Ʒjj ` ï ï rjjjjjjjj ł Gjj ï jjjjj ï j  sjj ` 7 jjjjjj `j Dz Q5  jj ïjjjj š š j . = .jj Zj `jjj Z L x `jj s i  :yjkCjkjk jkjjjj Ʒ k k� kkk ű  kkkk  d k k  ïk Z | CNk kkkkk s ѧkk y Z ׭kkkk x  ï kk  ` 8kk-kk&kk#kk ƙk!  łk" / k$k% Z ï k'k*k(k) x ;8k+k, Œ ` ` k.k;k/k2k0k1 Z š ï k3k7k4 dk5k6 ˘  ` VG k8k9k: <W 7 [ 7k<k> k=  ïk?kBk@ kA j s kDkgkEkUkFkLkGkIkH Œ à GkJkK G i kMkO kN ƙ ÑkPkT kQkRkS  Ʒ Z . ;8kVkakWkZkXkY Z k[k\  k]k^ k_ k`  kbkdkc ykekf  ï khk}kikpkjkmkkkl š  knko Z Zkqkzkrkykskvktku ; r Qkwkx Y X Y ü šk{k| Z ̀k~kkkkk s skkk  Œkk skkk ï ` G kkkk 7 Z Œkk k łkpknMklkl[kkkkkkkkkkkk ƨ G ï kk i kkkk Z  Gkk kk k  k kk k  Œ skkkkkk š kk  Z  kkkk ï :y s kk r սkkkkkk k ƙkkk k K kkkk x k Zk ` kkkk k skk kkkk ƨk ïk ïk ïk ïk ïk ïk ï ֐ ï ߰  ;8 kkkk ï 7kk o5k k kl'klkkkkkk k sk G skkkk  k š > škk <: k ە XTk  XTklkl� ï ƨ ս Œl ҉ sll llll Z G L ƙl l ` x l l!l l Ʒl Ʒlllll ƙ ƙ 8llll Ƕl 6D 5Cll 54 K V ƙll ƙl ƙ ƙ m ƙll ƙ ƙ l"l# k V l$l%l& / yW e ol(l9l)l0l*l-l+l, s ł l.l/ ï l1l6l2l5l3 ƨl4 7 7 àl7l8 ï ` Z ïl:lQl;lDl<l@ Ñl=l>l?  / ƨ t ïlA XlBlC #� # lElPlF  lGlH lI š šlJlK š šlLlM šlN š šlO  š s lRlXlSlWlT ƷlUlV    xlYlZ ` Ʒ l\ll]ll^lml_lfl`lclalb ە š ;8 Zldle Z   lgljlhli Z o Ʒlkll Z ï Œ Ʒlnlxlolulplq z ƙlr lslt X S Ƴ lvlw ƙ  :y šlyllzl~l{ yl|l} Z ` Ʒ ll  ` cllllllll ï `  `ll ł yl llll ƨl sl 7 x l llllll ƨ y ll 8 lll ï Ʒ Zllllllllll Z y ll Z  Œ slllll ïl e # Ux ƙ ll  llllll `ll š 5 š  Œlll ï l ll  ll l l   x llll 3| lll R. ll ` s yllllllll łl սll ƨ ƨ 4Nll < llll  ˘ ll ƨ Ʒllllll Ʒ š ll llll Z űlll s K ƙlll > š š lmlm=lmlm lmllll 8 սlmm� Z m ł x Œmmmm s šmm ï y m mm mm m i mm  Z ï R\mmmm   Ʒm ï mm(mm!mmmm ï Ʒmm Zm"m%m#m$ ;8 r š m&m' m)m0m*m-m+m,    ;8m.m/  ˘ ƙ sm1m7m2m6m3 Zm4m5 # Ux  ï `m8m9 m: m;m< ï ű > m>mcm?mRm@mImAmFmBmC ` ïmD >mE š >mGmH s ە `mJmMmKmL  mNmO mP k łmQ j łmSmZmTmWmUmV  ە mXmY  ̀  im[m^m\m] s m_ma m` ցmb Ʒ ̀ ïmdmumemmmfmkmgmj mh \Mmi \M x iml i mnmqmomp Z ҉ smrms Z š mt s mvmmwm}mxmy ï Vmzm{m| ` ï r àm~m  šmmmmm y (m 5 ( ï smmm 8m 8 7m xmm G š mn�mmmmmmmmmm x Z mm ;8  Œ Ʒmmmm Œ š ű ܌ m ەm 4/m 4/mmmmmm y Zmm s  smmmm Zmmmm 8mm 8 8m 8m 8m 8m 8m 8 mm m m m m m m ցm Ʒmm 7 ű Ʒ mm L mmmm r R A mm 6D 54 Kmmmmmmmm y m ïm j łmm Ʒmmmmm Z mm mm mm m mm = Ʒ rmm m àm à  ïmmmmmm smmm ׭ Ʒ Nmm ҉  m m mmmm Ʒ G mm ï d m ەm ە nn-nnnn nn nn  n Ʒn Zn Z Zn ,n   nnnn ;8 s ҉ սnn ï n nn ï  Z Lnn$nn!nn nnnn ̀ ` N n  ܜ  n"n# Ʒ Œ n%n(n&n' Œ  >n)n,n* n+ ` ` # Z n.n<n/n5n0n2n1 n3n4 Ʒ ï ەn6n9n7n8 s Z Z in:n; ˘ ` Ʒn=nDn>nAn?n@ s  ïnBnC s nEnKnFnG ƨ nH rnInJ ï k  ïnL ƙ nNonOnnPnnQnnRnhnSn^nTnX nU nV łnW łnYn] ïnZn[n\ < K Z ïn_nen`na nbnc d 4 dnd d 4nfng ;8 ïninunjnmnknl ƙ  nnnq Gnonp nr nsnt s  nvn|nwn{nx nynz Ñ  G ï n}n n~n Ʒ o5 ە Znnnnnnnn x ï inn i ` xnnnn  d nn `  nnnnnn Z Z n ï nnnn ïn snn ï  ïn  z nnnnnnnnnn ï Z `nn r Ʒ nnn n nn Z ü  ׭nn Z i nnnnnnn nn  s Ʒ nn `  ïnnnn Z nn   :ynnnnnnnn d š  Gnn ƙ  Ʒnnnn Ʒ c nn ׭nn 6 ïnn j ց jnnnnnn ï i nn ە n nn  r 7 ƨnn ƙn ïnn ƨ s inoFnononnnnnn ƙnn dn d 4 dn 4 dnn  ̀ rnnnn Z no Zo�o Z Z ̀oooo oo  o Zo o  5 šo o Z Œ Ʒ yoooo ooo Z s ű Zooo ѧ s шooo ïoo s ̀ š ï šoo.o o'o!o$o"o# ƙ r Zo%o& =  o(o+o)o*  G š so,o-  G Go/o:o0o5o1o2 ` o3 o4 o6o9 Ʒo7o8 š D š o;o>o<o= ï Ʒ so?oB Ʒo@ űoA ˘oCoDoE  :y x oGotoHoboIoSoJoPoKoL ZoM 8oNoO Z ï ïoQoR ս s ս ïoTo\oUoYoV oWoX Ʒ G Ʒ oZ ƨo[ j o]o^ r i o_o`oa Ñ Z ocomodojoeof ï ;8 ïogohoi Ʒ ƨ Zokol Z ïonoqooop Z 7oros G Œ š Ʒouoovoowooxo{oy oz  ܜ  `o|o}o~ s ű ܜ <Wooo o d  ooo  > oo  ;8 oooooo Z ˘ doo i V  oo do oo d Ʒ Lop>oooooooooooo Z o oo j ; ցoo  ï ïoooo > ` Œ Eoo d Z oooo ïo ܜoo ƙ ` oooo Ʒ ս s Ʒoo ƙ Ʒ ooooooooo W do d 4 š doo x ïoooo r oo  x oooooo 7o oo 54 < Goo ï š ï ܹoooo Z ko xo ;8o ;8o ;8o ;8o ;8o ;8o ;8 ;8oo ;8 " ;8oo Ʒ op oooooooo ` oo :y Ʒ  Ʒoooo y Z 7oo  Ʒ opop�oo ƨ  p ƨ `pp pppp N 3 ïp < ܌  p  ip pp ppppp Ʒpp Ʒpppp Ʒ d pp d ƨpp$pp pp  p!p" p# ܌  p%p;p&p:p'p( p p) L Lp*p+p3p, L Lp-p. L Lp/p0 Lp1p2 L L p4 Lp5 L Lp6 Lp7 Lp8 Lp9 L ïp<p= y ï łp?pp@p_pApPpBpIpCpFpDpE ;8 Z pGpH ` ƨpJpMpKpL Z ƨ `pNpO  ƙ ƷpQpXpRpUpSpT Ʒ ҉ Ʒ ïpVpW Qk `pYp\pZp[ ï p]p^ d Ʒ p`pzpapgpbpdpc ï  Ʒpepf s ! sphpkpipj ƙ plpm š Ñ pnpopp 65 Rpq 65 Lpr Lpsptpu L Lpv P`pwpx L Lpy R 4p{pp|pp}p~ i ï ï Ʒpp ï p p 8 pppp ;8 Ʒppp p pp p p p p pp  ł 4?pppppppppp ` :y Ʒpp Ñ ܌ àpppp Ʒ pp ï ű pppppp 7 pp ï 6bpppp s 7 `pp Z b Zpp ï ï xpppppp ïp ;8 pp ̀ N pppp  pp ű   pppppp Z p r Œpppp Ʒ pppppp # Ux  p \  psfpr(pqhpq!pppppppp p Ʒ spp ű ppppp Z  ܌ ` pp ï ` pppppp 3m s pp Dz ;8pppp Ʒ ï > pp  Zpqpqq�qqq x ;8qq K L Kqq x ` x Zq q q q   65q q Z x xqqqqqq ƙ yqq Œ q rqq K S qqqq ƙ qq ł k .q"qFq#q5q$q,q%q)q&q' Z àq( ƙ d Hq*q+ s ܌ à q-q0q.q/ q1q4 q2q3 ܜ  ܜ s dq6q?q7q<q8q; sq9q: WS 6 Wa ƨ q=q>   ƙ sq@qCqAqB Z ƨ Ʒ dqDqE Z k ÑqGqWqHqQqIqLqJqK ƨ ZqMqP sqNqO ł qRqUqSqT Œ s ŒqV  ï ZqXqaqYq\qZq[ ï Ʒ s Zq]q` q^ Lq_ L rqbqeqcqd x Ʒ 8qfqg r Ʒqiqqjqqkqqlqxqmqsqnqr Ʒqoqpqq 6 8 Z sqtqw ïquqv R ` o qyq|qzq{ Ʒ  s q}q~  ˘ qqqqqq  ѧ r qq 3 x qq qq V qq ï ï Ʒqqqqqqq Z Z Ʒqq ƙ Ʒq 8Z rqqqq ƨ  x qqq s dq d d ˘qqqq q  qq Œ Vq qq y 5 šqqqqq Œqq ( šq (q ( (qq  qqq -  qq ƙ  Ʒqqqqqqqqq dq q qq Z Ʒqqqq  sq qq  8wqq ` Ʒ ł qqqqqq  s Ñqq ï  qqqq  š ƙqq   Z rqrqr qqqq d üqq sqq :q : Oqqqq Zq Zqq Zq Z Zqq Z Zq Z Zqq Z Zq Zq Zq Zqq Z Z q Zqrq Z Zr�r Z Zrr Zr Z Z Fr Z Zrr Zr Z Zr Zr Zr rr r  rr y ƨ rrrrrr srr ƙ ƙ rr r Lr ` y ïrr"r r! i Ʒ xr#r' r$r%r&   x Ʒr)rr*rr+rTr,rEr-r:r.r1r/r0 Œ ï r2r3 Z ïr4r7r5r6    r8r9   r;r@r< ï sr=r>r?  rA rB `rCrD Dz ï Dz ïrFrMrGrJrHrI G Z ïrKrL Ʒ ƙ VrNrQrOrP Ʒ > ƙrRrS  ƨ ZrUrkrVrbrWr]rXrY ƙ ïrZ r[r\ # Ux  r^ra ƨr_ zr` [ z ű Vrcrhrdre rf rg rirj ű ï s rrlrxrmrprnro  սrqru ƙrrrsrt < Vt < rvrw ryr|rzr{ : r}r~ ە rrrrrrrrrr rrr # Ux # Ux i Vrr irrr Z ï c rrrr ï Ʒr i ƙrrrrrr x  srr rr G V  rrrr r r irr  s rrrrrrr Z rr ï rrrr  s `rr " rrrrrr Ʒ Z i Œrr ƙ Zrrrr i rrr ƙr A Zrr 8 rsrrrrrrrrrr ` s rr Z Z rrrr ï s Zrr ˘rrrrrr ï ] սrr y Z ï srrrr Z  ƙrr ï ïrrrrrrrr  ƙ rr  rr irr 6 rrrr ̀ z x 4/rr ï > ƙrs s�sss ï  Ʒsss ss X s Hs x Wa WSs ss s i y ܹ s ƙssDss-ss&ssss ;8 Œss%s ss 6 ïss s ïs ïs ï 6 ïs! ï ïs"s# ïs$ ï 6 ï rs's*s(s) Z š s+s,  x ƙs.s:s/s7s0s4 s1s2s3 V Ks5 s6 ƙ 8 ƙs8s9 ï Z 6b s;s>s<s= y i Z Œs?sC Zs@sAsB R. R. y sEsVsFsMsGsJsHsI Z ƨ ïsKsL   WSsNsQsOsP z sRsS ű sT sU ï ï ּsWs]sXsZsY ï s[s\  s ҉s^scs_sb ;8s`sa K Œsdse 7 Z Ʒsgtshssissjsskszslsssmspsnso Z ƨsqsr ï ű stswsusv d 7 Nsxsy Œ ƨ s{ss|ss}s~  s ss Œsss 7� 3_ ł  ƨssss ï ƨss Z y ` ssssssss  d ƙ ss Z Œ Zssss à  Ʒ ss r = sssss  ƙss Ʒ Z ssss   ƙ  s ssssssssss ƙ  y sss s Z Zssss Z  Zss d  ssssss ss ƨ sssss x  ss r ssssss ƙs  Zss G L ïssss  š ̀ss K Z ssssss  ƨ ss ssss Y~ X ss š > Ppssss Ʒ ƙss  ƙ ƙss d 4 dst;ststssssss ï UZ s ˘ ,ss  ܌ ̀stss s ցs ït� 3_ tt ï   ïtt tt tt s Z r t t ҉ t ttt r ƙ tt Z ҉tt&tttttt ï  stt sttt ü <, ! ʥ > st t#t!t"  s rt$t% Z t't4t(t-t)t* ƨ t+t, ܜ  ܜt.t3t/t2t0t1 7 ƨ ł Z łt5t8t6t7  ï r t9t: ƨ ˘ ەt<tet=tRt>tJt?tEt@tA ܌ tBtC c tD H 4 dtFtI dtGtH E d d ƙtKtOtLtM ƨ d ƨtN KtPtQ  stSt[tTtXtUtW ƨtV d š `tYtZ Ʒ ï t\t_t]t^ xt`td tatbtc š ( š ˘ stftvtgtnthtktitj Z s tltm ï  ƙtotrtptq Z ܹ ƙ tstu tt d E ܹ twt|txt{tytz y Ʒ ït}tt~t t t X tt ï t Ktu*ttttttttttt tt s x  `tttt tt t t 4? ƨ tt Z s ïtttttt tt . r tttt Ʒ  ƙ tt ƨ Œ tttttttt Z  tt r Ztttt Lt ƙ tt L Ʒt ە t tt tt tt t t : tttttt d r d dtt t 3_ tttt ït Zt ցtt   ï tu�tttttt dt d tt ï 0 tttt ï Ztt tt ï  n tt  d d tttttt Ʒ <  űtt s i Zttttt ïtt 8; 8 6D ï dtt ш ҉t >t > šuuuu uuuu Z ïu u u u ï xu uu uu Ʒuu > M \u u , ,u ޕ ,uu ï ï Vuu#uuuu  s uu  Ʒu 7u!u"  Od  ܜu$u'u%u& Ʒ Ʒ su(u) Ʒ ƙu+usu,uRu-u>u.u7u/u2u0u1 Ʒ Z űu3u6u4  \u5 \ ƨu8u;u9u:  x  u<u=  ƨ = u?uKu@uFuAuE ƙuBuCuD ( š uGuJ ŒuH űuI ű M4 ƨuLuOuMuN Z N սuPuQ :y d uSuduTu[uUuXuVuW i Œ uYuZ Z u\u_u]u^ d s u`ua V ս ƙubuc ï ּ ïueulufuiuguh  ܌ š ujuk Z ï z Ʒumupunuo  s ƨuqur r Vutuuuuuvuuwuzuxuy  Ʒu{u| 7 u}u~u d 4 d 4uuuu Ʒu űuu M4 űuu űu űu ű űuu ű űu ű kuu u u  j x suuuuuu 3|uu Z ` ƨuuuuuu W ü u uuu ruu 65 ł j ł  uuuuuuuu ł d iuu Ʒ u iuu 7 Y Kuuuu  ƨuuu š ïu ï R s uuuuuu ܌ cuu ` x Z uuuu ƙ Q Ʒuu r ƷuwuvuvZuv@uv1uv,uvuvuu Huuuuu Hu Hu H l Hu Hu H Hu H Hu Huu Hu H  Huu mD Huuu Huuuu Hu Hu H uuuu M Huu m$ H Hu u uu l m$ l Muu  H Hu Huu Huv� H Hv l lvvv lvv mjvvvv . |v v . U .v |v v |v | |vv | |v |v ï | .v . Hv Hvv H m4 v Hvvv l m4 H lvv v)v!v(v" <v# <v$ <v% < <v&v' < m4 < m4 H Hv*v+ H H lv-v/v. l mT l Hv0 = m4v2v5v3v4 H H l Hv6 H =v7v8v?v9 = =v:v;v>v< H Hv= m H H m4 l HvAvYvBvTvCvSvD lvEvPvFvKvG mvH m4vI m4 m4vJ mD m4vLvM l m4 m4vN lvO l mvQvR H H l H l HvUvX lvV lvW H l l mT Hv[vv\vv]vv^ lv_vv`v}va m4vbvxvc Hvdvlve Hvf Hvg H Hvhvi Hvj Hvk H Hvm Hvn Hvo Hvp Hvq Hvr Hvs H Hvt Hvuvv Hvw H H Hvyvzv{ H H lv| l m$v~ l lvvvvv H l Hv . Hvv Hv H Hvvv l š l š l l l <v mD l H =vvvvvvv Hv Hvvvv mv mv v v v mv Hv m4 =v =vv = < mvvv H Hv Hv H lvv H l Hv H l l H Hvv Hvv Hv Hv H l Hvv Hvvv Hv H H v Hv H , Hvwvv Hvvv Hvvvv Hvv lvvv Hv H H < Hvv H Hvvvvv H = m$v mj l m4v Hv H H H H Hvv H Hvv l H Hvv m4 Hv Hv vv H H <vvvv m$ = H lvwvvvv m4v m4v m4 H lvv _ lvvv m4 l H < Hvvwvv Hvv H Hvv Hv Hv H H , Hv Hvv H Hvv Hw� H Hw H , H H =wwwww = <ww !w w lw lw l Hw w l H  !w H Hw H w Hwww Hww <w < < šww Hw mj l mjw mjw mj w wOw!w7w" Hw# H Hw$w%w. Hw&w' Hw(w+w) H Hw* H mw, Hw- H H H Hw/ Hw0 Hw1 Hw2w3w6 Hw4 Hw5 H l Hw8wFw9 Hw: H Hw;w<wA Hw=w> H Hw? Hw@ H m HwBwC H HwDwE H l lwG H HwH HwIwJ HwK H HwL HwMwN H l HwPwb HwQwR HwS HwTw\ HwU HwV HwW HwXwY HwZ H Hw[ l H Hw]w^ H Hw_ Hw` Hwa < H Hwcwd H Hwewf H Hwgwh Hwi H Hwj Hwkwl Hwmwwnwwow{wpwxwqwt Hwrws H Hwuww Hwv H Hwy H Hwz H Hw|w} Hw~ H H wwwwwww  w  Hwww  H w  H wwww H w Hwww H H w w Hww ww Hw Hw Hwww Hwww H Hw H w Hw H Hwwwww H H w H Hw Hw H www Hw H www ww ww Hw Hwx1wwwww Hw Hw Hw Hw Hw Hw H Hww H Hw H H Hwwww Hw H Hw Hwww Hw Hw Hw H l Hw Hw H m4 Hw Hww Hw H Hwww Hw Hw H Hww Hw mw H H Hw m Hwx ww Hww Hw Hww Hww Hw Hw H Hw Hww Hw H Hw Hww H < H Hww H Hw Hww H H Hw H Hw Hx�x H Hxxx Hxx Hx H H m$x Hx Hx Hx H Hx H lxx'x H Hx Hxxx! Hx Hxxxxxxx l H l mxx m$ H H Hxx mx H mx H H Hx" Hx# Hx$ H Hx%x& m H l Hx(x) Hx* Hx+ H Hx,x- H Hx.x/ H Hx0 H mx2x< mx3 mx4x5x6 m H mx7 mx8 mx9x: m mx; m H mx= mx>x?xJx@ m mxA mxB mxC mxD mxE mxFxG m mxHxI m ] mxKx] mxL mxMxN mxO mxP mxQxWxRxT mxS mxUxV m mxX mxYxZ o ��x[x\ � � �0 m mx^ m Hx`&xaxb{Hxcyxdxxexxf sxgxxhxxi xjx{xk xlxyxm ïxn ïxo ïxp ïxq ïxr ïxs ïxt ïxu ïxv ïxw ïxx ï ïxz > Ʒ ïx|x} ̀ ï ïx~ üxxxx  `  `x x  `x ƨ xxxx xx x TX xx x x x TXxx z 7x Z Gx Gx Gx Gxx Gx Gx G G xxx ïxx ïx ï ïxx ïx ïx ïx ïx ï ïxx ïx ï ïxx ï ïxx ï ïx ï Dzx ƙxx ƙ ƙx ƙx 6D ƙxyxxxxxx ï Ʒx ï ` xx G k ƨ xxxxx ƨ x xx x xxxxxx 65 65xx 65 65x ïxx x x x x xx  ֮ xx x xx  xx  x x xx  xx  x x  x x xxxx   ֞x  xx x x  xx  x x ֮ xy�x x Gxx ە ï 7 ï Ʒ ҉y ƨ yzVyyyyhyyXyyKy y(y yy yy yy y ׭ yy  yyyy 7 Ʒ syy ï syy yyyy ï d ï i ïy y!y%y"y# ày$ ï à y&y' 7 Z y)y9y*y2y+y/y,y- s ïy. c ƙ y0y1 Ʒ ï y3y6y4y5  s y7y8 ï ց Zy:yDy;y>y<y= ï Œy?y@  Z yA ѧyB ѧyC �@ ѧyEyHyFyG  ï 7yIyJ  ï ï yL yM cyN yOySyPyQ > 7 yR  yTyU ï yVyW Œ  Z ŒyY 8yZ y[yby\y`y] y^ ïy_ ï �O ïya ï ïycyg ïydye ïyf ï ï ï Ʒyi yjyykyyly űymynyyoywypys yq yr  T*ytyu   ïyv  yxy}yyy{ yz  y| y~yyy  ן XT y yyyyyyyy   yy   Qyyyy yy # } Qyyyyyy K* t , tyy K9  �] yy XT j ׭ yy Z ï zyyyy yy ƙy ƙyy ƙ ƙy ƙ 5Cy ƙ ƙyy ƙy ƙ ƙ 5Cyy ï ` r ïyy k yyyyyyyyyyyyy ï r syy r  yyyy Z y yy r ï y š yyyyyy  yy > Œ ï syyyy ï  ïyy  ï Œyyyyyyy ï yyyy y y ï Zyyyyy ï  7 yy 7 ï d yyyyyy ï d  7yy Ʒ  yyyyy k G ï ky ï yzyz yzyzyz� Z zz ï ï zz zz z ï a WSz z sz zzzzz G s ̀ ïz z  dzzzz s Z ï yzz ï r zz7zz*zz$zz#z z!z" 65 s Ʒz%z& Œ z' r z( z)  Sz+z1z,z- d s z. dz/z0 R oz2z6z3 ï z4z5 rz8zPz9zMz:z; z< z=zKz> 7z?zEz@zCzAzB  c ( AzD  5R 5pzFzIzGzH  c ( AzJ  5R 5p zL r zNzO ҉  ïzQzS zR > zTzU Œ y zWzXzzYz{zZzaz[z^z\z] Ʒ ˘ ïz_z` ï y ï Nzbzszczn ïzd Ʒzezfzmzgzk šzh kzi kzj k Azl < š < Z izozp Œzq ïzr ïztzz zuzvzw b 3 3zxzy b + b  z|zz}zz~zz rzzzzzzzz ƙ <z ƙ < ƙ szzz ; ; zzzzz š 5z X Ñzzzzzz sz Ʒ izz [ Ʒ Ʒ izzz Ʒ zz Ʒ  zzzz š Xz s s ï Wzz ҉ Ʒzzzzz VV VV VVzzz VV VV zzzz 7 ` zz ƨzzzzzzz ï ƨ ïzz y = zzzz rz z ƨzzz ּ Dzz ïz ï ï 3z zz ƙzzz ƙz 4 ƙz ƙzz ƙzz ƙ ƙ 5Cz{zzzzzzzz ˘zz ïzz   i zz à Œ r ïzzzz Ʒzzzz j z jz j jzz j Œ `zz ` ˘  Zz{z{zz Ʒ z `z{zzz z    {� { Q { {   {{ Œ ï r ï{ {{ { ï Z{ ˘{ ˘{ ˘{{{ ˘ , �l ˘{{  ш Ʒ ï{{.{{${{{{ ƨ{ ï{ ï r x ï{{ y Ʒ { {!{" ï ̀{# ï ï ̀{%{*{&{' V Ʒ{( s {)  {+{- Ʒ{, ƨ <u k Ʒ{/{<{0{9{1{2 x ï{3  Œ{4 Œ{5{6{7 M Œ Œ{8 \ Œ{:{; y Œ{={@{>{? Ʒ ̀ {A{B G {C ï{D ï{E ï{F{G ï ï{I}{J{{K{{L{{M{{N{Q{O{P ï Ʒ V {R{ Z{S{T{n{U{\{V{Z{W {X {Y ( {[ ({]{h{^{e{_{b{`{a ( O {c{d ({f {g O {i{l ={j O{k 8Z  {m r {o{v{p{r{q   {s {t {u {w{{{x{y �{ {z O {|{ {} O{~ = { { = ü {{{{ ҉ ƨ ս ï{{ ï r c s{{{{{{ { `{ ` Ʒ W{{{ ü{{{{ {{ {{ { {{ {{ {{ { { { { {{ { { 5{ {{{{ { { { { {{ {{ { { { { { ҉ ս{{{{ k c Z{{  G G ï{{{ Œ Ʒ{{ s  G `{};{|{{{{ ս V ï {|{{{{{ { {{{ { { { { { b  { { {{ { { {{{ ï{{ s ï Ʒ {{{{ z ï :y{{ Ʒ {|{|;{|&{{ Z{{ Z Z{{ Z{ Z Z{{ Z Z{|{ Z|�| | Z Z| Z| Z| Z|| Z| Z Z| Z  Z| Z| | Z| Z| Z| Z| Z Z| Z | Z|| Z|| Z| Z Z| Z|| Z Z|| Z w Z Z| Z| Z| Z|!|" Z|# Z|$ Z Z|% 4 Z|'|3|( Z Z|)|* Z Z|+ Z|,|- Z Z|. Z|/ Z|0|1 Z Z|2  Z Z|4 Z|5 Z|6|7 Z|8 Z ޕ|9|: Z Z |<|b|=|G|> Z Z|?|@ Z|A Z Z|B|C Z Z|D Z|E Z|F Z |H Z|I|T Z|J Z|K|L|Q Z|M|N Z Z|O Z|P Z |R Z Z|S Z  Z|U|V Z Z|W|X Z Z|Y|Z Z|[|^|\ |] Z |_|` Z |a Z Z Z|c|d|y|e|k|f Z|g Z Z|h|i Z Z|j Z h|l|r Z|m Z|n Z|o Z|p Z|q Z ,|s Z Z|t|u Z Z|v Z|w Z|x , Z|z||{ Z|| Z|} Z|~ Z| Z Z|| Z Z , Z|| Z Z|| Z Z|| Z Z|  Z|||||| || Z Z|| Z Z| Z|| Z| Z Z|| Z| Z J Z||||| Z Z||| Z|| Z| Z  Z| Z| Z| Z Z| , Z| Z Z|| | Z Z Z|| Z Z| Z|| Z Z|| Z Z| Z| Z Y|| Z|||| Z Z|| Z ޕ Z| Z Z|| Z | || | | | Y | Z Z|| Z| Z| Z| Z| Z Z 4{ Z| Z| Z| Z| Z| Z|| Z| Z| Z Z|| Z| Z Z| Z| ˘|| (|| (|| (| (|| ( (| (| (|| (| ( (|| (| ( ʗ ( (| (|| ( (| (||||| (| (|  | | ||  ( }�}}} ï  ï }}:} ƙ}} ѧ} ѧ} :y } } } } }%}}}}}}} ` } X X} }} 7 S }}}}}} Yp Xr Y~ 7 }}"} }! Y` Y K}#}$ K �}&}.}'}* 4?}(}) YB }+ },}- Y` 4? X}/}3 }0}1}2 Y` YB �}4}7}5}6 4? 4? }8}9 K } Y r}<}M i}=}> i}? i}@ i i}A i}B}C i}D i}E i i}F}G i}H i i}I}J i i}K}L i i �}N}O  ï 7}P}Q}^}R}[ }S }T}U}X}V}W N ˘ 3 }Y}Z  ï 3 }\}] ï  ï }_}~}`}{}a}x ï}b}c}d ï ï}e }f}g ï ï}h}i}r ï}j ï}k}l}o}m ï}n ï ï ï}p}q ï ï}s ï}t ï}u ï ï}v ï}w ï }y}z r  r}|}}  ï  ï}}}}}}} UZ} Ʒ r  ï} ` ï}}}} ï Ʒ ü Ʒ}} à  ï ƙ}G}}}} } }} }  } }} }  } }}  }}  } } }}  }  t}F}~:}}}}}}}}}} }}}} ƙ} ƨ s } ƙ}}} }} ƙ} < 7 } ` `}}}}} ü}}} ƙ} ü W~ & ü}}} š ƙ } ü ü}} ƙ š ƙ}}} `} `}} ƙ} à ƙ ƙ}}}  N 5} `}}}} ü} ƙ Z ` ü `}} Ʒ }}}} `} ` }} ` s ƙ}} `}}} `} }} = `}  =} 3m `}} ü V}} ƙ ƙ }~}~ }~ }} } }} } } } ~� ~~ ~ ~ Q ~ ` `~ `~ ƙ~ ~ š 7 š `~ ~ ~ `~ ~ Ʒ~~ ƙ~ `~ ƙ~ ƙ s ü~ ü~ ƙ~ 3~~#~ `~ ` `~ Ʒ~~~" ƙ~ ~! ƙ d W~ ƙ~$~- `~%~& `~'~* ~( ƙ~) ƙ #�~+ 4~, 7 . `~.~/~6~0~1 ƙ ~2~4 ƙ~3 ƙ ƙ~5 ƙ Œ~7~8 š~9 š ƙ š~;~~<~y~=~_~>~P~?~I~@~D~A ü ü~B~C ` ƙ~E ü ~F~G~H 7 ` ~J `~K ü~L~N~M k ƙ~O š  `~Q~R~X~S~T ` ƙ~U~W~V š š Œ ƙ~Y~\~Z 7~[ 4 Č 4~] ƙ~^ š ƙ~`~m~a `~b~f~c ƙ ƙ~d ~e ƙ `~g~h~k~i~j ƙ s V ~l  ƙ 4~n~p~o ` ƙ ` `~q `~r~s~v~t~u ƙ ƙ L~w~x ƙ ƙ~z~~{~~|~~}~~~ ƙ ~~~ ƙ~ ƙ s ƙ~ Z~ Z ޕ Z~~~ s~ ü ƙ~ � ƙ~ Z ƙ ü~ ` `~~ 4 ~ 5% 4~~~~~ `~~ š ƙ ~~ ޕ ޕ Z s `~~~~ `~~~ ƙ ~ � ƙ~~ `~ ƙ ~ ü ƙ~~ d Wp~~ ~~ ü ƙ r~ ~ ü~~ ƙ (~~~~~~~~~~ s ƙ~~~ Z ƙ~ ƙ s~~ ƙ š~~~~ ~ � ~ K ~ ü~~ ƙ <~~ ~~~~~ `~ s š~~~ ƙ ƙ š~~ ƙ K ~~~~ ` Z~~ ƙ~ D ƙ~~ ˘ ƙ ƙ ~~~ `~ � ƙ~~ ƙ ƙ z~~~ `~~ ~ ü~ ƙ~ ƙ ~~ ü ƙ~~~ ƙ � ƙ~~ ƙ ü � ƙ~~~~~ ü ƙ~ ƙ~ s ƙ~ `~~  ƙ ƙ� ` ü ƙ ƙ ƙ1    ƙ ƙ ƙ . š s r `  ƙ L V 4 V ƙ ƙ ƙ s ƙ - (!%" ƙ#$ ƙ s &' ƙ š ƙ ) `*+, � ƙ s ƙ.0/ V ƙ V243 ` ` ƙ `56?7< 89: ;  7= ü ƙ> ƙ @C `A ƙB ƙ sD üE ƙ s s HIxJjKNLM Z ҉ ï VOP ï (QaRX ïSTVU ï 3| ï ïW ïY\ ïZ[ ï ï ] ï ï^_ ï ï`  bcgd ׭ef  ս  hi G V >knlm i s սop  q r 8 8st 8u 8v 8 8w 9 8 ïyz{ 8 ü| } ~       8      M ï š ƙ ƙ r ƙ ƙ  ƙ   ƙ Œ ƨ ƙ š  š s s ƙ  ƙ ƙ  V  3m ƙ  m 4  ƙ t   ƙ ƙ š Œ y ƙ Œ  ƙ `  ƙ ƙ ƙ  ƙ ` ƙ ƙ ƙ Œ  s  ƙ  . ƙ ƙ ` ƙ s ƙ < ƙ ƙ ƙ ƙ ƙ ƙ  ! ! # ƙ ƙ ƙ � ƙ  ƙ ƙ š  ƙ ƙ � ƙ ƨ ƙ ƙ  ƙ �O 8 2 Vt ƙ      ƙ ƙ  ƙ ƙ ƙ ƙ ƙ3' ƙ ü ƙ s ƙ   6 ƙ !$"# ƙ s s ƙ % ƙ&  Œ()/*-+, 8J % P ƙ.  ƙ02 ƙ1 s ƙ s4C596 ƙ78 š ƙ ƙ Œ:?;= ƙ< ƙ ƙ>  ƙ@A ̀ ƙ ƙB ƙ š ƙDEIFG ƙ  ƙH š ƙJ ƙKL  ƙ ƙ sN\O P ïQTRS ï ü ï rUV i W dX[Y Z š k š  Z]s^a_` rbc Ʒ ï deg ïf ï ̀h ̀i ̀j ̀k ̀ ̀l ̀m ̀no ̀ ̀pq ̀r ̀ ̀ Atuv ս ïw  шx шy шz{ ш| ш} ш~ ш ш ш ш ш ш P ш ƙ  ̀ ƙ ̀ ƙ ҉ k Ʒ V ׭ ` ܫ ܫ ܫ = ܫ ` ܫ ï x ï     W W    W H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H m H H H H H H H H H m m  H H H H m H H H H H H m H H H H H H H H H H H H H H H H H H H H� H b H  H H H H H H l H H  H  H H H l H H H H H = m m m m m m m m m" H! H m H#$ m H m% H m'o()a*+,;-N.;/802 H1 H H34 mT H H567 m4 H H l9 H H: H H<G=A H>? H H@ H lBC  mjDF HE H m4 < H HHI H HJKML l H H l lOPQRSqThU`V HW HX H HYZ H[ H H\ H] H^ H_ ` Ha Hb H Hcd H Hef Hg H l H Hij H Hk Hl Hm Hn Ho Hp H lrstuv| Hwx H Hyz H{ H l H} H~ H H H l H H H H H H H l H H H H H H H l H l H H H H H H H ` H H H H H l H H H H H H H H H ` H H H H H l H l l l l l l p l H H H H H l H H H H H H l H H H H H H l H H l H H H H H H H l H H H H l H H H l H l H                 l m4 l H mj l l H l m H� < H H H m4 =  H H l  H H  l H H7 H H- H H H l% H H H H H H m$ H H ! " # $ l& H' H( H H)* H H+ H, H. H H/ H01 H2 H H34 H5 H6 H l H8: H9 m4 H m4 H<h=^>K?C@ lAB H H H HD H m$EFIGH H = = HJ H H lL\M H HNO[P <Q <R < <S <TU < <V <W <X <YZ < 1 < m l] H = l_` m4 ladbc l H l H Hefg H H l lijukm ll m$ Hnto Hpr Hq H ms H m l H Hv} Hwxz ly H H H{| mj H l l~ H H H l H    l  c š mT š .    <  l H H < H H H m4 H < H H H H H l E H H l  = l = H l l H H H H < = m$ l H H H l H l H = C C C m4 m$ m$ m$ m$ m$ m$ m$ m$ H  m$ m$ m$ m$ � H H l H m l mD mD m l m m l l H H m m < m4 m l H` H H  H  < H  m  H H H H H H H H� H H H H H H HG7!  H H  H H H H H H H   H H H H H H H H H H H H H H"*# H$'%& 0 @ @ m4() m4 m +1,/-. P `0 H2534 H P H6 H  H8B H9:A;><= l p  m4?@ m4 < <  H HCD H m4EF   H HR HIJNK HL HM H M HO H HPQ H HS HTX HU HVW H HY[Z H H\^ H] H _ H H m lbcgd =e Hf H mT Hhijlk m$ S H lmn oypuq Hrts H H l H l Hv Hw Hx m$ Hz{~|} H H H H H m H H l H H l H l H m mj H H H H m$ H H H H H l l H H l H H H H H H H H H H H l H H H H H H H H H H H H H H H H H H H  H H H H H H H H š H H H H H H š H H H H š l l H  H H H H H H H š  H H S H = H m4 H H H H H l m4 m4 d H = l H l lG H l l l H H� H  H H l < l H =  _  l  u H  H H H H H H;6 H'" H H  H H ! H # $ H%& H(3)0*-+ , H H H. / H12 H H 4 H5 H H 7 H8 H9 H: H H<h=U>L? H@GAD HBC H HEF HHI H HJK H MP HN HO H QR HS T HV` HWX]Y\ HZ H[ H H ^_ H H a Hbdc H e Hf H g Hi H Hjk Hlnm  H otpr q  H Hs H   Hvw H Hxy Hz H{ H| H} H~ H  H  H H  H  H H  H H H H H H H H H š H l l l l l  l  l  l  l  l l l l  l l l l    l  l l   l l  l l  l H H H H H  H  H  H  H  H  H H H  H H H H m4 H H H H H  H  H  H H H H  H H H H m4 H m l l m H l . .   l l mT m4 H H l  f� m4 H <  š . š = š H  m$ H H l <  = H H H = l H% H H H H H H H H H H H!" H H#$ H m$ H&4' H(. H)* H H+, H H- H l/ H H0 H1 H23 H l H H56 H H78 H H9: H; H l H= H>A H?@ H H H HBCFD H HE m š m4HIiJPKOLM l H HN ! H H H HQRYSV lT HU < SW H HX < Za[ H\] mj H H^ H_ H` H Hb m$cf Hde H H Hg Hh H jxksln mDm H mDoq m4p H H Hr H H Ht Huv lw H < Hyz|{ l H} H l~ l H l H H H H l m$ H H mD H l l H  mT H H m$ l m4 H l H S H S S H m4 H H H H H md H H H H l H H l l m m m m m m m m m  m m  l H l H l H l l l H l H H H H H H  l H H = H H H H H H l H H l H H H H H l HB m$  H H H H l mT H H H H H m H H H mj H š � � š H š � mT � H H m4� l mD m4 H m4 H H H m$ H m4 H l !  H l < < <    < < H < < < < m$ < H H H H = m$ l"=#;$ H H% .&'1 .() .* .+ ., .- . .. ./ .0 .2 .3 . .45 .6 .7 . .8 .9: . . H< m4 H >? H@ H HA m4 HCDhEaFJGI mH H H l HKNLM H H l H OP_QT HRS H H HU HVW HX H HY HZ[ H\ H H] H^ H 0` = m4 H lbce Hd H Hfg H mj = mjiujl Hk H Hmr Hn <opq m H H <s H Ht H =vwxyz|{ m l H}~ H l l l H l mj l l l l l @ l l P l m < H H H = H H H H H m = m4 H H l l l l l l l l l l l l l l l l l < H H H H l l = mD š H l H H H H H l H H H f S H H H m4 HA mT l H H l l H l l H H H H H H H H < = H H H H mD H H H H H H H ` H H H H H H H H m4 H m l H H H H m4 H m H l l = l� l H l H H = = m4  m4   l m H H l H H H l l! H l l H H H H H l H mD l H H H" H#@$1 mD% H&' H(/) H H*+ m4 m4, m4-. Ʒ m4 š H0 H H2 H mj345 p f6;78 m4 H H9 š: l š< l= l> l l? l l m$B,CND = HEF =GM lH lIJK  l HL H H . HOoPl lQ HRSX lTU m4 HV HW H m4YdZc[] H\ l H^ H_a` .  .b E] . š l H He lfgh H H lijk Ku  mn mD l lp+q <rsv Ht Hu l m$wzx m$ Hy l H{ = H|} H~ H H H H H  H H H l H H H H H H H l l  H    =     H H H H H H   H     H     H l H      H    H  H H   H H    H   H H    H   H    H  H H    H      H �    H      H    H  H H H H H H     H ' ! "# $ %& H () * H H m$-. H m$/ H0 H12 H m43 H4U5I6C7?8 <9; H: H < H< H= H> H <@B HA < H H HDEGF H H HH H H H HJKQL HMON H H H HP H H HRS H HT m HV HWg HXY^Z\[ H H <] @ @ m_e H` Ha Hbc H Hd H `f H m4 Hh Hilj Hk H m Hm H Hn m$ Hpqrs}t H Hu Hv Hwx H Hy Hz{ H H| H H H~ H H H H H H H H H H H H H H H H H H H H l H H H H H H H H H H m$ H m H H H H H H H H H H H H H H HC;(x;     l     l  {   l Z Z     l Z  { { { { { { l {    l l l  l { ' l l  l l g  l l l  l l l �� H H 6 H  l H H H H l   D  l  l l  l l   l S l% l# l l" l! l b l p$ l I&3'1 l( š)* š+ š š, š-. š š/0 š P š F2 F  l456 } l l78 9 : l  <W=N>B?A F@ l l F HC lDE  lFG lH lI l lJK l lL lM  lOP l š lQ FR lST U V l  XjYgZd[\ l š š]^a_ ` l D b l lc lef l l X l lh li l škqlomn  F l  lp l tr l ls ltu v w l  lyz{|}~ F š ~ l  l  l l H H H H l  l   l l l l : l l l S  l l  š l   l H l l l I l l l l š l l l l l   l ' l l   l b l l   l b l l H  l g l š l { H  l l l l  l   l l l  l l V l š l l F 8 l : l l l i  š l l l : l l X l i i l l�   š l l l l l l X š    l l  l l l l l l%   l l l l l l l : : :! : :"# :$ :  :&' l l l F) H*/+. H,- H = m$ H m$04132 H l H . H5:69 H78 H � m$ H H H H< l H= m$>? mD@BA l H < H HD lEFKGHl šIJ]KZ lLMWN HO <PS <Q <R < H HT HUV < H <X HY H < v[\ ܜ  l :^a_` : š l Xbc :d F Fe Ff Fg Fh Fi Fj Fk  Fmunrop l q s l lt  lv{wyx l l z : l|~ } " : l       1   3_  ց   j  ց  ? l l l l  l l  l l : l  ց  ց  A l l l l   6  ց   l l l { l    ;     ց    8 ł     6&        ł  ց     ց     =   ł  W     ׁ 0  �   3_    6& ł            r %   ł ց ! " # $ &+' ( ) * 8 , - ł. / ց 1C2<3 l485 l6 l7 l : l9 l: l; l l l=B> ? ց@ A ց ց l lDFE l l GH I ցJ ցLzMeN\OTPRQ < P PS < U VYWX = Z[ = ] š^d_ :`b a c l fngkhji l l l ll l lm š ouprq l <st _ l lvx w l š ly  :{|} l~ l l l n ~ l  : š  š š š : l l  l l  : l  l l H H H H l m4 mD m4 H š š l l l š š š š l l š H H H H H H H l H mD l H l H H H H H H H H H H H H H H H b H H H H H H H H H H H H H H H H H H H < H H_  H H H H H H H H H H < H H H H H H H H H < H H H H H� H H < H H H H , H H H H H  H  H v H  E H  H H H H <P?! < v H H v < H H H H v H" H# H$+% H H&' H( H) H* H < H, H-:.7/60 < H12 H3 H H45 H H < < H8 H9 H < H; H< H= H> H E H H@A H HBC HDF HE < H HGH HI HJ H HKL HM HN H HO < HQUR HS HT H H < VWZX Y H  H H[ H\ H] H^ H `t <a <b <cdke f Hgi h  Hj H  Hlq Hm Enop  H v Hr Hs H  Huv <wx y~z H{| , 6} <  H    H < H < H < < 6  H H 6  6 H E H < H H H H H H H H H H l H H H H H H H H H H H H H H H H H H H H H H H H H <@\ۯJ X  š š š E d d d d d d d d š š š š š š  š š š š š š š š š š š š š š š š P š š š š š š š š š ʗ šH š  š š š  š š š š Œ š� š š Œ š š š Z š Z Z š  š š  š š  š š š š s : š%  š š š Z š š š š ! š" š# š š$ š&2'* š( š) š š+, š-. š/ š š01 š š A37 š4 š5 š6 š 8E9;: š = š š<= š š>? š@ šA š šB šC šD D š šF šG šI šJQ šK šLM š šN šO šP š cR š šS šTU šV š šW B šYZx[p\e]a š^_ š `  š šb šcd š š f  šg hi jmkl  š š no  š  šq š šr šs štu šv šw š B š šy šz{ š| š} š~ š š š B š š š š š š D š š š š š  š š š š š s š š  š š š š š š š = s š š š š  š Z š š š  [ [ š H ^< ]= l š š š š š š  š š š š š š s s š š š š  š š   š š š š  š k š š Œ š š š š  š ` ` ` ` ` ` ` ` ` ` ` 7a2 š š š š  : š š š 5 : š š� š : š š 5a š  š    4  š : š š š š Œ š š Œ* Œ Œ Œ Œ Œ  Œ Œ  $! š " #  š% &' š () = š š + , -.0 /  š1 š 3N4B5 š6 š7>8; š9: š B š< š= š B š? š@ šA š š D šCDIE šF šG š šH š šJK šL šM š B š šO šPQ\RV šST š šU š �W šXZY š :[ š š  š] š^ š_` š � bnc š šd še šf šghk ši šj D šl š šm š D šopwq š šrs št šu š šv š Dx š šyz~ š{| š} š D š š š ʗ š š š š  š š š š š ( š š š š š B š š D š š š š š š D š š š š š  š      š š š š  š š  š š š š  CN  š š š š š  š      š š š = š  š š d š = = = k = š  k 6 k š š š š š š B š š =  š š š š š , : � A  š D� � A  ( D :G1 #   š   š š ( š  š š š > š : š š š  š š š E] š š š!" š š$( š% š&' š š)-* š+ š, š š. š/0 š y š2<3 š48 š5 š6 à7 š9 š š:; š š =B> š š?@ š šA šC šD E š šF šHsIhJ[KRLO šM šN š šP šQ šSV šT šU  7WY šX Z šZ š \c]` š^_ š a šb š 7 šde š šf šg š šijnk š šl šm dop š qr š št šuvzwy šx š   š{ š|~} š š  š š š   š š š š š Z š š š š  š š š  š Z šE š š š ї š š š Z š š š š š  š š š š š  š š  š š š    š Z Z š š  š  š š š š š Z Z Z Z š Z Z Z Z Z  š Z š Z š Z Z Z š     š  š š š š( š š š š  š š  š š  š š š š š š š�    8 š š   š  š š š Œ š š š  š š š š š š š š š "! š š š š š # š $ š%&' š š)P*?+8 ,- š. š/ 01 2 3 45 6 7  65  š9 š:;= š< š = š> š @KAE BC šD š š šFGI šH š šJ šL š šM šNO š šQlRcSZTWUV š   šX š šY š[a\_]^ š s š` š b š šdh še šfg š ši  šj šk š mzn šovpsqr  š š ktu š š šwxy š  {| š š}~ š š   š k  š š = š  Œ Œ W Œ W Œ W Œ Œ Œ Œ  Œ Œ \ Œ Œ  Œ Œ Œ Œ Œ Œ Œ  Œ Œ S Œ Œ W Œ Œ  Œ Œ Œ W Œ Œ Œ W Œ Œ ~ Œ Œ Œ W Œ { Œ Œ Œ W Œ W Œ Œ Œ Œ ~ Œ Œ Œ \ W Œ Œ Œ  Œ Xc Œ Œ Œ Œ { { W Œ Œ W Œ Œ Œ Œ W Œ Œ Œ W Œ Œ Œ W Œ Œ Œ  { Œ Œ Œ Œ  Œ Œ W Œ Œ W i š�o3 š š š š š š (    š V š      š  š š 5 5p š š#  š š ! š" š$) š% š&' š( š š *.+ š,- š š/0 š š1 š2 š4; š5 š67 8 š9 š: d <V=K>E?@ ACB š  šD   F GI H = J  LSMPN šO š  AQ š šR t šT U š WhX`Y[ Z š\^ ] š = š_ Cy šadb š šc še šfg Z š s ši šj škm šl š n š Em špqrs{t šu švxw š š yz š š| š}~  š  š = š š = =  š  š š š š š d d  š š š š Œ š ї š Z š    š   š  š š š š  š š š š = š  š  š    š š š š š š š š š š  š š Œ Œ š d Œ š š š š = š d š   A  A š š š = =  š š  š š š š  š š = = š š š š š = š   Z  Z Z Z� š Z Z š š Z   ,  š  š š š š Œ Œ š2' š š š š š  š š š š š �!& š" š# š$ š% B š š()- š* �+ š, . š / 0 1 š 3:4 56 7 89 [ ; < =>@?  šAB  šCD š š FGHI J`KSL šMO šN š šP šQ šR š šTU\ šVWY šX š Z[ š = = š] š^ š_ š š E]akb šcg šd šef š š h ši šj š š lq šm šn šop š šrs|tzu š vw š šx y š š{ š } š š~ š š š š š ї   y    š          š    [    š š  š š š š = š š š š š š d d d d d š š  š š š  š š  = š š = š š š = š š š š  š  š š ]m š š š š š š Z d š š š A š š š š  š š  š  š š š š š šL š š š š š  � š     ï  š š š š  š š  = = š i š š i i  š š 2. Z!("%#$ š <u š&'  š š =),*+ š d š - Z š Z Z/ Z01 Z Z ï3<48 Z5 Z67 Z à Z Z9 Z:; š Ʒ =A> š? š@ š š ŒBGCE šD š F š dHJ šI š = šK šM{N]OU šPQ šR šST š D šV šWZ šXY š š B š[ š\ š^h_a` š š be šcd š šf šg š š itjnkl š =m š š soqp š š rs š Ʒ d šu švywx = š š  šz š|}~ š š  š š š š š š š B š š š š = š š š š = š š š š š š Em š š š š = š š š š d š š = š š š š š š š š š š š š š A š š š 5 š š 5 š š  š  š  š š  Ñ  x š  š    š š š š š š š  š š š = š = š = d E E š š š Œ d š š š š  š š s š š� š  š  t š š š  š š D š  V I B+! š š š š   š  š š š š"#%$ š š 7 š&') E( E * š š ,:-3 . š/ š012 š š 84 š5 š687 š 9 š d; š< š=? > š@ š šA >C[DJ šE šFG H  šI š KVLPM š N O  šQSR = š = =T U  šW šX šY šZ š  š\y]n^g_d`b ša = sc š še š šf š hki š j šl šm š = os Gpq š šr  št uwv š E] š šx = z{~| š }  š š  š = š  š  š š i š d š  š š š š  š = š š š š š H  š š  š š  š š  š š š š  š š Œ š š š k š š  š = d š š š š š š  š š š š š š š š  d š š  š d š = š š  š     š š š š d š  š š š = z š š a    � š š š š š      Ʒ š   y  y  š š y y š dD*# š š  š = š š!" š [ d$' š% š& š ց( š) š +7,1-/ š. š 0 š 24 3 =56 = š š8>9<:; s š š d š=  š?B@A H k šC š šEP šFGKH IJ š k š LNM š k šO š š kQ[RXSUT š k šVW š  šY šZ š \]^ _`  š šbcldie šf šg šh š š j š šk šmxnuorp q š 7 šs š št šv 8 šw š y}z š š{| š š ~ š š  š = š š š š š š š š š š š š š  Z Z Z Z š  š š ƨ ƨ =  š s š š š š = š š  š d ï š š ї [ š = š š = š š š š š š š š ї š š š š Œ Œ Œ Œ Œ  Œ Œ   Œ Œ Œ 4l  Œ ~ Œ \ Œ Œ Œ W Œ Œ { Œ Œ W Œ W Œ Œ Œ ~ Œ Œ Œ Œ 4l Œ 4l Œ Œ Œ Œ Œ   Œ� Œ  Œ Œ Œ \ Œ Œ Œ 4l  Œ 4l Œ M Œ W Œ  Œ Œ W  Œ Œ Œ W Œ Œ  Œ Œ Œ Œ W.# Œ Œ!" Œ { Œ$)%' Œ& Œ ( Œ Xc*, Œ+  Œ Œ- Œ/90513 Œ2 Œ R Œ4 Œ6 Œ78 Œ l Œ:> Œ;<=  Œ ? Œ@ ŒA B ŒC ŒD Œ ŒEF Œ ŒG ŒH Œ JKL[MTN O P Q R šS š U V W X YZ š š\]y^q_h`eacb š šd š š šfg š = šiojl šk š mn <u = šp š Cy šr šsvt  šu  wx š  šz š{ š| š} š š~ = š š š š š š 7 š š š  š = = š = š š = š = š š š = š š  m$   š   š  š    š  š     š     š š š š š š    š  š  š    E] š  š    š š   [ d    šO'  š š  š š š š š š š = �   j             ;)   š š š š š š š š"  š k ! #%$ š š d& d š(@)7*3+0 š,- š./ d š š 1 š š2 Em š4 š5 š6 š 8;9 š : š š<=?> š š šAMBIC šDE š FH G š š šJK š šL š Em šN š cP š šQRT šS šU š šW�XKYZ[w\q]f š^_a š` k šbdc š l š še š gm hik j  š šl šn šo š šp š r š šst šu šv š šxz šy 8 š{ š š|} š~ š š š H š š š š   š 7 š š š š š d š  š š š š š š  š š š š y š š š š  š  š š š š Ʈ š Ʈ š š š š š Œ š š š ( š  š š š š š š š ~ š I š š I š š š š š š š  š š  š š k š š = š ї = š š š š š  š š š š š š š = š� š š k š š s ~ š š š š š š       š  š š š = š  d ='  š š š š š Em! " #%$ š Z š& š Ʒ(;)4*. +,- š = š/201 š š š3 š H56 ї Z798 d š: š <G=C>@? š = šAB š > = šDEF š = = šH š šI šJ š LMNOgP_QYRU šST š š šVWX m k š k šZ[] š\ š š^  š`ca šb š y š šd še šf k šhxim šjk dl š nr opq š š ssvtu š = Vw V yz} {| š ~ V V š š š š š G s s s k s k  š š  š š š š    Ʈ š š š š š  š G G = š š = = š š d = š ї š š š <u š š š š š š š B š  š š š š  š š ï d š Ʒ š š š š š š à š  š š š š  š š š à š š š š    š š d š š š k š š š š  š =  Z š š š š š š š š Œ š` 4 š    š š  = š š š š š š k š š  š š š$ š š! d š š "# <u š%-&*' š() š d š+, š š.1 š/ š0 d2 š š3 š k5J6>7 š8 š9<:; š š= š š ?C@ š šA šB B DDE š dFH šG š = šI <u AKSL šMP šNO š s š šQR š Ʒ šT[UX šV šW D š šY šZ š\]^ š k k_ k š šab{cq šd še šf šghpi šj k l m  no   B  šrws št šu šv š  šx š šy šz : š|}~ š š š  š š š š k š = š = r š š y š  š š š  š š [  Œ š  Œ š d Œ  Œ š  š š H š š š š š Z š š š š š s s š š   š š š š š s  š  x 7   k  k   k š k k H z š z š š š š š E] š š š y š š š  Z Z Z Z Z 7 Z Z Z Z Z Z F Zi5 š š š k š š š B�  š š : � A A A A A A A š A š š š i š š š š š š = š ї( š$" ! = š š z# š z š š%&' š š)- š* š+ š, š .0 / š13 š2 d' š š4 š6E7: š8 š9 š i; Z<?= š i> i @BA š š <uCD š ZFTGK ZHI šJ š Em šLQMO =N ї šP š s š šRS š d ïU_VYW š šX =Z][\ š ï š š^ d `fac їb š =de = š ї šg š šh š j klmnopyqsr 8 tu v w x 8 z { |} ~  8 8 8    8      8    8   8     8  8 8 8        8   8       8       8    8    8       8      8 š  š š š #> š  ї ї ї ї ї ї š š ї ї ї š ї ї š ї� ї š š ї ї š ї ї ї ї š ї š  ї  š ї ї ї š ї ї ї ї ї ї ї š,# ї ї ї ї f ї ї! š" ї š$(% š š&' ї ї ) ї* ї+ ї š ї-2. š/ š0 ї1 ї š ї37 ї45 ї6 ї ї š8; ї9: ї š ї ї< ї= ї š?G@D A B C  E F HhI\JOK L M N 8P Q R S TU V W X YZ [ 8 ]c ^_ ` a b 8d e f g 8ijkul m no p qr s t 8v wx y z{ | } ~  8      8 8 8       8        8    8      8 8       8        ٍ        8       8   8  8 K  š š š ї  š š Z š š =  š š š š š <u š š š y š š š t š� š š = š š š      š  1!  #  š  š š š š š š m m m H"' m#$ m%& H m m l(-)+* m m H m, m4 m./ m H m0 m H2=3:47 m5 m6 l m m8 m9 H m; m m< m H>A? m m@ H mBE mC mD m HFIGH H m m H HJ H šL}MeN`OYPUQSR š T š ï šV šWX š š Z][ š\ š <u š š^_ š ša šb šc š šd šfrgk šhi š šj š lom n  š p š q tsw št šu šv š x šy{ z  š š| k š~ š š = š š š š Z š š š š   š  š E] 7 š š  š  š š = š š š š š š š š š 7 š = š  š š š  š ї š    š  š   š t š m$ š š š  <u š š  š  š  š š š š š š š š š š Z LG š  š ï š š š = š š = š   š  š š š Z š š Ñ š� š z š š  š š  š  š š d š  š  š  š  š  8 8 š š š š = š š š  š! š š" š k$%&'X(K)4*. š+ š, š- š /2 š0 š1 š s š3 š5@6;79 š8 d k k: š<?=> d  š = = šAGBDC š k šEF š š H šIJ  y y šL šMS šNOQP š  šR š š T šU šVW d š šYqZg[` š\ š]^_  š  šadb š šc š ze š šf Zh šil šj šk š 7mon š 7 šp š š šrsx štuv š šw šy| šz{ š Z} š~ i š š  š š š š š š <u š š š š š š š s š š š  d š š = d š š s s k k s s s š s = š mD š š E] š d <u y š š k  š  š  š  š š š š š š š <u <u š š š š z š š š š Œ š  š   š  š š1 š š š š Ʈ Ʈ Ʈ Ʈ  Ʈ Ʈ Ʈ    š     š š š� š = y š š š Œ š Œ š  Z  š d z Z  š  š ˘ r š ˘ ˘ ˘ r ˘ š ˘ ˘ ˘ ˘ š'# Œ! Œ š" š Œ$ š Œ% Œ& Œ š( š), š* š+ t š-/ š.  š š0 š2x3P4E5: 678 L 9 š;@<>= š ? šACB š D  F GK HIJ   LM L NO š Q]RV ST U šWY X Ʒ Z\ [ ï š ^l_f`cab ï ï šde ï šgih š jk mq nop rust š vw yz{|}~  Ʒ  x Z Z  Z F  Z       ï   ï  x ï  ï :y ï :y ł :y :y    ł  ï >  mz  Ʒ ї ï Ʒ  ï ï  ï š š š š š š � š š = y š š š r š š  š š š  š š š š š š š š š š š š š  š š š  š k <u  š š = š š y š  š š š  š š  š š   š H H š š š š šxgW9, š š š k š %" š! š k š š#$ š š k&)' š( š š š*+ š š -2. š/ š01 d š3 š4 š57 š6 i8 š š:@; š š<= š š> š? Em šAOBG šC šDEF š Œ šH šILJK š d šMN š  = šPQT šR šS š šU šV  šX  YZ [ \  ] ^_ ` a b c d e  f h ài à àjk àl àm à àn ào àpq àr às àt à àu àvw à à yz à{ à| à} à à~  à à à à à à à à 4/ à š š š  š š š š š š š (Z š š š š š š š š š š š š š š š š Œ Œ W Œ Xc Œ 4l Œ Œ  Œ Œ W Œ Œ Xc Œ Œ Œ \ W ~ Œ Œ Œ  Œ W  Œ l Œ Œ  Œ Œ Œ Œ Œ % Œ Œ 4l Œ Œ Œ W Œ W Œ Œ Xc Xc \ Œ Œ Œ Œ { { Œ Œ { Œ Œ 4l Œ 4l Œ W Œ Xc l  W  Œ Œ Œ \� Xc 4l 4l W W Œ   Œ Œ W Œ   Œ ~ Œ Œ  Œ Œ Œ Œ Œ Œ  Œ Œ R 4 Œ Œ Œ  š%  ! " # $ š &@'5(/),* .+ . -. . .0 13 2 š š4 š 6: 78 š 9 <u; š<>= š = š? š <u AAMBF šC šD šE šGJ šH šI šK L NS OPR Q š š kTWU š kV k š šX šY  š[\]}^t_j`e šabc š = =d = š šf ghi š šk šlqmon š  š šp š 7 šr šs š šu švw šx{yz š š | š Ʒ =~ š š š = š  r š š r  r 8 ï r   š   ï ï ï R š ï r ï š š š  š       š T  š š     š  š š š š š šISH š š š š š š š š š š š š š B š š  š                    š š š š š š š ƨ š š š š š �+ š š š š = š  š š   š Œ Œ = = = š š E š š š# š š š š š  = š !" = š š$ š%(& š' š š)* š ,5- š. š/3 š012 7 š š4 š F 6; š78 š9 š š: š D<A š=> š?@ š d š šBCFDE š š =G š = šIJKzLoM_NXORP šQ š šSVTU š s y šW š Y\Z š š[ š š] š^ š `gadb š šc s He šf š š =hl šijk š k š k šmn š špu šq šr šst š š =v šw šx š šy š š{ š|} š~ š š š  š š  à  š   š  = š š š d k š š š = š s š š <u š y š š à š š š = š š  š k š  š š š š š y š d š š š š š š  š š k š š š š Œ š š š š š š š š š š š š ї š š š Z s s š š š  s s š  š y š š š š š š š  š š š š š š š  š š  � C] š d d š H   d d    d  E] š š š š š 4$  š š k š š š š š y! " #  A %/&* '()  s z 7+-, š 7 š š. š Z š01 š23 š H š k5D6: š7 š8 š9 š =;?< š=> = š d š@B šA š k šC šENFKGIH š š šJ L š M š šO šPQR š y Ʒ šT:UVWXYmZa[^ š\ š] š ѧ_ š` š š bgce šd 7 šf š hj ši š kl š Z knuor šp šq š =s mDt mD v}wzxy š k š {| k Z ^<~ ^< Z j š š ï  š š š      B  š   š š š š  š š š š Em š Em š š  š  š š š š š H š š š  š  š š š š š š š k š š š = š y š y Œ y Œ š Œ Œ š š š š š y  š š š š š s š š š Em š š š š š š k š š š š š A š   š š  š š š š š <u �  š š š   š  š     š      Z    š ,'! š š š š š"%# $ š& š ( ) *+ š-5. /20 1 34 š 6 7 8 9 š;<e=R>I?F@DA HB šC T š HE H H l HG HH l HJM HK HL H l HN HO HP HQ H HSZT UX VW = 8 C]Y  [^ \ ] _c`ba  Cy = =  d = CNf}gthniljk H l l Hm H H Horpq H l m$ ms H l Huzvxw H l H Hy H H H{ H| H m~ H H H H H H H l l H H H H H H l H H H H H m ї  F  ï ï ! ƙ ï ց j ï r ï r r V H H Z  Z C] CN | Cy H H m$ H ï Z ï ï  L Z ł  Q    š š D =  ł ˘ ï ƙ r   ł ł V 6D K K K K K < 6D 8 5C ї ^L \ ї [ [ [} [ [ H H H md š š ƙ Cy [ šO š š š š š� š š i š Z š š  š,  š  G <u  ï š š š <u š š š š H" y š š y y y š! s s#& s$ s% Z š'*() š + š š Em-:.7/20 š1 š š y354 š = š6 š r š š89 š š <u;G<A=? š> š y@ HBECD d Z Z šF y š mTHKI š šJ s šLN šM š = = šPkQeRW šST š šU šV š XaY^Z\ š[ ` š] š š_ š š` Ʒ šb š šc šd š >f šg š šh ši kj k Zlmznr šo špq š š Ʒsw štuv d š dx š dy š k{ š š|} š~ š ( š š š H š š  š H  š š š E E Q š š š = š š = s š š š łK š Œ Œ Œ Œ š Œ Œ Œ Œ Œ \ Œ Œ š Œ š š š š k š š š  = = = = = ï š š š m  š  š  š  s š š     š  s <u š = š š = = = 6 š š Ʒ š š š š š  š š  = š š  š š  Œ š Œ � Œ š  = š š d 9% š Z š   š   š = š š š Z š š š š y š Z š š d š  ,!'"$ š# š%& y š y š(*) š š š+ s -1 š./0 š  24 3 š š5 š š78A9= š:; š š< i$ š> š? š@ š š B šCFD š šE š GIH š š šJ dLMNiOeP_QT šRS š š U šV šW š BX BY BZ B[\ B B]^  B ` šacb š  šd š  š šf šgh Œ š Œj~kr Œlmpno Œ š š Œq Œ Œ šsxtv Œu Œ Ʒw š Œ šy{z š |} š  š š š Ʒ š d š š y š H š = = š = = ~ = š š š š d š s š š  š  š  y š k s s y š d š =  š ï š š y š <u d š š y š š  = = G š š š = š t t y š y š š š š š š š š  š š š š š š š + > > a0  š š y š š š š š š š  š š  š š Z š š š k�   š š š š     š  š š š š  š š š d š š š %  š š  š!# š" š š$ š y&+')( š š š* š =,. š- š/ š 7 š1J2?37 š4 š56 š š s8; š9 š: š š<=> d š@HAE šBCD E] s Z šF šG k š šI šKTLPM šN š šO š Q š šRS š šUV[WYX š š Z š š\^] š š_` š šbcqdnekfhg š š šij š H kl šm š š G šo šp š rz šs štuwv š H xy š = š {|} ~ š G š š l š H š š š Ʒ š š š š m š = š š š m4 7 š š  š    š š š š Œ  š š y š = š š š š  š š   š  š š š š š š <u š š š š š š    š š š  š š š š > š š š š š y y y y š š š š š š š  š š š š š š E]u6 š š š š š š 5 š � š š 7 š š    d d d š š   š š š <u š  š š š ) š š š š š š =$" ! d š k š# š š s%'& š š ( š š*2+/, š-. š <u š 7 š0 š1 š š34 š5 š  d7Q8P9M:I;>< š= y š X Œ? Œ@ ŒAB ŒC ŒD ŒE ŒF Œ ŒGH Œ Œ aJLK š Œ š š šN 8O 8 š R SXT šU šV šW š š yYdZ] š[\ ^a_` bc šenf šgh ši š šjk š šl šm  šorpq š s š st š  ї dvwx šy~z| š{ š š} š ? š š š š š š š D š š š š š š E] š š š š š š š 5 š š , š š    š š š š š ̀ š š  š š  š š s š š š 7 š š  š š  š š  y š  š H š š š Z š š š š š š š š š š > š > š š š Gm+  š š š  š š š š  = š š = š ƨ  y š š š s� š d š š š s š š š H š š š H š   š š š š š = š š š š % š  š š š " š!  š#$ š Ʒ m š&') š( š Z š* y š,O-<.5/20 š1 š H š š3 š4 š67:89  š š d; š s š=H>C?A@ š s šB š DFE = š =G E] G šILJ šK E] šMN š H šPWQ šRTS š š šUV š š =XcY`Z][\ ï y d š^_ š = š a šb š ïdg šef k š khj ki E kkl à š š nyotp šq šr š šs š űu v šw šx š 7 šz š{ š| š} š~ š <u š y ï ï ï ï ï ï ï ï ï Dz ï ï  ï ƙ k           T           T  ï ï Ʒ Ʒ ï Ʒ ï Z ҉   ï Ʒ r   ï Ʒ    Ʒ  ̀ Od Ʒ Ʒ Ʒ ï ƙ ï ï K K V    ï Œ           Od   x ï ï ï Ʒ ï   š š š  š š >  š > š š šr . Œ� Œ Œ Œ \ Œ    W Œ W W Œ Œ Œ W Œ Œ Œ Œ W W W  Œ Œ Œ Œ  Œ Œ Œ ʹ & Œ !$"# Œ W W Œ% Œ ~ Œ'*( Œ) Œ Œ + Œ,- Œ l Œ Xc/< Œ01923 W Œ46 Œ5 Œ W78 W Œ  Œ Œ:; Œ Œ W=U>E?B Œ@A Œ Xc ŒC ŒD Œ Œ FR ŒGHQ ŒI ŒJ ŒK ŒLM Œ ŒN ŒOP Œ Œ a ŒS Œ ŒT Œ VaW\XZ ŒY \ Œ Œ[ Œ {]_^ Œ 4 Œ` Œ ʹboce Wd W Œ Œf Œgh Œi Œj Œk Œl Œm Œn Œ Œ p Œ Œq Œ {s stu}vyw x ïz {| Ʒ ű ~    V    ï  V ï Ʒ ƙ ï   Z Od  Z Z   Z Ʒ       k     k   k  Ʒ ï  N  Q  s Ʒ d š š š   š š š > � : š A š š š š š š š š   š š š š š  š š š š š : š j G š š  š š š& š š š� š š   s š  š š   š š  š  š! š š š  š š <u  š <u š š š š š " š# š$% š š'5( )-* š+ š, š š . š/ š03 12 š š4 š š 6 š7D8>9 š:< š; š š= š ̀? š@C AB  Z E šF š H}I šJ šK šLaM[NV ŒO ŒPQTRS ~ Œ ~ U Œ  Œ ŒW ŒXY Œ ŒZ Œ ʹ Œ\ Œ] Œ^ Œ_ Œ` Œ \brchd Œ Œef Œg Œ Œ i Œjm Œk Œl Œ \npo Œ Œ ʹ Œq \ sxt Œ Œu Wv Ww Œ Xcy Œ Œz Œ{| Œ ʹ Œ~ š š š š š  š  š 8 8 8 8 8 8 8 8 8 8  8 8 8 8 8 8 8  8 F F F 8 8 F 8 8 8 8 8 8 8 8 8  8 8 8 8 8 8 8 8 8 8 8  8 8 8  8 8 8 8  8 8 8 8 8 F 8 8 8 8 8 F 8 8 F 8 8 8 8 8 F 8 8 8 8 8 8 8 F 8 8 8 8 8 F 8 8 8 8 8 F 8 š š š š  šzA� š š š š š š k H š  l š š <u l l l š š ) š Z š š <u  š #! d š" d š d$'%& d d š( š š*4+0,.- š š/ š š =1 š23 š y š =5:68 š7 š =9 š ï ;><= š š?@ š š BgCWDMEJFHG š d I š šK šL š šNSOQP š š šR š = šTUV š šX`YZ š \=[] \ ^_ t š Cy šabecd š <u = ïf š š ïhmi šj škl š l l šns šoprq Ʒ š Ʒ Ʒ štwu Gv G B& zx šy š s š{|}~ š š š  š š š š  š š š š <u š š š š  š š š  š =  š Z  à š š  š ї š d š š š š d E] š š š š š  š = š š \= š \= š š = š š  š s š š š d š š š  š  š š š  š š = š š š š  š d š = š Em š š š š š  š š š š š š š š  š š š m š š š š š� š y š š =    š =  š š Z š š š š š š š y š š š š <u š." š š  Z š Z! š Z š#( š$ %&' š G k š), š*+ = d š- š y/908132 š y š4756 š š š = š:@ š;<>= Z š Z? š Z šAGBECD š Z š šF š H š šJKLMNx OP]QUR šS šT š š šV šWX š šYZ š[ š \ B ^r_b` ša š š >c šdiegf š D šh š D šj š šk šl šmn šo š šp šq š > šs štu š švw š š By z { | } ~ 8  š š d d  ï š d š <u <u š š = š š š  =  š = š H š š š š š Ʒ š š š š = š š Ʒ š š s š š š = š  š Œ š š Œ Œ š Œ š š š = š š š š = š š š š  š š d š š š k š š = š š š š š š š <u š š š H š š š š 9 Z Z Z Z Z Z š Z š Z Z Z š š  š š š š    � š   š š     8w š  š š   š   d ,!*"% # $ š&(' š ) š + š-1. / 0 26 345 š š 7 8 š:;|<?= š> š š H š@AoB]CVDHE 8 8F 8G 8 FIMJ 8 8KL 8 F 8NR 8O 8PQ 8 8 F 8ST 8 8U F 8 8WX\Y 8Z 8 8[ F 8 8 F^k 8_ 8`ag 8bce 8d 8 Ff 8 F 8 8h 8ij 8 F 8 8l 8m 8n 8 Fpw 8qr 8s 8 8tu 8v 8 8 Fxzy 8 F 8 8{ 8} š~ š š š @ š š  š k š š š š š = š š š š š š š š š š : 5 š <u š š š š š š E] š š š š d š w š d d d ï d š š š š Em š š š  š  š   š š <u š d l š š š = m š š  š š š š Em š š  š š š  d š š š = š š <u š š š š ҉ Ic š š = š š  š š š š t š0  š � š š š š š š š š š š  š  š š  š  š š à š š š š# š  <u <u š š š š!" š š $+ š% š&'*() š š š à, š- š. š à/ à š1i2M3=49 š5 š678 š s š š: š; š< š >G?D@BA š š =C š = šE š lF l šHKI šJ š E] š šL šN\OXPUQSR l t lT š l š šVW š š šYZ š š[ š ]a^ š_ š =` = šbgced š š = šf š =h š = šjk}ls šmnp šo šqr š  <utyuw šv l š šx š =z{ = d =| = š~ š š š = š š = š š š H š š š = š š H k = = š H m H š š š t š š l š š = š š Em šA š š š š š   š   š š  š  š  š š š š š š š š š š š š š  š š š š š š š š š š  š š š š š š š š š š š š š š  š š š š š š G G G @         8    � 8     8       8    8    8     8!8"-# $ %) & ' ( 8 *+ , 8. /041 23 8 5 6 7 8 9 : ;< = >? 8 8 BY šC DELF G H I JK MNP O šQS šR š TUW V š X šZm š[ š\] š^h š_`da šbc  š  še šfg š š šij šk šl š :n~o pyq šr šsvt u š w šx š 8 š šz{ š| š š} š  l š š š š  š š š š š š D š š š š š š š š š š š š D+ š š š š š š š š š š š š š š š š š š š 5 š š š š 8 š š š š  š š  š š š   š  š š š š š š š š š š š š c ~ š    š š  š š š E] š š š  š š š B  š š  š : : š š š > š š š  š c š š� š � � š š š š š ( ( š  š  š š š B + š š ( š , š š š ( š] š š š Em H!9"6# $- %& ' ( ) *+ , š. / 0 1 2 3 4 5 š 7 š8 š ʗ š: š;= B< < B>G? B B@A BB BC BD B BE BF B š š BITJOKML š š šN š >PR DQ D DS D >UYV šWX š A 5p @ šZ[\ š � � :^_s`ha šbe šcd š š šf šg š <uioj škm šl = šn š H š špq š šr š =tuyv šw š šx z}{ š š| š~ E] š š  š E] š š š l š š H H   H š š š = š š š š = š = d š l  š š =  = š š š H š š š š š š š = š š š = š š š = š š š š š [- š š š š š ї š š š Em š š š š š D š š š B š = š  š š š 8 š š š š š  š š š š Em š š š Em š š š š š š š š š š š š š  š š š š š� š š d  š   š d š š  š š =  š š š G š š š š š š  š š š š š š š '!$" #  š % &  ( š š)* š š ,g-./X0?132 š š = š4 š5 š67 š8 š9 š š: š; š<=> š : š@K šAB šC šD š šEF šG šH š šIJ š š (LSMQNPO š c R š ? 5pT 5U š :VW 5 5Y š šZ[\] 8^_ 8`axbncidgef 8 8 8h 8 jlk 8 8 8m 8otprq 8 8 8s 8uv 8 8w 8 y 8z 8{~|} 8 8 8  8 8 8 8 8  8 8   8  8 8  8 8 8 8 8 8  8 8 F 8 8 8 8 8 8 8 8  8 8 8 8 8 8 8  8 8 8 8 8 8  8 8 8 8 F 8 8 8 8 8 8 F 8 8 F 8 8 8 8 8 8 8 8  8 8 8 8 8 F 8 8 F 8 8 8 š š š š š š š š š š š š B{ š š  š š š  š š š š 8 8- š š š š š š [ %  š� š š i i š š š 8 š š H š  š  š d š <u š š š š  š  š l š š š = = š =" š! š = š# š$ š š l&A'0 š(), š*+ š ]m š- š./  š š d1:253 š 4  š687 š š Ʒ9 š š;> š< š= š ? š@ š š <uBPCID šEGF š = šH š šJMK =L = šN š =O š dQWR šSUT š š V š š šXY šZ  š  š\] š^ š_ š` šadb c e f šh ijp dklomn š  šq rst š uv šw šx šyz š{ š| š} š~ š š š š B š š š š š    š š š > š > š š š š š , š š š  š š š š š š D  š š š       B    š š š š š š š  š š � š š � š š š š � š š š š š š  š š š š š l š š ҉ š ҉ š š š ҉ š š š š š  š š š š = š š š š š š š š š = š =� š d [ š š š š d d š  -  š   š š š š š š š š š š$  > > 5R!" š š# , :%)&( ' D D A *+ H$ , D A.>/ š š01= š236 š4 š5 A š7:89 š > š >;< š > > š E] š? š š@A šBG šC šD šEF š š (H š >I š (KȶLMN!OGPQR S_T ƷUW V  X YZ\ i[ ]^ i  Z `~aobhcfd ïe ï Ʒ š g ilj ïk Ʒ ï ïmn ` spuq ïrts ̀ š i ïvxw <u ּy{z š ï|} ƙ 8  Ʒ Ʒ  Ʒ ï š 4   y   ƙ G   r  / Ʒ     Ʒ i h 0   y Œ  i i i i i d d Z i   > ` d i c i ï ƨ ï  d i d d i s Ʒ d i i x d i i i  i i ï ű i i i ï ` i i i i ޳ d ˘ y s i i i i 7 `(    D   /  z z� z z z  z    z z z  z  z z  z z     ܹ C   s     s   s  !      " #$&%  s '   4/)0*  +,  d-./  ű 1 2 345   6  à G8 9:= ;< ï > ?D@A ïB C EF G Z ï VHI ŒJKvLcMUN ORP xQ Ʒ ï àS ̀T  4/ V[WX Œ i YZ  Ʒ\^ ]  Ʒ_a`  à Ʒb ׭  Ʒdpejfg  hi ׭ ï  km l ˘ r n ˘o à  qrs Z t šu Œ àwxy  z{} | à ` ~  Z  T   ֐ š  C š     Ʒ L   š    d Z Z  ï   Z  Z      Ʒ      ҉      7 Œ Œ  x ï s   G  Ʒ Ʒ ܌  ł r r ł ï 0 ï Œ Œ  8 < V d Ʒ  Ʒ i   Œ ƙ ï  i i i i i i i i i i i i i i ï d ï    Œ Œ Œ� Œ S Œ Œ Œ Œ Œ S Œ  Œ S Œ Œ Œ S  Œ Œ Œ Œ S Œ Œ S Œ S Œ Œ Œ Œ S Œ Œ Œ S Œ S Œ"8#K$%&Q'8(/) *.+ ,- r0 12 > 35 ï4 67   G 7 9: ;J<?=>   Ʒ@IA  <B <C <D <E <FG < <H  < x kKNLM r  ƷOP üRfSb TU[VYWX ƙ i à ƙZ 8\_]^  `a ƙ x  Z c de Z Zgt hinjl ïk ï m Zorpq  ƙ zs  Zuvy wx Ʒz}{| ï   ~ Z à Z Ʒ   x    Ʒ ƨ k  Z Ʒ   Z     d ޳ d Ʒ à ï  s  r  ï ш Ʒ  <u   Œ š  G Ʒ Œ Z à   ü ܹ s Ʒ  4 d ł :    Dz  Ʒ 3| Ʒ G :  G ս Ʒ ց  Z G  ƙ Z Z  Ʒ  Œ Ʒ  i Œ  Z Œ Ʒ d Ʒ [  Œ  G Ʒ   d x � r        ł  * Z ï y ï V  Z i  Œ ï ҉ $! ï V "# Ʒ  %'& ï  () Ʒ Ʒ ï+<,5-0./ Od Ʒ142 `3 Œ x  6978 Ʒ ï x:; r  =D>A?@ ƙ s BC Z Ʒ Z VEHFG š  Z IJ  ҉ Ʒ  LMNOgP QaR`S]T U V WX[YZ X  <\ q ^_ ï Z dbc d def Ʒ L Vhw ijpknlm Ʒ Ʒo  qtrs ï s Ʒuv Z ƙ y ƙxy| z {  x} ~ Z  < H  H   < L   2  6 R r Œ      s  Œ  Z ï ł j ł ł  Yp K    Œ Ʒ Œ  8 ƙ Ʒ    Z 8i Ʒ ï  Ʒ ï  x ҉ y  Ʒ   ƙ  ï mj Œ Z    Ʒ ï Ʒ Z  Ʒ ï Œ    Ʒ Ʒ    s 7 Œ   š Z ï Z   �   G   ï   ï    ƨ  Z y  Z  Œ Ʒ   ҉  V #  ! " ł$+% &)'(  Z* Œ y,1-/ . 0 Z ï2534 Dz Dz 67 ï i9`:;v<d=W>Q?I@EAC B D ïFGH Ʒ JKNLM Ʒ   OP s  R SV TU  s s X Y Z [b\a ]^`_  c v eflgih Ʒ  ïjk mpno ï qr x Ʒs tu Y3 ` wx|y{z Ʒ ï  }~   K s s ƙ ƙ  Z Od Od Od Od Od Od Od Od  Od ƨ Œ  Ʒ x k Ʒ Z   s   ï Ʒ  Ʒ s Z s Z  7 7 7 7 7 7 7 7 Z 7 s W ҉ 6 ï š L V ï Ʒ s   Ʒ š s  s  s  Œ ƙ  ƙ Z s    ï ï Œ  Z Z  Ʒ  Z Œ G š   Z ï  ï   s ƙ  � i ï  ï      ï   ï  x ï i  Œ C3)% i   Z Ʒ Ʒ ҉ #!" k $ K ƙ&('  s* +, ï-0./ ï 12 i y 4 5<6978 Z ƙ:; m   Z=@>?  Ʒ ƙ AB Ʒ à y DEUFNGKHJ ŒI Z F  ƷLM Œ s Ʒ NORPQ  Ʒ ïST  ïVZWYX ï ï   ï[] ï\ ^_ i Œa=bcdetf gmhji ѧ Ʒ ykl y ï ynqop ˘ ҉ ҉ rs ł u}vw xz y  {| ï ï 7~    ѧ š š    Ʒ G    š ҉ s   š   š i š i ƙ  à  š Ʒ Œ   # 5R ï š Z    Ʒ  Ʒ ï š   š  Z    i ƨ Ʒ i Ʒ G  Z ï Z y š   x  >     ƙ       ï       ï ѧ  ѧ � Ʒ G ҉ Ʒ Z ̀ x = ł       Vt K K G x L$   Z Z Z   ï  " ! ƙ#  6%3&. '(+)*  i ,-  Ʒ r Ʒ / 012  7 Z 485 67 ï ï 9:< ; Ʒ>?o@XAPBIC DGEF y Ʒ Ʒ H  ƷJL K MNO ƙ ü Q RU šS T ïV W Y` Z [\^] _ aibe c d O fgh 7 jmk dl n pq{r Zswtu v y xyz Z Œ | } ~ Ʒ š y  G y y 7  Z x ï         #    ï  C ï  Dz  G  ł     \    Ʒ Rk D  ï ü > š ƨ 5 7� P$ P3 6 : :0  2 ï ̀   s  G N'  x à Œ Œ Œ Œ Œ Œ Œ Œ x   ƙ 4/  4/  ï  4/  ƙ š  B  š Ʒ �  y      Ʒ  ƨ ƨ ï  r ƨ ƙ 7   i d ` d! K ƙ y   y "$ Q# Z Z% Z& { l(8)/*,+ ƙ y-. 7� 0512 ƙ ï 34 4 \ 467 ï Ʒ ƨ ï9@:=;< Ʒ ï ï 4N>? ï AFBEC 8D 4 G GK HIJ i  iL M Œ 4lOPqQaRYSVTU Ʒ Ʒ WX Ʒ ï Z rZ][\ à s r^_ ƙ ï`  ƨbicfde > Ʒ Z gh Ʒ  Zjnkml ï 7 op Z  ïrs{txuw rv Dz ï ï yz r Z| ï} ï~ O ï ï ƙ ü  d s ï Ñ  s Ʒ s  ï r ï ƙ  VG ï  VG r  ï i  Œ ƙ  ï r ƨ ï Z Z Ñ Ʒ Ʒ  7 ï Œ i ï   ƙ  ƨ  ï  Œ  Z 8 ï 2 ï ï à ï  ï s Œ ƙ s E ï Ʒ  Z  Z š Ʒ M M       M  Ʒ  ł à  ܌ š š c d 7    ƙ� Ʒ ï!   Z ƨ G   Ʒ      Œ  ƙ Ʒ ï Ʒ ï    ƙ z Ʒ K ƙ ï  ï">#;$2%+&)'( Œ Ʒ d y* Ʒ,/-. Ʒ d Ʒ Z01 ш Ʒ  d38465 d ï Œ7  Ʒ9: Ʒ ƨ <= ï Ʒ  Ʒ?C@B dA UZ rD `FyGcHTIOJMK sL UZ ƙ Ʒ N PQ L VR S Ʒ U^VY ïWX ï Ʒ ƮZ\[ ï x Ʒ ] x Ʒ_` ï y a Ʒb ` Ʒdj efi g 7h 5 7 rkulqmo ïn Z Ʒp r ï Z rrst ƙ ï Ʒ v wx . z{ |}~  Z ƨ Z  ƨ     - ;    ƨ Z   ï  ƙ ï ƨ ï  š Z s Z ï ƨ  7    7 \  d 2  s  5p A A :    y    8J  à  y r ƙ Z ƨ ƨ r  r k y ƙ   r  Dz s ł ł  L ן ï  ï  �  ï ï  Z  Z Z $    à à   Dz ï ƨ š ï ƙ  Ʒ  ҉ Z   Z ! k ƨ ï"#  ï %,&)'(  ü *+ L ƙ -7.3/10 r ï 2 r ï 456  x V 8 d9 : V<g=N> ?D@ WA W WBC W W {EHFG Z 4NI JLK ï Ʒ M ּ VO[P QXRS Z sTWUV 6  YZ d \]`^_ WD ï ƙab dced ł 7� ł rf 8Zhirj k ln Zm o Gpq V V stu{vx w ƙ yz  Z Ʒ|}~  ƙ   ƨ à  ƙ  Œ  [ d  ï ƙ   Œ ƨ ƨ i Œ  ï Z  Dz ï Dz ï  r 8 8 7 d x  ƨ Ux ï Z Z   #  ï ˘< > ƨ  s  i Œ 7 Œ G   7  Ʒ Œ G    s i  x  G Z Z ï  G Z s    Ʒ Ʒ ï Z  Ʒ 4/ Œ 4/ ƙ�  ̀ ׭  ï   ]m  z r i 7   š Œ Ʒ  s Z x  x'  Ʒ  Z  s Ʒ à ï d s ƙ !$"# à Ʒ r Œ%& ƙ  Z(6)/*-+, Œ ƨ . Ʒ z0312 7 s45 s Z 78 ƙ9 :; š i  ƙ=>_?W@NAKBEC D s j FH ZG Z IJ s s LM d OTPS LQR L  4 UV >  3 sXY ïZ][ ƨ\ ł ł j ^ ï ּ`za sblcg rdef s s hji s j ł sk ï msnqop ï  Ʒr Z  twuv Ʒ Ʒ xy 3 s  Œ{ s|}~ s Ʒ s s s s s s s G s  Z Œ s s s s s s s G s ƨ s s s s s s s G s Ʒ Œ ҉ G 8 s Ʒ Ʒ Dz            s s s Ʒ Z L ï Ʒ Œ s s ƙ s x  r Œ  s r s  s Œ d s ł WS : s ï s Ʒ s 7  Ʒ ï   ï  s WS I Ʒ s s s Ʒ   s s s Ʒ ï  s s  Ʒ s ս s� ï Ʒ ս Ʒ ս Œ   ս s s s   ï Ʒ ï   s  s  Z i    Ʒ ï 7  Ʒ à5 Œ Œ Œ! Œ" Œ Œ# Œ$ Œ%& Œ' Œ( Œ Œ)*1+., - Œ / B0 B B2 Œ3 Œ4 Œ B Œ67l8M9B:?; < => š ï @A s sCHDE F G  Ʒ IJK ï L ï NiO]PWQTRS à ï  šUV Ʒ i ƙ X[YZ  š \ ï^e_b`a  d cd Z  f gh ï  ƙj k  my noq p srv stu s Ʒ w x Ʒ Ʒz{|} ~ š   Z ;8 Z ï ï  ;8 Ʒ ï ;8  ;8    Ʒ  ï ł   ƙ Z     Z     ï ï ï ּ š s N L s ƙ Z i ƙ x Z    Z i   Z ï      ƙ ҉    Z  Z i \ ƙ ï  ï  Ʒ  ï Ʒ  Ʒ ƙ Ʒ à ï Œ  Z k i   ű  i     Z �  ƙ  > ï > V Ʒ   à ƙ    m Z Z Z Z Z Z Z Z Z Z 3Z9/($! d  7"# 7 %& 7 ' 7 7), 7* 7+ k Œ-. Œ Œ 4^0 71624 Œ3 7 Œ 75 Z 77 78 7 Œ 7:H 7;<C=@>? Œ Œ AB Œ i 7 ƨDFE  y G 7 ISJPKM L ƨ NO 7 7 ƨQ R TWU 7V 7 7 7XY ï 7 [b 7\] 7^_ ` 7a 7 ï 6 7c 7deh 7fg 7 ƨikj 7  l  Ʒn oPpqrstyuv d Z dw x  Zz~ s{|} Wa Dz N Dz ƙ     Z Z Z Ʒ Ʒ Z ` Ʒ Z ` Z Dz Ʒ Dz 7 Z Z Ʒ Œ `  Z  ` Z c Z Z Z d Z Z  d  š Z Z Z Z   Z ï ï Z ï Z ï Z  Ʒ Z s ï Z ƙ Z Ʒ Z Z Z s Ʒ Z Z Z  Z Z Ʒ Z s P V < 6  Z Z  Z Z y  y Z Z Z \   Z \ Z \ ü Z  Z \ � Z Z Z s s Z s Z Z   s Z  Z s Z y Z  Z Q Z Z Q Z Z Z Z Z G9)" Z ï ! y G Z#&$ % Z Z' Z( Z *3+. , - Z /10 š š2  Z 47 Z56 c Z c8 Z Z:F;@ Z<=?>  Z Z AB VG ˘CD Z ZE Z GKH ZI J Z Z ZLMON Z Z Z šQ ƷRxShTcU 7V`W^X 7Y 7Z L[ L L\ L] d 7_ 7 ab 7d 7ef 7 sg 7 7 Ziojmk r l z 4{n 7puqr s ;t 6vw 7 L yz{}|  7 ł~  7 ` 7 `  7  ï ï } Z 7 Z ï Ʒ s ł ˘ ˘ '      7 Ʒ Z z  ƨ Z Œ s  y  ƙ   Z Z y ï V  3|X{d                               y x x G x y s Z Z Z Z Z  Z Z Z Z Z , Z Z Z Z  Z Z Z Z Z Z Z   Z Z Z Z Z ޕ Z Z� Z Z  Z Z Z Z Z Z  Z Z Z  Z Z Z Z Z Z Z Z Z Z Z ޕ Z%" Z  Z Z Z  Z Z! 4{ Z Z# Z$ Z &K'4 Z() Z*3+, Z  Z-. Z Z/ Z0 Z1 Z2 ޕ Z Z 5?6 Z7 Z Z89 Z Z:; Z< Z= Z> Z Y Z@H ZA ZBC ZD ZE ZF ZG Z ޕ ZI ZJ Z Z LS ZMN Z ZOP Z ZQR Z Z  ZTU\V  ZWX ZY ZZ Z[ Z  Z Z] Z^ Z_`ca Zb  Z  Z eyfwgoh  ij k  l m n   p q r s tu  v   7x y 7z  s |} ~    = r š Ʒ š Ʒ r r ï  r Ʒ Ʒ  Z   z 7  i Ʒ ï r r    r r ƙ  r ƙ y  Z Œ Od  ï Ʒ r 7 ï x  ï Z ï   r r d  ï r   Ʒ r r G Ux #   G  r  d ï Ʒ ü  ƙ r ï r   ï r Ʒ    z r   ï ˘ r r r  i y y�   Ʒ Ʒ Ʒ š x Ʒ   G 7 U z, Œ Z    x ï  š  ̀ ï  %!$"#  Ʒ ˘  Ʒ&)'( Ʈ  Ʒ s*+ 7  ï Z-;.5/201 y ƙ34 Ʒ Ʒ6978  z  :  Z<O=L>K ï?@FACB DE  <GIH HJ # ƷMN  ̀  PRQ ï ST ï Œ y V [W Y Zv[ \e] ^ _` a b c d  fng h ij k lm  o pq rs tu wxēyÌz{¹|š}Œ~…‚€ Ʒ ƒ„ ƙ  r†‰‡ˆ 7  r ƨ ï ”Ž‘  r Z’“  ƙ ` •˜–— ï ï ï™ ƙ u›ªœ£ žŸ ە ¡¢ Z 7 Z¤§¥¦ ҉ r  i¨© Ʒ Ʒ «²¬¯­® Z Ʒ °± k G Z ³¶´µ Z ï  ï·¸ Z  à º»¼½¾¿ ï r ï ï Ʒ ï Z ƙ s à x s i  s ï Ʒ  s s  d ï Œ Ʒ Œ ï   y ƙ  ƨ Œ  Œ i à  à d à ƙ Œ ƙ ƨ ï5  ï  Œ �   i s ƨ ï Œ  ï    ï à } ï ƙ   Z  Ʒ ï Z 7'! Œ Ʒ Z Ʒ 4 Ʒ "$ # ï i%& r ƙ (.),*+  ï  d-  ƙ ï/201 Ʒ   34   ï6p7T8M9<:;  7 ï=> ? Z@GADBC R l  \EF Xc { 4lHKIJ Œ W L R ~ RNQOP z ƨ i RS ҉ Z ïUiVX W  {YZ `  Œ[\ ]c^ _  `a  b  d e f g  h K jmkl Œ Zno Ʒ Œ sq}rv ïstu i ш ï Zwzxy ï Ʒ{| ï  Ʒ~ÅÂÀÁ ï  ïÃÄ Ʒ ï i ƙÆÉÇÈ ï  s ÊË r ̀ r ÍÎÏíÐßÑØÒÕÓÔ Z ` Ö× z  ` ÙÜÚÛ   i ïÝÞ  ï [àçáäâã Ʒ Z åæ Ʒ š Vèëéê Ʒ  Z ïì i r Ʒîýïöðóñò Ʒ  Ʒôõ ï ï÷úøù ï  z Zûü i Ʒ þÿ   ï  8 r ï x  Ʒ ƙ ï    ï 7 Ʒ & ƙ Z z r 3| o o o o o o o o z        ҉ Z ƙ  ï ï   � à ï   7 ï  z Ʒ    y Œ ï  i ï ҉ Ʒ   Ʒ ï W:,%" ! Z LG Œ ï#$ ï 7 2 &)'(  Œ *+ ƙ i ˘ Ʒ-4.1/0  23 x i i5867  i 9 r ï r;I<C=@>?  i AB  c ƷDGEF ï H ï šJQKNLM š Ʒ OP Ʒ < RUST c ƙ Z V i ƷXvYgZa[^\] Ʒ V _` x Z ï àbecd ѧ  Ʒ à f šhoiljk y  ƨmn ï psqr  y tu i Ʒ ï wĆxy|z{ L Z Œ Ʒ}~ s Ʒ ĀăāĂ Z  ` ïĄą ï  Z ƙćČĈċĉĊ ƨ  Ʒ ƨ čĐĎď Ʒ  y ƷđĒ Z  ïĔĕıĖĢėĜĘĚ ïę ě  ĝĠĞğ Z ï ƙġ  àģĩĤħĥĦ  ï ï ƷĨ ï ƷĪĮīĭĬ Ʒ K ï Ʒ ïįİ ï Z i ƙIJĿijĹĴķĵĶ Ʒ ï  ĸ Ʒ ïĺļĻ ï Od iĽľ s 4 Ʒ ſ  à ï Ʒ Œ  Ʒ  Ʒ ï  Ʒ y ï Ʒ  z ï Ʒ d ï N N } } } } } } }  } } } } } } N }  y Ʒ x  ï Z ï d x    ` Ʒ ï  ü ï�  Z    ï ï ï     r Ʒ   ï ï ï Ʒ   Ʒ  ï  ï Z š  š Ʒ r !Ũ"X#@$5%& Œ '.(+)* 7 ,- r Z [ /201 x r r 34 [ 8 Z6=7:89 x Ʒ ;< Œ  >?  š  sAJBC  DEHFG   I KRLOMN  PQ  r r ZSWT UV R r r ߰  ƷY~Zh[b\_]^  ï ˘ ш`a  Z 8cd e fg  iqjnkl z m Z  65op  rxsvtu Ʒ r w ï Z y|z{ s  } i śŀŌŁŇłń Ń Ʒ àŅņ Œ Z ï ňŋʼnŊ d 7 Ʒ Z s ōŔŎőŏŐ ï    ƨ \ ƷŕŘŖŗ Z ƷřŚ Ʒ ŒŜŤŝŠŞş i  Ʒ šŢ   ţ  ŒťŧŦ  m  \ũŪŸūůŬ `ŭŮ Z  sŰűŴŲų   xŵŶ i Ʒŷ 7 ï xŹźŻžżŽ  Z  ïſ 7 ï   à Z  Œ Z ï s  Ʒ k Ʒ  s  s ï Ʒ Z Z Z  Ʒ Z 7 Ʒ   ƨ  Z    ܌ r 7 Ʒ s  Œ y  Ʒ 8�  ҉ d š   Ʒ   7    s 7  Ʒ  Ʒ L*  Z G ƈO+%# ï  !" Œ $ &' ( G ) * ,F-/.  0?1423 Ʒ 7 d5> i67 8  9:  ; <=   z i@CAB  ïDE 7 ï GLHJ ƷI  K [} MN  Ʒ P}QoR`SYTWUV 7 ïX x Z][\ ï Ʒ ^_ Z ï Ʒ ahbecd  ޕ fg  siljk Z ѧmn    xpvqtrs  iu   ƨwzxy  {|  ˘  7~ƃƂƀƁ i > ƨ xƄƇƅƆ Ʒ  ï 7ƉƊƪƋƚƌƓƍƐƎƏ  ï Ƒƒ  VG 7 ZƔƗƕƖ ƙ s ƷƘƙ Ʒ ƛƧƜƠƝ ƷƞƟ  ơƤƢƣ Ʒ k ƥƦ ï s ƨƩ  ƫƬƳƭưƮƯ i sƱ ƨƲ ƨƴƻƵƸƶƷ ï  ƹƺ  ï Ƽƽƾ d xƿ  = = = = = = = = ï  7 ˘ Œ    ƙ V  r 4 Ʒ Œ ܜ  ï ƙ i  V Œ Ʒ     ï @'  x      G 7   � ` ƙ  Ʒ    ï ï ï Dz #     = =  = = =    ,!+ "#&$ š% š ʗ š'() * c š š-C. /90413 2 ł ł 4576 ł 4 ł 8 y:= y;< ł y ł>@ ł? ł AB ł 4DSEMFJG HI ł y ł ׁK ׁL ׁ 4NP 4O 4 : :QR \ : \TUǪVǐW XX~YtZh[b\_]^ X X `a < Xcfde X X g X injlk X X Xm X <orpq X Xs <u Xv{wyx X X Xz X | X} X X <NJǀLJǁDŽǂǃ X XDždž X < XLj Xlj XNjǍnj X XǎǏ X X Ǒ XǒǠǓ #�ǔ #�ǕǜǖǙǗǘ < < ǚǛ < #� #�ǝ #�Ǟ #� <ǟ  #�ǡ #�ǢǧǣǦǤǥ < #� < < Ǩ #� #�ǩ < ǫǬ XǭǻǮ ǯǹǰǵDZdzDz אǴ א ǶǷǸ א אǺ א Ǽ ǽǾǿ א א א  א א  X ' ' ' ' < ' < ' ' ' < ' ' ' < ' < ' s      < s      <      <  s s  s s s  s s < < < s s� < ' s ' s < s s s < s    < s s  < s s < s s < ' ' ' s s s <! " = ;8 =$4%& 7',( š)+*   ( D ,-0./ š ( 13 š2 : š ,5Ȓ6 7{8c9O:D;@<>= r r ? r rAB r ս սC rEJFH rG r šI 8 rKML ս O սN r PYQVRTS r rU ս r W r rX r Z`[^\] ï R r ս_ ï r rab ս r dreifh rg ս ս jokml ս r n ս rpq r r սstw ruv r ï rxzy ս r r ս|ȇ}Ȇ~ȃ rȀȁȂ r ï Ȅ սȅ ս r ս ȈȊȉ ս ս rȋȍȌ ս 8 սȎȏ š VȐ սȑ r kȓ ȔȕȦȖșȗ Ș : Țț Ȝ ȝ Ȟȟ Ƞ ȡ Ȣ ȣ Ȥ ȥ F ȧȩ Ȩ Y Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ Ȳ ȳȴ ȵ 9 ȷ)ȸ˰ȹʾȺ)ȻȼȽ Ⱦ ȿ            #        `      T                š Z      Ʒ    ֐ Dz  K �  Ʒ  K          Ʒ   š Z%    ï      s      !  " # $ &  ' (  :*ɜ k+, Z-ɀ.=/ 0815243 s y6 j7 > 9 :;< Ʒ  >\?N@GADBC Z Ʒ xEF  ï ŒHKIJ Ʒ  Œ ƷLM i r ïOUPR Q ï ST ï Ʒ VYWX ï ޕ Z[ à  ]k^d_a` ƙ šbc  7 Œ ƙehfg r ij Œ Ʒ lzmw no i pq r s tu v xy ƨ Ʒ {} s| ~ i G GɁɏɂɈɃɅɄ Ʒ ï Ɇɇ  ï r ɉɌɊɋ s Z ƨɍɎ ï  ɐɖɑɓ ƙɒ ɔɕ Ʒ  Œ ɗə ɘ ï ɚɛ F   ɝ ƨɞɟɠɻɡɯɢɦɣ ɤ  ɥ  ɧɫ ɨɩɪ   ɬ ɭɮ   ɰɱɵ ɲɳɴ   ɶɹɷɸ  ɺ  iɼɽɾ ɿ  `               # Ʒ     Ʒ  `          Ʒ    ց ց ց ց ց ց ց ց ց ց ց ց  ց     ï}@+�  x Ʒ         6   ï   Ʒ Z ń ï  Dz 7!&"# Z $% Ʒ  Ʒ '( ï )* Ʒ Œ  ,-6.3/10 2 T* 4 y5 y 7<8: Ʒ9  Ʒ; =>? š AUBRCED Z šFLGIH ï GJK ï àMON  ï GPQ ï Z  ŒS T VjW\XY s łZ[   ƙ]d^a_` ƙ G Ʒ ibc  d egf  hi d ҉ ƙko lm `n ƙ pwqtrs Œ ƙ ï Ʒuv Œ < ï x{yz ƙ ï ƙ | ` ~ʬʎʀʉʁʅʂ ʃʄ ï ʆ ʇ  ʈ Ʒ ʊ ʋ ʌ ʍ v ʏʟʐʙʑʓ ïʒ ʔʗʕʖ Ʒ Ʒ Ʒʘ ʚʛʝ ʜ ʞ ʠʤʡ ʢ ïʣ ʥʨ ʦ ʧ ïʩ ʪʫ ƙ Ʒ ʭ ʮʯʷʰ ʱʴʲʳ ʵʶ ʸʹʻʺ ï sʼʽ r rʿ˩ ) ƙ r Z r 7 5 7 L ï  6 8 6D    s ƨ ï ˘  x C L Dz ï Dz  ` ƙ ł > Z  š š D    L    tI x  �  x ï ( x   Z Z  Z Z Z Z Z Z Z Z Z Z Z  i i i i S $  !" #   % 7& ' (   *w+g,G-9.3/201 ï Ʒ  Ʈ r47 56 y ï Ʒ8  r :B;?<> ï= r Ʒ r@ ƷA Ʒ ƷCFD ïE Ʒ    sHUIQJPKNLM ï Œ xO ï d Ʒ ˘ ƷRS ï iT ï  V]WZX ï Y h ï[ ï\ ï Œ ï^a_ ï` ï s becd y  Ʒ ïf ѧ àh Œik rj r lump no  Ʒqtrs Z  O z v x˖yˈzˁ{~|} ï Ʒ ˀ x ï ƙ˂˅˃˄ Ʒ 3| Ʒˆ ˇ 4? ˉˏˊˌ Ʒˋ Ʒˍˎ x Z Œː˔ Ʒˑ ˒ ï˓ ï 3˕ Ʒ G˗ˠ `˘˙˜˚˛ š  ï š˝˞ Ñ ˟ ï Wa ïˡˢ˧ˣ ïˤ ï˥˦ ̀ ï ï ˨ ˪˯ ˫ ˬ ˭ ˮ ց y ˱˲W˳˴Y˵˶˷˸˹˺˽˻ y˼ y Z y˾˿ Ʒ ( y ï Ʒ  ƨ y ( y y ƨ y y y š à y y   ï Dz @ ï Dz  5R š @ š š  y (  Z y y Z y y  y  Z ï y  ƨ Z y y  ƨ y  y ï y y y  y y� ï Œ ï ï     ï   Œ s ł y y . ï81 y  ƙ .  y L . y L! i"#*$ i i%& i' i( i i) i + i i,- i. i/ i i0 i 25 y34 y y r y67 y ˘ s9F:E;?<= N x> Ʒ y@CA yB y . yD Ʒ y y ŒGRHOILJ K y x ï ÑM ïN yPQ y ï y ySTW UV ï  yX y ƷZ̙[̏\̀]w^e_b i` ia i z icd i fig i ih i jt ikl im in io ip iq ir is i iuv d ƨ ï sx iy|z i i{ i ű} d~ ƨ i ƨ́̆̂ i ĩ ī i̅  ̇ ï̌ ỉ̊̋ Ʒ i 7̍ i d̎ L̐ ȋ i̒ i d̖̓̔ d̕  ï̗̘ i i d̴̛̜̤̝̚ i̞̠̟ d i d ị̡̢ z ̧̥̭̦̩ i į Z š i̪̫̬ i ü i G̮ i̯̱̰ i ̲̳ Ʒ s ï̵̶̿̽ i̷̸̻̹̺ ƨ  ü à̼ i  ˘̾ d i d i  Z i i  i i  i  7 i  i :y  d i  i i à i i i i i i d  y Ʒ k i s i i i ï i d i   i i i i i i       i �  r Œ  ƨ Ʒ k     ƨ  Z  ï ü   Œ Œ Œ 5 &  Ʒ  Ʒ!$" #  ƙ % Ʒ '.(+)*   ï ,- Z ï ï Z/201 ï Z i34 Z Ʒ 7 6F7?8<9:  ï Z; Ʒ => ï Z ï @CAB Ʒ ïDE  r GQHJI Z zK L M ZNOP d L Z dRUST  xV ƷXY Z͑[t\ ]h^d_ `cab  ï e f g  il j k  Hmrnp ïo Z  sq Ʒ s  s ǘv}wzxy ï s ï ƙ{| Z 7 ƨ ~́̀ s à ܹ ͂̓ ï = ƙ ï͉͇͈͌͆ͅ x Z͊͋  d ͍͏͎ ͐ Ʒ r͓͒ͱ͔͕͖͙ͥ͗͘͜ ï  ï ƙ͚͛ ͟͝͡͞ G Ʒ͠ ï s ƙͣ͢ ï  ïͤ xͦͪ ïͧͨͩ  y ï Zͫͯͬͮ ͭ ƨ  ï Ͱ ï s Ͳͳ͹ʹͶ Z͵  àͷ͸ i Ʒͺͽͻͼ   ;Ϳ à   ï ï  Z   ï Ʒ Ʒ ï  ï ï 8    ƙ  ƙ ƙ  Ʒ s  i ƙ  ï s Œ   ï ü ï r   ҉�  x ܌ ï . i ï  ï ï ܌ ï ï Z Ʒ ï ƨ     s ܜ à Ʒ ï ƨ                  !"Ο#΂$K%?&3'.( ),*+ k  Œ-  /0 Dz 12 V 48 5 Ʒ67  9; :  V <=>  @GAC ZB ïDF ïE ƙ K Z ï HIJ š yLeM[NQO P  V RVS TU  ï ; WYX ï  O ïZ ï  \]`^ 3| _  :ac b  d ï fo ghli jk  Z  E mn  pzqtr s  uwv   ïxy  Dz s {~ `| } s ΀΁ s  s ΃Ί΄ ΅ Ά · Έ Ή  Z ΋ΛΌΐ΍Ύ š Ώ   ΑΖΒ ΓΕ Δ Z  Ʒ ΗΚ Θ Ι Z   Μ  Ν Ξ ΠΡ΢ιΣάΤΨΥ Φ Χ Z Ω Ϊ Ϋ έδήβί ΰα  Œγ Ʒεθ ζη Œ κ λμνο ξ  Ʒ ï G ï s s Œ Œ ï Ʒ Z ï Z s Z s Z ƙ s Ʒ   x Z  ï Ʒ   Ʒ ƙ x Ʒ G ּ ּ  ï ï i        ` s Z 7 Ʒ Ʒ ï� s  y x    s  y  s   Ʒ s  s r r r r r  r}N,  Œ Œ Œ Œ  Œ Œ! Œ"#($& Œ% Œ ' Œ) Œ*+ W Œ \-9 Œ./3 Œ0 Œ1 Œ2 W Œ4 Œ5867 Œ 4 Œ Œ :?; Œ Œ<= Œ> Œ Œ W@C ŒA ŒB  ŒDHEG ŒF Œ  ŒIK J ŒLM Xc Œ Œ 4lOhP ŒQaRZSVT Œ ŒU Œ W ŒWXY Œ \ Œ  Œ[\_]^ Œ ~ ~ Œ` W Œb Œ Œcdfe Œ Œ W Œg W Œin Œj Œkl Œm Œ Œ 4l Œopt Œqr Œ Œs ~ Œuyv Œwx 4 Œ Œ Œz{| Œ R R ~~ϼϒπωρ Œςφσυ Œτ 4l Œ Œ χ Œ Œψ Œ  Œϊ Œϋόώ Œύ Œ Ϗ Œϐϑ R Œ 4l Œϓϯϔϟ ŒϕϖϚϗ ŒϘϙ  Œ W ŒϛϜ Œ ϝϞ Œ ~ \ MϠϩϡϦϢϤϣ  Œ ϥ \ Œ ŒϧϨ Œ Œ XcϪ Œϫϭ ŒϬ Œ { ŒϮ W Œ Œϰ ŒϱϲϷϳϵϴ Œ Œ Œ϶ 4l ŒϸϺ Ϲ l Œ Œϻ W ŒϽϾϿ Œ Œ Œ Œ  Œ Œ Œ Œ W Œ Œ Œ Œ W Œ Œ Œ l l Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ ~ \ Œ  Œ M Œ Œ Œ 4l Œ Œ  Œ Œ Œ Œ   Œ Œ Œ \ Œ  \  Œ Œ a Œ Œ Œ Œ � Œ Œ Xc Xc Œ W Œ Œ Œ Œ { Œ Œ { Œ Œ Œ Œ Œ Œ  XcЅ J0 ( ! à  "%#$ Z  ƙ &' L ) * +.,- d ƙ ï i / x Ʒ18 23 4 5 67 L z9D:=;< Z z Ʒ> ?B@A ƨ š L C L E F GHI X 6 ƷKkLZMSN ORP Q Ʈ TV U W ˘ X ƷY  [c\` Ʒ]^ _ s ïab ï Œ ïdief d :yg ƨh ï ï Qkj  @ 4l|mvnqop ł ƨ  ƨrs ï ƙt ïu Y wy ix 8 ïz{ Ʒ š }Ѐ~  ï Ё Ђ Ѓ Є ïІЇЈИЉЗЊЖЋГЌБЍЏЎ Ʒ < ŒА Œ ]= В W ДЕ ï š s ѧ 8 ш WЙеК 8ЛбМЭ Н ОП РФ С ZТ >У  ŒХЪЦШЧ Z i dЩ L Ʒ LЫ dЬ d L dЮаЯ  G G 8 8вгд 8 Œ жзпимйл Gк G Ʒн о Œ ï Œ     Œ Z ï ï Ʒ Z [ [ ï ƙ Ʒ Ʒ  G  i d 4 d i   ƙ  Ʒ Z  s Ʒ i ï ` Z   [   7 ï   ƨ Z � ï  ш   H  H H H H  H H H H  H H H H H H H H H H H 7 7 7! 7" 7# 7$ 7 7% 7&' 7( 7  7*+Ӧ,Ѩ-Ѧ.i/N0K1J2<3 475 k6 ï k89;: d L ï=C>@ ? ï zAB ƙ ƙDGEF x ŒHI x Ʒ ƨLM ï Ʒ ORPQ s Ʒ Sh TU`V[WYX Z Dz ܜ\_]^ Ʒ ˘ x s ae bcd Ʒ x sfg z ï  ̀j kхlxm ]=nto psqr ƙ d d ]= d u svw s ƙ ]myzр{} ï| ï ~   ïст  у  ф ҉ Ʒц Œч [ шњщіъьы ű [ sэ Zю Zя Z Zѐё Zђ Z Zѓєѕ Z Z їљј  d x űћџќў ѝ x ZѠѣѡѢ ï ï xѤѥ x 7 G ѧ V ѩ sѪѫ|ѬѭѮѯѻѰѶѱѳ ZѲ sѴѵ Z  ѷѺѸѹ ˘ ï Œ ï xѼѽѿ ïѾ ï ƙ Ʒ ï ï 7 s  x Z š Œ   ï 8 Z i Ʒ s Ʒ ï Z  ƙ z Ʒ   ï   Ʒ  Œ ï i y ï ƙ ` T* Ʒ Z Z Ʒ Ʒ ƙ0 ï >   Ʒ š 7� G Z  ƙ ˘    Ʒ   ` š 4  š   "    ƙ ï ƨ Z !   #)$& %  '( ƨ  Z *-+, Z 7  Ʒ./ ƨ ï  1_2A3:4756  89  Ʒ  ï;><= ƙ Œ V?@ i  BICFDE Œ  ïGH  s ƷJMKL Ʒ y NO  yP QXRUST K KVW Y\Z[ = K]^ i Q& `nagbdc Ʒ ief y Zhkij Ʒ Z Ʒ ylm  x y ïoupr q ƙ st r r ҉vywx  ï rz{ r ƙ }~ҠҍҀ҆ҁ d҂҅҃҄ Z F U Z Z F҇Ҋ҈҉ Œ Ʒ ƙ zҋҌ Z s ïҎҝҏҖҐғґҒ  Ʒ ZҔҕ Ʒ Z Z iҗҚҘҙ s ZқҜ ƙ s Ҟҟ  š ҡҮҢҩңҦҤҥ 7 ҧҨ ` y Z rҪҭҫ  Ҭ ƙ  ï үҽҰҶұҳ ŒҲ  sҴҵ  ZҷҺҸҹ   һҼ r ïҾҿ d C  ï  ï ƨ Ʒ  Ʒ d Z ƙ Œ  Z  L d š L d  d Ʒ d L š L L d L d d  ï  ƙ d à ï Œ L d ƙ d ï ƙ  Ʒ z Ʒ�  s x   `        y  ï ƙ  x < š � šbX5.# ï! " Z $+%(&' 7 ƨ i)*  ƙ  Ʈ, Ʈ- Ʈ s/2 0 >1  3 4  6@7< 789: 7 ; Z s Z ï=> Z ? ZAI BCFDE  GH x  i ZJQKNLM d yOP Ʒ  RUST ƨ Z VW Z Z Y\ Z [ ł : š] ^ ܹ_ ܹ` ܹa ܹ cӊdzesflgkhi j ï łmqno p Ʒ r š ш twuv Z . ï Ʒxy  Z Ʒ ï {|ӂ}~ ï Z ƷӀӁ  k Z шӃӆӄӅ ï ƙ Ӈӈ  ïӉ üӋӌ ӍӝӎӖӏӒӐӑ > xӓӕ Ӕ ! F ƙ ƷӗӚӘә Ʒ i Z ӛӜ   ƷӞ ӟӣӠ sӡӢ Ʒ   ƙ sӤ ӥ ZӧӨ yө[ӪӫӬӱ SӭӮ Œӯ Œ ŒӰ Œ SӲӸӳ S SӴӵ S SӶ Sӷ S Œ Sӹ SӺӻӾ SӼӽ S Œ Sӿ Œ S Œ S Œ S Œ S Œ S S Œ S S#  z x z z z Ʒ Z z Ux #   z Ʒ z ƨ z z ƨ z z z z  z z Z z z   z G  z z  ƨ z ƨ 9% Ʒ � d ƨ š [ z Ʒ  ï y Ʒ Ʒ Ʒ    Ʒ ï   z ï U ï z 7   L L Œ à L  y   ! " z$T%6& '1(.)+* ł ,- Ʈ Ʈ / 0 i2 i345 Ʒ s s i 78F9@:=;< K 7 >? s ADBC ï ƷE sGNHKIJ ű Ʒ Ʒ LM  ƙ ƙOQ P 7RS  ï Ʒ ï U yVW y yX yYZ y  y\Ե]s^ y_m` y ya yb yc yde yf yg y yhi yj yk y yl 3 y yn yop yq y yr p ytԧuԄvw 7 Œx|y Œ Œz Œ{ Œ 4}Ԁ Œ~ Œ Œ 4lԁ ŒԂԃ 4l Œ Œ ԅԗԆԍԇԈ C ŒԉԌԊԋ Q Q QԎԒԏԑԐ ƙ Q Œ 7ԓԕ 7Ԕ a 7Ԗ 7 Œ ZԘԙԠԚԝԛԜ  Ԟԟ  Z ŒԡԤԢԣ Œ Ʈ Ʒ ŒԥԦ i Ʒ Ԩԩ  7Ԫ 7ԫ԰Ԭԯԭ Ԯ š š WD >ԱԲ d WDԳ Դ [ ŒԶԷԸ Թ ԺԻԾԼ  ïԽ `Կ ƙ ï  ï ƙ  L X S  Z ï N  ܹ ܹ ܹ K Z à r Ʒ  Z Ʒ s    Z  Œ      Z  ï      ï        Ʒ  � ƙ ï  ƨ    s V i  Ñ ƙ  OG ƨ  s ï       L _^ G ƙ ƙ G< Z s- &!# " ï ѧ$% Ʒ  š'*() s Ʒ Z+, š ƙ .5/201 Ʒ š 34 Ʒ 6978  š Ʒ:; Œ ҉=G> ? @ ZADBC Z  Z ƷEF Z ï HPINJK GLM y O Ʒ  sQXRUST  ƙ Z VW ï L kY[Z ï \] Z  ï _ս` aՄbrckd eif gh  Ʒj ƙ lmn ï op k �q Ʒ sytv u š i wx `zՀ{ |}~ Ʒ   ՁՂ k Ճ uՅթՆ՛ՇՍՈՉ ï dՊՋՌ ՎՕՏՒՐՑ ZՓՔ Ֆՙ՗՘ x ƙ ՚ ï Z Œ՜ա ï՝՞՟ ` xՠ Ʒ Zբե գդ x Zզ էը Z Z Xժյի լղխկծ հձ   ճ մ ն շպո d չ ï ջ  ռ r ïվ ƙ ƙտ ƙ ƙ ƙ ƙ ƙ ƙ 5% ƙ֧ ï ï ï ï ï ï ï ï ï ï C ï ï ï ï ï ï ï  ï ï ï ï ï ּ ï ï ï ï ï ï ּ ï ï ï ï Dz; Œ Œ Œ Œ Œ Œ Œ  Œ Œ 4^ Œ  Œ Œ� Œ Œ Œ Œ Œ Œ Œ Œ M  Œ Œ \ Œ Œ Œ Œ  Œ Œ Œ Œ W Œ  Œ Œ Œ Œ ~($" Œ {! Œ {# Œ { Œ Œ% Œ& Œ' Œ W)3*,+ Œ Œ-0./ W Œ Œ {12 { Œ { 47 Œ5 6 Œ 8 Œ9: 4l 4^<t=`>Q?M@ ŒACB Œ Œ ŒD ŒEF Œ ŒG ŒH ŒI ŒJ ŒKL Œ Œ ŒNO ŒP Œ W ŒRWS ŒT ŒUV Œ ŒX[Y Œ ŒZ W \^ Œ] \ Œ Œ_ W Œ Œabhc Œdfe Œ  Œ 4^g Xc Œinjl Œk Œ  Œm Œ Worpq Œ Œ Œs 4l ~uրv Œ Œwx|y Œz{ { Œ  4l Œ}~ Œ ~ ~ Œց֟ւ֛փ։քֆ Œօ ~ Œևֈ Œ W Œ֊֕֋֔֌ Œ֍ Œ֎ Œ֏ Œ֐ Œ֑ Œ֒ Œ֓ Œ 4l Œ Œ Œ֖֗ y֘ ֙ ֚   Œ֜ Œ֝ Œ֞ Œ ֠ Œ֥֢֤֡ Œ֣ Œ Œ Œ֦ Œ 4l֨֩ k ְֺֻ֪֭֮֫֬֯ ֱ ֲ ֳ ִ ֵ ֶ ַ ָ ֹ Y Ʒּֽ Ʒ ־ [ֿ Ʒ ƨ  Ʒ ï ï ּ ï ƙ  Ʒ  s d Ʒ  s  ï ï  z ï  ï s  Z    Ʒ d ï Ʒ i à à Ʒ } Ʒ ܹ à     ƙ   � r Ʈ     Ʒ Ʒ Ʒ i s    ƙ   Z  Ʒ 8 ƙ  i Ʒ à  Z Ʒ?/%"  ƙ! ƙ  ï#$ Ʒ ƙ s &+') Ʒ(  G* ,. - # ƙ071423  ü 56 i  8;9: i  ü<>=  Ʒ @OAHBECD Z ƙ ` ZF Ʒ G sILJK Ʒ 7 ƙ zMN  ƙ  PXQTRS Ʒ  ƙUWV  Œ ï ` Y\Z[ Z ï ]^  ƙ `adbc Œd{e׭fׂgkh i j lmwn op qrs H tv Xu < r x y z {|ׁ} s~ d d׀ d <׃׋ ׅׄ ׆ ׇ ׈ ׉ ׊ r׌צ׍י ׎ ׏אגב ד ה ו ז ח ט ךכ ל ם מ ןנף סע פ ץ ק ר שת ׫ ׬ H ׮ׯװױ׻ ײ ׳״ ׵ ׶ ׷ ׸׹ ׺ ׼׽ ׾ ׿    H   d  d    d   <  <                  H      �     ,l           `@1     X  )!'"&#$ % ( *.+ ,- /0 2<374 b5 b b6 b 8 b b9: b; b  b= > ? ANBHC H HDE H HF HG H I J K L M XOV PQ RS TU W X Y\ Z[ ] ^_ < < asbgc H Hd Hef H H h H Hi Hjkql <m < <no <p < < Hr t u v wx y z |Y}~آ؎؀ ؁؇ ؂ ؃؄ ؅ ؆ H ؈ ؉؊ ؋؍ ، H H ؏ؓؐ ؑؒ ؔ؞ ؕ ؚؖؗ ؘؙ ؛ ؜ ؝  ؟ ؠ ء أؤظإذ Hئاخ Hب Hة Hتث H Hج Hح Hد H Hرس Hز H Hش Hصض Hط H < Hع Hغ H Hػؼؽ H Hؾؿ H H H H H H H H H H H H H H H H H H    H H H H H H  H H H H H H H H  H H H H H H  H  H H H  H H H&    �            H  !        "# <$ < <% <'B(2) * +, -. /0 1 36 4 5 H H78> H9:= H;< H H H H?@ H HA H CQDH E F G IL J K M N OP RXS T U VW < ,lZٔ[م\y]s^i_ ` abf cde א r g h א jko lm n < p qr t u v w x Hz {ف| } ~  ـ H ق ك ل نهو ى ي Hًٌْ Hٍ Hَُ Hِ H ّ H Hٓ Hٕٮ ٖٗ٢ ٘ٙ ٟٚٛ ٜ ٝ ٞ ٠١ X٣٨ ٤٥ ٦٧ ٩ ٪٫ ٬٭ ٯٰٱٲٿٳٻٴٷ ٵ ٶ ٸ ٹ ٺ ټ ٽ پ  #� H  #� #� #� #� #� #� #� #� #� #� #� #� #�   H        H         E Z Z Z Z Z Z Z  ƙ  ï Ʒ 7 Œ� ƙ ï ï i  ï         ƙ Œ ï k  d6' ï ï ï Ʒ Ʒ V #! ï" Ʒ ü ï$ %& Ʒ ï i(0), * +  ï-. Ʒ ï/ Z Ʒ ï14 ï2 r3 Œ  Œ5 ï7D8<9 ï: ƙ; ` Z ï=A>? ` j Ʒ@ L ƷB àC   Z z FGcHWIQJNKML Œ i ü OP 7 ï ƷRUST Œ Ʒ Ʒ V   ƷX_Y^Z\[ ï ] ï  ï` a b ï Œ ƨ el 7fg 7hk 7ij 7 7  7mڥnڂoyptq r  s  uv w x  ï z{~|  }   ڀ ځ ڃڙڄڐ څچڋڇډڈ  ï  ڊ ï ڌڎڍ  ï ڏ  ïڑ ڒڗړڕ `ڔ ï  `ږ  ï ژ  `ښڠڛ  ڜڝڞ `  ڟ ï  ڡڢ  ڣڤ   ïڦ ڧڨںکڲڪڭګ  ڬ  ڮڰگ Œ  ïڱ   ïڳڷڴ ڵڶ  ï ï  ڸ ڹ ڻڼ  ڽھڿ      Œ     ~          y  y  y   Z  y    ï   ï     ï D  Z Z Z W 3 U Z Z Z Z U U + b Z U Z U� U Z Z U Z U Z ' +  ' Z  ' Z ' Z Z Z%  Z Z Z Z Z Z Z Z Z Z Z F Z Z Z Z ! Z" Z# 3 3$ 3 b&3 Z' Z( Z) Z* Z+, Z Z- Z./ Z0 Z Z12 Z Z 4 Z5 Z Z6 Z78>9 Z Z:; Z< Z= Z b Z? Z Z@ ZA ZB ZC + ZEhFMG ZH ZI Z ZJK ZL Z ZN ZO]P ZQ Z ZRS ZT ZU ZV Z ZW ZXY ZZ Z Z[\ Z Z b Z^_e`ca W Wb W U Wd W U Wf Wg W Ui ƨjۇkہlۀmsnro Œpq ï :y :y ï stzuwv 6 Qk x y {} s| s n*~ n* x ۂۃ ۄ ۅۆ  ۈۉۘۊۑۋێیۍ Œ  šۏې z àےەۓ۔ ï ۖۗ   zۙ۟ۚۜ ïۛ ƨ ƙ۝۞  Ʒ۠۬ۡۢ s ƙۣ Ʒ ۤ ۥۦ ۧ ۨ۩ ۪ ۫  ۭۮ ï ̀ ƨ ۰Z۱۲۳x۴۵۶۷ܾ۸m۹ۺۻۼ۽۾ۿ  7 z  Z r r ҉ s  � i    Q x   Z 7   7 i 7 ˘   >  Œ ̀ Œ Ʒ  Œ ï  V   Ʒ > ̀ ï ï ̀1 Ʒ ƙ ƨ � i n* Œ  n*   s s ƨ    ï L      Z Ʒ i  s$ i ï  G Z Ʒ" ! s y Ʒ#  ƙ%+&)'( Z ƙ Z* Ʒ,/-. z  ̀0 ƙ 2P3B4;5867 y ƨ  Z9:   Ʒ<?=>  ƨ @A ƙ 7  ƨCIDGEF ï Ʒ H JMKL Œ  ïNO Ʒ ƨ ƨQ_RYSVTU V Œ ŒWX Œ  ŒZ][\ Ʒ 7 x^ `fadbc Ʒ s ̀e Œ gjhi s Z  Ʒkl ƙ Z ˘noܖp ˘qrxsvtu Ʒ à Ʒ Lw :yy|z{ Ʒ Œ }~ ï ˘ ܀܉܁܆܂܄܃  s ï ܅ ƙ܇ ˘܈ ï ï ƙ܊ܑ܋܎܌܍ s ƙ s܏ܐ 7ܒܔܓ Œ ƨ ˘ rܕ  ˘ܗܴܘܧܙܠܚܝܛܜ ƨ  ܞܟ Ʒ Œ ï Ʒܡܤܢܣ d Ʒ ï Zܥܦ  7 ܨܯܩܬܪܫ s > Œܭܮ Œ ï ï ˘ܱܰܳܲ ˘ Ʒ ƨ i  ˘ܵܶ ˘ ïܷܻ ïܸܹܺ ƨ  Ʒ Œ ïܼ Ʒܽ Ʒ Vܿ Z Z Z Z Z Z Z Z Z Z Z Z Z Z W Z Z Z F Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z ޕ Z Z Z Z b 3 W Z Z U Z + + + Uݓ   Z Œ Z Z  � s Œ ï ̀ Ʒ Z Z    Z Z Z Z  Z  Z s ï  Z  Z ï > Q:*! > ï Ʒ"%# Z$ Z š Z&)'( 5 š Z+/,.- Z Z ` 071423 Q ߞ š 56 ߐ š 8 ï9 š ;H<@=> V Z? Z ïAEBC Z ן D  VFG Z G Dz ïINJMK L    Z ZO ZP Z GRnS_TYU  VWX  Z Z Z^[]\   V Z ł `gac սb Zde Z Zf Z `hk `i >j > P lm Z ` Zo|pwqtr Z js Z ` Zuv j Z `x{ ƙyz ƙ }ݎ~݂ ݀݁ 4 65 ݃ݍ ƨ݄ Z݆݅ :y :y݇ :y݈݉ :y :y݊݋ :y݌ :y :y : ƨ Zݏݐ Ʒ ƙݑݒ :y ݔݕݛݖ ݗ ݘ ݙ ݚ # ݜݝ Z ݞݤݟݢݠݡ ï ƙ Ʒݣ ï ƙݥݳݦݭݧݪݨݩ ]= V 7ݫݬ k ƙ ݮݰ ݯ :y ݱݲ Œ y ݴݻݵݸݶݷ Z Ʒ Œݹݺ Ʒ Ʒ :yݼݿݽݾ Z Z Z 6b 7 7 7  7 7 7  7 7 7 7 7 7 7  7 7 7 7 7 7 7 7 7 7 7 7 7 ,ާ2   x   Ʒ    Z Œ k Œ   Ʒ Ʒ ï Z � 7 x ï   x 7       Ʒ Ʒ ï ï Z à  ƙ ƙ  ï  à # ï ï ï !"  Z ï  $%+&(' ï ï ï) * C ,/-.  i i ï01  Z r 3m4T5E6=7:89 r x;< s UZ >A?@ Ʒ s L ƙBC Ʒ ïD ̀ FMGJHI   ïKL   ƷNQOP   Ʒ RS ` ƙ ZUeV^W[XY Z ƷZ  Ʒ ï\] Œ Ʒ_b`a ` Z  icd d ƙ Œ Œfgj Œhi Œ k l   nހ opyqt r s ƙuw v ï Zx z| ܌{ }~ ;8 ƨށއ ނރބ ޅ sކ Ʒ ïވމޔ Zފދ Z ތލ Zގ Zޏ ސ ޑ ޒޓ Zޕޖ Zޗޟ Zޘ Zޙ Zޚޛ Zޜ Zޝ Zޞ Z Z Zޠ Zޡ Zޢޣ Zޤ Zޥ Zަ Z Z ިީު޸ޫ  ެޭ޳ޮޱޯް Z޲ Ʒ k޴޷޵޶ Ʒ Z ï ޹ ޺ ޻ ޼ ޽ ޾޿     tI      65             Ʒ L    ܹ                   ï   Z �      9      r ï  x+    7 Z    ޕ$"   ! Z  Z#  %) & ' ( z *  ,4- . /2 0 1 3  56  7 8 :x;Y<F=A Œ> Œ? Œ@ { Œ ŒBC Œ ŒDE Œ Xc ŒGPHK ŒIJ Œ Œ lL Œ ŒMNO Œ ~ Œ Q ŒRUS ŒT Œ Œ lVW Œ X Œ Xc ŒZj[a\ Œ] Œ^ Œ_` ~ Œ Œ W Œbchdf Œe Œ g Œ  Œi \ Œkt Œlmqn Œop 4 Œ \ Œr Œs Œ Œ B Œu Œv Œw Œ yߑz߇ {|߂}߁ ~߀ ց j d߃߄ ߅ ߆ ï ï ߈߉ߌߊߋ ` ƨ łߍߎ ï Ʒߏߐ ï Ʒ ߒߧߓߠߔߚ ߕߖߘߗ ߙ Œߛߟߜ ߝߞ Z ï i ߡߢߥ ߣ ߤ ߦ Ʒ ߨߵߩ߮ߪ ߫߭ Ʒ߬ Ʒ ߲߯ ߰߱ Œ ߳ Ʒߴ ߶߽߷߸ ߹߻ߺ ߼ ߾ ߿ ց >  Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ y \  Œ \ Œ Œ \ Œ s ŒQ          Ʒ  ƨ z ï Ʒ ƙ Ʒ    ƨ x � ƨ z Z V   Ʒ  ï Ʒ   y        I6'   [ `  ! d ` z"%#$ 7 ï  ï&  ï(.) *- +,  ï /301  d 2 > 4 5 d  >7F8? 9:= ;< Z  ƨ >  @CAB    DE ƙ  G H  J ƨ ƨKL ƨM ƨ ƨNO ƨP ƨ ƨ 4RSTUdV]WZXY  Ʒ[\  ï i ï^a_` Ʒ  Ʒ .bc Ʒ  ï eufh g ï üij Ʒ k ï l mn op q rs t ïv{wzx y 7  7 Ʒ |} s ~          <, Œ     ï 4! ï Ʒ   ï Ʒ  ï Dz N Ʒ ï ï ï Ʒ ï Ʒ ï i ï   à z d   7 , ƨ Ʈ ƨ Ʈ  Z   Ʈ    ƨ    Z 4{ k  š   Ʈ      4  Ʒ Ʒ Ʒ  š G   y s  Z i ƨ   z L   Ʒ  ƙ Œ      z Ʒ�            r  ï  < &    d ï  Ʒ Ʒ Ʒ y  Ʒ ü Ʒ Ʒ d #!" > 8 à ƨ$% Ʒ ` Ʒ'8(0)-*,+ ï ƨ  ս. / ƨ1523 4 ƨ 67 ű9 :; ł s=T>J?D@A ܹ ï ZBC š  šEH šFG ł ł I ï ïKQLM š i NOP ï Dz Dz ïRS N \ rUdV_W\XZY V ű V[ ű ] L^ `a  rbc L ű eofjg hi   kml ï n ps q r tu  ïvw Ʒ d  yjzw{|"}~    . ʈ ʈ  ƨ ï ƙ  8i s d   6 6      V  ï ï Dz  ̀  Œ ~ Œ  Œ 7 ï  ҉ ҉ ҉ Z s   ҉     ï   [  ï m ï ł ï š ï ï  ï ï C O   Qy   ƙ  ï ;    R= ï I ü  ï   I � K ҉ ҉ G Ʒ Ʒ Z ï ï Œ ï ï Ʒ ƙ ï  ƙ  ï ` ï Ʒ   Ʒ  ï  ` `      š   Od   Ʒ  Ʒ ! Œ .#a$>%/&+'  ( )* x Z , - . 0:172 35 4 66 V89 א . ; <= ï Z š ?L@GAEBC š D  F š H IJ ` K  MSN OR P sQ Ʒ  TYUX VW ł ïZ^ [\] ï 6 ï ּ_ y` ï ï WSbcqdje fgi h  łknlm ïop ï ü rsz ˘tuxvw ˘  ƙ  sy Œ {| }~ Œ Œ  6 ï ּ 6 ł ł   s  Œ   Ʒ  š  ; y Ʒ :y !�   i  ï Ʒ   7� ł  R= V   s  ƨ = Ʒ à N à r Z  k K  K ƙ 8  Z G Ʒ   ƙ Z ï ƨ ï >  Z ҉ Ʒ ï Ʒ Z 7 ` 7 G [ Z ï Ʒ ï  Z    =      ï       G ƨ    8 8     Z  Œ s ï "7#4$3%,&)'( ï š ï *+  =-0./ Z x L 12 s  G56 k   U�8W9A:= ; < Z> ?@ `  GBLCGDE r F ZH IJ K k MTNSOQ P ïR ï d UV k XjYbZ_ [ \]^ , ` sa cfde G G gh i  kslomn Ʒ  pq Z r  t uv  ű Z xyz { |}~   ƙ   s ƙ     ;8    x  Z Œ Ʒ x   .  i  G ` ï    7  ( 3 < y L L Ʒ s s k ƙ   z   z z L L L Œ i  d d d d d d d d d         š ƙ  Ʒ Ʒ   Ʒ   L Ʈ   Ʈ Ʈ   7     7 š Zg 5�                       ($ # ! "   i % & ' )2*/+-,   .  0  1  3 4  6R7B8>9< : ;  =  ?@  A CKDH EFG   I J   LO MN   P Q  S^TZUW V X Y   [\ ]   _ `ca  b dfe  h Œ i kklmnopwq r s t uv Œ x{ y z | }~ ï x     ï  <  G s  G     Œ x  r   Œ    Ʒ d ï Ʒ    r L     š x   š x  x   ï  x  š s  s š  L s  x s z Ʒ Ʒ     ï Ʒ ƨ ï ZR L r  Ñ ï  ï ï ï ƙ  (  š � r ï  Z    ҉ Z Ʒ  z i  ƙ  d Ʒ ƙ  Ʒ i  Z Ʒ 7 ƙ 9!+"% r# $ à&( ï' Ʒ)* x Z Z ,3-0./  Ʒ12 ƨ  ï4756 Ʒ 7 8 Z:C;A<>=>  7 ?@ABaCRDKEHFG 8 5 GIJ V f Q vLOMN . PP PQ 6 4 SZTWUV nuXY 6& ? [^\]   ! 1_` n A ybqcjdgef Q n Q ahi q knlm 65op rysvtu ] wx  , z}{| ; ~ K e 6q U o  [ k 8 { ׁ  ց    k & 6 F V f = ʊ v  4   ;) r  3P <    7� n n  0 @  6 O n9 nH _ L nf o  )   � n nW n    , < L [ ~ 6 k {     u j M n   7 ě P` N  n 6 P$ ;    % X 4  5 C  5�  3_ S P3 c r  ; :            �    0 ? O _ o  6     /!("%#$ X  W &'  PB  ʵ),*+   ł ^-. ( R 7 n071423 Q G n W56 f u  8;9: \   <= 65 65 ?@ r G  ïBDC Œ ï EF ƷGHIJiKZLSMPNO 8 5 GQR V f Q vTWUV . PP XY 6 4 [b\_]^ nu`a 6& ? cfde   ! 1gh n A yjykrlomn Q n Q apq q svtu 65wx z{~|} ]   ,  ;  K e 6q U o  [ k 8 { ׁ  ց    k & 6 F V f = ʊ v  4   ;) r  3P <    7� n n  0 @  6 O n9 nH _ L nf o  )   � n nW n    , < L [ ~ 6 k {     u j M n   7 ě P` N�  n 6 P$ ;    % X 4  5 C  5'     3_ S P3 c r  ; :          �    0 ? O!$"# _ o  6%&    (7)0*-+, X  W ./  PB  ʵ1423   ł ^56 ( R 7 n8?9<:; Q G n W=> f u  @ AB \   DKEHFG  L IJ ï Ʒ LOMN ï x ƷPQ Z  ƙ ïSTdU\VW ï ƷXZ Y ï[ ï Œ ï]` ^ ï_ ï a Ʒbc ï Ʒesfmgjhi kl npo ï qr  ƙ àt{uxvw 65 7  ƨyz ï Œ Ñ|~ ü} Ʒ ü ï  š < <  ü r ü ` r r i ` y Ʒ r ` ` r y r  r r   š r Ñ  r  r Ñ r Ʒ  ï H H H H 5 H H 5   Z  Ʒ Ʒ   š S ï S ï   s Ʒ   5  Z   Ʒ    ł Ʒ   `  `  r    ƙ  6  ü s    7   s 6   Ʒ      r! ƨ  ï Ʒ� Ʒ Œ y ï y  Ʒ   8    ƙ ï 8 x   ï  Œ à 2 2 2 2 2 2 2 2 2 k 2 ï  Ʒ"=#0$*% &)' Ʒ(  > + ,- s./ 15 234 ƙ N6 7: 8 9 C ֐; < 0 ï>]?L@GAEBDC  F ï ! HI s ƙJK MVNRO ïPQ ï ïS TU ï 6D ïW[ XYZ r r L\ ! ^_e`ca Lb 4 Ld ï ïfh g ï Œi j rl.mn Zoy pq rv s Vtu  wx   s Zz{ |}~  d  ü      d ƨ      Ʒ ü à 7  7   š  5  r Z  ï  ï i ï Z i  ï    Dz ս ս š  r r R R  r r r r r ս r r ï ï š r r R r V V ï ï r ï ս ս ս V  Œ ս š V r ս ս V V r V r V   ï  Dz  G x  ï   Œ     Ʒ 6 �    Ʒ    `      Z  ï ï T  %  " s! ` # !$ Dz &'* r( !) + ,- ƙ Vt K /0e1F 23 4@59 Z678   :=;< ƙ ƨ y>? 6  ƷA BECD Œ  ƙ GKH I J ïLYMT NOQ P Ʒ RS Ʒ 7 UV ` sW X Z^[]\ ` Ʒ ̀ ï_b` ï Za ï ic  ïd  Ʒfgh|imjk ï l ƙ ï 6no ѧpzq ïr ï ïst ïu ïv ï ïwx ï ïy ï 3{ ł j ł}~ x  š   t r  ï ï Ʒ ە  Ʒ  Ʒ ï > D ï ƙ    A    ս R   ە O   ƙ Œ Ʒ  ƨ Ʒ ï       ƙ ï     d  ƙ     r   ƨ s    3|    ˘  N d d 4 d  ƙ ƙ  ï  Ñ ҉ Œ  d Dz i  Z  Z š  Z   s ˘ ˘ ˘ š i  z š� Z Z   k   z  Ʒ x   d  r ï z z z y k  ï ï ïZJ 0!%" Œ Œ# Œ$ { Œ Œ&') Œ(  4^ Œ*+ Œ, Œ-/ Œ. Œ Œ19253 Œ4 Œ ~ Œ 678 B Œ W Œ:=; Œ< Œ Œ W>H? Œ@ ŒA ŒB Œ ŒCD ŒE ŒF Œ ŒG Œ ŒI Œ KP ŒLM Œ ŒN ŒO Œ XcQWR ŒSUT Œ \ Œ ŒV Œ \X ŒY Œ  Œ[u\a Œ] Œ^ Œ_` Œ Xc Œbf Œc Œde Œ Œ gph Œ Œijk Œ lnm Œ Œ Œo Œqsr Œ Œ t Œ Œvw{x Œy Œz Œ Œ W| Œ Œ}~ Œ ~  Œ Œ Œ Œ  Œ Œ Œ W  Œ  Ñ  Œ       s                                      d          y s Z  x  Z Ʒ    ï  Œ Œ Œ Œ Œ  Œ Œ ~ Xc Œ Œ Œ Œ Œ Œ Œ Œ  Œ Œ Œ Œ W Œ Œ Œ  Œ� Œ Œ Œ Œ Œ  Œ Œ   Œ Œ Œ \ Œ Œ Œ Xc Œ Œ Œ Œ Xc Œ Œ  4l Œ  Œ Œ Œ \  !"M#C$4%,&(' š )* Z Z+ ï-0. / ï 12 3 ï 5=68 ƙ7 ï 9;: Ʒ< ï Ʒ >A ?@ B DEI FGH K JK sL ̀ K NhO_PVQS R  R=T U ƷW]XZY ! [\   ^ !`d abc ef  kg  iyjpkolnm <f k Œ sqtr s uxvw <f <f ï z{| }~ ; j o  ï <f  Ʒ ƙ y 8 Ʒ      7 ï  x  Ʒ      ï  ï r s  k Z Z s   ï z .        6  ï ï ï ï ï ï r ï  r r r r r R r r r 8Z 8Z ) 8 r F LV 8 r V LV r r r r r r R r r R r r r r 8 r V LV r 8 r r � r r r  r r r r r r r r r r e )  r r r r 8Z r r r( r r r r r$  r r r r ! r"# r r % r& r' r r r r* r+, r- r R r/01 2U3F4 G5A6<7:89   Ʒ; i=@>?  d ï BCE D  GHJ šI  àKPLNM š š O š š QSR š š šT šVgW X`Y\Z[ Ʒ G ]^ à ï ï_ G tadbc y ƙ ƙ ef  Ʒ Z Ʒhvipjmkl  ˘  ïno ï ƙ ï qs ïr  Ʒtu i   Zw}x{yz Ʒ x  Œ|  ƙ~ Ʒ Z ƙ x Œ à  Ʒ ï š r ï  ӿ  ƙ š ( s  ƨ ł ƨ 3 6 Dz ï >   Œ Œ Œ Œ   Ʈ OG ƙ    Ʒ   d  š a$  Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z  Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z Z   Z    ʈ  Wa Q5 Wa s 7 y  7     �    >  K >      > >   Ʒ Z Ʒ   6D < Vt 8  "! i # ï Ʒ%& '7(*) ƙ ƙ+1, ƙ ƙ-. ƙ/ ƙ ƙ0 ƙ  ƙ23 ƙ ƙ4 ƙ5 ƙ6 ƙ 8 Œ9J:E; Œ<? Œ= Œ> Œ W@CAB Œ W Œ WD Œ Œ F ŒG ŒH WI Œ Œ W ŒKL ŒM ŒN^ ŒOP \ ŒQR ŒS Œ ŒTUX ŒV ŒW Œ MY\Z[ ~ \ ] Œ S Œ_` W B Œb-cdefng hlikj 4!   ï m  Z ov pqs r  tu  Z Z w}x|y z{  y y  N ~  y    y    7�   V  V     Z , ƙ ƙ ƙ ƙ V ƙ ƙ ƙ ƙ V ѧ s s s  ̀        #    ï Ʒ  ƙ      ï  Z ï Dz ï ` ѧ >   Ʒ ï ï      Ʒ ܹ š   Ʒ Ʒ     ï Ʒ š ï ƨ ï    ܹ r   ï  �   X    ƙ    ï  Œ  Ʒ  ƙ 7 ï Dz Z k    R   !&" #$ % T '+( )*  ƨ , ./ r 0 1p2O3J4>5:687  Œ ƨ Ʒ9  ƨ ï;<= ?D@B ƷA ï ƨ sC  EHFG Ʒ  sI  KLM š ï sN  PeQ_RXSU ƷT ï VW ƙ Z Œ sY\Z[  z š]^ k Ʒ `d ïabc ׁ ց ł : ł Œfgmhkij Vt < <l  Ʒ Zn o  Ʒqrs~tyuwv  x z|{ i G} ł  G ƨ 7 ï Z Ñ 8 Z ƨ j Z ł B y z  ł ï  x i Z Z ł  ƙ ƨ    z   ï   Ʒ ш  Ʒ   ï Z  à ï  ï  ?*       8     x  ! Dz    v ƨ  ց  ƨ  :y s :y ƨ   ï ּ ï   ƨ �   ï ï ï   ï ï ï    ƙ      ű 4N  4N ï  V š $!  V"# ! ï ï Dz%( &' ï) Ʒ + ,3 -. /0 1 2 3_ 4 Œ5 Œ6;78 ï 9 Œ: 7� < Œ= Ʒ> à ü Z@A sBCdDSEKFHG Ʒ ƷIJ ƙ Ʒ ï ZLPMO ZN < š QR Ʒ Œ T]UYVW ï sX Ʒ Z\[  z ï ï ^a_` Z i  Ʒbc > ïeufmgjhi Ʒ   kl ƙ Z nqop  Œ ïrs ï Zt i v}wzxy à ƨ d{|  ƨ ~ ƙ  Ʒ  k k ű k Ñ d ï L d d y d ƙ ï       Œ Z Z Ʒ ƙ i ƙ ƙ Z Z Ʒ ƙ ï   Z Z Z Z Z Z  Z  s 7U         ï                              ï     ï               �                   Œ        E;, (!%" #$  &  ' )*  + -1 . / 0 263 45 š ߡ7:89   \  < =A> ?  @  BC  D FJ GH  I  KPL  MN  O  Q R S T VWX|Yv Z[s\o]`^_ 6 . 6a ïbc ïd ïej ïf ïgh ïi ï ï uk ï ïl ïm ïn u ïp qr Dz u Dz 6tu ï ( w x yz s{ }~    \        Z    ߡ     j Ʒ j    j  j L       !   !        Z ƨ > s   z ï  8 >   Z  r  ƙ s  Z  ï Ʒ ï ( š ( d  ƙ  i Z    ï  ƙ Ʒ Ʒ y V V  Ʒ Z  # ƙ Ʒ Ʒ i   Ʒ ƨ ҉� Ʒ i  Z Ʒ    ƙ Ʒ    š i Ʒ Ʒ zF4 &     !     " #$ % ց'* () ł+2 , -. /0 1 3 5:6 78 9  ;D<A=?> = Ʒ@ ˘ B ű =C ˘ E  ƨGgHWISJOKML Œ ˘ N ˘P QR Ʒ d TUV Œ X`Y^Z[ \]  i3 i3  _ a bdc ef hxitjokm ˘l n ˘ špr Œq s u v Œw yz{} | ~ Z Z Z  Z Z Z \   Œ Œ Œ Œ ~ Œ Œ Œ Xc Œ Œ Œ Œ Œ Œ 4l Œ Œ W  Œ l Œ Œ Œ Œ \ Œ Œ Œ Œ Œ  Œ Œ { Œ W Œ Œ W Œ  Œ Œ  Œ Œ Œ Œ Œ Œ  Œ Œ Œ Œ Œ Œ Œ Œ W Œ Œ Œ W Œ W Œ Œ W Œ Œ Œ Œ Xc Œ Œ Œ Œ Œ Œ Œ W Œ Œ Œ W Œ Œ Œ W         ?   � <  ʗ       ]   š   N.! ï ï r r  = r r  r r ï š r 8Z  R "+#($&% r z r r' r ï) r* R ,- š ï ï/>02 ï1 ï 3 4 5 67 8 9: ; <= ?G@D ïABC ï ïE ïF ս R 8ZHK ïI սJ r ïLM r OVP ׭QUR ï S šT ï ï ׭WZX ïY ï ï[ ï ]q ^_ ` a b cd eg f :h i j k l m no p rs xtv u wx}y z d{ |  G ~ Z ƨ         Od    k Ʒ  i k  Œ Ʒ Œ Œ ƙ  Z G Ʒ  Ʒ  y  ü < Z   ï ` s  ï G ` š   Z Z Z Z  x  Ʒ Z    ƙ k  7  ƨ  Z Œ  7 7 G  ï ƙ x Œ ï Œ r Ʒ     L  Ʒ ˘ U Z Z    �  Ʒ  Ʒ s  Z  ƙ   Œ vY3! Ʒ y ł ł     7 3 ƨ Z"*#& $% R ƨ ̀'()  Z ƨ+0,. - ƨ Z Ʒ/ Z 1 Ʒ2 Z 4?5:6 Z78 > Z Z9 ;=< Z > Z> Ʈ@JADB s ZC Z EGF Œ ŒHI Œ V  KRLOMN  ï ïPQ Œ ïSVTU Ʒ 7 ƷWX ƙ Z Zh[a\^]  Ʒ _` `  4becd s Œ Zfg  ipjmkl  ï Zno  Ʒ qtrs Z  x Ñu Ʒ ï ywxyz}{| Z s r~   s ï ï 7 Z   Z  j   ܹ  F  ï  ï ï  ï ï  Z  ï   ï Ʒ Z  ּ     š `  ߿   ּ `  Z V   `  `  Z    ܹ ܹ    Z Z  Z     Œ   ï  Œ Z ï     G G G G G  G G G G  r ï  Ʒ ï r  r ï ە Z  ï Ʒ� s ï z   Ʒ ï 7 s   V F > #   H H     H     !" $;%' & א (/) *+ , - . 015 23 4 6 7 89 : < = d? d@A HB HC HD HE H HGPHMIJ > `K dL  d^ NO Z ƙ ï ZQS ƷR  iTU i x ƙWg ïXYaZ^[\  s ï]  >_` Ʒ becd ï f Ʒ ƙhwipjmkl  Ʒ no ï ˘ Ʒqtrs  ˘ y ïuv ƙ à  ïxy|z{ 7 Ʒ}~  ï Z Ʒ  Vt ƙ  Ʒ  Ʒ ï           S                            0)  ï i ƙ > Ʒ s Ʒ  Ʒ Ʒ Ʒ ï  V G  Œ Œ Ʒ  ű   r z z tI Œ  Z Z Œ Z  r  Z  ű à  Ʒ Z Z   ï Ʒ  x Ʒ    s k  Ʒ d� x    d Ñ  y   L i L d L  ܹ d ï d Ʒ   s     s  ! ƙ s"#% s$ s Z& '( Ʒ * +- , ï ./ L  ˘12 3i4H5B6<7;8 9: ï m  s => Ʒ ? @A Z m ï CDGE F  4I_JPKOL ˘MN  dQ\ GRS !T ïU ïV ïW ïX ïY ïZ ï[ ï ! ï ] ï^ ï 3`dacb ï ï Q^ ï sef K ï ïg ïh 6 ïjklsmp n šo  q `r ł łtyuwv  x š Zz| {  š}~ 4? 7 }  š Z  ï Z ƨ  Z ƙ  s ï  s ƙ   y s ï Z ï ƙ ł 6 6 ƨ  54   :y  ѧ d d  d d d d d H d        H H H H d H d H                              r Z  3| 0 ˘         / *)  ï� Z  Ʒ Z Z ï  ï ï ƙ ï    Œ Z  i s i ü Ʒ Z  ï  r" Ʒ Z ï 7 ! ï Ʒ i#&$% i d i Œ'( ï ï  +., ш- ш  Œ Z12 34K5> 6 78=9; ƙ: V<  V ï ?F @AD B ïC O xE 4N ƨ G H ƨIJ Ʒ  kL_MR N O P Q VSXTWU :y ïV QC QQ  LY\ ZZ [ V Z ] V^ ƙ`{albhced ï fg i jk Zmtnqop  ƙ  rs ƙ Z kuxvw yz Ʒ x|}~ Ʒ r Œ Ʒ x z ƙ ƙ Ʒ x   Z Ʒ x Œ ï  Z ï  r ï Ñ                       V Œ  ï Ʒ Ʒ   d  8  7  z ï ƙ  ï   G  s Z ƙ G s Z  Ʒ Z ï à ï  Ʒ z T*  sP Ʒ   s  G  G G s   s s� > L ű Ʒ L s s      Ʒ r   Z  r/$    r   r  <: ü d! d" d# d %* &'( Ʒ ) ü +, ł  - ï. ü0>1725 34  6 ï8:9 ` ; Ʒ<=  ?L@HA Z `BC  dDE dF d dG d >IJ Dz DzK ü MN O üQmRX iS sTU Z iV W i sYj iZ[g \] o^ tI_ tI` tIa tIb tIc tI tId tIe tIf o tIhi pw tI o  kl i y inop s Ʒ Qqrs}txuv <w < y z{ | s ~                              H          Z 7 s ï y ƙ y  N Ʒ   Ʒ Œ Ʒ  V à     ï d  6&        s Dz ï  x ̀  Ʒ ï    Ʒ s Ʒ  Z ï Ʒ ï    Z ï Ʒ ̀ s H      d d d d d d� ï                  TW<+' i i i i i i i i i! i i"# i$ i% i& i i () = =* = , -. / 0 12 3 4 56 7 89 : ; ;=> ?j@TA B S CDLE F GH I JK M NO P QR S UZ VW X Y [ \ ] ^ _` aeb  c d  f  ghi  kn l m o pzq  rs  t uv w x y  %  { |}~                        H Z Z Z Z Z Z Z Z Z Z Z Z Z W Z Z Z Z Z 3 Z Z Z Z b Z               >       #   > ѧ              Ʒ ]= Z   k  r r r   r Ʒ  à ƙ  ü ü  ï š s š� ƙ š  š ï Ʒ    ï Ʒ   Z  ï ï  à ï  7 ï Œ  ï Z  y r Z !  Œ z"6 #$ %( & ' ) *+ ,- . / 0 12 3 4 5 # 78: =9 = ; < ==P .> .?@B .A . 6C . .DEJFHG 6 . 6 6I . 6KML 6 . 6NO . 6 6 . Q RS T UV 6XyYcZ][\ ` ï ^b r_ ` a  S  dwef gih š š 5js šk šlmo <n š ( šp šq šr š B štuv š ( ( š Œx iz({ |} s~ ï Ʒ  ï y   ü à 8i ü ï ƨ     Ʒ i i Z Z  ƙ Z    Ʒ Z    7 ï  s Ʒ    Ʒ Œ ï Z  s  Z s   s s s s 8 s   L ƙ d d Ʒ  d        i  ï ƙ  ï  Ʒ  ƙ Z G i  š x ï    Ʒ s Ʒ Œ   ï  ï ï Z s   i ï Z � d    ï Ʒ  i Ñ [ Ʒ     y ï ï ü ï s i ƨ  i Ʒ  ' ï! 7 ü à  ï "$ # Z %& ï i ï )<*;+ , y- y. y/ y0 y1 62 63 6 645 6 66 67 68 69 6: y 6 Z =>  Z?@ \AT \BCG \DE Œ ŒF Œ \H \I \J \ \K \LM \N \O \ \PQ \RS \ Œ \U \ \VW \ \XY \ \ [\�]^A_9`acb y 7 ydeqfi gh   j ïklo ïm ïn ּ ï ïp ּ ïrs tu{vx ïw š ïyz  ï|}~ Ʒ ï Ʒ ï ï s Ʒ r T ̀ ï z  ï ï Ʒ ƙ   Ʒ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ V ƙ Z   N ï  Ʒ  d = ˘   ï V Ʒ  ï Ʒ  Ʒ ҉ ï ï    ƙ i  ܹ  ï ˘ Œ y  Œ       j    ï i ƙ ï   y  ƙ ƙ   y  ƙ G ï   Ʒ Ʒ y  Œ r  Ʒ d Œ Z Z Z Z Z Z Z Z� Z Z Z Z Z Z  Z!    ł ű  o  i s i  Z Z Z Z Z Z Z Z Z Z Z Z Z"#  ï$3 s% & '( )*1+., - < /0 <2 2 4 5 6 78  :;}< ï=j>N k?@FACB ï y ï D ïE ;8 üGJHI Ʒ KL ï k M Z OP^QXRUST Ʒ Œ ƷVW Ʒ ` Y[Z Ʒ ƙ\]  ƨ ` Z_d`cab `  ` egf ƙ hi Z d kl Ʒ m nvospr q i  tu  > ƙwzxy   Z{| Ʒ Ʒ x~  #                d   d    H H H H  H     א   <  TI   ѧ x à  y ҉ ï    ï i  Œ  ï  ѧ  à     Ʒ Z r ƙ  <   ï ̀ ˘  Œ Œ Œ Œ Œ Œ Œ  Œ Œ Œ Œ Œ Œ  7 Z� Ʒ Z Z   ï Z Ʒ i   ï Z  ï 7 Z ?/ ï! Z  Ñ Ʒ Ʒ Z ƙ Z z Z Ʒ ï ƙ i ")#&$%  ҉'(   Z *,+ Ʒ Œ-. d  Ʒ 7 0182534 ï  ï s67 d ï ï 89<:; Ʒ ï Ʒ ï=>  @ L BCnDcE HFQGH 7 ïI ïJL K d MN  O ïP ïRb ST U V WX Y Z[` \ ]^ _ a  d ïe yf g ïhkij y à lm  ï d opqrzs twuv Ʒ   Zxy x  {|}~  V d Od V  ƙ Ʒ  ï  Ʒ   ˘ ï  Ʒ Ʒ ï ` ï Ʒ  ï     ƙ  Ʒ > G V   ƙ    UZ ï ï Z Ʒ ƙ  Œ  Ʒ  Ʒ   H H H H H H H H  H H     H <               6   k k r Œ Ʒ  ï   Ʒ Ʒ      � #  ï        7    Z x ï  ï z  s üA0 i x  ï  ]m x !  Œ ["#)$'%& Œ i ï ( ƙ *-+, ƙ  i Z./ Ʒ  ï1 Z2 Z3 Z Z45 Z6 Z Z7 Z89 Z:; ,<> Y= 4{ :j?@ h  ޕBhCeDTE FMGJHI y 7  KL ׭ Œ Ʒ NP O ƷQSR Ʒ r Œ ïU VXW Ʒ  yYdZ [ ï\ ï] ï^ ï_ ï` ïa ïb ïc ï ï fg ە ï ijksl mpn o  q r  t uv w x yz { | } ~         H     V ˘ ï Ʒ ƙ ƙ ׭ s ` ï Ʒ ƙ  d ł ƙ Œ  ˘  ƙ 7 à ` Ʒ y 7 ƙ à  ƙ ƙ Z  seZ  s                  t t t   ;  KH %                       ƨ �          -  ï x ҉    ƙ d š Œ    % ! " #  $  & ï'*() ï   +, Ʒ > Ʒ .  /0?162 3 ï45 7  k 7=8:9 Œ Ʒ ;< x V > z @PAGBECD Z  Z s ŒF Z HNIMJ zK sL s d Z O 7 Z yQTRS  ï UXVW  Y z [^\ ] Z s _s`qapb ïcfde ł   Ʒgmhj i  ,]kl Z ̀ ï n o ѧ Ʒ Gr  rtu~v 8 8wx{ 8yz 8 9 8| 8 8} 9 8 s  x s  ï r  x  Ʒ ]m ƨ  6& 6& 6& 6& 6& 6& 6& 6& ï   z ;8 r  7   s s  i Z ï ï Ʒ  Œ Œ Ʒ ƙ ï ï Z  ï ƙ  7   ƙ Ʒ  Z ï Z i Ʒ ï ï Œ   Z š    Z ;8 Ʒ Z ï Œ  &y  y  Z Ʒ ï  Ʒ r i Ʒ > ï ï Œ s ;8 s š  z  ï� ҉ i  Ʒ    ï y  ;8  Z Œ    =  Ʒ  y s$! z  Ʒ  Ʈ Ʒ   ˘ ï"# ƨ ï Z  r% i&'F(7)0*-+, ï x � ./ ï s1423 k Ʒ  Ʒ56 ï Œ 8?9<:; z y => y ƙ 7@CAB y DE ï s i GVHOILJK ƷMN PSQR s z ҉ rTU Œ W^X[YZ Z \]  Ʒ i_b`a  ï scd à  Œ ̀fgh i jkylrmpno Ʒ Z Zq svtu Œ  ï Œwx ï ˘z}{| ï  ̀ ƨ~  i ƨ Œ ƙ  3| i      < >   ï 3  ï x Ʒ Z Ʒ  ƙ  s Z Œ i i i i i i i i i i i i i Œ ï ܜ  ï k ï ï ï  Œ Ʒ Ʒ  ï   G G G G G G G  G G G G G G  G ï  R r 8Z r r   r r r Œ               s�l�W�7��� � ��� ƙ�� Ʒ  Œ ��%� �� �� �� � d� d Ʒ�� Ʒ k�� Œ d L���� L  ���� Ʒ d L >�� d L � �#�!�" L d d �$  L�&�-�'�*�(�) d Z r s�+�, i 7 d�.�5�/�2�0�1 Œ Ʒ d�3�4 L d  L d�6 L �8�I s�9�:�A�;�>�<�= i �?�@   �B�F�C�E�D ƙ  Œ�G�H  Z s�J�Q�K�N�L�M   �O�P  Ʒ ï�R�T �S à d�U�V Ʒ ï �X�h�Y�Z < A 5a�[�\ (�] ( (�^ (�_�` (�a (�b (�c ( (�d�e ( (�f�g ( ( B�i�k�j A ? š k B�m �n��o��p�|�q�t ï�r �s Ʒ �u�x�v�w ˘ à �y�z  ց�{ à 4/�}��~������ � � � �� � � j ï ƨ  ï� Ʒ Z��� ï ï Z� ï ƙ ï� ������ Ʒ Œ 7 ï Z� Œ ï����  �� ƙ 7 ï ƙ�� s s�w�F��9��������� � � � � Ƴ  ����������  Ʒ ƙ ��   ï ���� Œ  Ʒ�� ƙ  ï Ʒ������ x  Z �� 8 z Ʒ���� ƙ ��  s  ï �  ��  ��  � � �� � � Œ�$��� Œ�� s Ʒ ���������   ï�� Ʒ ï���� ï Ʒ �� ï ï ������ Z Z �� ï  Ʒ ï� Ʒ ï   Œ 7   ï  Ʒ   ҉ Œ 4 Ʒ ï  > ' ï i   Z ƙ ï 7 Ʒ ï à Z! 6 "# ƙ x ï k%8& Q'1(/)* ҉ Œ+ , š- š š. š 0  K2534 Ʒ  67   z  :;<=>?T@QAF HBC HD HE H H GM HH HIJ HK H HL H HN HOP H H R H HS < UV]W H HXY H HZ H[\ H H^p_ H`iae bc d Hf gh H jm k l H n o H q Hrsx t uvw H H yz}{| H H ~ H H  H H  H H  H   H H H H H H H H H d H H H d H H H H H d H H H H H H H H H  H H H H H H H H < H H H < H < H d H H H H H H < H H H  H  H H  H H  H  H H H H H < H H H H  H H H H  H   H  H  H   H  �  H H   <  H     H  H H   H  H H H H D H H H H d H H !2") #$& % H '( H H*.+ ,- H H /01 H H3:46 5 H78 H 9 H;?< => H H @B A H C H E H HFGXHTIOJL K HMN H HPRQ H S H U V W HY`Z][ \ H ^ _ H a bc H efg Hh H Hijxkqln m H o p H Hrt s Huwv H Hy}z{ H | H~  H H H  H H H H H H < H H H H H H H H H H d H ï ï ï ï ï ï ï ï ï ï Q5 ï Ʒ Z   x   V  x     ˘ Ʒ ˘  ï   ï Z ï Z y ï s   \ \ ï Ʒ   x Œ x Ʒ i  ï   d ï x ï    N   ï Ʒ ï  ű    ï      G  r y ï  �   ˘       x   k ï  Ʒ Z  s ïDA"  i Œ Ʒ Ʒ! ï# $3%,&)'( Ʒ Œ *+ Ʒ ƙ-0./  ï s12 r y ƙ Ʒ4;5867 Z s ï 9: ï x <> = 6 Ʒ?@ Ʒ ïBC 7 zEFcG`HV IJ KL M NR O P Q S T U W X YZ [\ ] ^ _ % ab   dse fg h i j k l m noqp  r %tu~ vw x  y z{ |  }                                                                                                          �           <  UZ V Œ   ˘  7   ï -%" ! ƙ Ʒ  #$ ï 8 &*') ( Z  z+, ƙ š  .5/201   ï34  ƙ 6978  ï ï :;  r ƙ ï=> Œ s?@CAB Œ ҉ ƷDE  GHIiJrKVLU MNQOP .  ZRTS 4? ï Dz ï >WcX ˘Y^ ƷZ[]\ ï ï Œ  ƙ_ Z ï`ab A Rk R A de iflgjhi ï  8k ï Ʒmpno   Ʒq 7 stuv w|xz y #{ # }~     d     <    <            <            H    H                 X X     d            D$#    �                         ! " א d% &1' ( )* +, - . / 0 2<3 4 d d5 d67 d d8 d9: d; d d= >? @ A B C E HFU GH IN J K L M H O P Q RS T < V W Xa YZ [ \ ]^ _ ` b cf de g h j Zk|lm ̀ noxprq su t vw R 3 à 4/ y z{ }~ Ʒ à ƙ ï ï ï W ï ƙ  ï ï i  Œ i i Z i  i i i i P i i r i i i  i K K  K K S i ` i i i i i L i š i  i i i i i  i i i i š  6 d Ʒ 6  Ʒ ƨ d 7 ƨ ï ƨ  Ʒ ƙ ƨ ï  x ƨ ű  k ű ҉ ï ű Ʒ s Ʒ ï ï d ï ï ƙ Ʒ ƨ Ʒ ű 7 Z Z Ʒ  i� Ʒ i ց ƨ  ƨE%    s ï O ï ï ï  ï Ʒ 4N   i ƙ ï  V" ! Ʒ  y#$ 4N ï ï&6'-(+)* V ï ,   x.2/0 ƙ Z1 PP j354 Ʒ Œ ü ï Z7=8: ƙ9 ï;< ü y Œ>B?A@ Ʒ  Od CD ï ە  ïFeGUHNIKJ ï Ʒ ŒLM   x rORPQ Ʒ ü ƷST ï V]WZXY  z r [\ Ʒ ï Ʒ ƙ^b_` L ïa ƙ Ʒ Zcd ï Ʒ ` fwgnhlij ï Zk ï ï ̀m ҉ ï ospq ï r N ƙtv u  ï 8xy}z| ï{  s~ Ʒ s  ï  ҉ š ï ƙ G ï         H < H          š X  s   G i Ʒ Œ Ʒ ƙ Z  G ï ƙ Ʒ ï ˘ ï     š  Z š ï Ʒ ƙ  Ʒ ï ï  ̀   ï Ʒ ï  s   Od i Ʒ ï i ï ï  i  Ʒ  ï   x r ü Ʒ  ï Ʒ y à x � ï ï Ʒ ï Ñ Œ s   3m             s Ʒ ï 7[ ?!0")#&$% Z Ʒ Z '(  Z*-+, 7 L ./ Œ  s 182534 Ʒ ƙ 67  ƨ  9<:; ƙ Ʒ =>  @LAFBDC ƨ E ƙ Ʒ GJHI Z Ʒ Ʒ K  i MTNQOP Ʒ  ƙ ƨRS E i Ʒ àUXVW Œ Ʒ YZ Ʒ \j]c^` _ 7 ab  dfe ï gi ïh ï Ñ krlomn Z z ƙ spq  Ʒ k ist i uv  y ï ƙxyz{|}~ ï  d ï s x z i   ˘ ï ï Z ˘ ï Z Z        א          s            G  ƙ   Z  i y x y  ï Z ` à Œ ï Ʒ ï 7  L ï s        <            <  s  & Z@2� r   ï ƨ  ï*&    Ʒ ï ` ï  `  =   G Z ï Z à  8 Z    ï ҉   #! ï" Z ï $%  ï ï ='(  Ʒ )  + Z Z, Z- U./ U U01 U W U Ʒ3 45867 5 š 5 A9: > š; š< š š=> š š? < šABC s DvEUFTG H IJ K LM N O PQ RS ! ҉ 7VuWdX_Y[ Z \ ]^ ` abc esf g h iqj k l m no p r t r ïwx~y z {  | }  Z   V   ї   V   4 x x V  L n                     d'     Ʒ ï ƨ ï ï Ʒ ï  ƙ ҉ x ï x Ʒ ï  Ʒ Ʒ Z Z à Ʒ Z ƙ ï Ʒ r ï ï     Ʒ Ʒ i à  Ʒ   r x Ʒ  G s   ï Œ Ʒ   Œ ï z  7  s  �      ` s    Ʒ     Œ d G  Z       ï `   Ʒ s ï      ï     s Z   \ Z   B ! 5 " 0 # ' $ r % r r & r ( , r ) * + R r 8Z r - r . / + S r 1 2 r r 3 r 4 r 8Z 6  7 < 8 9 r r : r ; 8Z r = ? > r z r @ r A r R r C G D  E F à r Z H ï I O J M K r L r z N r š P Q š ï R S ű T ű ű U V ű ű W ű X Y ű Z ű [ ű ű M4 ]  ^ ` _ z y a e  b c d Z  s ҉ f ~ g n  h i  j k  l  m H  o  p  q  r s z  t  u v  w  x  y d  {  |  } d            Z   Z Z Z  Z Z  Z          š 5C s ï  ï i    ï Ʒ  ï      Ʒ    s         3| Ʒ Ʒ    ƙ      ï   d 8       ï i   3| Z r i    Z  Z ï  Z Ʒ 8          i  7  ï   ï    Ʒ    ƨ Œ             i       7  Ʒ  Z  x  y    k  ü            ƙ     Z  y    Ʒ Z   ï Ʒ �      Ʒ ï Ʒ    ƙ      d  Z Œ ƙ    ѧ ï        4      &       Ʒ i Z   ï Z Ʒ   # ! "  Q  Œ $ % ܌ ï Ʒ ' . ( + ) * ƨ Œ ï , - Ʒ / 1  0 Ʒ 2 3   \ r 5 N 6 E ƨ 7 ƨ 8 9 ƨ ƨ : ; ƨ < ƨ = ƨ > ƨ ƨ ? @ ƨ A ƨ ƨ B C ƨ ƨ D ƨ 9 F J G ƨ ƨ H ƨ I ƨ  K ƨ ƨ L M ƨ ƨ  O  P  Q d  R  S T  U  V  W [ X  Y  Z  \ a ] _  ^  ` <  b  c H  e o  f H g  h i  j  k  l  m n  p  q { r  s t  u v  w y  x  z  |  }  ~                                          <           <   < < < < <  < < 2 <    <     א                      .         }  4  '               ï    Œ ï     Ʒ  Z  Ʒ Œ       z  �  G c Z     Z      ï  7 r   ï ï  ï   ï  ï  ï  ï  ï  ï ï   ï      ï            !  "  #  $ %  &   (  ) 2 * 1 + ` , ˘ - ˘ ˘ . / 0 �l ˘ ˘ , ï r 3 Z ˘  5 |  6 7 s  8 9 V : I ; B < ? = > Ʒ ҉ Z  @ A Ʒ  x C F D E ƙ  G H Ʒ i  J P K M  L  N O ƨ  ʥ Q T R S  ï ҉  U Ʒ W d X _ Y \ Z [ Ʒ  ] ^ Ʒ Œ  ` b ï a   c ï  ï e l f i g h    j k ƨ  Ʒ  m p n o  Œ q r Ʒ  ü  t u z v y w ï  x ï Ʒ Ʒ { x Ʒ ï ~    Z  Z Z Z  Z Z  Z Z Z  Z Z  Z Z Z  Z  Z ƨ š ƨ   y   ѧ N        ;8      n  e  nf 6   nH nH nH  nH n  K       ï Ʒ ï  ï ƙ    Z i  Ʒ   ï 5a R ï    U  %   ï           ƙ ï 7  Ʒ    Œ Ʒ Ʒ ˘  Ʒ  Z          s         à ï           %       ï       ï ï ̀    Ʒ ï  Ʒ ̀     �     à     x Ʒ ï     s s r  7                                !  "  # $  & ' Ʒ  ( M ) J  *  +  ,  - . H /  0 ; 1 5 2  3 4  6  7 9  8 ',  : ',  <  = C > @  ? / A B < /  D F E <  G < I  K L ï [ z N O R P Q Ʒ š  S T Z Z  V  W e X  ˘ Y ˘ Z [ ˘ ˘ \ ˘ ] ^ ˘ _ ˘ ˘ ` ˘ a b ˘ c ˘ ˘ d ˘  f  g j h i z ï  k ï  l m | n u o r p q  ƙ Z ` s t Z  x  v y w x k G ƙ z {  ï  }  ~   L x   ҉ Ʒ     G Ʒ Œ Ʒ Ʒ Œ       # ƨ                Ʒ  š  7 Ʒ     y Ʒ ï Z  s  ï           ï Ʒ   y ï ƨ     Ʒ  Z Z Z Z  Z Z Z Z Z   Ʒ x       ƙ ï ƨ        7  x             ï     Ʈ Ʈ Ʈ Ʈ Ʈ Ʈ Ʈ H Ʈ Ʈ Ʈ Ʈ Ʈ Ʈ Ʈ Ʈ H Ʈ  x  ï i   ï ï   ï Ʒ s  r       x ƙ  ƨ 5% ƙ ï L    � Z Ʒ x   L Ʒ    Œ ï Œ  (   `    y  s     s   א <       #    r r  r  r  r  r   r  r r r ! r "  r  $  % ˘ &  '  )  * p + o , Q - C . = / 2 0 1   ï 3 <  4 W 5 6 W W 7 W 8 9 W : W ; W W Œ  > A ? @ r Ʒ Ʒ  B Ʒ   D J E G Z F Ʒ H I ï   Ʒ K N L M  ƨ  O P ï  ҉ R ` S Y T V U Ʒ d à W X i  ` i Z ] [ \ Ʒ x ƨ  ^ _ x V  a h b e c d Ʒ Ʒ f g Ʒ  Ʒ  i l j k ï  m n   q r ï  s s t z u w  v  x y  Ʒ { ~ | } ƙ s ƙ   i Ʒ ƙ                    %          G i \       Œ   s ï     Ʒ Ʒ   Ʒ     G   Ʒ "            r      Œ ̀    Ʒ š Ʒ              ̀ Ʒ z       Z ̀ Ʒ  x Ʒ Ʒ     ï  ï  Œ           r         i š ï  ï ƙ à     ƙ   ƙ   Œ ƙ L       Œ z     �   Z š ï Œ š Œ    à ƙ     7  ە  V ҉   ï ï x   Ʒ i  ï  <  !  š  y#$r%B& z'4(/),*+  Ʒ Z-.  Z Z 02 1 V ï3 ï 5<6978 Ʒ i à:; ƨ s à=@>? š i ZA i  C ïDKE F G H I J L MNmO`PYQTR S H 02UWV X Z][ \ א^ _ ahbe c d אf g אi jkl n Ho p q Hst uv}wzxy i ` {| ï t > ~ V Z ` r >  `  Œ Œ   i Œ Z Z Œ ƙ Œ   ï ҉ Ʒ ï    ï `  y ï x ï  ï ` ƙ ï  à   x Ʒ ï š  ï  `  ï s  ï Z x z G   i   y ƨ  ƙ  Z ï  Z ï  i Œ ï x   ï ƙ Ʒ ï         Ʒ Z ï  Ʒ ï Ʒ  ï� ï    r r     ï Œ   ï G L G ] ï Ʒ z Ʒ  ï Z ï Ʒ ïw C!@" #1 $ %&( ' )+ à* i Z,- Ʒ ./ i 0 293 4 5 6 7  8  :; <  =>  ?  AB Œ Œ GDEF GYHI J ZKRLOMN  G PQ Œ ̀ ZSVTU   ƙWX Ʒ  à sZ[ Z\]t^e_b`a z Zcd  Ʒfqgp hi 7j 7 7kl 7 7mn 7o 7 7 , s ïrs z à Ʒ u|vywx Z ï ł z{ Ʒ ï Ʒ ł}~ ï Z  Œ Œ ƨ  7 ï Z  G :y ű ï z   ە ï  k Z  Z Z         < d r א  H  y Ʒ 7 s ï   b  #   54 K 6D š c Ʒ Ʒ ï ƙ i  ï V  V  ƨ ï ï ƙ ï s Œ L r ïC ï� G ï ƙ  ï Ʒ r  i ï  Ʒ ˘ ï ï Ʒ Œ  s Z š ̀  Œ   Ʒ Œ s ï )  Ʒ ï Ʒ  ï ï   ï ï ` d r  ï à  ï ï  ï  x ï ï  ï ï ï! ï" ï ï#$ ï% ï& ï' ï ï( ï *6+0,.-  ï Œ /  1423  5  i N7;8: ï9 z ï  ï<>= ï ?@  ïA  ïB ïDE F{GnH\ IJ KS L MN O P QR T U VW XZY [ ]_ ^  `ca  b  d e fg  hi  j kl  m  o  pqx rs t u v w yz   |} ~          K*              e     %  % %   %     % %  %   ƨ  y r  Z  ï  OG ï Z x i i i i i i i i i i i i i i i � i`   Œ  Ʒ ï Z š ï ü u : Z ï   ï s G  ï Z ï ƙ ƙ  š   x ׭ Œ ƨ  ƙ� r ï Z L* ï     Z Ʒ G  à Ʒ   ï  t0 F F F F F F ٍ, F F' F!$ F" F# F F%& F F = F() F* F F+ F- F./ F 3 F 1B2 iu3 iu4A5 F6<7:8 F9 F F iu F; F iu= iu iu> iu? iu@ iu F F iu iuC iuDEgF_GPHK iuI iuJ $ =L iu iuMNO ٜ 3 $ QUR iuS iuT  B DV[WZX  iuY iu ٜ iu\ iu] iu^ iu` iua iu iubce iud iu $f iu $ iuh iuip iujk iu iulm iun iuo iu 3 ٜq iu iurs iu 3 iuuvw}x yz { | iu ~     F     iu   iu    F   iu iu   iu iu ٫ iu iu iu    iu  ٍ ٍ ٍ F B B B B B B B B B ٍ B B B F B F ٍ ٍ ٍ ٍ F F ٍ F ٍ ٍ ٍ F ٍ ٍ F ٍ ٍ ٍ ٍ ٜ ٍ ٍ ٜ ٍ ٍ ٍ ٜ ٍ ٜ ٍ%   $      $     7 7  7  7 7  7   �   $ ٜ     F   F F F F  F F   F  "    F F F! F ٜ # $  &^'1 ( )* +, - . / F0 F 2G 34 5>6 7; 8 9 F: F F<= F? @ AF FBC D E F HTI iuJ iu iuKLRM iuN iu iuOP Q iu S iu ٫ iuU]V[W iuX iu iuYZ iu 3 iu\ iu iu _ B B Fajb Z Zcd Ze Z Zfg Z Zh Zi Z Wk slvmn Q 3|opsqr Ʒ ƙ tu Ʒ   ï x3yIz{ |}~ y   Ʒ ï s ƙ  à  x   ï ƙ  Ʈ Ʒ r Ʒ d ƙ i Ʒ d ï L  Ʒ x ï Ʒ ƙ   ï 7 s  k Œ   ܹ Z Ʒ 7 s   ï Ʒ Ʒ x     ; n n n n n n n n n n n ; n ; n n ; 8  s  ƨ Ʒ i ï ï  ƙ Ʒ ̀ ï ü Z ƙ  ƙ Z ï r Z Œ ƨ ï ` Ñ  G G� G G G  G G G  G G G G G  G G G OU G  G G G G GH; x x x x x  ï,%" !  ` ï#$  ï z d&)'( 7 ` G `*+ ï  ï-4.1/0 ï Ʒ 23  5867 Ʒ ƙ9: `  x<=  > s? s s@A s sBC sD sE s sF sG s _ s iJKSL MN O PQ R T UVWeX^Y[Z  ܹ ï\] Ʒ ց Œ_b`a Ʒ Ʒ Vcd 7 G d ƙfugnhkij 7 Zlm Z   orpq Ʒ Z Z st 7 Z kv|wzxy z ѧ{ ƙ ï 7}~ ï Œ  .      x . s   6 ï x   3@   ï   k   x  ï Ʒ ï 7 Œ   Œ  Z i  à  i  7  Ʒ ƨ Z ï s ƙ     ƙ   ƙ  7 Z 7  ƙ ï ` ï r ï    s x  Z Z  ï 7   P3  P3   P3   P3  P3 P3  > Ʒ  Ʒ� ï  Œ  s ƙ x  ƙ  7     Z ï ս   à   Ʒ Ʒ ց  Ʒ  &  Z Ʒ Ʒ Z ï ` #!" y s$% Ʒ ï'-(*) ł ` +,  Ʒ ï `.1/0 k ï Z2 Œ k 4J5 67 8U9: ï Œ;I<B=@>? Ʒ Ʒ A ƷCFDE  ï  GH ƙ Ʒ JOKL  MN x Ʒ .PR Q Ʒ .ST i Ʒ xVWgX_Y\Z[ Ʒ i Œ Ʒ]^ Ʒ  ï`cab ï Œ dfe š ( ƙhviojmkl   tI n psqr Q L tu 7  w~x{yz Ʒ k k |} Z s ˘ Ʒ ˘ Ʒ ˘ ҉ Œ Z i ҉   ƙ  ï  Z Z   Ʒ  ƙ ܹ Ʒ  Œ   Z à ï Ʒ F ƨ ƨ ƨ ƨ ƨ 4N  7    s Ʒ `  š ï ˘  ƙ Z c Ʒ ̀  C Ʒ Ʈ m 6 4 7 s     k i ˘  k Ʒ )  y Ʒ Ʒ ï ï ˘ r i ï Ʒ ï  Ʒ ܹ š ƙ ̀ Ʒ  � Ʒ Ʒ ƨ  : ï ˘ k Ʒ ï      Œ : :  ï  š ï ƙ  V , Z %" ! r <  VG#$ ҉ ï ï&)'( 7   ï*+ Œ ï ï Ʒ-. /;0615 s234 s  i G s78 s9: Ʒ  ï <C=@>? Ʒ ZAB  kDGEF x ƙ  ïHI ï ƙ ïKLM iNpOP Z Q RaSZTWUV ƙ r XY ï ï[^\] Ʒ _` ƙ  y ƙbicfde ï gh  jmkl Ʒ no   ï Gqr  st|uyvxw Ʒ  ƙ z{ ï  ï } L~ ï Ʒ ï Z Ʒ z s  à s   Ʒ Ʒ G Z  ï     ï  ƙ Ʒ  ï ƙ x Œ    r > s  Œ   ܹ Z ƙ Ʒ ƙ Ʒ Ʒ  Z  ƙ Ʒ Ʒ Z Z ƙ i 8 y Ʒ Ʒ ƙ Ʒ  ï y s(&y \  \M  E] ҉ Z ï ҉ \M ї ї ї [ ї [ ї Z ї ї ї f ҉  8 8 ї ї š ї ї ї _\ _\ ї _\ ї�     ,  ;8    ї Z [ [ [  ї ї ї Z Z [   E E [} š E] š Z [ G G G ' G!2"0#($ ї% ї& _<' ս E ї) ї* ]=+-, ї  ї ї. ї/ ї  ї1 Z ї3|4d596 mj E7 E]8 E] Z:I;B š< š=> š š? š@ šA š C š šD šE šF šG šH š JaKVLM š N š AO AP AQ AR AS ATU A A BW`X š šY šZ š[ š\] š^ š š_ š B > cb [c Z їetfngkh Ñij [  ҉ Ñl Hm H C] Hopr Hq [ ` їs [ Eu ї \vwzxy E ї H ї{ ї ї \M}~ ї  ї ї ї E ї E ї [ G ї ї ї š ї ї ї š š š š š š š š š  ї ї š š š ї ї ї ї Z ї ї ї ї ї ї ї ї ] ї ї ї ї ї ї [ ї ї ї ї ї ї ї [ ї ї ї [ [ ї Z [ [- ї \M [ Z [ ї ї ї ї Z [ [ ї Z ї ї \ [- ї [ Z ї ї Z ї ї ї ї ї [ ї ї ї ї ї ї ї ] ї ї ї ї ї [ ї [- ї ї ] ї ї ї [} ї ї ї ї [-�C( ї ї ї ї [ ї ї    ї ї ї [ [ ї ї ї ї ї ї ї ї ї ї ї ї ї ї! ї ї ї ї Z"% ї# ї$ ї \& ї' [ Z ї)3* ї+/ ї,- ї. \ ї [0 ї ї12 ї \ ї49 ї56 \m ї7 ї8 ї [ :?; ї ї<=> \ ї ї [ ї@A d їB ї [DcEM їF їG їHIK їJ ї Z їL ^L їNWOS їPQ ї їR ї ]m \ TU ї ZV [ їX_Y\ їZ ї[ ї ]=] ї^ ї [ ї ї` їab ї ] їdvemfjg ї їh їi ї \k ї їl ї [nr їo їp їq ї ] їs [tu Z ї [w{x ї їy їz ї [ |} ї~ ї ї [ ї ї [ ї ї ї d ї ї [-   ї E] [= E] [ Z ]= E] \ b b \M \ \ \M b \ b \ b \M \ \ \M \ ї ї ї ї ї [ ї ї ї ї \ d [ ї [= [- ]= [ [} [ ї ї [ ї ї Z \ [  ї ї \M ї ї ї ї [- ї Z ї ї ї ї [ ї ] ї [ ї Z ї ї [- ї ї ї [ [  ї d Z d [ ї Z ^< ї ї ;8 Z ї ї ї f ї ї [ [ ї Z [ ї [ Z ї Z ї ҉  ї ї�  \M   ї bV ї bV ї ї ї ї  ї ї ї  ї ї ї ї ] їV+ O ; O! O O ; O ; O"'#%$ ; & O + () ; * O ; ",7-2 O. O/ O01 ; 3 ; O3 O45 O6 ; O8D9?:<; O ; = O> ;8 ; ;8 O@ ABC ; : O EMF OGJHI O O IKL O " O "NR OOPQ ; O OS OTU 3 O X OWqX^Y OZ O[\ B r] ; _i`cab O O de O ; Ofgh O :jn Okl O m ; ;8op ; 3 O r~sv Ot Ou O ;wzxy ; O ; O{| ; O} O ;  O O ;8 ; ;8 O  ; O ; O O O 3 ; X 3 O O ; O 3 ; O O O  O ; ) O O O O ; O ; O 3 c O O   O 3 O ;8 ; ;8 O { 3 7 O ;8 ;8 ;  ; 3 $  O O O O ; O O  O O O ; O O g B O c O ; ; O O O O O $ O O 3 ; O ;8 ; ;8 O v  ;8  ; ;8  $ $ 3 O I � 3 3 3 ; O O ; 3 B  ї \M ]m [ Z ї ї ї ї ї Z [ Z [ d ї \ ї ї \M ї ї ї Z Z H!0"(# ї$ ї% ї& ї' ї ] ї ї) ї* ї+, ї- ї ї./ ї  ї192 ї ї34 ї ї56 ї ї7 ї8 l ї: [;G<B= š š> š?@A š š C šD šE šF š š \M ZItJgKdL їMUN їOR їP їQ ї ]S ї їT [ Z їV E]W E]XY E] E]Z E][\ E]] E] E]^_ E]`b E]a ߼ E]c E] ߼ E] їe їf \ ^<hoin їjkm Zl ]m [ [- ї [ pq ї [rs [ [ [ ї їu їv їw їx b їz{|} ї~ ї  ]m E ї H ї \m E] [ [ ^| ї ]= ї [ Z [ ї [- ї ї ї ї ї ї ї ї ї ї l ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї  ї m4 m4 ї \ [ [ [ [ ї ї [- ї ї d [} d Z [ ї Z [= [ [- d ї  [ ї [ Z [ ї [- Z Z Z ]} Z [ d [ [ ї ї ]m ї E] ї ї [- Z \ Z d [ ї [ [ Z Z d Z Z ї [ d Z ї [ Z Z ї [ [ d [ Z Z Z [- d [� d [ \ [ Z ^\ [- ї   [ [ \ [  ]= Z [ Z \ \ [ ї [ [ Z ^< Z ] ї [ [- d їC-( " ї! ї [ ї# [ $% [ [ & [ ' [ )+ [* [- Z ї, ї \.8/201 [ ї [- [ [3 ї456 \M [7 d \ d9? [-:;=< ї [ \ ї> [- \ ї@A [ їB ї ZDrE\FUG \M \HIOJLK d Z [MN [ [ Z їPSQR [ ї d [T ї [ ZVXW [ ї [ [-YZ[ [} [ [- [=]n^k_` [- їab [ ;8 \}cd de d df dgh d di dj d \= їl їm ї Z [=opq ї ] [ ]mstv їu ї [w [xy~z b{| ї b b} [ b ї [ b ї [ [ [ ї [ ї [ ї ї [ ї [ їC ї d [ ] [ _< ] [- [ \ \} \M _ ;8 [- [ [ \ Z \= _ ^< [- d Z d [ \ d [ d [ d \ d [} d [ d ]} d _\ d ^ d Z d [- \m d [- d \ d ^L d \ d [ d d d ]} d [ d [} d d \ d ^< d ї ї \= _\ [ ї \M ї [ \m Z [- Z \ їJ: š ї ї be š  ї  ї be ' ї be ї  ї be '�  ї ї be   be ї Y  be š be   š be ї be ї , be be  š be be ї be ї F be š ї &!$"# be  š be% (  be') š( be *+ be ї ї -8.4/10 š be23 be ' š5 be67 I ,9 ї be ї;D<A š=> be? k š@ š BB šC š š šE šF šGH beI be be KLpM`NVOSP їQR š be  beT ї šU š beWZ XY ї ց be[^\] ї š be  ї_ ї beahbd šc š ( šefg š ( ( šik Fj  Fln šm š Ao š  šqr|sytwuv š be їx be be \ їz{ Y ї be}~  š  be ї be I I % ї be š Y be be (   _ š be be be be be be be be be  be š š š ( š š š š  be š } š be  be  š be ї be be š Y , š š t š ї be š  be ї 8 ї š š be ' ї be be ї ї be ї be š  be ї Y be  be be ї h ї š be  be be be be Y be ї  be š ї be  be š be  be be  š 8 š š ł be š be š š š ~� be  ї š š be. ї  be ї be be ї be ї be be ї be š be be ї be š be be  be$"! be be bV  be # be be ї%*&( h' be š) š h <u be+, š- 8 ' š/<0615 š2 š3 š4 š7 š š89 š:; ( š k š š=> š?B @ šA š = DEFGHrI_JTKPLN їM š ї їO ї šQR š ї šS š їU[VXW ї ї šYZ š ї š ї\] š ї ї^ š ї`haebd їc š ї ї šf ї їg ї šimjl šk š ї ї šnpo ї ї šq ї š їst}uzvx їw š ї їy š ї{ ї ї| ї š~ ї ї š š ї ї š ї ї š ї ї ї ї š ї š ї ї š ї ї š ї š ї ї ї š ї š ї ї š š ї š ї ї ї š š ї ї š ї ї š ї ї š ї š ї ї š š ї ї ї š š ї š ї š ї š ї ї š ї ї ї š ї ї š ї ї š š ї š š š ї ї š ї ї š š ї ї š ї ї š ї ї ї ї š ї š š ї ї ==� ї š š ї š ї š š ї ї š ї š ї ї š ї š ї š ї  ї š š ї  š ї š ї  š ї š ї ї  ї š ї š ї ї š, ї ї š ї š ї ї š ї ї š %!" š ї#$ š ї ї š&)'( š ї š ї*+ š ї š ї-3 ї./1 ї0 ї š2 š ї š4:5867 š ї š ї ї9 š ї; ї ї< ї š>c?P@JAD їB їC ї šEGF ї š їHI ї š š їKML ї ї šN їO ї š їQZRWSU їT ї š їV š ї їXY š ї š[_\] š ї ї^ ї š` їab š ї š їdwelfig ї їh š їj їk ї š їmrnpo ї š ї їq ї šsu їt ї šv ї ї šxy} їz{| š ї ї š~ š ї ї š ї š ї ї ї š ї š ї š š ї ї š ї' ї ї ї š ї ї š ї š š š ї ї š ї ї ї š ї š ї š ї ї š ї š ї š ї ї š ї ї ї š ї ї š ї š ї ї š š ї ї š ї š ї š ї ї š ї š š ї ї š ї ї š ї ї š ї ї š š ї ї ї š š ї š ї ї š ї ї ї š ї ї ї š ї š ї ї ї š ї š ї š ї š ї ї ї š ї š ї š ї� ї š ї ї ї š š ї š  ї ї š ї ї š ї ї ї š ї š ї š š ї ї ї š!  ї š š ї š ї š ї"% ї#$ š ї š& ї š ї(z)P*B+5,0 ї-./ r š ї š132 ї š ї ї4 š ї6<7:89 ї š ї š ї; ї š=@>? š ї š ї їA š їCH їDEF š їG ї š їIL їJ їK š їMON ї š ї ї šQfR]SYTV šU š їWX š ї ї šZ[ ї š\ ї ї š^c_a ї` ї š їb š їd їe ї ї šgphki ї їj š їln šm ї šo ї š їqvrt їs ї š їu š їwy їx š ї ї š{|}~ ї ї š š ї š ї š ї ї ї š ї ї ї š ї ї š ї š ї ї š ї ї ї š ї ї ї š ї š ї š ї š ї ї ї š ї š ї ї š ї ї š ї ї š ї ї š ї š ї š ї š š ї ї š ї ї š ї š ї ї ї š š š ї ї ї C] d d [- d Z d \ d [ d ї d Z d d Z d ]} d _\ d ^ d Z d \m d [- [- d ^L d \ d [ d d d ]} d d [} d Z d ї Z d d ]= d� d ^< d   ї d [- [  ї ї Z ї ї ї [} [ ;8 š ;8 ;8 ;8 O \ [ ї ї ]= ]= ]= ]= ]= ]= ]= ]= ]=! ]="i#F$5%-& ]=' ]=( ]=) ]=* ]=+ ]=, ]= ]=. ]=/ ]=0 ]=1 ]=2 ]=3 ]=4 ]= ]=6>7 ]=8 ]=9 ]=: ]=; ]=< ]== ]= ]=? ]=@ ]=A ]=B ]=C ]=D ]=E ]= ]=GXHPI ]=J ]=K ]=L ]=M ]=N ]=O ]= ]=Q ]=R ]=S ]=T ]=U ]=V ]=W ]= ]=YaZ ]=[ ]=\ ]=] ]=^ ]=_ ]=` ]= ]=b ]=c ]=d ]=e ]=f ]=g ]=h ]= ]=jk|ltm ]=n ]=o ]=p ]=q ]=r ]=s ]= ]=u ]=v ]=w ]=x ]=y ]=z ]={ ]= ]=}~ ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= ]= Z ]= Z ї ^ [  [ [ [ [ [ [ [ [  [ [ | | | | | | | |  | | | | | | | | |  |#""N  be \M \} [ ї \M [- ї \M ї \M \M ^ [ [ \M [ ї ї [ [ [ \M C] C] I C] C] F C] ї ї ї ї [  C]  � ї \  \  ї  I I  I  ϛ I    {  I  8  !         bu š be ї  Œ be   be   be be   be  be  be      F   W Œ  " + # ( $ & % { { Œ  ' { be ) * be be  ,  - 7 .  /  0 F 1 F 2 F 3 F 4 F 5 F 6 F F  9 < : ; š ї = E > A  ?  @ be  B  C D Œ š F G be H be  be J ` K R š L  M N P  O Œ Q 3 3 S _ s T U 7 7 V 7 W X 7 Y 7 Z 7 [ 7 \ 7 ] 7 ^ 7  7 y š a l b c  d g e be be f Œ h j X i X  k > m t n q o ' p '  r š š s H š Œ u v y w x    z  |  }  ~    š š be  be š be š    š be be š š '   š  š š be š š š be be ї  š     ї   T   k Ʒ <u       G =  Z 7 ї r    i Z    ï ї H ! !#            ї š  ї ї ї ї ї ї ї Z ї  i r     3 =   ї <u y      K ! }   bV  š be    be š be š  be š š be  be   be š be ' be ї     be ' š be š be    be š be š be be H !        ї k bu  ї Z     r   be be  ! ! !� ` ֞ be X !! K be : be!!!! ї š be! ! be š be š! !! !!! be! be š! be be š!!!! š be š be be! š be!!!! be! be 8! be ї be!!! 0! 0 B!" be be š!$!W!%!@!&!3!'!-!(!* be!) be !+!, be  Z!.!1!/!0  @ P be!2 be ї be!4!:!5!8!6!7 be ֞ be X be!9 : T!;!>!<!= be  be š š!? š be!A!L!B!G!C!E!D be be š!F bV bV ї!H!K!I!J A A < }!M!R!N!P!O ! ! Q 5!Q 5 be!S!U be!T š be be!V š be!X!t!Y!g!Z!`![!] be!\ be k!^!_ Dz  ї!a!d!b!c 8 be!e!f be `!h!n!i!k!j Z Z n!l!m Ʒ ! } !o!q!p š bV !r!s š be š be!u!}!v!z be!w!x!y š be š be be!{!| be š be!~!!!!! be ' ' be! be š!! be š!! be š ї š!!!!!!!!!!!! š! š be!! š be ї be be!! š š be!!! š!! ' be be š!! š! š be! be š be!! be!!!!!  bV }!! ! Ʒ <u!!!!!! ї !! 3 ї !!!! i Z !! ï H!!!!!!! be! be be š!! be! be š!! š be '!!!!! be be be! š be be! be š!!!!!!! š be š be š!!!!  bV  }!! k [ <u!!!!!! ї =!! Z 3  !!!! ї!! ї! ї! ї! ї! ї! ї! ї ї ї Z!! bu k ї!"!"!! be!!! be! š be!! š be ' !"!!! be š"� be be š"" be" be š"" be š š be"" be" " " " " bV  }"" ! [ be """""" � G ї "" Z 3 r"""" ї Z""  ï K" "5"!")"""'"#"% š"$ be š"& be be š be"( š '"*"0"+".","- ' be š be be"/ š be"1"3 be"2 š be"4 be š be"6"A"7"<"8": be"9 be š š"; be š"="@">"?  bV  } š be"B"I"C"F"D"E ї š ї ="G"H Z be š be"J"L"K be ї "M be be š"O""P""Q"m"R"i"S"Z"T"U ї Z"V \m"W Z"X Z Z"Y Z [-"["\ [ \m }"]"^ [ ["_"` ["a [ [ "b [ "c [ "d [ "e [ "f [ "g [ "h [ [ ]="j"k"l [}  [- ]="n"|"o"{"p [ "q"z"r"w"s"v"t"u [ Z [ Z [ ї"x ["y ^ Z Z [ ї"}""~ [""""""" Z Z [""  Z [ Z"" Z Z" Z""" Z \ Z \"""" [= Z""  [ [ ["" Z""" \M Z Z"" Z" Z" Z \ Z"" ^L [ [- Z""" Z"" _" _" _ _ _" _ """ ї Z" \M" \M"" \M" \M" \M" \M \M" Z \M Z [" [ Z"""" Z" [" [" [" [ [ \ Z""" ї [ ]" ї [ Z" ]="""" "" [ Z ї \M" _\ Z"" Z Z" Z  ї""#n"#X" ]="# "#""""" \ " [" ї d š ї Z [""""" b"" b b" b"" b" b b" [ b""" b" b b"" b" b b" [ b"" b"" b" b b"" b b" [ b b" b"" b b" b ["#" b b" b"" b b#� b# b [## # [# [# [ [## [# [ [ [# [# [# #### [# [# [ [ [# [# [ [# [ [ [# [# [## [ [ [# ї## Z \M \M# \M \]#!#4#"#(###&#$#% Z ї ї Z [#' ї [#)#1#*#.#+ [#,#- ^| [ [- \#/ ї ї#0 ї [#2#3 \ [ [ [ #5#E#6#=#7#9 ї#8 \ d [#:#;#< [ ї Z [#>#B [#?#@#A [ \M [ ї#C#D [} [- ^\ Z#F#L#G#J#H#I Z [ [ ї#K ї Z [-#M#R#N#O Z Z#P#Q [ Z Z [-#S#U [#T ї [#V#W Z [ [ [#Y#^ Z#Z Z#[ Z#\ Z#] Z ш Z#_ Z#` Z#a Z#b#c ш#d Z Z#e Z#f Z#g Z#h Z#i Z#j Z#k#l Z Z#m  Z#o#{#p Z#q#w#r#v [#s#t#u ї be be ї [ Z#x#y [ ї#z [ [ \ [#|#}##~########### \M [ [= _<## [ [- [- Z## ї# ^\ [# ї \ [#### Z# [ [# ї [ Z#### ] \ [ \ # ї [} [=# ї###### \ \ ] [## _< ] _ \=#### \} [ \ ;8## Z _ [ ^< ї# ї [#### ї# ] [ Z ]= ї# ї# \# ї## Z _\ Z#### [# [# [# [# [# [# [# [## [ [#  [ [# [# [## [ [# [## [# [# [# [ [ #&#%`#$# ї#$<#$ ######## be# š be# ї š be## š# be š be# ## # # # # # # š ### be be# š be be# š be####### š be š# be be š####  bV }## be [ <u#$#$$�$  G ` $$ 7  8$$ $$ be$ $  be k H$ $"$$$$$$ š be$ be $$$ be : be$$ š be be '$$ be$ be$ š be$$!$$ be š be š š be$#$.$$$'$% be$& be š be$($+$)$*  bV $,$- , be $/$6$0$3$1$2  G J $4$5 be 3 be 8$7$9$8 be $:$; bu  be$=$m$>$Q$?$I$@$D$A be$B$C š be be š$E$H$F$G š be be š be '$J$O$K$M$L be š be$N š be be$P š be$R$^$S$W$T$V be$U be š š be$X$[$Y$Z  bV $\$] k Ʒ y $_$f$`$c$a$b � $d$e ї 7 ї be$g$j$h$i Z be$k$l  ї be$n$$o${$p$v$q$t$r$s be , > m$u be , be$w$y$x be be š be$z '$|$$}$$~$ ' be be š be$ be š$$$$ š be be š be$ š be$$ be$$$$$  be be :$$  Ʒ be$$$$$$ � G $$ 7  8$$$$ ї be$$ bu ї$%Z$%$$$$$$$$$$ be$ Z$$ i r ї$$$$ 7 ї = $$ G ї <u ї$$ ї$$ be ї $ be$ be š be$$$$$$ be$ š be$ be be š be$$$ ї š ї $$$$$ be ї š be $$ š$$ š be be ї$$$$$$$$$ ї ї ї$ ї$$$ ї ї$$ ї = $$$$ ї$ <u ї$$ Ʒ k $$$$   š be$ be be š$$$$$$$$ š be be š$$ be š š be$ be$$ š be š be$$$$$$ š ї ' $ š be š be$%�% š be be š%%3%%%%%% %% be ї% % ï ї Z ї% %% ї ї%% ї = ї%%%%%% ї  ї y ї% ї%% ї be be% š be%%)%%#%%! be% š be be%" be š%$%'%%%& be š be š be%( be š%*%.%+ be%,%- š ї ' ї%/%1%0 be be š%2 be š be%4%E%5%@%6%9%7 ї be%8 ї %:%=%;%< ї i r %>%? 7 ї ї%A%B%D%C be  ї š be%F%M%G%K be%H%I%J š be be š be%L be š%N%T%O%R%P%Q be ї ' %S š %U%X%V%W š be be %Y ƨ%[ ї%\ ї%] ї%^%_ k %a&P%b&"%c%%d%%e%~%f%q%g%m%h%j be%i ї%k%l ї i r ї%n ї%o%p 7 ї ї%r%y%s%v%t%u ї k ї %w%x ї š be%z%| š%{ be š be%} be š%%%%% be be% š be%% be% be š%% ї be %%%%%% be š be š% be š%% be% be š%% š be be H%%%%% ї%%% ї ї ï ї% ї Z%%%%% ї G ї% ї ї k%% ї be š be%%%%%%% be be š% be be š%% be% be š be% be š%%%%%% be ї be ї% be š be%%% be be š% be be š%%%%%%%%%% be% H ї% ї%%% ї ї i ї% = %% ї% ї% ї %%%%  be š be% be š%%%%% be%% be š š be%% be% be š% š š be%%%%%% be ї be ї% be be š%%%% š be š be%% be š ї %&%%%%%%% ї be ї% ї Z ї% ї% ї %&%&�%% G  <u ї ї& ї &&& be ї & š š be&&& && & & & š be š be&& š be be š&& be& š be& be be š&&&&&& š ' be š&&&& š be š be& &! be š be š&#&0&$&) š&% š&&&'&( š '&* š&+&.&,&- ' be be š&/ š be š&1&?&2&8&3&5 š&4 š g&6&7 š ˘ ƙ&9&<&:&;  _ &=&> k Ʒ y <u&@&I&A&D&B&C  G =&E&F +&G r &H * &J&M&K&L ;8 Z c&N&O  ƙ 6 H&Q&R C] F&S&l&T&e&U&^ š&V&W&Z&X be š&Y be š š&[&\&] be š be ї&_&b&`&a š be  š&c ' š&d š &f&i š&g&h š š be š&j&k š be š&m&w&n&p š&o š be&q&t&r&s  bV  &u&v k Ʒ 5 &x&&y&|&z&{  G =&}&~ c + r&&&& i&&& ł ł ;&& : : Ñ&&  " H& ї&& ї&&& ї [- ї [&&&& ї \}&& ї& Z Z&&&& ї& _\ ї Z ї ї& ї& [ \M&& ї&&&&&&&&& ї& ї [ ;8& I ;8 [ &&& I ;8 [ [ [& ї &&& Z& Z ї ;8& ї& ї& ї ;8 ї&&& ї ї&&& Z \M \} \m ї&&& [ ї&& _L& ;8 ї ї \M&&&& [ Z ї&&&& ї& ї ї&& ї ї& ї&& ї ї& ї&& ї ї&& ї& ї ї& ї& Y ї ]m Z&'&'r&&&& ]= Z Z ]m&'&& ]=& ]=&& ]=& ]=& ]= ]=&& ]= ]= & Z&&&& [&& ^&&& ] & ї ї&& ї& ї& ї&&  ї  ї [ [ [& [ [ && [ [& ]}'�''''' \ [ \ ['' ї' ['' [ [' ' [ [' ' [ [' [ [ [ d'''' ї [ _L ['' [- ї [} [''5'' [- ]= |'''. ї'' ї'')''%' '" \M'! \M Z'#'$ \M Z \] Z'&'' Z \M'( Z \M Z'*'-'+ Z \M', \M Z Z \M \m'/'0'1 ] ['2'4'3 Z \M Z [ ї'6'd'7'Q'8'B ї'9 |': |';'<'?'= | |'> | '@ | |'A  | Z'C ['D ['E'F ['G ['H [ ['I ['J ['K ['L'M [ ['N'O ['P [ i ['R'T \'S ї ;8 \'U'V']'W'Z'X'Y _< [ d Z'['\ [} \ [ ї'^'a'_'` ^\ Z ^\ ['b'c ї ^L [ \'e'h'f'g \ [ Z ;8'i'o'j'k [ ї'l'm [ ї Z'n d [-'p ['q I [ ['s'|'t ї'u Z'v Z'w Z Z'x Z'y Z'z'{ Z Z y Z'}'~' ї [-' [ [' [}' ] ї'''' Z ]m'''' [' [''''' Z [ ї' \ ' \ ' \ ' \ ' \ ' \ '  \ ї Z [='''' \ ^l''' _L [' ї [ ^\''' 3@ ї'' [' ї' Z [} [ [-''''' [' [' [' [' [ ['' [ [' [ \}' \ \' \' ]- \' Z'''''' [= [ ^L Z' [= ] [ '' ї' [ ї'' \ ї [- Z'('' \M' ї' ]='''' \= _ ]'''''' ] \= ї Z ї' Z \M'''''' \ ї ^L ] '' O [ \ Z'''' [ 3@ ї ^'' [ [= _< [}'(o'' Z [' \'(b''' [ ;8 ї'' [''''' [''' [ ' [ [ b [''  [  [''' [' [ '' [   ['(O'(9'((�( [((( [(( [ [(( [ [ [ [( [( [( [( [ \M( ( [(((( [ [( [( [ [ [(( [ [( [ [ [(( [ [(( [ [( [ [(((( [ [( (!(%(" [(# [($ [ [} [(& [ [(' [ [}()(/ [(*(+ [(, [(- [(. [ [ [}(0(5(1 [ [(2(3 [ [(4 \M [ [(6 [(7 [(8 [} [(:(H(;(A(< [ [(=(> [(? [ [(@ [ ҉ [(B [(C(D [(E [ [(F(G [ \M [(I [(J [ [(K [(L(M [ [(N \M [(P(Y(Q(W(R [ [(S [(T [(U(V [ [ [ [(X [ [ [(Z([ [(\ [ [(](^ [(_ [(` [ [(a [ [ ї(c(d(f ї(e \ \}(g(j(h(i [- [ ї Z(k [(l \(m(n  ї  ї(p( ї(q(r(y(s Z Z(t(u Z(v Z(w Z(x Z b Z(z Z Z({ Z(|(} Z(~ Z Z( b Z [((( \ ^< ї [(((((( [( _ [(((((( \=((( ї(((( ї Z ї( ї ї [- ї(( ї( ї( ї( ї( ї( ї( ї e ї ї [(((( ] ї \( ^| \M((( [ [- ї [ [ \ [(( [ ї Z ]=(((( Z \ [-( [ [ (( [(( ]=( [ ( [ [(( [( [( [( [ [(( [( [( [ a [(( Z( ] [(( [ [ (((( \ ї [ \(( ] [ α((( ї [ \= [(5(/(-(*()+(((((( š(((( š š( š( š š ( š( š( ( š š l š( š(( š((( š š( š(( š š( : š š ()((( š(( š(( Em š((( š (( š( š((( š 5 š š()� š) š) š) š) š ҉ š))&))) š) ) š H) š) š) š š)) š) š) š š)) š š) š c))%) š š) :)) : :) :) :) :)) : :) :)! :)" :)# :)$ : š š š)')( š)) š)* = š d),*>)-)). d)/)V)0 )1)7)2 š)3 š š)4 š)5)6 š š D)8)F)9 ( ():); ( ()< ()=)> ()?)C ()@)A)B ( š � H)D ()E ( < )G)P)H)L)I)K ()J < ( )M)N ()O ( ( )Q)S)R š c š š)T)U ( š ()W)~)X)g)Y)^)Z š)[ š)\ š)] š š Em)_)c š)`)a š š)b š š)d)e š š)f š)h)p)i š)j)m š)k š)l cQ š š)n)o š š )q)u)r š)s š)t š š)v)|)w)y)x d š d)z){ š s d š)} š H š))))) š š) š)) š š š)) š š) )  š š)) š)) š))) d š š H) š) š H š))))))))) ) š š š () š š))))) 8)) 8) 8))))) 8)) 8 F 8 ))) 8 8 F 8) 8 ) 8) 8 8) 8 ))))) 8) 8) 8) 8 8 F) 8) 8))) 8 8) 8 F) 8 8) 8))) 8) 8) 8) F 8 F 8)) 8 8) 8)) 8 F 8))) 8 8)) 8) 8) 8 8 F) 8 8)) 8 8) 8 F) š) š) š š)) š))) š) š š) š) š) š :) š š) A š)* )* )) š))))))) š d) š d š) š) š =))) š d) d š)) š š =)* š) š*� š** š * š* š** š š* š* * š* š* š* š** š š*** š š* š* š***** š* š š 8 š** š š š** š š l*!*3*"*(*# š š*$ š*%*& š š*' Em š*) š** š š*+ š*, š*- š*.*/*1 š*0 š *2 š š*4 š š*5 š*6 š*7 š*8 š*9*: š*; š š*< š*= š *?**@*I*A š*B š*C š*D š*E š*F š š*G*H š š š*J*K š*L*S*M š*N š*O*P š <u*Q *R š <u š*T**U*c *V *W *X *Y*Z *[*_ *\ *] *^ 8 *` *a *b 8 *d *e *f*g*v*h*o *i*j *k *l*m *n 8 *p *q *r *s *t *u 8 *w* *x *y *z*{ *|*~ *} 8 * 8 * * * * * * 8 *** * * * ** * * * 8******* ** ** * * * 8 *** * ** 8* * * * 8 * * * 8 * * * * * ** * * * 8 * š**** š** š * š* š** š š* š* š* š* š š * š š** š* š* š* š* š š*+*+**** š ** š** š** š š** 8 š * š* š* š* š* š š >***** š**** š* š* š * š ҉* ҉* ҉* ҉ š**** š** š* š D š* š š* š*  B š** š š š** š š +�+ + š+ š+ š+ š++ + š+ š š+ + š š 8+ + š+ š + š š >++C++: š+++(++++ š+ d+ d + š l+ l+ l+ l š š++ +$+! š+" š š+# š +% š+& š+' š š +)+0+* š š+++,+/ š+- B+. B š B š d+1+2+7+3+4 @' +5 A +6 > š+8 š +9 � š š+;+< š š+= š+>+? š+@ š š+A+B š B š+D++E+^+F+U š+G š+H+I š+J š+K š+L š š+M+N š+O š š+P+Q š š+R+S š+T š š ( š+V+W š+X š+Y+[+Z š š š+\+] š  š+_+q+`+m+a š š+b+c š+d š+e š+f+g +h +i +j +k+l D š+n š+o+p š š ̀ š+r š+s+t B B+u+v B B+w B+x B+y+z B+{ B B+|+} B B+~+ B š B š++ š+ š š++ š š+ š +-u+,+++++ + š+ š+ š+ š <u š+++++++ š+ š+ š++ š d <u+ š Em š++++ š+ š+ š+ š+ š++ š š++ š š �++ š+ š+ š Em+ š š š++++ š t š š++ š = š+ š+++ š++ H+ H š š++ š š 8+ š++++ š+ à š+ š m4 š š+ š+ š +,+++++ š š+ H š š +,%++++++ ++ + + + + + 8 + ++ ++ 8 + 8+ + + ++ + + + ++ 8+,+ +++ + + + + 8++ + 8 +++ + + + + 8 ,� ,, ,, 8,,,, , , , , , , , 8,,, , , 8 8,, 8 8, 8 , , , ,, 8, , , ,! ," ,# ,$ 8,&,k,',I,(,6 ,) ,*,+,0,, ,-,. ,/ 8 ,1 ,2 ,3 ,4,5 8 ,7,8,B,9,? ,:,; ,< ,=,> 8 ,@,A 8,C ,D ,E,F ,G ,H 8 ,J,],K,S ,L ,M ,N ,O ,P,Q ,R 8 ,T ,U,V ,W ,X ,Y ,Z ,[,\ 8 ,^ ,_,d,` ,a ,b ,c 8 ,e ,f ,g,h ,i ,j 8,l,,m,v ,n ,o,p ,q ,r ,s,t ,u 8 ,w, ,x,y, ,z ,{,| ,} ,~ 8 , , , , , ,, 8 ,, 8, , ,, , , , 8,,, ,, , , , , 8,, ,, , , , , 8, , , , , ,, 8 ,,,,, š, š,, š d š,, š ҉ š,,, š,, š, š, š H, š š, š ,,,,,,,, š š Em, š d d š, š , š,,, š,, š, , š, š ս,,,, ս, ս š š, š š,,, š d š,,,,, š, š š, š <u, š, š š, = d,,, š š, š, š š, š, š, š ,-, ,,, š,, š, š, š Z, ,, š, š š , š, š,, š E], š, š-� š- š- š- š- š- š- š- š - -h- -(- -- -- ї--- ї- ї ї-- ї- ї š š- š ї ї- ї- ї- ї š--$ ї---!- ї-- ї š š ї-" š š-# š ї-% š-& š-' š ї-)-G-*-9-+-3-,-/ š---. š š d-0-1-2 š ї [ ї-4-7-5 ї-6 ї ї [-8 ї š ї-:-C-;-> ї-<-= š š ї-?-A š-@ ї š-B ї š ї-D ї ї-E ї-F š ї-H-V-I-L ї-J-K ї š ї-M-P-N ї-O ї š-Q-S š-R š ї-T-U ї š š ї-W-a-X-]-Y-[-Z ї š ї ї-\ š ї-^ š-_-` ї š ї š-b-e š-c š-d š ї ї-f ї-g ї š-i-p-j š-k-o š-l E]-m-n ƨ E] š š š-q š-r-s š-t š š -v--w--x--y -z š-{- š-| Em-}-~ š Em š š- š- G- š--- š š- š-- š š - š š- š- - š- š- š---- E š š- š H-- š H š š-- š----- š š -- š- š- š- š- š-- š-- š- š š- š- š- š š- š-- š- š- š- š - š----- š Em š- š š š- š- š -.-.I---- š- š- š-- š š- š-- š- š- š š- š-- š- š š-- š š-- š š-- š-- š- š š-- š š B- š š- š- š- š-- š š-- š- š- š- š- š- š-- š-- š B š š-- š B š- š-.=--- š---- š- š š š -.-.-.� š- š- š- š- š . . ... š . š .. . . . . š. š.... š š. š ..).. . . . š.. ... . š š.!.&.".$.# E .% š.' .( š .*.2 š.+.,./.- .. š .0.1 š š.3.4.7.5 š.6 š š.8.: š.9 š .;.< š š.> š.? š.@ š š.A.B š.C š š.D.E š.F š š.G š.H .J.i.K.\.L š.M.U š.N.O š š.P.Q š.R š.S š.T š š D.V š.W š.X š.Y š.Z.[ š H š.].e.^ š._ .` š.a š.b š š.c š.d š š.f.g š š.h š :.j š.k. š.l.m.w.n.t.o š.p š š.q .r .s š.u š š.v š ̀.x..y..z. š.{ š.|.}.~ š š :. š. š. š š š. š. š. š... š. š š. š. š . š š ... š... š. š. š š.. š 8. š. ... š. š š D š š . š./i./"............. . š .. . . š .. š . . . . š. . š..... .. . . F. . F .. . .. š . 8 .. ... . š . š. š .. š. š ... š... š š. š. š. š ... š š. š. H š. š š.. š Em š š... š.. š. š. š . š š. š.. š š .... š. š . š š. š. š ./ .//� š š/ š/ š / š/ š/ š š// š š/ // // / š/ š// š š / š š// š  š/ š š/// š/ š/ š š / š š/ š/// š /!  š/#/G/$/A š/%/& š/' š/(/) š/*/5/+ /, /- /.// /0 /1 /2/3 /4 8 /6/@/7 /8 /9 /: /;/< /= /> /? 8 8 /B š/C š/D š š/E š/F š /H /I/W/J š š/K/L š š/M/N š š/O š/P/Q/T š/R š/S š/U š/V š š/X/^ š/Y/Z š š/[ š/\ š/] š/_/f š/` š/a/b/d š/c š /e š š /g š/h š š/j š/k š š/l/m/} š/n/o/s/p š š/q c/r D š /t/u/x /v/w /y/{/z s א/| V š/~/ š š/ š/ š// š š /3/1:/0// š/// š/// š// š// // š// š š / š / š///// š š/ š// š  š/ š//// š / š š š/ š/ š/// š š/ š/ š/ > š/ š/ š// š/ š š/ š ///// š/ š š/ š/ š // š// š š// š š/ š / š š/ š// š š/ š // š//// š š// š/ š š// š// š š/ š // š/ š š/// 5 š Em š////// š// š// š   š š// š/ š š/// š š/ š/ / š š// š š ///// š/ š š š// š/ š š/ š š/ š// š š0�00 š0000 0 š š000 š0 š 0 š š0 š0 š � š0 š0 š0 š0 š0 š0 š š00 š0 š š00 š0 š š0 š0090 r00)0 š0 0$0! š0" š š0# > š š0% 0& 0' 0( š0* š0+040,000- š š0. š0/ š01 š š02 š03 š š0506 š š07 š08 Em š =0:0; š0< š š0=0>0k0?0M0@0B š0A š 0C0L0D š0E š0F š0G š0H š0I š0J š0K š 5 š š 0N0a0O0X0P š0Q š0R š0S š0T š0U š0V š0W š 5 š0Y š0Z š0[ š0\ š0] š0^ š0_ š0` š : š0b š0c <0d š0e š0f š0g š0h š0i š0j š : š0l0s0m0p0n0o A k 50q0r > H 50t00u0~0v š0w š0x š0y š0z š0{ š0| š0} š š A š0 0 0 0 0 0 00 0 š0000000 š00 š0 š00 š š00 š0 š š00 š š00 š š0 š00 š0 š š0 š00 š š0000 š0 š000000 š 00 š 00 š 0 00 0 0 c 0 š 00 š š0 š š00 š000 š0 š xg š0 š š000 š š000 š000 š0 š0 š0 š000 š00 š   š š00 š š =000 š0 š 0 = š0 š00 š0 š0 š š0 š0 š š0 š0000 š0 š0 š š00 š m š0 š š0 š00 š0 š0 š0 š š0 š0 š00 š š0 š01010 š01�0 š0 š š0 š0 š0 D š1 š1 š1 š š1 š11 š1 š1 š1 š1 š1 š1 š š1 B š1 š š11 š1 š š1 š 11)11%111 š111 š š1 š1 š š1 š 1 š š1!1" 8 81#1$ 8 81& š š1' š1( š š1*1+191,11 š1-1. š1/ š10 š š D š12131614 š š15 : š š1718 š š B š 1;21<21=11>11?1S1@1G1A š1B š1C š1D š 1E1F š  š1H š1I1N1J š š1K1L š1M š Em š š1O š1P š1Q š1R š 1T1d1U1[1V 1W 1X 1Y 1Z š 1\ 1]1^ 1_1b1`1a š š 1c š1e1q1f1k1g1i1h š š1j š 1l 1m1p 1n1o š š š 1r1w1s 1t1u š1v š 1x1~1y1z š 1{1|1} š š11 1 š 1 1 š1111111 1 111 1 š 11 š 1 11 1 š111 š1 1 š1 š1 š1 š1 š š1 š1 š 11 š š1 š 111 š 111111 š 1 š 1 1 š 1 1 1 š1111111 1 1 1 1 š 1 11 11 š 1 111 š š1111 1 111 š1 š 11 š11 š1 š š11 š111 1 1 š 81 1 š 1 1 1 1 š11 1 1 11 1 1 1 1  1111 111 1 1 1 š 1 1 1 1 š 12121 š1 š2� š2 š š2 š2 š2 2 š 2 š2 š2 2 2 š 2 š22t2 š22A22:22)22$22!2 2 2 š22 2 2 2 2 2 2 8 2" 2# š2% š2&2' š2( š2*2. 2+ 2, 2- š2/23 2021 š22 š š2426 š25 š 2728 š š29 š 2;2< 2= 2> 2? 2@ š 2B2T2C2P2D2K2E 2F 2G2I2H š 2J š 2L 2M 2N2O š š 2Q2R 2S š 2U2b2V2[2W 2X 2Y 2Z š 2\2_ 2] 2^ š 2` 2a š 2c2j2d2g2e 2f š2h 2i š 2k2p2l2n 2m š š2o š 2q 2r 2s š š2u š2v2w22x2z2y š š Em2{2| � š2} š2~ š š 2 š2 š š222 š2 š2 š :2 š222 > >2 >22 >222 >2 > >2  >2 >2 > > B š >23e23222222222 š š22 š2 š š2 š22 š2 š š22 š š22 š2 š B š22 š22 š22 š 2 š : š2 š2222 š (22 :  š22 š2 š2 š2 š2 š2 š (22 š2 š2 š2 š2 š 2 š22 š2 š2 š š2 š2 š2 š2 š2 š š2 š 2222 š2222 š2 š š22 š š > š22 š š 222 š š2 š22 š š2 š 22222 š2 š2 š2 š2 š2 š2 š2 š2 š2 š2 š š B š22 š š2 š2 š š222 š2 š 2 š š 23 3� š3 š333 š š3 š3 š 3 š3 š š3 š š3 3 3 š3 š33 š š3 š 333 š3 š š š3 š3 š3 š 33@33. š333(3 š33# š3 š3! š3" š3$3& š3% š >3' š > š3) š3* š3+ š3, š š3- š 3/393036 š31 832 š33 83435 š š š37 š38 š š3:3; š3< š3= š š3> š3? š 3A3]3B3L3C š š3D3E3I3F š š3G3H š š B3J š š3K � š3M3S š3N3O š š3P3Q š š3R š3T3Y š3U3V š š3W š3X š š3Z š3[ š3\ š š3^ š3_ š3`3a š3b š3c š3d š š 3f33g33h3}3i3m3j š3k š3l š � š3n3t š3o3p š3q š3r š3s š š H š3u3v š3w3z š3x š3y š (3{ š š3| š B3~33 š3 š š3 š3 š š33 š š3 š33 š3 š š 33 š3 š3 š33 š š33 š š3 š š33 š š33 š š33 š š3 š š33 š333 š3 š3 š š3 š33 š š Em3 š3 š3 š š33 š E] š3434,33 š3 š3 š33 š333 š3 š3 š š3 š3 š š3 š3 š3 š (33333 š333 3333 33 š  š š3 š 3 š3 š3 š3 š š3 š3 š3 š3 š 3 š š3 š3 š33 š3 š š 33 š33 š3 š3 š3 š3 š š3 š333 š3 š š3 š3 š33 š3 š š33 š3 š š3 š33 š š3 š @7 š3 š33 š š33 š š3 š 3434 3 š š33 š3 š4�4 š4 š4 š E]4444 E] š š c š4 : š4 š4 š4 š4 š š4 š4 4 š44' š4444 š š4 š4 š4 š 44"4 š44 š44 š š 4 š 4!  š š4#4$ š š4%4& š š 4( š4) š4* š š4+ š4-4}4.4s4/4k40 š414E424?43 š š44 š4546 š š47 š4849 š š4:4; š4< š4= š š4> B š š4@4A š š4B4C š4D š , š4F4_4G4T š4H š4I4J š š4K4L š4M 4N 4O 4P 4Q 4R 4S  š 4U š š4V4W š š4X š4Y4Z š š4[ š4\ š4] š4^ D š4`4e š4a4b š4c š4d š š � š4f4g š4h š4i4j B š š B š4l4m š š4n š4o š4p4q ( š4r š (4t š4u š4v š4w š4x š4y š4z š š4{ š4| š 4~ š4 š š444 š4 š4 š44 š š š4 š4 š4 44 š4 š  š4444 š4444 š4 š š44 š š4 š44 š š4 + š444 š š4 š4 š4444 š44 š š4444 š š4 š š4 š4 š4 š4 š š4 š44 š š4 š44444 š4 š š444 š444 š4 š 44 ? A š44 š444  > 4 š4 š : š44 š4 š š4 š4 š44 š4 š4 š š4 š4 š44 š š š4444 44444 4 4 š 444 4 š 4 š š44 4 š44444 4 4 š4 š š 44 4 š444 4 4 š 4 4 4 4 š455�55 š55 š55 5 555 55 5 5  o5 T T5 5  U�  U�5 o5555 U�  o  5  T š5 š55 š š55 š5 š š5 š 55k55-5 š5!5+5"5&5# š š5$5% š š = š5'5( š š5) š5* š5, š E] š5.5V5/51 š50 š 525U53 š545E555<56 857 858 859 85: 8 F5; 8 F 85=5>5A 85?5@ 8 8 iu5B 8 85C5D 8 8 F5F 85G 85H5M5I 8 85J 85K 85L 8 5N 85O5R5P 8 85Q  F5S 8 85T 8  E] 5W5e5X5]5Y š š5Z5[ š š5\ š E]5^5b5_ š5` š5a š G š5c š5d š š š5f š5g š5h š5i š5j š E]5l š5m5u5n š5o5r š5p š5q š 5s š š5t š š5v5w5| š5x š5y š5z š5{ š 5} š5~ š š555 š G G š55 š5 š55 š55 š5 š 5 š š555 š55 š5 š5 š5 š5 š5 š š55 š š5 š555 š5 š5 ʗ5 ʗ5 ʗ ʗ5 EM ʗ š555 š55 š555 š 5 š55 855 8 8 855 855555 š5 š š5 š5 š š55 š š 5 š5 š š5555 š š Em š555 š5 š5 Em š5 š555 š5 š5 š5 š š55 š5 š5 š55 š5 š 55 > : 55 š555 š55 > š5 š š š5555 š š5 š +5 š š5 š5;5857+5656I5655 š5 š55 š5 š š5 š5 B5 B š š5 š5 š5 š55 š5 š š55 š š55 š5 š5 š6� š6 š š66 š 5a š666 š š6666 6 š6 6 š6 š6 š š š6 š6 š6 š6 š š6 š6 š6 š6 š6 š š666466( š6 š666$6 6"6! š š c š6# š (6% š6&6' H : c6)626*6.6+ š š6, š6- Em  š6/60 š š61  š š63 G š656B666;6769 š68 š6: š 6<6> š6= E] š š6?6@ š6A š š6C6G š6D6E6F E] š š6H š š 6J6k6K6W š6L6M š6N š6O6R š6P6Q š š6S š6T6U š6V d š 6X š6Y6e6Z6_6[ š š6\ š6]6^ š d6` š š6a6b š š6c6d š š š6f š6g š6h š6i š6j š Em š6l š6m6n6}6o6t6p š š6q š6r6s š š Em6u š6v6y š6w6x š š Em 6z6{ š6| d š š6~66 š66 š Em š6 š6 š 6666666 š6666 š6 š6 š66 š - š6 š66 š š6666666 š š š6 š š66 š š š6 š666 š š š6666666 š6 š6 š š6 š66 š d66 š6 š6 š 6 š6 8 š6 š6 > š6666 š6 š6 Em š6 š 6 š 66 š66 š š6 š6666 š š 6 š š 6 š6 š66666 š66 š š 6666 š Es š =6 š š 6 š š6 š6 š67 66666 š666666 š6 š d6 š š6 š š66 š6 š6 š6 š6 š š666 š66 š š6 < š6 š6 š š Em67 š6676 š67� š6 š š77 š š7 š E] š77 š7 š77 7 š š7 š7 š77 š7 š 7 š7 š7 š š7 š > š77 š77!777 š7 š7 Em š Em7 š š7 š7 š Em7"7% š7# š7$ š š7& š7'7( š š7)7* š š 7,8$7-77.7g7/7H š70717B š72737=747875 š š7677 š +  š797:7<7; š š š š7>7? š 7@ š7A Em > š7C š7D7E š7F š š7G š Em7I š7J7c7K7S7L š7M š š7N7O7R7P7Q š = š š7T7]7U7Y7V 7W š7X š 7Z š7[ š 7\ š7^ š7_7a7` š 7b š š š7d š7e š7f š 7h77i š7j7t7k7p7l š7m š š7n7o š š Em š7q š7r š7s š š7u7v7z š7w š7x š7y š š7{ š7|7} š7~ š š 7 š77777 š š7 š77 š š Em š77 š š777 š š7 š7 š7 š Em777 š7 š E77 7 E7 E7 E E7 E7 E7 E7 E7 $ E7 š š77 š :777777 r7 r77 r7 r r7 r777 4 r 4 r r7 r77 r r7 r77 r7 r r 8777 š7 š7 š7 š š7 š 777777777 š7 š7 š 7 š7 š š7 77 š7 š77 š š š7 š7 š7 š š77 š7 š 77777 7 š 7 š777 š7 š77 š7 š d š š77777 š7 š  7 7 š š77877 š7 š7 š777 š7 š7 d d7 d77 d d7 d E78 š7 š7 š8� š š8 š8 š8888 š888 8 š š8 š8 Em š8 G š8 š8 š8 š 888 š š88 š š8 š8 A š88!8 š8 š888 š š 8 : š š8"8# š š8%8d8&8b8' š8(8U8)8>8*848+8/8, š š8- š8. š Em š80 š81 š8283 š š858886 š87 š š89 š8:8; š 8< š8= š š8?8E š8@8A š š8B8C š8D š 8 š8F8J8G8I š8H š E š 8K8Q8L š8M8O8N š c š8P š 88R š8S š8T š š 8V š8W š8X8]8Y š š8Z š8[ š8\ š š8^8_ š š8` š8a š8c š š 8e8 š8f8g88h8w8i8o8j š8k š š8l š8m8n d š 8p8t š8q8r8s š š š8u8v š š 8x8~8y8| š8z š8{ G š8} š š 888 š8 š8 š 8 8 88 š š8 š8888 š88 š š88 š š Em8 š8 š š8 š 88888 š š š8 š š8888 š š888 š  >8 š š 888 š88888 888 š 88 š 8888 888 d š š88 88 š 8 8 š 8 888 88 8 š 8 8 8 š š8888 š8 š8 š8 š8 š8 š š D8 š8 š8 š š8 š8 š8 � š8:x8989Y8989888 š š88 š8 š š88 š888 š š8 š8 š8 š8 š B B88 88 B š8888 š8 š8 š8 š8 š  š8 š88 š8 š8 š š88 š8 š8 š9� š9 š9 š š D9999 š999 š9 š š9 9 š š š9 š9 š9 š9 š š9 š99 š9 š š99 9 B99*9 š99 š9 š9 š9 š 9!9$ š9" š9# š9% š9&9(9' š š š9) š š9+9,9=9-939. 9/ 90 91 92 š 9499 95 96 9798 E]9: 9;9< š9>9N9?9G9@9C 9A 9B š 9D 9E 9F š 9H9I9K š9J š 9L 9M š 9O9T 89P9Q š9R š9S š š š9U 9V 9W 9X š9Z9y9[9h š9\9] š9^9e š9_9`9c š9a9b š š š9d š E9f š š9g š Em9i š š9j9k š š9l š9m š9n9o š š9p š9q9r š9s š9t š9u š9v š9w š š9x š9z99{99| š9}99~999 š9 š > š99 š š999 š99 š š9 š9 š š9 š9 š š9 š >9 š9 š š99 š š99  99 9 9 9 9  9 š  š9999 š9 š9 š š >9 š9 š š99 >9 š š9 š9 š9 š š9999 š š9 š9 š9 š9 š9 š š9 š9 š99 š9 š š9::99 š9 š999 š999 š99 š š 9 š9 š š999 h <u š h999999 š9 š š 9 š š999 š š9 š9:!9999999 9 9 9 9 š š 9 9 9 9 9 9 š9: 9999999 d99 š 9 š9 9 š 9 9 9 9 š999 š 9 š:�:: : š: š :: : š :: š š : : :: : :: E]: š 8 š: š :: :: š:: š::: š š :: : š : š š:":#:/:$:( š:% š:&:' š š š:) š:* š:+:, š:-:.  š š:0:7:1:3 š:2 š :4 š š:5:6 š š š:8 š:9 š:; š:<:J:=:B š:> š:?:@ š š:A  š š:C:D š:E š:F š š:G:H š š:I š š:K:L:]:M:S:N š:O  š:P:Q š:R š š �:T:Z:U:Y š:V:W E] š:X  š:[:\ š š:^:p š:_:`:b:a š š š:c:d :e:k :f :g:h :i:j 8 8 :l :m :n :o 8 :q:u:r:t >:s š š š:v :w š :y; :z;:{::| š:} š:~:::: š š: š: š : š::: š š š š:: š::: š š : š š:: š::::: š::: š:: š š Em š ::: š š: š š:: š à::: š A š A::::: š š:::  š š :::: š š š: š >: š š:: š š :::: š: š:: š š::::::: š š š: š š: š: š H::: š š š:: š š: š:::::: š: :: š  š š:: w š d š: š :::::: :: š š:::: š  š::::: š :: š Z::: š Z š: š Z ::::::: š d: l :: :  š: š :;�::: š  š š: š s; 7 š; š 7; š š; š;; š; š š; ; š š >; ;m; ;9 š;;; š; š;;; š; š; š; š; š ;; š; š ; š ;;4;;-; š š; š;!;";# š d;$ š E;% E;& E;';( E;) E;* E;+ E E;, N E;.;1;/;0 š š š;2 š;3 š š;5 š;6;7 š;8 š š 8;:;P;; š;<;F;=;@ š;> š;? š E] š;A š;B;C š š;D;E š  š š;G;H;K;I;J š d š ;L;N š;M š;O š š š;Q;R;_;S;X;T š š;U š;V;W š š Em;Y š;Z š;[;^;\ š š;] š Em š;`;d;a š;b š;c š š;e;h š;f š;g š;i;k š;j š š;l E] ;n;;o;x;p š š;q š;r š;s;t š š;u š;v š;w š ;y;;z š;{;;| š;} š;~ š;; š; š š; š š; š;; š š ; š; š; š; š š; š; š Em;;; š; š; š; š; š; š;; š; š š d ;;;;; š;; š š;; š d š;; š;; ; ; ; ; ; ;  š ;;;;; š; š š; š š; š ;;; š; š š ; š š; š >;=z š;;<};<3 š;;;;; š;;;; š; š; š; š; š š ;;; š; š; š; š š š; š; š; š; š; š;; š š;; š š;; š š;<;;; ;;;;; ; ;; š š; š; E; ; ;; š   ;;<;; ; ; ; š ;; ;<;<; š; š; š; š; š<�< š< š < š< š< š< š< š< š< < š< š < š š << < << š < š< < š<<'<<"<< š<<< < 8 š<! š š š<#<$<% š <& š š <( š<)<-<*<,<+ š š <. š </ š<0<1<2 š š <4<P<5 š<6 š<7<D<8 š<9<@<:<= š<;<< š š Em š<><? š š Em<A š š<B<C š š Em<E<H<F š<G š š 8<I<M<J<L<K š Em š š š<N š<O š<Q<T<R š š<S š - š<U<V<k<W<b<X<]<Y <Z <[ <\ š<^<` <_ š š<a š <c<d š<e<h <f<g š<i<j š š<l<w<m<r<n <o<p <q 8 <s <t š<u<v š <x <y <z <{ <| š<~< š<<<<<<<<<<< š< š<< š d š<< š š š<<<< š š 8 š< š š<< š š << š<< š š<< š< š< š š < š<<< š< š< š š<< š< >< >< > ><< > >< >< > š<< š š< š< d < š<<<< š< š<< š š š<<<< š š< š š <<<<< š< š< š š š< š<<<<<<< š w< w ^ š<<< š d š š < š š<< š< š š <=<=<< š<< š< š š<< š š<<< ><<<<< < < < < š <<<<<< š< š<<< š š š < < E <= <<< <<< š< < <=�= = = š== = š= š = š = = = = = š š= š= š==== š= š š= š= š š ==h==A==*==# š===! = š š=" š =$='=% š=& š š š=(=) š š=+=2 š=,=-=0 š=.=/ š š=1 š =3=:=4=6=5 š š Em š=7 š=8=9 B=; š š=< š===>=? š=@ š š =B=S=C=K=D š=E=H=F š =G š š=I=J š š =L=P=M=O š=N š š š=Q=R š E š=T=_=U=Z=V š=W š š=X =Y 8 =[ š=\=^ š=] š š Em=`=c=a š š=b š=d=f š=e š š=g š=i=q=j š=k š š=l=m š š=n š=o=p n > n=r š=s š š=t=u=w š=v š =x š=y š š ={>=|>{=}>=~======= š= š== š š= š== š= š== š== š== š š = š= = š E E==== š= š= == š š= š== š= š š= š= š 8== š== š= E] š š==== š š = š B š š=== š= š= š== š= š š ====== š= š h= š š = š š========== š = = = = = = == š = š š== = = == = = š š š= š E= š= š š == š= š===== š=== š= š A= š A==  š= š= š== š   š= š= š==== š , š= š = š= š š= š = ==> ==>=>� š> š š > š> š >> š>>> š> š š> š š> > š š> š>> > >> >> > š>>U>>C>>!> š> š š> š>> š š Em>"><>#>- š>$>%>) š>& š>'>( š š D š>* š>+ š>, š >.>5>/>3>0 š>1 š š>2  D>4 š š E š>6 š>7>8>:>9 š š>; š š>=>> š š>? š>@ š>A š>B š>D 5>E>N>F>I >G>H š >J >K>L š>M š š>O>R>P >Q š >S>T š Em š>V š>W š>X>q>Y>l>Z>h>[ š>\>] š>^ š š>_>` >a >b >c >d >e >f >g   B>i>k š>j š š>m>n š š>o š>p š>r>v>s š>t š>u š š>w>y š>x š>z š š >|> š>}>~ > >>>>>>> >>> > š > > š > >>>> š > š>> >>> > š > > š > > >> š >> > >> š š>>> š >> š š> š>>> š> š Em š> š š> š>> š š> š> š>> š š >?S>> š>>> š>>>> š š> š> š>> š š>>> š š> š> š> š> š ?>> š>>>> š> š � š> > š > š š> š>> š> š >>>>> š> š> š>>>>> š š � š � š>> š š > š š>> š> š> š> š š>> š> š> š> š> š>>> š š š>>>>> š š> š > š š>> š š <u?� š??R??)?????? ?? š? š ? ? A �  š? ? š? 5p ?? + š?? š?? š c š???? š � � š? š š? š??#??!?? š @'  ?" š š (?$?& š?% š ?'?( c < š ?*?:?+?4?, š?-?1 š?. š?/ š?0 š š?2?3 š š ?5 š š?6 š?7 š?8 š?9 š ?;?H š?<?=?A š?>?? š š?@ š ?B?E š?C š?D š ?F š?G š š?I š?J?N š?K?L š š?M š ?O š?P š š?Q š ?T??U?w?V?h š?W?X?] š?Y š?Z š?[ š?\ š?^ š?_?f?`?e ?a?b š?c?d š B š š ?g š š?i ?j š?k š š?l?m š?n š?o š?p š š?q?r š?s š?t š?u š?v  š ?x??y??z? š?{?|??} š š?~ š š? š? š š?? š? š? š š? š ??? š š???? š?? š?? š? š? š? š? š š?? š š? š B? š D š š?? š?? š � � š? š š? š? š? š?? š š ??????? ? ??? ? š ? š ???? ? ?? š š š ? ?? ? š ??? ? ?? ? š ? ? ? ? ? š? ??????  š  (?????? š? š H H ? š  š? ? ? š ? š š?? š E]? š?@???? š???? š š?? š? š? š H š? š š?? š? š? š š? š š? š?? š š? š? š ? š?@? š? š? š š? 8@�@ š 8 @ š V š@@3 š@@@@@ @ š@ š š@ @ š š š@@ š@ š@ š š@ š@ š@ š@ š@ š@ š@ š@ š@ B š š@ š@ š@@@1@ @) š@!@" š@# >@$ >@% >@& >@' >@( > > D š@* @+@, >@- >@. >@/ >@0 > D >@2 š š @4@F@5@9 š@6 š@7@8 š š G@:@@@; š š@< š@=@> š@? š š š@A@B š š@C@D š š@E š @G@U@H@Q@I@L š@J d@K š @M š š@N š@O š@P : š@R š@S@T š š E] š@V@W@Y š@X š @Z š@[ š Em š@]o@^K@_H@`HA@aF@bD^@cC+@dA@eA$@f@@g@@h@@i@y@j@s@k@l H@m@r@n@q@o@p H  H mj f l H@t H@u H@v@w@x l H l@z@@{@@|@@}@@~@ H = l l mT H@@@ l H l l@ l H@@@@@@ H H l m@ mT m H@@@ m mT H m@ š m@@@@ H@ H@ H m@@ m@ m m$@@ l m m$ m@@@@ m@ H l l m$ l@@ m l m@@@@@ l@@ m@ m H@@@@ m$ š š = l@ m$ m@@@@ l m$ m$@ m$@ l H@@@@ H@ < m4@ H m H@ H H@ H H@ H@@ H@@ mT@ H H H H š@@@@@ H@ l@ = =@ =@ l H H@@@ H @@@@@@ l H H l H@ H = l@@ H H H@@@@ l@ =@@ _@ H mD H@@@@@ =@ = l =@@@ l H l H m$ =@ H@@ H H _ H@A�@@@@@ mT@ l l =@@@ l H l@@@ l l H l H@ l  _AA AAA HA H =AA z = H HA HA A HA H HA m$ HAAAA HAA HA H HA H HAA H H HAAAAA <A H HA l H l H lAA HA! HA"A# l m$ m$ HA%ABA&A6A'A4A(A/A)A* m H mA+ mA,A- m mA. m HA0 mA1 mA2 m mA3 H mA5 m$ m A7AAA8 HA9A?A: = E]A;A< A=A> E] H H E]A@ m4 H = = HACAiADAbAEA\AFAN lAGAHAKAI l lAJ l lAL l lAM l =AOAWAPATAQ HARAS l l l HAU H HAV H HAX mj HAYAZA[ < l l mDA] lA^ H lA_ lA` lAa l <Ac HAd HAeAhAf H HAg H m4 <AjA}AkArAl fAm lAnAo H l HAp HAq H HAsAv lAtAu l mTAw HAxA{AyAz  A|  A~ lAA HAA H H _ lA HAAA HA  H HA HAA HAAA HA HA H HA H HA HABAB =AAAAAA m4A HA mA H HA H lAAAAAAA HA H l HAAAA H l H H HA H lAAA H l š HA HA H HAAAAAAA l l l l H H lAAAA HA l E  m4A H lA l HAAAAAAAAA HA H l H HAAA H l l HAAAAAA H l l H H lAA l HA H H HAAAA HAA l H lAAA m l H m HAAAAA l l lA m l HA mD mA H mDAAAAAAAAAA mD l H l lA l HAAA H H l l HAAAAA m4 H m4 HA H lA H A HABABAB�A H H lB l l HBB lB l H H lBB BB l H HB H lB BB l l HBB H H H HBBBB)BB(BBBBBB l H lB lB l < lB l HBB%BB l lB!B#B" l lB$ š l HB& HB' z mT m$ HB*BXB+B@B,B5B-B/B. H H m$B0B2 HB1 H HB3B4 H H H mB6B:B7 lB8B9 < m4 H lB;B>B<B= E l H š lB? l HBABLBBBIBCBFBDBE š H H HBGBH H l lBJBK H l HBMBQBNBO m4 H HBP l HBRBUBSBT l H H HBVBW m$ H l HBYBpBZBhB[BaB\B^ HB] . lB_B` H m m HBbBeBcBd m H H <BfBg H mD H HBiBmBj mBkBl l l m lBn l mBo m HBqB{BrBuBs H lBt l HBvByBwBx l m l H lBz l HB|BB}BB~B m H l mB m m HBB mB m$ l lB = lB =BBBB HB HB HBBB H H mD mB m$B HB m$B m$ m$ H lBBB l H H HBBBBBBB mB H H lBBBBBBBBBBBB m l l HB H l HB l HB H HBBB l lB H lBBBB l H H mTB m mT HB HBB mB mB m m4BBBB š l H l mB m HBBBBB HB lB l H = < H šB lBBBBBBB m l HB mBBB mB m H mB HB H m HB m mBB mB H mB m HB HBBBBB m l lBBB mB l mB m lBBBB mB l m mB l mB m mB m lBC%BCBC�BBB m l =BBB HBB HB l HB H H H B H lCC CC lCCC l H lC l HC lC l lC l l lC C HCC H lCC H l l < lC lCCC lCCCCCC lC l H lC H C C H lC! lC"C# l lC$ l HC& šC' šC( šC) šC* š šC,CC-CGC. HC/ HC0 HC1C4C2 mC3 H m$ їC5CBC6C<C7C9C8 H H m4 HC: HC; H H HC=C>C@C? H š H mjCA l = HCCCD H lCECF H H HCHCI H H lCJCKCfCLCRCM m mCN mCO mCP mCQ m HCSC_CTC[CUCXCV HCW m m HCY m mCZ m HC\ m mC]C^ m H d mC`Ca mCbCd mCc m HCe H H mCgC{ChCuCiCm mCj mCkCl m l mCnCq mCoCp m H mCrCs H m mCt m H mCvCwCx m H mCyCz m m HC|CC} m mC~ mCCC m m4 l H HC mC mC m HCCCCCCCCCCC HC H HCC l H H H HCC l m$ lC l HCCC HCC HCCC H lC HC H HCCCC mC M CCCC  MCCCC M MCCCCC MC MC HC H MCC MC H M M HCCCC M H MC H MCC MC MC M H MC HC H MC MC MCCCCCC M H M HCC M H M HCCCC M H M HC M MC H MC H M H lC l HC l HCCC HCCC = H H H mjCC HCC H H H HCC lCCC lC l H lC lCCC l H l HCD$CCC HCCC š C šC šC šCCC š C š šC š C lCDCDC HCD HD� HDD HD HD H m HD H mD H HDD HD D H m HD HD H lDDDDDD HD m HD H H mDDD HD H mD H ` HDD DD HD l H HD mD HD!D#D" H H l H lD%D[D&DZD' lD(D4D)D2 HD* =D+D,  D-D.  D/ D0 D1  D3 H  D5DJD6D>D7D=D8 D9 D: D; D< H H D? D@DE DADB DC DD H DFDG DH DI HDK HDLDR DMDN  DODP DQ   lDS H HDTDUDWDV H l HDX H HDY  H H m$D\D] = m H HD_E~D`EDaEDbDDcDDdD HDeDfDDgDvDhDpDi lDj mDk HDl H HDm HDn HDo  HDqDr l šDsDuDt H = H m HDw HDx HDy Dz D{ D| D}D~ H HD HD HDD H HDD H HDDD HD  H HD H D . H lDDDDDDDDD m mDD m H m mD mDD m H m mDD mD m mD m mDDDDD mD m mD m HD HDDDD m H H HD m m m4DDDDD mD m H m mDD m H mDDDDDD m l m HD m m H mDD H m <DDDDDD H m m HD mDD m H mD m HDDD m mDDD mD m H mD = m mD mD mDD m m HDDDDD mD mD mD mD mD m H mDDDDD m mD mDD m H mD mDD H mD m mD m HD H mDDD mD mD m H H mDDD = = HD =DD =DDD H =D lD � � mT HD HD HDE� HEEE HE HE HE H m H m HEE m m$ mE E E mE H mE mE mEE HE l HEE HE m$ H m$ HEEYEEU mTEE HEE/EEE HE H l H HE E! HE"E$ HE# HE%E* E& E' E(E)   šE+  E, E- E. l E0EDE1E3 E2 HE4E;E5 m$ HE6E7 H HE8E9 HE: H H E<EAE=E> š H HE? HE@ š HEB lEC š H l m$EEEF HEGEI EH  šEJEK  HELEQ HEM HENEO HEP H H = HERES H HET = HEV H HEWEX H H lEZE[ = H <E\E]EdE^ HE_ HE` HEa HEb HEc H HEeEtEfEoEgEi HEh H  HEj HEkElEnEm H HEpEr HEq H HEs H H =EuE{ HEvEwEz HEx HEy H = H H HE| HE} H lEEEEEE m$EEEE HE H HE l HEE H H HE HE lE H šE HEEEE E] lE lEEEE GE GE  E GE G G GEE GEE G   GEEE HE l š HEEE m4 lE HE HE HE H HE HE HE HEE HE HE H HEEEEEEE mE m m HEEE m m l mE H mEEE m H m mE H m lE HE E lE lEE lE H HE HEE H HE HE HE H šEE mEEEEE šE l HEE mT l HE HE HE H mEEE HE H HE m4 lEE HE HE H =E H HEEE l H H HEF m$EEE HEE H HEE H HE HE HE HE HE HE H lEEE H HEE HE HE H  H HF� HF HF HFF H = mjFF F m$F mD šF šF šF B +F FFF HFFF HF <F <F m < H l HFF H lF l H H lFFFFzFFPFF$ mFF mF! m mF" mF# m HF%F;F&F)F'F( l H m HF*F9 HF+F, HF- HF. HF/ H HF0 HF1F2 HF3 HF4 HF5 H HF6 HF7F8 H HF: H H l HF<F=FLF>F? mT HF@FD HFAFB HFC H < HFEFG HFF H mFHFI = H HFJ lFK # l =FM lFN HFO = FQFlFRF] lFSFTFX lFU lFVFW l l m HFYFZ lF[F\ = l l HF^Fd lF_F`Fa H l =Fb =Fc < m4FeFhFfFg l H H =Fi < =Fj lFk H lFmFt mFn mFoFp m mFq mFr HFs l l mFu mFvFw m mFx mFy m HF{FF|FF}FF~FF HFF HF HFF HF HFF mT  mT HF  HFF m H mFFFF HF HF H H HF HFF HFF HF HFF HFFF H H H HF H HF HFFFF HFFF H = HF H H HF H HF HF H =F HF H HFF H H HF l H =FF =FFFFFF H mF mF mF mF m 2F H F l HFFFFFF lF H l lF HF HF H mD H l H l lFFFF HFFFFF m$ lF H lF m H H HFF =FF lF l <F l lFFF m4 lFF H H l m4 HFF mF =F HF lF lF mT lFF mF mF mF mF HF H H mFFF mFFF mF m H HF l H H mFG HFFG=FG lFFGFG HF HFG� HG H HG  H HGGG m4 H l H lG l lG G+ m$G G GG G HG H lGGGG H m H m HG H HGGGGG H H H HG HG H dGG'GG"GG m l mG! l mG#G% mG$ m l mG& l mG( H HG) lG* l mDG,G5 lG-G.G3 lG/G0 HG1 G2 m4 l H HG4 H l m$G6G7G:G8G9 = H l HG;G< H l l lG>G~G? =G@GvGAGB <GCGhGDGeGEGc HGFGG HGHGNGI H HGJGK HGL HGM H H GOG]GPGS HGQ HGR H GTGZGUGW GV H GXGY H  H G[  G\ H G^ HG_ HG` HGaGb  H  HGd H  HGf HGg H H m$Gi HGj HGkGlGqGm H HGn HGo HGp = H HGr HGs HGtGu H H HGw mTGxGy H H HGz HG{ mG| HG} = HG lGGGG m$G m$ l lGG l HG m HGGGG HGGG HG HG H GG <  HG H HG H H HGGG H H HGG H lGG GG  B G  G  m4GGGGGGGG lG HGG l HG H l lG l GGG H HGGG lG H l HG H HGGGGGGGG HG HG HG  HG HG m$ HG m4 < l HGGG H H mTGGG H l H HG H HG H <G <GGGGGGG l < H mj H G lG H l HGG H H HG HGGGGG HGGG HG HG H `G HG H ` H HG H m4 l lGHGG l m$GG HG m4 HGGG H m$ H HGGH GH GHGG HG  HGHGG HG HGHGH� HGG HG HG H H  H H H HH HH H H  HH HH H   H  . HH HH H H m$HH5HH(HH HH < lHHH HHH H H m H HH HHHHH H H = HH H <H!H' mjH"H#H%H$ H m H HH& H H mT lH)H* mT HH+ lH,H1H- lH. lH/ lH0 l l HH2H4 H3 H H H =H6 HH7 HH8 l lH9 lH:H;H>H< m$H= l l lH? m$ m$H@ m$ lHBH\HCHNHD H HHE HHF HHGHH H HHI HHJ HHKHL H HHM H H HHO HHP HHQHR HHSHV mHTHU H m HHW HHX H HHYHZ H HH[ H lH]HH^HH_HsH` HHaHpHb HHcHk HHd HHeHf H HHgHh HHiHj H m$ H H HHl HHmHn H HHo H m4Hq HHr H m HHt HHu HHv HHwHHx HHy H HHz HH{H| HH} HH~ HH HH HH H HH HHH HH H < H HHH HH H HHH HH HH H HH HHH HH H HHH HH H R HHH HH HH HH HH HH HH HH HH m$ HH H HH HHH HH HHHH HH H H HHH HH H mH H H HH HHHHHH H HHH HHH m H HHHHH H H <H H H HH H HHHHH HH H m4 HHHH H HHHHH H m4H ^ n = HHH HH HH = H HH HH H HHHH H HHH HH H HHH H HH H m$HHH HH H H m HHH H m HHI'HH HHHH HH HH HHH HH H HHH H HHHH H m H mH HH HH H HH HHH HH HH HH H H HHIH HHI HH HH HHI�II HI HI HI HI H l = HII HI H HI H m HI I H HII HIII HI HI HI H H H HII HII m H H m mI mI mI mII mI m mI! mI" mI#I$ mI% mI& m m I(JqI)JI*II+II, m mI-I.I;I/ mI0I5I1 m mI2I3I4 H H m$ HI6 m mI7I8 HI9 HI: = m HI<IxI=IWI>IFI?IEI@IC mIAIB m m HID m m H m HIGIRIHIK mIIIJ l m m4ILIOIMIN m l m mjIPIQ m l H HIS mIT mIUIV m < H HIXIfIYIdIZI^I[ HI\I] m4 = mD m$I_IaI` H m HIbIc m  H H HIe H HIgIpIhImIiIkIj H m H mIl H lInIo m H m mIqIuIrIt mIs H mD m HIv mIw m m m$IyIIzI~I{I| m HI} H H < HI HI H HII mI HI m m$II H m H mII mI mIII mII m mII H H HII mIII mI m H m HI m mI m HI mI m mI mIII m HI HI H H HII mIIIIIII mI mII H HI l HII mII H HI š HII mII H H lI H HI m4 HI m mI mII HI H m HI mIIIIIIII mI m H HI H l mI HI H m$II mII H H mIIII H H  HI H H mI mI l m H mIII mI mI m HIII mIIIIII m HI H m HII m HI H l m$ mIIIII < H m H m HIJIIIIII m H m H mII H m HIIII m HI H m H mIIJJ� HJ ` m ~ H mJJ JJ m HJJ H lJ H m HJ J mJ mJ H l mJ m HJJ>JJJ m mJJ mJ m m H mJ mJJJ6JJ/J mJ mJ m mJJ m mJ!J" mJ# m mJ$J%J,J&J)J'J( m ] m ]J*J+ m ] m ]J- mJ. m m ]J0 mJ1 m mJ2J3 m mJ4 mJ5 m ]J7 mJ8 mJ9J= mJ: mJ;J< m o m m HJ?Jk HJ@ HJAJB lJCJ[JDJPJEJKJFJHJG H H HJIJJ H m m H HJLJM H HJN HJO H m4JQJVJRJT HJS H m4JU H H lJWJY HJX H HJZ H H HJ\JcJ]J` HJ^J_ H H l HJa HJb H H HJdJeJhJf HJg H H m4JiJj l H H HJlJm H l lJnJo m4Jp H l HJrJ m4JsJtJv =Ju H lJwJJxJJyJ|JzJ{ H H H HJ}J~ H l mTJ HJ HJJ l l HJJJJ l <JJ l m4J < <JJ < <J <J  <JJ lJ HJ H HJJ l H HJJJ mT l HJ H mTJJJJJJJJJ H fJ HJJJJJ H H m4 lJ H H m4 H lJJJ H l H lJJ mTJJJ J J HJJJ = HJJJJ H l H l HJ H l HJ l <J lJ lJ lJJ =JJ H H HJJ HJJ lJJ H H m H HJ H HJK JJ <JJJ HJ ! H m$ HJKJJ HJJ HJ H HJ HJJ HJ HJ HJ HJ HJ HJ HJ H H J HJJJJ HJ H m$JJ HJJ HJJJ H H J HJ H HJJ H HJ HJ H  H m$JJ HJ H H lJ =JJ HJ J J J K� KK HKKK m4 lK l HK lK K = l lK KK KK = m$ l HK l mK H = HK[KVKR<KN&KMKL]KKKKKKfKKZKK K <u = K!KAK"K6K#K)K$K'K%K& = = =K( = K*K+ =K,K5 K- šK. šK/K0 šK1 šK2 š šK3K4 š š > = PK7K<K8K:K9 = D dK; = <u =K=K? CyK> = CyK@ CN =KBKOKCKHKDKFKE = =  KG = KIKLKJKK = = CyKMKN =  C] tKPKVKQKTKRKS  = = KU t  tKWKYKX t <u <u K[ šK\Kc K]K^Kb K_K`Ka  = <u = I KdKe = KgK~KhKpKi DKj dKk <uKlKn =Km =Ko  KqKrK{KsKvKt Ku Kw Kx Ky Kz BDK| K} KK KK I K D dKKKK = =KK Cy = = KKK KKKKK =K <u = <u KK = K  K K K iK i =KKKKKKK KK =K = =KKK = Cy K <u I <uKKK <uKKK tKK  = d =KK K = ~KK I  = =KK  I KKK K KKKK C] =K K K d =KK = Cy jK jKK jK j jK jKK j j KLKKKKKKK iX K <uKK =K <u  = CNKK KKKKKKK Cy KK  = = C]KKK Cy P KK  CN =KKKKKK P   CyKK  =  =KKKK Cy Cy KK = Cy = K =KKK = K K i3KL KLK CNL� šL =L =LL t =LL DLLL DLL DL CL DL  DLL L C] =L IL L LLLLLCLLL =L tL LL L P =L = <uLL0LL$L L"L! = L# = =L%L+L&L(L' =  =L)L* <u d L,L. L- t = L/ L1L<L2L7L3L5 PL4  tL6 L8L: L9 = tL; <uL=LBL>L@ =L? = <uLA <u σ =LDLF =LE LGLH d Cy CyLILJLK ~ LMLZLNLYLOLSLP LQ =LR <u <u = <uLTLULV <u LW <u =LX  ( = L[ =L\ = =L^LL_LL`LLaLLbLvLcLsLdLlLeLiLfLhLg =LjLk <u LmLnLqLoLp = ct CyLr Lt =Lu <uLwLLxLLyL|Lz tL{ t = t L}L~ t = LL t LL = SlLLLL Cy I7 L LL L LLLL =LLLL IL ~L =LLLL L = L LLL = L LL LLLLLLLLL  =LL i Cy I LL CyL =  d L = PLLLLLL P t =LL P Cy =LLLL <u t   = ~LL  = <u LLL  IL <uL <uL I <uL L =LL = CyLL = LML LM LLL =LLL L LL <u <uLLLLL  t =LL =L d' =L =LLLLLL L =L <u =L LL t t CyLL L =LL =L = <u = LMLLLLL tLL =  = LM� <uL =MM <u = = MM =MMM t t =M M = ~M M ~ = = i =M =M =MM <u = M MMEMMM <uM =M = MM0MM&MM!MM M = M C] M"M$M#  M% =M'M,M(M*M) <u =M+ <u M-M/M.  = Cy =M1M=M2M9M3M6M4M5 <u = <uM7M8 <u = <u M:M; <u M< = M>MBM?M@ = MA = t MC MD = MFMnMGM^MHMSMIMNMJMLMK = = =MM = MOMQMP = = <uMR <u =MTMX =MUMVMW = = MYM\MZM[ = =M] = M_MgM`Md MaMbMc t  = <uMe Mf <u MhMkMi =Mj = =Ml = Mm = dMoM{MpMq = MrMvMsMt =Mu = = MwMy <uMx <u Mz =M|MM}MM~MM MM <u = = M =M = MM =M =M =MM =M = <uM <u CyMN MMMMMM MMM <uM = <u =MMMMMMMMMM d <u dM = D = =M <uM <u MMMMM  <u = M  MM M <u <u MMMMMM <uM  <uMMM Cy <u t CyM d MMMMMM i$ <u MM MMMM <u <u M MMMMMMM <u  =  <u IMMMMMMMMMMMM <u <u M  <u <uMMM t <uMMMMMM t M tMM M <uM <u IMMMMMMM M DL cQ MM MM MM BD M MMM M h DLM DZ M N�NN N NN <u t <uN <uN <uN <u CyN N IN i$N N CN IN NN% N NNNN <uN <uN <uNNNN = <u NN = =N <uN <uN <uN!N#N" <u <u xN$ <u <u t N'PN(NN)N3N* N+N, N- N. N/ N0 N1N2 ct N4NmN5NXN6NLN7NBN8NAN9N= <uN: =N;N< = d6 = <uN> <uN?N@ <u x <u <u NCNHND <u <uNENF <u <uNG x <u <uNI <uNJNK <u <u xNMNR <uNNNO <uNP <uNQ <u x <u <uNSNT <uNU <uNV <u <uNW <uNY <uNZN_ <uN[ <uN\N] <u <uN^ x <uN`NhNaNe <uNbNc <u <uNd CN <uNf <u <uNg <u P <uNi <uNjNk <uNl <u Cy <uNn NoNuNp NqNtNr Ns I7 Nv NwNNxN| NyNz N{ =N}NN~N = N = NN =NNNNN = N N  NONOcNNNNN N N NN =N N  N N NNNNNNNN N N NNN NN NNNN N NN N N N CNNNN = N = NNN N N NN  =NN N  =NNN tNNN <uNNN   N N  =N NNN NNN N = = N NO:NO%NN NNNNNNNNNN h N h h N N h NN NN h NNN h h NNN N hN hNNNNN h N h N N hNONO NONOO� O h O O hOO O O h O O hO OO O O h OO O h OOO O O hO hOO hO O hO O#O!O" h h O$ h O&O5O'O2O(O,O) O* O+ hO-O/ O. h O0 O1 h h O3O4 h O6O7 O8 O9 h O;OZO<OLO=OEO> O?OB O@OA h h OC OD h OFOKOGOIOH h h hOJ h h OMOSON OO OP OQOR h hOT OU OVOX OW h OY hO[ O\O_O] O^ hO` Oa Ob h OdOOeOOfO} OgOhOsOiOl Oj Ok OmOpOnOo OqOr OtOyOuOw Ov cg Ox Oz O{O| O~OO O OOOO ct O O OOOOOO O OO OO OO OOO O OOOOOOO OO OO OO OOOOO O O OOOO OOO O O OO O O OO O O OOOO O OO OOOO ct O cg OOOOOOO = l t OOOOOOO CyO =  Cy OOO = = O Cy CyO  šOOOO ~ POO CyO Cy C]  OOO CyO OOO = =O = FO i iO i j OOOO O =O CyOPEOP OPOPOO t tOOP� t  <uPP P C]PPP t tP t P = tP =P PP CNP P = t P `" =P tP =PPPPPPP t t P = tP tP t t PP =P t t P!P/P"P.P# P$ P%P)P&P( P' = P*P+ P,P- = =P0 P1PDP2P=P3 ~P4 ~P5 P6 P7P8 P9 P:P; P< ct P>PA I7P?P@ = Cy =PB C]PC = CN PFP`PGPVPHPTPIPO CyPJPK CyPLPN PM  PP PQPR PS 8w CyPU Cy ~PWP^PXP]PY CyPZ =P[ =P\ Cy Cy = <u P_ CyPaPxPbPePc C]Pd = PfPr CyPgPhPmPiPkPj Cy = =Pl = PPnPpPo Cy Cy ; CyPq C] = Ps Pt =PuPvPw = PyPPz dP{ i$P|PP}PP~ d P P P P tPPPPPPPP h PP P PP P d P P PP PP dPPP h PP PP P P h P P h PQBPPPP PP <u <uP <uP <uPP <uP <u <uP x <uPPPPPP <uP <uPP <uP I7P <u x P <uP <u <uP <uP x <uPP <uP <uPP <u <u uP <uP <uPP <uP = <u Cy <uPPPPPPP CyP I7 P P Cy  I7 CyPP P = CN CyP CyP P  CyPQ5PQPPP PPP P CyP t I7 PPPPPPPP C] =P PPPP CN =PP  = = PPPP CyP Cy P = Cy PP  CyP  = ~PQPQPQ PQQ�QQQ  =  CyQQ Cy D dQ =QQ Q CN Cy CyQ = Q QQ QQ Cy =QQ  ~  QQQQ <u  <uQ = Cy <u I7QQ"QQ Q =Q Q  I7  Q!  Q#Q3Q$Q2Q%Q/Q&Q+Q'Q) Q( CNQ*  CN Q,Q-Q. CN d Q0Q1 Ve CN <uQ4 Cy = Q6Q7Q: Q8 Q9 <u Q;QAQ<Q@Q= =Q>Q? C] P t Cy I QCQQDQ`QEQVQFQSQGQQQHQKQI QJ  CN <uQL <uQMQNQPQO  d P = QR  ~QT  QU Cy IQWQYQX Cy tQZQ[Q_ Q\Q]Q^ ԝ QaQQbQzQcQlQd =QeQjQf Qg QhQi =Qk QmQn Cy ~QoQtQpQs QqQr  = CNQuQv dQwQxQy Cy  t Q{QQ|QQ} Q~ = D  CyQ Cy CyQQQQQ =QQ =  =QQQQ  = = CyQQQQ = CyQ = t P σ CNQQQQQ =Q =QQQ  ~ C] C]Q = QQQQ CNQ Cy QQ CyQQ  CN QQQQQQQ = <u =QQ  = d' QQ Q P =QQQQQ = =  =QQQ  PQ C] CyQRQQQQQQQQQ \M Q Q ~ QQ =QQ = =Q =Q d6 =Q PQQQ Q Q  Q t QQQQQ C]Q QQQ =Q <u D  =QQQQQQ = QQ d =QQQQQQQ Cy Cy CyQ  QQ Cy i3QQ d = d QQQQ Cy <uQQ =  d =QQ Q = CyQ Cy Q Q Q R� RRR R RRRRRR R R Cy I Cy R d R R I R  IRR = R RRR =RR   <u RRR = RR1RR/ RR R!R,R"R$R# B_ R%R(R& R' R) C?R* B_R+ B_ R- R. C? R0  = R2R3 C]R4R5R8R6 R7  I7R9 R:R;  R=UR>TR?SR@RRARRBRRCRgRDRQRERJ RF RGRH RI RK RLRMRORN RP GRRRZRSRVRT RU RW RX RY R[RbR\R_ R]R^ R`Ra RcRd ReRf GRhRRiRRjR{RkRwRl RmRn Ro RpRq Rr RsRt Ru Rv G Rx RyRz R| R}R~ RR R R R R R R RRRRR R R R R R RR RR R R R R RRRRR R š RR = CN =R CyRR RR <u CN R CyR RRRR R R R R R RRRRR R R R R R R RR R R R JRRRR =  RR  , , R R I IR IR IR I R R =RRR R Cy  Cy RRRRRR RR = = <uRR R = R  RRRRR C]R R C] R Cy RRR R R t =RR d = RSRRRR R I Cy I7R RSRSR C]RRR Cy =R <u S�SSS Cy d Cy =S = =S S SS S S S S SS S IU S SSSS S S ~ tS S = SSSSKSS:S S3S!S)S"S'S# S$ S% S& S( = S*S+ S, S-S0S. S/ S1 S2 , =S4 CyS5S6S8S7 CN  IS9  S;SCS<SBS= S> CyS? ~ S@ CNSA CN CySDSHSE SF =SG SISJ <u Cy SLSSMSSNSuSOSRSP SQ SSShSTSbSUSXSVSW = <u = SY <u SZ S[S\ S] S^ S_ S` Sa cQScSe Sd CySfSg = Cy d SiSpSjSmSkSl CN = hSnSo   šSqSsSr P P =St <u =SvSxSw = CySySSzSS{ S|S} # S~S S S SS S S h I SlSS ISSSS I hS IS IS IS IS I IS ISS I h I IS I =S <uSSS <uS Cy CNS SS = SSSSS ~S CyS ~ S Cy ~SSS  S ~S Ic SSSSSS SSSSSS SS SS S S S S S S S S S SS S #SS I S SS S =S S ~SSSS IS IS IS I ISS IS IS IS IS I I = SS SS Cy CyS S = S SSS SS S d =  S S S S STSSS SSSS S S S cQ = SS <uS  ST� Cy TT P  <uTT T TT T T I7 T CN T T T BD TTT P T TTTTSTT:TT)TT"TTTTT T T i3  =T T! Cy T#T'T$T& T% = =T( t CyT*T1T+T/T, CyT- =T. =T0 = T2T4 T3 T5T6  =T7 T8T9 # T;T<TCT=T?T>   =T@ TA =TB Cy CNTDTG TE C]TF = THTPTI TJ TKTL TMTN TO TQ TR TTTuTUToTVTbTWT_TXT^ TYTZ T[T\ =T] CN T` Ta CN TcTi TdTe Tf TgTh TjTk Tl Tm Tn I Tp TqTrTs Tt = TvTTwTTxTTyT}TzT|T{  = = d' =T~ = T <uT = IcTTT T = CN T TT TT = TTTTT T =T = =T ~ TT IT = CyTT CyTT ~ iX P CyTU<TUTTTTTTTTTTTTTT T # T T T TTTTT I T IT T T TT TTTTTT T T T T CN <u TTTTT T T T T TT T T T T T T TT T TT T T T T T T TT T  TTTTT <uTTT <uT h T T TT  TTTT =  TT T CyT  TT <u =TT CyTT U�  UU'UUUUUUU U tU UU UU U U = = U = d' U <uU   = = <u j UU U = UU"U UUUUU Cy  U Cy = CNU U! =  U# =U$U%  U& I U(U4U)U2U*U.U+U-U, Cy = t CyU/ U0U1 CN = U3 U5U:U6U9U7 U8   U; = U=UdU>UMU?UEU@ =UAUDUB C]UC P = UFUG UHUJ CyUI = <u UK =UL = UNUWUOUUUPUTUQ CyUR US =  Cy t UV = CyUXU_UY = CyUZ U[U\ PU]U^ =  =U`Ua d' CyUb CyUc = UeUUfUUgUi dUh = UjUUkUwUlUrUmUo =Un I7 UpUq = dUsUvUtUu = t t =UxU~UyU|UzU{ Cy P Cy CNU} U P (U U U U cQ UU UU UU U CNU t ~ tU U  dD U tUUUUU UUU BD UUU UUU BQU I IUU IU IU cQU cQ cQUU cQU cQU cQ cQU cQ UU UU U I UU U J UU Cy UU D U UU U <u UUUUU UU UU U U UU UU U U U U UU U U �U U U U U 8w U U UU U UU U U U U U U UU UU U 8w UUV UUVUUUUUUUU Cy  U t U U UV�U ~U UUU t =U  Cy VV VV \MV  V VVV V VV VV V i i$ iV i$VV i i$ i V d V Cy C]VVXVV>VV VVVV V V = <uV!V/ V" dV#V$ d dV%V& d dV'V( d dV)V* d dV+ dV, dV-V. d d V0V;V1 V2V6V3 CyV4V5 =  =V7V9 dV8 = CyV: = P Cy ϾV< =V= V?VUV@VB =VA = VCVK CNVDVEVG CyVF t =VHVI <u VJ Cy  =VL VMVO =VN Cy VPVR =VQ  XVSVT CN <u =VV C]VW = VYVpVZVcV[V^V\V] V_Va V` <u I =Vb  CNVdVn IVeVf I IVg IVhVi IVj I IVkVl I IVm h IVo <u VqVVrVxVsVvVt Vu <u Vw Cy VyVVz V{V V|V} V~V V V V V # IV V Cy VV VV V VV V =V[VXVWVWmVW VVVVVVVVV VVV i$ i i$ i$ i i$VV =VVVV =V  =VV V =  ;8 VVV V SlV SlV Sl SlVV SlVV SlVV Sl V Sl VVV Sl V  SlV SlV Sl  Sl VV t =VV =V ~V CyVVVVVV CN   tVVVVV   V = V CyV = VVVV Cy I dVVV = VVV =  š I7VVV = <u =VVVVV VVVVV =V PV =  =VV = Cy VVVVV V VV VV #V # #VV #V # #V #V #V # = W�W WWWWWW I  W  W =W W  i$W I WW WWWWWWWW  Cy WWWW dW  dWW ~ Ve CN d ~ tW W W6W!W1W" W#W&W$W% Cy CN P l <uW'W(W.W)W+W* = <u =W,W-  <u P =W/ dW0 W2W4W3  W5 =  W7WOW8WFW9W@W: W; W<W>W= W? WAWB WCWD WE WGWH WIWLWJ WK WM WN WPWQ cZWRWWWS WT WUWV WXW^ GWY GWZ GW[W\ G GW] G cZ cgW_W` cgWa cg cgWbWc cgWd cgWe cgWf cgWgWjWh cg cgWi cgWk cgWl cgWnWWoWWpWWqWWrWyWsWxWt Wu Wv Ww cQ = WzWW{W~W|W} d  d šWW d  CN = WW  WW W d W =WWWW Cy =W = WW d W =W I WW = WWW WWW  <u Cy W Cy <uW  dWWWW =WW  = W = CyWWW =W =W =W =W =W = =W =W =WW =W =W =W = =W = i =W t =WWWWWWW WWW W W  WWW  W C] =WWWWW W =W  WWW C] = C] t WWWWWWW W W  W = WW C]WW  P t WXoWX5WWWW WWW hW =W = d W W WW WWW  c CN <uW W W Cy WX WWWWW CyWWW = CyW Cy = = ~ WX CyX� X CyXX dX =X CyXX X  = X X0X X/X XXX XX X X X XX X jX X XX X GX cgXX(X cgX! cg cgX"X# cgX$ cg cgX%X& cgX' cg cg cgX) cgX* cgX+ cgX, cgX- cgX. ϰ cg  =X1X3X2 C] = X4 Cy Cy X6XLX7XCX8X=X9 CyX: X;X<   X>X@ =X? tXAXB  = XDXIXEXHXF XG t Cy tXJXK Cy  XMX`XNX[XOXZXPXWXQ XRXS  XTXUXV G cg XX XY = Cy <uX\X^ CyX] Cy X_ XaXlXbXkXcXfXd IXe Cy tXg Xh tXi =Xj = i$ Xm ~ Xn P tXpXXqXXrXXsXXtX~Xu Cy CyXvXw Cy CyXx CyXyXz Cy CyX{X| Cy CyX} Cy d' XX CyX Cy X Cy Cy XXXXXXX CyX X X  X =X I XX Cy X Cy =XXXX Cy =XX <uX  Cy C] CyXX CyX =XXX  =X = XX XXX X  XX X XXXXXX =X ~X ~X ~ ~X ~XX ~X ~X ~ ~ { ~ ~X ~ XX CyXXXX Cy  =X XXXX PXX = = dXX = Cy = CyX = XZbXYXYXXXXXXXX d'X d' <u X =X <uX X P =X XXXXXX  Cy XX  <u  XXX = = X X CNXY XYXX ~X Cy XXX XXX =X = X t <uX = X XYXXXX " J C?XY�  C?Y Y  YY Y Y <uY  Cy Y YY C]Y Y Y Y Y YYY Y Y I Y YY I Y  YY]YY,YY'Y Y&Y!  Y" =Y#Y$ <u Y% = Y(Y)  Y* =Y+ CN CyY-YJY.Y3 ~Y/ CyY0 Y1 Y2 Y4Y6Y5 Ve = šY7Y= šY8 šY9 šY:Y; šY< š A š Y> Y? iY@YA iYBYIYC iYD iYE i iYF iYG iYH i i YKYM YL YNYO D YPYT C]YQ C]YR C]YS C] YYUYZYVYX YW C] YY C] C] Y[ C]Y\ C] Y^Yh Y_Y`Yg Ya C]Yb IYcYd YeYf  i = I7 YiYYjYYkYyYlYq YmYnYp Yo IYrYv YsYtYu DZ Yw Yx IYzY{YY|Y} I Y~Y YYYY " YYYY YY Y I "YYYYY Y YYY Y YYYY Y "Y Y YYYY IYYYYY Y Y YYY YY Y Y YY Y cQ Y Y Y Y " YY J YYYYY Y Y Y G YY Y G YZYYYYYY =YYY ~YYY  Y Y  YYYY Y C? Y Y 1YYY YYY  Y  YY Y Y Y YY Y Y Y CN Y YYYYY Cy Y = ~ =YY Y Y = <u CyYZYYYY Y I ~ IY tYZ Z� <u Z ZZZ  = ZZ ZZ Cy ~Z Z I = Z Z =ZZ ~Z ZZ ZZZZZ Cy  CyZ =  DZ  IcZZ<ZZ*ZZ(ZZ'Z Z!Z%Z" = Z# PZ$ = Z& t =Z) = Z+Z9Z,Z4Z- Z.Z3Z/ Z0Z1Z2 Cy š CyZ5 Z6Z7Z8 š CN  =Z:Z; = tZ=Z^Z>ZOZ?ZFZ@ZEZA ZB IcZCZD <u  = ZGZJ ZH <uZI   =ZK <uZLZM ZN   ZPZ]ZQZYZRZU ZSZT + ZV ZW ZX 9 <uZZZ[ <uZ\ <u I <u = IcZ_Z` Za Ic <u ZcZZdZZeZZfZpZgZnZh tZi Zj ZkZl  ~ Zm ~ = tZo ZqZvZr ZsZt Zu i  ZwZx Zy =ZzZZ{Z}Z| G Z~ Z Z Z ZZ Z Z Z G Z Z Z Z Z Z GZZZ ~ZZZ ~ ZZZZ I ZZ ~Z ~Z ~Z ~ ~ LZZZZZZ =Z Cy <uZZ =   Z  Cy Z ZZZZZZZ <u CyZ Z Cy ZZ Z Z = Z IZ ZZZ =ZZZZ CN CNZZ CN = Z ZZZZZZ tZ CyZ : š =ZZ = Cy Z tZZ CyZ Z =Z ZZ ZZ Z Z ZZZ UZ Z ZZ UZ U Z UZ UZ UZ UZ UZ UZZ 3Z 3Z 3Z 3Z UZ U U ~ZZZ ~ZZZ ZZ = ZZZZZ Z Z Z  <uZ  ~[�[ [[ [[[ [ =[ =[ Cy  <u[ =[ P =[ [[ [  Ve[ CN[ [j[g [dP[^[\[[[[[[h[[G[[0[[*[[#[ [! = [" =  [$['[% = =[& =[( =[) = =[+ = =[,[-[. = [/ = [1[<[2[6 =[3[4 =[5 = i =[7[:[8 =[9 = [; = = [=[@[> [? = =[A[D[B =[C = d[E = =[F =[H[b[I[][J[S[K[N[L [M =[O[Q[P = = =[R =[T[Z[U[X[V[W = =[Y =[[ =[\ = = =[^[_ =[` =[a = = =[c[d =[e =[f =[g = =[i[[j[y[k =[l[q[m[n = [o =[p = i[r[v[s[u =[t = = [w =[x = Cy[z[[{[[|[[}[[~ = = =[ = =[[ = =[ d[ =[[[ [ = =[[ = = =[ =[ =[ =[ =[[[ = =[[[[ =[[[[ = [[ =[ = = =[ [ =[ = [[[[[[[[[ = = DL =[[ = =[[ =[ =[ d [ =[[ =[ = =[ =[[[[[ = =[ =[ =[[[ = = = [ =[[[[ = [ = = =[ =[[ =[[[[[[[ =[[ = =[ = [ = [ d =[[[[ =[ =[ = = [[ =[[ = = [ =[ =[ =[[ =[[[ C] = = [[ =[ = =[ = [\a[\ =[[\ [[[[[ = =[ [ =[[ =[ =[ = =[\[\\� =\ = t = =\ = \\ =\\ = =\ = =\ CN\ \\ \ =\ =\\ = = \ = =\ =\ =\\ =\ = = \\E\\6\\,\\$\\! =\ \ = \" = \# = \%\) =\&\'\( = = =\*\+ = <u =\-\1 =\. =\/\0 =\2\3 = \4\5 = =\7\<\8 = =\9 =\:\; = = =\=\>\B\?\@ = =\A =\C =\D = =\F\V =\G\H\L =\I =\J\K = =\M\P =\N \O =\Q\T\R\S = = \U =\W =\X\\\Y =\Z = =\[ = \]\_ =\^ = \` = = \b\ =\c\d\v\e =\f\o\g\j\h = =\i = \k\m\l = =\n =\p\r =\q Cy =\s\t\u = = \w\~\x\| =\y =\z\{ = = d6\} = C] = \\\ =\ =\ <u =\ = = =\\\\\\\\\\ =\ = = \ = = \\\\ =\ = = =\ =\ =\ = \\\ =\ = Cy = \ =\ =\\\ = =\ =\ = =\]\]$\\\\\\\ =\\\\\ =\ = =\ =\ = =\ =\ =\ = \\\\\ = =\ =\ =\\\\ =\ = = \ = =\ = \\ =\ =\\ = \\\\ =\ =  = =\ =\ = P\\ =\\\\\ =\ = \\\ = = \ = P =\\\\ = = \ =\\\\\\\ = =\ = \\\\ =  = = DL\\\ \ = \\\ = = \\ = = d\]\] =\\]\ \]]� = = = =]]]] = = =] = ] ]] =] ]] ]] = = = ]]]] = = ] =]] ] = =]] = =] =]]" =] =] =] =]! = =]# =]%]I]& =]']4](]* =]) ~ =]+]/], =]- = =]. = =]0]1 =]2]3 = ~ =]5]@]6]9 =]7]8 = = ]:]; = ]<]>]= = = =]? = ]A]E]B =]C]D i j = =]F =]G]H = = ]J]j =]K]L][]M]W]N]S]O]Q]P = = C] =]R =]T ]U]V  = t =]X =]Y =]Z =]\]a]]]^ = =]_]` = = ]b]e =]c]d = = ]f]h =]g = =]i =]k]]l]]m =]n]}]o]z]p]q Sl Sl]r]s Sl Sl]t]u Sl Sl]v]w Sl]x Sl Sl]y Sl]{]| c Sl I Sl ]~] = =]]] = ] =] = ϒ =] = =]] = =]^]]]]]]]] =]]]]]]] = d Cy =] =] = = =] =]] =] = = ]]]]] =]]]] = = = ] =] =] d ]]] = =] ] = ] =]] =] = =] =]]] =] =]]] = =] =] =] = = ]]]]] = ]]] = =] = ]] =] = ]  ~ =]]] =] = =] =]] =] d] = = ]]]]]] =]]]] = =] =] =] = =] =]]] =] = L =]]] =  = =] = =] ]] =]]]] =]] =] = =] F =] = =] ]] = = =]] =]^] = ^� = ^ =^ = = ^^M^^%^^^^ =^ ^ ^ =^ ^ = <u = =^^^ =^ =^ =  =^^^^ = =^^ = = =^^^ =^^ =^ = =^! =^"^# = =^$ =^&^9^'^*^( =^) = = q^+^1^, =^-^/ =^. = =^0 =^2^7^3^5^4 = Cy = =^6 = Cy ^8 I^:^D^;^?^< =^= =^> =^@ = =^A^B^C = =^E^I^F = =^G =^H = ^J = =^K =^L =^N^c^O^U^P = ^Q^R = d^S ^T =^V^] =^W^X^[ =^Y =^Z = ^\ = =^^^b =^_^` =^a = = =^d^v^e^q^f^i^g =^h = = ^j^n =^k^l^m = ^o =^p = š^r = =^s =^t =^u = =^w^x^|^y ^z = =^{ = ^} =^~^ = =^ =^a^_^_^^^^^ =^^^^ =^^^ =^ d = ^^ = =^ = ^^^ =^^ =^ C] = =^ =^^^ =^ = ^^ =^ = =^ = ^^^^^ =^ = =^^ = = ^^^ =^^^^ = =^ = =  =^^ = = =^^^^^ =^^ = = =^ =^ ^ =^^^ = =^ = = ^^^^^^^^^ =^ = =^ =^^^^ =^ =^^ = Cy = I =^^^ = = ^^^ = =^ =^ = =^^ =^ = =^^^^^^^ =^ = = CN^ = = =^^ = = =^ =^ =^ =^ L =^_^^^ = =^^ =^ = d^^^ = =^^ = =^^ = ^_� =^ = _ = d___ =_ =_ = =_  =_ __ __ _ =_  = =_ = _ =_ = = __ _ =__ = =_ = __r__L__9__*__$_ =_ _! = _"_# = = =_%_&_( =_'  = =_) = _+_0_, = =_-_._/ = = d_1_6_2_4 _3 _5 = =_7 = =_8 = <u_:_B_;_= =_< =_> =_?_@ = =_A = _C =_D_F =_E =_G_J_H_I d = =_K d_M_d_N___O_X_P_U_Q_T_R_S = = =_V =_W = = _Y_\_Z =_[ = =_] d_^ = = =_`_a =_b =_c = q =_e =_f_k_g = =_h_i_j = d = _l =_m_p_n_o = = =_q = _s__t__u__v_}_w =_x_{_y_z = = _| = Cy d_~__ = =_ =___ = = =_ =__ ____ = = _ = =___ =_ = =___ =_____ = =_ = =_ =_ = =_ =__ =__ = = =_ =_ = _______ =__ =_ = _ = = ______ = = _ = = =__ = = =__ =_ =_ =__ =__ =_ =_ = =____ = _ =_ = = ___ =__ d = =__ = =_ = _`i_`$_` ____ =__ =_ =_ = = __ =___ _ d =_ = =___ =_ = = =___ = = ~_______ =_ = = _ =_ = = ~__ =_ =_ =_ = = _`� =____ = d =```` =` = ` = `` =` = = ` `` =` `` =` =` = ` =` =` = =``` `` =` =` =``` = =` = =`! =`" =`# = = <u`%`V`&`A`'`6`(`2`)`.`*`, `+ = =`- = `/ =`0`1 = =`3 d6`4 = =`5 =`7 =`8`<`9 =`:`; = =`=`?`> t = `@ = =`B`M`C`I`D`G =`E`F = =`H = = Cy`J =`K = =`L =`N`P`O = = =`Q`R`T`S = I =`U = =`W`c`X =`Y`_ =`Z`[`\ =`]`^ i i `` =`a =`b = = `d =`e = =`f =`g =`h =`j``k``l`t`m = =`n =`o`p`r`q = = `s = `u``v`~`w`z =`x`y = = =`{`|`} = =`` =``` = = = ````` = =` = `` =` = d = =`` = = ````` =` =` = =` = `````` =` = =` d` = =` = =````` =` = =` = =` =` =` = L =````` = `` = = =` =``````` =` =` =` = d`` =` =` =` = ``` =` = = I =`` = `````` =` =` ~ =```` = d =` = = ~`` =`` = = = `````` =` = =` = .` =`` L = L ` =` =` = =`a�``` =``` =`` 4 = = =` =`` =` =`` = =```` = =` =`` = d =aa aa aa aaa = =aa = I =a = ia aa =a a = =aa =aa = = abaaaaaaZaa4aa(aa! =a =aa = = a"a%a# = =a$ =a& = =a' = a)a- =a*a+ = =a, = a.a0a/ = = Cya1 =a2a3 = =a5aGa6a?a7a:a8 = =a9 = a;a= =a< = Cya> = a@aDaAaB = aC aE = =aF =aHaRaIaK =aJ = aLaOaMaN i  aPaQ L . = aSaXaTaVaU = =aW = =aY = = a[aqa\ae =a]a^aaa_ =a` = = abac =ad = = afalag =ahajai = = =ak = =amanao = ap = ~ =araasazataw =au =av = ax = =ay =a{a} =a| =a~ =aa = = =aa = =aaa = = šaaaaaa =aa =aa =a = =aa =a =a =a = =aaaaa =a = a d = =aa = =a = aaaaaa =a d a = =aa =a =a =  =aa =a =a = > =aa =  =aaaaaaaaaa =a = =a = a =aa d = =aaa = =a = a =a = aaaaaaa = = ~aa = = =a = aa =aaa = =aa =a = <u =a = aaa aa =a =a = a =a =aaaa =aa = = aa =a = a = =a =a = =a =abiab,abaaa = =a =aa = =abab�a = =a =b =b = =bb bbbb = = =b = b b =b = =bb bbbbbbb = = b = = =bbb C] d =b =bbb = %b = =b!b&b" =b#b%b$ = = = b' =b(b* =b) = b+ = =b-bNb.b?b/b6b0b3b1 =b2 = = =b4 =b5 = b7b;b8b:b9 = = =b<b> =b= = = b@bF =bAbBbD =bC =bE = = bGbJbH =bI = =bKbMbL = = I =bOb\bPbS =bQbR = = bTbYbUbW =bV = =bX = =bZ =b[ =b]bfb^bcb_bab` = =bb = =bd =be = =bg =bh = ~ =bjbbkbblb}bmbwbnbrbobqbp = = = Cybsbu =bt = =bv = bx =byb{bz = =b| =b~b =bbbb = =b = = b = =bb = = bbbbb =b =bb = <ubbb =b = = b =b = =bbbbbb = =b = =bb = = bb =bb = = bbb = b = = =bbbb = =bb =bb = =bb =bb =bb = = bbb =b = = b = =b =bcbc(bbbbbbb = =bbb Lb =b = =bbbbb =b = bb =b = b = =bb =bbb = d =b =b = dbbbb =bbbbb = =b = =bb =b =b =b =b = = =bb =b =b = =bcbcbbbbbb tb = = dbbb = =bb = = ~b =c� =c = = cc cc =cc = = c =c c = =c cc = = c =cc = = ccc =c = =cc = =ccccc = = =c =c = c c$ =c!c"c# =  š <uc%c'c& = š = d =c)cfc*cIc+c:c,c5c-c0c. = =c/ =c1c2 =c3c4 = = =c6c7c8 = Cyc9 = =c;c? =c< =c= =c> =c@cC =cAcB . LcDcFcE = = cGcH = = cJc[cKcRcLcO =cMcN = = cP =cQ = = cScVcT =cU = = cWcY =cX = =cZ = c\cac] = =c^c_c` = = cbcecc =cd = = =cgcr =ch =cicjcl =ck = cmco =cn = cpcq = =cscctcx =cu dcvcw = = cyc|cz = =c{ =c}cc~ = = =c =cccccc =c = =c = c =cc = = =cccc = = = cccccccc =cccc = =cccc = = c = = ccc = =c = c =c = =ccccc =c = =c =c =ccc = = =c = cc =c =c =c = =cc =cc = = cccc =c =cccc = S =c = S =ccccc = =c = =ccc = <u =cc . =c = ccccc =c = =c = =cccc = = cc d =cc =ccc c = Cy =cccc = =c =cc = = Cycdcdccc = =cc =  =ccccc h = =ccc = =c =cdcd� = = = dddd dd =dd = = d =d = =d =d dd = =d = = ddddd =d = = dddd = = = =d =dd = =d d5 =d!d"d*d#d'd$d& =d% = Cy = =d( =d) =d+d0d,d.d- = = d/ = = d1d3 =d2 = d4 = = d6d?d7d; =d8 =d9d: = = =d< =d=d> =d@dIdAdFdBdDdC = = dE = = dG = =dH =dJdL =dK =dMdN =dO = = dQedR =dS =dTe!dUddVddWdjdXd`dYd\dZ = =d[  =d] = =d^d_ = = =dadbdddc = =dedgdf = =dhdi = =dkdzdldrdmdo =dn = =dpdq = =dsdwdtdvdu = = d =dx =dy = d{dd|d =d} =d~ =d =d = = =dd = =dddddddddd =d =d = = =dd = = =dd =d = = =d =dd = = d =ddddddd = =d = =dd =d = =dd =dd = = =dd = = dddddddddd =ddd = = d d d d d d d d d d X dd =dd = = d = =d =ddd =d =d = = =d =d =d = ddd =dddddd = = d = =ddd = = =d = ddd = =dd = = =dd = =d =deddddd =d =dd = = ddd =d = = ddd = š d =dd =d =d =d = =ddee� = = e = = eeeeee =ee  =e e e =e =e = =e = eeeee = e =e =e = = eee =ee t = = e = =e =e"ee#e`e$e@e%e3e&e*e' = =e(e) = =e+e. =e,e- = = e/e1 =e0 = e2 = =e4e9e5 = =e6e7e8 I I = e:e>e;e< = =e= =e? = =eAeSeBeKeCeHeDeF =eE = eG = = =eIeJ = =eLePeM =eNeO d = =eQeR = =eTeZ =eUeVeX =eW = =eY =e[ =e\e^e] = = e_ Cy d eaewebem =ecedejeeehefeg P = = =ei =ek = el ~ =eneseo =ep =eqer = = =eteu = =ev = exe~eye{ ez = e| = =e} = <uee =ee =e = =eeeeee d =ee = =ee =e = = =ee = =ee = =ee =e =e = =e =ee =e =e =e =e = i =ee =e =e =eeeeee =eeeeee = e = =ee =e =e = = ee =e =e = =e =e =eeeee =ee =e = ee d = = š =e =ee = = eeee =ee  = ee =e = ee = =e = =e e eeeeeee =e = =e =e = = eeeee =e =  = =ee = = e =e =e = =eeeee =eee = =e = = =eee = e = = e =e =e =e = =efe =efxef=f�f&ffff fffff = = Sf = = =f f ~ = =f f =f = =ffffff <u = =f =fff = = =f =f =f f f f f f! f" f# f$ f% S f'f4f(f+f) = =f* =f,f0f-f. = f/ = f1f2 = =f3 = f5f9 =f6 =f7 =f8 = =f:f; =f< = = f>fQ =f?f@fIfAfDfB =fC = = fEfGfF = = fH = fJfM =fK =fL = fN =fOfP = = fRfefSf\fTfYfUfWfV = = =fX =fZ =f[ = = f]fbf^f` f_ = =fa =fc =fd = =fffpfgfmfhfj =fi = fkfl = = fn =fo = =fqftfr =fs = =fufvfw =fyffzff{ff|ff}f =f~ff = = =f = =fff Cy =f = =ffff =f =f = =f =f = =fff =f =f = = ffffffff =f =f = f =f = = fff = = if = =f =ffff =ff = = =ff = = =ff = =f = fff = =ffff =f = = <u =ff = = ffff =fffff = = =f = =f =f =f = fff =f = fff = = f = ff =f =fff =f =f =f =f =ff = ~ =fffffffff = =f = f = =f = =f t =fffffff = = f = = ~ = f = = šfgfff =ff =f = f = = f =fg� = i =gggg = g = =g =g = =g =g =g hg ga g ggg2gg'gg =g CNgggg  CNg gg gg g g CNg g"g! = g#g& g$ g% X  d g(g)g0 g* =g+g, g- g.g/   P =g1 Cy  Cyg3gIg4g>g5g<g6g;g7 =g8 g9g:  g= t Cyg?gGg@gFgAgCgB  gDgE CN M I7 gH gJ gK <ugLgR gM =gNgOgP  CygQ = P CygS gT gUg\gVg[gW gX gYgZ X 8w g] g^g_ g` 8w X gbhgcggdggeggfgrgg ghgmgiglgj Cy gk ~ gn Igogp <ugq = t gs gtggu gvgzgw gxgy C] C] =g{ g| g} g~ g g g g g g  gg gg =g = gg CNg + ggggggg g  g Veg d gg g Veg Cy C]g C]ggg  Cy ggggggggggg g  I gg gg i = i = C] ~g = ggg = g g g g Ggg CNg =ggg =g CN   g g  ggg ggggg = D Cy Cyg `" gg  CNgg =g =gg ggg g <u = g gg ggg g h Ighgggg =ggg ggg Cygg g <u = Cy g = gggg gg g ggg I I g g gg g gg g h� h h hh h hhh <u =h h h h h h = = hh`hh=hhhhhh  hh =hh  = hh h =h h.h!h'h" h# Cyh$ h%h&  = =h(h)h,h*h+  š CNh- CN ~ th/ =h0 <uh1h6h2h5 h3h4   Ph7h<h8h:h9 Cy = Cyh;   =h>hUh?hFh@ hA hBhEhC hD  = hG hH hIhJ hK hLhM hN hOhP hQ hR hS hT dz hVh]hWhX hYh[hZ = h\ I h^h_  =hahhb hchmhd he hfhjhg hh C]hi = hkhl = <u =hnho ~ hp = hqhrh~hshu cght cg G cghv cghwhx cghy cg cghz cgh{h| cgh} cg cg h cghh cghh ct cth cthh ct cthh cth ct j ct ct cghhhhh d <u = hhhhh h i$ hh hhh hh  CNhi]hihhhhh <u <uhhh <uhhhhh d C] =h CN CN <uhhhhh CN Cy = h = Ve hhhh <uhh h =hhh =h = š = =h Ih š = hh h =hh =h = =hh =h =h =h =h =h =h =h =  =hhhhhhh h C] <u h Cyh <u hhh C]hhhhh <u <u Cy ~h th = dh = iX hhh h Ph th iXh =hhhhhh =h h hhhhh = d =hh = d h  hh h = <u hhii� C]iii i i b ii i ii i i i ii iii i di =ii7ii5ii"ii iiii =i  I I i! i#i2 i$i% i& i' i( i)i* i+ i, i- i. i/i0 i1 Ӑ i3i4  = ~i6 ti8iC =i9i: <ui;  i<i=i@i>i?  Ve C] iAiB Ve  iDiViEiH <uiFiG d iIiJ = iKiL = iMiU iNiOiQ iP = iR iSiT h  = =iW =iXiYiZ i[ i\  di^ii_ii`ipiainibif icid =ie CNigih  CNiiij dik d dilim d  d tio P =iqiiri{ isit tiu iviw tix =iyiz I DL <ui| i}i~iii Cy  dii  ii d  ~iii iii ii ii i iii cQi cQi cQiii cQiii cQ cQi cQ cQi cQi cQ cQ i ii i i i cQ iiii t <ui i iiii ii = i iiiiiiiii ii = Piiii Cy =  = ii ii C] =iiii Pi Pi d Cyiii Cyii Cy   Ii Pi P d ~iiii Pi Pi =i ii iii = = I7i di = =ii i i Cy ijijijij3ij iiiii iii i iii i i i ijiii ijij� j jj jjj j j j j jj"jjjj jjj jj jjjjj j jj!jj j#j,j$j( j%j&j' j)j* cg j+ j-j.j0j/ j1j2 j4j]j5jGj6j=j7j9j8 cgj:j<j; j>jBj?j@ jA jCjD jEjF cg jHjQjIjL jJjK jMjN jOjP jRjXjSjUjT jVjW jYj[ jZ j\ j^jwj_jkj`jfjajcjb cg cgjdje cg cgjgjijh cg cgjj cgjljrjmjpjnjo jq jsjujt jv cgjxjjyjz j{j} j| j~j jjjj jj jj j j ~jjjjj hjjjj h h jj h j hjjjj hj hj h jj hj h hj h jjjj hjj h h jjjj h h j h = jjj =  =jjj = j j jj Cy Cyj = j  Cyjjj jjjjj C]jjj j <u C] j  j  =jjj jjj j j j j cQ j j j j j cQ j j jj j j j ijmjkjkajkAjkjjjjjjjj C] Cy jj =  jjj j =  Pj Cy C]jjjjj =j =j C]j  j  = jkjkj  C]k� k kkkkk kk k k k k k k c � k k Cy tk = kk = kk tkk.kk'kk#kk"k =kk k k! = k$k%  k& =  k(k)k*  k+ k, k- C]k/k7 =k0 =k1 k2k3k4  Cy k5k6 C]  dk8k: C]k9 k; k< k= Cyk> =k?k@ ~  kB kCkDk[kEkQkFkNkG ~kH kIkL ~kJkK ~ ~ kM = kO CykP Cy kRkS = kT kU kVkWkY kX C] kZ =  k\k^ dk] = k_ = k` = kbkkck}kdkrkekjkf tkgki =kh <u š kkkpklkm d kn ko t kq tkskt = tkukvky Ikw Ikx  =kz =k{ k| = k~ tkkk t kk kkk k Cy CNkk = =k tkkk =k =k = kkk tkkkkkkkkkkkk hkk h h kk hk h hk h k h hkkk h h kkkk hk hk hkkk h h kk h hkkkk hk h kk h hkk hk h h <ukk  =kkkkkkkkkk k kkk   k Cy = Cy kkkk k t  Cy CNk Cy kk ~k ~ ~k  ~kkk t t k = =kkk  Cy Cy dkkk t tk t kkk tkkk =kk t ~  tk t tkk t tkkk kkk ן ן k kk ן  klkl^klGkl5klkll�llll l =l t P = ll Cy Cy l l <ul l Pl Pl Pl P Pll Pl Pl P  Plll l lll Pl d Cy l l d  ? l l%l! =l" ~l# Cyl$ = l&l4 =l' =l(l)l/l*l, l+ P C]l-l. = l0l2 Cyl1 = <ul3 Cy  Pl6l7lE l8l9 l: l; ϰl< ϰ ϰl= ϰl> ϰl? ϰl@lAlC ϰlB ϰ lD ϰ ϰ PlF lHlI = lJlS =lKlLlM lN = CylO lPlQ lR = = CylT <ulU lV lWl[ lX PlY PlZ P ҵl\l] = l_ll`lolaldlb lc =le lf lglllhlkli lj  = CN lmln I dlpllq tlrllsly =ltlulv t lw lx P =  lzl{l~l| l} t  l l <u =l  C]llll = =l = l = = ~lllll <ul Pl ll <u = kll Il I Ill I I ϛll ll =llll l   Cylll = Cy  <u l ll =lll  = l   =lllll tl t tl <u =ll  l Cylllllll lll Cy ll Cy dlll =l I I <ul l = lllll l ll  Cy ll C] dl <ul = dl l llll   =l   =lll l l ll l l =llll <u  l = <ul ll l ~llll <u =   =ll P Cyl =ll C] <u =lmlmlll <ull = ll tm� = tm jm jmmmm =m =m =m =m = =m =m m = =m  =mm t =  m mm  š mmBmm mm t mm = CNmm m =m CN  ~m!m8m"m-m# m$m)m% m&m' =m( =  ~m*m+ Pm, <u =m.m4 dm/ =m0m1m2 Cy m3 =  = m5m6m7 Cy =m9m< m: m;  d m=m>m@ CNm? mA  mCmlmDmYmEmQmFmLmGmImH CN CN  mJmK = mMmPmN Cy CNmO Cy Cy š dzmR mS CymT mU mV mW ImX I mZm] m[ Pm\ Cym^md =m_ <um`mamcmb h <u =memg mf Cymhmimkmj t  = CNmmm|mn momwmp mq Pmrmt ms mumv = mxm{my Cymz = CN  P m}mm~ =m m i3mm d = m = momnxmnmnmmmmmmmm t = m mmmm m mmm mm mm m mmm m mm m mm m j mmmmm mm m m m m mmm m mm m m m m cg mm mm m mm m m m m mm m m m m mm mmmmm mm Im mm m m mm m m m m J m = mmm =mmm mmm m mm m mm Gm m m m mm mm Cy CNm Pm m tm n� nnn <u d =nnn n nn n = n n P n n n nn = n Cy nnn n n n n n n ct nn:nn1 n n!n(n" = =n# n$n%n'n& CN Cy P n)  =n* Cyn+n,n0 n-n.n/ = ~ dn2 =n3 =n4 n5n6 CN n7n8 n9 In;nm n<n=nL Pn> n? n@ nA nBnC nDnE nF nG nH nInJ nK nMnanNnYnOnSnP nQnR 8w 8wnTnU 8w nV nWnX  c nZn[n\ T n]n_ n^ cn` c nbng nc ndnenf 8w 8w Tnhnlni nj nk c 8w =nnno np nqnr  nsntnu Cy Cynv <unw  tnynnznn{nn|nn}nn~ =n nn nnn <u nnn n n nn n n nn n cQ tnnnnn =nnn P n Cyn Cy t = nnn Pnnn  n =nn =nnnnn =  = nn =nn =n =n =n =n =n =n =  = = ϒnnn Cy n = Cy dnnn <u n n n n nnnnnnnnn n =n  C]n   n  =  =nnn = = =nnnn =n Innnn i$nn Cy  Cy  Vennn C]nnnnn j j =n =n = n = =nn = = j nn no no nn nn nn =n = n nonnnn ~ Cynn  In <u Cy =no�  = oooo = o Cyo L oo ~ Cy = =o o ooofo = oooHoo) =oo =oo! =o =o =oooo =o = =o i =o =o = =o i =o" =o# =o$ =o% =o& =o' =o( = j =o* =o+o4 =o, =o-o. =o/ =o0 =o1 =o2 = =o3 i = =o5o6o=o7 =o8 =o9 =o: =o; =o< =  = o>o? =o@ =oAoDoB =oC =   oEoFoG  =  =oIoW =oJoKoToL =oM =oN =oO = =oPoQ = =oRoS = Ҩ FoU = =oV = d6 =oX =oY =oZo[ob =o\o] = =o^o_ =o` =oa = = d6oc =od =oe = d6 =ogo =ohoiorojoo =okol = =omon = = op = =oq ϒ =os =otozou =ov =ow = =ox =oy =  =o{o| = =o}o~ =o = j =o o oo o o d o o d oooooo o o  o oo CN d Cyo ~o C]oooo oo   = =  oo  o o o oo o  oo  oo  o oo o  ooo  o  C o|owotoqoq1opoooo šoo šo š šoo š ( šo šo š šoo šo šo š šo šo š opFooooooooo šo šo š šo šo šoo  š š šooooo šo šoo [ [ ї š 5o š šoooo š š oo š d šooooooo š š o šo šo šo Emo Em š Emo š šoo š šo š šoo š šop,op šoopo š šp� šp špp š špp š šppp špp š šp š šp p š šp š špp š š pp&ppp šp š š Emp šp šp 8pp$ pp pp p p! p"p# 8p% 8p'p)p( š š šp*p+ š šp-p<p.p8p/p4p0 šp1 šp2 š łp3 ł šp5 p6p7 š š šp9 šp: šp; šp=p@p> š šp? š pA š špB špCpD š špE špGpppHpYpIpV špJpK špL š špMpN špO š špPpQ š špRpS špT špU š š pW špX š ї pZpfp[pbp\p^ šp] š šp_p`pa š š d špcpd š špe w špgpkph š špipj š š Em špl špmpnpo E š š pqpprppspzptpw špupv š špx špy š Em šp{ šp| š šp} šp~p š š  šp šp šp š ypppp špp š šp šp šp š šppp š š pppp šp E] špp šp š š p šp š špqp šppppppppppp š šp Es špp šp šp šp š špp š š špppp š š p š E šppp š šp šp šp š š špppp š šp špp š šp š špp šp š šp šp špp š šp šp špp š š `pppppp p p p p š p pp p p šppppp p p p šp p p p š pppp p Esp š ppp p š p p špp p p špq�pppp š š p š q q šqq šq šqqq q š šq šq q š š q q šq šqq šq š šq š šqq šq šq šq š E] šq šqq#q š šq šqq šq šq! š šq" š šq$q%q+ šq&q' šq( šq) šq* š š q, š šq-q. š šq/q0 š š q2qN šq3q4q5 šq6 šq7qFq8q<q9 šq: š šq; š q=qDq>qAq? š šq@ š šqB šqC š >qE š šqG šqH š šqI šqJ šqK šqLqM š š >qOqqPqgqQq^qR šqS šqTq[qUqWqV š šqX šqY šqZ š  š q\ šq] Em šq_ šq` qaqb qc qd qe qf V qhq|qi š šqjqkqvqlqqqm šqn š šqo šqp š 8 šqr šqs šqt šqu š cqw š šqxqy šqz šq{ š à š šq} šq~q šqqqqq šq š šq šq š š �q šq šq šq š šqq šqqqqqq šqqq š šq šq šq š šq šq šq š q šq šq š šq m šqqqqq q q q q šqq q qq š > šq š šqqq š q š š šqqqq šqqq š šq šq š šq > š šq šqq š šqqqq šqqq šq š šqq š š Em šq šq šq š šqqq šqqq šq šqq š šq šq š šq šq š qs:qrqr šqq šqq šq šq šqq šq š šq šq š šqqqqq šqq š šq šq šq š šqq šq š šqr� šqqqq šq š š šqq š dr šr š šr šr B šrr- šrrrr šr šr š šr šr r š šrr šr šr šr šr š šrr š šr B šrr šrr š šrr šr šr š šr!r'r" šr# š šr$ šr% šr& = š šr(r) šr* š šr+r, š š r.rA šr/r0r6r1 šr2 šr3 š šr4r5 š š E]r7r;r8 šr9 šr: š Em šr< šr= š šr> šr? šr@ š šrBrCrJ šrDrE š šrF šrGrH š šrI B šrKr{rLrbrMrYrNrTrOrQrP s rRrS s = šrUrWrV š Z šrX š š rZr^r[r] r\ Œ š šr_r`ra š yrcrordrirergrf  š rh  š rjrmrkrl 7 rn š š Zrprtrq šrrrs š šrurxrvrw r š š ryrz š š Œr|rr}rr~rrr yr š šr rrr š šrr 7 š š rrrr Zr Z r Z š Zr š šr yrrrrrr  šr Z rr yr y r š šrrrrrr s š  rr  š rrrrr r rrr šr šr š šr šr šrr šr šr šr š mr š šr šr š šr šr šrrrrrr šr šr šr š š rr šrr šr š š lr šr š šr š їrrr š šr šrr š š m$ šrrrr š šr š šr šr š rrrr šrrrr š šr šr šrr šr š š šrr šr šrr šrr š š šr šr m š šrr šr šr šr š šrsrsr š šrr šr šr šr š šrs� šs šss šs š šs šsss š šs šs s š šs šs šs š šs šs šs šs šss šs šs šs š š :ss*s šs š šss šs š šs s! šs" šs# š šs$s% š šs& šs' šs(s) š 5 šs+ š šs,s- š šs. šs/s0 š šs1 šs2 šs3s4 š šs5 šs6 šs7 šs8s9 š B šs;ss<sus=sjs>sO šs?s@ š šsAsB š šsCsD š šsE šsF šsG šsHsI šsJ šsK š šsLsM šsN š E šsP š šsQsRs\sS šsT š šsUsV šsW šsX šsY š šsZs[ š ? šs] š šs^s_ šs`sh sa sb scsd se sf  sg  ? csi š sksl š šsm šsnso š šspsq šsr šss šst š šsvsswssx šsy šsz š šs{ šs|s} š šs~ šs š Bsss šs šs šs š š sss šs šss šs š Em šs š sss šsss š šs šs š šss šs š š s šs š šs šss š š šss šs šs š šs šs š wssssss šs š šs šss šs šs š šsss D š š šss š šs šss š šs šss šs šs šs šs š šss šs š šss š šsss šs šs šs šs šs šs šs š šs šss šs šs š šsss šss šsss šss š šs šsss š šs š E] m šss šsss šss š šs š s š š 8-s šs šs š šs šs š s šsss šs šs šss šs šsss 5 H  šs m št�t t šttttt š H š št m š št št š št št št štt š Em štutu`ttttCtt1ttt š št štt š št št štt š Em št št!t*t" št# št$ št% št&t(t' š š > št) : št+ š št,t- št. š št/ št0 š št2t3 št4 š št5 št6t7 št8 št9 št: št; H Ht< Ht= Ht> Ht? Ht@ HtAtB H H štDttEtvtFtmtGtQtH štI štJtL štK š tM štNtO š 5 štP š štRtSt`tTt\ štU štV štWtXtZ štY B š št[ D š št]t^ š št_ D š štatb štc š štdte štf štg šth šti š štjtk š štl B štntuto štp štq š štr šts štt Em š R\ štw štxttyttztt{tt| t} t~ š tt t š tt 8t 8 ttttt tt š t t t š tttt t št š t t š t t t š tt tttt t t št tt t š š t ttt štt š t t št š št št št štt št š štt š šttt šttttt štt št št št š t št š št št št E] šttttt št št št t š štt št št št š š ittt š štt št š št š Ettt š štt št š š mt št š štt š š štt š štt št š št š tuXtu9tututtt št š št št š [t štuu� š šuu šu cu : D u šu š E šu uu šu š šu šu u šu š šuuu šu šu š >u š >u >u > š šuu š šuu(uu"u š šu šu u! š m š šu#u$ š šu%u& š šu' š u)u/u* šu+ šu, š šu- šu. š u0 šu1u4 šu2 šu3 š u5u8 šu6 šu7 š š du:uMu;u? šu<u= šu> š šu@uE šuAuB š šuC šuD š uFuHuG š š uI šuJ š šuKuL š E] šuN š šuO šuPuQ šuRuU šuS šuT šuV š šuW šuY šuZ šu[ š šu\ šu] šu^ šu_ š uau šub šuc šudue šufuzuguwuhumui šuj uk ul š un uour upuq usuu ut š uv š uxuy š u{ u|u}uu~uu u š u š u u u šuu šuuuu šu š šu šu šu šu šu šuu šu šu š šu šu šuu šu š < šu šu šu šuuu šu šu š šu šuu šu š šu šu šuu šu š  šu š šuu šu šu š šu šu šu šu šu šuu š D šuu šu šuuuuuu u u u u š u u u u u š uuu u uu u š u u u u u š šu š uvuvu šuuu š šuu šu š šuuuu šu šu š  šu šu šuuu u u u u u u u B u u u u  uu  u  Buv šu šuu š šv� d švvv vv  v + +vv +v + +v + šv vv v  B @' Bv š >v B{ Bv švvHv š švvv5vv'vv$vv!vvv v š vv š 8 š v"v# š v%v& š dv(v0v) v*v-v+ šv, š šv. šv/ š v1v2 v3 v4 š v6vBv7 v8v>v9 v:v< v; š v= š v? v@ vA š vC vD vE vF vG švIvavJ švKvO švL švM švN š H3vPv^vQ š švR švSvT švU š švV švW švX švY švZv[ šv\ šv] š š šv_ šv` > švbvrvc š švdve š švfvg š švhvi š švjvk š švl švm švn švovp švq š P š švsvt š švuvv švw švx š švy švz šv{v| š šv}v~ šv š šv šv 5p švwqvvvvvv švvvvvvvv šv v v š vvvv v šv Hv v š vvvv v šv š vvv v v š vvvv š d švvvvvvvv vv švvv š v š v vvv š š v š vv v v š vvv v š v v š vv vvvv š v vv dv v v v š š šv šv šv švvvv šv š švv š š >vvvvvvvv   švv š 7vvv š švv š s vvv šv š švv šv š vv š vwvw v švv švv š šv šw� š šww š šw šw šww šw š šww š š šw w ww w šww š їw ї š šww š šww šw š š šwww š š dwwCwww š š H w w!w+ šw" šw# šw$ šw%w& š šw'w( š šw)w* š š w,w6w- š šw. šw/ šw0 šw1w2 š šw3 šw4w5 š šw7 šw8 šw9w@ šw:w; w< w= w> w? š wA š šwB š šwDwEw[wFwUwG wHwQwIwMwJ wKwL š d šwNwP wO š šwR wS wT š wV wW wX wYwZ š w\wkw]wfw^wb w_ w` wa šwc wd we š wgwh wi wj š wl wm wn wo wp wrw šwswtw wuwv šww šwx šwy šwzw šw{ šw|w}w šw~ šwwww š šw šw šw  š šw šw 5 š šwwww š šww š šw šw š šww š šww šww š š šww š šww š šww šw š šw š B&w š šw šww šw š šww š šww šw šw šw š šw > šw šw š šw šww š šw šww šw šw šw šw šw šw š šww š šw šw š šwwywxwxww šww šw šw šw š šw šw y šwxwwww šw šw šwww šw šw š w šw š  š šw šw šw šw šww šww š š www šw šw š šww šw š šw šw šw š šwwx wxw š šw šw šw šwwwww šw šw š šw šw š šx�x šx š šx šx š šx šx šx š x šx x š šx šx š šx šxx š šxx šx šx šx šx š šxxWxx,xx% šxx šx šx š šx! šx"x# šx$ š š šx&x' š šx( šx)x* š x+ š x-x7 šx.x/ šx0 šx1 š šx2x3x5x4 š š x6 š > šx8x9xFx:x@x; x< x= x> x? š xA xBxC xD xE š šxGxM xH xI xJ xKxL šxNxR xOxP xQ š xS xT xU xV š šxXxYxxZ šx[x šx\x]xrx^xhx_ šx`xexa šxb š šxc šxd š šxf šxg š šxixjxoxk šxl š šxm šxn š šxp šxq š šxsxt š šxuxv š šxwxx šxy šxz šx{ šx| šx} šx~ š š Bx š šxxx šx šx šxxxx šx šx šx šx šx šx š š �x šx šx šx šx šx šx š š �x x x x x x x x x x x � šxx š šxx šx š šx šx šx š їxyoxyxxxxx šx š šx šxx š šx šx š x š šx šxx š šxx šx šx šx šx šx šx š šxx šx šx š @ šxxx šx šx š šxxxxxxx šx š Ax š A šx š šx š A šx šx šx A šxxxxx š šxx šx šx š šx š Exx šx šxx šx šx š š =xx šxx š šx šx š šx šxx š šx š mxy x šxyx šx š šx šx x šxy� šy šy š šy šyy š š c šyy š šy š šy šy y š šy šy š yy0y šyy*y šy šy š šyy š šy šy šyyy# šyyy!yy A  5R š šy" š y$y'y% š šy&  šy( šy)  k 5Ry+ šy, š šy-y. šy/ š š y1yOy2y=y3 šy4y: šy5y6 š šy7y8 š šy9 š šy; šy< š y>yJ šy?y@yEyA šyB š šyC šyD š 8 šyF šyG šyHyI š š šyK šyL šyM šyN š yPyiyQy[yR šySyWyT šyU š šyV š yX š šyYyZ š @ šy\ šy]yh šy^ šy_ šy`ya šybyeyc š šyd š yf š šyg š š šyj šykyl š šymyn š š ypyyqyyr š šysyty{yu šyv š šyw šyxyy šyz š š Dy|yy}yy~ šy š šyy š šyyy šyy š šyy šy š šy > šy š šy š > šy šyy š šyy šy š  š šyy šy šy š šy > š šyy š šyyyy šyyy š ( šy š šy š šyy šy š >y >yy >y >y >y >y > >y >y š >yyy š šy šy šyy šy šy šy š šy šyy šyyyyyyyy y y y š y yyyy y š š y š yy yy yy šyyy yy y š šy šyy š yyy y y y y š yyy yy šy d y y y y š šy šyy š šyy š šyy š šy š y{yzyz yyz z� šz šzz šz š šz šzz š šz šz Az šz šz š >z š Dzz2zz zz šz šzz z šz šz š šzz š šz šz š Ʒ šzz z' šz! šz"z# šz$ šz% š šz& š >z(z. šz) šz*z+ šz, šz- š B šz/ š šz0 šz1 š z3zBz4 šz5 šz6z<z7 šz8 š šz9 šz:z; š ? š z= šz> šz? šz@zA š š > zCzDzazEzOzF zGzKzH zI zJ š zL zMzN š zPz\zQzXzRzUzS zT š zV zW š zY zZ z[ šz] z^z_ š šz` š zbz{zcznzdzh ze zfzg šzizk zj š zl š zm šzozw zpzq zr šzszt šzu šzv š š zxzy zz E z|z}zz~ z z š zz z š z z šz{zzzz šzz šz šz šz šzzzzz š z šz šz šzzzzzzzzzzz z z š z z š z šz z zz š zzz z šz š zz zz z 8 z zz šzzzz zz zzz šz šzzz z š zz š š zzzz z z š zzzz š z šzzzzz zzzzz z š z zz š z zzzz z z z šzzz zz zz š zzz š š šzz šzz šz š š šzz{ šz šzz š{�{{{ G{ G{ G  G{{{ ' G G { G{ G G { š{ š D š{{^{{R š{{{6{ š{ š{{0{{% š{{{${{! š{ š{ š{{ š{ š š{{ š š {" š{# š š š š{& š{'{( š{) š š{*{+ š š{,{- š š{. š{/ š{1 š š{2{3 š š{4{5 š š{7{A{8 š{9 š š{: š{; š{<{= š{> š š{?{@ š š{B{C{E{D -   {F{G{Q{H  {I {J {K{L  {M {N{O  {P E   E š{S š{T š{U{V š š{W š{X{Y š{Z š{[ š{\ š{] š š {_{l{` š š{a{b{d{c š š :{e{f š{g š{h š š{i{j š ({k š ( š{m{n{u š{o{p š š{q{r š{s{t š ( š{v š{w{x š{y{ š{z š{{ š{|{} š š{~{ š{ š{ š š{ š{ š š{ š{ š{{ š{ š{ š{ š{ š š{ š{ š{|W{{ š{{ š{ š{ š š{ š{{{{ š{{{{ : š š >{{ š > > š{{ š{ š{ : š{ š š{ š :{| {{ š{{{{{{{{{{{{ { š š{ š{ { š{{{{ š š š{ { š{{ { š { š{{{ {{ { { š{ H{{ š š { { { E{{{ {{ {{ š { š{{{ { š {{ š{{{ { { { š {{{ š { { š{|{{{{ š š{ š{{{{ š š{ š c{|� š{{{ š{{ š š{ š + š{ š{{ š š š| š|| š š| š| š :| š| š| š| š B š| š| |9||2||||| | | | š ||||| | š | š | | š | |-|!|)|"|% |# |$ š|&|( |' š š|* |+ |, š |. |/ |0 |1 š |3 |4 |5 |6 |7 |8 š|:|L|;|E|< |=|A|> |? |@ š |B|C |D š|F š|G|K |H |I |J š š š|M|N|R š|O|P |Q š |S |T |U |V š|X|o š|Y š|Z|[ š|\|c|] š|^ š|_ š š|`|a š|b š š |d š|e š š|f|g š|h š|i š|j š|k š š|l š|m|n š š |p|r š|q š|s š|t |u||v||w š|x|} š|y|z š|{ š|| š > š|~ š| š| š š| š| š| š A|| š| š| š >| š š| š|| š ` š š||| š| š|| š| š š|| š š|| š| š| š| š š| > š|| š|||| š| š š| š| š| > š š|| > š| š|| š š| š| š||| š > > š| š| š| š > š|||}||||||| š š| š|||| š š š| š| A š š|| š š š|||| š š|| š|| š|| š š| š| š| š| š| ||| š| š| š| š š| š| š | š| š|| š|| š š| š|| š š š|| š| š š|};||| š| š| š| š š| š| š|| š š |}0| š š||}|} |}| š| š| š š| š}�} š} š š} š}} š š š} š} š} š} š } }} š}} } } š š}}}}} š  E š} š } š š}}}! š}} š}} š }"}- š}# š}$ š}%}& }' }( }) }* }+ }, š š}. š}/ š <}1}2 š š}3 }4}5 }6}7 }8 }9}: 8}<}}=}}>}k}?}R}@}J}A š š}B š}C}D}G š}E}F B š B}H}I š š }K}L  š š}M}N š}O š š}P}Q š  š}S}c}T}X š}U}V š š}W  B}Y}^}Z š}[ š š}\ š}] š B}_ š}` š š}a}b š š}d}g š}e š}f + }h š}i}j B š @'  š}l}m}}n š}o}z}p}v}q }r}t}s E] }u š }w }x }y š }{ š}| š}} š}~} š š š} š} š} š} } š}} š}}}} š š} š } š}}}} š}}} š} š} š }} }} } } }}  }} } }  " } }  š }} š}} š š}} š š}} š}}} š} š} š ( š š (} š š}} š š }}} š š}} š}}} š}}} š } } š }} š} š}} š š} : š} š š} š c š} š} š}} š š}} š} š} š š} > š}} š}} š} š} š š} š} š} š}} š} š š} š}} š} š š}} š > @'} š}}} š}}}} } š š A} � }} š B š}~}~E}~,}~ } š š} š}} š š}} š š} š} š~� š~~ š~ š~ š~ š š~ š~ š~ B š š~ š~ ~ ~~ š~ š~ š š~~~ š~ š š~ š ~ š~~'~~ š~~ š~ š š š~ š~ š~ š~ ~!~# š~" š ʗ~$ š~% š š~& š (~( š~) š~* š š~+ š~-~8~.~7~/ š š~0 š~1~2 š š~3~4 d~5 š~6 š š š š~9 š~:~; š~< š~= š~> š š~?~@ š š~A š~B š~C š~D š ~F š~G~~H~n~I~W~J~O~K š~L š š~M š~N š Z š~P š~Q~R š~S š~T~U~V š š ~X~c~Y~[~Z š š  š~\~] š š~^~_~a~` š š š~b š~d š š~e š~f~g~k š~h~i~j š  š~l š ~m š ~o~}~p~v š~q š~r~s š š~t š~u š ~w š~x š~y š š~z~{ š š~| š~~~~ š~~~ š š~ š~~~ š E š ~ š ~~~~ š 7 ~~ š E~ š~ š š~~ š š~ š~~~~~~~~~  š~ > ~~ š r š R\~ š~~ š~ š � š~ š ʗ š š ~~~~ š~~ š~ š~ š~ š~ š~ š~ š~~~ š~ š š~ š~~~~ š š ~ š š ~ š š ~~~~ š~~ š š~ š~ š~~ š š~~ š 1 š š~ š~ š~ š~~ š~ š~ š~ š š F~ š~ š~~~~ ~~~~ š~ ~ š š ~ ~~ ~ š~~ š š  ~ ~~~ ~ š~~ š ~ ~ ~ š~~ š~~~ š š~ š~~ š D š~F š~~~ š š~ š~~ š~ š š~ š~� š š š š š š š š B š  š     š  š š   š š š !."(#% š$ 5R&' š  (),*+ H ʗ- š  š/702 š1 4 (34 H c56 S� F8?9<:; + < a=> E> RM Ry R@CAB  GDE F W PG]HLI š šJ šK š šMNZ šOP šQR š S š šT šUV šW šX š šY D š[ š\ š š ^{_k š`ab š cg šd šef š š h Ei šj š š šl šmnro šp šq š š sxtvu š šw š š šy šz š š| š}~ š :   ( H 5 c  š : 5@ š d š š   š  š    š  š  š  š   š  š š š š š š      š š š š š š š š š š š  š š š B š š š š š š š š > š š š š š š  š š š š  š š š š š š š š š š š š  š� š š š š š š š š š š š š š .& š š š   š š š  š  š š š š  š š š!" š š#$ š% š š š'( š š)* š š+ ,- š š/ š0 š12 š3 š š45 š š67 š8 š š9: š; š< š š=> š? š š WABCcD] šE šF šG šHI šJQ šK šL šMN šO šP š > šR šS š šTU šV šW šX šY[ šZ š D\ š D š^` š_ š ša šb š d šef šghz ši šjk šl šmu šn šop šq š šr šs št c š šv šwx š šy š k{ š| š š}~ š š k š š š š š š š      B  š š š š š š š š š š š š š š E] š š š š š (       š    c   š     š š š š š š š š  š š š š š š š š š  š š š š š š  š š (  š (  š � š š (  š š š š š š      ( >� š š E] š š š 8-  š š / š  š š š š š š ! š š š  š š  š š š š š š"+#($&% š š >' š š > š)* š > š, š- š. š > š0Q1H2A39475 6   š 8  š:>;=<  š   ( (? (@ š (B šCFD šE š ( šG š š ( šIJN šK šL šM š ( (OP š ( šRrSbTYUW šV š  X  šZ][ (\ (  (^` (_ š (a ( š (cndhe šfg ( š š (ik šj  šlm  š  šo šp šq š š st}uyv šwx  ( ( z š{|  ( (  š~ š  ( (  š š š š š  š š š š š š š ? š š ? š š š š š  š š š š š š š š š š š š  š š š š š š       8 š š š š š D š š š š š š š š š Em š š š š š š š š š š š š  š š š š š š š š š š š š  š š š š š š š š@ š š š š š š š š š š š š š� š š š š � š š š š š  š š š  š š š š š E š š š 0! š š š š  š š š ")#&$ š š% š ' š š( š *-+ š š, š . š š/ š 1 š29364 š š5 š 7 š š8 š :=; š š< š > š š? š AXBN šC šD šEF š šGHK šI šJ š šLM š š šOPQ  š šRS šT šU š šVW š š YmZf š[\c]`^ š_ š š ša šb š d še š šgj šhi š š H šk šl š nqo š šp šr šstx šu švw š š y}z š{ š| š š ~ š š d š š H š š  š  š š š m$ š š ї š š  š š š š < š š š š š c š š š š š š š š š š š š š š š š R š š š š š š > š š š š š š š š š š š š š š D š š š š š š š š š  š š š š š š š š š š š š š š š š š @ > > > > ʗ > š š E] š š š š š š Em š š š š Ʒ š š  š š š� š š š Eqj š  š  š š  d š š š š š š š š! š š š š š š š š š š"L š#$= š% š& š'( š)3* š š+, š š- š. š/ š01 š š2 > š4 š š5 š67 š8 š9 š š: š;< š 4 š š>? š@ šA š šBC šD š šE šFG šH š šI šJK š šM š šNO šP]Q šR š šS šTU š šVW šX šY š šZ š[\ š B š^ š_ š š`a šb šc šd š še šfg šh ši š š >k š šlmp šn šo š 8 š rst šuv w x yz {|~} š  š š š š š š š š š š  š š š š š š š š š š š š š š š š > š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š A š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š c š š š š c šE š š š š š š š š š  š š š š š š > š š š � š š š š� š š  š š š š > š: '    š   š š  š š    š š >!  š "#$ š %& š š (/ ) * +,- š . š 0 18263 45 š š7 š 9 š;@ š< => ? š AB š CD š FGqHbI\JWK šLQ šM :NOP š : : šRS : šT šUV š > š : šX šYZ[ š > > š] > š^_ š` ša š > šckdge šf š > š šh ši šj š :l š šm šn šo >p > šru šs št š >v~w| šxy šz š{ š š > š} š : š š š š š > š š š š > š > š š š š š š š š š š ( š š š š š š š š š  š š : š š  š š š š š š 5a š š š H š š š š š š š  š š š š š š š š  š š š š š š š 0 š š š  š š š š š š ( š  ( š š š š š š š š š š š š š š š š š š >" š š  š š š š š� š š š š š š š š   š š š š š š š  š š š š š š š š š š š š š š š š š š! š š# š$- š%& š' ( š š)* š š+, c š. š š/ š Em1;28364 š5 š š š7 š9 š š: š < š= š>@? š š šAB š šC šD šFaGHIX šJ šK LM šN šO šPS šQR š  šTV �U š šW š DY šZ][ š\ š = ^ š_| š`an šb šc šd šef š šg šh šij š škl š šm  š šo špq š šrs št š šu švw š šx šyz{ š š} š~ š š š š š š š š š š š  š š š š   : : : š š š š ҉ š š E] š š š š  š š š = š š 8 š š  š š š š š š š E] d š š  š š š š š š š š š š š š š š š š š š š š š d š š E] š š d š š  š š š š Em š š ̀ š8% š  š š š š š : š @ >  D D š š :� >  @ D š š š š š š š š  š š š š š  š š ҉ š$ š š š š š š š š š š š š!" š# š š  š&+') š( š * š š ,5- š. š/0 š1 š š23 š4 š k š6 š7 š š š9:V;J<> š= š? š@EA šB šC šD š šF šG š šHI š š šKLT šMNR šOP šQ d šS  šU Œ šW šXY^ šZ[ š\] H H H m š_ š` E Ebcdeh šf g š šijmk š šl 8 šno šp} šq šr šst š šuv ,w ,x ,y ,z ,{ ,| , š ,~ š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š E E] š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š HOC š š š š š š š š š ʗ š š š š š š š š š > š š š š š š š� š > š š š > š š š š š A š $   š š š  š š š š  š š š š š 8 Ʈ Ʈ Ʈ š! Ʈ"# Ʈ š š Ʈ%<&: š' š( š)*6+5, š- š. k/ k0 k1 k2 k3 k4 k @ k š 78 5a š9 š B š š; š š= š>?B@ šA š š šDIE šF šG š 5H š JK šL šM šN š šPQjR š šS šTU[ šVW šX šY š šZ š W\ š] š^b_ š`a š šc šd e f g h i 8 kulr šmn šo šp š šq š st š š v š šw šxy šz š š{ š|} š š~ š š š š m m m m l m H H m m m H m H mD H m H m m m H l m m H m m$ m m$ m l m š š š š š š  š š š š  š š š  š  š š š Emz š š š š > š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š D š D š š š š š š š š š š š š š š š š š š ؠ š�  š š š š š š š š š B š š š š š š š š š š š š š š š š š š @ š0 š š š š!" š š# š$% š š&' š( š) š* š+ š, š š-. š/ š š1n2S3C4 š5 š6 š š78 š š9: š; š š<= š> š š? š@A šB š R š šD šEF š šGH šI š šJK šL š šMN šO šP š šQR š E šTWU š šV  šXg šYZ š[ š\ š š]^ š_ š` ša š šb šc šde šf š  šh š ši šjkm šl š   šop šq šr šs štu šv š šwx šy šz š{ š š|} š š~ š B š š š š š š š š š š š š š š š š EM š š š š š  š š š š š š š š š š š š š š š š + š š š š š š š š š š š š š š š B{ š š š š š š š š š š š š š  š š š š š š š š š š š š š š S š š š B š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š   š� š š š š  š š       :  š š š š š š\7* š š š š!" š š#$ š% š& š' š( š š) š + š, š- š. š š/0 š š1 š23 š š45 š š6 < š8E š9: š ;< => ? @D AB C š š FRG HI J K LM N O P Q š S TU VW X Y Z [ A ]t^o_c` š ša šb B šd še š šf šg šhi š šjk šl š šm šn  š špq šr šs š  šu Avzw šx š šy  š{ š| š š}~ š š š š B š š š š š š š š š š š š š š š š  š š š š > š š š š  š š š š š š š š š š š š  š š š š š  š š š š š š š š = š š š š š š š š š š š š c š š š š š š š B š š š š E]X! š š š š š š š d š š š š š š š  š š  š š š š š š š š� š š š š š š m m y    š š š š š š š š ~ š  š š š š š  š š š š š š"X#<$4%,&) š'( š š* š+ š š-1.0 š/ š š 2 š š3 š59 š6 š78 š š Em: š; š š =S>K?A@ š š BIC šDGEF š  (H š š : šJ šLNM š š EmOQP š šR š ( š šT šU šV W š YrZj[d\b] š ^_ š` a 8 šc š eh šf šg š Esi š š šklo šmn š š špq š š stxu šv š šw šy| šz š{ š š} ~ š š > š š š š š š š š } š š š š š š  š š š š š š š  š š  š š š š š š š š 9% š š š š š š š š š š š š Em š š š š š š š š š š š 4 š š š š š š š Em š š š š š š  š š š š š š  š š š š š š š  š š š š š š š š š š š š Em š š š š �  š š š š š  š š  š     š š š š  š š š Em š š š š @+( š š m š " š! š #$&% '   š) š* š ,2- š š. š/ š0 š1 š3 š š45 š6978 š š :: š; < = > ? ( ALBHCF šDE š Em š šG š šIJ šK š 9% šMTN šO šPSQ šR š š d šU š šV šW šYHZ[\l]e^b š_ š`a š š šcd š š šf šghj ši š E] šk š mnworp š q šst š šuv š š E]xy šz š{ š| š} š š~ š š š š š š B š š š { } š š š š š  š š š E] Es š š š š š š š  š š š š š š  š š š š š š š E š š š  š š š  š š š š š E] š š š E š š š š š š š š š  š š š      š š š š š š š š š  E š š š š š š š š š š ї š š š  š š š� š š š   š š š  š š  š š š  š š š š  š š0  š š š  H š š š !+ š" š# š$% š& š' š( š š)* š ʗ š, š- š š./ š > š1D2;394 š576 š š 8 š š: š Es š< š=A>? š@ š B š šC š E šF šG š IJ|K`LUMQN šO šP š š šRS š šT š V\WZX š šY š š[ š ] š^ š_ š š aibe šc šd šf š šgh š š jnk šl šm š šotp šq š šrs š š @ uwv š š x šy šz{ c  c}~ š š š š š š  š š š š š š š š š š š š š š  š š š š š š š š š š š  š š š  š š š š š š š š š š š š  š š š Em š Em š Em š š š š  š š š š š Em š š š š  š š š  š  9% š E š š š š š  š š š š š E] š š š š š ]= š  š š š š š š � š š š š  š š  d š š   š      š ! š š š š š š š š  š š š š š" š#$<%+ š&') š( 9% š š* š ,8 š-. š/7 š0 š1 š2354 š 6 š š š9: š; š š š š>?E š@A šB šC šD š š FSG šHRIN šJK š šLM š š RM OPQ š š š T šU\ šVW[ šXY š šZ > š š š^-_`n šab šc šd e f gh i j kl m 8 oq šp šr~ šs št šu šv šwx š šyz š{ š š| š} š š š š š š š + š% šC š š š š š  š  š š š š š  š š š  š š  š š š š  š š š š š š š š  + š š š š š š š š š  š š š š š š š š š š  š  š š š š š  š š š š š š š š š š š š š š š  š š š š š š � š š š > š š š š š š š ( š š š š š >  š š š š š š š š š š š% š! š š š š š š š š š" š# š$ š &9'/( š)+* š š,.- š š š 031 š2 š š 46 š5 š š78 š: š;?<= š> š š š@A šB š š DEFGdHWISJPKNL šM š š šO š Q šR š š T šU š šV š (X_Y šZ] š[ š\ š ^ š š š` šab š šc šeufk šgh š šij š šlsmqnp o š šr š št š š vw{ šxy šz š š š|}~ š š š  š š š š š š š š š š  š š š š š š š š š š š š š š š š  š š š š  š š š š š š š š š š š > š š š š š š š š š š š š š š š š š š š  š š š š š š  š š š š  š š š š š š > š š š š > š š š š š š š  š š š š  š šR, š š� š š š š š š š š š   š š š  š š š" š š š š š š š š š š š! š š#$(% š& š' š š š)* š š+ š -<. š/40 š1 š š23 š 5 š69 š7 š8 š š:; š š=D>? š @ šA šB š šC šEJ šF šG šH šI š (K šLNM š šOP š šQ šSxTfU]V šWZX š Y š[ š\ š š ^b š_` š ša š šc šde š šgm šh ši šjk š šl šnto šprq š šs š š šu šv šw šyz{| š} š š~ š  š š š š š š š š š  š š š š  š š š š š > š š š š š š š  š š š > mO š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š  š š š š š > š > š š š š š š š š  š š š š  š š š   š š š š š š > š� š  š š š   š š  š š š š š š š š š š  š š š 5p* š# š š š!" š š E š$ š%&' š( š) š š > š+,B-6.2 / š0 š1 š š34 š š5 š7>8<9; : š š= š š > š?@ šA š š CKDG šEF š š HJI š š š + šLM š šN š PjQ šR]S šTX šU šVW š š Y š šZ š[ š\ š ^e š_`ba š + š šc šd š Bf šg šh š ši šk šl š š nopqrs|tyuw šv š 5px š 5p š šz š{ š} š š~ š š š  š š š š š š š š š š š š  š š š š š š š š š š š š > š š š š š š š š š š š š  š š  š š š š š > š š > š š š  š š š š š š  š š š š š š 5 š š š š š š š š š š š š š š š š š 5p š š š š c š š š š š š  š š š š c š c š š š š š š  š š� š š   š š @'   š +  š š š  š 5 š š š š š š š š š š š š š š š š! š" š#$ š E] š& š'( š )+* š š, š š .D š/0;182 š3 š š4 š5 š6 š7 š ( š9 š: š š< š=> š š?@CA B š šEGF š š šHIiJQKvLcMXNTORPQ EM A S  >U RVW B @ 5aY_Z\ EM[ R B]^ < k H R H`ab 4 R  5Rdnelfigh D R A S�jk 5 A 5 Am R EM Ror 4p 4q R >s Dtu < R  B&wx}y{z < D < <| < ~ @  c   5 5a 5  5a  H   H @ H H @    @  R   R A R A A A A A A 5R  EM 5R 5R EM EM EM   > > > > B& B& 5 B& 5 k 5 k 5 k R 4 R R 4 R 4 4 R B B R B B A R A A A R 5 R 5 5 5a 5 5a R  D   D D D R R R R R R < R < < > < > B > B > B  S�  S� A S� S� A ?& H� H H H H R H R H H R  R  R R  R R R R R R R R 5 5 D 5 D D 5 D D B B D D B B! B" B#$% B H H '>(3).* + , - / R 01 R 2 R49 R56 4 R78 4 R 4 4: 4; 4< 4= 4 5a?E 5a@A R 5aBC RD R 5a RFK RGH <I < RJ R < <L <M <NOP < RjScT^UW šV š B{X š šY šZ š[\ š š] @' š_a` S B S Bb B Bdfe š B šg šhi š B{ š Sk3lm�n7opqr~sztwu Hv H H @ x @ y @ { |} R R R A A A A A A A A 5R 5R A 5R  EM EM EM    > B& > > B& 5 B& 5 k k 5 k R R R 4 4 4 R R B R B B A R A A R 5 R 5 5a 5a 5 5a    D D D R R R R R R < < > < > B B > B   S� S� S�      H H H @  @  @   R R R A A A A A A A A 5R 5R A 5R  EM EM EM    > B& > > B& 5 B& 5 k� k 5 k R R R 4  4 4 R R  B R B B A R A A R 5 R 5 5a 5a 5 5a    D D D R )!&"% R#$ R R R R < <'( > < >*1+., B- B > B / 0 S�24 S�3 S�  5 6  89i:S;G<C=@> H? H H @ A @ B @ D EF R RHMIJ R AK A AL A ANPO A A AQ 5RR 5R A 5RT[UYV  EMW EMX EM  Z  >\b]`^ B& >_ > B&a 5 B& 5cfd ke k 5 k Rg Rh R 4jkwlrmo 4n 4 R Rpq B R Bst B Au R Av A Rx~y{z 5 R 5| 5a} 5a 5 5a    D D D R R R R R R < < > < > B B > B   S� S� S�      H H H @  @  @   R R R A A A A A A A A 5R 5R A 5R  EM EM EM    > B& > > B& 5 B& 5 k k 5 k R R R 4 4 4 R R B R B B A R A A R 5 R 5 5a 5a 5 5a    D D D R R R R R R < < > < > B B > B   S� S� S�      f3   H H H @  @  @   R R R A A A A A A A A 5R 5R A 5R%#  EM! EM" EM  $  >&,'*( B& >) > B&+ 5 B& 5-0. k/ k 5 k R1 R2 R 44N5A6<79 48 4 R R:; B R B=> B A? R A@ A RBHCED 5 R 5F 5aG 5a 5 5aIL J K  D DM D ROXPUQT RRS R R R R < <VW > < >Y`Z][ B\ B > B ^ _ S�ac S�b S�  d e  ghiujqknl Hm H H @ o @ p @ r st R Rv{wx R Ay A Az A A|~} A A A 5R 5R A 5R  EM EM EM    > B& > > B& 5 B& 5 k k 5 k R R R 4 4 4 R R B R B B A R A A R 5 R 5 5a 5a 5 5a    D D D R R R R R R < < > < > B B > B   S� S� S�     1 5 5 H H H @  @  @   R R R A A A A A A A A 5R 5R A 5R  EM EM EM    > B& > > B& 5 B& 5 k k 5 k R R R 4�  4 4 R R B R B B A R A A R  5 R 5 5a 5a 5 5a    D D D R#  R R R R R < <!" > < >$+%(& B' B > B ) * S�,. S�- S�  / 0  R2 R D4856 D Rk7 : Rk D9; :: D < A=S>K?E@ 5pA 5pB 5pC 5pD 5p 5pF ( 5pGH ( 5pIJ ( 5p ( (L (M (N (O (PQR ( 5p 5p TaU[V 5pW 5pX 5pY 5pZ 5p 5p\ ( 5p]^ ( 5p_` ( 5p ( (b (c (d (e (fgh ( 5p 5p jklmn o pqx >r >s >t >uv > >w > Ry > >z{| >} >~ > < > > > < > < B& k B A A A A A A A A A A   R > S� ( ? 5p     S š @' š A š > š : : : : : š : , : , : , : , , : , : : , : : : : : : : š š � RM RM RM RM š RM � RM � RM RM � � R\ � R\ R\ � R\ R\ R\ R\ R\ R\ RM RM š  � RM RM RM RM š RM � RM � RM RM � � R\ � R\ R\ � R\ R\ R\ R\ R\ R\ RM RM šw� Rk D D D Ry         A  A   A R A R R A R R R R R   L!2".#)$(% & '    S* S+ S, S- S / 01  3A495 + 67 + 8  +:=; B< B + B B>? S@ S B SBC S @'DHE B @'F @'G @' B BI BJ BK  MdNYOTP RQ RR RS R RU 5V 5 RWX 5 R 5Z_[ A 5\] A^ A 5 A` 5 Aa Abc 5 A 5ekf ʗ 5gh ʗi ʗj ʗ 5 ʗlq ʗm ʗno Hp H ʗ H Hr Hs Htuv H R R x y z{|} R~ R R R R 5 5 R 5 R 5 A 5 A A 5 A 5 A A 5 A 5 ʗ 5 ʗ ʗ ʗ 5 ʗ ʗ ʗ H H ʗ H H H H H R R  š  @  @  @  @ @  @  @  @   A  A A A A A A A 5 5 < 5 < < 5 < < B B < < B B B B B @ @ š š  š > B B{�  š  š  Rk D D D Ry      D > @  D D > @ Rk D Ry D D > @ Rk D Ry š š š š  > > > > > > š > > > > > > > > š šsH0%  H H H H š H! R" R H#$ R H R&+' EM R() EM* EM R EM, R EM- EM./ R EM R1<27 R34 R5 R6 R R R R89 5 R:; 5 R 5=B 5> 5?@ A 5 C D EFG H H šI`JUKPL AM AN AO A š AQ R ARS R AT A RV[ RWX D RYZ D R D D\ D] D^ D_ D Rag Rbc R Rde Rf R R Rhm Rij <k < Rl R < <n <o <pqr < A A štuv|w x y z { š } ~ 4  4 4 4 4 4 4 4 B B 5a B 5a 5a B 5a 5a < < 5a 5a < < < < < š >  B& A  > R B k  š A š  S� Ab š š š š š E š š š š š  š š š š š E E š š š š š š š š b š š š š š š š š š š š Z š š š š š š š š E š" š š š š š E š š š š š š š š š H š š š š E š š š š  š  š š  š š š š� š š š š š š š š š  š š  š š š š š  š š š š š  š š š š š š š š š! š š #R$P š%& š':( š) š* š š+, š- š.4/ š š0 š12 š3 š š š56 š š78 š š9  š;A š<= š> š š? š@ ( šB šC šDME š šFG š šHI šJ š šKL š š (N š šO  šQ š š S šT š šUV šW šX š šYZ š[ š š\] š š^_ š` š ša š c šcdx šef š šghpi šj š škl šm š šno š š E šq šr šst šu š šv šw š D šy šz{ š| š š} š~ š š š š š � š! š š š  š š š š š š š š š š š > š š š š š š š š š > š š š š š š  š š š š š š > š š > š š š š š š š š š š > š š š š š š š š š > š š š š š š š > š š š š š > š > š š H š š š   š š š     8  F 8  8  8 8 8  š š š� š š š š   š  š š š š š š     8  š š š š š š š š E š E š š "H#*$ š š%& 8' š š( š) š+B,0 š- š./ š š162534 š š š š7 š89 š: š; š< š= š š>? š@ šA š šC šDGE š šF š m$ šIkJ[ šKLQM šNP šO š š šRS š šT šU šVW š šXY šZ š š \]j^e š_`a š šb c d 8f š šgh š ši : š š l šmnv šop š šqru st DZ w šxy~z| E{  } E   - E E E  E E  E š š š š š š : š š š š š š š š š š 7 š š š š š š š š š š š š š š  š š š š š š š  š š š š š š š š š š 5 š š š š š 5 š š š š š š š š š š š <u š   š š š š š š + š š ] š š B  B +   B š š š š F š š š š  š š š š  š š  š� š +  š  š  š š š š š š š š 5 š š š B š š  š š  š E] š *( š š š !%"# š $ š š š& š' š š) š+ š,6 š- š. š/0312 š š45 > š š š 8q9Z:V;B š< š=>A?@ š š šC šDETFOG šHLI JK š < M šN š šP šQ š šR šS < 5 šU H š šW šXY š š[ š\d]a^_ š ` š š šb šc š šefh šg š i š šj škl šm šn šo š šp B >rys štwu šv š š šx š zz{ š| š}~ š š š š š š š š š š š  š š š š š š š š š š šS š š š š š š š > š š š š š  š š š š  š š š š š š š š š š š š š š š š š š š  š š š š š  š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š � š   š  š  š š š š š š š š š š š  š š š š š  š!9"-#)$&% š š ' š š( š *, š+ š š .6/201 š š34 š 5 š š 7 š š8 > š:F;A<> š= š?@ š šBD C šE š š GMHLIKJ š š > š š HNOP šQR B{ š š TUViW šXaY[ šZ š\_ š] š^ š š` š b šcgde šf š š šh š B{j}kxlumo šn š pr šq š st š šv šw š šyz š { š| š š ~ š š B{ š š š š š š š š š š š š  š š š š  š š š š  š š š > š š š š š  š š š š š  š š š š š š š š š š  š š š š š š š  š š š š  š š š š š š š > > š š š š š š š   š š  š š š š š š 5p š š š š c š  š  ? š > š švF) š� š š š š š š š š  š š š š š š š š š š + š š š š š š! š š š š š"%# š$ š š& š' š š( š*5+ š,0 š-. š/ š š š12 š š3 c4 š6?7;8 š š9: š < š š= š> š š@A šBDC š  š šE šG šH]INJ š šK šLM š š OSP š šQ šR š TX šU šVW š š šYZ[ š\ š š ^i_c š`a š b š šd efg š šh 5Rjok šl šm šn š 5R šp šqtr š šs g šu c š šw x šy š {| š} š š~ š š š š  š š š š š š š  š              5 5  5   8     8  8 8 7 8 8 8 iu 8 iu iu 8 iu 8 iu  8  8 8 8 7 7  8 8 8 7 7 7 8 8 8 š 8 8  7 8 8 7 8 8 F 8 8 š 7 š 7 š š š š š š  š š š š š  š š� š š  8 šc [ :  š š š* š š š š š š š š#  c  5p  ! 5p" 5p 5p$ % & ' ( ) B š+, š- š.7/2 01 š š354 š H š 6  š8 š9 š š (;V<S š=> š š? š@ šAB š šCD šELF š šGH š šI šJ šK ( š šM šN šOP š šQ šR ( š šT šU š šWXY š Z š š Em\` š] š^ š_ š av šbcsd šef šg šh š ši šjk š šl šm šno š šp šq šr š 5a tu šwx š yz} š{| š š ~ š š š š š š   š  š š š š   š š D š > š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š C] š š d š š š š š š š š š š š š  š š š š @  @  š @ ' š š š š š š š š  š š š c š c š š š š š š š š  š� Ʈ Ʈ Ʈ š Ʈ Ʈ š š š  š š  š  š š š š  š š š š š š š > š š š š  š š! š"&# š$% š š š( š)<* š š+, š š-.; š/0613 š2 � š45 > ʗ š �79 �8 � š: š š  š š=>^?I š@ šAB š EmCDGEF š ( š H š š JRK š šL šMNP šO :Q š 5 šSX šT šU šVW š š Y šZ[ š š\]  š _a` š šb š šd]efgk šh šij š š lmr šnop 8 š šq šst šu š šv šwx šy šz š{ š| š} š š~ š š š š š š š š š š  š š š š š   š  š š š š  š š ї ї ї ї b ї š š 8 š š   š š  š š  š š š  š  š š š d  š b   W  S b      " 1 @ O S  ^ N N m |       6      ! 0 ? M N N N N N N N N  š š š š š š  š š š  š š �- š š Em š š  š š  š š š š  š š š" š š ї š I š š š : >  @ D! š , š#+$* š% š& ' ( ) š 8 š, š .=/ š0;13 š2 š 45 š6 š7 š8 š š9 š: š< š š >A š?@ š š B šCXDKEJ šF šG šH šI : š LTM šNQ šO šP š 8 šRS š 8 F šUV šW š š 8Y[ šZ š š\ š^_g` šad šb šc š e šf khr šij š šk šl šm šn šop šq š šs~t šu šv š Ew Exy|z E{ E E E} E š š š š š š š š š š š  š š š š š š š , H $ H ^ š š š š  š (  š š š š š š š š š š š š > š š š š  š š : g šg   = =  t  = CN ~ d   P  C]   CN =  t   <u  =   = ~ <u    ^     Sl   I <u =   = =� = = = i =      Ve  =J41#"   =       ! ~ I  $%+ &' ( ) * , - . / 0 2 ~ 3  =56 78H9: ; Cy<= > ? @A B C D E F G l I = K L M NjO_PSQR TU V\WX Y Z [ cg]^ ` aeb c d f gh i klmynsop qr tv u wx z{~|}          cg   cg          i           = <u <u ~  ~ = ~ =  <u         C] <u =   d = =^ 5     #   �      "                      ! #, $% & ' ( ) * + I - b. / 0 1 2 3 4 I 6G7B8 9 : ; < = > ? @ A b CED SlF dz HS I J SlKL M N O P Q R Sl T U #V #W #X #Y #Z #[ #\ #] # Sl # _` a Cybec d h hf h h iw j k l mnto pq = r <us duv Cyxyz {|~ }  =       ct =  <u t t P = = d         = S         G          ct     Sl Sl Sl Sl Sl Sl # Sl Sl Sl Sl dz Sl dz Sl Sl # # Sl Sl # Sl  Sl Sl Sl Sl Sl Sl Sl      I I I I I I I I I dz d d       Sl  �           J        ~O 6/(   ! " # $ % & ' ), *+ - . I I #0 1 243 #5 7 8?9< : ; = > I@DA BC E F GH I J K L M N PQ <u =R TUuVfW XeY\Z [  ]^ _ = =` =ab = =cd = i = ~gk h i j t lm  n op  qr s t   vwx{ yz |~ } Cy    Cy  P  t  = = = = = = i ϒ i                 P  t <u t  = = = Cy       ct           = ~ =                        F          8   c     �  8w   šHS    i OA>  ï$ < < < < < < < < < < < < <! <"# < < d%3&+ <'( < <)* < < , <- <. < </0 < <12 < < 49 <56 <7 < <8 < <:; < <<= < < ?@ [ k ü BIC D E  FG  H JK L ïMN ` L PXQTRS ƷUV ҉ ƨW Y\Z[ Œ ]^ ï s _` d da dbc dd d de df dgh d d  jkulrmqn y sop s s  st r v}w ï x xy xz x{ x| x ~ x ï ˘ ï  ï i ˘   8 r Z     ƙ Z  s ܌ Z  Z ï ü  s s ҉ i d > s ï  ï  Ʒ  Ʒ    #   #           d  ï ï ï ~   š   ï   [  ~  g g g   i Z r     š  š   ï ҉ ս  ï ï  ƨ ҉ Z ï k ە ï ̀�  Ʒ  s ï ï V   ƨ ï ï s ű   V k>8 ï ` 7 G( Œ# Œ Œ! Œ Œ" Œ M Œ$ Œ% Œ&' Œ M Œ) Œ* Œ+1 Œ, Œ- Œ./0 Œ ~ M Œ Œ23 Œ Œ4 Œ5 Œ6 Œ M ï 9;: ï <= y 8 s ?[@CAB dDE y k FGVHS I JK L MN O PQ R T U ZW XYZ 3 R 4/ R\_]^ ï s`a ̀ Zb cg d e f  th i  j lmvno ï rpuq rts š  š y wx ïyz { | }~      ł   Q ց           ց ց  x   ï ï ï R ï 6 ï ï ï * ï     d s Z    H H H H #     <     א  s s s s s ï   Z Z Z Z Z Z Z Z Z Z Z Z Z W d                 �          H              w 7!1"(#$ s ï % &' d d )* r G+ ҉ 9,-/ . 9 0  9 243 à  x56 Œ s  Œ8B ҉9:;  ˘< ï=  >? @A t  CED \ ZF] GHT IJ K L MN OP Q R S HU V W XY Z [ \ H r^_ ` ap bcm dej fg h  i #  kl  #  n o  # q rs t u  v  xyz}{| ü ~  s Œ  ƨ à s       V8 V8 V8 V8 g V8    Z ï ` ƨ L Œ       <                   d 4T  Œ ï  ï Ʒ V y ҉ ` ï ш ï ï s Q  ш d d d d d d d d d d d H d d d d d d d d d d d d� d d d d d d d d d d d d  d d d d d d# d d d d d d d  d d d d d!" d d$J%D& '5(1), d*+ d d-/ d. d d0 d d23 d4 d d6=7: d8 d9 d ; d< d d>A d? d@ d B dC d d dEF d dGH d dI d dK dL dMN dO d dP d RS ƙ ï s UVWZXY x [\ ]^p_i` aeb cd f gh j k l mn o q r stuvzw dxy d d{~|} d d d d d d d d d d d   d d d d d d d d d                               d        ï  Œ Œ Œ Œ Œ Œ Œ Œ M Œ Œ Œ Œ Œ Œ M Œ M Œ Œ Œ M Œ Œ Œ Œ Œ Œ Œ Œ M Œ Œ Œ Œ Œ Œ M Œ ˘ Œ� i Z y s Y ҉           <  Ʒ ,+$ s! s s" s# s G% Œ&)' Œ( Œ \ Œ* Œ Œ x -3 Z./ 01 2  Z5j6\7B8:9 G  ;A <= > ? @ ï CD ï E[F G bHS bI bJKO bLM b bN b P bQ b bR b T bU bV b bWX b bY bZ b  ]d^a_` ï  bc  ehfg 8 x si Z  k|lrmo n ï pq ï Zsytu ï vw x ̀x i s z{ s y  ï}~ ï ҉ s  ï s r s  ׭  Z Q Q Q Q Q # Q s ï  ց ց ց ց ց ց  ց ց ց ց ց ց ց ց ց ց ց ց  ï s ï ï G  Ʒ Z ï  x ƨ x L 8 G   Z Ʒ  s d  ^< G   ï 7    i ƙ      V8 z s  ï k k k à  ˘(  ѧ ü      � ƨ  ˘ ï ï ҉     ƨ   š  ï &  ï   à à à 3 3 3 3 3 3 3 3 ! š"$ :# >% š > š ' Ʒ):* +8,7- .3/0 m ï 1 š2 EM š4 š5 ï6 ï Dz ] i9 ;A<?=> ҉ Z@ yBECD FR GH IJ K L M N OP Q > Œ 7T!UVWXtYn Z[\ ƨ]^ _ `ba  c d e  f gh i jl k m  orpq 7 ï ѧs r ƨ u|vywx   sz{ s}~ ï Z y r  Ʒ  ց  ƨ 7 à    W W Ʒ ï  S š s r 4! i ҉  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  6b x z s 7 ҉ y  r    c    x  Œ ï Œ x x x x L x H H H H H H H H < H  H  H   H    H H < < < < < < < א <        X  < <� < < < < < < <   ï    x Œ Ʒ ï ï U ̀ Ʒ ҉ à ï 7RQ IE 0    ܹ!"  ܹ# $*% &  '(  )  ܹ+ ,  -. /  ܹ 1 2 3 4?5: 6 78  9 ܹ  ; <=  > ܹ @  A BC  D  ܹ ܹFG ܹ ܹHI ܹ ܹJ ܹK ܹLM ܹ ܹN ܹO ܹP ܹ K s ƷST ï 6b VW_XY s ZZ [ \] ^ ` abc}due fmgkh ij l nsop q r dt d v wx y z { | d ~       d        H           d     d                     7 r  }# `  r    V  H à   ˘ ï c  y  ƙ s       �               H                ! " H$*%'& () Z  +.,- ï  / 0I1=2 Z Z3 Z4 Z5 6 78 9 : ; < Z Z> Z? ޕ@A ޕB ޕ ޕCD ޕE ޕ ޕFG ޕ ޕH ޕ ZJq ZKL Z ZMNeOV ZP ZQR Z ZS ZTU Z Z ޕ ZWX`Y ZZ][ Z Z\ Z ޕ Z^ Z_ ޕ Z Za Zbc Zd Z Z ޕ Zf Zgh Zim Zjk Z Zl Z ޕ Zn Zop Z Z ޕ Zr Zs Ztu Zv Z Zwx Zy Zz Z Z{| Z Z ޕ~  s s Z    Ʒ Œ Œ Œ Œ Œ Œ Œ W Z  [  [  [ [ ]  Z Z  ` r r 6 Z   r r r   r r r    Ʒ 7  < > < < > < > > > < Ʒ = ƨ ƨ 4N ƙ L ł Dz L i \ 7 y  ˘ s   ï   ü ł    r Ʒ s s V Œ x ï   G �  ï ï ~    Z  ï V   i   ƙ ҉ ҉  ï      tI ï s Z Z  Z  x "'#$F%6&0'-(,) G [ * [+ \ [ ̀ ï./ r ï Ʒ1423 s 5 \ i 7C8A9: ƨ ; i i<= i i>? i i@ i B ƨ  3| ZD E iGUHOILJK [ ŒMN ï 7 ҉ PSQR  ƨ T VWXh ҉YZ`[^\] s_ 6adbc < 6 ef g א sijxkqlomn z s G Zp &y ƨrust s x ƙ xvw s s yz}{| x 7~ \ Z Z s       %  4 C R  Z ƨ   K ƙ  ł ł  ï Z s  s ï x  Z  à k  š d Z Œ 7 G Ʒ ï V Z Ʒ   ƨ   š Ñ  ï ï 3 Z ҉ ï Œ              # # # #        # # #              R ï G 4� 4 4 4 4 4 4 4 4 4 4  4 ƨ 4  ï   ƨ Ʒ r Ʒ ï ï ƨ s ە      ï% $ r!" # ï &  (){*`+M,. Œ- s / 0= i12 i3 i i45 i6 i7 i i8 i9 i: i;< i i Œ>?E@ ŒA ŒB ŒC Œ ŒD M Œ ŒF ŒG ŒHI Œ ŒJ ŒK ŒL M ŒN]O\P QXR ST UV W X Y Z[ 7 ï^_ k ïaeb cd Z fygo ƨhiljk L  x mn ï ï spqvrs s ƨ t u  5wx N Ʒ o z  |}~  ï Œ Œ Œ Œ Œ Œ Œ \  x à ҉ ̀  š Cy  à   š ш ï ҉ ҉          #         <      ï  r  Œ ҉ ï ï ï  Œ Œ Œ ]  ە  ï    `   s  Z           ï      6  x Ʒ Z 7 s �3                 d  0#    !" d $ % &+' ( ) * d , -. / d 1 2 <4L5I6 7< 89 : ; d=A> ? @ d BC DE F <G < <H < JK MUN O P QR S T d VW XY Z [\ d^_`~ab ï c{dtei fgh t  jk l m n o p q r s k ux ov w  yz # Ux|} ï Dz ï Dz s           # ƨ  y  y Ʒ    Q& ű  `  Ʒ ƨ {,    Z Z Z        Z Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z Z ޕ Z Z Z Z Z Z Z Z Z Z Z ޕ Z ï i s  ƨ          �          r ' &              ! "# $% 2 ҉ () s* à+  -Y.D/0 1423 ƙ ƨ Z 56 7 8 9: ; < => ? @A B C EH FG IQJ àK àL à àM àN àOP à a à ŒR ŒS ŒTU ŒV ŒW ŒX Œ ŒZl[b\_] ^ z Œ ï` a  S cd ƨ ̀ Zef Z Zg Zh Zi Zj Zk Z mn ƨ Zos pq rr ï ە t uv  w x y z  |}~7 Ʒ Ʒ Ʒ                          <E  < < < < < < <  < <                           H  d d d d    < < < < < < <� < < < < < < <  < < <  < < <  < < < <  < <  4 (! d"%#$ d d d&' d d ).*, d+ d - d /1 d0 d23 d d5: d6 d78 d d9 d ;? d<=> d d @CAB d d dD dFGrHJ I d K LQM N O P RaS\TW UV XZ Y [ ]^ _` bicfd e g h jokm l n p q s tu vwx|y z{ }~                                 < < < < < < < < < < < < < < < < <  < < < < <  . s  H H H H H H H H s s s s s s s s s s s �              X         ',  &  ! "# $ % ' ( ) * +, - #�/ 0 Œ1423 ï ï G56 y 8 ü 8s ï9:_;A< s= > ?@ <BTC  $D $EF $ $GH $ $IJO $KL $M $ $N $  $PQ $R $S $  $U  V WX Y  Z[  \]  ^  `ma bicfd  e  g h  j k l  k  no p  Uxqr  , twu 7v x šy šz š{ | }~ š š  š š š  š š  y s  ƨ ƨ ƨ ƨ ƨ ƨ ƨ ƨ  ƨ ï s à     i        Œ Ʒ Z Z Z Z Z Z Z  Ʒ   s              ,l                      ï  s               �       Ʒ 7 7 7 7 7   q 3 % Z ï ï  r ï ï r r 8Z ï r r 8Z ï ï ï$ r! 8"# + r S r&) ' ˘( Z* à Z+ Z, Z- Z./10 Z Z 3 Z2 Z 34m5>6 7 8 9: ; < = TX ?@ ƷAB  CdD[E FTG HOIKJ L M N PQ R S U V W X YZ \ ] ^ _` a b c e f gh i j kl H npo z   rswtu Z Œ sv  xy z{ Œ Œ|} Œ Œ~ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ  ҉ s ]= Œ  ï   d d d d d d d d d d d d H d                         H H H H H H H X H H H H H H H H H H H H         d   7   ï ï ˘    x 7 ï Z à  � s  i ű  i Œ   i   Œ       š š  i s   s 78% $ !" #  i &' Ʒ s ( Œ) Œ* Œ+, Œ- Œ. Œ/ Œ Œ01 Œ Œ2 Œ3 Œ4 Œ5 Œ67 Œ 7 Œ9F:D;< ï = >  ? @A B  C  E z y ƨG  IJuKTLMwNQOP Rv STgU\VY ƷWX ï ï üZ[ i Ʒ ï V]e^d _`ba ï > ï ïc ï Dz ï ïf ïhoiljk ï Ʒ Ʒ mn ï ҉ ̀psqr  Ʒ Ʒ ïtu ï  ï Ʒ V Lxy àz { |} ~   h  Z k ƨ   z G x    9%  Ʒ r                 H H     3_ 3_ 3_ 3_ 3_ 3_ 3_ 3_ 3_ 3_ 3_ 3_ Œ Œ Œ Œ ~ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ ~ s k 1 ï Ʒ s ï < < < < < < < < < < < < < < < < < < < < < < < < < < < <   <� <  < < < < < < < <  < < < < < < < < < < <  < < < < < < < < < < ! <" <#*$ < <%& <' < <( <) < d+ < <, <-. < </ <0 < d23 r4D k5 Z67 8 9 : ; <= > ?@ A B C j E F GH IJ K L MN OP Q R S # U^VWXYZ[\e] Z Z^ Z_ Z` Za Zbc Zd Z Zfvgnhk Zij Z Z l Z Zm Z  Zop Zq Z Zr Zst Zu Z ކ Zw{x Z Zyz Z Z | Z Z}~ Z Z  Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z s Œ   i  ű ï   8  š > Z   H H H H H H H H H H H H H H H H H H < H H H H H H  H H H H H H H H H        .         < < #� < < < < < < < < d < < <   �   HED  Z   Z ) H H   H      H  H H H!" H H#$ H%' H& H ( H *@ H+ H, H-.4/10 < H < <23 < H <5;6978 H < < H: < < H<> <= < H? < H <A H HBCQDH E F G H ILJ K H HMON H P H RV S TU H WX Y H[i\b] H H^_ H` Ha H < Hc H <de f g h <jr Hk Hl Hmn H Ho Hpq H < Hs H t uvz wx y H { |~ } H  H H H < <    H   H   H H H H H H H H d H H   H  H    H  H H H H H H H H H < < H < < H H  H  H  H  H H    H  H  H H  H  < < < < < ' < < < < < H H H H H H H H < H H H H  H H�    * H H H H      H   H  H   H   H &#!  H " H$ % H ' ( ) H + H H, H-. H/8 0152 3 4 H 67 H9= :; < H> ?B@A H H C H Ñ ƨFG Z sHX I J KL  M NO P Q R S  TU  VW   Y Z[ \ ] _p`cab 7 Œ dme  yfg h i j k l š no  x |qrs àt~ Zuv Z Zwx Zy Z Zz{ W W|} W W Z Z Z Z Z Z W Z k ï ï ï ï R=U                                    d             s              <   H             d  �    d    H          ?*     !'"%#$ & ( ) +4,/- . 021 3 5;687 9: < => @OAEB C D FJ GHI KM L N P QR S T V kWn X Y Z[e\  ] ^_a `  bc  d  f g h i  jk  lm  o p  qr  s t vwx Œyz{ |}~                                         Ʒ ƨ  Ʒ Ʒ  Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ Ʒ q  Œ ï ï  ï Œ Œ Œ Œ Œ Œ Œ M ˘ s i   ï ïl\     <    H        �                   d 4 "! # $ %*& ' () +1,/ -. 0 23 H 5Z6 78J9A <:;= << <>? < <@ <BE <CD < <FH <G < <I < KQLO <M <N < P < <RV <STU < < WY <X < < [ <] ^_ `f ab c d e d gh ij k d mn|oyprq d st u vw x z { } ~        < < < < < <  <  < < < <  < <  < <  < <  < <  < < < < < < < < <         <     H    < <                   �            - #       ! " $+ % & '( )  *  , ./L0K1 d2;37 4 56 8 9: <G=B>@? A CED F H I J MNrOaPWQTR S U V X[Y Z \^ ] _` bnchdfe g ik j lm op q stxu < <vw < <y}z|{ < < <~ < < < < < < < < <  < <  < < < <           H   <             H           <    .   H    .     6     6 6  6 �         <"  <   <       ! #F$@% & <'4(/ )*-+, . 01 2 3 5<6 7:89 ; => ? A BC D E  GHuIoJ`KVLQMON P RT S U W\XZ Y [ ]^_ ahbe c d fg injlk m pq r s t < v wx}y{z | ~      Œ ï Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ ~ Z x Z   Ʒ s s s s s s s s s s s s s 8 s s s s s s 8 s  s)                  K Œ Œ Œ Œ Œ Œ Œ Œ Œ S Œ Œ Œ S Œ S   S Œ  Œ Œ S  S S Œ S� S Œ S S  S Œ Œ  Œ Œ !  Œ Œ  Œ Œ Œ Œ  Œ Œ Œ  Œ Œ Œ Œ Œ  Œ S Œ S Œ S"#( Œ$% Œ& Œ Œ' Œ S Œ *+l,S-B.;/701 ï Ʒ ï234 Œ y56 Ʒ  z d89 ï : Ʒ Ʒ <?=> Z  Ʒ @A Œ  Ʒ ˘CIDF ïE ï ƷGH r ï  ïJMK ïL ï NO Ʒ ZP ï `QR ( T^UW ïV Ʒ ïX]Y  Z[ ï\ ï ï  ï _i`a  dbgcd re r f h s Dzjk d ̀  `mqnp ïo   ïr  Z t Œuv 7 wx  y z {| } ~                   ;n ï Z ƨ             y ï  i ï ï r     6b x x { 4 x x  x x  p _ 4 d     Œ S  Œ Œ  ï  Z  Œ       i Ñ ï Œ Œ Œ Œ Œ Œ Œ Œ \ Œ Œ Œ Œ Œ Œ Œ Œ Œ M Œ Œ Œ Œ Œ Œ M 7  8 �             Q   L UZ  ޳  G s Œ Ʒ ï  ï Ʒ ï ە i B!1"/#. $ Œ% Œ& Œ' Œ( Œ) Œ* Œ+, Œ Œ- \ Œ [ s0 ҉ Ʒ2534 TI s à 6A7@8 79 7 7: 7;< = 7>? 7 H  ïCMDGEF Z ï HI yJ k ïK ïL s ïNQOP ш ł ZRS T`U]VZWY DzX Dz > ( ï[ \ ( ^_ ï  Oafbe 4Ncd ï 6 ï  gh  ï j~kwltms sn o pq r  i ïuv z L ïx{yz k Œ |} ï ̀ ï Œ ï y   ƨ ƨ ƨ 4N ƨ ï   ƨ� s ƨ  s s s s C s Z  ï x y   Ʒ                š      š š š   š š š š š š š š š š š k  ï Z V ï  ï ƨ  ï  ï V  Q Q Q Q Q  x L s  \ ï Z Œ [  ї \ ї ï à r  ˘ y Z< Z Z  ï  s      ƨ y Œ ׭ Z _\ ƙ ƙ ï    r ƨ ;! Ʒ".# Œ Œ$% Œ& Œ Œ' Œ() Œ* Œ+ Œ Œ,- Œ Œ W Œ/041 Œ Œ23 Œ Œ W Œ56 Œ Œ7 Œ8 Œ9 Œ: Œ B ï r=L>E?B@A  s  ƷCD ï K ï FIGH ̀ GJK ƙ  MTNQOP ï Œ s RS  Z Ʒ yUhVfW`X] ƨYZ\ Z[ š š c ^_ ƨ  s a b c de g ï imj Œk l š š ï op6qrs|twuv  xy  ˘ z y{ y }~  Ʒ   #       ƨ y Z y  Z   y G  :y :y :y :y :y : Œ Z n   < < < < < < < < < < <  < < < <  < <  < < < < < < < <  < < < < < < < < < < < < < < < < < < < < < < < < <  < < < < < < < < < < <  Œ ƙ          �    s  ѧ ï     š  ï ܜ ï ï Dz  ï O  ï ï Dz ï ҉ y y y 6 Z  0!" x ï# y $% & ' ( )* +, - . / g12 ` ï34 Z5 s  Z7h8O9B:<; > ï=> ï r ? @ A CFDE x  G H ZIK LJ L KL L LM LN L P]QSR ï TU V WZXY ï [\ ƙ  WD^` ï_  sagb s cd  ef  S  ijqknlm ï ׭ op ї Ʒ y r{sz tuwv   dxy Z H  ƙ| }~         H                          Œ \  i Z s            s r k 7 ` ` ` o  o  o ` ` o o  o ` ` Z ï ƙ 7 ï 7  ï G  ߡ 6b I Z  ï Dz ï s ս  Œ y y� y y y y y y y i y  i  Ʒ Z  ]m                 . '!$"# > r Œ %& Ʒ  ï Z(+)* ï 7 `,- ˘ ҉ G Z/L0312 Z s 45 ï6 7E8>9; :  <=  # 2 B?B@A Q ` p CD   F GJHI    K  MhNg OP\QT RS ߡ 6 ߡUZVYW X ߡ ߡ [ 6 ߡ]b^` _ 6a & ce d 6f & & 6 ïij s ïlmn~o{pq Ʒ >r svtu ̀ Z swz ƙx y ,   5|} ï ҉ y 3| Œ       < < < < < < d < < < < < < < < < < < < < < < < < <  < < < < < < < < < < <  < < < <  < < < < < <  < < < <  < < Œ V V V V V e Z Z Z Z Z Z Z Ʒ    Od   Od Od    Od ƨ ш   s ï  y Œ P P P > P > > D  > > < > � y  ш  Œ 9% 9% 9% 9% > 9% š     Ʒ 8 Œ ï  741   Z š 7 K V  ` Z! Z" Z#$ Z Z%& Z' Z Z() Z* Z+.,- S :[ 4{/0 U , Y Z23 k ï5867 ï r9: V x x <=>?c@[ADBC r Ʒ ERF  ïGHKI \J ї [= їLOM їN ї ї  їPQ ї ї c 7STVU   7WX 7  YZ  7 \`]_^ ƨ H rab ` Ʒ rdpemfl ghki \ Qj Q \  no  G qr st uyv w x <z{ |} ~                s  Œ s  Ʒ   #    <      <  <                           P543   š š š š š š š š š š  š š š  š� š š š š š š š š  š š š š   š  š š  š š š š k š š š š š š š# š š š š š š  š! š" š š 5R$- š%& š š' š( š)* š+ š š,  š. š/ š0 š š1 š2  š Œ  6H798 V c  :; < = > ? @ A BC D E FG  IJ y Z sK LM NO j 6&Q\RYSXT  GUV 8W 8 8 Œ Z s[ k Z]^`_  Na b c de f g h ijz klsmpno  ' 2 qr ! #� &y %twuv ', ' + <xy * ,] ,M b{ | }~   z &   :y L `¨     `   ց ց  v   ց ց   ï ï ï ï ï ƙb9                                             �     2 2 2  2 2  2  2  2   2 2 $ d d d  d  d d d d !# d" d d %+ d&')( d d * d d ,/- d d. d d0 1 d 34 5 6 7 8 :R;H<C => ? @ A B d D EF G d IJ K LO M N P Q S` T UV[ WX YZ d \] ^_ a cdzemf g h ij k l dn ou p qr st v w xy d{ | } ~    d         d   d    d     d    d     d  d  < <     d        s  s  j ց  s s [ 8 s s s s : : : 8 ï r ҉ ̀ ƨ r  7 7 7 7  7 7 7 7 7 7 7     7 7   �  7  7 7 7 7     7 E B A 0 Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ ~ Œ Œ( ~ Œ ! ~" ~ ~#$ ~% ~& ~ ~' \ ~) ~*/+, M ~ ~- ~. M ~ ~ M172 Œ3 Œ4 Œ Œ56 Œ \ Œ8 Œ9 Œ: Œ Œ; Œ<= Œ Œ>? Œ Œ@ ~ Œ s Z sCD 7 ` FKGJHI 7 x  ŒLSM ˘ ZNO ZP Z ZQ ZR s ZT‰UuV WlX YfZ`[ \ ] ^ _ < a b c d e g hi j k m no pq rs t vw xy z {| }~ < €ƒ‚ <„ … † ‡ ˆ HŠ• ‹Œ  Ž  ‘ ’ “ ” < – —˜ ™ š ›œ ž Ÿ d ¡ ¢£ ¤¥ ¦§ H ©ªº«¯¬®­ Ʒ r °¹± ² `³¶´µ ï s Z·¸  ҉ d s ѧ»¼¾½ Ʒ s¿ Z  >   7 ï ï ï ï š ` r ï     W  x G Ʒ ï Z Z Z Z Z Z Z W Zb' 7 y s Z   #  x Z ï ï �  ï ֐ ï s  ƨ ï ï WD ! ï r      Ʒ   YB 4?  Xr 4? S 4? 4? X $ "! # �% & o }(U)-*+ Z ï k, ./ 0 1C2 <3; <4 <5 <6 <78 <9 <: < d < <<= < <>? < <@ <AB < <D <EM <FG < <H <IJ <K <L < < <NO < <PQ <R <S < <T <V_WYX N ҉ Z s[ y\ y]^ y y`a  x ƷcdìeèfÆ ƨghtinjk ï il m  ros Zpqr j x uÃvw Œ x Zy z{ | }~  À Á ÄÅ = ï ï ` ÇÈØÉÔÊÏËÍÌ ï ï ̀Î Z ïÐ dÑÓÒ ̀  i ƨ ïÕÖ ̀× ̀ ü ÙßÚ dÛÞÜÝ ̀ ï Z ï ï ̀àåáãâ ̀ ï ҉ä ̀ ̀ ïæ dç ï ïéê s ƙë  `íî÷ïð ï ñöò y yó yôõ y y p X y sø ïù ïú ïûü ïý ï ïþÿ ï ï ï ï ï ï ï ï  r r  y ҉          #  #   i i  Ʒ   Œ ƨ ƨ ƨ ƨ ƨ 9 ƨ y  ?< x Ʒ� ï98 ï% א א א א  א א א א א א 2   א!     א     " #$ <&5' ( )/* + , -. 2 < 01 2 3 4 <6 H7 H Œ ï:; ƨ ï s=]> Z?A@ V Z BUC D dEFTGIH JLK M N O P Q R S V[W X Y Z   \ Œ ƙ^7_a` 3m Z bcğdćefqgkh di dj d dl dm dn do d dp dry dst duv d dwx d d z d d{ d| d}~ d d dĀā dĂ dă d dĄą dĆ d d Ĉċ dĉĊ d dČĘč dĎ dď dĐĖ dđĒ dē d HĔ Hĕ d H dė d dę dĚě dĜ d dĝ dĞ d ĠġıĢĤģ d d ĥĬĦ dħ dĨ d dĩ dĪ dī d dĭ dĮį d dİ ; dIJ dijĴ dĵĺĶ dķ dĸ dĹ d d ĻĿ dļĽ d dľ d d d d  d d d d d d d d d d d d d d d 2 d d d d d d d  d d d d d d d d d d d d d d d d   d d d d d d d d d� d d d d  d d d d d d d  d d+ d d d d d  d d d d%  d d d d!#" d d d$ d& d')( d d d* d ,2- d. d d/0 d1 d d d3 d4 d56 d d 8 ï9 :; F ї<  = >  @AŠBņCŅ ïDEfF ŒGRH Œ ŒIJ ŒK ŒL Œ ŒM ŒN ŒO ŒP ŒQ W ŒS]T Œ ŒUV ŒW ŒX ŒY Œ ŒZ Œ[ Œ\  Œ^ Œ_ Œ Œ`a Œ Œbc Œ Œde Œ Œ Wg~hr Œij Œ Œkl m n  op q  s Œt Œu Œ Œvw Œx Œ Œy Œz Œ{|} Œ Œ Œŀ ŒŁ Œł ŒŃ Œń Œ Œ W ƨ Ň zň ʼnŊŗŋŏ <Ō <ō <Ŏ d <Ő <őŖ <Œ <œ <Ŕŕ < < < א HŘ HřŚ H HśŜ Hŝ HŞ H Hş H <šŤŢţ rťŦ 7ŧŨũŻŪŴū Ŭ ŭŮ ů Ű ű Ų ų ' ŵ Ŷ ŷ ŸŹ ź żŽ žſ   <                                    �  Z ï ï     F F  F F F U GY s  ƨ 9% "     ! # $ H & '1 () *+ , - ./ 0 k2 34 56 78  :C š; š< š= š>? š@ š šAB š k šDOE šF š šGH šI šJ šK šL š šM šN š P QUR S T ?V W X 5 sZ[\ [ ]p^j_f`cab  Zde ghi knl m s o s qur s st švy Nw sx š N {݋|ܚ}K~ɟƀ-ƁƂƲ šƃ šƄƅƟƆƜƇƖƈ šƉ šƊ šƋ š šƌƍ šƎ š šƏƐ šƑƒ š šƓƔ šƕ š š Ɨ šƘƙ š šƚ šƛ š šƝƞ š šƠư šơƢ šƣƯ šƤ šƥƦ šƧ š šƨƩ šƪ š šƫ šƬ šƭƮ š d š š šƱ šƳƴƵƹƶƸƷ š š šƺƽƻ š šƼ š šƾ šƿ d  š š š š š š š š š E  š  š š š š š š š š š š = š  š š š š   š š š š š š š š š  š š š š š  š š š š  š š š� š d š 8 4 š š š š š š ) % ! š š š š š š š š š E] š š š  š š 8 š š 8" š# š$ š & š š' š( š š* š+, š š .dž/U0? š1 š2 š3 š4 š56 š š7 š8 š9 š:; š< š š= š> š @GAC šB šD š šE šF š H šIN šJ šK šL šM šO š šPQ šR š šS šT š VtW šXlY šZk š[ \]h š^_ š` ša šb šc š šde š šfg š B š ši šj š š šmn š šo šp šq šr šs šuy švw š šx š z š{DŽ|~ } š š šǀ šǁǂǃ š = šDž š šLJǦLjǝljǔNJ šNjǑ šnjǍǎ š Ǐ šǐ š E šǒ š šǓ šǕ š šǖ šǗ šǘ šǙ šǚ šǛǜ š š šǞ šǟǠǣ šǡ šǢ š šǤ ǥ šǧ šǨǽ šǩ šǪǫǭ šǬ š Ǯ š šǯǰ šDZ šDz šdz šǴ š šǵ šǶǷ š šǸǹǻ šǺ šǼ š š Ǿǿ š š š š š š ( š š B š š z1) š  š š  š& š š š š š š š š š š š - š š š š š š š  š š  š š š š š š š š A š š š š š š � š š š š š š š š š š    š  š š š š  š W š š 5 5 B š ű š š š# š š š ! " š š$ š% H š '( š š š* š+,/ š-. š š š0 š2 š3]4X5I6B7=8<9  š: +; š +  š> š š? š@ šA B šC šDH šE šF šG š + š BJQK LPM + BN BO B +  š šRS šTU š + +V šW + BY\ šZ[ š š d š^q_ š š`aeb š šc šd B fkgjh A ši š c ? l mn šop > š  š šrst š u š švw š šx šy B š{ȭ|ȕ}Ȃ š~ šȀ š ȁ š šȃȄȍȅ š Ȇ šȇȈȊ šȉ š >ȋ šȌ š > š šȎȏ š šȐȑȓȒ ł : łȔ ł šȖȗȚȘ š šș š țȝȜ š 8 šȞȫȟ šȠ šȡȦȢȤȣ š H š šȥ  (ȧȪȨȩ š : š c šȬ š š 8Ȯȸȯ šȰ š šȱȲ š šȳȴ šȵ šȶ š šȷ š šȹȺȻ šȼ šȽȾ š šȿ š š š  š š š š š š š š š š š š š1 š š š š š š š š š š š š H š š š š š d š d = š š = š = š š š š : š š š š š� š \ š š š š š   š š š š š š š  š š š š š H š   š  š š š ( š š/ š š !%" G# G$ G  G&,')(  *+  G G G-. G š0 š 2u3A48 š5 6 š7 š š9 š:; š š< š=> š š? š@ š BKC š šDE šF šG šH šI šJ š L`MN = šOP šQ šR STVU 8 W 8XY Z [ \ ] ^ _ 8 šabrc š šd šef šgh š šij šk šl šm šnq šop š šs št š švɂwɁxɀ šy šz š{ š|} š š~ š š ( š 8 šɃɄɒɅɌɆ šɇɈ š šɉ šɊ šɋ š šɍɎɑɏ š šɐ š š ɓ š šɔɕ šɖ šɗ šɘ šə šɚ š šɛɜ š šɝ ɞ š ɠ˷ɡʤɢɣɻɤ šɥɴɦɩɧ šɨ š š (ɪɬ ɫ šɭɳ šɮɯ š šɰɱɲ š š šɵ šɶɸ šɷ š šɹɺ š š ɼ šɽ šɾɿ š š H H H H H H H H H H H  H š  š š š š š š š š š š š š R š š š E� š3  š š š E š  š š š š š š š c š š š Em š š š š š š š š� š š š n š š š š (  š   š š š 8 š š š š š š š � š � š D' š š š!$" š š# š š%& š š (1 š) š*+. š,- š š/ š0 š š2 š š45I6G7C š89>: š; š š< š= š ? š@ šA š ?B ? D šEF 8 š mj šH š š JL K šM|N{OjPYQTR š šS š AUWV š šX š š �Zg[]\ š š k^ š_ š` a b c d e f  š h š ši > škql šmo šn � š šp š rv šstu š � š wy šx šz š š l š š} š~ Œ šʀʌ šʁʂʅ 8ʃ 8ʄ 8 šʆ šʇ š šʈ šʉ ʊʋ = š =ʍ šʎʑ šʏ šʐ Œ š šʒʓ šʔʙ šʕ šʖʗʘ š k š kʚʟʛʝ šʜ š k šʞ ( šʠʢ šʡ š Hʣ š k šʥʦʿʧʶ šʨʩ šʪʳʫʱ šʬʭ š šʮʯʰ š c š cʲ š š šʴ šʵ šʷʻ šʸ šʹ šʺ š šʼ šʽ šʾ š  š š  š š š š š š š š š š  š š š š š š d š š  š 8 š š  š š š š š 8 š š š š š > š š š š š š š š š    �  $ š š  š šo! š š  š š  š  š š š š š š š š š š š š š š š š š "e#0$ š š%&' š(, )* š+ š  š- š. / š š 1O2A3 4;5 6978 š š : < =? > š@ š BCIDFE š š šGH JKML š š N šP]QYRVS T U W X Z [ š\ š ^_b` a š cd š šfgkhi šj š š lm šn š š Ip˭q˞r˂s š št šu švw šx šy š šz{ š š| š} š~ š šˀˁ š < š˃˛˄˕ š˅ˆ šˇˊ šˈ šˉ  š šˋˌ š šˍ šˎ šˏː š šˑ š˒˓ š š˔ B š ˖ ˗˘ ˙ ˚ š š˜ š˝ š š˟ˠ š šˡˢ˦ˣ ˤ ˥ 8 ˧ ˨˩˫˪ 8 8ˬ F šˮ š˯ ˰˱ ˲ ˳ ˴ ˵ ˶  ˸/˹˺˻ š˼˽ š˾ š š˿  š š š š š B + B B B{  š š š š š  š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š "� š š š  š š š š š           š     š  š š š š š! š#+ š$ š%& š š'( š š) š* š ,- š . š š0̽1c2; š3475 š6 š š š8 š9: š š <K=C š> š?@A š B š šD šE š šF šGH šI šJ š š >L[MXN šO šPS šQR š š T šU šVW š 9% š 9%Y š HZ š d š\ š]^ š_ š š`a š šb š >dpef šglhji š š k š š m šn šo š šq|r š šstv šu š їw š šxy š šz{ š š }̂ š~ š̀́ d š š̃ š̷̄ š̅̆̔̇ š̈ š̉ š š̊̋ š̌̑̍̏̎  ̐ š > š š̒̓ š š ̕ ş̖̌ š̗̘ š̙̠ ̚ ̛̜ ̝̞ ̟ š ̡ ̢ ̣ ̤ ̥̦ š š̨ š̩̪̯̫ š̬ š̭̮  >̴̰ š̱̲̳ + š̵ š š̶ š ̸̹ š̺ š̻ š š̼ > š̾̿ š š š š š š - š š l š š š š š š š           F  L š š  š š š > š        c  š š š š š š > š m$ H š� š š š š ( š 8 š š š  2  š  š š š ' š š š  > <u : š$  š š š ; š! š š"# š > š š%& š š(0 š)* š š+,/ >- >. š > > š1 š š3C4 š57 š6 š8?9> š: ;< š š= š  š @  šA B  šDG šE F š šH šI šJ šLdMόNYOPc Q R S TU V W X Y Z[ \ ] ^ _ ` a b d͢e͇fyguhj i VG kl ҉ ïmrn  opq t  st Ʒ d ƨ ïvw y Ʒ x ï ցź{| }~ ̀ s ï͂̈́̓ Ʒ ` ï͆ͅ Œ x ͈͕͉͏͍͊͋͌ i ï ͎ Œ ͐ ƙ͑͒ x͓ ͔ K ͖͚͙͗͘͜ s `  ͛ ̀ s͟͝͠͞ Ʒ  VG͡ r ͣͤͻͥͬͦͩͧͨ ï ˘ͪͫ ï N ï üͭͯͮ s s iͰͺͱʹ Ͳͳ  ܜ ͵ͷͶ  ܜ ͸  ͹ ܜ  ҉ ïͼͽ y; GͿ Z Z   G G Q G   Œ ï y ï ï  [ [ [  [ ׭   ï V ï  4?   X ï ï Z ѧ . ï i ̀ ï s 7 ŒΟP � Z ï  ە i   TX r  Œ L    y Ʒ  Œ ï ï  ƨ W y4+)% s   ! " # $ V &'( Ʒ š ï* s  ,. ï- /3 y012 ƨ  Z x5D6C7B8 9=: ƙ;< ƙ   ƙ>@ ƙ?  ƙA ƙ ƙ Z z ïEGF sHO ZI üJKM üL ü ? üN ? ü 7 Q΁RaSYTWUV s i ïX Œ Z\[  G ï]^  ս Z_ ` s bvced 3| V Gfug àhoiljk à N Omn b àpsqr  4/t à à ï Zw~x}y :y sz s{ s|  s 7΀  ï Œ ΂Β΃Ό΄Ή΅Έ Ά ·  š y 7Ί΋ Œ à΍ΐΎΏ  ï ѧΑ s sΓΙΔΗΕΖ  ï ш ïΘ i 3|ΚΜ ïΛ 2 ïΝΞ ˘ΠΡξ΢ίΣΩΤΦΥ ΧΨ Z ïΪέΫά `  ï ή :yΰηαδβγ ׭ Œ `εζ ï θλικ ï Zμν  ï ï Œο ï   s ü ҉ Z ü s Ʒ  Z Z Z   L s  s Œ ï  G  7( TI   Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ r Z ï s Ʒ ` i i i i � Œ ï ï                      K9        # !"  # $%  & ' )0*-+, r ï./ s ï N1423 [- s ï56 ї  ш8M9G:D;C<?=> s Ʒ ï 7 7@A 7 7B � 7 i EF r š ѧ HJ ƷI N KL  x ïNUORPQ ˘ rST  y sVW ŒX ƨ r Z[\ Z s]^{ `_`iaeb scd s G s fgh : G sjmkl s np o iqtrs iuv Œwx iyz  s |}  ~ π iρ iς iσ iτ iυ iφ iχ iψ iω iϊ iϋ i iύώϏOϐϑϒϫϓϡϔϗϕϖ r ׭ ZϘϙ ց \mϚϛϞϜ ϝ ϟ Ϡ <ϢϨϣϧ ïϤϥϦ ï Œ Z ϩϪ s ƨ 7ϬϺϭϸϮϯ ï ϰ ϱϵ àϲϳϴ 4/ à 4/ à϶ à àϷ 4/ àϹ G s ïϻϾϼϽ W Ͽ ï y  7 ï ï  Z ï r r r r r ` V ï ˘   Œ ï  Z ï Ʒ  Œ  y V  ƨ   Z c c c c c c c c c c c  š� š š š š š š š š c š š š  š š š  š š š š š c  r  ï Œ 8 ï ?"  ï Œ Ʒ! ï k Z#,$% s &' Z( Z) Z Z* Z+ Z :j-2 ./ 0  1 “ 3 4 56 7 8 9 : ; < => d @GADBC i > EF s  šHKIJ ï ï ѧLN M Z ï PЍQnR^SYTWUV ï Œ s Œ X s Z\[ ï ] 7 _g`dab Œ ˘ c ïef  Œ ïhkij :y ƙ Ʒlm ï s s ƷoЂp|qyrxst u ƨv  w  ï z{ Ʒ Œ Z ï} \~ ï ЀЁ i ïЃЈЄЇЅІ   Ʒ ˘ ŒЉЋ xЊ Z Ќ rЎаЏНАЗБДВГ  ï ŒЕЖ ̀ Œ ƷИК Й ïЛМ  s 7 ОЪПТРС y ïУФ \= sХ `Ц ï ïЧШЩ ï  ï ЫЭ Ь r ЮЯ  Z бвнгжде Œ Œ Vзм _и й к л V ƨ оп ï  ï mj ï x ï x  G Ʒ      ï š š š š š š             ł֠ Ʒ   ï Z4 �                    d         <  !.")# $% & ' ( d * + ,- / 01 2 3 5ѣ6ј7_8 9R:E ;< =A >? @ dB C D HF GLH I J K M NO P Q S TUYV W X Z []\ ^ `na bh cd e f g i jk lm  o p qrхs~tyuwv H x z|{ }  руст ф цэчъ шщ ыь юѓяё ѐ ђ єі ѕ ї љ њ ћ ќ ѝ ў џ Ѡ ѡ Ѣ Ѥѳ ѥѦ ѧѨѩ < ѪѫѱѬѮ ѭ ѯѰ Ѳ ѴѵѽѶ ѷ Ѹ ѹѺ ѻ Ѽ d Ѿ ѿ    H      d%       d   d     H               �               <       H   ! " # $ d &'ҧ(s)@*>+ ,9-5.1/0 d d 2 3 4 d 6 7 d8 d d : d; < d= d ? < AkB CFD <E < d <G[HQILJ <K < <MO <N < <P <RWSUT < < <V <XZ <Y < < \e]b^` <_ < <a < c <d <f <gi <h < <j < lm n o pqr <tҥu Hvҟw dxҊy҃zҀ{~|} d d d d ҁ d d҂ d d҄҅҈҆҇ d d ҉ d dҋҕҌґҍҏ dҎ d dҐ d Ғ dғҔ d dҖҙ dҗҘ d dҚҜқ d d ҝҞ d d Ҡ dҡ d dҢ dң dҤ dҦ H dҨMҩұҪ ҫ Ҭҭ Ү ү Ұ ҲҳҴҵҹ Ҷ ҷҸ ҺҿһҾҼҽ                         G%�  < < < <   < < < <   < < < < < < <  < < <  < < < < < !#" < < $ < <&;'2(, <)*+ < <-0./ < 2 <1 < <3846 <5 <7 < <9 <: < <<C=@> ? < A < <B < D < <E <F <H <I < <J <KL < < dNOӠP <Q~RgS\TX <UV <W < <Y <Z[ < <]a <^_` < < bec < <d < <f <htinjlk < < m < < oq <p < rs < < uy <vwx < < z|{ < < <} <ӌӀӅӁ <ӂӃ < ӄ < < ӆӉӇ < <ӈ <ӊ < <Ӌ < ӍӗӎӒ <ӏӐӑ < < ӓӕӔ < <Ӗ < <Әӛә < <Ӛ < ӜӞ ӝ < ӟ < < dӡ dӢӣӶӤӰӥӪӦӨӧ d d dө d ӫӮ dӬ dӭ d ӯ dӱӳ dӲ dӴ dӵ dӷӸӻ dӹ dӺ ; ӼӾӽ d d dӿ d  d  d d  d d d                        �    dY>3 H H    H H H  H H H H H H H  H H  H '!$" H# H H H% H& H (.)+ H* H,- H H /1 H0 H H2 H4 56; 78 9: d <= ?Ԟ@nAlBWCQDJEHFG d d I d KOLNM d d d P d d dRSU dT d dV dX`Y\Z d[ d d d]^_ d d ahbfced d d dg d dijk d d dm d dopԈqzrwsut d d v d d x dy d d {ԁ|}~ d d Ԁ d d ԂԆԃԅ dԄ d dԇ d d ԉԕԊԐԋԍԌ d d Ԏԏ d dԑԓ dԒ d dԔ dԖԙ dԗ dԘ dԚԜԛ d d dԝ dԟԠ ԡԱԢԩ ԣԤԦ ԥ ԧԨ ԪԮԫԬ ԭ ԯ ԰ ԲԼԳԷԴ ԵԶ ԸԺԹ Ի ԽԾԿ        <  d <    d d d d d d   < < < <  < < < < < <  < < < < <  <  <  < < < <� < <  < < < <  < < < <  < H <6 < < < < <  < < < < <  < <  -!'"%#$ < < & < <(+)* < <, < <.2/ <01 < < 34 < <5 < 7 <8F9?: <;=< < < > <@C <AB < < <D <E <GQHLI <JK < <MP <N O < <RUS <T < < VW < X < < Z[մ\^] _Յ` daybmcfd de d d gjhi d dkl d d ntorpq d ds d duw dv dx d d dz{Հ d|}~ d d dՁՃ dՂ d Մ d d dՆՇ՚ՈՓՉՎՊՍՋՌ d d d ՏՑ dՐ dՒ d d Ք՗Օ dՖ d d՘ dՙ d ՛ը՜բ՝՟՞ d dՠա d d գեդ dզէ d d թկժխիլ d d ծ dհղձ d d ճ d յնպշ < ո <չ H ջռսվտ < < < < < < < < < < < < <  < < < < < < <  < < < < < < < < < < < < < < < < < < < < < < < < < < <�  <   < <  < < <   < < < < < @   d," d d  d d d ! d d#' d$ % d& d (*) d d + d d-3. d/10 d d 2 d d 4;5867 d d 9: d d <> d= d d? d A֓BbC dDPEI dFG dH d dJ dKN dL dM dO QXRUS dT d dV dW d dY\Z d d[ d]`^_ d d da dcֆd}eqfmgjhi א אkl א n op א rxsu t א vw א y{ z א | א~փցր ւ א քօ אև֏ֈ֋ ։֊ א֌֎֍ א֐ ֑ ֒ ֔֘֕ d d֖֗ d d ֙ d d֛֚ d d֜֝ d֞֟ d d ֡;ִַ֢֣֤֥֦ ï֧֨ Z֩ ֪ ֫֬ ֭ ֮ ְ֯ ֱ ֲ ֳ r ֵֶ Z s ָֹּֽ Gֺ ;)ֻ ;) r 7־ֿ  Z   G 7 7 7  7 7 + +  + 7 7 7 7 ; ï Ʒ  Z s Ʒ  ï d  Œ   ï  ï ï ł Z Œ s ï        Z ï  ƙ  r�   G ï y Ʒ   ï  i ƨ i 7 [   ï ï Ʒ H  ï K r  ï-&  y s ï! ˘" #$ d% d d H'*() s  ï+,  Œ Z s.5/201  ï 34 Ʒ ï ˘6978 d  Œ Z :  < = >?  @ A BCYDNE  FG  HI  J K LM   OP  Q RS  T U VWX   Z[  \ ] ^_ `  a bc  eۄfghniljk Z k ƨm à soשpq 7 r Z s tuףvהw׆x׃yz ,l{ | } ~  ׀ׁ ׂ r ׅׄ sׇג׈ב <׉ .׊ .׋׌ .׍ . .׎׏ .א . .  Vד Hולזיחט X dךכ 6 < םנמן < סע s   פ ץ צקר 6 ת Œ׫ s׬ ׭׳׮ ׯ װ ױ ײ # ״׵ Œ ׶׷׸ ׹ R ׺ ׻׼ ׽ ׾׿  6  طD ш ˘ G y y y y X X X X y X y X Z ï ` š ï Ʒ y ѧ ï 7 i x  ï x  ˘  ҉ WD ű y C 4l Œ  Z X Ƒ 4?� ` Y` o  o X     X 7  4? 4? z 4?  X 4? } ï  >     s ` Z *$# ï!" V Œ ï %& '( )  +5 s,-1 . /0  7 2 š34 ł 4 67 Z  89 :; < => ? @ AB C ExF[GQHOINJ  yKL  yM y  ïP s RYS T yUV  W X ƙ ïZ \r]o^_ ï` alb  c de f g  hi j  k  mn  pq  s ysvtu  ï w Ʒy؈z ï{| }~ Œ ï  ؀؆؁ Œ G؂؃ ؄ ؅ ؇  ï ؉؟؊ؒ؋، Z ï؍ Œ؎ ؏ؐ ؑ ̓ ؚؓ ïؔ ؕؖ ؗ ؘؙ 6 ؛ ؜ ؝ ؞ ؠآء ` ï أؤ Œ ïإ ئ اب ةذت ث ج ح خ د 3_ ر ز س ش ص ض ; ظؿع غ Ʒػؼ Ʒ Ʒؽ Ʒؾ Ʒ  i ƙE            0 d d        H  &y    s  02       #� <      H �             0 '             02 ! " # $ %& H(4). *+ , - H / 01 23 H5 א67A8; א9: א א <?=> א א #�@ א #� א אB אC אD א FِGhHX IJ K LMQ NOP d HRUST g VW ; < א Y Zb [ \ ]^`_ r a r cd ef g < iوj~kxl mnto pq r s uv w d yz { | } d ـ فلق ك م ن ه < ى يً ٌ ٍ َُ  ّٶ ْٓ٧ٔٚ ٕٖ ٗ٘ ٙ 02ٛ ٜ٣ٝ٠ ٞ ٟ ١ ٢ ٤٥ ٦ < ٨٩ ٪ٱ٫ ٬ٮ ٭ ٯٰ X X ٲٳٵ ٴ   ٷ ٸٹٺ Hٻ Hټٽپٿ H % % s H H H H r r H  H H H H H      >           #   02   d H   H Ñ  ZN&�   ï y Z k 7    Ʒ ѧ ׭  Ʒ r s s s s s s s s s s s s  ï   s ï!# " r$% ƨ  Z'3(,)*  ҉ ï+ r ï-0./ y \m Ʒ 12 y ï s `4B5867 ï Z s Ʒ9A s:;> š<= š š Q? š@ š Q š CJDI EF ïG `H ï ̀ ` s KL y `M  sOڡPhQVRTS s ïU ` WgXY ˘Zc[_\] ^ `a b d e f s Ʒiڜjmkl Ʒ ï G no ï ҉p qڋr sڇtuzv w x  y  { | }  ~  ڀڅ ځڂ ڃ  ڄ  چ  ڈ  ډ ڊ  ڌڗڍڑ ڎڏ ڐ   ڒ <ړ <ڔڕ < <ږ d < ژڙ ښ ڛ   ڝڞ Ʒڟڠ Ʒ ܹ yڢڮڣکڤڧڥڦ ï ` ƨ x Œڨ ï sڪڬګ ï s x Zڭ ] گںڰڳڱڲ  ï ï sڴڹڵ à ڶڷ ڸ g Œڻ ïڼڽ b 3ھ +ڿ b + L    6 6     Z š Z ;$ Z Z Z Z Z Z Z , Z ޕ Z Z Z Z Z Z Z Z Z Z Y Z  Z  Z Z Z Z Z  Z Z Z Z Z Z  Z Z Z Z Z� Z   Z Z Z Z  Z Z Z Z Z   Z Z Z Z Z Z Z Z Z Z Z Z! Z Z Z Z Z Z h Z Z" Z# Z 4{ %&0' Z(,)* Z + Z Z Z- Z. Z/  Z162 Z3 Z4 Z Z5  Z7 Z8 Z Z9 Z: Z <Q=F Z>? Z Z@ADB ZC Z Z E Z Z  ZGH Z ZIJOK Z ZL ZM ZN Z P Z Z RkS_T Z ZU ZV ZW ZXY ZZ Z[ Z\ Z] Z^ Z , Z`e Za Zb Zc Zd Z  Zf Zg Zhij Z Zl Zmynuorp Zq Z  Z Zs Zt Z Zvw Zx Z Z z Z Z{|ۂ} Z~ Z Z Zۀہ Z  Zۃ Z  Zۅ ۆ'ۇ&ۈ ۉۊۋ۝یۛۍێ s ۏ ې ۑ ےۓ ۔ ە ۖ ۗۘ ۙ ۚ ۜ  Z۞۟۠۷ۣۡۢ ۤۦ ۥ ۧ ۨ۩۰ ۪۫ ۬ ۭ ۮ ۯ h ۱ ۲ ۳ ۴۵ ۶ h ۸۾۹ۻۺ ۼ۽ ۿ  r s à ï Z ï ï  z    w ( r i  ƨ ï� ̀  y  ï r s   ە r ï r Œ Ʒ  ï r   G y .  ï r 8Z r ï ï  ï  Œ ï r   ï Œ  i   s y y y y y y y y y y y y & y !#" ց Z$% ï  ï s (ܘ Œ)* Œ+ Œ Œ, Œ- Œ./a0I1?2 Œ3 Œ Œ45 Œ Œ67;8: Œ9 Œ M Œ M<= Œ M Œ> M Œ Œ@A ŒB ŒC ŒD Œ ŒEF Œ ŒGH Œ Œ ~ ŒJ ŒK ŒLM ŒNU ŒOPR ŒQ Œ { {S {T { ŒV[ ŒW ŒX ŒYZ { Œ {\ Œ {]^` {_ { Œ { Œbpchd Œe Œf Œ Œg Œi Œjmk Œ Œl Xc Œn Œ Œo l Œqwr Œs Œt Œ Œuv Œ Œ {x Œy Œz܊{} Œ| W Œ Œ~܃ Œ܀܁܂ Œ M M Œ܄܇܅܆ Œ M M Œ܈ Œ Œ܉ M Œ Œ܋܌ܒ܍܏ Œ܎ Œ Mܐܑ Œ M Œ Mܓ Œܔܕ Œ M Œܖܗ Œ M Œܙ s `ܛMܜܝܵܞܮ ܟ ܠ ܡ ܢܣ ܤ ܥ ܦ ܧ ܨ ܩ ܪ ܫ ܬܭ Xܯܴܰ ܱ ܲ ܳ Cy  ܷܶ ܸܹ ܻܺ ܼ ܽ ܾܿ    c   = Cy   P Cy = P   ~ = d <u ~ <u Cy <u <u Cy Cy = t = = Cy = t ~   = d = = Cy <u d ~ d Cy P d  Cy <u t  d ~ d  Cy� Cy ~ = j = d = I C] d =     S <u    ~6*           ! " #  $% &  '( )    + ,- .5 / =0 1 234 <u =  7F 89 :<; ~ = = >? @A B C DE GH  IJ KL  Nm OP QZRTS  U VX W Y [_\ ] ^ Cy `j <uabic = dehf g    ~kl ~ ~ n݄o p q r st u v wx yz { | } ~ ݀ ݁ ݂݃ 8w݅݇ ݆ ݈݉ ݊  ݌#ݍުݎݞ ݏ ݐݑݜݒ ݓݔݛݕݙ ݖݗ G ݘ cg =ݚ = ݝ  ݟݠ ݡݢݥ ݣݤ ݦݮݧ ݨ ݩ ݪ ݫ ݬݭ CN tݯݹݰݵ ݱݲ ݳ Iݴ ݶ ݷ =ݸ Cy ݺ ݻݼݽݾݿ      , , ,    = ü ~ CN ~ <u <u I I   CN h     1    P =0         cQ     � C?                   ! =" =# = =$ =%& =' =( =) =* =+ =, =- =. =/ = = d6 =2ަ3ޛ45 = 6f7C8 9 : ;>< = 8w ?A @ X B cD EYFTGMHKIJ c c L  NQOP  8RS c c U VWX X c Z[ \ ] ^ _ ` a b c de  g hi|jukpln m c o cqs r t vy 2wx c z { 8w }އ~ރށހ c ނ c ބޅކ c Ըވތމ ފދ c ލޘގޗ ޏސ ޑ ޒ ޓ ޔ ޕ ޖ  ޙޚ 8w =ޜ ޝ ޞޟ dޠޣޡ =ޢ CN <uޤޥ CN Cy <u ާިީ = ޫެ޴ޭ ޮ ޯ ްޱ ޲ ޳ ޵ ޶ ޷޸ ޹ ޺޻޿ ޼ ޽޾ CN  C] =  = P =   = = = = = d6       h h h h  h h  h h  h h h h h h  h h   h h h  h h� h h    P   C] Cy  P ~   =       "       ! = $R%2&(' ) * +,. -  t/0 Cy 1 3?48 5 6 <u7 9 : ;< = > d Cy @AMB  CDJ EF GH I Cy = KL  NO P P Q S߸T߮U  VWY X Zߞ[g t\]a ^ _ Cy` = i3 b tcde = ~f ~ CNhpi j ko lmn  I <u   qߓrߊs =tu =v߀ =w =x =yz ={ = =|} =~ = = d6 =߁ = =߂ =߃ =߄ =߅ =߆߇ =߈ = =߉ = iߋߎߌ CNߍ = ߏߐ = Pߑߒ CN  ߔ tߕߖ ~ Cyߗߛߘ ߙߚ ߜߝ = ~ߟ ߠߡ ~  ߢߣߥ Iߤ I ߦߪ ߧߨߩ CN 6  C]߫߬߭ = ߯ ߰߱߳ ߲ ߴ ߵ ߶߷ ߹ߺ߻ ߼ ߽ ߾߿      E = Cy =    Cy   d Cy  <u  š <u           dQ     t              � =  =        8w     Cy =     = d d d d d d d d d d! d" d# d$ d% d& d' d��`) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d d da d dbc d dde df d dg dh dij dk dl d dm dn dop dq dr d dst du dv d dwx dy dz d{ d d| d} d~ d d d d d d d d d d d d d d d d d d d d d d d d d d d  dj> d d d d d d d d d d d d d d d d d d d d E d"3= d d d d d d d d��` d< d d d d d d d d d d d d d  d d d  d d d d d d d d  d d d d d d d d d d d d d d  d d� d d   d d  d d d d  d d  d d d d d d d d d d d d  d d  d!-")#&$ d% d d' d( d d d*+ d, d  d.5/20 d1 d d3 d4 d d697 d8 d d: d; d d=y>Z?N@GADB dC d dE dF d dHKI dJ d dL dM d dOSP dQ dR d  dTWU dV d  dX dY d d[j\c]`^ d_ d da db d ddge df d dh di d dkrlom dn d = dp dq d dsvt du d dw dx d  dz{|}~ d d d d d = d d d  d d d d d d d d d  d d d d d d d d d d d d d d d t d d d d d d d d d d d d d d?� d d š d d d š d d d d d d š d d d d š š ( ( ( ( ( ( ( ( ( 5 ( š š > : š š š š š š š š š š ( š > : š 5 š š � š d d š d d d š d d d š d!  d d š d d d m d  d d d š š š š š š š š š š š š š š c  d d š d")#&$ d% d š d' d( d š d* d+ d, d- d./012 š3 š4 š56789:;< š=> š? š@ šA šB šC š šDE š šFG šH šI šJ š šKL šM šN šO šP šQ šR šS šT šU šV šW šX šY šZ š[ š\ š] š^ š_ š` ša šb šc šd še šf šg šh ši šj šk šl šm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š} š~ š š š š š š š š š š š š š š š š A š š š š š š š š š š š š š š š  š š š š š š š š š < š š š  š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š A š > > >5 > > > > > > > > > > > > > > > > > > > > > > > > > >� > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >! >" ># >$ >% >& >' >( >) >* >+ >, >- >. >/ >0 >1 >2 >3 > >4 >6 >7 >8 >9 >:W;E< >= > >>? > >@A >B >C >D > > F >GO >HI > >J >K >L >MN > > P > >Q >R >ST >U >V > >X >Y >Z >[\ > >]^ >_ > >` >ab >c >d >e >f >g >h >i >j >k >l >m >n >o >p >q >r >s >t >u >v >w >x >y >z >{ >| >} >~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > š > > > > > > > š > > > > > > > >  A A A A A A A A A A A A A A A A A : A A A A A A A A A ʗ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A ʗ A A A A A A A A A A A A H A� A A A A AZ@#  A A A  A A A H A A A A A A H A A A A H A A A A A A A! A" ʗ A$1 A% A&',( A) A A*+ A H A- A. A/ A0 A H A29 A3 A45 A A6 A7 A8 5p A A:; A A<= A A>? A A HAJ ABC AD AE A AF AGH AI A ʗ AK ALS AM AN AOP A AQ AR A H ATU A AV AW AX AY H A[\]e^ A_ A` A Aab A Ac Ad A 5pfxgrhmi Aj A Ak Al A ʗ Ano A Ap Aq A Hs At A Auv Aw A A 5 Ayz A{ A| A} A A~ H A H A A A A A H A A A A A A ʗ A A A A A A A A ʗ 5p A A A A A A A A A H A A  A A A A A A A A A A A A A A A A A A A A � š š š š š š š š š š š š š š š š š š 5p š š š š š š š š š š š š š  š š š š š š š š š 5p š š š š š š š š š š < š š š š š š š š š š š  š š 5R 5R 5R 5R 5R�  5R 5R 5R 5R 5R 5R 5R 5R 5R A 5R 5R 5R 5R  5R 5R 5R 5R 5R 5R 5R R š š= š š š š( š š š š! š"# š š$ š%& š' š 5 š)3* š š+, š š-. š/ š0 š1 š š2 š 54 š5 š š67 š š8 š9 š:; š< š š 5> š? š@ šA šBbCUD šEM šFG š šH šI šJK š šL š 5 šN šOP š šQ šR šST š š 5 šVW šX šY šZ š[ š\_] š^ š 5 š š`a š 5 šcvdm šef š šgh ši šj šk š šl š 5n šo šp šq š šrs š št šu š 5wxy šz š š{| š} š~ š š š 5 š š š š š š š 5 š š š š š š š š 5 š š š š š š š š B š š š š š š š š š š š š š š š š š š š š š š š š š š   š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š šu š š` š š šL š š š š š š š š š� š š  š š š š š š š š  š š  š š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š5 š6 š7 š8 š9 š: š; š< š= š> š? š@ šA šB šC šD šE šF šG šH šI šJ š šK šM šN š šOPXQ šR šS š šT šUV š šW šY š šZ š[\ š š]^ š_ š ša šb šc šde šfgxhpi šj š škl šm šn š šo šq šr šs š štu š švw š š y š šz{ š š| š}~ š š š š š š š š š š š  š š š š š š  š š š š š š š  š š š š š š š  š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š A š š š š š š š š š  š š š š š š š š š  š š š škB1 š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š&' š( š) š š*+ š, š š- š./ š š0 š 2:3 š š45 š6 š7 š š8 š9  š; š< š= š> š š? š@ šA š C[DSELF šG šH š šIJ šK š R šM š šN šOP šQ šR š š B šTU š šVW šX šY šZ š A š š\]d š^ š_ š` šab š šc  še šf šg šh š šij š š 5lmv šn šo špq šr š šst šu š A š šw šx šy šz{ š| š š} š~ š ʗ š š š š š š š  š š š š š š š š  š š š š š š š š š š  š š š š š š š š š  š š š š š š  š š š š š  š š š š š š š š  š š š š š š š š A š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š  š š š š 5 š š š š š š š š š  š š š š š A šR 2 š! š"# š$ š% š& š š'( š) š* š+ š, š- š. š/ š0 š š1 š c3 š45 š6 š7 š8 š š9: š š; š< š=> š? š@ šA šB šC š šDE šF šG šH šI šJ šK šL šM šN šO šP šQ šR šS šT šU šV šW šX šY šZ š[ š\ š] š^ š_ š` ša šb šc šd še šf šg šh ši šj šk šl šm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š} š~ š š š š š š ( š š š š$ š š š š š š š ( š š š š š š š š ( š š š š š š š š ( š š š š š š š š š ( š š š š š š š ( š š š š š š š š ( š š š š š š ( š š š š ( š š š š š š š š š ( š š š š ( š š š ( š  š š š š š š š š A š š š š š š š š ( š š ( š š š ( š š š ( š š š� š š š š ( š š š š š š š š (  š  š š š š š š š š ( š š š š š š š š ( š š š! š"# š š (% š&H'?(7)0 š* š+, š- š. š š/ š ( š12 š š3 š4 š56 š ( š8 š9 š: š; š š< š=> š ? š@ šA šB š šCD š šE šF šG š ( šI šJ šKL š šM šN šO šP šQ š (S šTUeV šW šX šY šZ š[ š š\] š š^ š_ š` šab šc šd š š Af B&g B&h B&i B&j B&k B& B&lm B& B&n B&o B&p B&qr B&s B&t B& B& Av šwx šy š šz{ š| š} š~ š š š š š š š š š š š š 5a š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š B& B& B& B& B& B& B& B& B& B& A B& B& B& B& B& B& B& B B& š š š š š š š š š š š A š 5R š š š š š š š š š š š . š š š š š š š 5 š š š š š š š š B š š š š š š š š š š B š š š� š š š š B š š š š  š š š 5 š š š š š š 5 š š š š š š š š 5 % š š š š ! š š"# š$ š š š&' š š() š š* š+ š,- š š/0P1@ š23 š4:5 š6 š7 š8 š š9  š š; š<= š> š? š š A šBI šC šD šEF šG š šH  šJ šK šL šM š šN šO š 5QRgS`TZ šUV šW šX š šY  š š[ š\ š]^ š š_ š A ša šb šc šd še šf A šhioj š škl š šmn š š p šq š šrsut š š v š šwx šy šz š{ š| š} š~ š š š š š š š š š  š š š š š š  š š š š š š ʗ š š š š š š š š š š š š š š š š š š š š š š š  š š š š š  š š š š š š š š  š ( ( ( ( ( ( ( ( 5 ( ( ( ( ( ( A ( š š š š š š š š ( š š š š š š š š ( š š š š š š š ( š š š š š š š š š (7 š š š š š š š š š š š š  š š š� š š š š š š š š  š  š  š š š š š š š š š š š š š š š š& š š š š!" š š#$ š š% A š' š( š) š š*+ š, š š- š./ š0 š1 š2 š3 š4 š5 š6 š  š8 š9:E š; š<= š š> š? š@A š šB šC šD š cFXG šHP šIJ š šKL š šMN šO š š Q šR š šS šTU š šVW š šYtZf[ š\ š] š^b š_` š ša š H šc šde š ʗ šg šhn ši šj škl š šm š 5 šop š šqr šs š 5p šu šv šwx}y šz š š{| š H š~ š š š š š 5 š š š š š š H š š š š š š H š š š š š š ʗ š š š š š š š š š š š š š š š š š š š š š š š š A A A A A A A A > A A A A A A A A A A > d d d š d d d d š d d d d š d d d š d d d š d d d d d d d d d d š d d d š d d d d d d š d d d š d d%� d d dnd `  š  š d š š š d š š E] š š š š:(! š š A š š š š H" š#%$ š š &' A š š A)3*0+.,- š š / š š 1 š2 š š RM4 š5867 :9 š š (;P<F=C>@ š? c šAB D š  šD šE š  GMHJI š šKL š EM š N šO š A WQ\RYSVTU š kWX 5 š š ,Z š[ š š ] š^ š_ š 5 X šab dc d š dej šfg d šh ši š d šk šl šm š do|puq šrs št š š dv dwz šx šy š { d š d š} š~ d d š d d d š  d d d d d š d d d d š d d d d d d d d d š d d d d d d d d d d d d H d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d� d d d d d : d d d d  d d d d d d d š d d d d d d d d d d d d d d š !S"F#/ d$% d& d' d d( d)* d+ d d, d-. d š d0;1 d2 d3 d4 d5 d6 d7 d d8 d9 d: š d d<= d> d d?@ d dAB dC dD dE d d šG d dH dI dJK d dL dMN d dO dPQ d dR š dTaU dV d dW dXY dZ d[ d\ d d]^ d_ d d` š dbnc dd d de df dgh d di dj dk dlm d d šozp dq dr d dst du d dvw d dxy d š d{ d d|} d~ d d d d d d d d š d d d d d d d d d d d d d  d d d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d d d d šZ d d d d d d d d d d d d š d d d d d d d d š d d d d d d d d d� d d d š d d d d d d  d d d d d š d d d d d d d d d d d š?( d d d d! d d" d# d$% d& d d' > d)4 d*+ d, d- d. d/ d d0 d12 d3 d d <5 d d67 d d8 d9 d:; d< d= d d> š d@L dAB dC dD dE dF dG d dHI dJ dK d š d dMN d dO dP dQR d dS dT dUVX dW d š dY d [\~]r^ d_ d`ia db dc d dde d dfg dh d š d dj dk dl dmn d dop d dq d šs dt du d dv dw dx dyz d d{ d| d} d c d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d š d� d d d d d d d d d š  d d d  d d d d d š d d d d d d d ( d d d d d d d d! d"# d$ d d š&' d( d) d* d+ d, d- d. d/01j2S3I4G5 d6 d7 š8 š9 š: š; š< š= š> š? š@ šA šB š šCD šE šF š + šH š d šJM šKL š š NQOP š šR d š E]T]UY VWX š šZ[ š d \ š ^d_a š` d šbc  d š egf š  hi š  E škxlrm dnp šo š šq šsv dt du d šw d š dyz~{| š d š} d š d d š  š š š  d š d d š š š d š š š š š d d d d š d d d d d d š š d d d š š d d š d d d d š d d š d d d š d d š d d d š d d š d d d d d d d d š d š d d d d d d š d d d š d d d š d d d š d d d š dy d d d š d š d d d š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š' š( š š)* š+ š,H- š. š š/0 š1 š š2 š3 š45 š š67 š š89 š: š; š< š= š> š? š š@A š šB šCD š šEF š šG R š šIJ š šKL šM šN šOd šP šQR šS š šTU šV šW šX šY šZ š š[ š\] š^ š š_` ša š šb šc R š šef š šg šhi šj šk š šlm šn š šo špq šr šs š št šuv šw š šx  šz~{ | d} d š d d d š d š d d d d š d d d š d d d d d d d š š š š š š š š š š š š š š š  š š š š š š š  š š š š š š š š d d š d d d š d d d š d0)& d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d� d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d! d" d# d$ d% d E d' d( d š d*-+ d, d š d. d/ d š d18253 d4 d š d6 d7 d š d9<: d; d š d= d> d š d@sA=BUCODKEHF dG d  dI dJ d d LM dN d  dPQ  R S dT d dV[W X zY dZ d ï d\ Z]^ š_ š` ša šb šc šd še šf šg šh ši šj šk šlm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š š} š~ š š  š š š š š š š š š š š š š š š š š š š š š š š š š ; d d d d d d&ybXQN d r                                                                               ʵ �                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M ʵOP zRUST  7 7 VW Z rY\Z ï r[ s ï]`^_ ï i a d dcndiegf d dh d djlk d Q dm d  dotprq d  ds d  duwv d  dx d x dz{|}~ d d d d d d d Z d d Ʈ d d Ʈ d d Ʈ d d Ʈ d d  d d 7 d d 7 d d 7 d d ˘ d d i d d i d d d d d d d d d d d d ˘ d d > d d 4 d d ˘ d d d d d d d d Œ d d ` d d d d d d  d d ҉ d d  d d s d d d d  d d  d d Œ d d r d d ï d d y d d ï d d d d d^�/  d x d d r d   d  d d  d d  d d  d d  d d  d$ d Ʒ d d ï d "! d ï d# d ˘ d%*&(' d Œ d) d y d+-, d y d. d d0G1<27354 d d6 d d8:9 d d; d  d=B>@? d dA d dCED d Z dF d i dHSINJLK d r dM d ƙ dOQP d dR d x dTYUWV d Ʒ dX d à dZ\[ d ï d] d r d_`uajbgced d df d d dhi d dkplnm d ï do d dqsr d  dt d Œ dvw|xzy d Œ d{ d ƨ d}~ d d d d d ï d d d d d d ï d d Ʒ d d  d d  d d Ʒ d d d d Œ d d d d Ʒ d d d d d d d d d d d  d d  d d Œ dr V              V   ʵ    ʵ  V  V    ʵ  ʵ    Ƒ �   9U         ,]    Ƒ    V E1(#! " ʵ $&% V ' ).*,+ - / 0 2=38465 ʵ 7  9;: ʵ <  >C?A@ V B  D ʵ F[GPHMIKJ ʵ L ʵ N O  QVRTS  U = WYX Ƒ Z ,] \g]b^`_ ʵ a  ced f hmikj  l o npo o q o stuvxw ʵ y~z|{ }       =    ,]     ʵ   ʵ     B   ʵ   ʵ  ʵ  V  =  ʵ  ʵ    =    V   V  V     =   ʵ   ʵ  V  V  ʵ  ʵ   V � ʵ          ,]  Ƒ    ʵ  V  !  "$#  % '()*V+@,5-2.0/ m M m1 m 4 m m34 m  m6;798 m  m: m M m<>= m m? m mAJBGCED m mF m mH mI m KH mK mL mM N OP Q R ST U HWnXcY^Z\[ m ~ m] m ! m_a` m ! mb m M mdiegf m ~ mh m ~ mjlk m M mm m M mozpuqsr m mt m y mvxw m my m  m{|~} m  m m m m M m m m m 6 m m m m m m  m m M m m  m m m m m m m m m m m m  m m ~ m m  m m m m m m M m m | m m M m m M m m M m m M m m m m M m m M m m M m m M m m M m m M m m M m m 8; m m  mD m m m  m m !* m m M m m � m m + m m M m m m � m  m m ~ m m � m m m   m  m m  m m ~ m m KH m-" m M m m m  m  m! m ~ m#($&% m m' m m)+* m M m, m ~ m.9/4021 m M m3 m m576 m  m8 m KH m:?;=< m  m> m  m@BA m M mC m  mEoF]GRHMIKJ m M mL m M mNPO m | mQ m ` mSXTVU m  mW m M mY[Z m M m\ m M m^i_d`ba m M mc m V megf m � mh m M mjlk m  m mmn m  mpq|rwsut m !9 mv m  mxzy m  m{ m m}~ m M m m M m m ~ m m M m m > m m 5 m m M m m m m m m !H m m m KH m> d ï d d  d d Ʒ d d y d d Œ d d ï d d Ʒ d d Ʒ d d Ʒ d d ï d d Ʒ d d ï d d ï d d d d d d Ʒ d d Œ d d Œ d d Œ d d d d d d d ï d d d d Ʒ d d  d d d d ï d d ï d d  d d i d& d Œ d� d d d  d d ï d   d 7 d d Œ d  d  d d Z d d  d d Œ d d ï d d ƙ d! d d d"$# d d% d d'<(3).*,+ 4 4- 4 4/10 4 42 4 4475 46 4 3 48:9 4 P 4; 4 3 4= 4 4?@oAXBMCHDFE d ï dG d Œ dIKJ d  dL d dNSOQP d dR d ï dTVU d dW d 7 dYdZ_[]\ d Ʒ d^ d  d`ba d dc d i dejfhg d 7 di d Œ dkml d  dn d  dpqzru dst d ï dvxw d  dy d ï d{|~} d  d d 3 d d  d d  d d d d y d d  d d  d d  d d z d d ï d d Œ d d  d d Œ d d  d d d d  d d Z d d d d d y d d ï d d d d ï d d Z d d Ʒ d d Ʒ d d Ʒ d d  d d  d d Z d d y d d d d d d ï d d ƙ d d x d d x d d Œ d d ï d d  d d  d d 6 d d  doS$�  d Ʒ d d d  d  d d d   d  d d  d d Ʒ d d Œ d" d d d  d  d d! d  d# d d%<&1',(*) d Ʒ d+ d Ʒ d-/. d Œ d0 d r d27354 d Ʒ d6 d d8:9 d ï d; d ï d=H>C?A@ d à dB d ï dDFE d dG d ˘ dINJLK d Ʒ dM d dOQP d dR d Œ dTUlVaW\XZY d  d[ d Œ d]_^ d ` d` d r dbgced d  df d dhji d ƙ dk d Œ dmxnsoqp d dr d Ʒ dtvu d dw d dy~z|{ d  d} d  d d  d d  d d  d d  d d  d d Z d d Z d d d d d d d d d d d d d d  d d d d  d d Œ d d ï d d d d x d d x d d Z d d d d Ʒ d d  d d d d  d d d d ƙ d d d d z d d d d Z d d d d d d d d  d d d d d d d d x d d r d� d i d d d d d d Ʒ d    d d d d d d d dB+  d d d Z d d Ʒ d d d!&"$# d d% d d')( d  d* d ï d,7-2.0/ d V d1 d r d354 d  d6 d 7 d8=9;: d d< d d>@? d Ʒ dA d G dCXDMEHF dG d dIKJ d dL d !W dNSOQP d ï dR d dTVU d dW d dYdZ_[]\ d d^ d  d`ba d dc d i dejfhg d di d dkml d Z dn d dp0qrstuzvxw d dy d d{}| d ƨ d~ d Ʒ d d  d d d d d  d d r d d  d d  d d Ʒ d d d d d d d d à d d d d Ʒ d d d d Z d d r d d > d d d d Œ d d ï d d Z d d  d d ï d d d ï d d Ʒ d d d d d d d d d d d d d Ʒ d d d d d d d d d d d d d d d d  d d Œ d d  d � d ï d d d Z Z Z Z Z Z  K Z Z  d d d d d d d d d d d d%  d d  d!#" d d$ d i d&+')( d  d* d  d,.- d  d/ d ` d12a3J4?5:687 d d9 d d;=< d ƙ d> d d@EACB d dD d s dFHG d Ʒ dI d dKVLQMON d dP d dRTS d dU d dW\XZY d Œ d[ d d]_^ d d` d ï dbycndiegf d ï dh d  djlk d ï dm d  dotprq d s ds d ï duwv d dx d ƙ dz{|~} d H d d Z d d d d d d r d d ï d d d d d d d d  d d d d  d d d d ƙ d d ï d d ï d d  d d y d d d d d d d d Ʒ d d Ʒ d d d d Z d d i d d ï d d Œ d d s d d ï d d d d d d r d d  d d  d d ï d d z d d ï d d Z d d  daK  � d ï d d  d d d d à d d  d d r d  d d d d   d d d d d d d d d 7 d d ˘ d d d d!8"-#($&% d d' d  d)+* d d, d  d.3/10 d d2 d d465 d d7 d ï d9B:?;=< d ƙ d> d Œ d d@A d 7 dCHDFE d dG d dI dJ d s dLyMdNYOTPRQ d ï dS d dUWV d dX d ï dZ_[]\ d ˘ d^ d ï d`ba d Ʒ dc d denfig dh d  djlk d dm d dotprq d Ʒ ds d duwv d dx d Œ dz{|}~ d  d d x d d d  d d d d d d d d ï d d d d d d d d d d d d d ï d d d d Œ d d Z d d  d d  d d i d d ` d d Z d d d d d d  d d Ʒ d d Z d d d d d d  d d š d d Ʒ d d  d d d d d d d  d d d d Œ d d Ʒ d d  d d  d d  d d  d d  d� d  d d d2   d d d  d  d ` d d d d d d  d d  d d  d'"  d d! d d#%$ d d& d d(-)+* d d, d y d.0/ d  d1 d ï d3J4?5:687 d ܹ d9 d i d;=< d d> d y d@EACB d y dD d dFHG d Z dI d dKVLQMON d dP d dRTS d Z dU d Ʒ dW\XZY d d[ d ï d]_^ d d` d db dcde|fqglhji d dk d 7 dmon d L dp d Z drwsut d  dv d  dxzy d  d{ d  d}~ d  d d d d d d ï d d d d Œ d d d d d Ʒ d d  d d  d d ҉ d d d d d d d d Ʒ d d d d d d d d Z d d d d Ʒ d d Ʒ d d 7 d d d d ï d d d 7 d d d d  d d  d d  d d Ʒ d d  d d Z d d Z d d Z d d  d d d d  d$ d  d d  d d d      �   ł   ł ց 6 j 65 X  ł M 4 ց ;     d ƙ d d d d ï d "! d 6b d# d Œ d%0&+')( d d* d ï d,.- d ï d/ d ï d16243 d d5 d d798 d d: d  d< d= d> d? d@ A B dC�-DE�FGvH_ITJOKML k v kN k 6 kPRQ k  kS k u kUZVXW k < kY k 6 k[]\ k k^ k k`kafbdc k QC ke k 6 kgih k !f kj k klqmon k < kp k krts k ku k kwxy~z|{ k !u k} k < k k k k k k  k k k k k 7 k k u k k  k k k k ! k k ! k k 6 k k k k k k < k k k k  k k k k < k k o k k o k k !u k k < k k ! k k 6 k k k k k k < k k ! k k k k o k k !f k k o k k 6 k k k k < k k k k k k k k k k k Z k k k k QC k k !f k k 6 k^/  k o k k u k   k !f k k < k k ! k k k k < k k u k$ k k !u k "! k 6 k# k ! k%*&(' k ! k) k 6 k+-, k 6 k. k 6 k0G1<27354 k 6 k6 k k8:9 k k; k 6=B>@? k QC kA k < kCED k ! kF k ! kHSINJLK k o kM k ! kOQP k o kR k QC kTYUWV k o kX k  kZ\[ k k] k k_`walbgced k kf k ! khji k < kk k QC kmrnpo k kq k 6 ksut k kv k kxy| kz{ k k}~ k k k 6 k k u k k u k k < k k k k < k k < k k u k k !u k k k k k k 6 k k < k k k < k k k k ! k k k k ! k k k 6 ku k S k k o k k 6 k k QC k k k k S k k k * k k k k ! k k ! k k < k k ! k k o k k ! k k k k k k !f k k k k Ʒ k k 6 k k 6 k k !f k k ! k�  k o k k k  k o k k k   k 6 k k k k k k kF/$ k k k k "! k S k# k k%*&(' k !f k) k k+-, k k. k R k0;16243 k k5 k S k798 k ! k: k 6 k<A=?> k ! k@ k QC kBDC k kE k 6 kG^HSINJLK k kM k o kOQP k kR k 6 kTYUWV k kX k 6 kZ\[ k k] k ! k_j`eacb k u kd k kfhg k ki k kkplnm k } ko k n kqsr k o kt k 6 kvwxyz} k{| k !u k~ k 6 k k 6 k k ! k k 7 k k ! k k 6 k k QC k k ! k k ! k k k k k k k k v k k o k k o k k !u k k < k k 6 k k k k S k k o k k k k < k k k k ! k k 6 k k sP k k 6 k k k k o k� k QC k k 6 k k 6 k k < k k k k k k ! k k 6 k k k k k k 6 k k ! k k S k k k��� k v k� k ! k������ �� � k ! k� k k� �� k k� k k����� k k� k o k��� k < k� k k��$��"�� � k k�! k < k�# k ! k�%�*�&�(�' k < k�) k ! k k�+�, k o k�.�/��0��1�^�2�G�3�>�4�9�5�7�6 d d�8 d d�:�<�; d Z d�= d Œ d�?�B�@ d�A d Œ d�C�E�D d ï d�F d Œ d�H�S�I�N�J�L�K d  d�M d d�O�Q�P d ï d�R d d�T�Y�U�W�V d ï d�X d d�Z�\�[ d  d�] d Œ d�_�v�`�k�a�f�b�d�c d  d�e d  d�g�i�h d Œ d�j d Ʒ d�l�q�m�o�n d  d�p d r d�r�t�s d  d�u d  d�w��x�}�y�{�z d  d�| d ƨ d�~�� d Ʒ d� d  d��� d� d  d��� d d� d  d����������� d y d� d d� d� d Œ d����� d ƙ d� d Z d��� d Œ d� d Œ d������� d d� d Œ d d�� d  d����� d ï d� d ï d��� d  d� d Œ d��������� d Z d� d Œ d��� d d� d à d����� d d� d Ʒ d��� d Œ d� d d��� d��� d  d� d Œ d����� d  d� d ƨ d��� d  d� d 7 d�;���������� 4 } 4� 4 r 4��� 4 } 4� 4 3_ 4����� 4 3_ 4� 4 4��� 4 3_ 4� 4 ï 4����� 4 4 4 4 4 ï 4 4 3_ 4    4 x 4 4 } 4 4 4 Od 4& 4 4 4 Od 4 4 4 4 4! 4 4 4 4"$# 4 4% 4 4'2(-)+* 4 4, 4 " 4.0/ 4 3_ 41 4 3_ 438465 4 Od 47 4  49 4: 4 4<h=T>I?D@BA 4 r 4C 4 4EGF 4 V 4H 4 ƙ 4JOKML 4 ï 4N 4 3_ 4PRQ 4 4S 4 " 4U]VXW 4  4Y[Z 4  4\ 4 ï 4^c_a` 4 4b 4 4dfe 4 4g 4 4ijukplnm 4 ï 4o 4 ï 4qsr 4 4t 4 3_ 4v{wyx 4 4z 4 3_ 4|~} 4 } 4 4 } 4 4 4 4 3_ 4 4 Od 4 4 3_ 4 4 4 4 4  4 4 Y 4U Ʒ   #  !  "'  !  Ʒ  ;  ;  <  <  !  E  #  }3  ;  <   #  ;  R   R  "'  ;  !  X  }3  ;    ; & 4 4 4 4� 4 4 4 9 4  4 tI 4 4 4   4 3 4 4 7 4 4 3 4 4 , 4 4 4 4 4! 4 4 4 4"$# 4 4% 4 4'>(3).*,+ 4 9 4- 4 4/10 4 42 4 3 449576 4 48 4 4:<; 4 4= 4 3 4?J@EACB 4 3 4D 4 4FHG 4  4I 4 4KPLNM 4 4O 4 4QSR 4 4T 4 4VWXoYdZ_[]\ d Ʒ d^ d d`ba d dc d dejfhg d Ʒ di d y dkml d Ʒ dn d  dp{qvrts d ï du d Œ dwyx d Œ dz d d|}~ d  d d d d  d d Ʒ d d Ʒ d d ƙ d d Œ d d d d Œ d d d d d d d d d d d d 7 d d ï d d d d y d d Ʒ d d ï d d ï d d ï d d d d Œ d d s d d  d d d d ï d d ï d d d d i d d  d d r d d ï d d Œ d d Œ d d ï d d d d Ʒ d d ƙ d d  d� d d d d d y d d y d d d y d d  d d  d   X V, l  OG  l  65 !   "'#%$ & (*) 54 + -B.9/4021 65 3  576 8 % :?;=< "6 > 65 @A CNDIEGF H % JLK "E M OQP "T RTS X U l WyXgYaZ_[]\ % ^ l ` b ced  f 3 hnil jk "c m 65 otprq 65 s uwv X x X z{|}~ l   l  l   l  l  X  l      X   l  4 3 4 4 4 4 , 4 4 4? 4 4  4 4 tI 4 4 4 4 4 tI 4 4 , 4 4  4 4 4 4 4 4 4 4 4 4 Y 4 4 4 4 3 4 4 N 4 4 9 4 4 4 4 K 4 4 4 4 4 4 4 4  4 4 4 4  4 4 4 4  4) � 4 4 4 e 4 4 3 4 4 , 4   4  4 4 3 4 4 H 4 4 4 4 K 4 4 4 4  4$ "! 4 , 4# 4 9 4%'& 4 9 4( 4 4*A+6,1-/. 4 40 4 K 4243 4 , 45 4  47<8:9 4 K 4; 4 4=?> 4  4@ 4 4BMCHDFE 4 3 4G 4 4IKJ 4 4L 4 9 4NSOQP 4 tI 4R 4 4? 4TVU 4 4W 4 3 4YZ[o\j]h^c_a` "r % "rb "r "rdfe "r "rg "r :M "ri "r :M "rkml "r r "rn "r sP "rpq|rwsut "r "rv "r y "rxzy "r "r{ "r y "r}~ "r "r "r ; "r "r :M "r "r "r "r r "r "r :M "r "r y "r "r t: "r "r s "r "r "r "r ; "r "r "| "r "r "r "r "r "r "r "r ; "r "r "r "r y "r "r ; "r "r "r "r "r "r " "r "r " "r "r = "r "r Œ "r "r s "r "r "r "r "r " "r "r "r "r % "r "r "r s "r "r % "r "r s "r "r "r " "r "r "r "r "r "r "r "r "| "r "r "rM  d  d d ï d d d d� d i d d r d d Ʒ d d ï d    d d d  d d d Œ d d Ʒ d d  d d Ʒ d d d6 +!&"$# d V d% d ï d')( d Z d* d r d,1-/. d L d0 d Z d243 d ï d5 d Œ d7B8=9;: d d< d d>@? d  dA d  dCHDFE d  dG d ï dIKJ d  dL d dN}OfP[QVRTS d Ʒ dU d Œ dWYX d dZ d Ʒ d\a]_^ d Œ d` d  dbdc d Œ de d dgrhmikj d  dl d Ʒ dnpo d dq d dsxtvu d dw d  dy{z d  d| d Œ d~ d  d d r d d d d d d ï d d d d Œ d d ï d d Ʒ d d ï d d d d k d d ï d d Œ d d d d ï d "r "r "r "r "r ; "r "r :M "r "r y "r "r  "r "r "r "r "r "r "r "r :M "r "r "r "r r "r "r :M "r "r y "r "r y "r "r y "r "r ï "r "r "r "r "r "r r "r "r n "r "r % "r "r :M "r "r "r "r "r � "r " "r "r "r "r s "r "r " "r "r "r   "r y "r "r y "r "r "rf@) "r y "r "r y "r "r "r "r t: "r$ "! "r s "r# "r "r%'& "r "r( "r "r*5+0,.- "r s "r/ "r "r132 "r "r4 "r s "r6;798 "r s "r: "r " "r<>= "r s "r? "r y "rAXBMCHDFE "r "rG "r y "rIKJ "r " "rL "r ; "rNSOQP "r "rR "r " "rTVU "r " "rW "r "rY[Z "r s "r\a]_^ "r :M "r` "r :M "rbdc "r r "re "r ; "rgh|itjokml "r t: "rn "r :M "rprq "r "rs "r "ruwv "r r "rxzy "r % "r{ "r "r}~ "r r "r "r % "r "r "r "r  "r "r y "r "r "r "r y "r "r y "r "r "r "r :M "r "r :M "r "r "r "r t: "r "r n "r "r "r "r y "r "r y "r "r "r "r "r "r :M "r "r y "r "r "r "r " "r "r "r ; "r "r :M "r "r "r "r ; "r "r "r "r "r "r y "r "r "| "r "r "| "r "r "r "r C "r "r y "r "r % "r "r n "r "r y "r "r "r r "r "r "r "r "| "r "r s "r "r "r� "r t: "r  "r t: "r "r " "r   "r "r "r "r "r "r :M "r "r "r "r y "ro@+%  "r "r "r "r!#" "r :M "r$ "r r "r&)' "r( "r s "r* "r ; "r,7-2.0/ "r "r1 "r % "r354 "r " "r6 "r s "r8=9;: "r s "r< "r % "r "r>? "r "rAXBMCHDFE "r Z "rG "r "| "rIKJ "r "rL "r "rNSOQP "r "rR "r y "rTVU "r "rW "r "rYdZ_[]\ "r "| "r^ "r "r`ba "r "rc "r "rejfhg "r y "ri "r :M "rkml "r y "rn "r " "rpqr}sxtvu "r t: "rw "r y "ry{z "r ; "r| "r "r~ "r "r "r y "r "r "r r "r "r " "r "r t: "r "r "r "r y "r "r  "r "r r "r "r r "r "r y "r "r y "r "r y "r "r "r "r y "r "r r "r "r "r "r " "r "r y "r "r > "r "r " "r "r " "r "r % "r "r y "r "r y "r "r :M "r "r ; "r  6,  ʵ  #  #    ʵ  ʵ  #  =     #  #  #  �    ʵ     #!  ʵ   !  Ƒ   "'#%$  & = (*) +  -Z.E/:05132 4 ,] 687 9 V ;@<>= ? ACB Œ D FOGLHJI  K MN PUQSR ʵ T VXW ʵ Y ʵ [o\d]b^`_  a c ejfhg i ʵ kml n #0 pyqt rs ,] uwv ʵ x ʵ z{}| ʵ ~    #        ʵ  ʵ  ʵ  Ƒ  ,]  ʵ    ʵ  ʵ  ,]   o    ʵ  ʵ   Ƒ  ʵ  y     ʵ                    ʵ  ʵ  9U  ʵ    �             #!           ʵ   =     V   ʵ              + ! & " $ # ʵ  %  ' ) ( #?  * ʵ  , 1 - / .  0 ï  2 4 3  5  7 9 8   :  ; h < S = H > C ? A @  B  D F E s  G  I N J L K  M  O Q P V  R 9U  T _ U Z V X W Ƒ  Y ,]  [ ] \  ^  ` e a c b ʵ  d ʵ  f  g V  i  j l k ,]  m  n  o  p  q  r  s  t  u  v  w  x y  z  {  |  }  ~  "r         ʵ  =     ʵ      Ƒ                  ʵ    V  V      V  #N             Ƒ     ʵ  ,]      #!  Ƒ                =            #]    ʵ             #!        ʵ       d y d d    � h    [  .        4  4 ï 4   4 4 4 4 ï 4    4  4 4    4 3_ 4  4 4  #      4 4  4 4 4  ! 4 4 " 4 4 $ ) % ' & 4 Od 4 ( 4 ï 4 * , + 4 4 - 4 Od 4 / D 0 9 1 4 4 2 3 4 4 5 7 6 4 3_ 4 8 4 r 4 : ? ; = < 4 3_ 4 > 4 3_ 4 @ B A 4 4 C 4 ï 4 E P F K G I H 4 4 J 4 4 4 L N M 4 } 4 O 4 4 Q V R T S 4  4 U 4 Y 4 W Y X 4 Y 4 Z 4 3_ 4 \  ] t ^ i _ d ` b a 4 4 c 4 ï 4 e g f 4 3_ 4 h 4  4 j o k m l 4 Y 4 n 4 ï 4 p r q 4 ï 4 s 4 4 u } v x w 4 3_ 4 y { z 4  4 | 4 } 4 ~ 4   4 ï 4 4 r 4         4 #l 4 4 3_ 4   4  4 4  4   4 x 4 4  4 ï 4       4 3_ 4 4 Od 4   4 r 4 4 Y 4     4 4 4 4 V 4   4 } 4 4 ï 4             d ƙ d d d   d ï d d  d     d ï d d ` d   d Ʒ d d d     d d ƙ d   d ï d d d     d Ʒ d d Œ d   d d d Ʒ d         d d d d   d d d d     d  d d x d   d Ʒ d d ï d  �     d Z d d ҉ d   d d d r d      d ƙ d  d i d    d d d Z d  ;  $        d d  d d    d Z d  d  d      d r d  d r d  " ! d d # d ï d % 0 & + ' ) ( d s d * d d , . - d d / d  d 1 6 2 4 3 d d 5 d  d 7 9 8 d d : d x d < S = H > C ? A @  B  D F E  G o  I N J L K =  M  O Q P #!  R V  T _ U Z V X W  Y  [ ] \ Ʒ  ^ Ʒ  ` c a  b   d f e Ƒ  g  i  j  k  l  m x n s o q p d Z d r d d t v u d d w d x d y ~ z | { d d } d Œ d  d Z d       d  d d  d   d Œ d d ˘ d     d  d d d   d  d d d         d Œ d d ï d   d d d ˘ d   d d Ʒ d   d d d Œ d     d d d d  d  d     d d d d   d d d d           d  d d  d d  d ƙ d     d d d d   d d d Z d       d d d Z d d  d Ʈ d     d Ʒ d d r d   d Œ d d d         d Œ d d  d   d Œ d d d     d d d d d �  d  d        d Œ d  d  d   d  d d d      d d  d d    d r d  d Œ d  q  F  1  &  ! d  d Œ d " $ # d d % d Œ d ' , ( * ) d d + d  d - / . d d 0 d Œ d 2 ; 3 6 4 d 5 d y d 7 9 8 d d : d ; d < A = ? > d d @ d d B D C d d E d ï d G \ H Q I N J L K d  d M d ï d d O P d Ʒ d R W S U T d  d V d d X Z Y d d [ d d ] f ^ c _ a ` d d b d  d d d e d d g l h j i d  d k d Ʒ d m o n d d p d i d r  s  t  u z v x w d  d y d Œ d { } | d i d ~ d d     d  d d d   d  d d Z d       d  d d i d   d Ʒ d d Œ d     d ï d d y d   d  d d r d         d d d  d   d d d i d     d y d d > d d d       d Z d d 7 d d  d x d  d  d Ʒ d   d i d d x d   p                 K     4l         j     K         K     4l   j           j   4l     Œ   ּ   �      4l                  4l         ܜ        ܜ          K   F  /  &  !     ޕ   4l  " $ #  Tg  %   ' *  ( )  ߰  + - ,  z  .  z  0 ; 1 6 2 4 3  ߰  5  ܜ  7 9 8  ܜ  :  j  < A = ? >  j  @    B D C  4l  E  j  G \ H S I N J L K  ּ  M   O Q P  ּ  R  z  T Y U W V  ּ  X  j  Z  [  y  ] e ^ c _ a `  N  b   d  ߰  f k g i h    j  ߰  l n m  j  o   q  r  s u t    v  w | x z y  j  {  Œ  }  ~  m   K       4l   ܜ     4l   j           Tg       j   4l       4l   4l     4l   U         K        Œ   ߰       #z       ּ   N                   K   Tg       j   ߰              4l     ޕ   z       j   4l        4l           ߰   z     ּ   z       ּ   j     ܜ �   K   ޕ       Tg     O   ܜ   (   K %V1&! d d d d"$# d Z d% d d',(*) d d+ d  d-/. d > d0 d  d2M38465 d r d7 d ҉ d9K: d; d< = > ? @  A BC D  EF G H  I J  L d  dNSOQP d dR d Ʒ dT dU d ˘ dWjXaY\ dZ[ d d]_^ d  d` d dbec dd d Œ dfhg d Œ di d dklmn do dp q r s t  uv w x y  z{ |  }~                                                              #  d i d d ï d d Œ d d ˘ d d d d ï d d Ʒ d d Œ d d i d d d d Œ d d 7 d d Ʒ d d Z d d Œ d d ï d d d d 7 d d  d d Œ d d d d d� d ï d d  d   d Œ d d ˘ d  d Z d d Ʒ d d Ʒ d d d d d d d"  d i d! d d# d$ d  d&x'O(?)4*/+-, # # #. # :0 #021 # # #3 # # #5:687 # #9 # :0 #;=< # #> # # #@F #ABDC # # #E # ' #GJ #HI # # #KML # ' #N # ~G #PeQZRUS #T # ˘ #VXW # # #Y # #[`\^] # # #_ # #acb # # #d # #fqglhji # :0 #k # # #mon # # #p # K* #rus #t # # # #vw # #yz{|}~ # # # # # # # # # # # # ' # # # # # # # # K* # # # # # # # # # # # # # # # t # # # # # # # ' # # # # :0 # # # # # # # # # # # # ' # # # # # # # # # # Y # # :0 # # # # # #w4 d  d d Ʒ d d Ʒ d d Z d d i d d y d d d d  d d d d ï d d  d d 7 d� d Ʒ d d Œ d d d d d     d à d d Z d d  d d  d d d d  d d Z d d Z d +!&"$# d  d% d  d')( d Z d* d d,/- d. d Ʒ d021 d d3 d Œ d5d6M7B8=9;: d d< d d>@? d Z dA d Z dCHDFE d Ʒ dG d i dIKJ d dL d Œ dNYOTPRQ d dS d i dUWV d  dX d y dZ_[]\ d y d^ d y d`ba d r dc d  dezfoglhji d dk d Œ d dmn d i dpuqsr d dt d ï dvxw d  dy d d{|}~ d d d ï d d Œ d d d d d  d d d d  d d d d d  d d  d d ï d d Œ d d Z d d Z d d Z d d d d d d d d d d  d d ƨ d d Ʒ d d ҉ d d Z d d d d ƨ d d d d  d d ï d d ï d d ï d d d d Z d d ï d d d d r d d ƙ d d d d d  d d ï d d ƨ d d y d d x d d y d� d Œ d d Ʒ dc4     d y d d Œ d d y d d d d d d d d d Œ d)$ "! d d# d ƙ d%'& d i d( d Z d*/+-, d d. d d021 d d3 d d5L6A7<8:9 d d; d ƙ d=?> d ï d@ d dBGCED d Z dF d dHJI d 7 dK d  dMXNSOQP d ï dR d i dTVU d i dW d ƨ dY^Z\[ d  d] d Z d_a` d i db d ddezfoglhji d Z dk d Œ dm dn d dpuqsr d y dt d Ʒ dvxw d Œ dy d i d{|}~ d  d d d d d d ` d d ï d d Œ d d Œ d d ƙ d d  d d ï d d Ʒ d d d d Œ d d d d Ʒ d d d d i d d d d j d d d d Œ d d d d d Œ d d Ʈ d d d d Œ d d  d d r d d  d d Z d d d d ï d d Œ d d Ʒ d d  d d d d d d Z d d Z d d Ʒ d d  d d Œ d d r d� d d d  d d Œ d d ˘ d    d  d d ï d d Ʒ d d Œ d d i d d d d ï d d r dJ 3!,"'#%$ ʵ & ʵ (*) + -0 ./ Œ 12 ʵ 4?5:687 #? 9 ʵ ;=<  > ʵ @EACB ʵ D 7 FHG  I ʵ KbLWMRNPO Œ Q Œ SUT ; V * X]Y[Z Œ \ Œ ^`_ Œ a ; cndiegf T h jlk ; m $ orp q $ sut Œ v Œ xyz{|}~  Œ  T  T  T  T  Œ   T   T  $)  $  $  T  ;  T  $  ;  Œ  ;  Œ  ;  ï    $   Œ  Œ  Œ  T  Œ    _  _    +   $  T  א  $8   $G � $  _    Œ     6  Œ  Œ  Œ pA*"  Œ   ; ! ; #($&% '  ) ; +6,1-/. $V 0 $ 243 ; 5 + 7<8:9 + ; + =?> + @ א BYCNDIEGF $ H B JLK :[ M Œ OTPRQ ; S UWV } X ; Ze[`\^] _  acb 6 d  fkgih T j  lnm o qrs~tyuwv ; x א z|{ ; } T  +   $  $   Œ  ;  ;  Ž  $  $e   $V  ;    Œ   $   $  T   _   Œ  Od % "r :M "r "r "r "r "r "r % "r "r "r "r "r "r "r "r "r "r % "r "r s "r "r "r "r "r "r " "r "r "r "r t: "r "r "r "r� "r "r "r Œ "r "r :M "r   "r "r "r y "r  "r "r "r "r "r "r "r % "r "r ; "r  "r t: "r "r Œ "r!#" "r "r$ "r s "r&S'>(3).*,+ "r s "r- "r s "r/10 "r s "r2 "r "r49576 "r n "r8 "r " "r:<; "r :M "r= "r :M "r?H@EACB "r "rD "r "rF "rG "r 7 "rINJLK "r "rM "r ; "rOQP "r "rR "r "rTkU`V[WYX "r "rZ "r "| "r\^] "r :M "r_ "r "rafbdc "r "re "r "rgih "r "rj "r y "rlump "rno "r "rqsr "r "rt "r "rv{wyx "r % "rz "r "r|~} "r " "r "r "r "r t: "r "r % "r "r s "r "r "r "r "r "r "r "r r "r "r s "r "r "r "r " "r "r "r "r "r "r "r "r "r "r s "r "r "r "r "r "r "r "r "r "r n "r "r Œ "r "r "r "r "r "r n "r "r "r "r "r "r "r "r n "r "r t: "r "r "r "r "r "r Œ "r "r y "r "r "r "r ^ "r "r n "r "r :M "r "r t: "r "r t: "r "r r "r� "r y "r "r "r "r "r "r " "r   "r "r "r "r "r "r Œ "r& "r "r "r "r "r " "r "r "r! "r "r "r :M "r"$# "r "r% "r "r'2(-)+* "r t: "r, "r :M "r.0/ "r "r1 "r "r38465 "r "r7 "r y "r9;: "r s "r< "r " "r>W?K@GADB dC d  dE dF d Z d kHI dJ d  dLPM 7N dO d Ʒ dQTR dS d Œ dU dV d s dXaY]Z i[ d\ d Z d^ Ʒ_ d` d ï dbc  Œde df dg dh i j kol m n dp qr d tuvw~x{y dz d y d| d} d d r d d d  d d d  d d G d d d d d d d d d s d d d Z d d d s d d d d    d d ` d d d Œ d d d Z d  d d d  d d > d d d d  d d d + d d d d d d dQ  s  ï x  k s  Œ   s y  r >   s  i ï Œ d s  Z 7 Ʒ� V  Z $e ˘     G Œ  Œ  à d 3$ ï y Ʒ Z Œ d Z! ` ƙ Ʒ"#  Z W%,&)'( >   Œ*+ Z  s-0./ x Z d Ʒ12 ï  r s4C5<6978 Ʒ  ï :; ƙ  =@>? Z Ʒ d ƷAB  Z z ïDJEHFG ï V ƷI y ïKNLM ï Z d OP Ʒ ï rRSpTbU\VYWX  Z ï Z[ ï G  r]_ Z^ z d`a x cjdgef r hi d x ƙknlm x Z ï Ʒ o xqrysvtu dwx :y Ʒ ïz}{| `  Œ s~ ï Œ r  Œ Z Ʒ     s  :y  s Œ   s k ï d   z s  ҉ 7 ƙ Ʒ Ʒ                 tI   o5 u x Œ  Ʒ  Z ƙ d ï  x Œ ƨ ï L 6b ï Z Ʒ ï  Z z r y ƙ Z d ƙ š  d d d d d  s  d  d d d d d d d d d d d d d d :y d d d Ʒ d  d d� d d d d d d d d d ' "    d d d d d d d d d d d d d d d  Cy <u ! <u P #%$ =  = =& = Cy( d) d* d =,<- . d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d  d Œ d>?@AbBUCIDE d ƷF kG dH d Z dJQKNL dM d y dO dP d  dR S dT d dV_W[ yXY dZ d s d \] d^ d d`a Z icsdjeif g dh d d ko klm dn d  dp q dr d dt}uy yvw dx d d sz{ d| d d~  d z d d d d d d d d d d d d * * d * * * d * * * d * d * d * d * * d * * d * * d * d d d d * * * d d d d * d * d * d * d d d d d d d d * * * d d * * d * * d * d d * * d * * * d * * d * * d d * d d d * d d * * * d * * d d * d d d * * * d * * d d * d d d * � * d * * * * * d * d * * d *  d  * * d * * d * d d d * * d * da\#" Ʒ d! d Z d Z $U%R& ' ( ) *8+ , -. / 01 2 34 5 6 7 9 :F; < = > ? @ A B CD E d GH I J K LM N O P Q < S dT d dVYW dX d ƨ dZ d[ d d]|^u_b` da d dc id ie i if ig ih ii ij ik ilm i in io ipq i ir ist i i vyw dx d G dz d{ d d}~  d d  d d d d d š= š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š R š š š š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š š š š š š š š š  š     š š2 š š! š"# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š š1 š 3 š š45 š6 š7 š8 š9 š: š; š< š  š š>?U@ š šA šB šCD šE šF šGQH I J K L šM šN šO šP š  šR šS šT š  šV š šWX šY šZ š[ š\ š] š^ š_ š` š 5 šbxcldh ef dg d Z di j dk d  dmtnqo dp d  dr ds d  d Œuv dw d 7 dyz{  Œ|} d~ d d d d d  d d d dp d d d d d d Ʒ  d d d d s  k d d Ʒ d d d d d d ï d  d d d  d d Z d d d s d d d d d d y d d d ƨ d  d d d Zb^  d d d        G  6 ;  6   <               H d  <�  s <   0     6 < <  d   H s  <     ! " # $ % & ' ( ) *+ , - ./ א1;2835 4 <67 < d9 : d <B=@>? A CED H F &y &yH I JRKPLNM ,l ; ,l VO V Q  SYTV U 6 -WX  b 7Z\[ ( <] _ ` da d  dcidfe d dg dh d r djmk dl d r dn do d dqrstx suv dw d ï dy|z d{ d Ʒ d} d~ d  d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 4 d ƙ d Œ d d s d Œ d d i d s d d V d d d d d r d d  d  d d d  d d d  d d > d d d d d Z Z Z Z ޕ ޕ  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ޕ d d d d Œ  d� d à dx>#  d d t d d d d d d d d d ~ d d d d d d d! d d d" d t d$3%,&)' d( d d* d+ d  d-0. d/ d d1 d2 d d48 d56 d7 d d9<: d; d d= d = d?[@LAEB dC dD d dFIG dH d dJ dK d  dMTNQO dP d dR dS d  dUXV dW d dY dZ d d\j]c^a_ d` d db d ddge df d dh di d dkqlnm d do dp d drus dt d  dv dw d dyz{|}~ d d d d d ~ d d d Cy d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d  d d d = d d d d d] =   Cy  P d  = <u d d*  d d d d d d d d d d = I ~ d = I7 I7 = <u = �   C] CN Cy d d  d I7 d d d d d d d d d d d d d d d d d d d d d d d d! d" d# d$ d% d& d' d( d) d d+L,<- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d ~ d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK d = dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d I d^_~`la d dbc dd de df dg dh di dj dk d dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d d>� d d d d d d d d d  t  Cy P d P CN t ~ ~ Cy ~ = Cy d = d <u Cy d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d iX d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d ~ d! d"0# d$ d% d& d' d( d) d* d+ d, d- d. d/ d t d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d d?o@P dAB dC dD dE dF dG dH dI dJ dK dL dM dN dO d C] dQ`R dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d da db dc dd de df dg dh di dj dk dl dm dn d  dpqr ds dt du dv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d d d d d d I7 dY<R-&j"! 8Yt = d <u d <u d d  P = = d P d d P ~ P P t <u = P d =  d Cy = <u = = d = d t d d Cy P d <u  d d = = d = = d <u d d = = d <u3�  =  = = C]   d  d I7 = d  = I  = <u Cy = Cy Cy d Cy ~ t )#  d = <u Cy!" = d$&% Cy Cy d'( d = d*-+ Cy, Cy <u Cy.1/0 Cy <u d Cy Cy2 = d 4W5C6=7:89  = = d;< = Cy =>@? Cy = CyAB Cy d = DJEHFG d <u d =I d KUL d =MN O P Q R S T q V Cy <u =XfY_Z][\  j $o # j^ dD j`cab j $o j de  $o  Ignhkij I j  jlm $o  I oq jp j dDrs I j j uRvwxyz{~|} iB = iB  = iB = dQ  = Sl = iB $} I I = Sl = dQ I = = I dQ iB  $ iB = = iB = iB Sl I Sl iB iB = = iB ly = I = dQ  iB = dQ iB = = <u ly = = I  iB = I dQ = = dQ = iB I = Sl dQ iB I iB  dQ ly =  iB = iB  $ dQ iB   h =  I = S  Sl ͟ iB  = Sl Sl iB dQ =  $ = iB [ �  = iB dQ iB  = =  I = iB Sl   = iB iB   I I I = iB ' =! iB <u [ dQ [ iB ="%#$ = dQ h& = iB(F)?*=+< =,- . / 01 2 3 45 6 7 89 :; Cy = dQ> dQ@CAB $ Sl I iBDE GK dQHIJ dQ iBLOMN iB dQ = lyPQ dQ = iBS iBT iBU iB IV IW IX I iBZ[ =\]^v_i`ca db = dgef d Cy = dh Cy =jpknlm d  o d d =qs Cyr = <utu = Cy Cy ~w <ux dy|z{ =  }~ d Cy ~ =  Cy = Cy Cy ~  Cy   ~   ~ d  d  d <u d = d ~ =  = Cy ~ d Cy d d d d d d d d d d d d d d = d d d d d d d = d d d d d d d d = d d d d d d d d Cy d d d d d d d I7 d d d d d d d Cy d d d d d d d Cy d d d d d d d Cy d d d d d d d d Cy d    d d d � d  d  d ~ d  d  d  d  d  d d Cy d   d d  d  d  d  d  d  d  d  d  d  d  d = d  )  "  d  d  d  d d ! d Cy d # d $ d % d & d ' d ( d Cy d * 1 + d , d - d . d / d 0 d = d 2 d 3 d 4 d 5 d 6 d 7 d CN d 9  : k ; L < D d = > d ? d @ d A d B d C d Cy d E d F d G d H d I d J d K d = d M \ N U O d P d Q d R d S d T d  d V d W d X d Y d Z d [ d = d ] d ^ d _ d ` d a d b d c d = d e d f d g d h d i d j d P d l  m | n u o d p d q d r d s d t d d v d w d x d y d z d { d  d }  ~ d  d d d d d t d d d d d d d t d     d d d d d d = d d d d d d d CN d   d d d d d d Cy d d d d d d d Cy d         d d d d d d d d d d d d d CN d d  d d d d d d CN d     d d d d d d  d d d d d d d = d d d d d d d d Cy d       d d d d d d = d d d d d d d CN d   d d d d d d I d d d d d d d  d !  ! d!� d! d! d! d = d! d! d! d! d! d! d Cy d! !! d! d! d! d! d! d I d! d! d! d! d! d! d = d!"!!!!T!!=!!.! !'!! d!" d!# d!$ d!% d!& d = d!( d!) d!* d!+ d!, d!- d Cy d!/!6!0 d!1 d!2 d!3 d!4 d!5 d = d!7 d!8 d!9 d!: d!; d!< d d!>!L!?!F!@ d!A d!B d!C d!D d!E d  d!G d!H d!I d!J d!K d d!M d!N d!O d!P d!Q d!R d!S d = d!U!t!V!e!W!^!X d!Y d!Z d![ d!\ d!] d d!_ d!` d!a d!b d!c d!d d CN d!f!m!g d!h d!i d!j d!k d!l d = d!n d!o d!p d!q d!r d!s d Cy d!u!!v!}!w d!x d!y d!z d!{ d!| d Cy d!~ d! d! d! d! d! d  d!!! d! d! d! d! d! d Cy d! d! d! d! d! d! d <u d!!!!!!!!! d! d! d! d! d! d = d! d! d! d! d! d! d <u d!!! d! d! d! d! d! d Cy d! d! d! d! d! d! d Cy d!!!!! d! d! d! d! d! d P d! d! d! d! d! d! d Cy d d!! d! d! d! d! d! d CN d!!!! d!! d! d! d! d! d! d C] d!!! d! d! d! d! d! d  d! d! d! d! d! d! d d!!!!! d! d! d! d! d! d d! d! d! d! d! d! d d!!! d! d! d! d! d! d  d! d! d"� d" d" d" d d""{""E""&""" "" d" d" d" d" d" d d" d" d" d" d" d" d ~ d""" d" d" d" d" d" d Cy d" d"! d"" d"# d"$ d"% d Cy d"'"6"("/") d"* d"+ d", d"- d". d C] d"0 d"1 d"2 d"3 d"4 d"5 d d"7">"8 d"9 d": d"; d"< d"= d Cy d"? d"@ d"A d"B d"C d"D d  d"F"^"G"O d"H"I d"J d"K d"L d"M d"N d d"P"W"Q d"R d"S d"T d"U d"V d Cy d"X d"Y d"Z d"[ d"\ d"] d = d"_"n"`"g"a d"b d"c d"d d"e d"f d d"h d"i d"j d"k d"l d"m d Cy d"o"v"p d"q d"r d"s d"t d"u d Cy d"w d"x d"y d"z d P d"|""}""~" d"" d" d" d" d" d" d P d""" d" d" d" d" d" d Cy d" d" d" d" d" d" d P d""""" d" d" d" d" d" d  d" d" d" d" d" d" d = d""" d" d" d" d" d" d  d" d" d" d" d" d" d CN d""""""" d" d" d" d" d" d = d" d" d" d" d" d" d = d""" d" d" d" d" d" d Cy d" d" d" d" d" d" d d""""" d" d" d" d" d" d = d" d" d" d" d" d" d Cy d""" d" d" d" d" d" d Cy d" d" d" d" d" d" d CN d"$"#"#`"#/"#"# d"" d" d" d" d" d#� d CN d## # d# d# d# d# d# d = d# d# d# d# d# d# d Cy d## ### d# d# d# d# d# d = d# d# d# d# d# d# d CN d#!#(#" d## d#$ d#% d#& d#' d  d#) d#* d#+ d#, d#- d#. d I7 d#0#H#1#@#2#9#3 d#4 d#5 d#6 d#7 d#8 d Cy d#: d#; d#< d#= d#> d#? d CN d#A d#B d#C d#D d#E d#F d#G d d#I#Q d#J#K d#L d#M d#N d#O d#P d Cy d#R#Y#S d#T d#U d#V d#W d#X d  d#Z d#[ d#\ d#] d#^ d#_ d = d#a##b##c#r#d#k#e d#f d#g d#h d#i d#j d d#l d#m d#n d#o d#p d#q d Cy d#s#z#t d#u d#v d#w d#x d#y d  d#{ d#| d#} d#~ d# d# d d## d## d# d# d# d# d# d CN d### d# d# d# d# d# d = d# d# d# d# d# d# d d d#### d## d# d# d# d# d# d d### d# d# d# d# d# d Cy d# d# d# d# d# d# d d##### d# d# d# d# d# d d# d# d# d# d# d# d  d d## d# d# d# d# d# d CN d#$5#$####### d# d# d# d# d# d  d# d# d# d# d# d# d d### d# d# d# d# d# d C] d# d# d# d# d# d# d d##### d# d# d# d# d# d  d# d# d# d# d# d# d CN d d## d# d$� d$ d$ d$ d Cy d$$$$ d$$ d$ d$ d$ d$ d$ d Cy d$$$ d$ d$ d$ d$ d$ d = d$ d$ d$ d$ d$ d$ d = d$$& d$$ d$! d$" d$# d$$ d$% d Cy d$'$.$( d$) d$* d$+ d$, d$- d <u d$/ d$0 d$1 d$2 d$3 d$4 d  d$6$n$7$V$8$G$9$@$: d$; d$< d$= d$> d$? d Cy d$A d$B d$C d$D d$E d$F d d$H$O$I d$J d$K d$L d$M d$N d I7 d$P d$Q d$R d$S d$T d$U d CN d$W$_ d$X$Y d$Z d$[ d$\ d$] d$^ d Cy d$`$g$a d$b d$c d$d d$e d$f d = d$h d$i d$j d$k d$l d$m d  d$o$$p$$q$x$r d$s d$t d$u d$v d$w d CN d$y d$z d${ d$| d$} d$~ d = d$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d$ d d$ d$$$ d$ d$ d$ d$ d$ d = d$ d$ d$ d$ d$ d$ d CN d$%y$%$$$$$$$$$ d$ d$ d$ d$ d$ d  d$ d$ d$ d$ d$ d$ d  d$$$ d$ d$ d$ d$ d$ d  d$ d$ d$ d$ d$ d$ d CN d$$$$$ d$ d$ d$ d$ d$ d ~ d$ d$ d$ d$ d$ d$ d P d$$$ d$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d$ d P d$$$$$$$ d$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d$ d P d$$$ d$ d$ d$ d$ d$ d Cy d$ d$ d$ d$ d$ d$ d CN d%�%%%% d% d% d% d% d% d d% d% d% d% d% d% d Cy d%%% d% d% d% d% d% d Cy d% d% d% d% d% d% d Cy d%%P% %8%!%0%"%)%# d%$ d%% d%& d%' d%( d d%* d%+ d%, d%- d%. d%/ d  d d%1%2 d%3 d%4 d%5 d%6 d%7 d P d%9%H%:%A%; d%< d%= d%> d%? d%@ d d%B d%C d%D d%E d%F d%G d  d d%I%J d%K d%L d%M d%N d%O d d%Q%Z%R d d%S%T d%U d%V d%W d%X d%Y d C] d%[%j%\%c%] d%^ d%_ d%` d%a d%b d CN d%d d%e d%f d%g d%h d%i d  d%k%r%l d%m d%n d%o d%p d%q d ~ d%s d%t d%u d%v d%w d%x d Cy d%z%%{%%|%%}%%~%% d% d% d% d% d% d = d% d% d% d% d% d% d Cy d%%% d% d% d% d% d% d = d% d% d% d% d% d% d d%%%%% d% d% d% d% d% d d% d% d% d% d% d% d Cy d d%% d% d% d% d% d% d = d%%%%%%% d% d% d% d% d% d  d% d% d% d% d% d% d d%%% d% d% d% d% d% d Cy d% d% d% d% d% d% d Cy d%%%%% d% d% d% d% d% d  d% d% d% d% d% d% d d%%% d% d% d% d% d% d CN d% d% d% d% d% d% d t d%&+%& %% d%% d% d% d% d% d% d C] d%&% d&� d& d& d& d& d = d& d& d& d& d& d& d Cy d& &&&& d& d& d& d& d& d k d& d& d& d& d& d& d Cy d&&$& d& d& d&! d&" d&# d Cy d&% d&& d&' d&( d&) d&* d = d&,&K&-&<&.&5&/ d&0 d&1 d&2 d&3 d&4 d d&6 d&7 d&8 d&9 d&: d&; d d&=&D&> d&? d&@ d&A d&B d&C d Cy d&E d&F d&G d&H d&I d&J d C] d&L&[&M&T&N d&O d&P d&Q d&R d&S d d&U d&V d&W d&X d&Y d&Z d = d&\&c&] d&^ d&_ d&` d&a d&b d = d&d d&e d&f d&g d&h d&i d d&k*%&l(9&m'e&n&&o&&p&&q&&r&y&s d&t d&u d&v d&w d&x d  d&z d&{ d&| d&} d&~ d& d CN d&&& d& d& d& d& d& d = d& d& d& d& d& d& d I7 d&&&&& d& d& d& d& d& d = d& d& d& d& d& d& d P d&&& d& d& d& d& d& d d& d& d& d& d& d& d P d&&&&&&& d& d& d& d& d& d  d& d& d& d& d& d& d P d&&& d& d& d& d& d& d d& d& d& d& d& d& d CN d&&&&& d& d& d& d& d& d  d& d& d& d& d& d& d Cy d&&& d& d& d& d& d& d d& d& d& d& d& d& d  d&'&&'&&&&& d& d& d& d& d& d  d& d& d& d& d& d& d d'� d' d' d' d' d' d' d C] d''' '' d' d' d' d' d' d I7 d' d' d' d' d' d' d ~ d''' d' d' d' d' d' d = d' d'! d'" d'# d'$ d'% d Cy d'''F'('7')'0'* d'+ d', d'- d'. d'/ d ~ d'1 d'2 d'3 d'4 d'5 d'6 d Cy d'8'?'9 d': d'; d'< d'= d'> d I d'@ d'A d'B d'C d'D d'E d Cy d'G'V'H'O'I d'J d'K d'L d'M d'N d d'P d'Q d'R d'S d'T d'U d CN d'W'^'X d'Y d'Z d'[ d'\ d'] d Cy d'_ d'` d'a d'b d'c d'd d d'f''g''h'y'i'q d'j'k d'l d'm d'n d'o d'p d P d'r d's d't d'u d'v d'w d'x d Cy d d'z d'{'| d'} d'~ d' d' d' d = d''''''' d' d' d' d' d' d d' d' d' d' d' d' d  d''' d' d' d' d' d' d = d' d' d' d' d' d' d  d''''' d' d' d' d' d' d  d' d' d' d' d' d' d = d''' d' d' d' d' d' d d' d' d' d' d' d' d = d''''''''' d' d' d' d' d' d  d' d' d' d' d' d' d d d'' d' d' d' d' d' d  d''''' d' d' d' d' d' d d' d' d' d' d' d' d CN d''' d' d' d' d' d' d P d' d' d' d' d' d' d Cy d'('( '(' d' d(� d( d( d( d = d( d( d( d( d( d( d  d( (( d( d( d( d( d( d = d( d( d( d( d( d( d = d((*((#( d( d( d( d(! d(" d Cy d($ d(% d(& d(' d(( d() d = d(+(2(, d(- d(. d(/ d(0 d(1 d d(3 d(4 d(5 d(6 d(7 d(8 d I7 d(:).(;((<({(=(\(>(M(?(F(@ d(A d(B d(C d(D d(E d = d(G d(H d(I d(J d(K d(L d CN d(N(U(O d(P d(Q d(R d(S d(T d = d(V d(W d(X d(Y d(Z d([ d P d(](l(^(e(_ d(` d(a d(b d(c d(d d Cy d(f d(g d(h d(i d(j d(k d d(m(t(n d(o d(p d(q d(r d(s d d(u d(v d(w d(x d(y d(z d Cy d(|((}( d(~( d( d( d( d( d( d C] d((( d( d( d( d( d( d Cy d( d( d( d( d( d( d Cy d((((( d( d( d( d( d( d = d( d( d( d( d( d( d Cy d((( d( d( d( d( d( d  d( d( d( d( d( d( d P d((((((((( d( d( d( d( d( d = d( d( d( d( d( d( d d((( d( d( d( d( d( d Cy d( d( d( d( d( d( d <u d((((( d( d( d( d( d( d d( d( d( d( d( d( d d((( d( d( d( d( d( d = d( d( d( d( d( d( d  d()()�((( d( d <u d( d( d( d( d( d( d I7 d))) d) d) d) d) d) d = d) d) d) d) d) d) d Cy d))))) d) d) d) d) d) d <u d) d) d) d) d) d) d = d) )')! d)" d)# d)$ d)% d)& d Cy d)( d)) d)* d)+ d), d)- d CN d)/))0)o)1)P)2)A)3):)4 d)5 d)6 d)7 d)8 d)9 d <u d); d)< d)= d)> d)? d)@ d CN d)B)I)C d)D d)E d)F d)G d)H d  d)J d)K d)L d)M d)N d)O d d)Q)`)R)Y)S d)T d)U d)V d)W d)X d d)Z d)[ d)\ d)] d)^ d)_ d Cy d)a)h)b d)c d)d d)e d)f d)g d Cy d)i d)j d)k d)l d)m d)n d CN d)p))q))r)y)s d)t d)u d)v d)w d)x d d)z d){ d)| d)} d)~ d) d CN d))) d) d) d) d) d d) d) d) d) d) d) d Cy d))))) d) d) d) d) d) d CN d) d) d) d) d) d) d = d))) d) d) d) d) d) d d) d) d) d) d) d) d CN d))))))) d) d) d) d) d) d) d d))) d) d) d) d) d) d Cy d) d) d) d) d) d) d CN d))))) d) d) d) d) d) d  d) d) d) d) d) d) d Cy d))) d) d) d) d) d) d Cy d) d) d) d) d) d) d d)*))))) d) d) d) d) d) d = d) d) d) d) d) d) d ~ d))) d) d) d) d) d) d Cy d*� d* d* d* d* d* d d***** d* d* d* d* d* d ~ d* d* d* d* d* d* d d*** d* d* d* d* d* d d* d* d*! d*" d*# d*$ d d*&+*'+*(**)*a***B*+*:*,*3*- d*. d*/ d*0 d*1 d*2 d d*4 d*5 d*6 d*7 d*8 d*9 d  d d*;*< d*= d*> d*? d*@ d*A d C] d*C*R*D*K*E d*F d*G d*H d*I d*J d = d*L d*M d*N d*O d*P d*Q d d*S*Z*T d*U d*V d*W d*X d*Y d Cy d*[ d*\ d*] d*^ d*_ d*` d ~ d*b**c*r*d*k*e d*f d*g d*h d*i d*j d  d*l d*m d*n d*o d*p d*q d <u d*s*z*t d*u d*v d*w d*x d*y d Cy d*{ d*| d*} d*~ d* d* d = d***** d* d* d* d* d* d  d* d* d* d* d* d* d d d** d* d* d* d* d* d  d********* d* d* d* d* d* d = d* d* d* d* d* d* d CN d*** d* d* d* d* d* d C] d* d* d* d* d* d* d <u d***** d* d* d* d* d = d* d* d* d* d* d* d CN d*** d* d* d* d* d* d <u d* d* d* d* d* d* d  d******* d* d* d* d* d* d Cy d* d* d* d* d* d* d d d** d* d* d* d* d* d = d*+*** d* d* d* d* d* d Cy d* d* d* d* d* d+� d CN d++ + d+ d+ d+ d+ d+ d = d+ d+ d+ d+ d+ d+ d  d++++P++2++#+++ d+ d+ d+ d+ d+ d  d+ d+ d+ d+ d+! d+" d  d+$+++% d+& d+' d+( d+) d+* d = d+, d+- d+. d+/ d+0 d+1 d d+3+B+4+;+5 d+6 d+7 d+8 d+9 d+: d ~ d+< d+= d+> d+? d+@ d+A d <u d+C+I+D d+E d+F d+G d+H d  d+J d+K d+L d+M d+N d+O d CN d+Q+i+R+a+S+Z+T d+U d+V d+W d+X d+Y d d+[ d+\ d+] d+^ d+_ d+` d Cy d d+b+c d+d d+e d+f d+g d+h d  d+j+w+k+r+l d+m d+n d+o d+p d+q d ~ d+s d+t d+u d+v d = d+x++y d+z d+{ d+| d+} d+~ d Cy d+ d+ d+ d+ d+ d+ d = d++++++ d++ d+ d+ d+ d+ d+ d d d++ d+ d+ d+ d+ d+ d d++ d++ d+ d+ d+ d+ d+ d CN d+ d+ d+ d+ d+ d = d+++++++ d+ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d+ d  d+++ d+ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d+ d  d+++++ d+ d+ d+ d+ d+ d  d+ d+ d+ d+ d+ d+ d  d+++ d+ d+ d+ d+ d+ d <u d+ d+ d+ d+ d+ d+ d d d+,+,Y+,"+,++ d++ d+ d+ d+ d+ d+ d  d+++ d+ d+ d+ d+ d+ d d+ d+ d+ d,� d, d, d Cy d,,,, , d, d, d, d, d, d = d, d, d, d, d, d, d CN d,,, d, d, d, d, d, d d, d, d, d, d, d,! d CN d,#,:,$,2,%,,,& d,' d,( d,) d,* d,+ d  d,- d,. d,/ d,0 d,1 d = d d,3,4 d,5 d,6 d,7 d,8 d,9 d = d,;,J,<,C,= d,> d,? d,@ d,A d,B d d,D d,E d,F d,G d,H d,I d  d,K,R,L d,M d,N d,O d,P d,Q d = d,S d,T d,U d,V d,W d,X d d,Z,,[,s,\,k,],d,^ d,_ d,` d,a d,b d,c d = d,e d,f d,g d,h d,i d,j d = d,l d,m d,n d,o d,p d,q d,r d Cy d,t,,u,|,v d,w d,x d,y d,z d,{ d Cy d,} d,~ d, d, d, d, d  d, d, d, d, d, d, d, d Cy d,,,,,,, d, d, d, d, d, d  d, d, d, d, d, d, d Cy d,,, d, d, d, d, d, d Cy d, d, d, d, d, d, d  d,,,,, d, d, d, d, d, d Cy d, d, d, d, d, d, d d,,, d, d, d, d, d, d Cy d, d, d, d, d, d, d = d,-B,-,,,, d,, d, d, d, d, d, d Cy d,,, d, d, d, d, d, d = d, d, d, d, d, d, d Cy d,,,,, d, d, d, d, d, d Cy d, d, d, d, d, d, d CN d,,, d, d, d, d, d, d Cy d, d, d-� d- d- d- d CN d--#---- - d- d- d- d- d  d- d- d- d- d- d- d CN d--- d- d- d- d- d- d Cy d- d- d- d- d-! d-" d Cy d-$-3-%-,-& d-' d-( d-) d-* d-+ d  d-- d-. d-/ d-0 d-1 d-2 d  d-4-;-5 d-6 d-7 d-8 d-9 d-: d Cy d-< d-= d-> d-? d-@ d-A d ~ d-C-{-D-c-E-T-F-M-G d-H d-I d-J d-K d-L d Cy d-N d-O d-P d-Q d-R d-S d CN d-U-\-V d-W d-X d-Y d-Z d-[ d Cy d-] d-^ d-_ d-` d-a d-b d k d-d-l d-e-f d-g d-h d-i d-j d-k d d-m-t-n d-o d-p d-q d-r d-s d Cy d-u d-v d-w d-x d-y d-z d d-|--}--~-- d- d- d- d- d  d- d- d- d- d- d- d CN d--- d- d- d- d- d- d = d- d- d- d- d- d- d d-- d-- d- d- d- d- d- d Cy d d-- d- d- d- d- d- d d-4-1 -/Q-.|-.------ d-- d- d- d- d- d- d = d- d- d- d- d- d- d- d  d----- d- d- d- d- d- d <u d- d- d- d- d- d- d ~ d--- d- d- d- d- d- d  d- d- d- d- d- d- d CN d-.----- d- d- d- d- d- d CN d- d- d- d- d- d- d = d--- d- d- d- d- d- d Cy d- d- d- d- d.� d. d <u d.. . d. d. d. d. d. d. d d. .. d. d. d. d. d. d CN d. d. d. d. d. d. d  d..D..,. d..%. d. d.! d." d.# d.$ d BD.& d.' d.( d.) d.* d.+ d  d.-.<...5./ d.0 d.1 d.2 d.3 d.4 d <u d.6 d.7 d.8 d.9 d.: d.; d = d d.=.> d.? d.@ d.A d.B d.C d = d.E.].F.N d.G.H d.I d.J d.K d.L d.M d d.O.V.P d.Q d.R d.S d.T d.U d  d.W d.X d.Y d.Z d.[ d.\ d d.^.m._.f.` d.a d.b d.c d.d d.e d  d.g d.h d.i d.j d.k d.l d CN d.n.u.o d.p d.q d.r d.s d.t d = d.v d.w d.x d.y d.z d.{ d CN d.}..~..... d.. d. d. d. d. d. d = d d.. d. d. d. d. d. d = d..... d. d. d. d. d. d Cy d. d. d. d. d. d. d d... d. d. d. d. d. d = d. d. d. d. d. d. d d....... d. d. d. d. d. d  d. d. d. d. d. d. d Cy d... d. d. d. d. d. d = d. d. d. d. d. d. d  d..... d. d. d. d. d. d d d. d. d. d. d. d. d d... d. d. d. d. d. d Cy d. d. d. d. d. d. d CN d./ ././�... d. d. d. d. d. d = d. d. d. d. d. d. d Cy d d// d/ d/ d/ d/ d/ d  d/ // d/ d/ d/ d/ d/ d/ d Cy d/// d/ d/ d/ d/ d/ d  d/ d/ d/ d/ d/ d/ d Cy d/!/@/"/1/#/*/$ d/% d/& d/' d/( d/) d  d/+ d/, d/- d/. d// d/0 d Cy d/2/9/3 d/4 d/5 d/6 d/7 d/8 d d/: d/; d/< d/= d/> d/? d Cy d/A/I/B d/C d/D d/E d/F d/G d/H d = d d/J/K d/L d/M d/N d/O d/P d Cy d/R0&/S//T//U/m/V/^/W d/X d/Y d/Z d/[ d/\ d/] d = d/_/f/` d/a d/b d/c d/d d/e d Cy d/g d/h d/i d/j d/k d/l d = d/n/}/o/v/p d/q d/r d/s d/t d/u d Cy d/w d/x d/y d/z d/{ d/| d d d/~/ d/ d/ d/ d/ d/ d d/////// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d/ d  d/// d/ d/ d/ d/ d/ d CN d/ d/ d/ d/ d/ d/ d d///// d/ d/ d/ d/ d/ d Cy d/ d/ d/ d/ d/ d/ d Cy d/// d/ d/ d/ d/ d/ d = d/ d/ d/ d/ d/ d/ d  d////// d// d/ d/ d/ d/ d/ d  d/// d/ d/ d/ d/ d/ d  d/ d/ d/ d/ d/ d/ d Cy d/// d/ d/ d/ d/ d/ d/ d ~ d/ d/ d/ d/ d/ d/ d/ d Cy d/0///// d/ d/ d/ d/ d/ d = d/ d/ d/ d/ d/ d/ d Cy d0�00 d0 d0 d0 d0 d0 d Cy d0 d0 d0 d0 d0 d0 d Cy d00000 d0 d0 d0 d0 d0 d  d0 d0 d0 d0 d0 d0 d Cy d d00 d0! d0" d0# d0$ d0% d d0'00(0g0)0H0*090+020, d0- d0. d0/ d00 d01 d = d03 d04 d05 d06 d07 d08 d Cy d0:0A0; d0< d0= d0> d0? d0@ d d0B d0C d0D d0E d0F d0G d Cy d0I0X0J0Q0K d0L d0M d0N d0O d0P d P d0R d0S d0T d0U d0V d0W d CN d0Y0`0Z d0[ d0\ d0] d0^ d0_ d = d0a d0b d0c d0d d0e d0f d CN d0h00i0x0j0q0k d0l d0m d0n d0o d0p d CN d0r d0s d0t d0u d0v d0w d CN d d0y0z d0{ d0| d0} d0~ d0 d P d00000 d0 d0 d0 d0 d0 d = d0 d0 d0 d0 d0 d0 d CN d000 d0 d0 d0 d0 d0 d  d0 d0 d0 d0 d0 d0 d d000000000 d0 d0 d0 d0 d0 d <u d0 d0 d0 d0 d0 d0 d d000 d0 d0 d0 d0 d0 d  d0 d0 d0 d0 d0 d0 d Cy d00000 d0 d0 d0 d0 d0 d = d0 d0 d0 d0 d0 d0 d Cy d0 d0 d0 d0 d0 d0 d0 d CN d0000000 d0 d0 d0 d0 d0 d  d0 d0 d0 d0 d0 d0 d d d00 d0 d0 d0 d0 d0 d Cy d000 d0 d0 d0 d0 d0 d0 d  d010 d0 d0 d0 d1� d1 d d1 d1 d1 d1 d1 d1 d d1 21 11 1}1 1E11&11111 d1 d1 d1 d1 d1 d = d1 d1 d1 d1 d1 d1 d  d1 d1 d1! d1" d1# d1$ d1% d = d1'161(1/1) d1* d1+ d1, d1- d1. d ~ d10 d11 d12 d13 d14 d15 d d171>18 d19 d1: d1; d1< d1= d = d1? d1@ d1A d1B d1C d1D d d1F1e1G1V1H1O1I d1J d1K d1L d1M d1N d  d1P d1Q d1R d1S d1T d1U d P d1W1^1X d1Y d1Z d1[ d1\ d1] d Cy d1_ d1` d1a d1b d1c d1d d d1f1u1g1n1h d1i d1j d1k d1l d1m d = d1o d1p d1q d1r d1s d1t d CN d1v d1w d1x d1y d1z d1{ d1| d Cy d1~11111111 d1 d1 d1 d1 d1 d  d1 d1 d1 d1 d1 d1 d d111 d1 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d1 d d11111 d1 d1 d1 d1 d1 d Cy d1 d1 d1 d1 d1 d1 d CN d111 d1 d1 d1 d1 d1 d C] d1 d1 d1 d1 d1 d1 d  d1111111 d1 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d1 d Cy d111 d1 d1 d1 d1 d1 d Cy d1 d1 d1 d1 d1 d1 d CN d11111 d1 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d1 d CN d111 d1 d1 d1 d1 d1 d Cy d1 d1 d1 d1 d1 d1 d = d12g126122�2222 d2 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d2 d C] d222 d2 d2 d2 d2 d2 d Cy d2 d2 d2 d2 d2 d2 d d22.2 2'2! d2" d2# d2$ d2% d2& d  d2( d2) d2* d2+ d2, d2- d d2/ d20 d21 d22 d23 d24 d25 d = d272H282@ d292: d2; d2< d2= d2> d2? d Cy d d2A2B d2C d2D d2E d2F d2G d I7 d2I2X2J2Q2K d2L d2M d2N d2O d2P d  d2R d2S d2T d2U d2V d2W d Cy d2Y2`2Z d2[ d2\ d2] d2^ d2_ d <u d2a d2b d2c d2d d2e d2f d d2h22i22j2y2k2r2l d2m d2n d2o d2p d2q d CN d2s d2t d2u d2v d2w d2x d Cy d2z22{ d2| d2} d2~ d2 d2 d ~ d2 d2 d2 d2 d2 d2 d Cy d22222 d2 d2 d2 d2 d2 d = d2 d2 d2 d2 d2 d2 d d222 d2 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d2 d d2222222 d2 d2 d2 d2 d2 d Cy d2 d2 d2 d2 d2 d2 d Cy d2 d2 d2 d2 d2 d2 d2 d d22222 d2 d2 d2 d2 d2 d = d2 d2 d2 d2 d2 d2 d Cy d222 d2 d2 d2 d2 d2 d = d2 d2 d2 d2 d2 d2 d d2323Y232322222 d2 d2 d2 d2 d2 2 d2 d2 d2 d2 d2 d d222 d2 d2 d2 d2 d2 d d2 d2 d2 d2 d3� d3 d d3333 3 d3 d3 d3 d3 d3 d  d3 d3 d3 d3 d3 d3 d Cy d d33 d3 d3 d3 d3 d3 d Cy d33:33+33$3 d3 d3 d3! d3" d3# d t d3% d3& d3' d3( d3) d3* d CN d3,333- d3. d3/ d30 d31 d32 d = d34 d35 d36 d37 d38 d39 d Cy d3;3J3<3C3= d3> d3? d3@ d3A d3B d ~ d3D d3E d3F d3G d3H d3I d d3K3R3L d3M d3N d3O d3P d3Q d = d3S d3T d3U d3V d3W d3X d Cy d3Z33[3z3\3k3]3d3^ d3_ d3` d3a d3b d3c d = d3e d3f d3g d3h d3i d3j d Cy d3l3s3m d3n d3o d3p d3q d3r d Cy d3t d3u d3v d3w d3x d3y d d3{33|33} d3~ d3 d3 d3 d3 d Cy d3 d3 d3 d3 d3 d3 d CN d333 d3 d3 d3 d3 d3 d CN d3 d3 d3 d3 d3 d3 d d3333333 d3 d3 d3 d3 d3 d t d3 d3 d3 d3 d3 d3 d  d3 d3 d3 d3 d3 d3 d3 d <u d33333 d3 d3 d3 d3 d3 d Cy d3 d3 d3 d3 d3 d3 d d333 d3 d3 d3 d3 d3 d = d3 d3 d3 d3 d3 d3 d d34Q343333333 d3 d3 d3 d3 d3 d Cy d3 d3 d3 d3 d3 d3 d Cy d333 d3 d3 d3 d3 d3 d = d3 d3 d3 d3 d3 d3 d Cy d34333 d3 d3 d3 d3 d3 d Cy d3 d3 d3 d4� d4 d4 d Cy d44 4 d4 d4 d4 d4 d4 d = d4 d4 d4 d4 d4 d4 d Cy d44244#444 d4 d4 d4 d4 d4 d d4 d4 d4 d4 d4! d4" d Cy d4$4+4% d4& d4' d4( d4) d4* d Cy d4, d4- d4. d4/ d40 d41 d d434B444;45 d46 d47 d48 d49 d4: d  d4< d4= d4> d4? d4@ d4A d CN d4C4J4D d4E d4F d4G d4H d4I d t d4K d4L d4M d4N d4O d4P d š d4R44S4r4T4c4U4\4V d4W d4X d4Y d4Z d4[ d Cy d4] d4^ d4_ d4` d4a d4b d d4d4k4e d4f d4g d4h d4i d4j d d4l d4m d4n d4o d4p d4q d = d4s44t4{4u d4v d4w d4x d4y d4z d I7 d4| d4} d4~ d4 d4 d4 d CN d444 d4 d4 d4 d4 d4 d  d4 d4 d4 d4 d4 d4 d Cy d4444444 d4 d4 d4 d4 d4 d <u d4 d4 d4 d4 d4 d4 d Cy d444 d4 d4 d4 d4 d4 d = d4 d4 d4 d4 d4 d4 d Cy d44 d44 d4 d4 d4 d4 d4 d Cy d444 d4 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d4 d Cy d48464545E454444444 d4 d4 d4 d4 d4 d  d4 d4 d4 d4 d4 d4 d Cy d444 d4 d4 d4 d4 d4 d = d4 d4 d4 d4 d4 d4 d Cy d44444 d4 d4 d4 d4 d4 d  d4 d4 d4 d4 d4 d4 d Cy d d45� d5 d5 d5 d5 d5 d Cy d55&555 55 d5 d5 d5 d5 d5 d CN d5 d5 d5 d5 d5 d5 d Cy d555 d5 d5 d5 d5 d5 d Cy d5 d5! d5" d5# d5$ d5% d Cy d5'565(5/5) d5* d5+ d5, d5- d5. d  d50 d51 d52 d53 d54 d55 d CN d575>58 d59 d5: d5; d5< d5= d = d5? d5@ d5A d5B d5C d5D d iX d5F55G5f5H5W5I5P5J d5K d5L d5M d5N d5O d = d5Q d5R d5S d5T d5U d5V d Cy d5X5_5Y d5Z d5[ d5\ d5] d5^ d d5` d5a d5b d5c d5d d5e d Cy d5g5v5h5o5i d5j d5k d5l d5m d5n d CN d5p d5q d5r d5s d5t d5u d CN d5w5~5x d5y d5z d5{ d5| d5} d d5 d5 d5 d5 d5 d5 d d5555555 d5 d5 d5 d5 d5 d = d5 d5 d5 d5 d5 d5 d <u d555 d5 d5 d5 d5 d5 d <u d5 d5 d5 d5 d5 d5 d Cy d55555 d5 d5 d5 d5 d5 d d5 d5 d5 d5 d5 d5 d CN d555 d5 d5 d5 d5 d5 d CN d5 d5 d5 d5 d5 d5 d d56D565555555 d5 d5 d5 d5 d5 d Cy d5 d5 d5 d5 d5 d5 d  d555 d5 d5 d5 d5 d5 d C] d5 d5 d5 d5 d5 d5 d CN d55555 d5 d5 d5 d5 d5 d CN d5 d5 d5 d5 d5 d5 d d555 d5 d5 d5 d5 d5 d Cy d5 d6� d6 d6 d6 d6 d Cy d66%66666 d6 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d6 d Cy d666 d6 d6 d6 d6 d6 d = d6 d6 d6! d6" d6# d6$ d d6&656'6.6( d6) d6* d6+ d6, d6- d = d6/ d60 d61 d62 d63 d64 d P d666=67 d68 d69 d6: d6; d6< d ~ d6> d6? d6@ d6A d6B d6C d P d6E66F6e6G6V6H6O6I d6J d6K d6L d6M d6N d ~ d6P d6Q d6R d6S d6T d6U d I7 d6W6^6X d6Y d6Z d6[ d6\ d6] d CN d6_ d6` d6a d6b d6c d6d d  d6f6u6g6n6h d6i d6j d6k d6l d6m d = d6o d6p d6q d6r d6s d6t d Cy d6v6}6w d6x d6y d6z d6{ d6| d <u d6~ d6 d6 d6 d6 d6 d Cy d6666666 d6 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d6 d  d666 d6 d6 d6 d6 d6 d = d6 d6 d6 d6 d6 d6 d d66666 d6 d6 d6 d6 d6 d Cy d6 d6 d6 d6 d6 d6 d CN d666 d6 d6 d6 d6 d6 d Cy d6 d6 d6 d6 d6 d6 d d6767/666666 d66 d6 d6 d6 d6 d6 d d666 d6 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d6 d  d666 d6 d6 d6 d6 d6 d6 d Cy d666 d6 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d6 d d6767676 d6 d6 d6 d6 d7� d CN d7 d7 d7 d7 d7 d7 d d7 77 d7 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d7 d d77 d77 d7 d7 d7 d7 d7 d Cy d7!7(7" d7# d7$ d7% d7& d7' d = d7) d7* d7+ d7, d7- d7. d  d707o717P727A737:74 d75 d76 d77 d78 d79 d d7; d7< d7= d7> d7? d7@ d C] d7B7I7C d7D d7E d7F d7G d7H d Cy d7J d7K d7L d7M d7N d7O d Cy d7Q7`7R7Y7S d7T d7U d7V d7W d7X d Cy d7Z d7[ d7\ d7] d7^ d7_ d Cy d7a7h7b d7c d7d d7e d7f d7g d d7i d7j d7k d7l d7m d7n d Cy d7p77q7y d7r7s d7t d7u d7v d7w d7x d Cy d d7z7{ d7| d7} d7~ d7 d  d77 d77 d7 d7 d7 d7 d7 d d777 d7 d7 d7 d7 d7 d = d7 d7 d7 d7 d7 d7 d = d78777777777 d7 d7 d7 d7 d7 d t d7 d7 d7 d7 d7 d7 d P d777 d7 d7 d7 d7 d7 d Cy d7 d7 d7 d7 d7 d7 d ~ d77777 d7 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d7 d  d777 d7 d7 d7 d7 d7 d Cy d7 d7 d7 d7 d7 d7 d d d7777777 d7 d7 d7 d7 d7 d = d7 d7 d7 d7 d7 d7 d Cy d777 d7 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d7 d Cy d78 787 d7 d7 d7 d8� d8 d <u d8 d8 d8 d8 d8 d8 d Cy d8 88 d8 d8 d8 d8 d8 d  d8 d8 d8 d8 d8 d8 d Cy d88Q88988*88#8 d8 d8 d8 d8! d8" d = d8$ d8% d8& d8' d8( d8) d Cy d8+828, d8- d8. d8/ d80 d81 d  d83 d84 d85 d86 d87 d88 d d8:8B d8;8< d8= d8> d8? d8@ d8A d CN d8C8J8D d8E d8F d8G d8H d8I d  d8K d8L d8M d8N d8O d8P d  d8R8q8S8b8T8[8U d8V d8W d8X d8Y d8Z d d8\ d8] d8^ d8_ d8` d8a d CN d8c8j8d d8e d8f d8g d8h d8i d = d8k d8l d8m d8n d8o d8p d d8r88s8z8t d8u d8v d8w d8x d8y d = d8{ d8| d8} d8~ d8 d8 d CN d888 d8 d8 d8 d8 d8 d d8 d8 d8 d8 d8 d8 d ~ d8:r8989 888888 d88 d8 d8 d8 d8 d8 d d888 d8 d8 d8 d8 d8 d = d8 d8 d8 d8 d8 d8 d = d88888 d8 d8 d8 d8 d8 d Z d8 d8 d8 d8 d8 d8 d <u d888 d8 d8 d8 d8 d8 d = d8 d8 d8 d8 d8 d8 d Cy d8888888 d8 d8 d8 d8 d8 d = d8 d8 d8 d8 d8 d8 d Cy d888 d8 d8 d8 d8 d8 d  d8 d8 d8 d8 d8 d8 d d88888 d8 d8 d8 d8 d8 d Cy d8 d8 d8 d8 d8 d8 d Cy d898 d8 d9� d9 d9 d9 d d 9 d9 d9 d9 d9 d9 d Cy d9 9K9 9,99999 d9 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d9 d P d99%9 d9 d9! d9" d9# d9$ d d9& d9' d9( d9) d9* d9+ d P d9-9<9.959/ d90 d91 d92 d93 d94 d Cy d96 d97 d98 d99 d9: d9; d d9=9D9> d9? d9@ d9A d9B d9C d d9E d9F d9G d9H d9I d9J d CN d9L9k9M9\9N9U9O d9P d9Q d9R d9S d9T d = d9V d9W d9X d9Y d9Z d9[ d CN d9]9d9^ d9_ d9` d9a d9b d9c d = d9e d9f d9g d9h d9i d9j d Cy d9l9{9m9t9n d9o d9p d9q d9r d9s d Cy d9u d9v d9w d9x d9y d9z d Cy d d9|9} d9~ d9 d9 d9 d9 d Cy d99999999999 d9 d9 d9 d9 d9 d = d9 d9 d9 d9 d9 d9 d Cy d999 d9 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d9 d d99999 d9 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d9 d Cy d999 d9 d9 d9 d9 d9 d = d9 d9 d9 d9 d9 d9 d Cy d9999999 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d9 d Cy d d99 d9 d9 d9 d9 d9 d Cy d99999 d9 d9 d9 d9 d9 d = d9 d9 d9 d9 d9 d9 d ~ d999 d9 d9 d9 d9 d9 d  d9 d9 d9 d9 d9 d9 d Cy d9:;9:9: 9::� d: d: d: d: d: d = d: d: d: d: d: d: d Cy d::: d: d: d: d: d: d <u d: d: d: d: d: d: d CN d::,::%: d: d:! d:" d:# d:$ d d:& d:' d:( d:) d:* d:+ d d:-:4:. d:/ d:0 d:1 d:2 d:3 d Cy d:5 d:6 d:7 d:8 d:9 d:: d d:<:S:=:E d:>:? d:@ d:A d:B d:C d:D d Cy d:F:L:G d:H d:I d:J d:K d  d:M d:N d:O d:P d:Q d:R d Cy d:T:c:U:\:V d:W d:X d:Y d:Z d:[ d = d:] d:^ d:_ d:` d:a d:b d Cy d:d:k:e d:f d:g d:h d:i d:j d = d:l d:m d:n d:o d:p d:q d CN d:s;h:t::u::v::w::x::y d:z d:{ d:| d:} d:~ d Cy d: d: d: d: d: d: d d::: d: d: d: d: d: d  d: d: d: d: d: d: d Cy d::::: d: d: d: d: d: d  d: d: d: d: d: d: d Cy d::: d: d: d š d: d: d: d: d: d: d Cy d::::::: d: d: d: d: d: d Cy d: d: d: d: d: d: d Cy d::: d: d: d: d: d: d d: d: d: d: d: d: d Cy d::::: d: d: d: d: d: d d: d: d: d: d: d: d d::: d: d: d: d: d: d = d: d: d: d: d: d: d d :;):; :;::: d: d: d: d: d: d = d: d: d: d: d;� d; d Cy d d;; d; d; d; d; d; d Cy d; ;; ;; d; d; d; d; d; d  d; d; d; d; d; d; d Cy d;;"; d; d; d; d; d;! d CN d;# d;$ d;% d;& d;' d;( d P d;*;I;+;:;,;3;- d;. d;/ d;0 d;1 d;2 d = d;4 d;5 d;6 d;7 d;8 d;9 d CN d;;;B;< d;= d;> d;? d;@ d;A d = d;C d;D d;E d;F d;G d;H d d;J;Y;K;R;L d;M d;N d;O d;P d;Q d  d;S d;T d;U d;V d;W d;X d d;Z;a;[ d;\ d;] d;^ d;_ d;` d  d;b d;c d;d d;e d;f d;g d ~ d;i;;j;;k;;l;{;m;t;n d;o d;p d;q d;r d;s d Cy d;u d;v d;w d;x d;y d;z d ~ d;|;;} d;~ d; d; d; d; d = d; d; d; d; d; d; d CN d;;;;; d; d; d; d; d; d Cy d; d; d; d; d; d; d Cy d;;; d; d; d; d; d; d <u d; d; d; d; d; d; d Cy d;;;;;;; d; d; d; d; d; d d; d; d; d; d; d; d d;;; d; d; d; d; d; d Cy d; d; d; d; d; d; d d;;;;; d; d; d; d; d; d  d; d; d; d; d; d; d CN d;;; d; d; d; d; d; d Cy d; d; d; d; d; d; d CN d;<;;;; d;; d; d; d; d; d; d CN d d;; d; d; d; d; d; d Cy d;< ;<; d; d<� d< d< d< d = d< d< d< d< d< d< d Cy d< d< d< d< d< d< d< d  d<<3<<$<<< d< d< d< d< d< d ~ d< d< d< d<! d<" d<# d Cy d<%<,<& d<' d<( d<) d<* d<+ d = d<- d<. d</ d<0 d<1 d<2 d d<4<C<5<<<6 d<7 d<8 d<9 d<: d<; d Cy d<= d<> d<? d<@ d<A d<B d CN d<D<K<E d<F d<G d<H d<I d<J d Cy d<L d<M d<N d<O d<P d<Q d Cy d<SK<TC<U@<V>-<W=9<X<<Y<<Z<y<[<j<\<c<] d<^ d<_ d<` d<a d<b d = d<d d<e d<f d<g d<h d<i d d<k<r<l d<m d<n d<o d<p d<q d  d<s d<t d<u d<v d<w d<x d d<z< d<{<| d<} d<~ d< d< d< d Cy d<<< d< d< d< d< d< d  d< d< d< d< d< d< d  d<<<<<<< d< d< d< d< d< d t d< d< d< d< d< d< d  d<<< d< d< d< d< d< d  d< d< d< d< d< d< d Cy d<< d<< d< d< d< d< d< d Cy d<<< d< d< d< d< d< d  d< d< d< d< d< d  d<=<<<<<<< d< d< d< d< d< d = d< d< d< d< d< d< d CN d<<< d< d< d< d< d< d = d< d< d< d< d< d< d Cy d<<<<< d< d< d< d< d< d Cy d< d< d< d< d< d< d CN d< d< d< d< d< d< d=� d Cy d==== d== d= d= d= d= d= d  d= == d= d= d= d= d= d  d= d= d= d= d= d= d  d==*==#= d= d= d= d=! d=" d = d=$ d=% d=& d=' d=( d=) d Cy d=+=2=, d=- d=. d=/ d=0 d=1 d Cy d=3 d=4 d=5 d=6 d=7 d=8 d Cy d=:==;=y=<=Z===K=>=D=? d=@ d=A d=B d=C d  d=E d=F d=G d=H d=I d=J d Cy d=L=S=M d=N d=O d=P d=Q d=R d Cy d=T d=U d=V d=W d=X d=Y d Cy d=[=j=\=c=] d=^ d=_ d=` d=a d=b d CN d=d d=e d=f d=g d=h d=i d Cy d=k=r=l d=m d=n d=o d=p d=q d <u d=s d=t d=u d=v d=w d=x d CN d=z=={==|==} d=~ d= d= d= d= d I7 d= d= d= d= d= d= d Cy d d== d= d= d= d= d= d Cy d===== d= d= d= d= d= d = d= d= d= d= d= d= d Cy d=== d= d= d= d= d= d  d= d= d= d= d= d= d Cy d========= d= d= d= d  d= d= d= d= d= d= d  d=== d= d= d= d= d  d= d= d= d= d= d= d d===== d= d= d= d= d= d Cy d= d= d= d= d= d= d ~ d=== d= d= d= d= d= d  d= d= d= d= d= d= d ~ d=>===== d= d= d= d= d= d  d= d= d= d= d= d= d Cy d>�>> d> d> d> d> d> d ~ d> d> d> d> d> d> d Cy d>>>>> d> d> d> d> d> d d> d> d> d> d> d> d Cy d>>&> d>! d>" d># d>$ d>% d  d>' d>( d>) d>* d>+ d>, d Cy d>.?,>/>>0>o>1>P>2>A>3>:>4 d>5 d>6 d>7 d>8 d>9 d  d>; d>< d>= d>> d>? d>@ d Cy d>B>I>C d>D d>E d>F d>G d>H d Cy d>J d>K d>L d>M d>N d>O d Cy d>Q>`>R>Y>S d>T d>U d>V d>W d>X d Cy d>Z d>[ d>\ d>] d>^ d>_ d  d>a>h>b d>c d>d d>e d>f d>g d Cy d>i d>j d>k d>l d>m d>n d Cy d>p>>q>>r>y>s d>t d>u d>v d>w d>x d Cy d>z d>{ d>| d>} d>~ d> d Cy d>>> d> d> d> d> d> d Cy d> d> d> d> d> d> d Cy d>>>>> d> d> d> d> d> d d> d> d> d> d> d> d Cy d>>> d> d> d> d> d> d = d> d> d> d> d> d> d CN d>>>>>>>>> d> d> d> d> d> d  d> d> d> d> d> d> d CN d>>> d> d> d> d> d = d> d> d> d> d> d> d Cy d>>>>> d> d> d> d> d> d Cy d> d> d> d> d> d> d ~ d>>> d> d> d> d> d> d Cy d> d> d> d> d> d> d Cy d>? >>>>> d> d> d> d> d> d d> d> d> d> d> d> d Cy d>??� d? d? d? d? d? d d? d? d? d? d? d? d Cy d????? d? d? d? d? d? d = d? d? d? d? d? d? d Cy d??%? d? d?! d?" d?# d?$ d t d?& d?' d?( d?) d?* d?+ d Cy d?-??.?f?/?G?0???1?8?2 d?3 d?4 d?5 d?6 d?7 d d?9 d?: d?; d?< d?= d?> d C] d?@ d?A d?B d?C d?D d?E d?F d Cy d?H?W?I?P?J d?K d?L d?M d?N d?O d Cy d?Q d?R d?S d?T d?U d?V d = d?X?_?Y d?Z d?[ d?\ d?] d?^ d  d?` d?a d?b d?c d?d d?e d Cy d?g??h?w?i?p?j d?k d?l d?m d?n d?o d <u d?q d?r d?s d?t d?u d?v d Cy d?x??y d?z d?{ d?| d?} d?~ d  d? d? d? d? d? d? d Cy d????? d? d? d? d? d? d Cy d? d? d? d? d? d? d P d??? d? d? d? d? d? d CN d? d? d? d? d? d? d CN d????????? d? d? d? d? d? d t d? d? d? d? d? d? d d??? d? d? d? d? d? d = d? d? d? d? d? d? d CN d????? d? d? d? d? d? d Cy d? d? d? d? d? d? d  d??? d? d? d? d? d? d = d? d? d? d? d? d? d d?@????? d? d? d = d? d? d? d? d? d? d d??? d? d? d? d? d? d Cy d? d? d? d? d@� d@ d P d@@ d@@ d@ d@ d@ d@ d@ d Cy d d@ @ d@ d@ d@ d@ d@ d Cy d@A@@@@@@U@@6@@'@@!@ d@ d@ d@ d@ d@ d d@" d@# d@$ d@% d@& d P d@(@/@) d@* d@+ d@, d@- d@. d d@0 d@1 d@2 d@3 d@4 d@5 d = d@7@F@8@?@9 d@: d@; d@< d@= d@> d  d@@ d@A d@B d@C d@D d@E d CN d@G@N@H d@I d@J d@K d@L d@M d Cy d@O d@P d@Q d@R d@S d@T d CN d@V@n@W@f@X@_@Y d@Z d@[ d@\ d@] d@^ d = d@` d@a d@b d@c d@d d@e d  d d@g@h d@i d@j d@k d@l d@m d d@o@~@p@w@q d@r d@s d@t d@u d@v d d@x d@y d@z d@{ d@| d@} d d@@@ d@ d@ d@ d@ d@ d  d@ d@ d@ d@ d@ d@ d CN d@@@@@@ d@@ d@ d@ d@ d@ d@ d  d@@@ d@ d@ d@ d@ d@ d = d@ d@ d@ d@ d@ d@ d Cy d@@@@@ d@ d@ d@ d@ d@ d Cy d@ d@ d@ d@ d@ d@ d Cy d@@@ d@ d@ d@ d@ d@ d I d@ d@ d@ d@ d@ d@ d Cy d@@@@@@@ d@ d@ d@ d@ d@ d Cy d@ d@ d@ d@ d@ d I d d@@ d@ d@ d@ d@ d@ d d@@@ d@ d@ d@ d@ d@ d@ d Cy d@@@ d@ d@ d@ d@ d@ d = d@ d@ d@ d@ d@ d@ d CN d@Ah@A0@A@A d@@ d@ d@ d@ dA� dA d  dAA A dA dA dA dA dA d dA dA dA dA dA dA d Cy dAA!AAA dA dA dA dA dA d dA dA dA dA dA dA d CN dA"A)A# dA$ dA% dA& dA' dA( d = dA* dA+ dA, dA- dA. dA/ d dA1AIA2A: dA3A4 dA5 dA6 dA7 dA8 dA9 d dA;ABA< dA= dA> dA? dA@ dAA d <u dAC dAD dAE dAF dAG dAH d CN dAJAYAKARAL dAM dAN dAO dAP dAQ d ~ dAS dAT dAU dAV dAW dAX d = dAZAaA[ dA\ dA] dA^ dA_ dA` d Cy dAb dAc dAd dAe dAf dAg d dAiAAjAAkAs dAlAm dAn dAo dAp dAq dAr d CN dAtA{Au dAv dAw dAx dAy dAz d d dA| dA} dA~ dA dA dA d dAAAAA dA dA dA dA dA d Cy dA dA dA dA dA dA d dAAA dA dA dA dA dA d Cy dA dA dA dA dA dA d Cy dAAA dAAA dA dA dA dA dA d t dA dA dA dA dA dA d = dAAAAA dA dA dA dA dA d Cy dA dA dA dA dA dA d <u dAAA dA dA dA dA dA d  dA dA dA dA dA dA d Cy dABABDAB AAAAAAA dA dA dA dA dA d Cy dA dA dA dA dA dA d CN dAAA dA dA dA dA dA d  dA dA dA dA dA dA d dABAAA dA dA dA dA dA d  dA dA dB� dB dB dB d dB dB dB dB dB dB dB d Cy dB B%BBB dB dB dB dB dB dB d  dBBB dB dB dB dB dB d Cy dB dB dB! dB" dB# dB$ d CN dB&B5B'B.B( dB) dB* dB+ dB, dB- d P dB/ dB0 dB1 dB2 dB3 dB4 d dB6B=B7 dB8 dB9 dB: dB; dB< d = dB> dB? dB@ dBA dBB dBC d  dBEBBFBeBGBVBHBOBI dBJ dBK dBL dBM dBN d dBP dBQ dBR dBS dBT dBU d t dBWB^BX dBY dBZ dB[ dB\ dB] d P dB_ dB` dBa dBb dBc dBd d = dBfBuBgBnBh dBi dBj dBk dBl dBm d Cy dBo dBp dBq dBr dBs dBt d Cy dBvB}Bw dBx dBy dBz dB{ dB| d = dB~ dB dB dB dB dB d Cy dBBBBBBB dB dB dB dB dB d  dB dB dB dB dB dB d  dBBB dB dB dB dB dB d <u dB dB dB dB dB dB d Cy dBBBBB dB dB dB dB dB d Cy dB dB dB dB dB dB d  dBBB dB dB dB dB dB d Cy dB dB dB dB dB dB d Cy dBC<BCBBBBBBB dB dB dB dB dB d  dB dB dB dB dB dB d = dBBB dB dB dB dB dB d Cy dB dB dB dB dB dB d CN dBBBBB dB dB dB dB dB d CN dB dB dB dB dB dB d ~ dBBB dB dB dB dB dB d <u dB dB dC� dC dC dC d  dCC$CCCCC iBC iBC iBC iBC iBC iB Sl iBC iBC iBC iBC iBC iBC iB = iBCCC iBC iBC iBC iBC iBC iB iBC iBC iBC iBC! iBC" iBC# iB ݼ iBC%C- iBC&C' iBC( iBC) iBC* iBC+ iBC, iB dQ iBC.C5C/ iBC0 iBC1 iBC2 iBC3 iBC4 iB = iBC6 iBC7 iBC8 iBC9 iBC: iBC; iB iBC=CnC>CVC?CG dC@CA dCB dCC dCD dCE dCF d Cy dCHCOCI dCJ dCK dCL dCM dCN d dCP dCQ dCR dCS dCT dCU d Cy dCWC_ dCXCY dCZ dC[ dC\ dC] dC^ d  dC`CgCa dCb dCc dCd dCe dCf d P dCh dCi dCj dCk dCl dCm d dCoCCpCCqCxCr dCs dCt dCu dCv dCw d <u dCy dCz dC{ dC| dC} dC~ d dCCC dC dC dC dC dC d = dC dC dC dC dC dC d dCCCCC dC dC dC dC dC d = C dC dC dC dC dC d CN dCCC dC dC dC dC dC d Cy dC dC dC dC dC dC d Cy dCG`CECDCD'CCCCCC dCC dC dC dC dC dC d Cy dCCC dC dC dC dC dC d ~ dC dC dC dC dC dC d P dCCCCC dC dC dC dC d ~ dC dC dC dC dC dC d C] dCCC dC dC dC dC dC d dC dC dC dC dC dC d = dCDCCCCC dC dC dC dC d <u dC dC dC dC dC dC d CN dCDC dC dC dC dC dD� d  dD dD dD dD dD dD d ~ dD DD DD dD dD dD dD dD d  dD dD dD dD dD dD d dDD D dD dD dD dD dD d C] dD! dD" dD# dD$ dD% dD& d dD(DgD)DHD*D9D+D2D, dD- dD. dD/ dD0 dD1 d  dD3 dD4 dD5 dD6 dD7 dD8 d dD:DAD; dD< dD= dD> dD? dD@ d CN dDB dDC dDD dDE dDF dDG d dDIDXDJDQDK dDL dDM dDN dDO dDP d Cy dDR dDS dDT dDU dDV dDW d dDYD`DZ dD[ dD\ dD] dD^ dD_ d I7 dDa dDb dDc dDd dDe dDf d = dDhDDiDxDjDqDk dDl dDm dDn dDo dDp d dDr dDs dDt dDu dDv dDw d  d dDyDz dD{ dD| dD} dD~ dD d  dDDDDD dD dD dD dD dD d ~ dD dD dD dD dD dD d P dDDD dD dD dD dD dD d <u dD dD dD dD dD dD d  dDEDDDDDD dDD dD dD dD dD dD d  dDDD dD dD dD dD dD d Cy dD dD dD dD dD dD d CN dDDDDD dD dD dD dD dD d Cy dD dD dD dD dD dD d  dDDD dD dD dD dD dD d  dD dD dD dD dD dD d CN dDDDDDDD dD dD dD dD dD d = dD dD dD dD dD dD d Cy dDDD dD dD dD dD dD d Cy dD dD dD dD dD dD d  dDE DED dD dD dD dE� dE d  dE dE dE dE dE dE d  dE EE dE dE dE dE dE d = dE dE dE dE dE dE d Cy dEEQEE2EE# dEE dE dE dE dE! dE" d Cy dE$E+E% dE& dE' dE( dE) dE* d  dE, dE- dE. dE/ dE0 dE1 d t dE3EBE4E;E5 dE6 dE7 dE8 dE9 dE: d = dE< dE= dE> dE? dE@ dEA d  dECEJED dEE dEF dEG dEH dEI d P dEK dEL dEM dEN dEO dEP d CN dEREgESE[ dETEU dEV dEW dEX dEY dEZ d = dE\E`E] dE^ dE_ d <u dEa dEb dEc dEd dEe dEf d  dEhEwEiEpEj dEk dEl dEm dEn dEo d  dEq dEr dEs dEt dEu dEv d = dExEEy dEz dE{ dE| dE} dE~ d = dE dE dE dE dE dE d CN dEFoEEEEEEEEEEE dE dE dE dE dE d Cy dE dE dE dE dE dE d CN dEEE dE dE dE dE dE d Cy dE dE dE dE dE dE d I7 dEEEEE dE dE dE dE dE d Cy dE dE dE dE dE d I dEEE dE dE dE dE dE d š dE dE dE dE dE dE d Cy dEEEEEEE dE dE dE dE dE d ~ dE dE dE dE dE dE d Cy dEEE dE dE dE dE dE d dE dE dE dE dE dE d dEEEEE dE dE dE dE dE d Cy dE dE dE dE dE dE d Cy d dEE dE dE dE dE dE d CN dF�F1FFFFFF F dF dF dF dF dF d  dF dF dF dF dF dF d <u d dFF dF dF dF dF dF d dFF"F dF dF dF dF dF dF! d Cy dF#F*F$ dF% dF& dF' dF( dF) d Cy dF+ dF, dF- dF. dF/ dF0 d Cy dF2FPF3FAF4F:F5 dF6 dF7 dF8 dF9 d t dF; dF< dF= dF> dF? dF@ d CN dFBFIFC dFD dFE dFF dFG dFH d  dFJ dFK dFL dFM dFN dFO d Cy dFQF`FRFYFS dFT dFU dFV dFW dFX d  dFZ dF[ dF\ dF] dF^ dF_ d Cy dFaFhFb dFc dFd dFe dFf dFg d dFi dFj dFk dFl dFm dFn d Cy dFpFFqFFrFFsFFtF{Fu dFv dFw dFx dFy dFz d  dF| dF} dF~ dF dF dF d dFFF dF dF dF dF dF d Cy dF dF dF dF dF dF d Cy dFFFFF dF dF dF dF dF d Cy dF dF dF dF dF dF d σ dFFF dF dF dF dF dF d Cy dF dF dF dF dF dF d  dFFFFFFF dF dF dF dF dF d  dF dF dF dF dF dF d  dF dF dF dF dF dF dF d  dFFFFF dF dF dF dF dF d Cy dF dF dF dF dF dF d = dFFF dF dF dF dF dF d I7 dF dF dF dF dF dF d CN dFG!FGFF dFF dF dF dF dF dF d = dFFF dF dF dF dF dF d Cy dF dF dF dF dG� dG d CN dGGGG G dG dG dG dG dG d Cy dG dG dG dG dG dG d Cy dGGG dG dG dG dG dG d dG dG dG dG dG dG d = dG"GAG#G2G$G+G% dG& dG' dG( dG) dG* d Cy dG, dG- dG. dG/ dG0 dG1 d  dG3G:G4 dG5 dG6 dG7 dG8 dG9 d Cy dG; dG< dG= dG> dG? dG@ d CN dGBGQGCGJGD dGE dGF dGG dGH dGI d Cy dGK dGL dGM dGN dGO dGP d CN dGRGYGS dGT dGU dGV dGW dGX d % dGZ dG[ dG\ dG] dG^ dG_ d CN dGaICGbHLGcGGdGGeGGfGuGgGnGh dGi dGj dGk dGl dGm d Cy dGo dGp dGq dGr dGs dGt d CN dGvG}Gw dGx dGy dGz dG{ dG| d P dG~ dG dG dG dG dG d CN dGGGGG dG dG dG dG dG d Cy dG dG dG dG dG dG d Cy dGGG dG dG dG dG dG d dG dG dG dG dG dG d Cy dGGGGGGG dG dG dG dG dG d = dG dG dG dG dG dG d Cy dGGG dG dG dG dG dG d = dG dG dG dG dG dG d CN dGG dGG dG dG dG dG dG d Cy dGGG dG dG dG dG dG d dG dG dG dG dG dG d Cy dGHGGGGGGG dG dG dG dG dG d = dG dG dG dG dG dG d Cy dGGG dG dG dG dG dG d dG dG dG dG dG dG d Cy dGH GHG dH� dH dH dH dH d P dH dH dH dH dH dH d <u dH HH dH dH dH dH dH d = dH dH dH dH dH dH d C] dHH;HH,HH%H dH dH! dH" dH# dH$ d Cy dH& dH' dH( dH) dH* dH+ d CN dH-H4H. dH/ dH0 dH1 dH2 dH3 d  dH5 dH6 dH7 dH8 dH9 dH: d CN dH<HDH= dH> dH? dH@ dHA dHB dHC d P d dHEHF dHG dHH dHI dHJ dHK d ~ dHMHHNHHOHnHPH_HQHXHR dHS dHT dHU dHV dHW d dHY dHZ dH[ dH\ dH] dH^ d Cy dH`HgHa dHb dHc dHd dHe dHf d  dHh dHi dHj dHk dHl dHm d CN dHoH~HpHwHq dHr dHs dHt dHu dHv d dHx dHy dHz dH{ dH| dH} d dHHH dH dH dH dH dH d  dH dH dH dH dH dH d dHHHHHHH dH dH dH dH dH d Cy dH dH dH dH dH dH d = dHHH dH dH dH dH dH d Cy dH dH dH dH dH dH d dHHHHH dH dH dH dH dH d Cy dH dH dH dH dH dH d dHHH dH dH dH dH dH d Cy dH dH dH dH dH dH d dHI HHHHHHH dH dH dH dH dH d dH dH dH dH dH dH d = dHHH dH dH dH dH dH d P dH dH dH dH dH dH d dHHHHH dH dH dH dH dH d dH dH dH dH dH dH d  dHIH dI� dI dI dI dI d = dI dI dI dI dI dI d C] dI I+IIIII dI dI dI dI dI d t dI dI dI dI dI dI d dII%I dI dI! dI" dI# dI$ d Cy dI& dI' dI( dI) dI* d  dI,I;I-I4I. dI/ dI0 dI1 dI2 dI3 d = dI5 dI6 dI7 dI8 dI9 dI: d C] d dI<I= dI> dI? dI@ dIA dIB d CN dIDJ3IEIIFI~IGI_IHIP dIIIJ dIK dIL dIM dIN dIO d CN dIQIXIR dIS dIT dIU dIV dIW d Cy dIY dIZ dI[ dI\ dI] dI^ d CN dI`IoIaIhIb dIc dId dIe dIf dIg d  dIi dIj dIk dIl dIm dIn d  dIpIwIq dIr dIs dIt dIu dIv d Cy dIx dIy dIz dI{ dI| dI} d dIIII dII dI dI dI dI dI d Cy dIII dI dI dI dI dI d š dI dI dI dI dI dI d Cy dIIIII dI dI dI dI dI d  dI dI dI dI dI dI d Cy dIII dI dI dI dI dI d = dI dI dI dI dI dI d Cy dIIIIIIIII dI dI dI dI d  dI dI dI dI dI dI d Cy dIII dI dI dI dI dI d  dI dI dI dI dI dI d Cy dIIIII dI dI dI dI dI d = dI dI dI dI dI dI d  dIII dI dI dI dI dI d ~ dI dI dI dI dI dI d Cy dIJIJIII dI dI dI dI dI d Cy dJ� dJ dJ dJ dJ dJ d CN dJJJ dJ dJ dJ dJ dJ d = dJ dJ dJ dJ dJ dJ d CN dJJ$JJJ dJ dJ dJ dJ d = dJ dJ dJ dJ! dJ" dJ# d CN dJ%J,J& dJ' dJ( dJ) dJ* dJ+ d Cy dJ- dJ. dJ/ dJ0 dJ1 dJ2 d CN dJ4JJ5JtJ6JUJ7JFJ8J?J9 dJ: dJ; dJ< dJ= dJ> d P dJ@ dJA dJB dJC dJD dJE d dJGJNJH dJI dJJ dJK dJL dJM d Cy dJO dJP dJQ dJR dJS dJT d = dJVJeJWJ^JX dJY dJZ dJ[ dJ\ dJ] d  dJ_ dJ` dJa dJb dJc dJd d dJfJmJg dJh dJi dJj dJk dJl d  dJn dJo dJp dJq dJr dJs d  dJuJJvJ~ dJwJx dJy dJz dJ{ dJ| dJ} d = dJJJ dJ dJ dJ dJ dJ d = dJ dJ dJ dJ dJ dJ d Cy dJJJJJ dJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ dJ d = dJJJ dJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ dJ d CN dJJJJJJJ dJ dJ dJ dJ dJ dJ d  dJJJ dJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ dJ d  d dJJJJ dJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ dJ d Cy dJJJJJJJ dJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ dJ d š dJJJ dJ dJ dJ dJ dJ d <u dJ dJ dJ dJ dJ dJ d CN dJKJJJ dJ dJ dJ dJ dJ d š dK� dK dK dK dK dK d = dKKK dK dK dK dK dK d  dK dK dK dK dK dK d  dKRKNKLKL KKKKZKK;KK,KK%K dK dK! dK" dK# dK$ d ~ dK& dK' dK( dK) dK* dK+ d dK-K4K. dK/ dK0 dK1 dK2 dK3 d d tK5 dK6 dK7 dK8 dK9 dK: d dK<KKK=KDK> dK? dK@ dKA dKB dKC d  dKE dKF dKG dKH dKI dKJ d = dKLKSKM dKN dKO dKP dKQ dKR d I dKT dKU dKV dKW dKX dKY d dK[KzK\KkK]KdK^ dK_ dK` dKa dKb dKc d Cy dKe dKf dKg dKh dKi dKj d dKlKsKm dKn dKo dKp dKq dKr d CN dKt dKu dKv dKw dKx dKy d dK{KK|KK} dK~ dK dK dK dK d = dK dK dK dK dK dK d  dKKK dK dK dK dK dK d C] dK dK dK dK dK dK d Cy dKKKKKKK dK d š dKKK dK dK dK dK dK d P dK dK dK dK dK dK d dKKKKK dK dK dK dK dK d = dK dK dK dK dK dK d dKKK dK dK dK dK dK d Cy dK dK dK dK dK dK d dKKKKKKK dK dK dK dK dK d Cy dK dK dK dK dK dK d C] dKKK dK dK dK dK dK d  dK dK dK dK dK dK d P dKKKKK dK dK dK dK dK d dK dK dK dK dK dK d Cy dKLK dL� dL dL dL dL d ~ dL dL dL dL dL dL d dL LvLL7LL'LLLLL dL dL dL dL dL d CN dL dL dL dL dL dL d = d dL L! dL" dL# dL$ dL% dL& d dL( dL)L0L* dL+ dL, dL- dL. dL/ d Cy dL1 dL2 dL3 dL4 dL5 dL6 d Cy dL8LWL9LHL:LAL; dL< dL= dL> dL? dL@ d = dLB dLC dLD dLE dLF dLG d dLILPLJ dLK dLL dLM dLN dLO d = dLQ dLR dLS dLT dLU dLV d CN dLXLgLYL`LZ dL[ dL\ dL] dL^ dL_ d = dLa dLb dLc dLd dLe dLf d  dLhLoLi dLj dLk dLl dLm dLn d = dLp dLq dLr dLs dLt dLu d CN dLwLLxLLyLLzLL{ dL| dL} dL~ dL dL d Cy dL dL dL dL dL dL d Cy dLLL dL dL dL dL dL d <u dL dL dL dL dL dL d Cy dLL dLL dL dL dL dL dL d Cy dLLL dL dL dL dL dL d  dL dL dL dL dL dL d dLLLL dLL dL dL dL dL dL d dLLL dL dL dL dL dL d = dL dL dL dL dL dL d dLLLLL dL dL dL dL dL d  dL dL dL dL dL dL d dLLL dL dL dL dL dL d dL dL dL dL dL dL d CN dLMLM_LM"LMLLLLL dL dL dL dL dL d Cy dL dL dL dL dL dL d  d dLL dL dL dM� dM dM d  dMMMM M dM dM dM dM dM d  dM dM dM dM dM dM d Cy dMMM dM dM dM dM dM d Cy dM dM dM dM dM dM! d Cy dM#MBM$M3M%M,M& dM' dM( dM) dM* dM+ d t dM- dM. dM/ dM0 dM1 dM2 d Cy dM4M;M5 dM6 dM7 dM8 dM9 dM: d = dM< dM= dM> dM? dM@ dMA d  dMCMRMDMKME dMF dMG dMH dMI dMJ d dML dMM dMN dMO dMP dMQ d dMSMZMT dMU dMV dMW dMX dMY d Cy dM[ dM\ dM] dM^ d  dM`MMaMMbMqMcMjMd dMe dMf dMg dMh dMi d  dMk dMl dMm dMn dMo dMp d Cy dMrMyMs dMt dMu dMv dMw dMx d t dMz dM{ dM| dM} dM~ dM d Cy dMMMMM dM dM dM dM dM d = dM dM dM dM dM dM d dMMM dM dM dM dM dM d ~ dM dM dM dM dM dM d CN dMMMMMMM dM dM dM dM dM d ~ dM dM dM dM dM dM d Cy dMMM dM dM dM dM dM d P dM dM dM dM dM dM d dMMMMM dM dM dM dM dM d ~ dM dM dM dM dM dM d dMMM dM dM dM dM dM d = dM dM dM dM dM dM d = dMN]MNMN�MMMMM dM dM dM dM dM d  dM dM dM dM dM dM d  dMMM dM dM dM dM dM d = dM dM dM dM dM dM d CN dNNNN N dN dN dN dN dN d  dN dN dN dN dN dN d Cy dNNN dN dN dN dN dN d dN dN dN dN dN dN d C] dN N?N!N0N"N)N# dN$ dN% dN& dN' dN( d CN dN* dN+ dN, dN- dN. dN/ d Cy dN1N8N2 dN3 dN4 dN5 dN6 dN7 d Œ dN9 dN: dN; dN< dN= dN> d Cy dN@NNNANGNB dNC dND dNE dNF d  dNH dNI dNJ dNK dNL dNM d dNONVNP dNQ dNR dNS dNT dNU d dNW dNX dNY dNZ dN[ dN\ d CN dN^NN_N~N`NoNaNhNb dNc dNd dNe dNf dNg d Cy dNi dNj dNk dNl dNm dNn d  dNpNwNq dNr dNs dNt dNu dNv d Cy dNx dNy dNz dN{ dN| dN} d dNNNNN dN dN dN dN dN d dN dN dN dN dN dN d dNNN dN dN dN dN dN d Cy dN dN dN dN dN dN d = dNNNNNNN dN dN dN dN dN d  dN dN dN dN dN dN d Cy dNNN dN dN dN dN dN d dN dN dN dN dN dN d Cy dNN dNN dN dN dN dN dN d Cy dNNN dN dN dN dN dN d Cy dN dN dN dN dN dN d Cy dNPNONOPNONNNNNNN dN dN dN dN dN d <u dN dN dN dN dN dN d dNNN dN dN dN dN dN d Cy dN dN dN dN dN dN d <u dNO NON dN dN dN dO� dO d dO dO dO dO dO dO d dO OO dO dO dO dO dO d = dO dO dO dO dO dO d Cy dOO8OO)OO"O dO dO dO dO dO! d  dO# dO$ dO% dO& dO' dO( d Cy dO*O1O+ dO, dO- dO. dO/ dO0 d dO2 dO3 dO4 dO5 dO6 dO7 d Cy dO9OHO:OAO; dO< dO= dO> dO? dO@ d Cy dOB dOC dOD dOE dOF dOG d Cy d dOIOJ dOK dOL dOM dON dOO d Cy dOQOOROjOSObOTO[OU dOV dOW dOX dOY dOZ d  dO\ dO] dO^ dO_ dO` dOa d Cy d dOcOd dOe dOf dOg dOh dOi d C] dOkOzOlOsOm dOn dOo dOp dOq dOr d dOt dOu dOv dOw dOx dOy d P dO{OO| dO} dO~ dO dO dO d š dO dO dO dO dO dO d dOOOO dOO dO dO dO dO dO d CN dOOO dO dO dO dO dO d Cy dO dO dO dO dO dO d CN dOOOOO dO dO dO dO dO d Cy dO dO dO dO dO dO d CN dOOO dO dO dO dO dO d dO dO dO dO dO dO d Cy dOP:OOOOOOOOO dO dO dO dO dO d  dO dO dO dO dO dO d CN dOOO dO dO dO dO dO d <u dO dO dO dO dO dO d dOO dOO dO dO dO dO dO d CN dOOO dO dO dO dO dO d I7 dO dO dO dO dO dO d C] dOPOP OPO dP� dP dP dP dP d = dP dP dP dP dP dP d Cy dP PP dP dP dP dP dP d dP dP dP dP dP dP d dPP+PP$P dP dP dP! dP" dP# d dP% dP& dP' dP( dP) dP* d CN dP,P3P- dP. dP/ dP0 dP1 dP2 d t dP4 dP5 dP6 dP7 dP8 dP9 d  dP;PzP<P[P=PLP>PEP? dP@ dPA dPB dPC dPD d = dPF dPG dPH dPI dPJ dPK d  dPMPTPN dPO dPP dPQ dPR dPS d dPU dPV dPW dPX dPY dPZ d dP\PkP]PdP^ dP_ dP` dPa dPb dPc d ~ dPe dPf dPg dPh dPi dPj d CN dPlPsPm dPn dPo dPp dPq dPr d dPt dPu dPv dPw dPx dPy d Cy dP{PP|PP}PP~ dP dP dP dP dP d P dP dP dP dP dP dP d CN dPPP dP dP dP dP dP d = dP dP dP dP dP dP d CN dPPPPP dP dP dP dP dP d Cy dP dP dP dP dP dP d d dP dP dP dP dP dP dP d CN dPQPQPPPPP d dPP dP dP dP dP dP d = dPP dPP dP dP dP dP dP d Cy dPPP dP dP dP dP dP d dP dP dP dP dP dP d Cy dPPPP dPP dP dP dP dP dP d C] dPPP dP dP dP dP dP d dP dP dP dP dP dP d Cy dPQ�PPP dP dP dP dP dP d <u dP dP dP dP dP dP d Cy dQQQ dQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ dQ d Cy dQQHQQ)QQ dQQ dQ dQ dQ dQ dQ d Cy dQQ"Q dQ dQ dQ dQ dQ! d = dQ# dQ$ dQ% dQ& dQ' dQ( d Cy dQ*Q9Q+Q2Q, dQ- dQ. dQ/ dQ0 dQ1 d Cy dQ3 dQ4 dQ5 dQ6 dQ7 dQ8 d Cy dQ:QAQ; dQ< dQ= dQ> dQ? dQ@ d <u dQB dQC dQD dQE dQF dQG d Cy dQIQhQJQYQKQRQL dQM dQN dQO dQP dQQ d  dQS dQT dQU dQV dQW dQX d Cy dQZQaQ[ dQ\ dQ] dQ^ dQ_ dQ` d Cy dQb dQc dQd dQe dQf dQg d  dQiQxQjQqQk dQl dQm dQn dQo dQp d dQr dQs dQt dQu dQv dQw d C] dQyQQz dQ{ dQ| dQ} dQ~ dQ d = dQ dQ dQ dQ dQ dQ d Cy dQR�QQQQQQQQQ dQ dQ dQ dQ dQ d Cy dQ dQ dQ dQ dQ dQ d Cy dQQQ dQ dQ dQ dQ dQ d Cy dQ dQ dQ dQ dQ dQ d Cy dQQQQQ dQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ dQ d Cy dQQQ dQ dQ dQ dQ dQ d = dQ dQ dQ dQ dQ dQ d Cy dQQQQ dQQ dQ dQ dQ dQ dQ d Cy dQQQ dQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ dQ d dQQQQQ dQ dQ dQ dQ dQ d = dQ dQ dQ dQ dQ dQ d P dQQQ dQ dQ dQ dQ dQ d Cy dQ dQ dQ dQ dQ dQ d = dRR@RR!RRRR R dR dR dR dR dR d dR dR dR dR dR dR d = dRRR dR dR dR dR dR d = dR dR dR dR dR dR d Cy dR"R1R#R*R$ dR% dR& dR' dR( dR) d <u dR+ dR, dR- dR. dR/ dR0 d <u dR2R9R3 dR4 dR5 dR6 dR7 dR8 d  dR: dR; dR< dR= dR> dR? d ~ dRAR`RBRQRCRJRD dRE dRF dRG dRH dRI d ~ dRK dRL dRM dRN dRO dRP d dRRRYRS dRT dRU dRV dRW dRX d  dRZ dR[ dR\ dR] dR^ dR_ d Cy dRaRpRbRiRc dRd dRe dRf dRg dRh d = dRj dRk dRl dRm dRn dRo d Cy dRqRxRr dRs dRt dRu dRv dRw d Cy dRy dRz dR{ dR| dR} dR~ d dRVLRT[RSsRSRRRRRRRRR dR dR dR dR dR d Cy dR dR dR dR dR dR d Cy dRRR dR dR dR dR dR d Cy dR dR dR dR dR dR d Cy dRRRRR dR dR dR dR dR d dR dR dR dR dR dR d = dRRR dR dR dR dR dR d Cy dR dR dR dR dR dR d C] dRRRRRRR dR dR dR dR dR d dR dR dR dR dR dR d Cy dRRR dR dR dR dR dR d Cy dR dR dR dR dR dR d Cy dRRRRR dR dR dR dR dR d P dR dR dR dR dR dR d Cy dRRR dR dR dR dR dR d Cy dR dR dR dR dS� dS d Cy dSS;SSSSSS S dS dS dS dS dS d  dS dS dS dS dS dS d š d dSS dS dS dS dS dS d dSS,SS%S dS dS! dS" dS# dS$ d P dS& dS' dS( dS) dS* dS+ d C] dS-S4S. dS/ dS0 dS1 dS2 dS3 d = dS5 dS6 dS7 dS8 dS9 dS: d dS<STS=SE dS>S? dS@ dSA dSB dSC dSD d = dSFSMSG dSH dSI dSJ dSK dSL d Cy dSN dSO dSP dSQ dSR dSS d  dSUSdSVS]SW dSX dSY dSZ dS[ dS\ d P dS^ dS_ dS` dSa dSb dSc d dSeSlSf dSg dSh dSi dSj dSk d Cy dSm dSn dSo dSp dSq dSr d = dStSSuSSvSSwS dSxSy dSz dS{ dS| dS} dS~ d = dSSS dS dS dS dS dS d dS dS dS dS dS dS d C] dSSSSS dS dS dS dS dS d P dS dS dS dS dS dS d  d dSS dS dS dS dS dS d dSSSSSSS dS dS dS dS dS d = dS dS dS dS dS dS d Cy dSSS dS dS dS dS dS d dS dS dS dS dS dS d dSSSSS dS dS dS dS dS d Cy dS dS dS dS dS dS d CN dSSS dS dS dS dS dS d dS dS dS dS dS dS d P dSTSSSS dSS dS dS dS dS dS d C] dSSS dS dS dS dS dS d = dS dS dS dS dS dS d CN dT�T TTT dT dT dT d  dT dT dT dT dT dT d CN dTTT dT dT dT dT dT d Cy dT dT dT dT dT dT d ~ dTT<TT-TT&T dT! dT" dT# dT$ dT% d dT' dT( dT) dT* dT+ dT, d ~ dT.T5T/ dT0 dT1 dT2 dT3 dT4 d Cy dT6 dT7 dT8 dT9 dT: dT; d Cy dT=TLT>TET? dT@ dTA dTB dTC dTD d <u dTF dTG dTH dTI dTJ dTK d Cy dTMTTTN dTO dTP dTQ dTR dTS d Cy dTU dTV dTW dTX dTY dTZ d Cy dT\UYT]TT^TT_T|T`TmTaTfTb dTc dTd dTe d dTg dTh dTi dTj dTk dTl d Cy dTnTuTo dTp dTq dTr dTs dTt d Cy dTv dTw dTx dTy dTz dT{ d CN dT}TT~TT dT dT dT dT dT d  dT dT dT dT dT dT d = dTTT dT dT dT dT dT d <u dT dT dT dT dT dT d C] dTTTTTTT dT dT dT dT dT d dT dT dT dT dT dT d = dTTT dT dT dT dT dT d Cy dT dT dT dT dT dT d Cy dTTTTT dT dT dT dT dT d  dT dT dT dT dT dT d dTTT dT dT dT dT dT d dT dT dT dT dT dT d <u dTUTTTTTTT dT dT dT dT dT d ~ dT dT dT dT dT dT d = dTTT dT dT dT dT dT d Cy dT dT dT dT dT dT d P dTU TUT dT dU� dU dU dU d Cy dU dU dU dU dU dU d P dU UU dU dU dU dU dU d Cy dU dU dU dU dU dU d CN dUU:UU+UU$U dU dU dU! dU" dU# d t dU% dU& dU' dU( dU) dU* d ~ dU,U3U- dU. dU/ dU0 dU1 dU2 d I7 dU4 dU5 dU6 dU7 dU8 dU9 d Cy dU;UJU<UCU= dU> dU? dU@ dUA dUB d <u dUD dUE dUF dUG dUH dUI d dUKURUL dUM dUN dUO dUP dUQ d Cy dUS dUT dUU dUV dUW dUX d Cy dUZUU[UU\U{U]UlU^UeU_ dU` dUa dUb dUc dUd d t dUf dUg dUh dUi dUj dUk d Cy dUmUtUn dUo dUp dUq dUr dUs d dUu dUv dUw dUx dUy dUz d Cy dU|UU}UU~ dU dU dU dU dU d C] dU dU dU dU dU dU d = dUUU dU dU dU dU dU d  dU dU dU dU dU dU d dUUUUUUU dU dU dU dU dU d = dU dU dU dU dU dU d  dUUU dU dU dU dU dU d P dU dU dU dU dU dU d š dUUUUU dU dU dU dU dU d <u dU dU dU dU dU dU d = dUUU dU dU dU dU dU d P dU dU dU dU dU dU d dUVUUUUUUU dU dU dU dU dU d  dU dU dU dU dU dU d Cy dUUU dU dU dU dU dU d ~ dU dU dU dU dU dU d Cy dUV UVU dU dU dV� dV dV d = dV dV dV dV dV dV d Cy d dV V dV dV dV dV dV d CN dVV1VV"VVV dV dV dV dV dV d dV dV dV dV dV! d dV#V*V$ dV% dV& dV' dV( dV) d Cy dV+ dV, dV- dV. dV/ dV0 d C] dV2VAV3V:V4 dV5 dV6 dV7 dV8 dV9 d CN dV; dV< dV= dV> dV? dV@ d Cy dVBVIVC dVD dVE dVF dVG dVH d  dVJ dVK d dVMX"VNW?VOVVPVVQVpVRVaVSVZVT dVU dVV dVW dVX dVY d Cy dV[ dV\ dV] dV^ dV_ dV` d CN dVbViVc dVd dVe dVf dVg dVh d = dVj dVk dVl dVm dVn dVo d dVqVVrVyVs dVt dVu dVv dVw dVx d t dVz dV{ dV| dV} dV~ dV d CN dVVV dV dV dV dV dV d dV dV dV dV dV dV d dVVVVVVV dV dV dV dV dV d = dV dV dV dV dV dV d Cy dVVV dV dV dV dV dV d Cy dV dV dV dV dV dV d = dVVVVV dV dV dV dV dV d = dV dV dV dV dV dV d dVVV dV dV dV dV dV d t dV dV dV dV dV dV d š dVWVVVVV dV dV dV dV dV dV d  dVVV dV dV dV dV dV d Cy dV dV dV dV dV dV d Cy dVVVVV dV dV dV dV dV d Cy dV dV dV dV dV dV d Cy dVW�V dV dV dV dV dV d Cy dW dW dW dW dW dW d CN dWW'W WW WW W W W W W   W W W W W W  WW W W W W W W  h W! W" W# W$ W% W&  h W(W0 W)W* W+ W, W- W. W/  F W1W8W2 W3 W4 W5 W6 W7  $ W9 W: W; W< W= W>  F W@WWAWyWBWaWCWRWDWKWE iBWF iBWG iBWH iBWI iBWJ iB = iBWL iBWM iBWN iBWO iBWP iBWQ iB I iBWSWZWT iBWU iBWV iBWW iBWX iBWY iB  iBW[ iBW\ iBW] iBW^ iBW_ iBW` iB iBWbWqWcWjWd iBWe iBWf iBWg iBWh iBWi iB Sl iBWk iBWl iBWm iBWn iBWo iBWp iB [ iB iBWrWs iBWt iBWu iBWv iBWw iBWx iB [ iBWzWW{WW|WW} dW~ dW dW dW dW d = dW dW dW dW dW dW d Cy dWWW dW dW dW dW dW d = dW dW dW dW dW dW d Cy dWW dWW dW dW dW dW dW d CN dWWW dW dW dW dW dW d Cy dW dW dW dW dW dW d ~ dWWWWWW dWW dW dW dW dW dW d dWWW dW dW dW dW dW d Cy dW dW dW dW dW dW d  dWWWWW dW dW dW dW dW d š dW dW dW dW dW dW d I7 d dWW dW dW dW dW dW d CN dWXWWWWW dW dW dW dW dW d Cy dW dW dW dW dW dW d Cy dWWW dW dW dW dW dW d = dW dW dW dX� dX dX d Cy dXXXX X dX dX dX dX dX d = dX dX dX dX dX dX d Cy dXXX dX dX dX dX dX d Cy dX dX dX dX dX dX! d Cy dX#XX$XX%X]X&X>X'X6X(X/X) dX* dX+ dX, dX- dX. d <u dX0 dX1 dX2 dX3 dX4 dX5 d CN dX7 dX8 dX9 dX: dX; dX< dX= d P dX?XNX@XGXA dXB dXC dXD dXE dXF d Cy dXH dXI dXJ dXK dXL dXM d CN dXOXVXP dXQ dXR dXS dXT dXU d CN dXW dXX dXY dXZ dX[ dX\ d CN dX^XvX_Xg dX`Xa dXb dXc dXd dXe dXf d t dXhXoXi dXj dXk dXl dXm dXn d P dXp dXq dXr dXs dXt dXu d = dXwXXxXXy dXz dX{ dX| dX} dX~ d Cy dX dX dX dX dX dX d CN dXXX dX dX dX dX dX d Cy dX dX dX dX dX dX d = dXXXXXXXXX dX dX dX dX dX d  dX dX dX dX dX dX d Cy dXXX dX dX dX dX dX d Cy dX dX dX dX dX dX d Cy dXXXXX dX dX dX dX dX d I dX dX dX dX dX dX d CN d dXX dX dX dX dX dX d CN dXXXX dXX dX dX dX dX dX d ~ d dXX dX dX dX dX dX d dXXXXX dX dX dX dX dX d t dX dX dX dX dX dX d = dXXX dX dX dX dX dX d = dX dX dX dX dX dX d dY�YxYY9YY!YYYY Y dY dY dY dY dY d Cy dY dY dY dY dY dY d  dYYY dY dY dY dY dY d Cy dY dY dY dY dY dY d Cy dY"Y1Y#Y*Y$ dY% dY& dY' dY( dY) d dY+ dY, dY- dY. dY/ dY0 d CN dY2 dY3 dY4 dY5 dY6 dY7 dY8 d Cy dY:YYY;YJY<YCY= dY> dY? dY@ dYA dYB d  dYD dYE dYF dYG dYH dYI d Cy dYKYRYL dYM dYN dYO dYP dYQ d  dYS dYT dYU dYV dYW dYX d P dYZYiY[YbY\ dY] dY^ dY_ dY` dYa d P dYc dYd dYe dYf dYg dYh d Cy dYjYqYk dYl dYm dYn dYo dYp d  dYr dYs dYt dYu dYv dYw d Cy dYyYYzYY{YY|YY} dY~ dY dY dY dY d  dY dY dY dY dY dY d t dYYY dY dY dY dY dY d t dY dY dY dY dY dY d <u dYY dYY dY dY dY dY dY d  d dYY dY dY dY dY dY d Cy dYYYYYYY dY dY dY dY dY d dY dY dY dY dY dY d Cy dYYY dY dY dY dY dY d = dY dY dY dY dY dY d Cy dYYYYY dY dY dY dY dY d Cy dY dY dY dY dY dY d = dYYY dY dY dY dY dY d Cy dY dY dY dY dY dY d  dYwQYi/YaY]Y[YZYZnYZ/YZYZYYY dY dY dY dY dY d ~ dY dY dY dY dZ� dZ d dZZ Z dZ dZ dZ dZ dZ d P dZ dZ dZ dZ dZ dZ d dZZ ZZZ dZ dZ dZ dZ d  dZ dZ dZ dZ dZ dZ d Cy dZ!Z(Z" dZ# dZ$ dZ% dZ& dZ' d = dZ) dZ* dZ+ dZ, dZ- dZ. d Cy dZ0ZOZ1Z@Z2Z9Z3 dZ4 dZ5 dZ6 dZ7 dZ8 d Cy dZ: dZ; dZ< dZ= dZ> dZ? d Cy dZAZHZB dZC dZD dZE dZF dZG d Cy dZI dZJ dZK dZL dZM dZN d Cy dZPZ_ZQZXZR dZS dZT dZU dZV dZW d Cy dZY dZZ dZ[ dZ\ dZ] dZ^ d Cy dZ`ZgZa dZb dZc dZd dZe dZf d P dZh dZi dZj dZk dZl dZm d Cy dZoZZpZZqZZrZyZs dZt dZu dZv dZw dZx d = dZz dZ{ dZ| dZ} dZ~ dZ d dZZZ dZ dZ dZ dZ dZ d Cy dZ dZ dZ dZ dZ dZ d CN dZZZZZ dZ dZ dZ dZ dZ d I7 dZ dZ dZ dZ dZ dZ d CN dZZZ dZ dZ dZ dZ dZ d Cy dZ dZ dZ dZ dZ dZ d Cy dZZZZZZZ dZ dZ dZ dZ dZ d  dZ dZ dZ dZ dZ dZ d Cy dZZZ dZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ dZ d dZZZZZ dZ dZ dZ dZ dZ d Cy dZ dZ dZ dZ dZ dZ d C] dZZZ dZ dZ dZ dZ dZ d Cy dZ dZ dZ dZ dZ dZ d Cy dZ[fZ['Z[Z[�ZZZ dZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ dZ d d[[[ d[ d[ d[ d[ d[ d Cy d[ d[ d[ d[ d[ d[ d <u d[[ d[[ d[ d[ d[ d[ d[ d d[[ [ d[ d[ d[ d[ d[ d <u d[! d[" d[# d[$ d[% d[& d CN d[([G[)[8[*[1[+ d[, d[- d[. d[/ d[0 d = d[2 d[3 d[4 d[5 d[6 d[7 d CN d[9[@[: d[; d[< d[= d[> d[? d d[A d[B d[C d[D d[E d[F d  d[H[W[I[P[J d[K d[L d[M d[N d[O d  d[Q d[R d[S d[T d[U d[V d  d[X[_[Y d[Z d[[ d[\ d[] d[^ d  d[` d[a d[b d[c d[d d[e d d[g[[h[[i[x[j[q[k d[l d[m d[n d[o d[p d  d[r d[s d[t d[u d[v d[w d d[y d[z d[{ d[| d[} d[~ d[ d Cy d[[[[[ d[ d[ d[ d[ d[ d = d[ d[ d[ d[ d[ d[ d d[[[ d[ d[ d[ d[ d[ d d d[ d[ d[ d[ d[ d[ d <u d[[[[[[[ d[ d[ d[ d[ d[ d = d[ d[ d[ d[ d[ d[ d = d[[[ d[ d[ d[ d[ d[ d d[ d[ d[ d[ d[ d[ d d[[[[[ d[ d[ d[ d[ d[ d  d[ d[ d[ d[ d[ d[ d  d[[[ d[ d[ d[ d[ d[ d Cy d[ d[ d[ d[ d[ d[ d d[\[\_[\ [\[[[[[ d[ d[ d[ d[ d[ d t d[ d[ d[ d[ d[ d[ d Cy d[[[ d[ d[ d[ d[ d[ d CN d[ d[ d[ d[ d[ d\� d Cy d\\\\ \ d\ d\ d\ d\ d\ d  d\ d\ d\ d\ d\ d\ d  d\\\ d\ d\ d\ d\ d\ d Cy d\ d\ d\ d\ d\ d\ d Cy d\!\@\"\1\#\*\$ d\% d\& d\' d\( d\) d = d\+ d\, d\- d\. d\/ d\0 d Cy d\2\9\3 d\4 d\5 d\6 d\7 d\8 d Cy d\: d\; d\< d\= d\> d\? d = d\A\P\B\I\C d\D d\E d\F d\G d\H d d\J d\K d\L d\M d\N d\O d Cy d\Q\X\R d\S d\T d\U d\V d\W d Cy d\Y d\Z d\[ d\\ d\] d\^ d d\`\\a\\b\q\c\j\d d\e d\f d\g d\h d\i d d\k d\l d\m d\n d\o d\p d = d\r\y\s d\t d\u d\v d\w d\x d P d\z d\{ d\| d\} d\~ d\ d = d\\\\\ d\ d\ d\ d\ d\ d  d\ d\ d\ d\ d\ d\ d Cy d\\\ d\ d\ d\ d\ d\ d P d\ d\ d\ d\ d\ d\ d CN d\\\\\\\ d\ d\ d\ d\ d\ d  d\ d\ d\ d\ d\ d\ d = d\\\ d\ d\ d\ d\ d\ d P d\ d\ d\ d\ d\ d\ d Cy d\\\\\ d\ d\ d\ d\ d\ d CN d\ d\ d\ d\ d\ d\ d d\\\ d\ d\ d\ d\ d\ d d\ d\ d\ d\ d\ d\ d Cy d\]P\]\]�\\\\\ d\ d\ d\ d\ d\ d t d\ d\ d\ d\ d\ d\ d Cy d\\\ d\ d\ d\ d\ d\ d CN d\ d\ d\ d\ d\ d\ d ~ d]]]] ] d] d] d] d] d] d = d] d] d] d] d] d] d d d]] d] d] d] d] d] d CN d]]1]]" d]] d] d] d] d] d]! d i d]#]*]$ d]% d]& d]' d]( d]) d  d]+ d], d]- d]. d]/ d]0 d d]2]A]3]:]4 d]5 d]6 d]7 d]8 d]9 d = d]; d]< d]= d]> d]? d]@ d Cy d]B]I]C d]D d]E d]F d]G d]H d d]J d]K d]L d]M d]N d]O d = d]Q]]R]q]S]b]T][]U d]V d]W d]X d]Y d]Z d CN d]\ d]] d]^ d]_ d]` d]a d = d]c]j]d d]e d]f d]g d]h d]i d  d]k d]l d]m d]n d]o d]p d Cy d]r]]s]z]t d]u d]v d]w d]x d]y d = d]{ d]| d]} d]~ d] d] d ~ d]]] d] d] d] d] d] d Cy d] d] d] d] d] d] d  d]]]]]]] d] d] d] d] d] d CN d] d] d] d] d] d] d d]]] d] d] d] d] d] d Cy d] d] d] d] d] d] d d]]] d] d] d] d] d] d] d = d]]] d] d] d] d] d] d Cy d] d] d] d] d] d] d CN d]_]^]^?]^�]]]]]]] d] d d] d] d] d] d] d] d = d]]] d] d] d] d] d] d C] d] d] d] d] d] d] d CN d]] d]] d] d] d] d] d] d d]]] d] d] d] d] d] d <u d] d] d] d] d] d] d C] d^^ ^^^^ ^ d^ d^ d^ d^ d^ d Cy d^ d^ d^ d^ d^ d^ d t d^^^ d^ d^ d^ d^ d^ d  d^ d^ d^ d^ d^ d^ d = d^!^0^"^)^# d^$ d^% d^& d^' d^( d  d^* d^+ d^, d^- d^. d^/ d d^1^8^2 d^3 d^4 d^5 d^6 d^7 d  d^9 d^: d^; d^< d^= d^> d d^@^q^A^Y^B^J d^C^D d^E d^F d^G d^H d^I d CN d^K^R^L d^M d^N d^O d^P d^Q d Cy d^S d^T d^U d^V d^W d^X d Cy d^Z^b d^[^\ d^] d^^ d^_ d^` d^a d Cy d^c^j^d d^e d^f d^g d^h d^i d Cy d^k d^l d^m d^n d^o d^p d d^r^^s^{^t d^u d^v d^w d^x d^y d^z d ~ d^|^^} d^~ d^ d^ d^ d^ d I7 d^ d^ d^ d^ d^ d^ d d^^^^^ d^ d^ d^ d^ d^ d = d^ d^ d^ d^ d^ d^ d d^^^ d^ d^ d^ d^ d^ d <u d^ d^ d^ d^ d^ d^ d C] d^_)^^^^^^^^^ d^ d^ d^ d^ d^ d Cy d^ d^ d^ d^ d^ d^ d = d^^^ d^ d^ d^ d^ d^ d  d^ d^ d^ d^ d^ d^ d d^^^^^ d^ d^ d^ d^ d^ d = d^ d^ d^ d^ d^ d^ d CN d^^^ d^ d^ d^ d^ d^ d <u d^ d^ d^ d^ d^ d^ d CN d^_ ^^^^^ d^ d^ d^ d^ d^ d Cy d^ d^ d^ d^ d^ d^ d  d^_^ d^ d^ d_� d_ d_ d Cy d_ d_ d_ d_ d_ d_ d Cy d_ __ __ d_ d_ d_ d_ d_ d = d_ d_ d_ d_ d_ d_ d Cy d__"_ d_ d_ d_ d_ d_! d Cy d_# d_$ d_% d_& d_' d_( d = d_*_i_+_J_,_;_-_4_. d_/ d_0 d_1 d_2 d_3 d = d_5 d_6 d_7 d_8 d_9 d_: d CN d_<_C_= d_> d_? d_@ d_A d_B d d_D d_E d_F d_G d_H d_I d CN d_K_Z_L_S_M d_N d_O d_P d_Q d_R d <u d_T d_U d_V d_W d_X d_Y d  d_[_b_\ d_] d_^ d__ d_` d_a d I d_c d_d d_e d_f d_g d_h d CN d_j__k_z_l_s_m d_n d_o d_p d_q d_r d  d_t d_u d_v d_w d_x d_y d  d_{__| d_} d_~ d_ d_ d_ d Cy d_ d_ d_ d_ d_ d_ d Cy d_____ d_ d_ d_ d_ d_ d = d_ d_ d_ d_ d_ d_ d Cy d___ d_ d_ d_ d_ d  d_ d_ d_ d_ d_ d_ d Cy d_`_`'_________ d_ d_ d_ d_ d_ d ~ d_ d_ d_ d_ d_ d_ d = d___ d_ d_ d_ d_ d_ d CN d_ d_ d_ d_ d_ d_ d  d_____ d_ d_ d_ d_ d_ d C] d_ d_ d_ d_ d_ d_ d P d___ d_ d_ d_ d_ d d_ d_ d_ d_ d_ d_ d ~ d_`_____ d_ d_ d_ d_ d_ d d d_ d_ d_ d_ d_ d_ d ~ d_`_ d_ d_ d_ d_ d`� d = d` d` d` d` d` d` d C] d` `` `` d` d` d` d` d` d d` d` d` d` d` d` d d`` ` d` d` d` d` d` d  d`! d`" d`# d`$ d`% d`& d I7 d`(`_`)`@`*`9`+`2`, d`- d`. d`/ d`0 d`1 d d`3 d`4 d`5 d`6 d`7 d`8 d CN d d`:`; d`< d`= d`> d`? d = d`A`P`B`I`C d`D d`E d`F d`G d`H d = d`J d`K d`L d`M d`N d`O d t d`Q`X`R d`S d`T d`U d`V d`W d d`Y d`Z d`[ d`\ d`] d`^ d Cy d````a`p`b`i`c d`d d`e d`f d`g d`h d Cy d`j d`k d`l d`m d`n d`o d Cy d`q`x`r d`s d`t d`u d`v d`w d Cy d`y d`z d`{ d`| d`} d`~ d Cy d````` d` d` d` d` d` d = d` d` d` d` d` d` d Cy d``` d` d` d` d` d` d = d` d` d` d` d` d` d Cy d`a````````` d` d` d` d` d` d d` d` d` d` d` d` d Cy d``` d` d` d` d` d` d Cy d` d` d` d` d` d` d Cy d````` d` d` d` d` d` d d` d` d` d` d` d` d Cy d d`` d` d` d` d` d` d Cy d````` d` d` d` d` d` d` d  d d`` d` d` d` d` d` d P d````` d` d` d` d` d` d d` d` d` d` d` d` d Cy d`a�` d` d` d` d  da da da da da da d Cy daa@a a!a a da a da da da da da d Cy daaa da da da da da d C] da da da da da da d Cy da"a1a#a*a$ da% da& da' da( da) d da+ da, da- da. da/ da0 d Cy da2a9a3 da4 da5 da6 da7 da8 d  da: da; da< da= da> da? d Cy daAa`aBaQaCaJaD daE daF daG daH daI d = daK daL daM daN daO daP d Cy daRaYaS daT daU daV daW daX d daZ da[ da\ da] da^ da_ d Cy daaapabaiac dad dae daf dag dah d daj dak dal dam dan dao d Cy daqaxar das dat dau dav daw d Cy day daz da{ da| da} da~ d Cy daeMacdabsabaaaaaaaaa da da da da da d ~ da da da da da da d Cy daaa da da da da da d Cy da da da da da da d Cy daaaaa da da da da da d da da da da da da d I7 daaa da da da da da d CN da da da da da da d Cy daaaaaaa da da da da da d  da da da da da da d Cy daaa da da da da da d = da da da da da da d Cy daaaaa da da da da da d = da da da da da da d Cy daaa da da da da da d Cy da da da da db� db d Cy dbb4bbbb dbb db db db db db d Cy d dbb db db db db db d Cy dbb%bbb db db db db db d db db db! db" db# db$ d Cy db&b-b' db( db) db* db+ db, d Cy db. db/ db0 db1 db2 db3 d Cy db5bTb6bEb7b>b8 db9 db: db; db< db= d db? db@ dbA dbB dbC dbD d Cy dbFbMbG dbH dbI dbJ dbK dbL d Cy dbN dbO dbP dbQ dbR dbS d CN dbUbdbVb]bW dbX dbY dbZ db[ db\ d <u db^ db_ db` dba dbb dbc d = dbeblbf dbg dbh dbi dbj dbk d Cy dbm dbn dbo dbp dbq dbr d CN dbtbbubbvbbwbbxbby dbz db{ db| db} db~ d db db db db db db d CN dbbb db db db db db d Cy db db db db db db d P dbbbbb db db db db db d <u db db db db db db d Cy dbbb db db db db db d  db db db db db db d P dbbbb dbb db db db db db d P dbbb db db db db db d P db db db db db db d P dbbbbb db db db db db d = db db db db db db d Cy dbbb db db db db db d P db db db db db db d  dbc,bc bbbbb db db db db db d Cy db db db db db db d C] dbcc� dc dc dc dc dc d Cy dc dc dc dc dc dc d iX dccccc dc dc dc dc dc d = dc dc dc dc dc dc d Cy dcc%c dc dc! dc" dc# dc$ d  dc& dc' dc( dc) dc* dc+ d Cy dc-cEc.c6 dc/c0 dc1 dc2 dc3 dc4 dc5 d Cy dc7c>c8 dc9 dc: dc; dc< dc= d dc? dc@ dcA dcB dcC dcD d Cy dcFcUcGcNcH dcI dcJ dcK dcL dcM d = dcO dcP dcQ dcR dcS dcT d Cy dcVc]cW dcX dcY dcZ dc[ dc\ d  dc^ dc_ dc` dca dcb dcc d Cy dced]cfccgcchccicxcjcqck dcl dcm dcn dco dcp d <u dcr dcs dct dcu dcv dcw d Cy dcyccz dc{ dc| dc} dc~ dc d Cy dc dc dc dc dc dc d Cy dccccc dc dc dc dc dc d = dc dc dc dc dc dc d Cy dccc dc dc dc dc dc d  dc dc dc dc dc dc d Cy dccccccc dc dc dc dc dc d = dc dc dc dc dc dc d ~ dccc dc dc dc dc dc d = dc dc dc dc dc dc d CN dccccc dc dc dc dc dc d = dc dc dc dc dc dc d dccc dc dc dc dc dc d  dc dc dc dc dc dc d  dcdccccc dc dc dc dc dc dc d Cy dccc dc dc dc dc dc d Cy dc dc dc dc dc dc d dd�dddd dd dd dd dd dd d C] dd dd dd dd dd dd d Cy dddd dd dd dd dd dd d  dd dd dd dd dd dd d CN ddd>d d/d!d(d" dd# dd$ dd% dd& dd' d = dd) dd* dd+ dd, dd- dd. d Cy dd0d7d1 dd2 dd3 dd4 dd5 dd6 d Cy dd8 dd9 dd: dd; dd< dd= d Cy dd?dNd@dGdA ddB ddC ddD ddE ddF d = ddH ddI ddJ ddK ddL ddM d = ddOdVdP ddQ ddR ddS ddT ddU d  ddW ddX ddY ddZ dd[ dd\ d  dd^dd_dd`ddadpdbdidc ddd dde ddf ddg ddh d  ddj ddk ddl ddm ddn ddo d CN ddqdxdr dds ddt ddu ddv ddw d Cy ddy ddz dd{ dd| dd} dd~ d dddddd dd dd dd dd dd d Cy dd dd dd dd dd dd d Cy dddd dd dd dd dd dd d Cy dd dd dd dd dd dd d <u dddddddd dd dd dd dd dd d dd dd dd dd dd dd d dddd dd dd dd dd dd d Cy dd dd dd dd dd dd d CN dddddd dd dd dd dd dd d = dd dd dd dd dd dd d = d ddd dd dd dd dd dd d Cy ddedddd ddd dd dd dd dd dd d t dddd dd dd dd dd dd d d dd dd dd dd dd dd d CN dddddd dd dd dd dd d dd dd dd dd dd dd d  de�ee de de de de de d t de de de de de de d  dee.eeeee de de de de de d  de de de de de de d P de e'e! de" de# de$ de% de& d Cy de( de) de* de+ de, de- d  de/e>e0e7e1 de2 de3 de4 de5 de6 d de8 de9 de: de; de< de= d CN de?eFe@ deA deB deC deD deE d Cy deG deH deI deJ deK deL d = deNg7eOfGePeeQeeReqeSebeTe[eU deV deW deX deY deZ d Cy de\ de] de^ de_ de` dea d CN decejed dee def deg deh dei d Cy dek del dem den deo dep d dereesezet deu dev dew dex dey d  de{ de| de} de~ de de d Cy deee de de de de de d Cy de de de de de de d Cy deeeeeee de de de de de d P de de de de de de d Cy deee de de de de de d = de de de de de de d deeeee de de de de de d  de de de de de de d  deee de de de de de d Cy de de de de de de d defeeeeeee de de de de de d de de de de de de d Cy d dee de de de de de d = deeeee de de de de de d I7 de de de de de de d Cy defe de de de de df� d  df df df df df df d df f(f ff ff df df df df df d  df df df df df df d = dff!f df df df df df d Cy df" df# df$ df% df& df' d Cy df)f8f*f1f+ df, df- df. df/ df0 d = df2 df3 df4 df5 df6 df7 d CN df9f@f: df; df< df= df> df? d dfA dfB dfC dfD dfE dfF d Cy dfHffIffJfhfKfYfLfSfM dfN dfO dfP dfQ dfR d  dfT dfU dfV dfW dfX d <u dfZfaf[ df\ df] df^ df_ df` d  dfb dfc dfd dfe dff dfg d I7 dfifxfjfqfk dfl dfm dfn dfo dfp d P dfr dfs dft dfu dfv dfw d dfyffz df{ df| df} df~ df d P df df df df df df d  dffff dff df df df df df d CN dfff df df df df df d P df df df df df df d CN dfffff df df df df df d P df df df df df df d  dfff df df df df df d Cy df df df df df df d  dfffffffff df df df df df d P df df df df df df d P dfff df df df df df d  df df df df df df d CN dfffff df df df df df d P df df df df df df d Cy dfff df df df df df d  df df df df df df d Cy dg�ggg dgg dg dg dg dg dg d P dg gg dg dg dg dg dg d dg dg dg dg dg dg d dgg(gg!g dg dg dg dg dg d = dg" dg# dg$ dg% dg& dg' d dg)g0g* dg+ dg, dg- dg. dg/ d Cy dg1 dg2 dg3 dg4 dg5 dg6 d Cy dg8h0g9gg:gyg;gZg<gKg=gDg> dg? dg@ dgA dgB dgC d  dgE dgF dgG dgH dgI dgJ d CN dgLgSgM dgN dgO dgP dgQ dgR d = dgT dgU dgV dgW dgX dgY d P dg[gjg\gcg] dg^ dg_ dg` dga dgb d dgd dge dgf dgg dgh dgi d P dgkgrgl dgm dgn dgo dgp dgq d Cy dgs dgt dgu dgv dgw dgx d P dgzgg{gg|gg} dg~ dg dg dg dg d = dg dg dg dg dg dg d I7 dggg dg dg dg dg dg d Cy dg dg dg dg dg dg d = dggggg dg dg dg dg dg d = dg dg dg dg dg dg d = dggg dg dg dg dg dg d dg dg dg dg dg dg d ~ dgggggg dgg dg dg dg dg dg d Cy dggg dg dg dg dg dg d dg dg dg dg dg dg d Cy dggggg dg dg dg dg dg d = dg dg dg dg dg dg d Cy dggg dg dg dg dg dg d Cy dg dg dg dg dg dg d t dghghggg dg dg dg dg dg d = dg dg dg dg dh� dh d Cy dhh h dh dh dh dh dh d Cy dh dh dh dh dh dh d CN dhh!hhh dh dh dh dh dh d dh dh dh dh dh dh d = dh"h)h# dh$ dh% dh& dh' dh( d CN dh* dh+ dh, dh- dh. dh/ d  dh1hh2hqh3hRh4hCh5h<h6 dh7 dh8 dh9 dh: dh; d  dh= dh> dh? dh@ dhA dhB d t dhDhKhE dhF dhG dhH dhI dhJ d Cy dhL dhM dhN dhO dhP dhQ d CN dhShbhTh[hU dhV dhW dhX dhY dhZ d = dh\ dh] dh^ dh_ dh` dha d CN dhchjhd dhe dhf dhg dhh dhi d Cy dhk dhl dhm dhn dho dhp d <u dhrhhshhth{hu dhv dhw dhx dhy dhz d CN dh| dh} dh~ dh dh dh d CN dhhh dh dh dh dh dh d = dh dh dh dh dh dh d = dhhhhh dh dh dh dh dh d = dh dh dh dh dh dh d  dhhh dh dh dh dh dh d Cy dh dh dh dh dh dh d  dhhhhhhhhh dh dh dh dh dh d = dh dh dh dh dh dh d CN dhhh dh dh dh dh dh d Cy dh dh dh dh dh dh d Cy dhhhhh dh dh dh dh dh d = dh dh dh dh dh dh d Cy dhhh dh dh dh dh dh d Cy dh dh dh dh dh dh d  dhihihhh dh dh dh dh dh d <u dh dh dh dh dh di� d Cy dii i di di di di di d CN di di di di di di d Cy dii iii di di di di di d = di di di di di di d Cy di!i(i" di# di$ di% di& di' d = di) di* di+ di, di- di. d CN di0pi1li2ji3ji4ii5imi6iUi7iFi8i?i9 di: di; di< di= di> d = di@ diA diB diC diD diE d Cy diGiNiH diI diJ diK diL diM d  diO diP diQ diR diS diT d CN diVieiWi^iX diY diZ di[ di\ di] d Cy di_ di` dia dib dic did d C] d difig dih dii dij dik dil d Cy diniioiwip diq dir dis dit diu div d dixiiy diz di{ di| di} di~ d Cy di di di di di di d  diiiii di di di di di d Cy di di di di di di d  diii di di di di di d <u di di di di di di d Cy diiiiiiiii di di di di di d di di di di di di d  d dii di di di di di d P dii dii di di di di di d Cy diii di di di di di d  di di di di di di d Cy diiiiiii di di di di di d <u di di di di di di d Cy diii di di di di di d  di di di di di di d Cy dijij�i di di di di di d = dj dj dj dj dj dj d I7 djjj dj dj dj dj dj d Cy dj dj dj dj dj dj d CN djjjjWjj8jj)jj"j dj dj dj dj dj! d <u dj# dj$ dj% dj& dj' dj( d I7 dj*j1j+ dj, dj- dj. dj/ dj0 d Cy dj2 dj3 dj4 dj5 dj6 dj7 d  dj9jHj:jAj; dj< dj= dj> dj? dj@ d = djB djC djD djE djF djG d Cy djIjPjJ djK djL djM djN djO d = djQ djR djS djT djU djV d Cy djXjpjYjhjZjaj[ dj\ dj] dj^ dj_ dj` d  djb djc djd dje djf djg d Cy d djijj djk djl djm djn djo d Cy djqjjrjyjs djt dju djv djw djx d djz dj{ dj| dj} dj~ dj d = djjj dj dj dj dj dj d  dj dj dj dj dj dj d Cy djjjjjj djj dj dj dj dj dj d Cy djjj dj dj dj dj dj d Cy dj dj dj dj dj dj d CN djjjjj dj dj dj dj dj d Cy dj dj dj dj dj dj d Cy d djj dj dj dj dj dj d Cy djjjjjjj dj dj dj dj dj d Cy dj dj dj dj dj dj d = djjj dj dj dj dj dj d Cy dj dj dj dj dj dj d = djj djj dj dj dj dj dj d  d djj dj dj dj dj dj d  djkjksjk4jkjkjjj dj dj dj dj dj d <u dk� dk dk dk dk dk d dkkk dk dk dk dk dk d  dk dk dk dk dk dk d  dkk%kkk dk dk dk dk dk d = dk dk dk! dk" dk# dk$ d C] dk&k-k' dk( dk) dk* dk+ dk, d dk. dk/ dk0 dk1 dk2 dk3 d  dk5kTk6kEk7k>k8 dk9 dk: dk; dk< dk= d <u dk? dk@ dkA dkB dkC dkD d  dkFkMkG dkH dkI dkJ dkK dkL d Cy dkN dkO dkP dkQ dkR dkS d = dkUkdkVk]kW dkX dkY dkZ dk[ dk\ d Cy dk^ dk_ dk` dka dkb dkc d  dkeklkf dkg dkh dki dkj dkk d Cy dkm dkn dko dkp dkq dkr d  dktkkukkvkkwk~kx dky dkz dk{ dk| dk} d  dk dk dk dk dk dk d dkkk dk dk dk dk dk d Cy dk dk dk dk dk dk d  dkk dkk dk dk dk dk d ~ dkkk dk dk dk dk dk d = dk dk dk dk dk dk d C] dkkkkkkk dk dk dk dk dk d dk dk dk dk dk dk d CN dkkk dk dk dk dk dk d = dk dk dk dk dk dk d dkkkkk dk dk dk dk dk d <u dk dk dk dk dk dk d C] dkkk dk dk dk dk dk d CN dk dk dk dk dk dk d  dkljkl+kl kkkkk dk dk dk dk dk d = dk dk dk dk dk dk d P dklk dl� dl dl dl dl d I7 dl dl dl dl dl dl d P dl llll dl dl dl dl dl d Cy dl dl dl dl dl dl d dll$l dl dl dl! dl" dl# d Cy dl% dl& dl' dl( dl) dl* d dl,lKl-l<l.l5l/ dl0 dl1 dl2 dl3 dl4 d Cy dl6 dl7 dl8 dl9 dl: dl; d  dl=lDl> dl? dl@ dlA dlB dlC d = dlE dlF dlG dlH dlI dlJ d  dlLl[lMlTlN dlO dlP dlQ dlR dlS d Cy dlU dlV dlW dlX dlY dlZ d = dl\lcl] dl^ dl_ dl` dla dlb d Cy dld dle dlf dlg dlh dli d = dlklllllml|lnlulo dlp dlq dlr dls dlt d  dlv dlw dlx dly dlz dl{ d  dl}ll~ dl dl dl dl dl d Cy dl dl dl dl dl dl d <u dlllll dl dl dl dl dl d Cy dl dl dl dl dl dl d CN dlll dl dl dl dl dl d  dl dl dl dl dl dl d  dlllllll dl dl dl dl dl d = dl dl dl dl dl dl d = dlll dl dl dl dl dl d  dl dl dl dl dl dl d Cy dlllll dl dl dl dl dl d Cy dl dl dl dl dl dl d Cy dlll dl dl dl dl dl d = dl dl dl dl dl dl d Cy dlnlmlmklm,lm lllll dl dl dl dl dl d Cy dl dl dl dl dl dl d  dlmm� dm dm dm dm dm d š dm dm dm dm dm dm d = dmmmmm dm dm dm dm dm d Cy dm dm dm dm dm dm d  dmm%m dm dm! dm" dm# dm$ d I7 dm& dm' dm( dm) dm* dm+ d  dm-mLm.m=m/m6m0 dm1 dm2 dm3 dm4 dm5 d dm7 dm8 dm9 dm: dm; dm< d  dm>mEm? dm@ dmA dmB dmC dmD d t dmF dmG dmH dmI dmJ dmK d  dmMm\mNmUmO dmP dmQ dmR dmS dmT d dmV dmW dmX dmY dmZ dm[ d CN dm]mdm^ dm_ dm` dma dmb dmc d  dme dmf dmg dmh dmi dmj d = dmlmmmmmnmv dmomp dmq dmr dms dmt dmu d = dmwm~mx dmy dmz dm{ dm| dm} d P dm dm dm dm dm dm d  dmmmmm dm dm dm dm dm d P dm dm dm dm dm dm d = dmmm dm dm dm dm dm d P dm dm dm dm dm dm d CN dmmmmmmm dm dm dm dm d  dm dm dm dm dm dm d = dmmm dm dm dm dm dm d Cy dm dm dm dm dm dm d I7 dmmmmm dm dm dm dm dm d ~ dm dm dm dm dm dm d  dmmm dm dm dm dm dm d Cy dm dm dm dm dm dm d CN dmnTmnmmmm dmm dm dm dm dm dm d Cy dmmm dm dm dm dm dm d dm dm dm dm dm dm d Cy dmn mnn� dn dn dn dn dn d dn dn dn dn dn dn d Cy dnnn dn dn dn dn dn d = dn dn dn dn dn dn d Cy dnn5nn& dnn dn! dn" dn# dn$ dn% d CN dn'n.n( dn) dn* dn+ dn, dn- d Cy dn/ dn0 dn1 dn2 dn3 dn4 d  dn6nEn7n>n8 dn9 dn: dn; dn< dn= d  dn? dn@ dnA dnB dnC dnD d  dnFnMnG dnH dnI dnJ dnK dnL d I dnN dnO dnP dnQ dnR dnS d dnUnnVnunWnfnXn_nY dnZ dn[ dn\ dn] dn^ d = dn` dna dnb dnc dnd dne d Cy dngnnnh dni dnj dnk dnl dnm d  dno dnp dnq dnr dns dnt d Cy dnvnnwn~nx dny dnz dn{ dn| dn} d Cy dn dn dn dn dn dn d CN dnnn dn dn dn dn dn d Cy dn dn dn dn dn dn d CN dnnnn dnn dn dn dn dn dn d Cy dnnn dn dn dn dn dn d <u dn dn dn dn dn dn d ~ dnnnnn dn dn dn dn dn d  dn dn dn dn dn dn d <u dnnn dn dn dn dn dn d Cy dn dn dn dn dn dn d dnonoFnonnnnnnn dn dn dn dn dn d <u dn dn dn dn dn dn d  dnnn dn dn dn dn dn d Cy dn dn dn dn dn dn d Cy dnnnnn dn dn dn dn dn d Cy dn dn dn dn dn dn d Cy d do�o do do do do do d I7 doo'o oo oo do do do do do d do do do do do do d  doo o do do do do do d = do! do" do# do$ do% do& d CN do(o7o)o0o* do+ do, do- do. do/ d CN do1 do2 do3 do4 do5 do6 d Cy do8o?o9 do: do; do< do= do> d  do@ doA doB doC doD doE d CN doGooHogoIoXoJoQoK doL doM doN doO doP d  doR doS doT doU doV doW d  doYo`oZ do[ do\ do] do^ do_ d doa dob doc dod doe dof d = dohowoiopoj dok dol dom don doo d I doq dor dos dot dou dov d Cy doxooy doz do{ do| do} do~ d = do do do do do do d  dooooooo do do do do do d  do do do do do do d  dooo do do do do do d = do do do do do do d CN doo doo do do do do do d CN dooo do do do do do d = do do do do do do d ~ dop7ooooooooo do do do do do d Cy do do do do do do d CN d doo do do do do do d P dooooo do do do do do d CN do do do do do do d C] dooo do do do do do d do do do do do do d CN dopop opo do do do dp� dp d Cy dp dp dp dp dp dp d  dp pp dp dp dp dp dp d = dp dp dp dp dp dp d P dpp(pp!p dp dp dp dp dp d Cy dp" dp# dp$ dp% dp& dp' d P dp)p0p* dp+ dp, dp- dp. dp/ d = dp1 dp2 dp3 dp4 dp5 dp6 d  dp8pwp9pXp:pIp;pBp< dp= dp> dp? dp@ dpA d dpC dpD dpE dpF dpG dpH d dpJpQpK dpL dpM dpN dpO dpP d = dpR dpS dpT dpU dpV dpW d dpYphpZpap[ dp\ dp] dp^ dp_ dp` d dpb dpc dpd dpe dpf dpg d  dpipppj dpk dpl dpm dpn dpo d Cy dpq dpr dps dpt dpu dpv d  dpxppyppzpp{ dp| dp} dp~ dp dp d  dp dp dp dp dp dp d  d dpp dp dp dp dp dp d  dppppp dp dp dp dp dp d CN dp dp dp dp dp dp d dppp dp dp dp dp dp d = dp dp dp dp dp dp d CN dptSprpqpq+ppppppppp dp dp dp dp dp d dp dp dp dp dp dp d CN d dpp dp dp dp dp dp d CN dppppp dp dp dp dp dp d = dp dp dp dp dp dp d CN dppp dp dp dp dp dp d dp dp dp dp dp dp d dpq ppppp dp dp dp dp dp d dp dp dp dp dp dp d dpqp dq� dq dq dq dq d Cy dq dq dq dq dq dq d dq qqqq dq dq dq dq dq d = dq dq dq dq dq dq d  dqq$q dq dq dq! dq" dq# d Cy dq% dq& dq' dq( dq) dq* d  dq,qdq-qEq.q6 dq/q0 dq1 dq2 dq3 dq4 dq5 d  dq7q>q8 dq9 dq: dq; dq< dq= d Cy dq? dq@ dqA dqB dqC dqD d  dqFqUqGqNqH dqI dqJ dqK dqL dqM d P dqO dqP dqQ dqR dqS dqT d Cy dqVq]qW dqX dqY dqZ dq[ dq\ d dq^ dq_ dq` dqa dqb dqc d CN dqeq}qfquqgqnqh dqi dqj dqk dql dqm d = dqo dqp dqq dqr dqs dqt d  d dqvqw dqx dqy dqz dq{ dq| d  dq~qqqq dq dq dq dq dq d  dq dq dq dq dq dq d CN dqqq dq dq dq dq dq d dq dq dq dq dq dq d dqrqqqqqqqqq dq dq dq dq dq d  dq dq dq dq dq dq d  dqqq dq dq dq dq dq d CN dq dq dq dq dq dq d dqqqqq dq dq dq dq dq d  dq dq dq dq dq dq d  dqqq dq dq dq dq dq d dq dq dq dq dq dq d dqqqq dqq dq dq dq dq dq d  dqqq dq dq dq dq dq d dq dq dq dq dq dq d dqrqqq dq dq dq dq dq d Cy dr� dr dr dr dr dr d = drrr dr dr dr dr dr d = dr dr dr dr dr dr d = drrNrr6rr'rr r dr dr dr dr dr d dr! dr" dr# dr$ dr% dr& d  dr(r/r) dr* dr+ dr, dr- dr. d  dr0 dr1 dr2 dr3 dr4 dr5 d P dr7rFr8r?r9 dr: dr; dr< dr= dr> d Cy dr@ drA drB drC drD drE d  d drGrH drI drJ drK drL drM d  drOrnrPr_rQrXrR drS drT drU drV drW d Cy drY drZ dr[ dr\ dr] dr^ d Cy dr`rgra drb drc drd dre drf d = drh dri drj drk drl drm d  dror~rprwrq drr drs drt dru drv d  drx dry drz dr{ dr| dr} d  d drr dr dr dr dr dr d Cy drsirs�rrrrrrrrr dr dr dr dr dr d Cy dr dr dr dr dr dr d t drrr dr dr dr dr dr d  dr dr dr dr dr dr d  drrrrr dr dr dr dr dr d  dr dr dr dr dr dr d  d drr dr dr dr dr dr d  drrrrrrr dr dr dr dr dr d  dr dr dr dr dr dr d <u drrr dr dr dr dr dr d ~ dr dr dr dr dr dr d = drrrrr dr dr dr dr dr d = dr dr dr dr dr dr d Cy drrr dr dr dr dr dr d = dr dr dr dr dr dr d ~ dss9ss!ssss s ds ds ds ds ds d  ds ds ds ds ds ds d = dsss ds ds ds ds ds d ds ds ds ds ds ds d š ds"s* ds#s$ ds% ds& ds' ds( ds) d  ds+s2s, ds- ds. ds/ ds0 ds1 d = ds3 ds4 ds5 ds6 ds7 ds8 d  ds:sRs;sC ds<s= ds> ds? ds@ dsA dsB d P dsDsKsE dsF dsG dsH dsI dsJ d CN dsL dsM dsN dsO dsP dsQ d  dsSs[ dsTsU dsV dsW dsX dsY dsZ d CN ds\scs] ds^ ds_ ds` dsa dsb d ~ dsd dse dsf dsg dsh d  dsjssksslssms|snsuso dsp dsq dsr dss dst d <u dsv dsw dsx dsy dsz ds{ d t ds}ss~ ds ds ds ds ds d Cy ds ds ds ds ds ds d  dsssss ds ds ds ds ds d = ds ds ds ds ds ds d  dsss ds ds ds ds ds d Cy ds ds ds ds ds ds d  dsssssss ds ds ds ds ds d Cy ds ds ds ds ds ds d = d dss ds ds ds ds ds d dsssss ds ds ds ds ds d <u ds ds ds ds ds ds d  dsss ds ds ds ds ds d P ds ds ds ds ds ds d Cy dststsssss ds ds ds ds ds d ds ds ds ds ds ds d t dsss ds ds ds ds ds d P ds ds ds dt� dt dt d = dtt dtt dt dt dt dt dt d  dt tt dt dt dt dt dt d P dt dt dt dt dt dt d CN dtt4tt% dtt dt dt! dt" dt# dt$ d CN dt&t-t' dt( dt) dt* dt+ dt, d CN dt. dt/ dt0 dt1 dt2 dt3 d CN dt5tDt6t=t7 dt8 dt9 dt: dt; dt< d P dt> dt? dt@ dtA dtB dtC d  dtEtLtF dtG dtH dtI dtJ dtK d Cy dtM dtN dtO dtP dtQ dtR d  dtTvtUu0tVttWttXtptYta dtZt[ dt\ dt] dt^ dt_ dt` d CN dtbtitc dtd dte dtf dtg dth d  dtj dtk dtl dtm dtn dto d CN dtqtytr dts dtt dtu dtv dtw dtx d P dtztt{ dt| dt} dt~ dt d = dt dt dt dt dt dt d  dttttttt dt dt dt dt dt d t dt dt dt dt dt dt d ~ dttt dt dt dt dt dt d  dt dt dt dt dt dt d <u dtt dtt dt dt dt dt dt d  dttt dt dt dt dt dt d <u dt dt dt dt dt dt d CN dttttttttt dt dt dt dt dt d = dt dt dt dt dt dt d CN dt dt dt dt dt dt dt d Cy dttttt dt dt dt dt dt d t dt dt dt dt dt dt d dttt dt dt dt dt dt d = dt dt dt dt dt dt d ~ dtutut dt dt dt dt du� du d = duu u du du du du du d Cy du du du du du du d P duu!uuu du du du du du d = du du du du du du d CN du"u)u# du$ du% du& du' du( d CN du* du+ du, du- du. du/ d du1uu2uqu3uRu4uCu5u<u6 du7 du8 du9 du: du; d Cy du= du> du? du@ duA duB d CN duDuKuE duF duG duH duI duJ d ~ duL duM duN duO duP duQ d  duSubuTu[uU duV duW duX duY duZ d Cy du\ du] du^ du_ du` dua d  ducujud due duf dug duh dui d  duk dul dum dun duo dup d  duruusu{ dutuu duv duw dux duy duz d = du|uu} du~ du du du du d = du du du du du du d = duuuuu du du du du du d = du du du du du du d duuu du du du du du d  du du du du du du d duuuuuuu du du du du du du d duuu du du du du du d = du du du du du du d duuuuu du du du du du d du du du du du du d = duuu du du du du du d = du du du du du du d = duuuu duu du du du du du d I7 duuu du du du du du d = du du du du du du d  duv uvu du dv� dv dv dv d  dv dv dv dv dv dv d  dv vv dv dv dv dv dv d I dv dv dv dv dv dv d I7 dvvvvvvUvv6vv.v v'v! dv" dv# dv$ dv% dv& d ~ dv( dv) dv* dv+ dv, dv- d P d dv/v0 dv1 dv2 dv3 dv4 dv5 d C] dv7vFv8v?v9 dv: dv; dv< dv= dv> d = dv@ dvA dvB dvC dvD dvE d Cy dvGvNvH dvI dvJ dvK dvL dvM d dvO dvP dvQ dvR dvS dvT d = dvVvnvWv_ dvXvY dvZ dv[ dv\ dv] dv^ d  dv`vgva dvb dvc dvd dve dvf d Cy dvh dvi dvj dvk dvl dvm d CN dvov~vpvwvq dvr dvs dvt dvu dvv d = dvx dvy dvz dv{ dv| dv} d  d dvv dv dv dv dv dv d Cy dvvvvvvvvv dv dv dv dv dv d dv dv dv dv dv dv d  dvvv dv dv dv dv dv d dv dv dv dv dv dv d ~ dvvv dv dv dv dv dv dv d = dv dv dv dv dv dv dv d Cy dvvvvv dv dv dv dv dv dv d Cy dv dv dv dv dv dv dv d Cy d dvv dv dv dv dv dv dv d Cy dvwvvvvvvv dv dv dv dv dv dv d Cy dv dv dv dv dv dv dv d Cy dv dv dv dv dv dv dv dv d Cy dvwvvv dv dv dv dv dv d = dv dv dv dv dv dv dw� d  dww w dw dw dw dw dw dw d dw dw dw dw dw dw dw d ~ dww.ww dww dw dw dw dw dw dw d = dww&w dw dw! dw" dw# dw$ dw% d I dw' dw( dw) dw* dw+ dw, dw- d <u dw/w@w0w8w1 dw2 dw3 dw4 dw5 dw6 dw7 d  dw9 dw: dw; dw< dw= dw> dw? d = dwAwIwB dwC dwD dwE dwF dwG dwH d Cy dwJ dwK dwL dwM dwN dwO dwP d  dwRwS{WwTy\wUxVwVwwWwwXwqwYwhwZw`w[ dw\ dw] dw^ dw_ d  dwa dwb dwc dwd dwe dwf dwg d dwi dwj dwk dwl dwm dwn dwo dwp d dwrwwsw{wt dwu dwv dww dwx dwy dwz d dw| dw} dw~ dw dw dw dw d = dwww dw dw dw dw dw dw d = dw dw dw dw dw dw dw d CN dwwwwwww dw dw d dw dw dw dw dw dw dw d Cy dwww dw dw dw dw dw dw d Cy dw dw dw dw dw dw dw d Cy dwwwww dw dw dw dw dw dw d t dw dw dw dw dw dw dw d dw dw dw dw dw dw dw dw d dwxwwww dww dw dw dw dw dw dw d = dwww dw dw dw dw dw dw d = dw dw dw dw dw dw dw d Cy dwwwww dw dw dw dw dw dw d = dw dw dw dw dw dw dw d  dwxx� dx dx dx dx dx dx d P dx dx dx dx dx dx dx d <u dxx3xx"xxx dx dx dx dx dx dx d Cy dx dx dx dx dx dx dx! d ~ dx#x+x$ dx% dx& dx' dx( dx) dx* d P dx, dx- dx. dx/ dx0 dx1 dx2 d = dx4xEx5x=x6 dx7 dx8 dx9 dx: dx; dx< d dx> dx? dx@ dxA dxB dxC dxD d Cy dxFxNxG dxH dxI dxJ dxK dxL dxM d P dxO dxP dxQ dxR dxS dxT dxU d Cy dxWxxXxxYx{xZxjx[xbx\ dx] dx^ dx_ dx` dxa d dxc dxd dxe dxf dxg dxh dxi d = dxkxsxl dxm dxn dxo dxp dxq dxr d P dxt dxu dxv dxw dxx dxy dxz d Cy dx|xx}xx~ dx dx dx dx dx dx d = dx dx dx dx dx dx dx d ~ d dxx dx dx dx dx dx dx d Cy dxxxxxxx dx dx dx dx dx dx d  dx dx dx dx dx dx dx d Cy dxxx dx dx dx dx dx dx d Cy dx dx dx dx dx dx dx d Cy dxxxxx dx dx dx dx dx dx d P dx dx dx dx dx dx dx d t dx dx dx dx dx dx dx dx d Cy dxyxxxxxxx dx dx dx dx dx dx d <u dx dx dx dx dx dx dx d t dx dx dx dx dx dx dx dx d Cy dxyxxx dx dx dx dx dx dx d P dx dx dx dy� dy dy dy d Cy dyy y dy dy dy dy dy dy d  dy dy dy dy dy dy dy d CN dyy9yy(yy y dy dy dy dy dy dy d <u dy! dy" dy# dy$ dy% dy& dy' d Cy dy)y1y* dy+ dy, dy- dy. dy/ dy0 d = dy2 dy3 dy4 dy5 dy6 dy7 dy8 d = dy:yKy;yCy< dy= dy> dy? dy@ dyA dyB d C] dyD dyE dyF dyG dyH dyI dyJ d dyLyTyM dyN dyO dyP dyQ dyR dyS d Cy dyU dyV dyW dyX dyY dyZ dy[ d Cy dy]zay^yy_yy`yyayqybyiyc dyd dye dyf dyg dyh d = dyj dyk dyl dym dyn dyo dyp d = dyryzys dyt dyu dyv dyw dyx dyy d Cy dy{ dy| dy} dy~ dy dy dy d CN dyyyyy dy dy dy dy dy dy d  dy dy dy dy dy dy dy d Cy dyyy dy dy dy dy dy dy d = dy dy dy dy dy dy dy d Cy dyyyyyyy dy dy dy dy dy d <u dy dy dy dy dy dy dy d  d dyy dy dy dy dy dy dy d  dyyyyy dy dy dy dy dy dy d  dy dy dy dy dy dy dy d  dy dy dy dy dy dy dy dy d = dyzyz�yyyyy dy dy dy dy dy dy d = dy dy dy dy dy dy dy d  dyyy dy dy dy dy dy dy d = dy dy dy dy dy dy dy d Cy dzz dzz dz dz dz dz dz dz d Cy dz zz dz dz dz dz dz dz d Cy dz dz dz dz dz dz dz d Cy dzz?zz.zz&z dz dz! dz" dz# dz$ dz% d  dz' dz( dz) dz* dz+ dz, dz- d Cy dz/z7z0 dz1 dz2 dz3 dz4 dz5 dz6 d Cy dz8 dz9 dz: dz; dz< dz= dz> d = dz@zQzAzIzB dzC dzD dzE dzF dzG dzH d t dzJ dzK dzL dzM dzN dzO dzP d dzRzYzS dzT dzU dzV dzW dzX d  dzZ dz[ dz\ dz] dz^ dz_ dz` d Cy dzbzzczzdz~zezvzfznzg dzh dzi dzj dzk dzl dzm d dzo dzp dzq dzr dzs dzt dzu d  d dzwzx dzy dzz dz{ dz| dz} d  dzzzzz dz dz dz dz dz dz d dz dz dz dz dz dz dz d <u dzzz dz dz dz dz dz dz d = dz dz dz dz dz dz dz d Cy dzzzzzzz dz dz dz dz dz dz d dz dz dz dz dz dz dz d  dzzz dz dz dz dz dz dz d = dz dz dz dz dz dz dz d  dzz dzz dz dz dz dz dz dz d P dzzz dz dz dz dz dz dz d ~ dz dz dz dz dz dz dz d Cy dz{ z{zzzzz dz dz dz dz dz dz d P dz dz dz dz dz dz dz d  dzzz dz dz dz dz dz dz d  dz dz d{� d{ d{ d{ d{ d  d{{{{{ d{ d{ d{ d{ d{ d{ d t d{ d{ d{ d{ d{ d{ d{ d Cy d d{{ d{ d{ d{ d{ d{ d{ d CN d{!{D{"{3{#{+{$ d{% d{& d{' d{( d{) d{* d d{, d{- d{. d{/ d{0 d{1 d{2 d  d{4{<{5 d{6 d{7 d{8 d{9 d{: d{; d = d{= d{> d{? d{@ d{A d{B d{C d Cy d{E{N{F d{G d{H d{I d{J d{K d{L d{M d = d d{O{P d{Q d{R d{S d{T d{U d{V d Cy d{X}}{Y|n{Z{{[{{\{~{]{m{^{f{_ d{` d{a d{b d{c d{d d{e d d{g d{h d{i d{j d{k d{l d  d{n{v{o d{p d{q d{r d{s d{t d{u d = d{w d{x d{y d{z d{{ d{| d{} d Cy d{{{{{ d{ d{ d{ d{ d{ d{ d = d{ d{ d{ d{ d{ d{ d{ d CN d{{{ d{ d{ d{ d{ d{ d{ d <u d{ d{ d{ d{ d{ d{ d{ d  d{{{{{{{ d{ d{ d{ d{ d{ d{ d = d{ d{ d{ d{ d{ d{ d{ d Cy d{{{ d{ d{ d{ d{ d{ d{ d Cy d{ d{ d{ d{ d{ d{ d{ d t d{{ d{{ d{ d{ d{ d{ d{ d{ d Z d{{{ d{ d{ d{ d{ d{ d{ d Cy d{ d{ d{ d{ d{ d{ d{ d  d{|({|{{{{{ d{ d{ d{ d{ d{ d{ d = d{ d{ d{ d{ d{ d{ d{ d  d{{{ d{ d{ d{ d{ d{ d{ d Cy d{ d{ d|� d| d| d| d| d = d||||| d| d| d| d| d| d| d  d| d| d| d| d| d| d| d  d|| | d| d| d| d| d| d| d Cy d|! d|" d|# d|$ d|% d|& d|' d Cy d|)|L|*|;|+|3|, d|- d|. d|/ d|0 d|1 d|2 d = d|4 d|5 d|6 d|7 d|8 d|9 d|: d CN d|<|D|= d|> d|? d|@ d|A d|B d|C d t d|E d|F d|G d|H d|I d|J d|K d d|M|^|N|V|O d|P d|Q d|R d|S d|T d|U d t d|W d|X d|Y d|Z d|[ d|\ d|] d Cy d|_|f|` d|a d|b d|c d|d d|e d  d|g d|h d|i d|j d|k d|l d|m d Cy d|o||p||q||r||s|{|t d|u d|v d|w d|x d|y d|z d d|| d|} d|~ d| d| d| d| d = d d|| d| d| d| d| d| d| d CN d||||| d| d| d| d| d| d| d d| d| d| d| d| d| d| d  d||| d| d| d| d| d| d| d  d| d| d| d| d| d| d| d d||||||| d| d| d| d| d| d| d  d| d| d| d| d| d| d| d  d||| d| d| d| d| d| d| d P d| d| d| d| d| d| d| d t d||||| d| d| d| d| d| d| d Cy d| d| d| d| d| d| d| d = d||| d| d| d| d| d| d| d  d| d| d| d| d| d| d| d Cy d|}>|}|} |}| d| d| d| d| d}� d} d t d} d} d} d} d} d} d} d  d} }} d} d} d} d} d} d} d = d} d} d} d} d} d} d} d d}}-}}%} d} d} d}! d}" d}# d}$ d ~ d}& d}' d}( d}) d}* d}+ d}, d  d}.}6}/ d}0 d}1 d}2 d}3 d}4 d}5 d = d}7 d}8 d}9 d}: d}; d}< d}= d Cy d}?}Z}@}Q}A}I}B d}C d}D d}E d}F d}G d}H d d}J d}K d}L d}M d}N d}O d}P d CN d d}R}S d}T d}U d}V d}W d}X d}Y d d}[}l}\}d}] d}^ d}_ d}` d}a d}b d}c d d}e d}f d}g d}h d}i d}j d}k d Cy d}m}u}n d}o d}p d}q d}r d}s d}t d <u d}v d}w d}x d}y d}z d}{ d}| d Cy d}~~}}}}}}}} d}} d} d} d} d} d} d} d Cy d}}} d} d} d} d} d} d} d = d} d} d} d} d} d} d} d Cy d}}}}} d} d} d} d} d} d} d = d} d} d} d} d} d} d} d = d}}} d} d} d} d} d} d} d CN d} d} d} d} d} d} d} d  d}}}}} d} d} d} d} d} d} d  d}}} d} d} d} d} d} d} d = d} d} d} d} d} d} d} d Cy d}}}}} d} d} d} d} d} d} d Cy d} d} d} d} d} d} d} d C] d}}} d} d} d} d} d} d} d  d} d} d} d} d} d} d} d  d}~=}~"~�~~~ ~ d~ d~ d~ d~ d~ d~ d d~ d~ d~ d~ d~ d~ d~ d Cy d~~~ d~ d~ d~ d~ d~ d~ d  d~ d~ d~ d~ d~ d~ d~! d <u d~#~, d~$~% d~& d~' d~( d~) d~* d~+ d = d~-~5~. d~/ d~0 d~1 d~2 d~3 d~4 d CN d~6 d~7 d~8 d~9 d~: d~; d~< d Cy d~>~a~?~P~@~H~A d~B d~C d~D d~E d~F d~G d CN d~I d~J d~K d~L d~M d~N d~O d = d~Q~Y~R d~S d~T d~U d~V d~W d~X d Cy d~Z d~[ d~\ d~] d~^ d~_ d~` d P d~b~s~c~k~d d~e d~f d~g d~h d~i d~j d Cy d~l d~m d~n d~o d~p d~q d~r d P d~t~|~u d~v d~w d~x d~y d~z d~{ d CN d~} d~~ d~ d~ d~ d~ d~ d d~~~~~~~ d~~ d~ d~ d~ d~ d~ d~ d ~ d~~~ d~ d~ d~ d~ d~ d~ d <u d~ d~ d~ d~ d~ d~ d~ d  d~~~~~ d~ d~ d~ d~ d~ d~ d  d~ d~ d~ d~ d~ d~ d = d~~~ d~ d~ d~ d~ d~ d~ d d~ d~ d~ d~ d~ d~ d~ d Cy d~~~~~~~ d~ d~ d~ d~ d~ d~ d  d~ d~ d~ d~ d~ d~ d~ d Cy d d~~ d~ d~ d~ d~ d~ d~ d d~~~~~ d~ d~ d~ d~ d~ d~ d Cy d~ d~ d~ d~ d~ d~ d~ d d~~~ d~ d~ d~ d~ d~ d~ d = d~ d~ d~ d~ d� d d d Cy dK( d d d d d d d d d d d d d d d Cy d  d d d d d d d = d! d" d# d$ d% d& d' d = d):*2+ d, d- d. d/ d0 d1 d d3 d4 d5 d6 d7 d8 d9 d = d;C< d= d> d? d@ dA dB d Cy dD dE dF dG dH dI dJ d I7 dLgMVN dO dP dQ dR dS dT dU d = dW_X dY dZ d[ d\ d] d^ d  d` da db dc dd de df d = dhyiqj dk dl dm dn do dp d = dr ds dt du dv dw dx d Cy dz{ d| d} d~ d d d d = d d d d d d d d = d d d d d d d d  d d d d d d d d d d d d d d  d d d d d d d d Cy d d d d d d d d d d d d d d d d iX d d d d d d d d  d d d d d d d d Cy d d d d d d d d  d d d d d d d d <u d d d d d d d d Cy d d d d d d d d Cy d  d d d d d� d d d d d d d d d d = d  d d d d d d d <u d d d d d d d d = d[@/' d! d" d# d$ d% d& d  d( d) d* d+ d, d- d. d Cy d081 d2 d3 d4 d5 d6 d7 d = d9 d: d; d< d= d> d? d dARBJC dD dE dF dG dH dI d = dK dL dM dN dO dP dQ d P d dST dU dV dW dX dY dZ d P d\w]f d^_ d` da db dc dd de d  dgoh di dj dk dl dm dn d Cy dp dq dr ds dt du dv d  dxyz d{ d| d} d~ d d d Cy d d d d d d d d <u d d d d d d d d d Cy d! d d d d d d d = d d d d d d d d Cy d d d d d d d d t d d d d d d d CN d d d d d d d d = d d d d d d d d C] d d d d d d d d d d d d d d d d t d d d d d d d d = d d d d d d d d Cy d d d d d d d d = d d d d d d d d  d� d d d d d d d  d d d d d d d d Cy d d d d d d d d  d d d d d d d d Cy d"h#E$4%,& d' d( d) d* d+ d <u d- d. d/ d0 d1 d2 d3 d Cy d5=6 d7 d8 d9 d: d; d< d = d> d? d@ dA dB dC dD d = dFWGOH dI dJ dK dL dM dN d Cy dP dQ dR dS dT dU dV d Cy dX`Y dZ d[ d\ d] d^ d_ d Cy da db dc dd de df dg d di|js dkl dm dn do dp dq dr d = d dtu dv dw dx dy dz d{ d Cy d}~ d d d d d d d Cy d d d d d d d d d d d d d d d d = d d d d d d d d Cy d+ d d d d d d d d d d d d d d d  d d d d d d d d = d d d d d d d d CN d d d d d d d d  d d d d d d d d CN d d d d d d d d  d d d d d d d d P d d d d d d d d d d d P d� d d d d d d d  d d d d d d d d = d   d d d d d d d  d d d d d d d d = d# d d d d d! d" d = d$ d% d& d' d( d) d* d = d,s-P.?/70 d1 d2 d3 d4 d5 d6 d  d8 d9 d: d; d< d= d> d = d@HA dB dC dD dE dF dG d I7 dI dJ dK dL dM dN dO d Cy dQbRZS dT dU dV dW dX dY d Cy d[ d\ d] d^ d_ d` da d dckd de df dg dh di dj d dl dm dn do dp dq dr d CN dtu~ dvw dx dy dz d{ d| d} d d d d d d d d d Cy d d d d d d d d = d d d d d d d d d  d d d d d d d d = d d d d d d d d = d: d d d d d d d  d d d d d d d d ~ d d d d d d d d = d d d d d d d d  d d d d d d d d ~ d d d d d d d d t d d d d d d d d d d d d d d d d d d d d d d d d  d d� d d d d d d Cy d d d d d d d d = d d d d d d d d d)! d d d d d d d Cy d" d# d$ d% d& d' d( d  d*2+ d, d- d. d/ d0 d1 d  d3 d4 d5 d6 d7 d8 d9 d Cy d;<_=N>F? d@ dA dB dC dD dE d dG dH dI dJ dK dL dM d Cy dOWP dQ dR dS dT dU dV d Cy dX dY dZ d[ d\ d] d^ d P d`qaib dc dd de df dg dh d Cy dj dk dl dm dn do dp d Cy drzs dt du dv dw dx dy d = d{ d| d} d~ d d d d Cy d d d d d d d d d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d t d d d d d d d d d d d d d d d d  d d d d d d d d d9  d d d d d d d d d d d d d d d d Cy d d d d d d d d CN d d d d d d d  d d d d d d d d CN d d d d d� d d d Cy d d d d d d d d Cy d  d  d d d d d d d  d d d d d d d d Cy d( d ! d" d# d$ d% d& d' d  d)1* d+ d, d- d. d/ d0 d Cy d2 d3 d4 d5 d6 d7 d8 d Cy d:k;P<E d=> d? d@ dA dB dC dD d  dFIG dH d  dJ dK dL dM dN dO d  dQZ dRS dT dU dV dW dX dY d = d[c\ d] d^ d_ d` da db d dd de df dg dh di dj d  dlm~nvo dp dq dr ds dt du d <u dw dx dy dz d{ d| d} d  d d d d d d d d d Cy d d d d d d d d = d d d d d d d d Cy d d d d d d d d d d) d d d d d d d = d d d d d d d d C] d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d CN d d d d d d d d d d d d d d d d P d d� d d d d d d Cy d d d d d d d d d  d d d d d d d = d d d d d d d d = d d!" d# d$ d% d& d' d( d Cy d*a+F,=-5. d/ d0 d1 d2 d3 d4 d  d6 d7 d8 d9 d: d; d< d Cy d d>? d@ dA dB dC dD dE d Cy dGXHPI dJ dK dL dM dN dO d Cy dQ dR dS dT dU dV dW d Cy d dYZ d[ d\ d] d^ d_ d` d Cy dbctdle df dg dh di dj dk d dm dn do dp dq dr ds d Cy du}v dw dx dy dz d{ d| d  d~ d d d d d d d Cy d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d = d d d d d d d d Cy d/ d d d d d d d d d d d d d CN d d d d d d d d d Cy d d d d d d d d <u d d d d d d d d Cy d d d d d d d d P d d d d d d d d Cy d  d d d d d d d  d d d d d d d d t d d d d� d d d d P d d d d d d d d Cy d  d d d d d d d P d d d d d d d d Cy d' d! d" d# d$ d% d& d P d( d) d* d+ d, d- d. d Cy d0w1T2C3;4 d5 d6 d7 d8 d9 d: d CN d< d= d> d? d@ dA dB d Cy dDLE dF dG dH dI dJ dK d  dM dN dO dP dQ dR dS d = dUfV^W dX dY dZ d[ d\ d] d = d_ d` da db dc dd de d = dgoh di dj dk dl dm dn d = dp dq dr ds dt du dv d Cy dxyz{ d| d} d~ d d d d = d d d d d d d d Cy d d d d d d d d Cy d d d d d d d d CN d d d d d d d d t d d d d d d d d  d d d d d d  d d d d d d d d Cy d< d d d d d d d d Cy d d d d d d d d  d d d d d d d d Cy d d d d d d d d d  d d d d d d d d Cy d d d d d d d d Cy d� d d d d d d d = d d d d d d d d = d  d d d d d d d = d d d d d d d d Cy d+# d d d d d! d" d = d$ d% d& d' d( d) d* d Cy d,4- d. d/ d0 d1 d2 d3 d  d5 d6 d7 d8 d9 d: d; d = d=>a?P@HA dB dC dD dE dF dG d dI dJ dK dL dM dN dO d Cy dQYR dS dT dU dV dW dX d Cy dZ d[ d\ d] d^ d_ d` d = dbsckd de df dg dh di dj d  dl dm dn do dp dq dr d Cy dt|u dv dw dx dy dz d{ d  d} d~ d d d d d d Cy d d d d d d d d d  d d d d d d d d Cy d d d d d d d d  d d d d d d d d d ~ d d d d d d d d Cy d d d d d d d d Cy d d q = d3 d Cy d d d d d d d d d d d d <u d d d d d d  d d d d  d d  d d d d d d d  d d d ~ d d d  d d d  d � d d d d d d d d d d d  d   d d  d d d  d d d d d d  d& d d d t d #! d" d  d$ d% d d',() P d* d+ d  d-0. d/ d  d1 d2 d  d4d5T6E7>8;9 d: d t d< d= d d?B@ dA d dC dD d dFMGJH dI d Cy dK dL d  dNQO dP d  dR dS d dU V]WZX dY d ~ d[ d\ d  d^a_ d` d <u db dc d defugnhki dj d dl dm d dorp dq d ׸ ds dt d dv}wzx dy d d{ d| d d~ d d t d d d d d d d d d  d d d d d d d d d C] d d d d dv d| d d m d d d d d d d d d d m d d d m d d d m d d d m d d d m d d d d d d d d d d d d d d d m d d m d d m d d d m d d d m d d d m d d d m d d d m d d d m d d d d m d d d m d d d m dH3� d H d d H d d H d d H d . , d H  H H H H H H H H H H H H H H H H H H H H H!" H# H$ H H% H& H' H( H) H*+ H H <- d H d/10 d H d2 d H d4=5:687 d H d9 d H d d;< d H d>C?A@ d H dB d H dDFE d H dG d H dIZJSKPLNM d H dO d H dQ dR d H dTWU dV d H dX dY d H d[b\_] d^ d H d` da d H dcfd de d H dg{h di dj dk dl dm dn do dp dq dr ds dt du dvyw Hx H H d Hz H d d H}~ d d d m$ d d d l d d d H d d m4 d d d d d H d d d $ d d d < d d d d l d d d m$ d d d m$ d d d d l d d d d m d d H H H H  H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H H H H  H  d d d d d d d d d d d d d H d H H d l H H H H d d d d l d d d d d d� d d m $ $ d d m4 d d $  d m d H  d d m4 d d d d H d d d d H d\3'# Œ ! d" d d$ s% d& d d(, )* d+ d ï d-0. d/ d d1 d2 d d4B5<697 d8 d d: d; d i d=@> d? d s dA d  dCNDGE dF d  dHKI rJ r r $LM 8 r r 8OYP dQ dR d dS dT dU dVWX d $ $ dZ d[ d d]p^d_` d r ҉ab dc d delfig dh d  dj dk d  dm n do d dq}rysvt du d dw dx d Z d iz{ d| d d~ d d d d d ` d  d d d d d ` d d d r d d d d d d d d              ց  d d r d d d > d d d Z d z d d  d d d d  d  d d r d d  k d d i d d d d 7 d d d d s d d d  d d d  d d d d d d d d d $ d d d  d d k r d d d d d d d d i ds6 �  d d d   d  d Œ  d d d  d d d d  d d Z d d d Œ d d d d3 d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d d/021 d d d4 d5 d s d7M8A9:  d;>< d= d  d? d@ d  dBF ҉CD dE d s dGJH dI d Ʒ dK dL d dNjOcP dQ =R =S =T =U =V =W =X =Y =Z =[ =\ =] =^ =_ = =`a = =b ܫ =dge df d s dh di d Œ dko lm dn d  d pq dr d  dt du d  dw2xyz{|}~ d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d š d d d š d d d š d d d d š d d d d š d š d d š d d d š d d d š d d d š d d d š d d d d d d š d d d d š d d d š d d d š d d d d d d dO@<9 d d d š š, š š š š š š š š š šO š š� š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š5 š6 š7 š š89 š š:; š< š š= š>?G@ šA šB šC šD šEF š : šH šI šJ šK šL šMN š : šP šQ šR šS šT šU šV šW šX šY šZ š[ š\ š] š^ š_ š` ša šb šc šd še šf šg šh ši šj šk šl šm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š} š~ š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š R š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š!" š# š š$% š& š š' š( š) š* š+ R š- š. š/ š š0 š12 š š3 š45 š6 š š7 š8 š: d; d š d= d> d? d š dAHBEC dD d dF dG d dILJ dK d š dM dN d š dP_QXRUS dT d š dV dW d š dY\Z d[ d š d] d^ d š d`gadb dc d š de df d š dhki dj d dl dm dn do p q~ rsytvu 8 wx 8 F 8z| 8{ 7 8 8} 8    8 8 8  d d š d d d š d d d š d d d š d d d š d d d d d d š d d d š d d d d d d š d d d d š d d d š d d d š d} d d d^ š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š� š š š š C š š š š š š š š š : š š š : š š š š š š š š š š š š : š! š" š# š$ š% š& š' š š() š* š+ š, š š- š./90 š1 š š2 š34 š š56 š7 š8 š š: š; š š<= š> š? š š@ šA šB šD šE šF šG šH šI šJ šK šL šM šN šO š šPQ šR šS šT šU šV šW šX šY šZ š[ š\ š] š š_ š š` šab šc šd še šf šg šh ši šj šk šl š šmn šo šp šq š šr šs št šuv š šwx šy šz š š{ š| š~ d d š d d d d d d d 6b L d d d d d d d d d d d s d d d W d d d r d d d d d d d d d s d d d Ʒ d d   ` d d d G d d  d d d r d d d d s d d d x d d d d d d y d r d d x d V d d  d d d ï d d d Z d d d d d d d d d d > d Z Z d d d  Z� ƨ Œ d d Z d Ʒ  d d d  d d d d d d Œ d d ˘ d d d ï d d d d )!" #&$ d% d s d' d( d d*1+., d- d  d/ d0 d  d >  d4 d5 Œ6 Œ7 Œ8 Œ9 Œ: ;<L= Œ> Œ Œ? Œ@ ŒA ŒB ŒC ŒDEK MFG MH M MIJ M Œ M M ŒM ŒN ŒO` ŒP ŒQ ŒRS ŒT ŒU ŒV ŒW ŒX ŒY ŒZ Œ[ Œ\ Œ] Œ^ Œ Œ_ \ Œa Œb Œc Œd Œef Œghx Œij Œk Œlpm \n \o \ \ Œqu \rs \t \ \ Œv Œ \w \ Œyz Œ{ Œ| \} \~ \ \ \ Œ \ Œ \ \ Œ \ \ Œ \ \ \ Œ \ Œ Œ \ Œ Œ \ \ Œ \ \ Œ \ Œ \ Œ \ \ \ \ Œ Œ Œ Œ Œ \ \ \ \ Œ \ \ Œ \ Œ \ \ Œ \ \ Œ Œ Œ Œ Œ \ \ \ \ Œ \ \ Œ \ Œ Œ \ \ \ \ \ Œ Œ Œ \ Œ Œ Œ \ \ \ \ Œ \ \ Œ \ \ Œ \ Œ Œ Œ Œ Œ \ Œ \ Œ \ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ� Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ  Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ! Œ M# d$%m&'()\*@+4,0- d. d/ d Z d1 2 d3 d d596 Ʒ7 d8 d Ʒ d:=; d< d d> d? d  dAPBICFD dE d Œ dG dH d dJMK dL d Ʒ dN dO d ï dQXRUS dT d  dV dW d dY Z d[ d Ʒ d]s^d_c Z`a db d d delfig dh d dj dk d à dmpn do d dq dr d dtuyv dw dx d  dz}{ d| d s d~ d d d d d  d d d d d d Ʒ d d d Ʒ d d d d d d d d d d ˘ d d d d d d  d  d d  d d d d d 7 d d d d d d d d  d  d d d ` d d d d d Ʒ d d d  d d d s d d d s d d d Ʒ d d d d  d d d Z Z Zk8 Z( Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z� Z Z ; Z Z Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z h Z Z Z Z Z Z Z Z Z Z! Z Z"# Z Z$ Z% Z&' Z Z ?) Z* Z Z+, Z Z-. Z/ Z Z0 Z12 Z3 Z Z4 Z5 Z67 Z ޕ Z Z9:c; Z< Z= Z> Z? Z@ ZAR ZBC ZD ZE Z ZFG ZH ZI Z ZJK ZL ZM ZN ZO ZP ZQ Z  ZS ZT ZU Z ZV ZWX Z ZYZ Z Z[ Z\] Z Z^ Z_` Za Zb Z  Zd Ze Zf Zg Zh Zi Zj Z , Zl Zm Zn Zo Zp Zq Zr Zs Zt Zu Zv Zw Zx Zy Zz Z{ Z Z| Z} Z~ Z Z Z Z Z Z Z Z  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z , d d r d d d  d d d d d d  d d d d% d d d ї d d d ї d d d ї d d d d d Z d d d d d [- d d d ї d d d [ d d d d [ d d d d d ]= d d d d ї d d d Z d d d Z d  d d d d           �            $               $  d d d ї d d!" d# d$ d ї d&U'<(4)0*-+ d, d Z d. d/ d ї d1 d2 d3 d ]= d d5697 d8 d ї d: d; d ] d=I>B? d@ dA d ]m dCFD dE d [ dG dH d Z dJN dKL dM d Z dORP dQ d Z dS dT d \ dVhW\X d dYZ d[ d Z d]d^a_ d` d [- db dc d ї de df dg d [ dixjqknl dm d [ do dp d Z drus dt d Z dv dw d ї dyz}{ d| d [ d~ d d ї d d d Z d d d d d dd d [- [- [- d d d d Z d d d d \ d d d d ї d d d d d Z d ї d d d d d d ї d d d d Z d d d d d [- d d d d ї d d d d ї d d d d ї d d d d \ d d d d d [= d d d d d [ d d d d [ d d d d [ d d d d [ d d d d ї d d d d d [ d d d d [ d d ї ї d<�"  d d d Z d d d d ] d  d d d $ d d d d ї d d d [ d d d d Z d d d d! d Z d#) d$% d& d' d( d \ d*3+/, d- d. d ї d0 d1 d2 d [ d485 d6 d7 d Z d9 d: d; d [ d=[>Q?H@DA dB dC d [ dE dF dG d Z dIMJ dK dL d [ dN dO dP d [- d dRSWT dU dV d ї dX dY dZ d [ d\b] d^ d_ d` da d \ d dc ї d defghrim [jk dl d [- dn do dp dq d ї ds|txu dv dw d \ dy dz d{ d ]= d} d~ d d d [ d d d d d [- d d d ї d d d d [ d d ї d d d d d Z d d ї d d ї d d ї d d d d [ d d d d ї d d d d d Z d d d d d [ d d d d d ї dI d [ d d d d d ї d d d d ї d d d \ d d d d d ї d d d d d ї d d d d d ] d d d d d Z d d d d [ d d d d d d \ d d d d d d \ d d d� d d [= d d d d Z d  d d d ї d d d d \ d d d d [ d'! d d d d [ d d d d d ]= d" d# d$ d% d& d [ d(6)2*.+ d, d- d [- d/ d0 d1 d [ d d34 d5 d [ d7@8<9 d: d; d ї d= d> d? d [ dAEB dC dD d [ dF dG dH d ї dJ % K|LjMXNSO % P % Q % R % % % % TU % V % W % Y % YbZ^[ % \ % ] % Y % _ % ` % a % %$ % cfd % e % %4 % g % h % i % ї % kvlq % mn % o % p % ї % % rs % t % u % Y % % wx % y % z % { % %D % }~ %  %  % %T % ї %  %  %  % %d %  %  %  % ї %  %  %  % Y %  %  %  % %t %  %  %  %  % i %  %  %  % b %  %  %  % ї %  %  %  %  % % %  %  %  %  % % % n" d d d d Z d d d d Z d d d d ї d d d d d ї d d d d [ d d d d ї d d d d [- d d d d ї d d d d ]= d d d d Z d d d d d ]= d d d d d ]= d  d d d d ^ d d d� d d \ d d d d ї d d d d d ] d  d d d d ї d d d d d ї d d d d d Z d d d! d [ d#'$ d% d& d [ d(K)<*3+/, d- d. d ї d0 d1 d2 d [ d485 d6 d7 d \ d9 d: d; d ї d=B> d? d@ dA d [ dCGD dE dF d [ dH dI dJ d \ dL[MR dNO dP dQ d [- dSWT dU dV d \ dX dY dZ d ї d\e]a^ d_ d` d [ db dc dd d [ dfjg dh di d \ dk dl dm d ]= dopqrsx dtu dv dw d [ dy}z d{ d| d [ d~ d d d ї d d d d Z d d d d ї d d d d d [ d d d d d [ d d d d d ї d d d d ї d d d d [- d d d d ї d d d d Z d d d d ї d d d d d d [ d d d d d ї d d d d d \ d d d d [ d d d d d d ї d d ї d d d d d ї d d d d d d d d d d d d d d d d d [ d d d d d d d d d d d d d d d d d ї dlT*�  <u d d d  d d d d <u d   d d d d d <u d d d  d d d d d  d d ~ d!%" d# d$ d d&)' d( d ~ d = d+F,7-2.1/ d0 d d Cy d34  d5 d6 d ~ d8?9<: d; d d= d> d d@CA dB d dD dE d = dGOH ILJ dK d  dM dN d t d dPQ dR dS d dUkVjW`X_Y\Z d[ d d] d^ d d dac db  ddge df d <u dh di d C] d d d y dnfop,qrstx šuv dw d š dy|z d{ d š d} d~ d d d d d š d d d d š š š š š š š š š š š š š š š š š š š š š š š š š  d d š d d d š d d d š d d d š d d d š d d d š d d d š d d š d d d dn š š š š š š š š š š � š š š š š š š š B{ š š š š  š š š š š  š H š š š 5 š š 5 š š š š š š� š ( 5 š 5p š š š š c š š š k š š š š š    š : š š , š š š š > š š � š š š � š š š š.& š š! š"# š$ š% š š �' š( š š)* š š+, š- š š B{/X0 š1I2;374 š š56 š  š8 š š9: š š <E=B>@? š H šA š š 5C šD š 5 šF š šGH š šJ šKTLQMO šN ( 5 šP 5p šR šS š š cU šV šW š k šY šZc š[\ š] š^a_` š : šb š , šd še šfkgih š > šj š � šl šm š � šo šp šq šr šst{u š šv šwx šy šz š š �| š} š š~ š š š š š B{ š š š š  š š š š š  š H š š š 5 š š 5 š š š š š š š ( 5 š 5p š š š š c š š š k š š š š š š š � š š š : š š , š š š š > š š � š š š � št" š š š š š š š š š š � š š š š š š š š B{ 5 5 5 5  5 5 5 5 5  5 5 H 5 5 5 5 5 5 5 5 5 5 5 ( 5 5 5p 5� 5 5 5 c 5 5 5 k 5 5  5 5 5  5 5 � 5 5 5 :  5 , 5 5 5 5 > 5 � 5 5 > 5! 5 � 5# š$ š% š&/ š'( š) š š*+ š š,- š. š š B{0Y1 š2J3<485 š š67 š  š9 š š:; š š =F>C?A@ š H šB š š 5D šE š 5 šG š šHI š šK šLUMRNP šO ( 5 šQ 5p šS šT š š cV šW šX š k šZ š[i\a] š^ š š_` š š �b šc šdgef š : h š , šj šk šlqmon š > šp š � šr šs š � šu šv šw šx šyz{ š š| š}~ š š š š � š š š š š š š š B{ š š š š  š š š š š  š H š š š 5 š š 5 š š š š š š š ( 5 š 5p š š š š c š š š k š š š š š š š � š š š :  š , š š š š > š š � š š š � š d d d š d d d š d d š š š š š š š š š š š š š š š š š š d d d š d d d š d d d š d d d š d � d d š d d d d š š š š š š š š š š š š š š š ( š š š š d d š d d d š d!("%# d$ d š d& d' d š d d)* d+ d š d-i.J/;07142 d3 d d5 d6 d š d d89 d: d š d<C=@> d? d š dA dB d š dDGE dF d š dH dI d dKZLSMPN dO d š dQ dR d š dTWU dV d š dX dY d d[b\_] d^ d š d` da d š dcfd de d š dg dh d š djklsmpn do d š dq dr d š dtwu dv d š dx dy dz d š{ š| š}~ š š š š š š š š š š š š š š š  d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d š š š š š š š š š š š š š š š š š š š š š š š š š š > : š š š š              š k   c    D š š š <  š� š š ( š ( š š š š š š š š š š š š š š š š š ( š � H š š <  d d š d d d d? 0!*"& #$ d% d d '( d) d s d+/ ,- d. d  d Z 1:263 d4 d5 d d 778 d9 d x d; s< = d> d d@PAJBF yCD dE d dG ZH dI d Z dKL rM N dO d s dQWRS T U dV d dX_Y\Z d[ d ï d] d^ d d`ca db d dd de d  dg dh)ijkl mn do dp dq r st u v w x y z {| } ~  H  d d d  d  y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y % y  d d Ʒ d G d d 7 d Ʒ d d d d d d� d d Ʒ d d d  d   d d d d d ` d s d d d  d d d  d d d#"  d d k d! d r d à $% &' d( d d*m+D,8-1 d./ d0 d d253 d4 d d6 d7 d ƙ d9=: d; d< d d>A? d@ d dB dC d s dE^FZG H I J KL M N O PQ R S T U V W X Y ց [ d\ d] d d_f`ca db d  dd de d dgjh di d x dk dl d dnoxptq r ds d ƙ d duv dw d  dy} dz{ d| d y d~ d d i d d d Œ d d d d d d d  d d y d d d d          d d r d à d d d = d d d��` d d d d d d d d d d d d d d d d d d d d d d d d E d d d d d d d d d d d d d d d d d d d d d d d $ d d d d d d d d d d d d d d d d d d d d d d d d d E dkk dk d dj4\� `/  d d d d d d d d d d d d d d d d d d CN d(" d d d d! d d# d$ d% d& d' d CN d d)* d+ d, d- d. d  d0E1>283 d4 d5 d6 d7 d <u d9 d: d; d< d= d = d d?@ dA dB dC dD d dFSGMH dI dJ dK dL d dN dO dP dQ dR d dTZU dV dW dX dY d d[ d\ d] d^ d_ d = dabwcjd de df dg dh di d Cy dkql dm dn do dp d dr ds dt du dv d C] dxy dz d{ d| d} d~ d d d d d d d <u d d d d d d d d d d d d  d d d d d d d d d d d d C] d d d d d d d d d d d d                h  d d d d d d d d d d d d d7� d d d d d  d d d d d d d d d d d d Cy d d d d d d d d d d d d = d d d d d d d d d d d d d d  d d d d d I7 d d d d d d d d d d d d C] d d d d d d d*$ d d! d" d# d = d% d& d' d( d) d d+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d = d8o9T:G;A< d= d> d? d@ d dB dC dD dE dF d dHNI dJ dK dL dM d dO dP dQ dR dS d dUbV\W dX dY dZ d[ d d] d^ d_ d` da d dcid de df dg dh d dj dk dl dm dn d dpq~rxs dt du dv dw d dy dz d{ d| d} d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d i  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d  d d d d d d d� d d d d d  d d d d d d d ># d d d d d d d d d d d d t d d d d! d" d d$1%+& d' d( d) d* d  d, d- d. d/ d0 d d283 d4 d5 d6 d7 d Cy d9 d: d; d< d= d d?Z@MAGB dC dD dE dF d dH dI dJ dK dL d dNTO dP dQ dR dS d  dU dV dW dX dY d d[b d\] d^ d_ d` da d = d dcd de df dg dh d = djklmznto dp dq dr ds d du dv dw dx dy d  d{| d} d~ d d d = d d d d d d d d d d d d = d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d d d d d d d d d  d d d d d d d+ d d d d E E C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? C? cQ C? d d� d d d d  d d d d d = d d d d d d d d d d d d = d d d d d d  d% d! d" d# d$ d <u d& d' d( d) d* d CN d,G-:.4/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d = d;A< d= d> d? d@ d dB dC dD dE dF d dHO dIJ dK dL dM dN d dPVQ dR dS dT dU d dW dX dY dZ d[ d d]^_ `ab}cpdje df dg dh di d ~ dk dl dm dn do d dqwr ds dt du dv d  dx dy dz d{ d| d d~ d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d  d d d d d d CN d? d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d� d d  d d d d d d d $   d d d d d Cy d d d d d d d d d d d d  d d d! d" d# d CN d%2&,' d( d) d* d+ d = d- d. d/ d0 d1 d = d394 d5 d6 d7 d8 d = d: d; d< d= d> d d@qA\BOCID dE dF dG dH d dJ dK dL dM dN d CN dPVQ dR dS dT dU d Cy dW dX dY dZ d[ d CN d]j^d_ d` da db dc d = de df dg dh di d CN d dkl dm dn do dp d = drstzu dv dw dx dy d d{ d| d} d~ d d d d d d d d d d d d d d Cy d d d d d d C] d d d d d d Cy d d d d d d d CN dp d d d d d = d d d d d d Cy d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d  d d d d d d = d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d� d ~ d d d d d d d9 $   d d d d d d d d d d d d d d d d d d d d! d" d# d  d%, d&' d( d) d* d+ d <u d-3. d/ d0 d1 d2 d d4 d5 d6 d7 d8 d d:U;H<B= d> d? d@ dA d dC dD dE dF dG d dIOJ dK dL dM dN d ~ dP dQ dR dS dT d dVcW]X dY dZ d[ d\ d  d^ d_ d` da db d Cy ddje df dg dh di d t dk dl dm dn do d dqrstu{v dw dx dy dz d CN d| d} d~ d d d d d d d d d ~ d d d d d d  d d d d d d d <u d d d d d d d t d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d = d d d d d d = d d d� d d d d  d d d d d d d d d d d Cy d d d d d d d d d d d d d d !"a#>$1%+& d' d( d) d* d d, d- d. d/ d0 d d283 d4 d5 d6 d7 d <u d9 d: d; d< d= d d?L@FA dB dC dD dE d = dG dH dI dJ dK d = dM[N dO dP dQ dR dS dT U V W X Y Z J\ d] d^ d_ d` d dbwcpdje df dg dh di d dk dl dm dn do d Cy dq dr ds dt du dv d t dxy dz d{ d| d} d~ d  d d d d d d = d d d d d d  d d d d d d d  d d d d d d Cy d d d d d d d                   I BD J �  DL J                BD  d d d d d P d d d d d d  d d d d d d  d d d d d d d d d d d d d d d d d d d d d� d d d d  d d d d d d d d d d d d d d d d d d d d d d d d W!<"/#)$ d% d& d' d( d = d* d+ d, d- d. d d061 d2 d3 d4 d5 d = d7 d8 d9 d: d; d d=J>D? d@ dA dB dC d <u dE dF dG dH dI d dKQL dM dN dO dP d = dR dS dT dU dV d dXsYfZ`[ d\ d] d^ d_ d da db dc dd de d dgmh di dj dk dl d dn do dp dq dr d dtu{v dw dx dy dz d d| d} d~ d d d d d d d d d š d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d I d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d dh�7  d d d d d d d d d d d d d d d d d I7 d d d d d d = d*$ d d! d" d# d d% d& d' d( d) d d+1, d- d. d/ d0 d <u d2 d3 d4 d5 d6 d d8M9F:@; d< d= d> d? d dA dB dC dD dE d d dGH dI dJ dK dL d dN[OUP dQ dR dS dT d dV dW dX dY dZ d d\b] d^ d_ d` da d <u dc dd de df dg d dijkxlrm dn do dp dq d ~ ds dt du dv dw d d dyz d{ d| d} d~ d d d d d d d Cy d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d  d d d d d d d- d d d d d d d d d d d d <u d d d d d d Cy d d d d d d  d d d d d d d d d d d d d d d d d d d� d d d d d d d d d d d d d d d d d d d" d d d d d d d d d d! d CN d#'$ d% d& d t d( d) d* d+ d, d d._/J0=172 d3 d4 d5 d6 d ~ d8 d9 d: d; d< d CN d>D? d@ dA dB dC d  dE dF dG dH dI d CN dKRL dM dN dO dP dQ d = dSYT dU dV dW dX d = dZ d[ d\ d] d^ d Cy d`{anbhc dd de df dg d di dj dk dl dm d doup dq dr ds dt d dv dw dx dy dz d d d|}~ d d d d d d d d d d d d` d d d d d Cy d d d d d d d d d d d d d d d d d d  d d d d d d = d d d d d d Cy d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d = d d d d d d = d d d d d d d/�  d d d d d d d d d d d = d d d d d d d d" d d d d d d d d d d! d d#)$ d% d& d' d( d d* d+ d, d- d. d  d0E1>283 d4 d5 d6 d7 d d9 d: d; d< d= d d d?@ dA dB dC dD d CN dFSGMH dI dJ dK dL d dN dO dP dQ dR d  dTZU dV dW dX dY d d[ d\ d] d^ d_ d da'bc~dqekf dg dh di dj d dl dm dn do dp d drxs dt du dv dw d  dy dz d{ d| d} d Cy d d d d                                                                        : š � š š  d d d d d ~ d d d d d d d d d d d d d � d d d d d d = d d d d d d d  d d d d d Cy d d d d d d Cy d! d d d d d Cy d" d# d$ d% d& d  d(Y)D*7+1, d- d. d/ d0 d <u d2 d3 d4 d5 d6 d C] d8>9 d: d; d< d= d = d? d@ dA dB dC d dERFLG dH dI dJ dK d dM dN dO dP dQ d d dST dU dV dW dX d  dZu[h\b] d^ d_ d` da d dc dd de df dg d <u dioj dk dl dm dn d dp dq dr ds dt d Cy dvw}x dy dz d{ d| d d~ d d d d d = d d d d d d = d d d d d d dR d d d d d = d d d d d d d d d d d d  d d d d d d C] d d d d d d P d d d d d d Cy d d d d d d d d d d d d Cy d d d d d d d = d d d d d d Cy d d d d d d = d d d d d d d d d d d d d d     IU '  d d d d d d ~ d� d d d d d = d d d d d d = d  d d d d d I7 d d d d d d d! d d d d d d" d# d$ d% d& d d(=)6*0+ d, d- d. d/ d d1 d2 d3 d4 d5 d š d d78 d9 d: d; d< d <u d>K?E@ dA dB dC dD d I7 dF dG dH dI dJ d CN dL dM dN dO dP dQ d dSTUpVcW]X dY dZ d[ d\ d Cy d^ d_ d` da db d CN ddje df dg dh di d = dk dl dm dn do d dqx drs dt du dv dw d CN dyz d{ d| d} d~ d  d d d d d d = d d d d d d d d d d d d d = d d d d d d C] d d d d d d d P d d d d d d = d d d d d d P d d d d d d d = d d d d d d d Cy d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d  d d d d d d  d d d d d� d C] dwO* d d d d d d d d d d d d d d d d d d C] d# d d d d! d" d d d$% d& d' d( d) d š d+:,3 d-. d/ d0 d1 d2 d d d d45 d6 d7 d8 d9 d CN d;H<B= d> d? d@ dA d dC dD dE dF dG d Cy dI dJ dK dL dM dN d dPQlR_SYT dU dV dW dX d I7 dZ d[ d\ d] d^ d d`fa db dc dd de d dg dh di dj dk d = dmznto dp dq dr ds d = du dv dw dx dy d CN d{| d} d~ d d d  d d d d d d <u d d d d d d = d d d d d d Cy d d d d d d Cy d d d d d d d d d d d d = d d d d d d CN d d d d d d d d d d d d CN d% d d d d d d d d d d d = d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d ~ d d� d d d d d d d d d d CN d   d d d d d  d d d d d d C] d d d d d d <u d d! d" d# d$ d d&R'<(5)/* d+ d, d- d. d d0 d1 d2 d3 d4 d % d d67 d8 d9 d: d; d CN d=J>D? d@ dA dB dC d = dE dF dG dH dI d CN dKQL dM dN dO dP d <u d C] dSbT[U dV dW dX dY dZ d d d\] d^ d_ d` da d dcj dde df dg dh di d CN dkql dm dn do dp d dr ds dt du dv d CN dxKyz{|}~ d d d d d d d d d d d CN d d d d d d d Cy d d d d d d = d d d d d d CN d d d d d d Cy d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d = d d d d d d CN d d d d d d d d d d d d d d d d d d <u d d d d d d = d d d d d d d d d d d d = d d d d d� d d d d d d d C] d d d d d d  d d d d d d t d0# d d d d d d d d d! d" d  d$*% d& d' d( d) d d+ d, d- d. d/ d d1>283 d4 d5 d6 d7 d d9 d: d; d< d= d C] d?E@ dA dB dC dD d = dF dG dH dI dJ d dLM~NiO\PVQ dR dS dT dU d = dW dX dY dZ d[ d t d]c^ d_ d` da db d = dd de df dg dh d djq dkl dm dn do dp d C] drxs dt du dv dw d Cy dy dz d{ d| d} d d d d d d d d d d d d d                c X d d d d d d d d d d d d d d d d d d < d d d d d d d d d d d d d = d d d d d d d d d d d d P d d d d d d CN d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d d d d d d� d = d  d d d d d d d d d d d C] d d d d d d Cy d d d d d d dx !R"7#0$*% d& d' d( d) d <u d+ d, d- d. d/ d = d1 d2 d3 d4 d5 d6 d Cy d8E9?: d; d< d= d> d = d@ dA dB dC dD d P dFLG dH dI dJ dK d d dM dN dO dP dQ d Cy dShTaU[V dW dX dY dZ d d\ d] d^ d_ d` d = d dbc dd de df dg d divjpk dl dm dn do d dq dr ds dt du d dw}x dy dz d{ d| d d~ d d d d d = d d d d d d = š d d d d d d d d d d d d ~ d d d d d d = d d d d d d t d d d d d d <u d d d d d d t d d d d d d CN d d d d d d CN d d d d d d d d d d d d  d d d d d d  d d d d d d CN d d d d d d d d d d d d CN d" d d d d d d d d d d d d d� d  d d d d d d d  d d d d d Cy d d d d d d d d d d d d d d d d d! d d#4$-%'& d CN d( d) d* d+ d, d d d./ d0 d1 d2 d3 d d56y7 d8 d9 d: d; d< d= š> š? š@ šA šB šCDEF`GL šH šIJ šK š š cMWNTORPQ ( : > šS šU šV š š X]Y[Z š š 5R\ š , ^ š_ š  kawbmcjdgef < + š @'hi  A k šl š  cnuorpq  :  4st E E/ @ �v š � šxyz}{| H š ~ A 5p š  š š D   š 5 A  D š š ? 5 š š A š š 5  D ʗ š š > < � B š š B  š š š B š š  š D F š 5a  E> �  A š š  š š > š B5 š B& A š k D š š H D D š B š > š š š š š  D D  š Rk A   š š A 5 š Ĺ X  š š ʗ > š š + š A  š š B W š š a D @ D š š R\ š š � š g š š R\ R š š R\ >    > A  > š š @ š šmF/$! N H � Ī m  a R\" š# š S%,&)'( š  *+ B � �- š. š > 0;182534 R\ � � RM67 š D >9 š: š @ H$<C=@>? RM F š DAB RM Ī E>D šE š < G]HSIPJMKL m S @ NO š 4  šQ šR š RM 4TZUWV š šXY š r W š[ š\ š B{ Ry^g_d`ba š š H šc ] Rye šf š � šh šikj š k šl š Rk šn šo šptq šr š šs � šu šv šwx š  šz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d t d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d dT)� d d d d d d d d d d d d d d d d d d d d d d d d d d Cy d# d d d! d" d  d$ d% d& d' d( d d*?+2, d- d. d/ d0 d1 d d394 d5 d6 d7 d8 d  d: d; d< d= d> d = d@MAGB dC dD dE dF d dH dI dJ dK dL d CN d dNO dP dQ dR dS d  dUVqWdX^Y dZ d[ d\ d] d = d_ d` da db dc d dekf dg dh di dj d = dl dm dn do dp d CN drys dt du dv dw dx d = dz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d C] d d d d d d d d d d = d d d d d d d d d d d d Cy d d d d d d d Cy d d d d d d CN d d d d d d = d d d d d d d d d d d d CN d d d d d d d d� d d d d CN d  d d d d d d d d d d d CN d d d d d d d  dM6)# d d d! d" d Cy d$ d% d& d' d( d  d*0+ d, d- d. d/ d CN d1 d2 d3 d4 d5 d d7@8:9 d d; d< d= d> d? d dAGB dC dD dE dF d CN dH dI dJ dK dL d dNcOVP dQ dR dS dT dU d dW]X dY dZ d[ d\ d d^ d_ d` da db d ddqekf dg dh di dj d dl dm dn do dp d dr ds dt du dv dw d ~ dyz({|}~ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d d d = d d d d d d P d d d d d d d P d d d d d d = d d d d d d CN d d d d d d d = d d d d d d d d d d d d = d d d d d d d d d d d d Cy d d d d d d d d d d� d d d d d d  d d d d d d d d d d d d d d d d d d CN d" d d d d! d <u d# d$ d% d& d' d d)*O+@,3 d-. d/ d0 d1 d2 d d4:5 d6 d7 d8 d9 d d; d< d= d> d? d CN dAH dBC dD dE dF dG d <u dI dJ dK dL dM dN d  dPkQ^RXS dT dU dV dW d t dY dZ d[ d\ d] d Cy d_e` da db dc dd d  df dg dh di dj d dlymsn do dp dq dr d = dt du dv dw dx d š dz{ d| d} d~ d d CN d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d P d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d dH d d d d d d d d d d d d d d d� d d  d d d d d d I7 d   d d d d d d d d d d d Cy d d d d d d d š d3& d! d" d# d$ d% d d'-( d) d* d+ d, d = d. d/ d0 d1 d2 d d4; d56 d7 d8 d9 d: d Cy d<B= d> d? d@ dA d = dC dD dE dF dG d dIsJeKXLRM dN dO dP dQ d dS dT dU dV dW d = dY_Z d[ d\ d] d^ d d` da db dc dd d t d dfgmh di dj dk dl d Cy dn do dp dq dr d dtuv|w dx dy dz d{ d d} d~ d d d d = d d d d d d  d d d d d d I7 d d d d d d d d d d d d  d d d d d d  d d d d d d d4 d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d CN d d d d d d d d d d d d CN d d d d d d = d d d d d d CN d d d d d d d = = = = = = = = = = = =� = = = = d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 = d6 d d d d d d'! d d d d d Cy d" d# d$ d% d& d d(.) d* d+ d, d- d d/ d0 d1 d2 d3 d d5_6Q7D8>9 d: d; d< d= d C] d? d@ dA dB dC d dEKF dG dH dI dJ d dL dM dN dO dP d d dRSYT dU dV dW dX d  dZ d[ d\ d] d^ d  d`uahb dc dd de df dg d dioj dk dl dm dn d = dp dq dr ds dt d CN dvw}x dy dz d{ d| d d d~ d d d d d = d d d d d d d  dd, d d d d d C] d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d Cy d d d d d d d d d d d d ~ d d d d d d = d d d d d d d d d d d d š d d d d d d d d d d d d ~ d d d d d d = d d d d d d  dm� d d d = d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d!" d# d$ d d% d&' d( d d)* d+ d d, d- d. d/ d0 d12 d3 d4 d5 d d67 d d89 d d:; d< d= d d> d?@ d dAB d dC dD dEF dG d dH dIJ d dK dL dMN dO d dP dQR d dS dT dUV d dW dXY dZ d[ d\ d d]^ d_ d d`a d dbc d dd de dfg dh di dj d dk dl d En{oup dq dr ds dt d t dv dw dx dy dz d d|} d~ d d d d CN d d d d d d š d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d = d d d d d d d d d d d d d d d d d d d) d d d d d d d d d d d d d d d d d ~ d d d d d d = d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d� d d d d d d d d d d d d d d d d d d d d ~ d d d d d d d# d d d! d" d d$ d% d& d' d( d d*U+@,3 d-. d/ d0 d1 d2 d d4:5 d6 d7 d8 d9 d <u d; d< d= d> d? d dANBHC dD dE dF dG d dI dJ dK dL dM d dO dP dQ dR dS dT d = dVqWdX^Y dZ d[ d\ d] d d_ d` da db dc d = dekf dg dh di dj d t dl dm dn do dp d drsyt du dv dw dx d Cy dz d{ d| d} d~ d CN d d d d d d = d d d d d d t dZ d d d d d d d d d d d CN d d d d d d d Cy d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d t d d d d d d d d d d d d d d d d d d <u d d d d d d Cy d d d d d d d d d d d d Cy d# d d d d d = d d d d d� d Cy d d d d d d d CN d   d d d d d = d d d d d d CN d d d d d d d d d d! d" d d$?%2&,' d( d) d* d+ d d- d. d/ d0 d1 d d394 d5 d6 d7 d8 d ~ d: d; d< d= d> d <u d@MAGB dC dD dE dF d Cy dH dI dJ dK dL d c dNTO dP dQ dR dS d dU dV dW dX dY d ~ d[\]w^j_d` da db dc d de df dg dh di d = dkql dm dn do dp d <u dr ds dt du dv d dxyz d{ d| d} d~ d CN d d d d d d d d d d d d CN d d d d d d d d d d d d  d d d d d d d d d d d d t d d d d d d d d d d d d d Cy d d d d d d = d d d d d d C] d d d d d d = d d d d d d P d d d d d d d P d d d d d d Cy d d d d d d d d d d d d = d d d d d d d d d d d d d d� d d d d CN d  d d d d d = d d d d d d d d d d d d = d d d d d d d &! d" d# d$ d% d d' d( d) d* d+ d Cy d-./0`1K2>384 d5 d6 d7 d = d9 d: d; d< d= d d?E@ dA dB dC dD d dF dG dH dI dJ d CN dLYMSN dO dP dQ dR d dT dU dV dW dX d CN d dZ[ d\ d] d^ d_ d CN da|bocid de df dg dh d ~ dj dk dl dm dn d Cy dpvq dr ds dt du d = dw dx dy dz d{ d d}~ d d d d d d d d d d d C] d d d d d d = d d d d d d d d d d d d d Cy d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d  d d d d d d = d d d d d d d d d d d d  d^' � d d d d d = d d d d d d = d d d d d d d d  d d d d d Cy d d d d d d d! d" d# d$ d% d& d d(C)6*0+ d, d- d. d/ d d1 d2 d3 d4 d5 d <u d7=8 d9 d: d; d< d d> d? d@ dA dB d = dDQEKF dG dH dI dJ d CN dL dM dN dO dP d dRXS dT dU dV dW d I7 dY dZ d[ d\ d] d = d_`{anbhc dd de df dg d <u di dj dk dl dm d Cy doup dq dr ds dt d dv dw dx dy dz d CN d|}~ d d d d d  d d d d d d d d d d d d  d d d d d d CN d d d d d d d d d d d d d <u d d d d d d CN d d d d d d d d d d d d <u d d d d d d š d d d d d d = d, d d d d d d d d d d d d d d d d d = d d d d d d C] d d d d d d d d d d d d ~ d d d d d d d = d  d� d d d d d d d d d d Cy d d  d d d d d CN d d d d d d CN d d d d d d Cy d &! d" d# d$ d% d d' d( d) d* d+ d d-X.I/<061 d2 d3 d4 d5 d ~ d7 d8 d9 d: d; d d=C> d? d@ dA dB d dD dE dF dG dH d dJQ dKL dM dN dO dP d = dR dS dT dU dV dW d CN dYtZg[a\ d] d^ d_ d` d db dc dd de df d dhni dj dk dl dm d do dp dq dr ds d du| dvw dx dy dz d{ d d}~ d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d = d d d d d d = d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d d d d d d d <u d-  d d� d d d ~ d d d d d d = d  d d d d d d d d d d d d  d d d d d d d = d!'" d# d$ d% d& d d( d) d* d+ d, d = d.I/<061 d2 d3 d4 d5 d d7 d8 d9 d: d; d d=C> d? d@ dA dB d dD dE dF dG dH d dJWKQL dM dN dO dP d dR dS dT dU dV d dX^Y dZ d[ d\ d] d d_ d` da db dc d CN defg?hijkxlrm dn do dp dq d  ds dt du dv dw d  dyz d{ d| d} d~ d d d d d d d d d d d d d C] d d d d d d  d d d d d d d d d d d d d d d d d d Cy d d d d d d  d d d d d d d d d d d d  d d d d d d  d d d d d d <u d d d d d d d d d d d d  d  d d d d d = d d d d d d CN d d d d d d d d d d d d d d d d d d d <u d d d� d d d d d d d d d <u d $   d d d d = d d d d d d d d d d d d d d d! d" d# d ~ d%2&,' d( d) d* d+ d  d- d. d/ d0 d1 d = d394 d5 d6 d7 d8 d d: d; d< d= d> d d@AeB]CPDJE dF dG dH dI d  dK dL dM dN dO d dQWR dS dT dU dV d dX dY dZ d[ d\ d Cy d^ d_ d` da db dc dd d  dfgthni dj dk dl dm d do dp dq dr ds d t du{v dw dx dy dz d d| d} d~ d d d = d d d d d d d d d d d d = d d d d d d k d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d CN d d d d d d = d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d = d d d d d d t d d d d d d  d d d d� d d d d d d d d d  f < !  d d d d d ~ d d d d d d = d d d d d d d CN d"/#)$ d% d& d' d( d I d* d+ d, d- d. d  d061 d2 d3 d4 d5 d d7 d8 d9 d: d; d = d=X>K?E@ dA dB dC dD d ~ dF dG dH dI dJ d I7 dLRM dN dO dP dQ d dS dT dU dV dW d CN dY dZ`[ d\ d] d^ d_ d da db dc dd de d CN dghivjpk dl dm dn do d Cy dq dr ds dt du d dw}x dy dz d{ d| d d~ d d d d d d d d d d d = d d d d d d C] d d d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d t d d d d d d CN d d d d d d d Cy d  d d d d d d CN d d d d d d = d d d d d d d d d d d d  d d d d d d ~ d d d d d d d  d d d d d d d d d d d CN d� d d d d d  d d d d d d d   d d d d d = d d d d d d d d d d d d d d!R"=#0$*% d& d' d( d) d <u d+ d, d- d. d/ d d172 d3 d4 d5 d6 d d8 d9 d: d; d< d ~ d>K?E@ dA dB dC dD d CN dF dG dH dI dJ d = d dLM dN dO dP dQ d dSnTaU[V dW dX dY dZ d d\ d] d^ d_ d` d dbhc dd de df dg d = di dj dk dl dm d P dovp dq dr ds dt du d = dw}x dy dz d{ d| d P d~ d d d d d t d =D d d d d d <u d d d d d d d d d d d d d d d d d d d = d d d d d d t d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d = d d d d d d = d d d d d d d d d d d d = d d d d d d = d d d d d d d d d d d = d d d d d d d I7 d�  d d d d d  d d d d d d d d d d d d d d/" d d d d d d d d d! d d#)$ d% d& d' d( d d* d+ d, d- d. d  d0=172 d3 d4 d5 d6 d d8 d9 d: d; d< d CN d> d? d@ dA dB dC d dEFwGbHUIOJ dK dL dM dN d dP dQ dR dS dT d <u dV\W dX dY dZ d[ d d] d^ d_ d` da d P dcpdje df dg dh di d d dk dl dm dn do d CN dq dr ds dt du dv d dxyz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d d = d d d d d d CN d d d d d d d d d d d d d d d d d d <u d d d d d d CN d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d Cy d d d d d d = d d d d d d d  d� d d d d d d d d d d I7 d  d d d d d d d d d d d dH yH-&  ! d" d# d$ d% d Cy d d'( d) d* d+ d, d  d.;/50 d1 d2 d3 d4 d = d6 d7 d8 d9 d: d = d<B= d> d? d@ dA d = dC dD dE dF dG d = dIdJWKQL dM dN dO dP d dR dS dT dU dV d Cy dX^Y dZ d[ d\ d] d d_ d` da db dc d delf dg dh di dj dk d I dmsn do dp dq dr d dt du dv dw dx d  dz{|}~ d d d d d d d d d d d Cy d d d d d d d ƙ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d t d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d@  d d d d d  d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d� d d <u d d d d d d d d %   d d d d d d d d d d d CN d d d d d d = d d! d" d# d$ d  d&3'-( d) d* d+ d, d d. d/ d0 d1 d2 d ~ d4:5 d6 d7 d8 d9 d d; d< d= d> d? d  dAeBPCID dE dF dG dH d = d dJK dL dM dN dO d dQ^RXS dT dU dV dW d dY dZ d[ d\ d] d d d_` da db dc dd d = dfgthni dj dk dl dm d C] do dp dq dr ds d du{v dw dx dy dz d d| d} d~ d d d = d d d d d d Cy d d d d d d d d d d d d d dR d d d d d d = d d d d d d d = d d d d d d d d d d d d d d CN d d d d d d d d d d d d t d d d d d d Cy d d d d d d CN d d d d d d = d d d d d d d d d d d d d  d! d d d d d d d d d d d CN d� d d d d d <u d d d d d d CN d d d d d d d d d d d d Cy d d d d d d ~ d d d d d d d"7#0$*% d& d' d( d) d d+ d, d- d. d/ d  d d12 d3 d4 d5 d6 d d8E9?: d; d< d= d> d d@ dA dB dC dD d dFLG dH dI dJ dK d  dM dN dO dP dQ d Cy dSTyUjV]W dX dY dZ d[ d\ d d^d_ d` da db dc d de df dg dh di d dkr dlm dn do dp dq d Cy d dst du dv dw dx d dz{|} d~ d d d d d d d d d d I7 d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d CN d d d d d d P d d d d d d d d d d d d = d d d d d d t d d d d d d  d d d d d d d d d d d d d d d d d d C] d d d d d d d d d d d d Cy d d d d d d  d� d d d d d d d d d d d CN d d d d d d d dùyH-  d d d d d  d d d d d d d!'" d# d$ d% d& d d( d) d* d+ d, d d.;/50 d1 d2 d3 d4 d  d6 d7 d8 d9 d: d d<B= d> d? d@ dA d dC dD dE dF dG d dI^JQ dKL dM dN dO dP d dRXS dT dU dV dW d dY dZ d[ d\ d] d CN d_l`fa db dc dd de d Cy dg dh di dj dk d dmsn do dp dq dr d dt du dv dw dx d dz»{ |ƒ} d~ d d€ d d‚ d = d„š… d† d‡ dˆ d‰ dŠ d‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™  dQ › dœ d dž dŸ d d¡®¢¨£ d¤ d¥ d¦ d§ d d© dª d« d¬ d­ d d¯µ° d± d² d³ d´ d t d¶ d· d¸ d¹ dº d d¼½¾¿ d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  dV  d d d d d  d d d d d d CN d d� d d d d  d d d d d d = d  d  d d d d d d d d d d d d d d d d d Cy d ;!."(# d$ d% d& d' d d) d* d+ d, d- d d/50 d1 d2 d3 d4 d <u d6 d7 d8 d9 d: d CN d<I=C> d? d@ dA dB d dD dE dF dG dH d dJPK dL dM dN dO d dQ dR dS dT dU d  dWÈXsYfZ`[ d\ d] d^ d_ d = da db dc dd de d dgmh di dj dk dl d <u dn do dp dq dr d dtÁu{v dw dx dy dz d d| d} d~ d dÀ d d dÂà dÄ dÅ dÆ dÇ d dÉäÊ×ËÑÌ dÍ dÎ dÏ dÐ d Cy dÒ dÓ dÔ dÕ dÖ d  dØÞÙ dÚ dÛ dÜ dÝ d = dß dà dá dâ dã d CN dåì dæç dè dé dê dë d díóî dï dð dñ dò d dô dõ dö d÷ dø d  dúćûüýþÿ d d d d d ~ d d d d d d d d d d d d d d d d d d CN d d d d d d  d d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d� d d d = d  d d d d d = d d d d d d d d d d d d = d d d d d d dV ;!."(# d$ d% d& d' d d) d* d+ d, d- d d/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d d<I=C> d? d@ dA dB d = dD dE dF dG dH d dJPK dL dM dN dO d dQ dR dS dT dU d P dWrXeY_Z d[ d\ d] d^ d d` da db dc dd d CN dflg dh di dj dk d dm dn do dp dq d dsz dtu dv dw dx dy d = d{ā| d} d~ d dĀ d ~ dĂ dă dĄ dą dĆ d dĈĉĺĊĥċĘČĒč dĎ dď dĐ dđ d P dē dĔ dĕ dĖ dė d  dęğĚ dě dĜ dĝ dĞ d = dĠ dġ dĢ dģ dĤ d CN dĦijħĭĨ dĩ dĪ dī dĬ d dĮ dį dİ dı dIJ d d dĴĵ dĶ dķ dĸ dĹ d dĻļĽľ dĿ d d d d d d d d d d d d d d d d C] d d d d d d CN d d d d d d  d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d� d š d d d d d d d  d   d d d d d d d d d d d d d d d d d d d9, &! d" d# d$ d% d d' d( d) d* d+ d Cy d-3. d/ d0 d1 d2 d Cy d4 d5 d6 d7 d8 d d:A; d< d= d> d? d@ d d dBC dD dE dF dG d Cy dIjJǢK_LMſNŤO\PVQ dR dS dT dU d CN dW dX dY dZ d[ d <u d]Ş^ d_ d` da db dc dd e f ghŃ ij k l m n o p q r s t uv w x y z {| } ~ ŀŁ ł cgń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Őő Œ œ Ŕŕ Ŗŗ Ř ř Ś ś Ŝŝ ş dŠ dš dŢ dţ d dťŲŦŬŧ dŨ dũ dŪ dū d dŭ dŮ dů dŰ dű d CN dųŹŴ dŵ dŶ dŷ dŸ d dź dŻ dż dŽ dž d = d d d d d d d d d d d d = d d d d d d  d d d d d d = d d d d d d  d d d d d d d d d d d d d = d( � d d d d d ~ d d d d d d P d d d d d d d d d d d d  d d d d d d  d d d d d d d" d d d d! d d# d$ d% d& d' d CN d)D*7+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d d8>9 d: d; d< d= d CN d? d@ dA dB dC d dERFLG dH dI dJ dK d dM dN dO dP dQ d > dSYT dU dV dW dX d = dZ d[ d\ d] d^ d d`-abwcpdje df dg dh di d dk dl dm dn do d d dqr ds dt du dv d dxyz d{ d| d} d~ d ƀ Ɓ Ƃ ƃƄ ƅƦ ƆƇ ƈ C?Ɖ C?Ɗ C?Ƌ C?ƌ C?ƍ C?Ǝ C? C?ƏƐ C?Ƒ C?ƒ C?Ɠ C?Ɣ C?ƕ C?Ɩ C? C?ƗƘƟ C?ƙ C?ƚ C?ƛƜ C? C?Ɲ C?ƞ C? C?Ơơ C?Ƣ C? C?ƣ C?Ƥƥ C? C?Ƨƨ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ưƱ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ ƺ ƻ Ƽ ƽƾ ƿ               I                       d d d d d Cy d d d d d d <u d d d d d d I7 d � d d d d d d d d d d d ~ d d  d d d d d d  d d d d d d d d d d d  d!'" d# d$ d% d& d d( d) d* d+ d, d d.q/J0=172 d3 d4 d5 d6 d d8 d9 d: d; d< d CN d>D? d@ dA dB dC d = dE dF dG dH dI d dKR dLM dN dO dP dQ d CN dSkT dU dV dW dX dY =Z =[ =\ =] =^ =_ =` =a =b =c =d =e =f =gi =h d6 =j = = il dm dn do dp d drLJszt du dv dw dx dy d d{ǁ| d} d~ d dǀ d dǂ dǃ dDŽ dDž ddž d dLjǕljǏNJ dNj dnj dǍ dǎ d = dǐ dǑ dǒ dǓ dǔ d dǖǜǗ dǘ dǙ dǚ dǛ d dǝ dǞ dǟ dǠ dǡ d dǣȒǤ5ǥǦǧǰǨǪǩ d = dǫ dǬ dǭ dǮ dǯ d = dDZDz ddz dǴ dǵ dǶ dǷ dǸǹ dǺǻǿǼ dǽ dǾ d iB d d d d iB d d d d iB d d d d iB d d d d iB d d d d iB d d d d d d d iB d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d�  d d d d d <u d d d d d d d d d d d d d d d d d d d(" d d d d! d ~ d# d$ d% d& d' d d)/* d+ d, d- d. d CN d0 d1 d2 d3 d4 d d6a7R8E9?: d; d< d= d> d <u d@ dA dB dC dD d dFLG dH dI dJ dK d = dM dN dO dP dQ d dSZT dU dV dW dX dY d d d[\ d] d^ d_ d` d dbwcj dde df dg dh di d dkql dm dn do dp d ~ dr ds dt du dv d = dxȅyz d{ d| d} d~ d dȀ dȁ dȂ dȃ dȄ d ~ dȆȌȇ dȈ dȉ dȊ dȋ d dȍ dȎ dȏ dȐ dȑ d I dȓȔȕȰȖȣȗȝȘ dș dȚ dț dȜ d P dȞ dȟ dȠ dȡ dȢ d dȤȪȥ dȦ dȧ dȨ dȩ d t dȫ dȬ dȭ dȮ dȯ d dȱȾȲȸȳ dȴ dȵ dȶ dȷ d dȹ dȺ dȻ dȼ dȽ d Cy dȿ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d Cy d d d d d d d d d d� d d d4  d d d d d  d d d d d d d d d d d d d Cy d'! d d d d d d d" d# d$ d% d& d d(.) d* d+ d, d- d = d/ d0 d1 d2 d3 d d5P6C7=8 d9 d: d; d< d d> d? d@ dA dB d dDJE dF dG dH dI d Cy dK dL dM dN dO d CN dQ]RWS dT dU dV d = dX dY dZ d[ d\ d d^d_ d` da db dc d  de df dg dh di d σ dkl3mnəoɊp}qwr ds dt du dv d t dx dy dz d{ d| d Cy d~Ʉ dɀ dɁ dɂ dɃ d dɅ dɆ dɇ dɈ dɉ d dɋɒ dɌɍ dɎ dɏ dɐ dɑ d dɓ dɔ dɕ dɖ dɗ dɘ d dɚɵɛɨɜɢɝ dɞ dɟ dɠ dɡ d  dɣ dɤ dɥ dɦ dɧ d dɩɯɪ dɫ dɬ dɭ dɮ d ~ dɰ dɱ dɲ dɳ dɴ d dɶɷɽɸ dɹ dɺ dɻ dɼ d dɾ dɿ d d d d d d d d d d d d d d d d CN d d d d d d d Cy d d d d d d Cy d d d d d d CN d d d d d d  d d d d d d š d d d d d d d C] d � d d d d d I d d d d d d = d  d d d d d  d d d d d d d&  d d d d d d! d" d# d$ d% d d'-( d) d* d+ d, d d. d/ d0 d1 d2 d CN d4ʣ5l6Q7D8>9 d: d; d< d= d P d? d@ dA dB dC d dEKF dG dH dI dJ d = dL dM dN dO dP d dR_SYT dU dV dW dX d CN dZ d[ d\ d] d^ d d`fa db dc dd de d = dg dh di dj dk d dmʈn{oup dq dr ds dt d C] dv dw dx dy dz d CN d|ʂ} d~ d dʀ dʁ d = dʃ dʄ dʅ dʆ dʇ d = dʉʖʊʐʋ dʌ dʍ dʎ dʏ d = dʑ dʒ dʓ dʔ dʕ d = dʗʝʘ dʙ dʚ dʛ dʜ d ~ dʞ dʟ dʠ dʡ dʢ d CN dʤʥʦʳʧʭʨ dʩ dʪ dʫ dʬ d dʮ dʯ dʰ dʱ dʲ d dʴʺʵ dʶ dʷ dʸ dʹ d <u dʻ dʼ dʽ dʾ dʿ d d d d d d d = d d d d d d ~ d d d d d d CN d d d d d d d d d d d d Cy d d d d d d CN d d d d d d = d d d d d d ` d d d d d d d� d d d d d <u d  d d d d d d d d d d d d˻jF+$ d d d d d <u d d d! d" d# d = d% d& d' d( d) d* d = d,9-3. d/ d0 d1 d2 d d4 d5 d6 d7 d8 d CN d:@; d< d= d> d? d = dA dB dC dD dE d CN dG\HO dIJ dK dL dM dN d = dPVQ dR dS dT dU d dW dX dY dZ d[ d P d] d^d_ d` da db dc d de df dg dh di d = dk˜lˇmznto dp dq dr ds d du dv dw dx dy d = d{ˁ| d} d~ d dˀ d  d˂ d˃ d˄ d˅ dˆ d  dˈˏ dˉˊ dˋ dˌ dˍ dˎ d dː˖ˑ d˒ d˓ d˔ d˕ d  d˗ d˘ d˙ d˚ d˛ d Cy d˝ˬ˞˥ d˟ˠ dˡ dˢ dˣ dˤ d = d d˦˧ d˨ d˩ d˪ d˫ d d˭˴ˮ d˯ d˰ d˱ d˲ d˳ d = d d˵˶ d˷ d˸ d˹ d˺ d d˼m˽#˾˿ d d d d d d d d d d d C] d d d d d d ~ d d d d d d C] d d d d d d d d d d d d d d d d d d Cy d d d d d d d š š š š š š š š š š š� š š š š š š š š š š š š š š š š š š š � š š š š š š š š š š š š š š!" š š $R%E&?' d( d) d* d+ d, d-. / 0 1 2̼3 4 5̐6l7S8F9@:=;< dQ   Cl>? dD   LACB  iK dQDE  %  GMHKIJ dD dQ  L  %NPO  L QR %  dQ dDTbU\VYWX  Cl Z[ iK Cl L Cl]`^_ dD  dD Cl Cla Cl dQcidgef Cl L Cl Lh Cl Cl Lj Cl Clk ( m̉n~o{pr iq  ist i u iv w x y z   i| }  i   ̀ ́ ̂ ̃ ̄̅ ̆ ̇ ̈  i ̊ ̋ ̌̎ ̍  L ̏  L̮̑̒ ̠̘̖̗̓̔̚̕    % ̙ dD ̛̞̜̝ Cl   dQ̟ dD iK ̡̨̢̥̣̤ dD  iĶ̦    (̩̬̪̫ %  dQ Cḽ   ̯ ̷̴̰̱̲ ̳ iK ̵̶  ( iK L̸̺̹  L  ̻  dQ̽ ̾ ̿G 7  -  I I  dQ I  N   %     dl   I L t  %   N  I I N %  N  I  I % I  % I  I I  � dD  dD I % I  I  I % % I  I   I   I   L  %  I t   I   I  ! "(#%$ I % &' 5  I 0)+* I %, I  . / 0 1 2 3 4 56 dQ dQ 8 9 : ; < = > ? @CA  B % D EF &  I H IJK L MNͼO͇PlQ^RV ISTU I  W[XY dD IZ I  &\]  dD_f`cab I ú L Ide & I N Igih I Ijk I dQm|nuorpq I Cl  %st I  N dQvywx I %z{ & L I }̀~ N I I ́͂̈́ͅ I̓   % i I͆ I ͈͉͖͍ͥ͊͐͋͌ I I͎͏ L I I ͓͑ ͒  %͔͕ I   L͙͚͗͛͘͞  I N͜͝ I % dQ %͟͢͠͡  Iͣͤ % Iͦʹͧͭͨͫͩͪ  dQ I % Iͬ 0 IͮͱͯͰ L I 0 iKͲͳ I % ͵ IͶ͹ͷ͸ iK ͺͻ N % I dDͽ ;Ϳ  I 5  I t 5  I & Cl I I I I  I ú I  I  I I      iK  N 5  I       I       I     I       I �  I          I   dD  N           I     I      ! " # $ % &' ( ) *  +, - . /;0613 I2 45   I 798  I :  I < =  > @ dA dB dC dD d  dFLG dH dI dJ dK d dM dN dO dP dQ d dS`TZU dV dW dX dY d  d[ d\ d] d^ d_ d  dagb dc dd de df d dh di dj dk dl d  dnΙo΄pwq dr ds dt du dv d = dx~y dz d{ d| d} d d d΀ d΁ d΂ d΃ d Cy d΅ΌΆ d· dΈ dΉ dΊ d΋ d ~ d΍ΓΎ dΏ dΐ dΑ dΒ d = dΔ dΕ dΖ dΗ dΘ d dΚεΛΨΜ΢Ν dΞ dΟ dΠ dΡ d = dΣ dΤ dΥ dΦ dΧ d  dΩίΪ dΫ dά dέ dή d dΰ dα dβ dγ dδ d  dζηνθ dι dκ dλ dμ d <u dξ dο d d d d I7 d d d d d d CN d d d d d d d)F  d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d� d d  d  d d d d d Cy d d d d d d d+ d d d d d Cy d d d d d d  d% d! d" d# d$ d Cy d& d' d( d) d* d CN d,9-3. d/ d0 d1 d2 d d4 d5 d6 d7 d8 d  d:@; d< d= d> d? d Cy dA dB dC dD dE d <u dGϪHyI^JWKQL dM dN dO dP d P dR dS dT dU dV d d dXY dZ d[ d\ d] d  d_l`fa db dc dd de d  dg dh di dj dk d dmsn do dp dq dr d dt du dv dw dx d dzϏ{ς| d} d~ d dπ dρ d  dσωτ dυ dφ dχ dψ d = dϊ dϋ dό dύ dώ d dϐϝϑϗϒ dϓ dϔ dϕ dϖ d  dϘ dϙ dϚ dϛ dϜ d P dϞϤϟ dϠ dϡ dϢ dϣ d  dϥ dϦ dϧ dϨ dϩ d CN dϫϬϭϺϮϴϯ dϰ dϱ dϲ dϳ d = dϵ d϶ dϷ dϸ dϹ d  dϻϼ dϽ dϾ dϿ d d d d d d d d = d d d d d d O d d d d d d = d d d d d d d d d d d d = d d d d d d d d d d d d = d d d d d d d       �          d d d d d = d d d d d d = d d d d d d ~ d# d d d! d" d  d$ d% d& d' d( d d*+Д,c-H.;/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d C] d<B= d> d? d@ dA d  dC dD dE dF dG d = dIVJPK dL dM dN dO d ~ dQ dR dS dT dU d = dW]X dY dZ d[ d\ d = d^ d_ d` da db d dderflg dh di dj dk d Cy dm dn do dp dq d dsyt du dv dw dx d = dz d{ d| d} d~ d = dЀЍЁЇЂ dЃ dЄ dЅ dІ d = dЈ dЉ dЊ dЋ dЌ d CN d dЎЏ dА dБ dВ dГ d = dЕЖЫЗФИОЙ dК dЛ dМ dН d dП dР dС dТ dУ d d dХЦ dЧ dШ dЩ dЪ d dЬйЭгЮ dЯ dа dб dв d dд dе dж dз dи d dкл dм dн dо dп d d d d d d d d d d d d d d d d d d d  d d d d d d C] d d d d d d d d d d d d = d d d d d d d d d d d d d = d_( d d d� d d = d d d d d d I d   d d d d d d d d d ~ d d d d d d d = d" d d d d! d ~ d# d$ d% d& d' d d)D*7+1, d- d. d/ d0 d  d2 d3 d4 d5 d6 d Cy d8>9 d: d; d< d= d ~ d? d@ dA dB dC d dERFLG dH dI dJ dK d  dM dN dO dP dQ d = dSYT dU dV dW dX d = dZ d[ d\ d] d^ d CN d`їa|bocid de df dg dh d <u dj dk dl dm dn d C] dpvq dr ds dt du d CN dw dx dy dz d{ d CN d}ъ~ф dр dс dт dу d dх dц dч dш dщ d CN dыёь dэ dю dя dѐ d Cy dђ dѓ dє dѕ dі d I7 dјѭљѠ dњћ dќ dѝ dў dџ d = dѡѧѢ dѣ dѤ dѥ dѦ d dѨ dѩ dѪ dѫ dѬ d dѮѯѰ dѱ dѲ dѳ dѴ dѵ d Ѷѷ Ѹ ѹ Ѻ ѻ Ѽ IѽѾ ѿ                  Sl    Sl            Sl d d d d d d d d d d d d d d d d d d�d3  d d d d d d d d d d d d d d d d d d d d d d d  d, &! d" d# d$ d% d d' d( d) d* d+ d = d d-. d/ d0 d1 d2 d CN d4O5B6<7 d8 d9 d: d; d ~ d= d> d? d@ dA d dCID dE dF dG dH d dJ dK dL dM dN d dPWQ dR dS dT dU dV d CN dX^Y dZ d[ d\ d] d <u d_ d` da db dc d I7 deҜfҁgthni dj dk dl dm d do dp dq dr ds d du{v dw dx dy dz d  d| d} d~ d dҀ d d҂ҏ҃҉҄ d҅ d҆ d҇ d҈ d dҊ dҋ dҌ dҍ dҎ d dҐҖґ dҒ dғ dҔ dҕ d dҗ dҘ dҙ dҚ dқ d dҝҸҞҫҟҥҠ dҡ dҢ dң dҤ d  dҦ dҧ dҨ dҩ dҪ d dҬҲҭ dҮ dү dҰ dұ d Cy dҳ dҴ dҵ dҶ dҷ d dҹҺһ dҼ dҽ dҾ dҿ d t d d d d d d  d d d d d d d dV d d d d d  d d d d d d d d d d d d d d                        �     d d d d d Cy d d d d d d I d d d d d d <u d d d d d d CN d ;!."(# d$ d% d& d' d d) d* d+ d, d- d Cy d/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d  d<I=C> d? d@ dA dB d = dD dE dF dG dH d dJPK dL dM dN dO d dQ dR dS dT dU d dWӈXsYfZ`[ d\ d] d^ d_ d da db dc dd de d Cy dgmh di dj dk dl d = dn do dp dq dr d CN dt{u dv dw dx dy dz d d|ӂ} d~ d dӀ dӁ d dӃ dӄ dӅ dӆ dӇ d dӉӞӊӑ dӋӌ dӍ dӎ dӏ dӐ d CN dӒӘӓ dӔ dӕ dӖ dӗ d dә dӚ dӛ dӜ dӝ d C] dӟӬӠӦӡ dӢ dӣ dӤ dӥ d = dӧ dӨ dө dӪ dӫ d dӭӮ dӯ dӰ dӱ dӲ dӳ dӴ =ӵ =Ӷ =ӷ =Ӹ =ӹ =Ӻ =ӻ =Ӽ =ӽ =Ӿ =ӿ = = = =  = d d d d d Cy dԬJ d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d d d d d d d d d d d d� d d d d  d d d d d = d d d d d d d d d d d d CN d d d d d d Cy d -!'" d# d$ d% d& d d( d) d* d+ d, d C] d.4/ d0 d1 d2 d3 d = d5 d6 d7 d8 d9 d: d ;< => ? @ A B C D E F G HI 8w KuLZ dMNTO dP dQ dR dS d Cy dU dV dW dX dY d = d[h\b] d^ d_ d` da d <u dc dd de df dg d = dioj dk dl dm dn d <u dp dq dr ds dt d Cy dvԑwԄx~y dz d{ d| d} d = d dԀ dԁ dԂ dԃ d t dԅԋԆ dԇ dԈ dԉ dԊ d = dԌ dԍ dԎ dԏ dԐ d ~ dԒԟԓԙԔ dԕ dԖ dԗ dԘ d Cy dԚ dԛ dԜ dԝ dԞ d ~ dԠԦԡ dԢ dԣ dԤ dԥ d = dԧ dԨ dԩ dԪ dԫ d  dԭԮԯ԰ԽԱԷԲ dԳ dԴ dԵ dԶ d dԸ dԹ dԺ dԻ dԼ d = dԾԿ d d d d d d d d d d d CN d d d d d d = d d d d d d CN d d d d d d = d d d d d d d d d d d d = d d d d d d d d d d d d  d d d d d� d d  d d d d d d d d d d d d d d d d d CN d d d d d d  dN9, &! d" d# d$ d% d d' d( d) d* d+ d CN d-3. d/ d0 d1 d2 d = d4 d5 d6 d7 d8 d <u d:A; d< d= d> d? d@ d dBHC dD dE dF dG d Cy dI dJ dK dL dM d  dOjP]QWR dS dT dU dV d dX dY dZ d[ d\ d <u d^d_ d` da db dc d ~ de df dg dh di d dkr dlm dn do dp dq d dsyt du dv dw dx d dz d{ d| d} d~ d = dՀرՁՂBՃՄըՅՓՆ dՇՍՈ dՉ dՊ dՋ dՌ d d dՎ dՏ dՐ dՑ dՒ d <u dՔաՕ՛Ֆ d՗ d՘ dՙ d՚ d Cy d՜ d՝ d՞ d՟ dՠ d dբ dգ dդ dե dզ dէ d dթժշիձլ dխ dծ dկ dհ d dղ dճ dմ dյ dն d Cy dովչ dպ dջ dռ dս d = dտ d d d d d d d d d d d  d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d  d� d d d d d d d d d d d d  d d d d d = d-  d d d d d = d d d d d d ~ d!'" d# d$ d% d& d d( d) d* d+ d, d CN d.;/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d d d<= d> d? d@ dA d dC֬DuE`FSGMH dI dJ dK dL d dN dO dP dQ dR d Cy dTZU dV dW dX dY d = d[ d\ d] d^ d_ d CN danbhc dd de df dg d di dj dk dl dm d CN d dop dq dr ds dt d CN dv֑wքx~y dz d{ d| d} d d dր dց dւ dփ d dօ֋ֆ dև dֈ d։ d֊ d d֌ d֍ d֎ d֏ d֐ d d֒֟֓֙֔ d֕ d֖ d֗ d֘ d ~ d֚ d֛ d֜ d֝ d֞ d d֦֠֡ d֢ d֣ d֤ d֥ d d֧ d֨ d֩ d֪ d֫ d dְֱֵֻ֭֮֯ dֲ dֳ dִ d  dֶ dַ dָ dֹ dֺ d dּֽ d־ dֿ d d d = d d d d d d  d d d d d d d d d d d d = d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d� d d d d d d d d d d d d d  dyB' d d d d d d Cy d! d d d d d d" d# d$ d% d& d d(5)/* d+ d, d- d. d d0 d1 d2 d3 d4 d d6<7 d8 d9 d: d; d d= d> d? d@ dA d dC^DQEKF dG dH dI dJ d = dL dM dN dO dP d dRXS dT dU dV dW d = dY dZ d[ d\ d] d d_l`fa db dc dd de d P dg dh di dj dk d dmsn do dp dq dr d CN dt du dv dw dx d  dzױ{ז|׉}׃~ d d׀ dׁ dׂ d dׄ dׅ d׆ dׇ d׈ d CN d׊א׋ d׌ d׍ d׎ d׏ d = dב dג dד dה dו d CN dחפטמי dך dכ dל dם d dן dנ dס dע dף d = dץ׫צ dק dר dש dת d Cy d׬ d׭ d׮ dׯ dװ d CN dײ׳״׺׵ d׶ d׷ d׸ d׹ d = d׻ d׼ d׽ d׾ d׿ d Cy d d d d d d Cy d d d d d d d d d d d d ~ d d d d d d  d d d d d d C? d d d d d d  dN#� d d d d d  d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d! d" d d$9%2&,' d( d) d* d+ d d- d. d/ d0 d1 d d d34 d5 d6 d7 d8 d = d:G;A< d= d> d? d@ d  dB dC dD dE dF d d dHI dJ dK dL dM d dOzPeQX dRS dT dU dV dW d š dY_Z d[ d\ d] d^ d  d` da db dc dd d dfsgmh di dj dk dl d dn do dp dq dr d = d dtu dv dw dx dy d d{ؖ|؉}؃~ d d؀ d؁ d؂ d d؄ d؅ d؆ d؇ d؈ d d؊ؐ؋ d، d؍ d؎ d؏ d CN dؑ dؒ dؓ dؔ dؕ d dؗؤؘ؞ؙ dؚ d؛ d؜ d؝ d Cy d؟ dؠ dء dآ dأ d dإثئ dا dب dة dت d dج dح dخ dد dذ d CN dز1سkشصضطظؾع dغ dػ dؼ dؽ d <u dؿ d d d d d d d iB iB d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d� d  d d d d d d d <u d : %   d d d d d = d d d d d d P d d d d d d CN d d! d" d# d$ d d&-' d( d) d* d+ d, d = d.4/ d0 d1 d2 d3 d = d5 d6 d7 d8 d9 d d;P<I=C> d? d@ dA dB d = dD dE dF dG dH d I7 d dJK dL dM dN dO d dQ^RXS dT dU dV dW d dY dZ d[ d\ d] d d_e` da db dc dd d = df dg dh di dj d dlm٤nىo|pvq dr ds dt du d dw dx dy dz d{ d d d}ك~ d dـ dف dق d t dل dم dن dه dو d CN dيًٌّٗ dٍ dَ dُ dِ d = dْ dٓ dٔ dٕ dٖ d = d٘ٞٙ dٚ dٛ dٜ dٝ d Cy dٟ d٠ d١ d٢ d٣ d Cy d٥٦ٳ٧٭٨ d٩ d٪ d٫ d٬ d dٮ dٯ dٰ dٱ dٲ d  dٴٺٵ dٶ dٷ dٸ dٹ d dٻ dټ dٽ dپ dٿ d Cy d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d ~ d d d d d d = d d d d d d d d d d d d d d d d  d d� d d d d d d d d d d  d d d d d d d d d d d d$ d d d d d d d d! d" d# d d%+& d' d( d) d* d <u d, d- d. d/ d0 d d23ڡ4e5P6C7=8 d9 d: d; d< d  d> d? d@ dA dB d dDJE dF dG dH dI d dK dL dM dN dO d dQ^RXS dT dU dV dW d Cy dY dZ d[ d\ d] d d d_` da db dc dd d dfځgthni dj dk dl dm d IF do dp dq dr ds d du{v dw dx dy dz d = d| d} d~ d dڀ d dڂڏڃډڄ dڅ dچ dڇ dڈ d dڊ dڋ dڌ dڍ dڎ d = dڐڛڑ dڒ dړ dڔ dڕ dږ dڗ dژ dڙ dښ d  Eڜ dڝ dڞ dڟ dڠ d dڢڣڷڤڱڥګڦ dڧ dڨ dک dڪ d = dڬ dڭ dڮ dگ dڰ d dڲ dڳ dڴ dڵ dڶ d dڸڹڿں dڻ dڼ dڽ dھ d d d d d d d d d d d d d d d d d d d d = d d d d d d Cy d d d d d d = d d d d d d CN d d d d d d d d d d d d d d d d d d  d d d� d d d CN d۔]B5/ d d d d d d = = =+ = = = = = =" = = = i = = =! = d6 =#'$ =% =& = i =( =) =* =  =, =- =. = d6 =0 d1 d2 d3 d4 d d6<7 d8 d9 d: d; d d= d> d? d@ dA d = dCPDJE dF dG dH dI d = dK dL dM dN dO d = dQWR dS dT dU dV d Cy dX dY dZ d[ d\ d š d^y_l`fa db dc dd de d dg dh di dj dk d dmsn do dp dq dr d <u dt du dv dw dx d Cy dzۇ{ہ| d} d~ d dۀ d dۂ dۃ dۄ dۅ dۆ d = dۈێۉ dۊ dۋ dی dۍ d = dۏ dې dۑ dے dۓ d = dەۖ۫ۗۤۘ۞ۙ dۚ dۛ dۜ d۝ d C] d۟ d۠ dۡ dۢ dۣ d = dۥ dۦ dۧ dۨ d۩ d۪ d = d۬۹ۭ۳ۮ dۯ d۰ d۱ d۲ d d۴ d۵ d۶ d۷ d۸ d dۺ dۻ dۼ d۽ d۾ dۿ d d d d d d d <u d d d d d d CN d d d d d d d = d d d d d d  d d d d d d  d d d d d d d d d d d d = d:Aݍ_.� d d d d d = d d d d d d CN d  d d d d d = d d d d d d  d! d d d d d  d d d d d d CN d"(# d$ d% d& d' d d) d* d+ d, d- d  d/D0=172 d3 d4 d5 d6 d <u d8 d9 d: d; d< d d d>? d@ dA dB dC d Cy dERFLG dH dI dJ dK d dM dN dO dP dQ d CN dSYT dU dV dW dX d dZ d[ d\ d] d^ d d`܋a|bocid de df dg dh d  dj dk dl dm dn d CN dpvq dr ds dt du d = dw dx dy dz d{ d ~ d}܄ d~ d܀ d܁ d܂ d܃ d d d܅܆ d܇ d܈ d܉ d܊ d d܌ܧ܍ܚ܎ܔ܏ dܐ dܑ dܒ dܓ d Cy dܕ dܖ dܗ dܘ dܙ d CN dܛܡܜ dܝ dܞ dܟ dܠ d  dܢ dܣ dܤ dܥ dܦ d  dܨܵܩܯܪ dܫ dܬ dܭ dܮ d = dܰ dܱ dܲ dܳ dܴ d ` dܼܷܶ dܸ dܹ dܺ dܻ d Cy dܽ dܾ dܿ d d d d& d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d  d d d d d  d d d d d d d� d d d d d  d d d d d d Cy d   d d d d d Cy d d d d d d d  d d d d d <u d! d" d# d$ d% d d'\(C)6*0+ d, d- d. d/ d  d1 d2 d3 d4 d5 d  d7=8 d9 d: d; d< d d d> d? d@ dA dB d dDOEIF dG dH d dJ dK dL dM dN d dPVQ dR dS dT dU d <u dW dX dY dZ d[ d CN d]r^k_e` da db dc dd d  df dg dh di dj d = dl dm dn do dp dq d CN ds݀tzu dv dw dx dy d d{ d| d} d~ d d d݂݁݇ d݃ d݄ d݅ d݆ d d݈ d݉ d݊ d݋ d݌ d  dݎUݏݐݑݦݒݙ dݓݔ dݕ dݖ dݗ dݘ d CN dݚݠݛ dݜ dݝ dݞ dݟ d Cy dݡ dݢ dݣ dݤ dݥ d dݧݴݨݮݩ dݪ dݫ dݬ dݭ d = dݯ dݰ dݱ dݲ dݳ d CN dݵݻݶ dݷ dݸ dݹ dݺ d = dݼ dݽ dݾ dݿ d d CN d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d  d d d d d d d* d d d d d = d d d d� d d d  d d d d d d d d d d d d d d d d d ~ d d d d d d = d$ d d! d" d# d d% d& d' d( d) d d+@,3 d-. d/ d0 d1 d2 d C] d4:5 d6 d7 d8 d9 d d; d< d= d> d? d dAH dBC dD dE dF dG d <u dIOJ dK dL dM dN d CN dP dQ dR dS dT d ~ dV޹WވXsYfZ`[ d\ d] d^ d_ d Cy da db dc dd de d dgmh di dj dk dl d dn do dp dq dr d dtށu{v dw dx dy dz d = d| d} d~ d dހ d d dނރ dބ dޅ dކ dއ d CN dމޤފޗދޑތ dލ dގ dޏ dސ d ~ dޒ dޓ dޔ dޕ dޖ d I7 dޘޞޙ dޚ dޛ dޜ dޝ d dޟ dޠ dޡ dޢ dޣ d  dޥ޲ަެާ dި dީ dު dޫ d t dޭ dޮ dޯ dް dޱ d d޳ d޴ d޵ d޶ d޷ d޸ d d޺޻޼޽޾ d޿ d d d d d d d d d d Cy d d d d d d = d d d d d d = d d d d d d d Cy d d d d d d P d d d d d d CN d& d d d d d d <u d  d d d d d d    �           I  Sl  Sl      Sl #   ! d" d# d$ d% d C] d'4(.) d* d+ d, d- d = d/ d0 d1 d2 d3 d CN d5;6 d7 d8 d9 d: d d< d= d> d? d@ d dBCDcE,FGTHNI dJ dK dL dM d Cy dO dP dQ dR dS d = dU[V dW dX dY dZ d d\ d] d^ d_ d` da db šc šd še šf šg šh ši šj šk šl šm šn šo šp šqr šs št šu šv šw šx šy šz š{ š| š} š~ š š߀ š߁ š߂ š߃ š߄ š߅ š߆ š߇ š߈ š߉ šߊ šߋ šߌ šߍ šߎ šߏ šߐ šߑ šߒ šߓ šߔ šߕ šߖ šߗ šߘ šߙ šߚ šߛ šߜ šߝ šߞ šߟ šߠ šߡ šߢ šߣ šߤ šߥ šߦ šߧ šߨ šߩ šߪ š߫ š߬ š߭ š߮ š߯ š߰ š߱ š߲ š߳ šߴ šߵ š߶ š߷ š߸ š߹ šߺ š߻ š߼ š߽ š߾ š߿ š š : š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š š > š d d d d d Cy d d d d d d d &! d" d# d$ d% d d' d( d) d* d+ d CN d-H.;/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d d<B= d> d? d@ dA d dC dD dE dF dG d C] dIVJPK dL dM dN dO d I7 dQ dR dS dT dU d <u dW]X dY dZ d[ d\ d d^ d_ d` da db d ddefsgmh di dj dk dl d = dn do dp dq dr d dtzu dv dw dx dy d <u d{ d| d} d~ d d CN d d d d d d Cy d d d d d d CN d d d d d d d CN d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d  d d d d d d <u d d d d d d5 d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d = d d� d d d d d d d d d d d Cy d d d d d d d d d d d d = d(" d d d d! d Cy d# d$ d% d& d' d CN d)/* d+ d, d- d. d d0 d1 d2 d3 d4 d CN d6m7R8E9?: d; d< d= d> d Cy d@ dA dB dC dD d CN dFLG dH dI dJ dK d = dM dN dO dP dQ d CN dS`TZU dV dW dX dY d = d[ d\ d] d^ d_ d  dagb dc dd de df d C] dh di dj dk dl d  dno|pvq dr ds dt du d dw dx dy dz d{ d d}~ d d d d d iX d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d dr  d d d d d d  d d d d d d d d d d d d d = d d d d d d = d d d d d d d d d d d d CN d d d d d d d d d d d d Cy d d d d d d = d d d d d d CN d d d d d d d d d d d d d d d� d d d d d d d d d d A &   d d d d d ~ d d d d d d d  d d d d d = d! d" d# d$ d% d ~ d'4(.) d* d+ d, d- d CN d/ d0 d1 d2 d3 d CN d5;6 d7 d8 d9 d: d  d< d= d> d? d@ d CN dBWCPDJE dF dG dH dI d dK dL dM dN dO d d dQR dS dT dU dV d dXeY_Z d[ d\ d] d^ d d` da db dc dd d t dflg dh di dj dk d dm dn do dp dq d dstuvw|x dy dz d{ d = d} d~ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d C] d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d = d d d d d d d  d d d d d d d d CN d d d d d d d  d d d d d d = d d d d d d CN d d� d d d  I d d d d d d %   d d d d d  d d d d d d  d d d d d d Cy d d! d" d# d$ d d&- d'( d) d* d+ d, d CN d.4/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d  d;<=;>?u@ZANBHC dD dE dF dG d CN dI dJ dK dL dM d dOTP dQ dR dS d dU dV dW dX dY d CN d[h\b] d^ d_ d` da d dc dd de df dg d CN dioj dk dl dm dn d = dp dq dr ds dt d CN dvwx~y dz d{ d| d} d d d d d d d <u d d d d d d d d d d d d CN d d d d d d Cy d d d d d d d d d d d d t d d d d d d d d d d d d d d d d d d CN d d d d d d d                          # d d d d d  d d d d d d = d d d d d d d d d d d d š d d� d d d d d   d d d d d d d d d d d = d d d d d d d d d d d d CN d!."(# d$ d% d& d' d P d) d* d+ d, d- d Cy d/50 d1 d2 d3 d4 d ~ d6 d7 d8 d9 d: d = d<=n>Y?L@FA dB dC dD dE d dG dH dI dJ dK d dMSN dO dP dQ dR d dT dU dV dW dX d CN dZa d[\ d] d^ d_ d` d dbhc dd de df dg d t di dj dk dl dm d dop}qwr ds dt du dv d = dx dy dz d{ d| d CN d d~ d d d d d d d d d d d d d d d d d Ir d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d d d d d d d d d Cy d d d d d d CN d d d d d d d d d d d š d d d d d d  d d d d d d t d d d d d d d d d d d d d� d d d d d d d d d d d  d W 4   d d d d d d d d d d d d d d d d d d k d d! d" d# d$ d% d& ' ( ) * + , - . / 0 1 2 C?3 C? 5J6<7 d8 d9 d: d; d = d= d> d? d@ dA dB dC D E F G H I cKQL dM dN dO dP d = dR dS dT dU dV d dXmYfZ`[ d\ d] d^ d_ d da db dc dd de d = d dgh di dj dk dl d dn{oup dq dr ds dt d dv dw dx dy dz d d|} d~ d d d d d d d d d d CN d d d d d d d d  d d d d d d  d d d d d d  d d d d d d E d d d d d d d d d d d d d d d d d d  d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  dH d d d d d = d d d d d d = d d d d d d d d d d� d d  d  d d d d d = d d d d d d CN d d d d d d d d3&  d d d d d Cy d! d" d# d$ d% d d'-( d) d* d+ d, d d. d/ d0 d1 d2 d  d4A5;6 d7 d8 d9 d: d d< d= d> d? d@ d d dBC dD dE dF dG d CN dItJeKXLRM dN dO dP dQ d dS dT dU dV dW d  dY_Z d[ d\ d] d^ d d` da db dc dd d dfm dgh di dj dk dl d P d dno dp dq dr ds d Cy duvw}x dy dz d{ d| d  d~ d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d = d d d d d d dK! d d d d d C] d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d Cy d d d d d d CN d d d d d d d d d d d d Cy d d d d d d  d d d d d d d d d d d d Cy d d� d d d d d d d d d d d š š š š š š š š š š š š š š š > š d d d d d d"Y#>$1%+& d' d( d) d* d = d, d- d. d/ d0 d I7 d283 d4 d5 d6 d7 d d9 d: d; d< d= d CN d?L@FA dB dC dD dE d = dG dH dI dJ dK d dMSN dO dP dQ dR d dT dU dV dW dX d  dZu[h\b] d^ d_ d` da d dc dd de df dg d = dioj dk dl dm dn d dp dq dr ds dt d CN dv} dwx dy dz d{ d| d d~ d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d = d d d d d d d = d d d d d d d d d d d d d d d d d d d CN d d d d d d  d d d d d d = d d d d d d = d d d d d d d d d d d d d d d d d d Cy d d d d d d d = d d d d d d d� d d d d d = d d d d d d d C] d d d d d d d d d d d d C] d6)# d d d! d" d = d$ d% d& d' d( d  d*0+ d, d- d. d/ d Cy d1 d2 d3 d4 d5 d ~ d7> 89 d: d; d< d= d d?E@ dA dB dC dD d dF dG dH dI dJ d <u dLMNOjP]QWR dS dT dU dV d dX dY dZ d[ d\ d CN d^d_ d` da db dc d Cy de df dg dh di d dkxlrm dn do dp dq d  ds dt du dv dw d dyz d{ d| d} d~ d d d d d d d CN d d d d d d  d d d d d d = d d d d d d = d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d  d d d d d d CN d d d d d d d d d d d d d d d d d d ~ d d d d d d d <u d d d d d d CN d d d d d d = d� d d d d d d  d d d d d d d d d d d C] d|E*# d d d d d P d d d d! d" d CN d d$% d& d' d( d) d d+8,2- d. d/ d0 d1 d <u d3 d4 d5 d6 d7 d CN d9?: d; d< d= d> d d@ dA dB dC dD d dFaGTHNI dJ dK dL dM d = dO dP dQ dR dS d dU[V dW dX dY dZ d = d\ d] d^ d_ d` d dbocid de df dg dh d š dj dk dl dm dn d = dpvq dr ds dt du d  dw dx dy dz d{ d  d}~ d d d d d Cy d d d d d d = d d d d d d t d d d d d d d d d d d d C] d d d d d d CN d d d d d d d Cy d d d d d d d d d d d d  d d d d d d ~ d d d d d d CN d d d d d d <u d d d d d d d d d d d d = d d d d d d d(J d d d d  d d d d d d d d d d d� d Cy d d d d d d d d  d d d d d d d d d d d CN d d d d d d d d,% d d! d" d# d$ d d d&' d( d) d* d+ d = d-./ d0 d1 d2 d3 d4 d5 6 7 8 9: ;< = >X?S@KAD BC IEHFG I IJ LP MNO Q R " T U V W " Y Z[ \ ] ^_ ` a b cpdnemf gjh i k l o J qsr t uv}w x y z {| ~                 I          &  "    h                  I  I I   I d d d d d š d d d d d d d d d d d d d d d d d d d d d d d C] d d d d d d = d d d d d d d � d d d d d d d d d d d d = d d  d d d d d d/" d d d d d d d d d d! d = d#)$ d% d& d' d( d CN d* d+ d, d- d. d Cy d0=172 d3 d4 d5 d6 d d8 d9 d: d; d< d d>D? d@ dA dB dC d = dE dF dG dH dI d dKLMgNZOTP dQ dR dS d dU dV dW dX dY d d[a\ d] d^ d_ d` d = db dc dd de df d dhuioj dk dl dm dn d = dp dq dr ds dt d dv|w dx dy dz d{ d d} d~ d d d d = d d d d d d <u d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d C] d � d d d d d <u d d d d d d = d d d d d d d d d d d d  d d d d d d d d d d d d d" d d d d! d d# d$ d% d& d' d d)*+b,G-:.4/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d d;A< d= d> d? d@ d  dB dC dD dE dF d CN dHUIOJ dK dL dM dN d = dP dQ dR dS dT d  dV\W dX dY dZ d[ d d] d^ d_ d` da d dcrdk def dg dh di dj d dl dm dn do dp dq d = dstzu dv dw dx dy d ~ d{ d| d} d~ d d d d d d d d d ~ d d d d d d = d d d d d d d d d d d d = d d d d d d = d d d d d d <u d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d t d d d d d d = d d d d d d d d d d d d = d d d d d d I7 d d d d d d Cy d d d d d d dq@% d d d d� d d d d d d d ~ d d d d d d Cy d d d d d d d š š š š š š š š š š š š! š" š#$ š > > š&3'-( d) d* d+ d, d = d. d/ d0 d1 d2 d CN d4:5 d6 d7 d8 d9 d d; d< d= d> d? d dA\BOCID dE dF dG dH d Cy dJ dK dL dM dN d dPVQ dR dS dT dU d dW dX dY dZ d[ d d]d d^_ d` da db dc d CN dekf dg dh di dj d dl dm dn do dp d C] drstu{v dw dx dy dz d d| d} d~ d d d d d d d d d d d d d d d ~ d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d diR� d d d d d d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d CN d7*$ d d! d" d# d  d% d& d' d( d) d d+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d d8E9?: d; d< d= d> d t d@ dA dB dC dD d dFLG dH dI dJ dK d dM dN dO dP dQ d  dSTiUbV\W dX dY dZ d[ d d] d^ d_ d` da d d dcd de df dg dh d djkl dm dn do dp dq drst šu šv šw šx šyz š{ š| š} š~ š š š š š š š š š š š š š : š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š � š š š š š š š š š š š š š š > š š š š š š d d d d d ~ d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d� d d d d d d d dp ? $   d d d d t d d d d d d d d d d d d d d d! d" d# d d%2&,' d( d) d* d+ d  d- d. d/ d0 d1 d d394 d5 d6 d7 d8 d  d: d; d< d= d> d d@[ANBHC dD dE dF dG d dI dJ dK dL dM d dOUP dQ dR dS dT d = dV dW dX dY dZ d d\c d]^ d_ d` da db d ddje df dg dh di d ~ dk dl dm dn do d dq2rstu dv dw dx dy dz d{| } ~           I I #                                                                                    # I            d d d d d CN d d d d d d�                # I  d d d d d d% d d d d d d d! d" d# d$ d CN d&,' d( d) d* d+ d d- d. d/ d0 d1 d d3N4A5;6 d7 d8 d9 d: d Cy d< d= d> d? d@ d CN dBHC dD dE dF dG d = dI dJ dK dL dM d CN dO\PVQ dR dS dT dU d <u dW dX dY dZ d[ d d]c^ d_ d` da db d = dd de df dg dh d dj7klm|nu dop dq dr ds dt d d dvw dx dy dz d{ d d}~ d d d d d d d d d d d d d d d d d = d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d Cy d d d d d d d d d d d d Cy d� d d d d d = d d d d d d Cy d d d d d d d d d d d d Cy d d d d d d = d d d d d d Cy d d d d d d d d d d d d Cy d  d d d d d = d d d d d d d d d d d d d d d d d d d*$ d d! d" d# d  d% d& d' d( d) d d+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d d89p:U;H<B= d> d? d@ dA d I7 dC dD dE dF dG d dIOJ dK dL dM dN d dP dQ dR dS dT d dVcW]X dY dZ d[ d\ d <u d^ d_ d` da db d ddje df dg dh di d dk dl dm dn do d dqr dsyt du dv dw dx d dz d{ d| d} d~ d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d CN d`�i8  d d d d CN d d d d d d d d d d d d d d d d d d <u d+% d! d" d# d$ d Cy d& d' d( d) d* d d,2- d. d/ d0 d1 d d3 d4 d5 d6 d7 d CN d9N:A d;< d= d> d? d@ d dBHC dD dE dF dG d dI dJ dK dL dM d  dO\PVQ dR dS dT dU d dW dX dY dZ d[ d Cy d]c^ d_ d` da db d dd de df dg dh d djklymsn do dp dq dr d dt du dv dw dx d dz{ d| d} d~ d d iX d d d d d d  d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d I d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d dB  d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d  d� d d d d d d d d d d d  d '  d d d d d d d d d d d d! d d d d d d" d# d$ d% d& d ~ d(5)/* d+ d, d- d. d  d0 d1 d2 d3 d4 d d6<7 d8 d9 d: d; d d= d> d? d@ dA d = dCzD_ERFLG dH dI dJ dK d t dM dN dO dP dQ d dSYT dU dV dW dX d dZ d[ d\ d] d^ d d`magb dc dd de df d <u dh di dj dk dl d dnto dp dq dr ds d du dv dw dx dy d = d{| d}~ d d d d d d d d d d d = d d d d d d d d d d d d d <u <u <u I <u d d d d d d d d d d d = d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d CN d d d d d d d� d d d d d CN d  d d d d d  d d d d d d  d d d d d d d d d d d d <u d!L"7#0$*% d& d' d( d) d t d+ d, d- d. d/ d d d12 d3 d4 d5 d6 d d8E9?: d; d< d= d> d d@ dA dB dC dD d dF dG dH dI dJ dK d dMxN[OUP dQ dR dS dT d dV dW dX dY dZ d d\r] d^ d_ d` da db dc =d =e =f =g =h =i =j =k =l =m = =no = =pq = = is dt du dv dw d t dyz{ d| d} d~ d d d d d d d d  d d d d d d d d d d d d Cy d d d d d d = d d d d d d  d d d d d d d d d d d d d  d d d d d d CN d d d d d d d d d d d d CN d d d d d d d d d d d d CN d d d d d d d d d d d d  d d d d d d  d d d d d d d d d d d d d d d d d d CN d)� d d d d d d CN d d d d d d d d d d d d  d d d d d d d d# d d d! d" d d$ d% d& d' d( d d*E+8,2- d. d/ d0 d1 d d3 d4 d5 d6 d7 d d9?: d; d< d= d> d d@ dA dB dC dD d dFSGMH dI dJ dK dL d dN dO dP dQ dR d = dTZU dV dW dX dY d d[ d\ d] d^ d_ d dab5cdefsgmh di dj dk dl d P dn do dp dq dr d  dtzu dv dw dx dy d d{ d| d} d~ d d CN d d d d d d d t d d d d d d d d d d d d CN d d d d d d t d d d d d d CN d d d d d d d d d d d d d d d d d d  d d d d d d C] d d d d d d d d d d d d C] d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d <u d�  d d d d d d d d d d d CN d d d d d d d d d d d d = d(" d d d d! d = d# d$ d% d& d' d d)/* d+ d, d- d. d d0 d1 d2 d3 d4 d  d67h8M9F:@; d< d= d> d? d <u dA dB dC dD dE d CN dG dH dI dJ dK dL d dN[OUP dQ dR dS dT d = dV dW dX dY dZ d CN d\b] d^ d_ d` da d dc dd de df dg d Cy di~jwkql dm dn do dp d dr ds dt du dv d P d dxy dz d{ d| d} d CN d d d d d d d d d d d d CN d d d d d d d = = = = = = = = = = = = = = i = i = = d d d d d  d d d d d d d d d d d d = d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d� d d d d d = d d d d d d  d d d d d d d d d d d d CN d d d d d d d d  d d d d d d d d d d d d;4'! d d d d d <u d" d# d$ d% d& d d(.) d* d+ d, d- d d/ d0 d1 d2 d3 d d5B6<7 d8 d9 d: d; d  d= d> d? d@ dA d dCID dE dF dG dH d dJ dK dL dM dN dO dPQ šRkS_T šU šV šW šX šY šZ š[ š\ š] š^ š : š` ša šb šc šd še šf šg šh ši šj š : šlxm šn šo šp šq šr šs št šu šv šw š : šy šz š{ š| š} š~ š š š š š š : š š š š š š š š š š š š š š : š š š š š š š š š š š š š š : š d d d d d Cy d d d d d d CN d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d  d  d d d d d d d d d d d  d d d d d d d d d d d d  d d d d d d d d d d d d d d� d d d d d d d d d d  d    d  d d d d d d d d d d d d d d d d d d!."(# d$ d% d& d' d d) d* d+ d, d- d CN d/50 d1 d2 d3 d4 d d6 d7 d8 d9 d: d CN d<=h>S?L@FA dB dC dD dE d dG dH dI dJ dK d d dMN dO dP dQ dR d dTaU[V dW dX dY dZ d = d\ d] d^ d_ d` d db dc dd de df dg d C] di~jwkql dm dn do dp d dr ds dt du dv d  dx dy dz d{ d| d} d d d d d d d d d d d d d  d d d d d d Cy d d d d d d  d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d <u d d d d d d = d d d d d d I7 d d d d d d d d d d d d C] d d d d d d d d d d d d d d d d d d d d], d d d d d Cy d d� d d d d = d  d d d d d d d d d d d d d d d d d d d d d d d d &! d" d# d$ d% d d' d( d) d* d+ d d-B.5/ d0 d1 d2 d3 d4 d = d6<7 d8 d9 d: d; d d= d> d? d@ dA d dCPDJE dF dG dH dI d dK dL dM dN dO d dQWR dS dT dU dV d dX dY dZ d[ d\ d d^_z`magb dc dd de df d  dh di dj dk dl d dnto dp dq dr ds d du dv dw dx dy d d{|} d~ d d d d  d d d d d d CN d d d d d d d d d d d d CN d d d d d d  d d d d d d d d d d d d Cy d d d d d d d d d d d d d  d d d d d d  d d d d d d CN d0 d d d d d d CN d d d d d d d d d d d d CN d d d d d d d d d d d d  d d d d d d d d d d d d  d d d d� d d d d d d d d d  d d d d d d d d d d d = d# d d d d d d d d d! d" d CN d$*% d& d' d( d) d d+ d, d- d. d/ d d1b2M3@4:5 d6 d7 d8 d9 d d; d< d= d> d? d Cy dAGB dC dD dE dF d dH dI dJ dK dL d Cy dNUO dP dQ dR dS dT d dV\W dX dY dZ d[ d d] d^ d_ d` da d  dcxdqekf dg dh di dj d dl dm dn do dp d d drs dt du dv dw d dyz{ d| d} d~ d d d d d d d d d d d d d d d d d d d d  da d d d d d = d d d d d d CN d d d d d d d d d d d d Cy d d d d d d Cy d d d d d d  d d d d d d d d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d0� d d d d d d d  d d d d d d d d d d d d# d d d d d Cy d d d d! d" d d$*% d& d' d( d) d d+ d, d- d. d/ d d1F293 d4 d5 d6 d7 d8 d d:@; d< d= d> d? d dA dB dC dD dE d dGTHNI dJ dK dL dM d ~ dO dP dQ dR dS d dU[V dW dX dY dZ d d\ d] d^ d_ d` d = dbcd erflg dh di dj dk d <u dm dn do dp dq d CN dsyt du dv dw dx d dz d{ d| d} d~ d CN d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d = d d d d d d d d d d d d d d� d d d d d  d d d d d d d d d d d Cy d d d d d d d d d d d d Cy d !"#Z$?%2&,' d( d) d* d+ d d- d. d/ d0 d1 d d394 d5 d6 d7 d8 d  d: d; d< d= d> d C] d@MAGB dC dD dE dF d dH dI dJ dK dL d dNTO dP dQ dR dS d dU dV dW dX dY d Cy d[v\i]c^ d_ d` da db d dd de df dg dh d djpk dl dm dn do d dq dr ds dt du d dwx~y dz d{ d| d} d d d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d <u d d d d d d C] d d d d d d CN d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d^- d d d d d = d� d d d d d d  d d d d d d d d d d d d  d d d d d d d d d d d d!'" d# d$ d% d& d d( d) d* d+ d, d d.I/<061 d2 d3 d4 d5 d Cy d7 d8 d9 d: d; d d=C> d? d@ dA dB d dD dE dF dG dH d dJQ dKL dM dN dO dP d  dRXS dT dU dV dW d dY dZ d[ d\ d] d d_`{anbhc dd de df dg d di dj dk dl dm d doup dq dr ds dt d dv dw dx dy dz d d|}~ d d d d d  d d d d d d d d d d d d d           #    I  d d d d d Cy d d d d d d d Cy d d d d d d ~ d d d d d d Cy d d d d d d d d d d d d d d d d d d CN dD  d d d d d = d d d d d d d d d d d d d d d d d d d� d d d d d d d d d d d d d d d d d d d d d d d d) d d d d d Cy d d d d d d d# d d d! d" d d$ d% d& d' d( d d*7+1, d- d. d/ d0 d = d2 d3 d4 d5 d6 d d8>9 d: d; d< d= d d? d@ dA dB dC d P dEvFaGTHNI dJ dK dL dM d dO dP dQ dR dS d Cy dU[V dW dX dY dZ d d\ d] d^ d_ d` d <u dbi dcd de df dg dh d <u djpk dl dm dn do d dq dr ds dt du d dwxyz d{ d| d} d~ d Cy d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d CN d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d = d d d d d d Cy d  d� d d d d Cy d d d d d d CN d d  d d d d d dI.! d d d d d ~ d d d d d d ~ d"(# d$ d% d& d' d d) d* d+ d, d- d ƨ d/<061 d2 d3 d4 d5 d  d7 d8 d9 d: d; d C] d=C> d? d@ dA dB d dD dE dF dG dH d CN dJeKXLRM dN dO dP dQ d Cy dS dT dU dV dW d CN dY_Z d[ d\ d] d^ d  d` da db dc dd d C] dfsgmh di dj dk dl d t dn do dp dq dr d P dtzu dv dw dx dy d CN d{ d| d} d~ d d P d�D d d d d d t d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d C] d d d d d d d d d d d d Cy d d d d d d  d d d d d d d�� d d d d d = d d d d d d d d d d d d d d�� d� d� d� d d���� � d� d� d� d� d d� d� d� d� d� d d��� d� d� d� d� d ~ d� d� d� d� d� d  d� �5�!�.�"�(�# d�$ d�% d�& d�' d Cy d�) d�* d�+ d�, d�- d <u d�/ d�0 d�1 d�2 d�3 d�4 d  d�6�= d�7�8 d�9 d�: d�; d�< d t d�> d�? d�@ d�A d�B d�C d d�E��F�v�G�[�H�O�I d�J d�K d�L d�M d�N d = d�P�U�Q d�R d�S d�T d d�V d�W d�X d�Y d�Z d CN d�\�i�]�c�^ d�_ d�` d�a d�b d <u d�d d�e d�f d�g d�h d d�j�p�k d�l d�m d�n d�o d d�q d�r d�s d�t d�u d d�w��x d�y d�z d�{ d�| d�} d�~ d = d��� d� d� d� d� d� d d��� d� d� d� d� d Cy d� d� d� d� d� d ~ d��������� d� d� d� d� d d� d� d� d� d� d CN d� d� d� d� d� d� d CN d����� d� d� d� d� d d� d� d� d� d� d CN d��� d� d� d� d� d d� d� d� d� d� d d������� d� d� d� d� d = d� d� d� d� d� d d d�� d� d� d� d� d d����� d� d� d� d� d = d� d� d� d� d� d  d��� d� d� d� d� d d� d� d� d� d� d� d� � � �� � � � �      C? C C?  c     C?  C? |E* d d d d d d$ d d! d" d# d d% d& d' d( d) d t d+8,2- d. d/ d0 d1 d = d3 d4 d5 d6 d7 d <u d9?: d; d< d= d> d d@ dA dB dC dD d = dFaGTHNI dJ dK dL dM d <u dO dP dQ dR dS d C] dU[V dW dX dY dZ d d\ d] d^ d_ d` d dbocid de df dg dh d dj dk dl dm dn d dpvq dr ds dt du d dw dx dy dz d{ d = d}~ d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d = d d d d d d d d d d d d d d d d d d = d d d d d d Cy d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d<  d d d d d d d d d d d d CN d d d d d d = d d d d d d d� d d d d d d d d d d d d '  d d d d d Cy d d d d d d CN d! d d d d d d" d# d$ d% d& d d(/) d* d+ d, d- d. d d061 d2 d3 d4 d5 d d7 d8 d9 d: d; d d=t>Y?L@FA dB dC dD dE d = dG dH dI dJ dK d dMSN dO dP dQ dR d dT dU dV dW dX d dZg[a\ d] d^ d_ d` d CN db dc dd de df d dhni dj dk dl dm d do dp dq dr ds d I7 duvw}x dy dz d{ d| d <u d~ d d d d d  d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d CN dSz d d d d d = d d d d d d <u d d d d d d d d d d d d Cy d d d d d d CN d d d d d d d d d d d d d d d d d d Cy d d d d d d P d d d d d d t d d d d d d d d d d d d d  d� d d d d d d d d d d d  d d d d d Cy d d d d d d CN dC.! d d d d d d Cy d"(# d$ d% d& d' d d) d* d+ d, d- d d/<061 d2 d3 d4 d5 d d7 d8 d9 d: d; d  d= d> d? d@ dA dB d dD_ERFLG dH dI dJ dK d Cy dM dN dO dP dQ d dSYT dU dV dW dX d dZ d[ d\ d] d^ d CN d`magb dc dd de df d dh di dj dk dl d CN dnto dp dq dr ds d du dv dw dx dy d d{|}~ d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d CN d d d d d d CN d d d d d d d d d d d d d" d d d d d CN d d d d d d d d d d d� d d d d d d d = d  d d d d d d d d d d d d d d d d d d d d d d! d d#>$1%+& d' d( d) d* d d, d- d. d/ d0 d C] d283 d4 d5 d6 d7 d d9 d: d; d< d= d Cy d?F d@A dB dC dD dE d ~ dGMH dI dJ dK dL d dN dO dP dQ dR d CN dTUVWrXeY_Z d[ d\ d] d^ d = d` da db dc dd d t dflg dh di dj dk d dm dn do dp dq d CN dszt du dv dw dx dy d d{| d} d~ d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d C] d� d d d d d d d d d d d d  d d d d d d d d d d d d <u d d d d d d d d d d d d CN d d d d d d C] dA, d &! d" d# d$ d% d d' d( d) d* d+ d d-4 d./ d0 d1 d2 d3 d CN d5;6 d7 d8 d9 d: d d< d= d> d? d@ d CN dBgC`DJE dF dG dH dI d dK dL dM dN dO dP dQ R S T U V W X Y Z [ \ ] ^  _   dab dc dd de df d dhuioj dk dl dm dn d dp dq dr ds dt d dv|w dx dy dz d{ d d} d~ d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d  d d d d d d d d d d d d  d d d d d d d d d d d d  d d d d d d d d d d d d d d  d d d d d d = d d d d d d d d d d d d Cy d d d d d d C] d d d d d d = d d d d d d ~ d d d d d d Cy d d d d d d = d � d d d d d  d d d d d d d  d d d d d d d d d d d d'! d d d d d Cy d" d# d$ d% d& d CN d(.) d* d+ d, d- d d/ d0 d1 d2 d3 d d5=;6!78 9 :";I<=>h?F @A dB dC dD dE d Cy dGWHI dJQKNL dM d <u dO dP d ~ dRTS d t dU dV d ~ dXgY`Z][ d\ d Cy d^ d_ d Cy dadb dc d de df d d = dijwkpl dm dn do d d dqrus dt d <u dv d <u dxy}z d{ d| d t d~ d d CN d d d d d d ~ d d d d d d Cy d d d d  d d d d d d d Cy d d d Cy d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d Cy d d d d d d d CN d d d d d d Cy d d d d d d d d d d d d d d d d d d CN d d d d d d Cy d� d d d d d CN d  d d d d d  d d d d d d = d.! d d d d d Cy d d d d d d  d"(# d$ d% d& d' d d) d* d+ d, d- d CN d/<061 d2 d3 d4 d5 d d7 d8 d9 d: d; d  d=C> d? d@ dA dB d = dD dE dF dG dH d Cy dJK|LgMZNTO dP dQ dR dS d  dU dV dW dX dY d d[a\ d] d^ d_ d` d Cy db dc dd de df d dho dij dk dl dm dn d dpvq dr ds dt du d CN dw dx dy dz d{ d CN d}~ d d d d d d d d d d d CN d d d d d d d d d d d d Cy d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d = d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d� d = d d d d d d Cy d  d d d d d d d d d d d d d d d d d d d d d d! d d#$%\&A'4(.) d* d+ d, d- d d/ d0 d1 d2 d3 d Cy d5;6 d7 d8 d9 d: d d< d= d> d? d@ d dBOCID dE dF dG dH d dJ dK dL dM dN d CN dPVQ dR dS dT dU d dW dX dY dZ d[ d CN d]x^k_e` da db dc dd d df dg dh di dj d <u dlrm dn do dp dq d ds dt du dv dw d  dyz{ d| d} d~ d d d d d d d d  d d d d d d CN d d d d d d  d d d d d d Cy d d d d d d = d d d d d d  d d d d d d d d d d d d  d d d d d d I7 d d d d d d  d d d d d d d d d d d = d d d d d d t d d d d d d t d d d d d d CN d d d d d d d CN d d d d d d d  d _ .   � d d d d d <u d  d  d  d  d  d = d    d d d d d d  d  d  d  d  d CN d  !    d  d  d  d  d d  d  d  d  d d C] d " ( # d $ d % d & d ' d d ) d * d + d , d - d CN d / D 0 = 1 7 2 d 3 d 4 d 5 d 6 d t d 8 d 9 d : d ; d < d d d > ? d @ d A d B d C d š d E R F L G d H d I d J d K d d M d N d O d P d Q d CN d S Y T d U d V d W d X d  d Z d [ d \ d ] d ^ d = d `  a | b o c i d d e d f d g d h d <u d j d k d l d m d n d CN d p v q d r d s d t d u d d w d x d y d z d { d d }  ~   d d d d d = d d d d d d CN d   d d d d d d d d d d d CN d       d d d d d <u d d d d d d d   d d d d d d d d d d d = d     d d d d d  d d d d d d d d  d d d d d = d  R    (         d d d d d <u d d d d d d  d   d d d d d = d d d d d d d     d d d d d d d d d d d d d  d d d d d d     d �  d  d  d  d  d t d    d d d d d d  d  d  d  d  d d  !    d  d  d  d  d  d  d  d  d  d d  d " d # d $ d % d & d ' d d ) c * U + H , B - d . d / d 0 d 1 d 2 d 3 = 4 = 5 = 6 = 7 = 8 = = 9 : = ; = < = = = > = ? = @ = A = k = C d D d E d F d G d = d I O J d K d L d M d N d d P d Q d R d S d T d  d d V W ] X d Y d Z d [ d \ d t d ^ d _ d ` d a d b d CN d d  e r f l g d h d i d j d k d t d m d n d o d p d q d CN d s y t d u d v d w d x d d z d { d | d } d ~ d P d d  d d d d d d = d           d d d d d = d d d d d d d   d d d d d  d d d d d d d  d  d d d d d = d   d d d d d CN d d d d d d d    d  d d d d d d   d d d d d d                d d d d d = d     d d d d d = d d d d d d d d  d d d d d I7 d  '       d d d d d I7 d � d  d  d  d  d d    d  d d d d Cy d d  d  d  d  d Cy d    d  d  d  d  d  d d  !  d  d  d  d d CN d " d # d $ d % d & d  d ( = ) 0 * d + d , d - d . d / d d d 1 7 2 d 3 d 4 d 5 d 6 d I7 d 8 d 9 d : d ; d < d d > E d ? @ d A d B d C d D d CN d F L G d H d I d J d K d Cy d M d N d O d P d Q d d S % T  U  V k W ^ d X Y d Z d [ d \ d ] d Cy d _ e ` d a d b d c d d d CN d f d g d h d i d j d d l y m s n d o d p d q d r d C] d t d u d v d w d x d d z  { d | d } d ~ d  d CN d d d d d d d       d d d d d d d d d d d d   d d d d d t d d d d d d d     d d d d d d d d d d d d   d d d d d d d d d d d d      d  d d d d d CN d   d d d d d d d d d d d CN d     d d d d d d d d d d d d   d d d d d Cy d d d d d d d       d d d d <u d d d d d d d   d � d  d  d  d Cy d  d  d  d  d d d     d  d  d  d  d d  d  d  d  d  d d    d  d  d  d  d I7 d d ! d " d # d $ d d &  ' ^ ( C ) 6 * 0 + d , d - d . d / d <u d 1 d 2 d 3 d 4 d 5 d d 7 = 8 d 9 d : d ; d < d d > d ? d @ d A d B d d D Q E K F d G d H d I d J d Cy d L d M d N d O d P d d R X S d T d U d V d W d <u d Y d Z d [ d \ d ] d d _ t ` m a g b d c d d d e d f d P d h d i d j d k d l d Cy d n d o d p d q d r d s d t d u  v | w d x d y d z d { d d } d ~ d  d d d  d d  d d d d d d         d d d d d d d d d d d d   d d d d d C] d d d d d d CN d     d d d d d = d d d d d d CN d   d d d d d <u d d d d d d d       d d d d d Cy d d d d d d d   d d d d d Cy d d d d d d CN d     d d d d d  d d d d d d d   d d d d d CN d d d d d d š d @     _  .     d �  d  d  d  d  d CN d    d d d d d d  d  d  d  d  d CN d  !    d  d  d  d  d  d  d  d  d  d d CN d " ( # d $ d % d & d ' d = d ) d * d + d , d - d d / D 0 = 1 7 2 d 3 d 4 d 5 d 6 d Cy d 8 d 9 d : d ; d < d Cy d > d ? d @ d A d B d C d d E R F L G d H d I d J d K d ~ d M d N d O d P d Q d  d S Y T d U d V d W d X d = d Z d [ d \ d ] d ^ d CN d `  a  b  c y d d e d f <u g <u <u h i <u j <u k <u <u l m <u n <u <u o p <u q <u r <u s <u t <u u <u v <u <u w x <u <u I z d { d | d } d ~ d = d   d d d d d  d d d d d d CN d  d  d d d d d d   d d d d d CN d d d d d d Cy d       d d d d d  d d d d d d Cy d   d d d d d CN d d d d d d CN d     d d d d d  d d d d d d d   d d d d d Cy d d d d d d d B        d d d d d d d d d d d = d   d d d d d <u d d d d d d Cy d    d d d d d <u d d� d d d d Z d  d d d d d  d d d d d d d-  d d d d d t d d d d d d d!'" d# d$ d% d& d  d( d) d* d+ d, d = d.5 d/0 d1 d2 d3 d4 d = d6<7 d8 d9 d: d; d CN d= d> d? d@ dA d dCzD_ERFLG dH dI dJ dK d = dM dN dO dP dQ d  dSYT dU dV dW dX d  dZ d[ d\ d] d^ d d`magb dc dd de df d dh di dj dk dl d CN dnto dp dq dr ds d = du dv dw dx dy d d{|}~ d d d d d d d d d d d CN d d d d d d d Cy d d d d = d d d d d d Cy d d d d d d CN d d d d d d dk d d d d d d = d d d d d d = d d d d d d CN d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d CN d d d d d d CN d d d d d d = d d d d d d CN d d d d� d d ~ d d d d d d CN d : %   d d d d d = d d d d d d  d d d d d d d d! d" d# d$ d d&-' d( d) d* d+ d, d = d.4/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d d;P<I=C> d? d@ dA dB d Cy dD dE dF dG dH d dJ dK dL dM dN dO d dQ^RXS dT dU dV dW d <u dY dZ d[ d\ d] d d_e` da db dc dd d  df dg dh di dj d CN dlmno|pvq dr ds dt du d dw dx dy dz d{ d C] d}~ d d d d d = d d d d d d  d d d d d d t d d d d d d CN d d d d d d Cy d d d d d d = d d d d d d Cy d d d d d d CN d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d <u d d d d d d CN d d d d d d d CN d d d d d d  d d d d d d CN d� d d d d d d d d d d d Cy d d d d d d d        d d d d d  d1$ d d d d d = d d d! d" d# d CN d%+& d' d( d) d* d d, d- d. d/ d0 d CN d29 d34 d5 d6 d7 d8 d = d d:; d< d= d> d? d CN dABCD{E`FSGMH dI dJ dK dL d dN dO dP dQ dR d CN dTZU dV dW dX dY d = d[ d\ d] d^ d_ d danbhc dd de df dg d di dj dk dl dm d Cy doup dq dr ds dt d CN dv dw dx dy dz d CN d|}~ d d d d d d d d d d d d CN d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d CN d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d� d d d CN dU:3- d d d d d d = = = = = = = = = = =$! F = = i = = " =# j  =% =& = =' =() =* =+ =, = = F. d/ d0 d1 d2 d CN d d45 d6 d7 d8 d9 d d;H<B= d> d? d@ dA d dC dD dE dF dG d CN dIOJ dK dL dM dN d = dP dQ dR dS dT d CN dVqWdX^Y dZ d[ d\ d] d <u d_ d` da db dc d dekf dg dh di dj d = dl dm dn do dp d CN drys dt du dv dw dx d  dz{ d| d} d~ d d Cy d d d d d d CN d d d d d d <u d d d d d d = d d d d d d Cy d d d d d d I7 d d d d d d Cy d d d d d d Cy d d d d d d d  d d d d d d d d d d d d Cy d d d d d d  d d d d d d d d d d d d ~ d d d d d d C] d d d d d d d d d d d d CN dM d d d d d d d C] d  d d� d d d d d d d d d Cy d  d d d d d d d d d d d d2% d d d d d d d! d" d# d$ d d&,' d( d) d* d+ d  d- d. d/ d0 d1 d I7 d3@4:5 d6 d7 d8 d9 d  d; d< d= d> d? d dAGB dC dD dE dF d dH dI dJ dK dL d dNOjP]QWR dS dT dU dV d dX dY dZ d[ d\ d š d^d_ d` da db dc d de df dg dh di d dkxlrm dn do dp dq d CN ds dt du dv dw d d dyz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d C] d d d d d d CN d d d d d d  d d d d d d d d d d d d d d d d d d = d d d d d d Ͼ d d d d d d CN d d d d d d Cy d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d  d� d d d d d d d d d   d d d d d  d d d d d d d d d d d d d t dO: -!'" d# d$ d% d& d I7 d( d) d* d+ d, d d.4/ d0 d1 d2 d3 d  d5 d6 d7 d8 d9 d d;H<B= d> d? d@ dA d dC dD dE dF dG d dI dJ dK dL dM dN d = dPkQ^RXS dT dU dV dW d CN dY dZ d[ d\ d] d CN d_e` da db dc dd d  df dg dh di dj d CN dls dmn do dp dq dr d dtzu dv dw dx dy d  d{ d| d} d~ d d dpO d d d d d Cy d d d d d d d d d d d d d d d d d d d ~ d d d d d d d d d d d d d d d d d d d d d d d d d t d d d d d d = d d d d d d d d d d d d C] d d d d d d CN d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d� d  d d d d d d d d d d d d d d d d d d d4# d d d d d = d d d d! d" d d$.% d& d' d( d) d* d+ , - h/ d0 d1 d2 d3 d CN d5B6<7 d8 d9 d: d; d d= d> d? d@ dA d dCID dE dF dG dH d dJ dK dL dM dN d dPQ|RgSZ dTU dV dW dX dY d d[a\ d] d^ d_ d` d db dc dd de df d CN dhuioj dk dl dm dn d = dp dq dr ds dt d CN d dvw dx dy dz d{ d Cy d}~ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d  d d d d d d t d d d d d d d  d d d d d d d d d d d d d d d t d d d d d d CN d d d d d d = d d d d d d d d d d d d d d d d d  d d d d d d = d d d d d d  d � d d d d d = d d d d d d Cy d  d d d d d <u d d d d d d  dqL7*$ d d! d" d# d d% d& d' d( d) d CN d+1, d- d. d/ d0 d CN d2 d3 d4 d5 d6 d CN d8E9?: d; d< d= d> d  d@ dA dB dC dD d d dFG dH dI dJ dK d P dMbN[OUP dQ dR dS dT d dV dW dX dY dZ d d d\] d^ d_ d` da d dcj dde df dg dh di d dk dl dm dn do dp d drstu{v dw dx dy dz d = d| d} d~ d d d d d d d d d š d d d d d d = d d d d d d d = d d d d d d Cy d d d d d d d d d d d d d = d d d d d d = d d d d d d  d d d d d d d Cy d$ d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d CN d d d d d d d d d d d d I7 d d d d d d ~ d d d d d� d d d  d d d d d I7 d d d d d d d d d d d d d CN d d d d d d d d d! d" d# d CN d%\&A'4(.) d* d+ d, d- d = d/ d0 d1 d2 d3 d CN d5;6 d7 d8 d9 d: d d< d= d> d? d@ d dBOCID dE dF dG dH d  dJ dK dL dM dN d dPVQ dR dS dT dU d CN dW dX dY dZ d[ d d]x^k_e` da db dc dd d Cy df dg dh di dj d dlrm dn do dp dq d <u ds dt du dv dw d dyz d{ d| d} d~ d d <u d d d d d d CN d d d d d d  d_  d d d d d d d d d d d P d d d d d d d d d d d d d d d d d d d d d d d d d              ^ d d d d d d d d d d d Cy d d d d d d  d d d d d d d d d d d d  d d d d d d Cy d d d d d d t d d d d� d d d d d d d d d d (  d d  d d d d d Cy d d d d d d d  d" d d d d! d d# d$ d% d& d' d CN d)D*7+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d Cy d8>9 d: d; d< d= d = d? d@ dA dB dC d Cy dERFLG dH dI dJ dK d  dM dN dO dP dQ d dSYT dU dV dW dX d CN dZ d[ d\ d] d^ d d`ajb dc dd de df dg dh di d  dklymsn do dp dq dr d dt du dv dw dx d  dz{ d| d} d~ d d Cy d d d d d d d d d d d d d <u d d d d d d I d d d d d d C] d d d d d d  d d d d d d CN d d d d d d d Cy d d d d d d d  d d d d d d d d d d d d d d d d d d d d ~ d d d d d d d t d d d d d d d d d d d d CN d d d d d d CN d d d d d d Cy dQ&  d d d d d = d d� d d d d ~ d d d d d d d Cy d   d d d d d d d d d d d <u d  d d d d d CN d! d" d# d$ d% d  d'<(/ d)* d+ d, d- d. d Cy d061 d2 d3 d4 d5 d Cy d7 d8 d9 d: d; d Cy d=J>D? d@ dA dB dC d dE dF dG dH dI d d dKL dM dN dO dP d dRwSbT[ dUV dW dX dY dZ d d d\] d^ d_ d` da d dcj dde df dg dh di d dkql dm dn do dp d CN dr ds dt du dv d  dxyz{ d| d} d~ d d d d d d d d  d d d d d d t d d d d d d P d d d d d d <u d d d d d d P d d d d d CN d d d d d d P d d d d d d d = d d d d d d = d d d d d d d d d d d d d d d d d d d d d d d d d  J  d d d d d = d d d d d d  d d d d d d CN d d d d d d Cy d d d d d d d� d d d d d d  d d d d d d d d d d d d?*# d d d d d = d d d d! d" d d$ d% d& d' d( d) d CN d+8,2- d. d/ d0 d1 d  d3 d4 d5 d6 d7 d = d d9: d; d< d= d> d Cy d@[ANBHC dD dE dF dG d ~ dI dJ dK dL dM d t dOUP dQ dR dS dT d CN dV dW dX dY dZ d CN d\i]c^ d_ d` da db d <u dd de df dg dh d = d djk dl dm dn do d  dqr.sRtuvwx~y dz d{ d| d} d Cy d d d d d d C] d d d d d d I7 d d d d d d d d d d d d = d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d d d d d d d d CN d d d d d d d d d d d d d d d d d d ~ d d d d d d Cy d d d d d d d� d d d d d = d d d d d d d d d d d d <u d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d7*$ d d! d" d# d = d% d& d' d( d) d d+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d P d8E9?: d; d< d= d> d d@ dA dB dC dD d dFLG dH dI dJ dK d Cy dM dN dO dP dQ d dSTUmV`WZX dY d d[ d\ d] d^ d_ d P dagb dc dd de df d  dh di dj dk dl d P dn{oup dq dr ds dt d CN dv dw dx dy dz d d|} d~ d d d d  d d d d d d d d d d d d d d d d d d  d d d d d d = d d d d d d Cy d d d d d d d d d d d d  d d d d d d = d d d d d d Cy d d d d d d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d CN d d d d d d Cy d d d d d d Cy d� d d d d d d d d d d d Cy d  d d d d d d d d d d d CN d! d d d d d Cy d d d d d d  d"(# d$ d% d& d' d Cy d) d* d+ d, d- d t d/01h2M3@4:5 d6 d7 d8 d9 d <u d; d< d= d> d? d dAGB dC dD dE dF d dH dI dJ dK dL d <u dN[OUP dQ dR dS dT d = dV dW dX dY dZ d d\b] d^ d_ d` da d dc dd de df dg d CN dijwkql dm dn do dp d = dr ds dt du dv d CN dx~y dz d{ d| d} d d d d d d d d d d d d d = d d d d d d Cy d d d d d d Cy d d d d d d d d d d d d C] d d d d d d CN d d d d d d d d d d d d = d d d d d d = d d d d d d d d d d d d CN d d d d d d Cy d d d d d d = d d d d d d d d d d d d ~ d d d d d d d d d d d d = d d d d d� d d d d d d d d d d d d d d~G, d d d d d d d d d d d d &! d" d# d$ d% d d' d( d) d* d+ d Cy d-:.4/ d0 d1 d2 d3 d CN d5 d6 d7 d8 d9 d  d;A< d= d> d? d@ d = dB dC dD dE dF d  dHcIVJPK dL dM dN dO d = dQ dR dS dT dU d CN dW]X dY dZ d[ d\ d d^ d_ d` da db d P ddqekf dg dh di dj d dl dm dn do dp d = drxs dt du dv dw d t dy dz d{ d| d} d ~ d d d d d d d d d d d d Cy d d d d d d d CN d d d d d d = d d d d d d Cy d d d d d d d d d d d d <u d d d d d d = d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  dr3 d d d d d d d d d d d d d d d d d Cy d d d d d� d Cy d d d d d d d P d   d d d d d d <u d d d d d d d d d d d d C] d& d! d" d# d$ d% d Cy d'-( d) d* d+ d, d CN d. d/ d0 d1 d2 d CN d4u5Z6= d78 d9 d: d; d< d = d>D? d@ dA dB dC d dE dF dG dH dI dJ dK LM NO P Q RS T U V W XY I[h\b] d^ d_ d` da d Cy dc dd de df dg d dioj dk dl dm dn d  dp dq dr ds dt d dvwx~y dz d{ d| d} d d d d d d d  d d d d d d t d d d d d d CN d d d d d d Cy d d d d d d  d d d d d d d d d d d d Cy d d d d d d d d d d d d d d d d d d d d d d d d d d d d d Cy d d d d d d <u d d d d d d d d d d d d d = d d d d d d d d d d d d d d d d d d d Cy d d d d� d d d  d d d d d d d d d d d P d;& d d d d d d d d d d d d d ! d" d# d$ d% d d'. d() d* d+ d, d- d = d/50 d1 d2 d3 d4 d C] d6 d7 d8 d9 d: d d<W=J>D? d@ dA dB dC d dE dF dG dH dI d = dKQL dM dN dO dP d P dR dS dT dU dV d  dXeY_Z d[ d\ d] d^ d Cy d` da db dc dd d CN dflg dh di dj dk d P dm dn do dp dq d dstuvwx~y dz d{ d| d} d d d d d d d d d d d d d d P d d d d d d C] d d d d d d  d d d d d d CN d d d d d d d d d d d d d = d d d d d d  d d d d d d  d d d d d d d d d d d d Cy d d d d d d d                         DL  d d d d d CN d d d d d d = dP5 d� d d d d d C] d  d d d d d  d d d d d d d&    8w c 8   X  ! " # $% 8w ' ( )* + ,- . / 0 1 2 3 4 c 6C7=8 d9 d: d; d< d Cy d> d? d@ dA dB d  dDJE dF dG dH dI d = dK dL dM dN dO d Cy dQlR_SYT dU dV dW dX d Cy dZ d[ d\ d] d^ d CN d`fa db dc dd de d  dg dh di dj dk d š dmznto dp dq dr ds d Cy du dv dw dx dy d P d{| d} d~ d d d = d d d d d d d!*     d d d d d            7   J                                                                               I            �                                                            !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6 I  8 9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~               I                 J         J                            I      I I  d d d d d  d   d d d d d d d d d d d Cy d     d d d d d Cy d d d d d d ~ d   d d d d d = d d d d d d Cy d ! !   d d d d d = d d d d!� d! d Cy d!! ! d! d! d! d! d ~ d! d! d! d! d! d = d!!!!! d! d! d! d! d Cy d! d! d! d! d! d P d!!$! d! d!! d!" d!# d  d!% d!& d!' d!( d!) d P d!+!b!,!G!-!:!.!4!/ d!0 d!1 d!2 d!3 d d!5 d!6 d!7 d!8 d!9 d  d!;!A!< d!= d!> d!? d!@ d = d!B d!C d!D d!E d!F d Cy d!H!U!I!O!J d!K d!L d!M d!N d Cy d!P d!Q d!R d!S d!T d = d!V!\!W d!X d!Y d!Z d![ d d!] d!^ d!_ d!` d!a d d!c!x!d!q!e!k!f d!g d!h d!i d!j d = d!l d!m d!n d!o d!p d d d!r!s d!t d!u d!v d!w d Cy d!y!!z!!{ d!| d!} d!~ d! d Cy d! d! d! d! d! d d!!! d! d! d! d! d d! d! d! d! d! d š d!0f!)!%!#!"!":!!!!!!!!! d! d! d! d! d d! d! d! d! d! d d!!! d! d! d! d! d d! d! d! d! d! d Cy d!!!!! d! d! d! d! d Cy d! d! d! d! d! d = d!!! d! d! d! d! d = d! d! d! d! d! d ~ d! d! d! d! d! d! d !!  !!  !! ! ! !  !! ! ! ! ! !  !! ! !  !!  !!  ! !! ! !  ! ! ! !! ! ! ! ! ! ! "� " " " " " " " " " " " " " " " " " " " " " " " " " " " " "  " " " "!"" "#  "$"% "&  "'"( ")  "*"+ ",  "-". "/ "0 "1 "2  "3"4  "5"6 "7  "8"9   I";"r"<"W"="J">"D"? d"@ d"A d"B d"C d M d"E d"F d"G d"H d"I d = d"K"Q"L d"M d"N d"O d"P d d"R d"S d"T d"U d"V d  d"X"e"Y"_"Z d"[ d"\ d"] d"^ d Cy d"` d"a d"b d"c d"d d = d"f"l"g d"h d"i d"j d"k d d"m d"n d"o d"p d"q d  d"s""t"{ d"u"v d"w d"x d"y d"z d d"|""} d"~ d" d" d" d d" d" d" d" d" d d""""" d" d" d" d" d Cy d" d" d" d" d" d d""" d" d" d" d" d d" d" d" d" d" d d"#""""""""" d" d" d" d" d" d ="" =" =""" =" =" =" =" =" = =" ="" =" = i =" = i =" d" d" d" d" d  d""" d" d" d" d" d d" d" d" d" d" d d"" d"" d" d" d" d" d d""" d" d" d" d" d d" d" d" d" d" d d"#""""" d" d" d" d" d d" d" d" d" d" d CN d""" d" d" d" d" d d" d" d#� d# d# d  d#### # d# d# d# d# d d# d# d# d# d# d Cy d### d# d# d# d# d d# d# d# d# d# d Cy d##P# #;#!#.#"#(## d#$ d#% d#& d#' d C] d#) d#* d#+ d#, d#- d Cy d#/#5#0 d#1 d#2 d#3 d#4 d d#6 d#7 d#8 d#9 d#: d  d#<#C d#=#> d#? d#@ d#A d#B d CN d#D#J#E d#F d#G d#H d#I d d#K d#L d#M d#N d#O d d#Q#l#R#_#S#Y#T d#U d#V d#W d#X d d#Z d#[ d#\ d#] d#^ d <u d#`#f#a d#b d#c d#d d#e d d#g d#h d#i d#j d#k d  d#m# d#n#o d#p d#q d#r d#s d#t d#u #v #w #x #y #z #{ #| #}#~# #  # # # ## c### d# d# d# d# d d# d# d# d# d# d Cy d#$X########### d# d# d# d# d = d# d# d# d# d# d P d### d# d# d# d# d d# d# d# d# d# d P d## d## d# d# d# d# d d### d# d# d# d# d d# d# d# d# d# d  d####### d# d d# d# d# d# d# d  d### d# d# d# d# d d# d# d# d# d# d  d### d# d# d# d# d# d = d### d# d# d# d# d d# d# d# d# d# d  d#$-#$#$### d# d# d# d# d d$� d$ d$ d$ d$ d d$$ $ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d d$$ $$$ d$ d$ d$ d$ d CN d$ d$ d$ d$ d$ d d$!$'$" d$# d$$ d$% d$& d d$( d$) d$* d$+ d$, d <u d$.$C$/$6 d$0$1 d$2 d$3 d$4 d$5 d Cy d$7$=$8 d$9 d$: d$; d$< d d$> d$? d$@ d$A d$B d CN d$D$K d$E$F d$G d$H d$I d$J d d$L$R$M d$N d$O d$P d$Q d Cy d$S d$T d$U d$V d$W d  d$Y$$Z$$[$v$\$i$]$c$^ d$_ d$` d$a d$b d d$d d$e d$f d$g d$h d ~ d$j$p$k d$l d$m d$n d$o d <u d$q d$r d$s d$t d$u d d$w$~ d$x$y d$z d${ d$| d$} d d d$$ d$ d$ d$ d$ d P d$$$$$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d P d$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d P d$$$$$ d$ d$ d$ d$ d I7 d$ d$ d$ d$ d$ d Cy d d$$ d$ d$ d$ d$ d Cy d$$$$$$$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d d d$ d$ d$ d$ d$ d$ d d$$ d$$ d$ d$ d$ d$ d Cy d$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d Cy d$$$$$$$ d$ d$ d$ d$ d  d$ d$ d$ d$ d$ d Cy d$$$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d  d$% %�%% d% d% d% d% d k d% d% d% d% d% d Cy d% %% d% d% d% d% d d% d% d% d% d% d d%(%'<%&%&%&%&z% &t%! d%" d%# d%$ d%% d%&&8%'&)%( %)%%* %+%V%,%6 %-%. %/ %0 %1 %2 %3 %4 %5   Cl%7 %8%N%9 %: %; %< %=%J%>%H%? %@ %A %B %C %D %E %F  %G  %I  %K%L  %M %O %P %Q %R %S %T %U   %W%%X%y%Y%i%Z %[ %\ %] %^ %_ %` %a %b %c %d %e %f %g %h  Cl %j %k %l %m %n %o %p %q %r %s %t %u %v %w %x  dD %z%%{ %| %} %~ % % %  % % % % % % % % % % % % % % %  %%% % % % % % % % % % % % % % % %   %%% % % % % % % % % % % % % % %  dQ % % % % % % % % % % % % % %  dD % % %& %%%%% % % % % % % % % % % % % % %  dQ % % % % % % % % % % % % % % %   Cl%%% % % % % % % % % % % % % % %  iK % % % % % &� & & & & & & & & &  iK & & & & & & & & & &  dD  && & & & & & & & & & & &! &" &# &$ &% && &'  &( dQ  &* &+ &, &- &. &/ &0 &1 &2&3 &4  &5&6 &7  Cl &9 &: &; &< &= &>&b&?&Q&@ &A &B &C &D &E &F &G&P &H&I &J &K &L &M &N &O  Cl  Cl  &R&S &T &U &V &W &X &Y &Z &[ &\ &] &^ &_ &` &a  iK &c &d &e &f &g &h &i &j &k &l &m &n &o &p &q &r &s  &u d&v d&w d&x d&y d d&{&&| d&} d&~ d& d& d d& d& d& d& d& d Cy d&& d&& d& d& d& d& d Cy d&&& d& d& d& d& d d& d& d& d& d& d Cy d&&&&& d& d& d& d& d& d <u d&&& d& d& d& d& d d& d& d& d& d& d š d&&&&& d& d& d& d& d d& d& d& d& d& d d&&& d& d& d& d& d d& d& d& d& d& d  d&'&&&&&&& d& d& d& d& d  d& d& d& d& d& d = d&&& d& d& d& d& d d& d& d& d& d& d d&&&&& d& d& d& d& d t d& d& d& d& d& d  d&&& d& d& d& d& d d'� d' d' d' d' d d''!''''' d' d' d' d' d <u d' d' d' d' d' d = d''' d' d' d' d' d d' d' d' d' d' d  d'"'/'#')'$ d'% d'& d'' d'( d d'* d'+ d', d'- d'. d  d'0'6'1 d'2 d'3 d'4 d'5 d d'7 d'8 d'9 d': d'; d  d'=''>'o'?'T'@'G d'A'B d'C d'D d'E d'F d P d'H'N'I d'J d'K d'L d'M d d'O d'P d'Q d'R d'S d P d'U'b'V'\'W d'X d'Y d'Z d'[ d ~ d'] d'^ d'_ d'` d'a d d'c'i'd d'e d'f d'g d'h d d'j d'k d'l d'm d'n d d'p''q'~'r'x's d't d'u d'v d'w d d'y d'z d'{ d'| d'} d d''' d' d' d' d' d d' d' d' d' d' d CN d''''' d' d' d' d' d = d' d' d' d' d' d ~ d''' d' d' d' d' d d' d' d' d' d' d d'''''' d'' d' d' d' d' d Cy d''' d' d' d' d' d d' d' d' d' d' d Cy d''''' d' d' d' d' d = d' d' d' d' d' d Cy d''' d' d' d' d' d d' d' d' d' d' d Cy d''''''' d' d' d' d' d = d' d' d' d' d' d Cy d''' d' d' d' d' d d' d' d' d' d' d d'(''' d' d' d' d' d CN d' d' d' d(� d( d d(( ( d( d( d( d( d d( d( d( d( d( d Cy d((((((J((5(( ((( d( d( d( d d( d( d( d( d( d Cy d(!(/(" d(# d($ d(% d(& d(' d(( d() d(* d(+ d(, d(- d(. d % d(0 d(1 d(2 d(3 d(4 d d(6(C(7(=(8 d(9 d(: d(; d(< d d(> d(? d(@ d(A d(B d d d(D(E d(F d(G d(H d(I d d(K(f(L(Y(M(S(N d(O d(P d(Q d(R d d(T d(U d(V d(W d(X d ~ d(Z(`([ d(\ d(] d(^ d(_ d d(a d(b d(c d(d d(e d  d(g(t(h(n(i d(j d(k d(l d(m d d(o d(p d(q d(r d(s d t d(u({(v d(w d(x d(y d(z d  d(| d(} d(~ d( d( d  d((((((((( d( d( d( d( d d( d( d( d( d( d  d((( d( d( d( d( d  d( d( d( d( d( d  d((((( d( d( d( d( d  d( d( d( d( d( d Cy d((( d( d( d( d( d  d( d( d( d( d( d Cy d((((((( d( d( d( d( d d( d( d( d( d( d Cy d((( d( d( d( d( d = d( d( d( d( d( d Cy d((((( d( d( d( d( d d( d( d( d( d( d Cy d((( d( d( d( d( d d( d( d( d( d( d d()`())()()((( d( d( d( d( d ~ d( d( d( d( d)� d d))) d) d) d) d) d d) d) d) d) d) d P d))))) d) d) d) d) d d) d) d) d) d) d d))#) d) d) d)! d)" d d)$ d)% d)& d)' d)( d d)*)E)+)8),)2)- d). d)/ d)0 d)1 d <u d)3 d)4 d)5 d)6 d)7 d d)9)?): d); d)< d)= d)> d d)@ d)A d)B d)C d)D d d)F)S)G)M)H d)I d)J d)K d)L d d)N d)O d)P d)Q d)R d d)T)Z)U d)V d)W d)X d)Y d d)[ d)\ d)] d)^ d)_ d d)a))b)})c)p)d)j)e d)f d)g d)h d)i d = d)k d)l d)m d)n d)o d d)q)w)r d)s d)t d)u d)v d d)x d)y d)z d){ d)| d = d)~)))) d) d) d) d) d  d) d) d) d) d) d  d))) d) d) d) d) d d) d) d) d) d) d Cy d))))))) d) d) d) d) d d) d) d) d) d) d  d))) d) d) d) d) d d) d) d) d) d) d d))))) d) d) d) d = d) d) d) d) d) d d))) d) d) d) d) d d) d) d) d) d) d Cy d)-')+z)*)*A)* ))))))) d) d) d) d) d t d) d) d) d) d) d  d))) d) d) d) d) d d) d) d) d) d) d C] d))))) d) d) d) d) d Cy d) d) d) d) d) d d)*) d*� d* d* d* d d* d* d* d* d* d d* *&* ** ** d* d* d* d* d d* d* d* d* d* d Cy d** * d* d* d* d* d d*! d*" d*# d*$ d*% d Cy d*'*4*(*.*) d** d*+ d*, d*- d  d*/ d*0 d*1 d*2 d*3 d P d*5*;*6 d*7 d*8 d*9 d*: d d*< d*= d*> d*? d*@ d = d*B*y*C*^*D*Q*E*K*F d*G d*H d*I d*J d d d*L d*M d*N d*O d*P d CN d*R*X*S d*T d*U d*V d*W d d*Y d*Z d*[ d*\ d*] d d*_*l*`*f*a d*b d*c d*d d*e d d*g d*h d*i d*j d*k d d*m*s*n d*o d*p d*q d*r d d*t d*u d*v d*w d*x d Cy d*z**{* d*|*} d*~ d* d* d* d Cy d*** d* d* d* d* d d* d* d* d* d* d Cy d***** d* d* d* d* d ~ d* d* d* d* d* d = d*** d* d* d* d* d d* d* d* d* d* d  d*+********* d* d* d P d* d* d* d* d* d d*** d* d* d* d* d d* d* d* d* d* d Cy d*** d* d* d* d* d* d d*** d* d* d* d* d d* d* d* d* d* d Cy d******* d* d* d* d* d = d* d* d* d* d* d Cy d*** d* d* d* d* d d* d* d* d* d* d d*+*** d* d* d* d* d = d+� d+ d+ d+ d+ d = d++ + d+ d+ d+ d+ d d+ d+ d+ d+ d+ d  d++C++(+++ d+ d+ d+ d+ d+ d d++#+ d+ d+ d+! d+" d Cy d+$ d+% d+& d+' d = d+)+6+*+0++ d+, d+- d+. d+/ d d+1 d+2 d+3 d+4 d+5 d d+7+=+8 d+9 d+: d+; d+< d d+> d+? d+@ d+A d+B d Cy d+D+_+E+R+F+L+G d+H d+I d+J d+K d d+M d+N d+O d+P d+Q d Cy d+S+Y+T d+U d+V d+W d+X d d+Z d+[ d+\ d+] d+^ d Cy d+`+m+a+g+b d+c d+d d+e d+f d ~ d+h d+i d+j d+k d+l d Cy d+n+t+o d+p d+q d+r d+s d d+u d+v d+w d+x d+y d Cy d+{,T+|++}++~++++++ d+ d+ d+ d+ d = d+ d+ d+ d+ d+ d Cy d+++ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d Cy d+++++ d+ d+ d+ d+ d Cy d+ d+ d+ d+ d+ d Cy d+++ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d Cy d+++++++ d+ d+ d+ d+ d = d+ d+ d+ d+ d+ d d+++ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d d+++++ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d d+++ d+ d+ d+ d+ d d+ d+ d+ d+ d+ d P d+,#+,+++++ d+ d+ d+ d+ d d d+ d+ d+ d+ d+ d P d+,+ d+ d+ d,� d, d d, d, d, d, d, d P d, ,, ,, d, d, d, d, d d, d, d, d, d, d  d,,, d, d, d, d, d d, d, d, d,! d," d I7 d,$,?,%,2,&,,,' d,( d,) d,* d,+ d d,- d,. d,/ d,0 d,1 d CN d,3,9,4 d,5 d,6 d,7 d,8 d d,: d,; d,< d,= d,> d  d,@,G d,A,B d,C d,D d,E d,F d  d,H,N,I d,J d,K d,L d,M d d,O d,P d,Q d,R d,S d d,U,,V,,W,r,X,e,Y,_,Z d,[ d,\ d,] d,^ d  d,` d,a d,b d,c d,d d Cy d,f,l,g d,h d,i d,j d,k d d,m d,n d,o d,p d,q d <u d,s,,t,z,u d,v d,w d,x d,y d = d,{ d,| d,} d,~ d, d = d,,, d, d, d, d, d d, d, d, d, d, d Cy d,,,, d,, d, d, d, d, d Cy d,,, d, d, d, d, d d, d, d, d, d, d Cy d,,,,, d, d, d, d, d d, d, d, d, d, d P d,,, d, d, d, d, d d, d, d, d, d, d  d,,,,,,,,, d, d, d, d, d d, d, d, d, d, d Cy d,,, d, d, d, d, d d, d, d, d, d, d d,,,,, d, d, d, d, d d, d, d, d, d, d d,,, d, d, d, d, d d, d, d, d, d, d d,- ,-,,, d, d, d, d, d d-� d- d- d- d- d Cy d- d- d- d- d- d- d d- ---- d- d- d- d- d  d- d- d- d- d- d  d--!- d- d- d- d- d d-" d-# d-$ d-% d-& d Cy d-(.-)--*--+-b-,-G---:-.-4-/ d-0 d-1 d-2 d-3 d <u d-5 d-6 d-7 d-8 d-9 d  d-;-A-< d-= d-> d-? d-@ d d-B d-C d-D d-E d-F d Cy d-H-U-I-O-J d-K d-L d-M d-N d d-P d-Q d-R d-S d-T d CN d-V-\-W d-X d-Y d-Z d-[ d d-] d-^ d-_ d-` d-a d Cy d-c-~-d-q-e-k-f d-g d-h d-i d-j d d-l d-m d-n d-o d-p d  d-r-x-s d-t d-u d-v d-w d ~ d-y d-z d-{ d-| d-} d Cy d-- d-- d- d- d- d- d CN d--- d- d- d- d- d Cy d- d- d- d- d- d d--------- d- d- d- d- d ~ d- d- d- d- d- d d--- d- d- d- d- d = d- d- d- d- d- d Cy d----- d- d- d- d- d = d- d- d- d- d- d CN d--- d- d d- d- d- d- d- d CN d------- d- d- d- d- d I7 d- d- d- d- d- d Cy d--- d- d- d- d- d = d- d- d- d- d- d d-- d-- d- d- d- d- d Cy d--- d- d- d- d- d  d- d- d- d- d- d d-.]-.,-.-.- d- d.� d. d. d. d  d.. . d. d. d. d. d d. d. d. d. d. d d..... d. d. d. d. d CN d. d. d. d. d. d d. .&.! d." d.# d.$ d.% d  d.' d.( d.) d.* d.+ d d.-.B...5 d./.0 d.1 d.2 d.3 d.4 d Cy d.6.<.7 d.8 d.9 d.: d.; d d.= d.> d.? d.@ d.A d = d.C.P.D.J.E d.F d.G d.H d.I d d d.K d.L d.M d.N d.O d Cy d.Q.W.R d.S d.T d.U d.V d d.X d.Y d.Z d.[ d.\ d I7 d.^.._.z.`.m.a.g.b d.c d.d d.e d.f d  d.h d.i d.j d.k d.l d Cy d.n.t.o d.p d.q d.r d.s d d.u d.v d.w d.x d.y d d.{..|..} d.~ d. d. d. d t d. d. d. d. d. d Cy d... d. d. d. d. d d. d. d. d. d. d Cy d..... d. d. d. d. d. d = d... d. d. d. d. d d. d. d. d. d. d Cy d..... d. d. d. d. d d. d. d. d. d. d P d... d. d. d. d. d d. d. d. d. d. d P d././$./�....... d. d. d. d. d d. d. d. d. d. d d... d. d. d. d. d d. d. d. d. d. d = d..... d. d. d. d. d = d. d. d. d. d. d  d... d. d. d. d. d d. d. d. d. d. d Cy d////// / d/ d/ d/ d/ d CN d/ d/ d/ d/ d/ d d/ d/ d/ d/ d/ d/ d d d//// d/ d/ d/ d/ d d/ d/ d/! d/" d/# d P d/%/V/&/;/'/. d/(/) d/* d/+ d/, d/- d P d///5/0 d/1 d/2 d/3 d/4 d d/6 d/7 d/8 d/9 d/: d P d/</I/=/C/> d/? d/@ d/A d/B d = d/D d/E d/F d/G d/H d d/J/P/K d/L d/M d/N d/O d d/Q d/R d/S d/T d/U d Cy d/W/r/X/e/Y/_/Z d/[ d/\ d/] d/^ d CN d/` d/a d/b d/c d/d d d/f/l/g d/h d/i d/j d/k d d/m d/n d/o d/p d/q d d/s//t/z/u d/v d/w d/x d/y d ~ d/{ d/| d/} d/~ d/ d d/// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d Cy d/////////// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d CN d/// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d d///// d/ d/ d/ d/ d <u d/ d/ d/ d/ d/ d = d/// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d d//// d// d/ d/ d/ d/ d = d/// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d d///// d/ d/ d/ d/ d  d/ d/ d/ d/ d/ d P d/// d/ d/ d/ d/ d d/ d/ d/ d/ d/ d P d/0//0/0/0/ d/ d/ d/ d0� d ~ d0 d0 d0 d0 d0 d Cy d000 d0 d0 d0 d0 d d0 d0 d0 d0 d0 d CN d00"000 d0 d0 d0 d0 d d0 d0 d0 d0 d0! d d0#0)0$ d0% d0& d0' d0( d = d0* d0+ d0, d0- d0. d  d000K010>020803 d04 d05 d06 d07 d d09 d0: d0; d0< d0= d CN d0?0E0@ d0A d0B d0C d0D d CN d0F d0G d0H d0I d0J d d0L0Y0M0S0N d0O d0P d0Q d0R d = d0T d0U d0V d0W d0X d d0Z0`0[ d0\ d0] d0^ d0_ d ~ d0a d0b d0c d0d d0e d d0g60h30i2 0j1=0k00l00m00n0{0o0u0p d0q d0r d0s d0t d d0v d0w d0x d0y d0z d  d0|00} d0~ d0 d0 d0 d  d0 d0 d0 d0 d0 d  d00000 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d Cy d000 d0 d0 d0 d0 d Cy d0 d0 d0 d0 d0 d CN d0000000 d0 d0 d0 d0 d CN d0 d0 d0 d0 d0 d  d000 d0 d0 d0 d0 d d0 d0 d0 d0 d0 d CN d00 d00 d0 d0 d0 d0 d  d000 d0 d0 d0 d0 d d0 d0 d0 d0 d0 d d01 0000000 d0 d0 d0 d0 d <u d0 d0 d0 d0 d0 d Cy d000 d0 d0 d0 d0 d d0 d0 d0 d0 d0 d d00000 d0 d0 d0 d0 d d0 d0 d0 d0 d0 d  d1�11 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d CN d1 1"111 d1 d1 d1 d1 d1 d  d111 d1 d1 d1 d1 d d1 d1 d1 d1 d1! d CN d1#101$1*1% d1& d1' d1( d1) d d1+ d1, d1- d1. d1/ d Cy d111712 d13 d14 d15 d16 d d18 d19 d1: d1; d1< d CN d1>11?1v1@1[1A1N1B1H1C d1D d1E d1F d1G d = d1I d1J d1K d1L d1M d CN d1O1U1P d1Q d1R d1S d1T d d1V d1W d1X d1Y d1Z d d1\1i1]1c1^ d1_ d1` d1a d1b d = d1d d1e d1f d1g d1h d Cy d1j1p1k d1l d1m d1n d1o d d1q d1r d1s d1t d1u d d1w11x11y11z d1{ d1| d1} d1~ d  d1 d1 d1 d1 d1 d d111 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d d111 d1 d1 d1 d1 d1 d = d111 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d = d111111111 d1 d1 d1 d1 d iX d1 d1 d1 d1 d1 d = d111 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d Cy d11 d11 d1 d1 d1 d1 d d111 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d  d1111111 d1 d1 d1 d1 d Cy d1 d1 d1 d1 d1 d = d1 d1 d1 d1 d1 d1 d d11111 d1 d1 d1 d1 d Cy d1 d1 d1 d1 d1 d d121 d2� d2 d2 d2 d d2 d2 d2 d2 d2 d P d2 22 2o2 2822)22222 d2 d2 d2 d2 d = d2 d2 d2 d2 d2 d Cy d22#2 d2 d2 d2! d2" d d2$ d2% d2& d2' d2( d Cy d2*21 d2+2, d2- d2. d2/ d20 d CN d22 d23 d24 d25 d26 d27 d d292T2:2G2;2A2< d2= d2> d2? d2@ d d2B d2C d2D d2E d2F d d2H2N2I d2J d2K d2L d2M d d2O d2P d2Q d2R d2S d = d2U2b2V2\2W d2X d2Y d2Z d2[ d d2] d2^ d2_ d2` d2a d d2c2i2d d2e d2f d2g d2h d d2j d2k d2l d2m d2n d d2p22q22r22s2y2t d2u d2v d2w d2x d <u d2z d2{ d2| d2} d2~ d Cy d222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d d22222 d2 d2 d2 d2 d  d2 d2 d2 d2 d2 d  d222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d  d2222222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d = d222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d = d22222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d Cy d222 d2 d2 d2 d2 d d2 d2 d2 d2 d2 d d23B232222222 d2 d2 d2 d2 d t d2 d2 d2 d2 d2 d Cy d2 d2 d2 d2 d2 d2 d d23222 d2 d2 d2 d2 d d2 d3� d3 d3 d3 d Cy d33 3 d3 d3 d3 d3 d d3 d3 d3 d3 d3 d d33'33 d33 d3 d3 d3 d3 d CN d33!3 d3 d3 d3 d3 d d3" d3# d3$ d3% d3& d d3(353)3/3* d3+ d3, d3- d3. d d30 d31 d32 d33 d34 d d363<37 d38 d39 d3: d3; d d3= d3> d3? d3@ d3A d d3C3t3D3Y3E3R3F3L3G d3H d3I d3J d3K d <u d3M d3N d3O d3P d3Q d Cy d d3S3T d3U d3V d3W d3X d Cy d3Z3g3[3a3\ d3] d3^ d3_ d3` d  d3b d3c d3d d3e d3f d Cy d3h3n3i d3j d3k d3l d3m d P d3o d3p d3q d3r d3s d Cy d3u33v33w3}3x d3y d3z d3{ d3| d d3~ d3 d3 d3 d3 d d333 d3 d3 d3 d3 d CN d3 d3 d3 d3 d3 d Cy d d3333 d3 d3 d3 d3 d = d3 d3 d3 d3 d3 d d35434m34 333333333 d3 d3 d3 d3 d t d3 d3 d3 d3 d3 d d333 d3 d3 d3 d3 d  d3 d3 d3 d3 d3 d d33333 d3 d3 d3 d3 d  d3 d3 d3 d3 d3 d  d333 d3 d3 d3 d3 d = d3 d3 d3 d3 d3 d I7 d3333333 d3 d3 d3 d3 d d3 d3 d3 d3 d3 d d333 d3 d3 d3 d3 d d3 d3 d3 d3 d3 d Cy d34333 d3 d3 d3 d3 d  d3 d3 d4� d4 d4 d Cy d d44 d4 d4 d4 d4 d d4 4<4 4'4 4444 d4 d4 d4 d4 d <u d4 d4 d4 d4 d4 d Cy d44!4 d4 d4 d4 d4 d d4" d4# d4$ d4% d4& d Cy d4(454)4/4* d4+ d4, d4- d4. d d40 d41 d42 d43 d44 d Cy d46 d47 d48 d49 d4: d4; d = d4=4R4>4E d4?4@ d4A d4B d4C d4D d d4F4L4G d4H d4I d4J d4K d d4M d4N d4O d4P d4Q d Cy d4S4`4T4Z4U d4V d4W d4X d4Y d  d4[ d4\ d4] d4^ d4_ d Cy d4a4g4b d4c d4d d4e d4f d d4h d4i d4j d4k d4l d CN d4n44o44p44q4x d4r4s d4t d4u d4v d4w d CN d d4y4z d4{ d4| d4} d4~ d Cy d44444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d  d444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d = d4444444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d Cy d444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d Cy d44444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d Cy d444 d4 d4 d4 d4 d CN d4 d4 d4 d4 d4 d d45 4444444 d4 d4 d4 d4 d <u d4 d4 d4 d4 d4 d d444 d4 d4 d4 d4 d CN d4 d4 d4 d4 d4 d I7 d44444 d4 d4 d4 d4 d d4 d4 d4 d4 d4 d  d454 d4 d5� d5 d5 d Cy d5 d5 d5 d5 d5 d d5 55 5 d5 5 d5 d5 d5 d5 d Cy d d55 d5 d5 d5 d5 d Cy d55'55!5 d5 d5 d5 d5 d d5" d5# d5$ d5% d5& d Cy d5(5.5) d5* d5+ d5, d5- d = d5/ d50 d51 d52 d53 d  d555565575b585M595F5:5@5; d5< d5= d5> d5? d = d5A d5B d5C d5D d5E d Cy d d5G5H d5I d5J d5K d5L d Cy d5N5[5O5U5P d5Q d5R d5S d5T d d5V d5W d5X d5Y d5Z d Cy d d5\5] d5^ d5_ d5` d5a d š d5c5x5d5q5e5k5f d5g d5h d5i d5j d d5l d5m d5n d5o d5p d Cy d d5r5s d5t d5u d5v d5w d Cy d5y55z55{ d5| d5} d5~ d5 d d5 d5 d5 d5 d5 d Cy d555 d5 d5 d5 d5 d = d5 d5 d5 d5 d5 d  d555555555 d5 d5 d5 d5 d <u d5 d5 d5 d5 d5 d Cy d d55 d5 d5 d5 d5 d Cy d55555 d5 d5 d5 d5 d š d5 d5 d5 d5 d5 d Cy d555 d5 d5 d5 d5 d  d5 d5 d5 d5 d5 d d5555555 d5 d5 d5 d5 d = d5 d5 d5 d5 d5 d = d555 d5 d5 d5 d5 d = d5 d5 d5 d5 d5 d Cy d55 d55 d5 d5 d5 d5 d  d555 d5 d5 d5 d5 d CN d5 d5 d5 d5 d5 d d56o56(56 56�5 d5 d5 d5 d5 d d666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d d66666 d6 d6 d6 d6 d Cy d6 d6 d6 d6 d6 d Cy d66"6 d6 d6 d6 d6! d d6# d6$ d6% d6& d6' d Cy d6)6Z6*6M6+6G6, d6- d6. d6/ d60 d61 d 6263 64 65  6667 68 69 6: 6; 6< 6=6C6> 6?6A6@  dQ 6B  Cl 6D 6E 6F  dQ 6H d6I d6J d6K d6L d Cy d6N6T6O d6P d6Q d6R d6S d d6U d6V d6W d6X d6Y d Cy d6[6h6\6b6] d6^ d6_ d6` d6a d d6c d6d d6e d6f d6g d Cy d d6i6j d6k d6l d6m d6n d Cy d6p66q66r66s6y6t d6u d6v d6w d6x d = d6z d6{ d6| d6} d6~ d  d666 d6 d6 d6 d6 d <u d6 d6 d6 d6 d6 d Cy d66666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d CN d666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d d6666666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d P d666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d CN d66666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d CN d666 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d d69686767K676666666 d6 d6 d6 d6 d  d6 d6 d6 d6 d6 d d6 d6 d6 d6 d6 d6 d = d67676 d6 d6 d6 d7� d d7 d7 d7 d7 d7 d  d777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d Cy d77077#777 d7 d7 d7 d7 d <u d7 d7 d7 d7! d7" d Cy d7$7*7% d7& d7' d7( d7) d d7+ d7, d7- d7. d7/ d d717>727873 d74 d75 d76 d77 d d79 d7: d7; d7< d7= d  d7?7E7@ d7A d7B d7C d7D d d7F d7G d7H d7I d7J d  d7L77M7h7N7[7O7U7P d7Q d7R d7S d7T d = d7V d7W d7X d7Y d7Z d Cy d7\7b7] d7^ d7_ d7` d7a d d7c d7d d7e d7f d7g d  d7i7v7j7p7k d7l d7m d7n d7o d d7q d7r d7s d7t d7u d I7 d7w7}7x d7y d7z d7{ d7| d d7~ d7 d7 d7 d7 d Cy d7777777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d Cy d777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d  d77777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d d777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d Cy d78$777777777 d7 d7 d7 d7 d = d7 d7 d7 d7 d7 d I7 d777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d Cy d77777 d7 d7 d7 d7 d = d7 d7 d7 d7 d7 d Cy d777 d7 d7 d7 d7 d d7 d7 d7 d7 d7 d Cy d78 77 d77 d7 d7 d7 d7 d  d787 d7 d8� d8 d8 d d8 d8 d8 d8 d8 d Cy d8 88 88 d8 d8 d8 d8 d P d8 d8 d8 d8 d8 d Cy d888 d8 d8 d8 d8 d d8 d8 d8! d8" d8# d CN d8%8P8&8;8'8. d8(8) d8* d8+ d8, d8- d  d8/8580 d81 d82 d83 d84 d d86 d87 d88 d89 d8: d d8<8C8= d8> d8? d8@ d8A d8B d P d8D8J8E d8F d8G d8H d8I d d8K d8L d8M d8N d8O d d8Q8l8R8_8S8Y8T d8U d8V d8W d8X d = d8Z d8[ d8\ d8] d8^ d Cy d8`8f8a d8b d8c d8d d8e d d8g d8h d8i d8j d8k d Cy d8m8z8n8t8o d8p d8q d8r d8s d = d8u d8v d8w d8x d8y d CN d8{ d8| d8} d8~ d8 d8 d = d89I88888888888 d8 d8 d8 d8 d8 d d88 d d8 d88 d [ d8 d8 d8 d8 d8 d <u d d88 d8 d8 d8 d8 d d88888 d8 d8 d8 d8 d = d8 d8 d8 d8 d8 d d888 d8 d8 d8 d8 d d8 d8 d8 d8 d8 d d8888888 d8 d8 d8 d8 d d8 d8 d8 d8 d8 d CN d888 d8 d8 d8 d8 d d8 d8 d8 d8 d8 d d88888 d8 d8 d8 d8 d = d8 d8 d8 d8 d8 d CN d d88 d8 d8 d8 d8 d ~ d898988888 d8 d8 d8 d8 d d8 d8 d8 d8 d8 d CN d d88 d8 d9� d9 d9 d d99 d99 d9 d9 d9 d9 d k d9 99 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d Cy d99.99! d99 d9 d9 d9 d9 d Cy d9"9(9# d9$ d9% d9& d9' d ~ d9) d9* d9+ d9, d9- d d9/9<909691 d92 d93 d94 d95 d d97 d98 d99 d9: d9; d d9=9C9> d9? d9@ d9A d9B d d9D d9E d9F d9G d9H d <u d9J99K99L9g9M9Z9N9T9O d9P d9Q d9R d9S d d9U d9V d9W d9X d9Y d = d9[9a9\ d9] d9^ d9_ d9` d  d9b d9c d9d d9e d9f d  d9h9u9i9o9j d9k d9l d9m d9n d d9p d9q d9r d9s d9t d Cy d9v9|9w d9x d9y d9z d9{ d d9} d9~ d9 d9 d9 d P d9999999 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d <u d999 d9 d9 d9 d9 d Cy d9 d9 d9 d9 d9 d d99999 d9 d9 d9 d9 d = d9 d9 d9 d9 d9 d CN d999 d9 d9 d9 d9 d Cy d9 d9 d9 d9 d9 d CN d999 d9 d9 d9 d9 d9 d9 d9 d = d9999 d99 d9 d9 d9 d9 d Cy d999 d9 d9 d9 d9 d CN d9 d9 d9 d9 d9 d Cy d99 d99 d9 d9 d9 d9 d d999 d9 d9 d9 d9 d d9 d9 d9 d9 d9 d d9;9:9:`9:)9:9:999 d9 d9 d9 d9 d d9 d9 d9 d9 d:� d d::: d: d: d: d: d . d: d: d: d: d: d P d::::: d: d: d: d: d  d: d: d: d: d: d d::#: d: d: d:! d:" d = d:$ d:% d:& d:' d:( d d:*:E:+:8:,:2:- d:. d:/ d:0 d:1 d  d:3 d:4 d:5 d:6 d:7 d Cy d:9:?:: d:; d:< d:= d:> d d:@ d:A d:B d:C d:D d CN d:F:S:G:M:H d:I d:J d:K d:L d d:N d:O d:P d:Q d:R d CN d:T:Z:U d:V d:W d:X d:Y d d:[ d:\ d:] d:^ d:_ d  d:a::b:}:c:p:d:j:e d:f d:g d:h d:i d = d:k d:l d:m d:n d:o d d:q:w:r d:s d:t d:u d:v d = d:x d:y d:z d:{ d:| d d:~:::: d: d: d: d: d d: d: d: d: d: d d::: d: d: d: d: d d: d: d: d: d: d  d::::::: d: d: d: d: d d: d: d: d: d: d  d::: d: d: d: d: d = d: d: d: d: d: d CN d::: d: d: d: d: d: d  d::: d: d: d: d: d d: d: d: d: d: d = d:;!::::::::: d: d: d: d: d d: d: d: d: d: d <u d d:: d: d: d: d: d  d:: d:: d: d: d: d: d Cy d::: d: d: d: d: d ~ d: d: d: d: d: d d:; :;::: d: d: d: d: d = d;� d; d; d; d; d CN d d;; d; d; d; d; d d; ; d;; d; d; d; d; d  d;;; d; d; d; d; d d; d; d; d; d; d  d;";S;#;8;$;+ d;%;& d;' d;( d;) d;* d š d;,;2;- d;. d;/ d;0 d;1 d = d;3 d;4 d;5 d;6 d;7 d  d;9;F;:;@;; d;< d;= d;> d;? d d;A d;B d;C d;D d;E d d;G;M;H d;I d;J d;K d;L d = d;N d;O d;P d;Q d;R d P d;T;o;U;b;V;\;W d;X d;Y d;Z d;[ d = d;] d;^ d;_ d;` d;a d Cy d;c;i;d d;e d;f d;g d;h d d;j d;k d;l d;m d;n d CN d;p;{;q;w;r d;s d;t d;u d;v d d;x d;y d;z d d;|;;} d;~ d; d; d; d d; d; d; d; d; d d;<b;;;;;;;;;;; d; d; d; d; d d; d; d; d; d; d Cy d;;; d; d; d; d; d d; d; d; d; d; d t d;;;;; d; d; d; d; d d; d; d; d; d; d  d;;; d; d; d; d; d  d; d; d; d; d; d = d;;;;;;; d; d; d; d; d CN d; d; d; d; d; d Cy d;;; d; d; d; d; d CN d; d; d; d; d; d CN d;;;;; d; d; d; d; d  d; d; d; d; d; d d;;; d; d; d; d; d d; d; d; d; d; d d;<1;<;< ;<; d; d<� d< d< d d< d< d< d< d< d P d< << d< d< d< d< d CN d< d< d< d< d< d P d<<$<<< d< d< d< d< d d< d< d<! d<" d<# d P d<%<+<& d<' d<( d<) d<* d d<, d<- d<. d</ d<0 d P d<2<G<3<@<4<:<5 d<6 d<7 d<8 d<9 d  d<; d<< d<= d<> d<? d Cy d d<A<B d<C d<D d<E d<F d d<H<U<I<O<J d<K d<L d<M d<N d  d<P d<Q d<R d<S d<T d d<V<\<W d<X d<Y d<Z d<[ d ~ d<] d<^ d<_ d<` d<a d Cy d<c<<d<<e<<f<s<g<m<h d<i d<j d<k d<l d d<n d<o d<p d<q d<r d Cy d<t<z<u d<v d<w d<x d<y d I7 d<{ d<| d<} d<~ d< d Cy d<<<<< d< d< d< d< d <u d< d< d< d< d< d d<<< d< d< d< d< d P d< d< d< d< d< d š d<<<<<<< d< d< d< d< d d< d< d< d< d< d Cy d<<< d< d< d< d< d = d< d< d< d< d< d Cy d<<<<< d< d< d< d< d d< d< d< d< d< d CN d<<< d< d< d< d< d d< d< d< d< d< d d<=<<<<<<< d< d< d< d< d d< d< d< d< d< d d<<< d< d< d< d< d d< d< d< d< d< d d<< d<< d< d< d< d< d d<<< d< d< d< d< d d< d=� d= d= d= d d== ==== = d= d= d= d= d d= d= d= d= d= d d=== d= d= d= d= d d= d= d= d= d= d d=!=.="=(=# d=$ d=% d=& d=' d  d=) d=* d=+ d=, d=- d d=/=5=0 d=1 d=2 d=3 d=4 d d=6 d=7 d=8 d=9 d=: d t d=<[==K =>DY=?@=@>=A>=B==C=t=D=_=E=R=F=L=G d=H d=I d=J d=K d d=M d=N d=O d=P d=Q d d=S=Y=T d=U d=V d=W d=X d d=Z d=[ d=\ d=] d=^ d d=`=g d=a=b d=c d=d d=e d=f d d=h=n=i d=j d=k d=l d=m d = d=o d=p d=q d=r d=s d d=u==v==w=}=x d=y d=z d={ d=| d = d=~ d= d= d= d= d t d=== d= d= d= d= d d= d= d= d= d= d CN d===== d= d= d= d= d d= d= d= d= d= d = d=== d= d= d= d d= d= d= d= d= d = d========= d= d= d= d= d t d= d= d= d= d= d d=== d= d= d= d= d t d= d= d= d= d= d d===== d= d= d= d= d d= d= d= d= d= d Cy d d== d= d= d= d= d Cy d======= d= d= d= d= d d= d= d= d= d= d  d=== d= d= d= d= d d= d= d= d= d= d Cy d=>� d== d= d= d= d= d d d>> d> d> d> d> d d>>w> >F> >1> >$> >> d> d> d> d> d d> d> d> d> d> d> d > > > >> > >> >! >" >#  >%>+>& d>' d>( d>) d>* d d>, d>- d>. d>/ d>0 d d>2>?>3>9>4 d>5 d>6 d>7 d>8 d = d>: d>; d>< d>= d>> d Cy d d>@>A d>B d>C d>D d>E d d>G>\>H>U>I>O>J d>K d>L d>M d>N d d>P d>Q d>R d>S d>T d d d>V>W d>X d>Y d>Z d>[ d d>]>j>^>d>_ d>` d>a d>b d>c d CN d>e d>f d>g d>h d>i d d>k>q>l d>m d>n d>o d>p d  d>r d>s d>t d>u d>v d Cy d>x>>y>>z>>{>>| d>} d>~ d> d> d d d> d> d> d> d> d <u d>>> d> d> d> d> d CN d> d> d> d> d> d d>>>>> d> d> d> d> d C] d> d> d> d> d> d  d>>> d> d> d> d> d d> d> d> d> d> d d>>>>>>> d> d> d> d> d  d> d> d> d> d> d P d>>> d> d> d> d> d d> d> d> d> d> d  d>>>>> d> d> d> d> d  d> d> d> d> d> d  d>>> d> d> d> d> d d> d> d> d> d> d = d>?>?W>? >?>>>>> d> d> d> d> d d> d> d> d> d> d d>>> d> d> d> d> d d?� d? d? d? d? d  d???? ? d? d? d? d? d d? d? d? d? d? d CN d??? d? d? d? d? d d? d? d? d? d? d = d?!?<?"?/?#?)?$ d?% d?& d?' d?( d <u d?* d?+ d?, d?- d?. d Cy d?0?6?1 d?2 d?3 d?4 d?5 d d?7 d?8 d?9 d?: d?; d  d?=?J?>?D?? d?@ d?A d?B d?C d C] d?E d?F d?G d?H d?I d Cy d?K?Q?L d?M d?N d?O d?P d d?R d?S d?T d?U d?V d Cy d?X??Y?t?Z?g?[?a?\ d?] d?^ d?_ d?` d CN d?b d?c d?d d?e d?f d t d?h?n?i d?j d?k d?l d?m d d?o d?p d?q d?r d?s d CN d?u?| d?v?w d?x d?y d?z d?{ d = d?}??~ d? d? d? d? d d? d? d? d? d? d d??????? d? d? d? d? d = d? d? d? d? d? d d d??? d? d? d? d? d d? d? d? d? d? d  d????? d? d? d? d? d <u d? d? d? d? d? d d??? d? d? d? d? d d? d? d? d? d? d d?@?????? d?? d? d? d? d? d  d??? d? d? d? d? d d? d? d? d? d? d  d?? d?? d? d? d? d? d d??? d? d? d? d? d d? d? d? d? d? d d?@ ????? d? d? d? d? d <u d? d? d? d? d? d P d?@? d? d@� d@ d@ d d@ d@ d@ d@ d@ d  d@ @@ @@ d@ d@ d@ d@ d Cy d@ d@ d@ d@ d@ d Cy d@ d@ d@ d@ d@ d@ d d@@P@ @5@!@(@" d@# d@$ d@% d@& d@' d = d@)@/@* d@+ d@, d@- d@. d d@0 d@1 d@2 d@3 d@4 d  d@6@C@7@=@8 d@9 d@: d@; d@< d <u d@> d@? d@@ d@A d@B d  d@D@J@E d@F d@G d@H d@I d d@K d@L d@M d@N d@O d CN d@Q@l@R@_@S@Y@T d@U d@V d@W d@X d <u d@Z d@[ d@\ d@] d@^ d d@`@f@a d@b d@c d@d d@e d d@g d@h d@i d@j d@k d d@m@z@n@t@o d@p d@q d@r d@s d = d@u d@v d@w d@x d@y d Cy d@{@@| d@} d@~ d@ d@ d d@ d@ d@ d@ d@ d = d@BG@Aw@A@@@@@@@@@ d@ d@ d@ d@ d@ d @ @ @@ @ @ q@ q@@@ q@ q@@ q@@ q@ q@ q @ q@@ &+ &8 q@ q q@ q@@ q@ q q@ q &+@ d@ d@ d@ d@ d  d@@@ d@ d@ d@ d@ d d@ d@ d@ d@ d@ d Cy d@@@@@ d@ d@ d@ d@ d  d@ d@ d@ d@ d@ d Cy d@@@ d@ d@ d@ d@ d  d@ d@ d@ d@ d@ d Cy d@@@@@@@ d@ d@ d@ d@ d = d@ d@ d@ d@ d@ d P d@@@ d@ d@ d@ d@ d d@ d@ d@ d@ d@ d P d@A@A@ d@ d@ d@ dA� d <u dA dA dA dA dA d Cy dAAA dA dA dA dA d = dA dA dA dA dA d P dAAFAA+AA$AAA dA dA dA dA d Cy dA dA dA! dA" dA# d d dA%A& dA' dA( dA) dA* d  dA,A9A-A3A. dA/ dA0 dA1 dA2 d CN dA4 dA5 dA6 dA7 dA8 d J( dA:A@A; dA< dA= dA> dA? d dAA dAB dAC dAD dAE d CN dAGA\AHAUAIAOAJ dAK dAL dAM dAN d dAP dAQ dAR dAS dAT d d dAVAW dAX dAY dAZ dA[ d  dA]AjA^AdA_ dA` dAa dAb dAc d dAe dAf dAg dAh dAi d dAkAqAl dAm dAn dAo dAp d dAr dAs dAt dAu dAv d  dAxAAyAAzAA{AA|AA} dA~ dA dA dA d dA dA dA dA dA d P dAAA dA dA dA dA d dA dA dA dA dA d P dAAA dA dA dA dA dA d dAAA dA dA dA dA d dA dA dA dA dA d  dAAAAAAA dA dA dA dA d dA dA dA dA dA d dAAA dA dA dA dA d dA dA dA dA dA d = dAAAAA dA dA dA dA d <u dA dA dA dA dA d dA dA dA dA dA dA d dABAAAAAAA dA dA dA dA d Cy dA dA dA dA dA d dAAA dA dA dA dA d dA dA dA dA dA d = dAB dAA dA dA dA dA dB� dB šB š šBB B dB dB dB dB d dB dB dB dB dB d dBB,BBBBB dB dB dB dB d  dB dB dB dB dB d Cy dB B&B! dB" dB# dB$ dB% d dB' dB( dB) dB* dB+ d Cy dB-B:B.B4B/ dB0 dB1 dB2 dB3 d  dB5 dB6 dB7 dB8 dB9 d dB;BAB< dB= dB> dB? dB@ d dBB dBC dBD dBE dBF d dBHCBICBJBBKBdBLBWBMBQBN dBO dBP d dBR dBS dBT dBU dBV d dBXB^BY dBZ dB[ dB\ dB] d dB_ dB` dBa dBb dBc d P dBeBBfBBg dBh dBi dBj dBk dBl dBm tBn tBo t tBpBq tBr tBs tBt tBu tBv tBw t tBx tByBz tB{ tB| tB} tB~ tB tB tB tB tB tB tB tB tB tB tB tB tB t tBB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB tB t tB tBB tB t tBB t tBB t tB tB tBB tB t t &EB dB dB dB dB d ~ dBBB dB dB dB dB d dB dB dB dB dB d dBBBBBBB dB dB dB dB d dB dB dB dB dB d  dBBB dB dB dB dB d dB dB dB dB dB d <u dBC BCB dB dC� dC dC d dC dC dC dC dC d dC CC dC dC dC dC d dC dC dC dC dC d <u dCCHCC3CC&CC C dC dC dC dC d = dC! dC" dC# dC$ dC% d dC'C-C( dC) dC* dC+ dC, d dC. dC/ dC0 dC1 dC2 d dC4C; dC5C6 dC7 dC8 dC9 dC: d dC<CBC= dC> dC? dC@ dCA d dCC dCD dCE dCF dCG d = dCICdCJCWCKCQCL dCM dCN dCO dCP d = dCR dCS dCT dCU dCV d dCXC^CY dCZ dC[ dC\ dC] d dC_ dC` dCa dCb dCc d CN dCeCrCfClCg dCh dCi dCj dCk d dCm dCn dCo dCp dCq d CN dCsCyCt dCu dCv dCw dCx d dCz dC{ dC| dC} dC~ d  dCCCCCCCCCCC dC dC dC dC d = dC dC dC dC dC d Cy dCCC dC dC dC dC d dC dC dC dC dC d Cy d dCCCC dC dC dC dC d dC dC dC dC dC d dCCCCCCC dC dC dC dC d = dC dC dC dC dC d dCCC dC dC dC dC d = dC dC dC dC dC d dCCCCC dC dC dC dC d = dC dC dC dC dC d <u dCCC dC dC dC dC d CN dC dC dC dC dC dC dC ZC ZC ZC ZC ZC ZC Z Z CD"CDCCCCC dC dC dC dC d = dC dC dC dC dC d = dCDC dC dC dC dD� d  dD dD dD dD dD d  dDDD DD dD dD dD dD d <u dD dD dD dD dD d = dDDD dD dD dD dD d dD dD dD dD dD! d š dD#D>D$D1D%D+D& dD' dD( dD) dD* d <u dD, dD- dD. dD/ dD0 d Cy dD2D8D3 dD4 dD5 dD6 dD7 d dD9 dD: dD; dD< dD= d  dD?DLD@DFDA dDB dDC dDD dDE d  dDG dDH dDI dDJ dDK d CN dDMDSDN dDO dDP dDQ dDR d dDT dDU dDV dDW dDX d Cy dDZGD[FD\E5D]DD^DD_DzD`DmDaDgDb dDc dDd dDe dDf d  dDh dDi dDj dDk dDl d P dDnDtDo dDp dDq dDr dDs d dDu dDv dDw dDx dDy d dD{DD|DD} dD~ dD dD dD d = dD dD dD dD dD d Cy dDDD dD dD dD dD d dD dD dD dD dD d Cy dDDDDDDD dD dD dD dD d = dD dD dD dD dD d Cy dDDD dD dD dD dD d dD dD dD dD dD d dDDDDD dD dD dD dD d dD dD dD dD dD d dDDD dD dD dD dD d dD dD dD dD dD d dDEDDDDDDD dD dD dD dD d dD dD dD dD dD d dDDD dD dD dD dD d dD dD dD dD dD d Cy dDDDDD dD dD dD dD d dD dD dD dD dD d Cy dDDD dD dD dD dD d dD dE� dE dE dE d Cy dEE EEEE E dE dE dE dE d = dE dE dE dE dE d Cy dEEE dE dE dE dE d dE dE dE dE dE d = dE!E.E"E(E# dE$ dE% dE& dE' d dE) dE* dE+ dE, dE- d CN d dE/E0 dE1 dE2 dE3 dE4 d  dE6EE7EbE8EME9EFE:E@E; dE< dE= dE> dE? d dEA dEB dEC dED dEE d CN d dEGEH dEI dEJ dEK dEL d dENEU dEOEP dEQ dER dES dET d Cy dEVE\EW dEX dEY dEZ dE[ d dE] dE^ dE_ dE` dEa d Cy dEcE~EdEqEeEkEf dEg dEh dEi dEj d = dEl dEm dEn dEo dEp d I7 dErExEs dEt dEu dEv dEw d y dEy dEz dE{ dE| dE} d dEEEEE dE dE dE dE d CN dE dE dE dE dE d = dEEE dE dE dE dE d dE dE dE dE dE d CN dEEEEEEEEE dE dE dE dE d = dE dE dE dE dE d P dEEE dE dE dE dE d dE dE dE dE dE d P dEEEEE dE dE dE dE d dE dE dE dE dE d = dEEE dE dE dE dE d dE dE dE dE dE d <u dEEEEEEE dE dE dE dE d <u dE dE dE dE dE d I7 dEEE dE dE dE dE d dE dE dE dE dE d Cy dEEEEE dE dE dE dE d dE dE dE dE dE d š dEFE dE dE dF� dF d dF dF dF dF dF d = dF FF FsF F<F F!F F dFF dF dF dF dF d CN dFFF dF dF dF dF d dF dF dF dF dF d dF"F/F#F)F$ dF% dF& dF' dF( d = dF* dF+ dF, dF- dF. d  dF0F6F1 dF2 dF3 dF4 dF5 d dF7 dF8 dF9 dF: dF; d P dF=FXF>FKF?FEF@ dFA dFB dFC dFD d dFF dFG dFH dFI dFJ d Cy dFLFRFM dFN dFO dFP dFQ d dFS dFT dFU dFV dFW d dFYFfFZF`F[ dF\ dF] dF^ dF_ d dFa dFb dFc dFd dFe d dFgFmFh dFi dFj dFk dFl d dFn dFo dFp dFq dFr d CN dFtFFuFFvFFwF}Fx dFy dFz dF{ dF| d Cy dF~ dF dF dF dF d <u dFFF dF dF dF dF d dF dF dF dF dF d Cy dFFFFF dF dF dF dF d  dF dF dF dF dF d Cy dFFF dF dF dF dF d dF dF dF dF dF d Cy dFFFFFFF dF dF dF dF d  dF dF dF dF dF d t dFFF dF dF dF dF d dF dF dF dF dF d  dFF dFF dF dF dF dF d I7 dFFF dF dF dF dF d dF dF dF dF dF d dFGFFGFFFFFFF dF dF dF dF d = dF dF dF dF dF d dFFF dF dF dF dF d dF dF dF dF dF d  dFGFGF dF dF dG� dG d  dG dG dG dG dG d dG GG dG dG dG dG d dG dG dG dG dG d CN dGG1GG$GGG dG dG dG dG d <u dG dG dG! dG" dG# d dG%G+G& dG' dG( dG) dG* d = dG, dG- dG. dG/ dG0 d dG2G?G3G9G4 dG5 dG6 dG7 dG8 d ~ dG: dG; dG< dG= dG> d d dG@GA dGB dGC dGD dGE d Cy dGGGGHGhGIGVGJGPGK dGL dGM dGN dGO d Cy dGQ dGR dGS dGT dGU d Cy dGWG]GX dGY dGZ dG[ dG\ d CN dG^GcG_ dG` dGa dGb d CN dGd dGe dGf dGg d  dGiGvGjGpGk dGl dGm dGn dGo d = dGq dGr dGs dGt dGu d = dGwG}Gx dGy dGz dG{ dG| d dG~ dG dG dG dG d Cy dGGGGGGG dG dG dG dG d = dG dG dG dG dG d dGGG dG dG dG dG d dG dG dG dG dG d  dGGGGG dG dG dG dG d = dG dG dG dG dG d P dGGG dG dG dG dG d dG dG dG dG dG d  dGIfGHGH*GGGGGGGGG dG dG dG dG d ~ dG dG dG dG dG d  dGGG dG dG dG dG d dG dG dG dG dG d ~ dGGGGG dG dG dG dG d dG dG dG dG dG d  dGGG dG dG dG dG d dG dG dG d dGHGHGGG dG dG dG dG d Cy dG dG dG dH� dH d I7 dHH H dH dH dH dH d dH dH dH dH dH d Cy dHHHHH dH dH dH dH d dH dH dH dH dH d dHH$H dH dH! dH" dH# d dH% dH& dH' dH( dH) d dH+HbH,HGH-H:H.H4H/ dH0 dH1 dH2 dH3 d = dH5 dH6 dH7 dH8 dH9 d  dH;HAH< dH= dH> dH? dH@ d dHB dHC dHD dHE dHF d CN dHHHUHIHOHJ dHK dHL dHM dHN d dHP dHQ dHR dHS dHT d Cy dHVH\HW dHX dHY dHZ dH[ d dH] dH^ dH_ dH` dHa d dHcH~HdHqHeHkHf dHg dHh dHi dHj d  dHl dHm dHn dHo dHp d dHrHxHs dHt dHu dHv dHw d dHy dHz dH{ dH| dH} d i dHHH dH dH dH dH dH d = dH dH dH dH dH dH d dHHHHHHHHHHH dH dH dH dH d  dH dH dH dH dH d I7 dHHH dH dH dH dH d dH dH dH dH dH d  dHHHHH dH dH dH dH d = dH dH dH dH dH d I7 dHHH dH dH dH dH d dH dH dH dH dH d  dHHHHHHH dH dH dH dH d  dH dH dH dH dH d dHHH dH dH dH dH d dH dH dH dH dH d  dHHHHH dH dH dH dH d Cy dH dH dH dH dH d dHHH dH dH dH dH d dH dH dH dH dH d dHI5HII�I III dI dI dI dI d = dI dI dI dI dI d  dIII dI dI dI dI d dI dI dI dI dI d Cy dII(II"I dI dI dI dI! d = dI# dI$ dI% dI& dI' d Cy dI)I/I* dI+ dI, dI- dI. d dI0 dI1 dI2 dI3 dI4 d CN dI6IQI7IDI8I>I9 dI: dI; dI< dI= d = dI? dI@ dIA dIB dIC d dIEIKIF dIG dIH dII dIJ d dIL dIM dIN dIO dIP d ~ dIRIY dISIT dIU dIV dIW dIX d dIZI`I[ dI\ dI] dI^ dI_ d dIa dIb dIc dId dIe d CN dIgJ:IhIIiIIjIIkIxIlIrIm dIn dIo dIp dIq d C] dIs dIt dIu dIv dIw d Cy dIyIIz dI{ dI| dI} dI~ d dI dI dI dI dI d Cy dIIIII dI dI dI dI d <u dI dI dI dI dI d Cy dIII dI dI dI dI d dI dI dI dI dI d P dIIII dII dI dI dI dI d Cy dIII dI dI dI dI d dI dI dI dI dI d Cy dIIIII dI dI dI dI d = dI dI dI dI dI d  dIII dI dI dI dI d dI dI dI dI dI d CN dIJIIIIIII dI dI dI dI d  dI dI dI dI dI d dIII dI dI dI dI d dI dI dI dI dI d = dII dII dI dI dI dI d Cy dIII dI dI dI dI d dI dI dJ� dJ dJ d Cy dJJJJJJ J dJ dJ dJ dJ d = dJ dJ dJ dJ dJ d Cy dJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d Cy dJ J-J!J'J" dJ# dJ$ dJ% dJ& d ~ dJ( dJ) dJ* dJ+ dJ, d Cy dJ.J4J/ dJ0 dJ1 dJ2 dJ3 d dJ5 dJ6 dJ7 dJ8 dJ9 d dJ;JJ<JmJ=JRJ>JE dJ?J@ dJA dJB dJC dJD d dJFJLJG dJH dJI dJJ dJK d dJM dJN dJO dJP dJQ d Cy dJSJ`JTJZJU dJV dJW dJX dJY d t dJ[ dJ\ dJ] dJ^ dJ_ d  dJaJgJb dJc dJd dJe dJf d dJh dJi dJj dJk dJl d <u dJnJJoJ|JpJvJq dJr dJs dJt dJu d Cy dJw dJx dJy dJz dJ{ d dJ}JJ~ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d Cy dJJ dJJ dJ dJ dJ dJ d Cy dJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d Cy dJJJJJJJJJ dJ dJ dJ dJ d = dJ dJ dJ dJ dJ d  dJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d dJJJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d dJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d CN dJJJJJJJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ d dJJJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ d dJK�JJJ dJ dJ dJ dJ d Cy dJ dJ dJ dJ dJ d CN dKKK dK dK dK dK d dK dK dK dK dK d dKQKNcKLKKKK{KKJKK/KK"KKK dK dK dK dK d dK dK dK dK dK! d Cy dK#K)K$ dK% dK& dK' dK( d dK* dK+ dK, dK- dK. d Cy dK0K=K1K7K2 dK3 dK4 dK5 dK6 d dK8 dK9 dK: dK; dK< d Cy dK>KDK? dK@ dKA dKB dKC d dKE dKF dKG dKH dKI d dKKKfKLKYKMKSKN dKO dKP dKQ dKR d <u dKT dKU dKV dKW dKX d Cy dKZK`K[ dK\ dK] dK^ dK_ d dKa dKb dKc dKd dKe d ~ dKgKn dKhKi dKj dKk dKl dKm d Cy dKoKuKp dKq dKr dKs dKt d dKv dKw dKx dKy dKz d  dK|KK}KK~KKKK dK dK dK dK d C] dK dK dK dK dK d Cy dKKK dK dK dK dK d dK dK dK dK dK d  dKKKKK dK dK dK dK d dK dK dK dK dK d  dKKK dK dK dK dK d dK dK dK dK dK d Cy dKKKKKKK dK dK dK dK d  dK dK dK dK dK d Cy dKKK dK dK dK dK d dK dK dK dK dK d dKKKKK dK dK dK dK d = dK dK dK dK dK d Cy dKKK dK dK dK dK d dK dK dK dK dK d Cy dKLTKLKLKKKKK dK dK dK dK d  dK dK dK dK dK d = dKLK dK dK dL� dL d dL dL dL dL dL d C] dL L dL L dL dL dL dL d Cy dLLL dL dL dL dL d dL dL dL dL dL d Cy dLL9LL,L L&L! dL" dL# dL$ dL% d = dL' dL( dL) dL* dL+ d dL-L3L. dL/ dL0 dL1 dL2 d dL4 dL5 dL6 dL7 dL8 d CN dL:LGL;LAL< dL= dL> dL? dL@ d ~ dLB dLC dLD dLE dLF d = dLHLNLI dLJ dLK dLL dLM d dLO dLP dLQ dLR dLS d dLULLVLkLWLdLXL^LY dLZ dL[ dL\ dL] d dL_ dL` dLa dLb dLc d  dLe dLf dLg dLh dLi dLj d dLlLs dLmLn dLo dLp dLq dLr d  dLtLzLu dLv dLw dLx dLy d dL{ dL| dL} dL~ dL d dLLLLLLL dL dL dL dL d dL dL dL dL dL d Cy dLLL dL dL dL dL d dL dL dL dL dL d Cy dLLLLL dL dL dL dL d Cy dL dL dL dL dL d dLLL dL dL dL dL d dL dL dL dL dL d Cy dLMLM(LLLLLLLLL dL dL dL dL d P dL dL dL dL dL d dLLL dL dL dL dL d dL dL dL dL dL d Cy dLLLLL dL dL dL dL d dL dL dL dL dL d Cy dLLL dL dL dL dL d dL dL dL dL dL d dLM LM�LLL dL dL dL dL d dL dL dL dL dL d Cy dMMM dM dM dM dM d dM dM dM dM dM d Cy dMMMMM dM dM dM dM d Cy dM dM dM dM dM d  dMM"M dM dM dM dM! d dM# dM$ dM% dM& dM' d = dM)MZM*MEM+M8M,M2M- dM. dM/ dM0 dM1 d dM3 dM4 dM5 dM6 dM7 d  dM9M?M: dM; dM< dM= dM> d dM@ dMA dMB dMC dMD d dMFMM dMGMH dMI dMJ dMK dML d  dMNMTMO dMP dMQ dMR dMS d dMU dMV dMW dMX dMY d dM[MvM\MiM]McM^ dM_ dM` dMa dMb d Cy dMd dMe dMf dMg dMh d dMjMpMk dMl dMm dMn dMo d = dMq dMr dMs dMt dMu d dMwMMxM~My dMz dM{ dM| dM} d = dM dM dM dM dM d dMMM dM dM dM dM d dM dM dM dM dM d = dMMMMMMMM dMM dM dM dM dM d  dMMM dM dM dM dM d Cy dM dM dM dM dM d dMMMMM dM dM dM dM d dM dM dM dM dM d  dMMM dM dM dM dM d  dM dM dM dM dM d  dMMMMMMM dM dM dM d <u dM dM dM dM dM d Cy dMMM dM dM dM dM d š dM dM dM dM dM d Cy dMMMMM dM dM dM dM d CN dM dM dM dM dM d dMMM dM dM dM dM d dM dM dM dM dM d dMN,MNMN MNM dN� dN dN dN d dN dN dN dN dN d = dN NN dN dN dN dN d P dN dN dN dN dN d I7 dNN dNN dN dN dN dN d CN dN N&N! dN" dN# dN$ dN% d dN' dN( dN) dN* dN+ d = dN-NHN.N;N/N5N0 dN1 dN2 dN3 dN4 d  dN6 dN7 dN8 dN9 dN: d dN<NBN= dN> dN? dN@ dNA d dNC dND dNE dNF dNG d dNINVNJNPNK dNL dNM dNN dNO d = dNQ dNR dNS dNT dNU d = dNWN]NX dNY dNZ dN[ dN\ d dN^ dN_ dN` dNa dNb d = dNdPNeO>NfNNgNNhNNiNvNjNpNk dNl dNm dNn dNo d = dNq dNr dNs dNt dNu d Cy dNwN}Nx dNy dNz dN{ dN| d dN~ dN dN dN dN d Cy dNN dNN dN dN dN dN d Cy dNNN dN dN dN dN d dN dN dN dN dN d dNNNNNNN dN dN dN dN d = dN dN dN dN dN d dNNN dN dN dN dN d dN dN dN dN dN d  dNNNNN dN dN dN dN d Cy dN dN dN dN dN d  dNNN dN dN dN dN d dN dN dN dN dN d dNONNNNNNN dN dN dN dN d dN dN dN dN dN d  dNNN dN dN dN dN d dN dN dN dN dN d Cy dNNNNN dN dN dN dN d Cy dN dN dN dN dN d Cy dNON dN dN dN dO� d dO dO dO dO dO d Cy dOO#O OO OO dO dO dO dO d = dO dO dO dO dO d P dOOO dO dO dO dO d dO dO dO dO! dO" d P dO$O1O%O+O& dO' dO( dO) dO* d = dO, dO- dO. dO/ dO0 d  dO2O8O3 dO4 dO5 dO6 dO7 d dO9 dO: dO; dO< dO= d dO?OO@OwOAO\OBOOOCOIOD dOE dOF dOG dOH d = dOJ dOK dOL dOM dON d  dOPOVOQ dOR dOS dOT dOU d dOW dOX dOY dOZ dO[ d dO]OjO^OdO_ dO` dOa dOb dOc d <u dOe dOf dOg dOh dOi d dOkOqOl dOm dOn dOo dOp d dOr dOs dOt dOu dOv d C] dOxOOyOOzOO{ dO| dO} dO~ dO d = dO dO dO dO dO d dOOO dO dO dO dO d dO dO dO dO dO d dOOOOO dO dO dO dO d  dO d dOOO dO dO dO dO d dO dO dO dO dO d dOOOOOOOOO dO dO dO dO d C] dO dO dO dO dO d dOOO dO dO dO dO d dO dO dO dO dO d dOOOOO dO dO dO dO d  dO dO dO dO dO d dOOO dO dO dO dO d dO dO dO dO dO d = dOOOOOOO dO dO dO dO d = dO dO dO dO dO d Cy dOOO dO dO dO dO d dO dO dO dO dO d Cy dOP P�PP dP dP dP dP d <u dP dP dP dP dP d dP PP dP dP dP dP d dP dP dP dP dP d CN dPPPPPPSPP8PP+PP%P dP! dP" dP# dP$ d  dP& dP' dP( dP) dP* d  dP,P2P- dP. dP/ dP0 dP1 d dP3 dP4 dP5 dP6 dP7 d Cy dP9PFP:P@P; dP< dP= dP> dP? d dPA dPB dPC dPD dPE d Cy dPGPMPH dPI dPJ dPK dPL d dPN dPO dPP dPQ dPR d  dPTPoPUPbPVP\PW dPX dPY dPZ dP[ d Cy dP] dP^ dP_ dP` dPa d CN dPcPiPd dPe dPf dPg dPh d C] dPj dPk dPl dPm dPn d š dPpP}PqPwPr dPs dPt dPu dPv d = dPx dPy dPz dP{ dP| d = d dP~P dP dP dP dP d dPPPPPPPPP dP dP dP dP d  dP dP dP dP dP d dPPP dP dP dP dP d Cy dP dP dP dP dP d dPPPPP dP dP dP dP d  dP dP dP dP dP d dP dP dP dP dP dP d  dPPPPPPP dP dP dP dP d  dP dP dP dP dP d dPPP dP dP dP dP d CN dP dP dP dP dP d dPPPPP dP dP dP dP d I7 dP dP dP dP dP d Cy dPPP dP dP dP dP d š dP dP dP dP dP d dPQZPQ&PQ PPPPP dP dP dP dP d dP dP dP dP dP d dPQQ� dQ dQ dQ dQ d dQ dQ dQ dQ dQ d dQ QQ QQ dQ dQ dQ dQ d Cy dQ dQ dQ dQ dQ d dQQ Q dQ dQ dQ dQ d dQ! dQ" dQ# dQ$ dQ% d = dQ'QBQ(Q5Q)Q/Q* dQ+ dQ, dQ- dQ. d = dQ0 dQ1 dQ2 dQ3 dQ4 d = dQ6Q<Q7 dQ8 dQ9 dQ: dQ; d dQ= dQ> dQ? dQ@ dQA d = dQCQMQDQGQE dQF d dQH dQI dQJ dQK dQL d dQNQTQO dQP dQQ dQR dQS d dQU dQV dQW dQX dQY d <u dQ[QQ\QwQ]QjQ^QdQ_ dQ` dQa dQb dQc d = dQe dQf dQg dQh dQi d  dQkQqQl dQm dQn dQo dQp d dQr dQs dQt dQu dQv d dQxQQyQQz dQ{ dQ| dQ} dQ~ d = dQ dQ dQ dQ dQ d dQQQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ d dQQQQQQQ dQ dQ dQ dQ d = dQ dQ dQ dQ dQ d Cy dQQQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ d  dQQQQQ dQ dQ dQ dQ d = dQ dQ dQ dQ dQ d dQQQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ d dQXQSQRQR<QRQQQQQQQ dQ dQ dQ dQ d = dQ dQ dQ dQ dQ d  dQQQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ d  dQQQQQ dQ dQ dQ dQ d <u dQ dQ dQ dQ dQ d dQQQ dQ dQ dQ dQ d dR� dR dR dR dR d Cy dRR!RRRRR dR dR dR dR d = dR dR dR dR dR d Cy dRRR dR dR dR dR d dR dR dR dR dR d  dR"R/R#R)R$ dR% dR& dR' dR( d dR* dR+ dR, dR- dR. d dR0R6R1 dR2 dR3 dR4 dR5 d C] dR7 dR8 dR9 dR: dR; d dR=RtR>RYR?RLR@RFRA dRB dRC dRD dRE d = dRG dRH dRI dRJ dRK d dRMRSRN dRO dRP dRQ dRR d dRT dRU dRV dRW dRX d Cy dRZRgR[RaR\ dR] dR^ dR_ dR` d = dRb dRc dRd dRe dRf d  dRhRnRi dRj dRk dRl dRm d dRo dRp dRq dRr dRs d Cy dRuRRvRRwR}Rx dRy dRz dR{ dR| d = dR~ dR dR dR dR d Cy dRRR dR dR dR dR d dR dR dR dR dR d  dRRRRR dR dR dR dR d dR dR dR dR dR d CN dRRR dR dR dR dR d dR dR dR dR dR d  dRSRRRRRRRRR dR dR dR dR d = dR dR dR dR dR d  dRRR dR dR dR dR d dR dR dR dR dR d dRRRRR dR dR dR dR d dR dR dR dR dR d  dRRR dR dR dR dR d dR dR dR dR dR d  dRS�RRRRR dR dR dR dR d = dR dR dR dR dR d P dRRR dR dR dR dR d dR dR dR dR dR d dSS SSS dS dS dS dS d = dS dS dS dS d š dSSS dS dS dS dS d dS dS dS dS dS d P dSSRSS7SS*SS$S dS dS! dS" dS# d dS% dS& dS' dS( dS) d CN dS+S1S, dS- dS. dS/ dS0 d dS2 dS3 dS4 dS5 dS6 d CN dS8SES9S?S: dS; dS< dS= dS> d σ dS@ dSA dSB dSC dSD d t dSFSLSG dSH dSI dSJ dSK d dSM dSN dSO dSP dSQ d dSSSkSTS^SUSXSV dSW d dSY dSZ dS[ dS\ dS] d dS_SeS` dSa dSb dSc dSd d dSf dSg dSh dSi dSj d  dSlSwSmSqSn dSo dSp d dSr dSs dSt dSu dSv d  dSxS~Sy dSz dS{ dS| dS} d dS dS dS dS dS d CN dST~SSSSSSSSSSS dS dS dS dS d  dS dS dS dS dS d dSSS dS dS dS dS d dS dS dS dS dS d dSS dSS dS dS dS dS d dSSS dS dS dS dS d dS dS dS dS dS d CN dSSSSSSS dS dS dS dS d dS dS dS dS dS d CN dSSS dS dS dS dS d dS dS dS dS dS d dSSSSS dS dS dS dS d = dS dS dS dS dS d dSSS dS dS dS dS d dS dS dS dS dS d = dSTGST SSSSS dS dS dS dS d dS dS dS dS dS d dT�TT dT dT dT dT d dT dT dT dT dT d dT T:TT4T dT dT dT dT dT =T =T =T =T =T =T =T =T =T =T =T = =T T! =T" = =T#T$ = =T%T& = =T' =T( =T) =T* =T+T, = =T- =T. =T/T0 = =T1 =T2 =T3 = iT5 dT6 dT7 dT8 dT9 d  dT;TAT< dT= dT> dT? dT@ d dTB dTC dTD dTE dTF d CN dTHTcTITVTJTPTK dTL dTM dTN dTO d  dTQ dTR dTS dTT dTU d dTWT]TX dTY dTZ dT[ dT\ d dT^ dT_ dT` dTa dTb d dTdTqTeTkTf dTg dTh dTi dTj d  dTl dTm dTn dTo dTp d  dTrTxTs dTt dTu dTv dTw d dTy dTz dT{ dT| dT} d dTWTTTTTTTTT dT dT dT dT d  dT dT dT dT dT d  dTTT dT dT dT dT d dT dT dT dT dT d  dTT dTT dT dT dT dT d  dTTT dT dT dT dT d dT dT dT dT dT d CN dTWTUTUT šTTT šT šT šT šTTTTTT šTT šT šT š šT šT šT šT š , šTTT šT šT šT š : šTTT šT šT š : šT šT šT š šTTTTTTT šT šT š šT šT šT š > šTTT šT šT š � šT šT šT š � šTTT šT šT šT š šT šT šT šT š šTUTUTT šTT šT šT š šTUT šU� šU š , šU šU šU š : šUUUU U šU šU š : šU šU šU š , šUUU šU šU š : šU šU šU š šUU-UU$UU U šU šU š šU! šU" šU# š > šU%U)U& šU' šU( š � šU* šU+ šU, š � šU.U7U/U3U0 šU1 šU2 š šU4 šU5 šU6 š : šU8 šU9 U: U; U< U= U> U? U@UA UBUC UD UE UF UG UH UI UJUK UL UMUN UO UPUQ UR US UT UUUV UW UX UY UZU[ U\ U] U^U_ U` Ua Ub UcUd Ue Uf Ug Uh UiUj Uk UlUm Un UoUp UqUr Us Ut Uu Uv UwUx Uy Uz U{ U|U} U~ U U UU U UU U UU U U UU U UU U U UU U UU U > šU šUU šU šU šU šUUUUUU šUU šU šU š šU šU šU šU š , šUUU šU šU šU š : šU šU šU šU š : šUUUUU šU šU šU š šU šU šU šU š � šUUU šU šU šU š šU šU šU šU š šUV šUU šU šU šU šU šUUUUUU šUU šU šU š šU šU šU šU š , šUUU šU šU šU š : šUUU šU šU š : šU šU šU š šUVUUUUU šU šU š šU šU šU š > šUV�U šU šU š � šV šV šV š � šVV V šV šV šV š šV šV šV šV š š šV šVVV?V šV šV šVV-VV"VV šVV šV šV š šV šV šV šV! š , šV#V(V$ šV% šV& šV' š : šV) šV* šV+ šV, š : šV.V4V/ šV0 šV1 šV2 šV3 š šV5V:V6 šV7 šV8 šV9 š šV; šV< šV= šV> š šV@VVAVVBV}VCV^VDVOVEVJ šVFVG šVH šVI š šVK šVL šVM šVN š , šVPVUVQ šVR šVS šVT š : šVVVZVW šVX šVY š : šV[ šV\ šV] š šV_VrV`ViVaVeVb šVc šVd š šVf šVg šVh š > šVjVnVk šVl šVm š � šVo šVp šVq š � šVsVxVt šVu šVv šVw š šVy šVz šV{ šV| š šV~VVVVV šVV šV šV š šV šV šV šV š , šVVV šV šV šV š : šVVV šV šV š : šV šV šV š šVVVVVVV šV šV š šV šV šV š > šVVV šV šV š � šV šV šV š � šVVV šV šV šV š šV šV šV šV š šV šVVVV šVV šV šV šV š , šVVV šV šV šV š : šV šV šV šV š : šVVVVV šV šV šV š šV šV šV šV š � šVVV šV šV šV š šV šV šV šV š šVW V šVWVVVV šVV šV šV š šV šV šV šV š , šVVV šV šV šV š : šVVV šV šV š : šV šV šW� š šWWWW WWW šW šW š šW šW šW š > šW WW šW šW š � šW šW šW š � šWWW šW šW šW š šW šW šW šW š šW!W\W"W=W#W.W$W) šW%W& šW' šW( š šW* šW+ šW, šW- š , šW/W4W0 šW1 šW2 šW3 š : šW5W9W6 šW7 šW8 š : šW: šW; šW< š šW>WQW?WHW@WDWA šWB šWC š šWE šWF šWG š > šWIWMWJ šWK šWL š � šWN šWO šWP š � šWRWWWS šWT šWU šWV š šWX šWY šWZ šW[ š šW]WxW^WiW_Wd šW`Wa šWb šWc š šWe šWf šWg šWh š , šWjWoWk šWl šWm šWn š : šWpWtWq šWr šWs š : šWu šWv šWw š šWyWWzWW{WW| šW} šW~ š šW šW šW š > šWWW šW šW š � šW šW šW š � šWWW šW šW šW š šW šW šW šW š šWWWWW dW dW dW dW d  dW dW dW dW dW d dWWW dW dW dW dW d dW dW dW dW dW d  dWWWWWW dWW dW dW dW dW d dWWW dW dW dW dW d dW dW dW dW dW d  dWWWWW dW dW dW dW d dW dW dW dW dW d  dWWW dW dW dW dW d dW dW dW dW dW d = dWX�WWWWW dW dW dW dW d  dW dW dW dW dW d  dWWW dW dW dW dW d dW dW dW dW dW d  dXX dXX dX dX dX dX d dX XX dX dX dX dX d dX dX dX dX dX d P dXYXXXX~XXMXX2XX%XXX dX d <u dX dX! dX" dX# dX$ d P dX&X,X' dX( dX) dX* dX+ d dX- dX. dX/ dX0 dX1 d = dX3X@X4X:X5 dX6 dX7 dX8 dX9 d dX; dX< dX= dX> dX? d CN dXAXGXB dXC dXD dXE dXF d dXH dXI dXJ dXK dXL d I7 dXNXcXOXV dXPXQ dXR dXS dXT dXU d dXWX]XX dXY dXZ dX[ dX\ d dX^ dX_ dX` dXa dXb d dXdXqXeXkXf dXg dXh dXi dXj d dXl dXm dXn dXo dXp d CN dXrXxXs dXt dXu dXv dXw d dXy dXz dX{ dX| dX} d dXXXXXXXXX dX dX dX d I dX dX dX dX dX d  d dXX dX dX dX dX d P dXXXXX dX dX dX dX d dX dX dX dX dX d P dXXX dX dX dX dX d dX dX dX dX dX d dXXXXXXX dX dX dX dX d = dX dX dX dX dX d P dXXX dX dX dX dX d dX dX dX dX dX d P dXXXXX dX dX dX dX d dX dX dX dX dX d P dXXX dX dX dX dX d dX dX dX dX dX d CN dXYFXYXYXXXXX dX dX dX dX d dX dX dX dX dX d š dXXX dX dX dX dX d  dX dY� dY dY dY d dYYYY Y dY dY dY dY d Cy dY dY dY dY dY d = d dYY dY dY dY dY d CN dYY+YY dYY d dYY%Y dY! dY" dY# dY$ d CN dY& dY' dY( dY) dY* d CN dY,Y9Y-Y3Y. dY/ dY0 dY1 dY2 d Cy dY4 dY5 dY6 dY7 dY8 d dY:Y@Y; dY< dY= dY> dY? d = dYA dYB dYC dYD dYE d CN dYGY~YHYcYIYVYJYPYK dYL dYM dYN dYO d dYQ dYR dYS dYT dYU d dYWY]YX dYY dYZ dY[ dY\ d CN dY^ dY_ dY` dYa dYb d  dYdYqYeYkYf dYg dYh dYi dYj d <u dYl dYm dYn dYo dYp d I7 dYrYxYs dYt dYu dYv dYw d CN dYy dYz dY{ dY| dY} d  dYYYYYYY dY dY dY dY d  dY dY dY dY dY d dYYY dY dY dY dY d Cy dY dY dY dY dY d dYYYYY dY dY dY dY d = dY dY dY dY dY d Cy dYYY dY dY dY dY dY dY šY šY šY šY šY šY š š Y dY dY dY dY d Cy dYZYZ.YYYYYYYYY dY dY dY dY d dY dY dY dY dY d Cy dYYY dY dY dY dY d Cy dY dY dY dY dY d = dYYYYY dY dY dY dY d CN dY dY dY dY dY d  dYYY dY dY dY dY d Cy dY dY dY dY dY d dYZYZYZ�Y dY dY dY dY d dZ dZ dZ dZ dZ d dZZ Z dZ dZ dZ dZ d dZ dZ dZ dZ dZ d dZZ!ZZZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ d dZ"Z(Z# dZ$ dZ% dZ& dZ' d dZ) dZ* dZ+ dZ, dZ- d P dZ/ZsZ0ZXZ1ZKZ2ZEZ3 dZ4 dZ5 dZ6 dZ7 dZ8 dZ9 Z: Z; Z< Z= Z> Z? Z@ZA ZB ZCZD DL ZF dZG dZH dZI dZJ d  dZLZRZM dZN dZO dZP dZQ d C] dZS dZT dZU dZV dZW d dZYZfZZZ`Z[ dZ\ dZ] dZ^ dZ_ d C] dZa dZb dZc dZd dZe d dZgZmZh dZi dZj dZk dZl d C] dZn dZo dZp dZq dZr d dZtZZuZZvZ|Zw dZx dZy dZz dZ{ d <u dZ} dZ~ dZ dZ dZ d dZZZ dZ dZ dZ dZ d CN dZ dZ dZ dZ dZ d dZZZZZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ d dZZZ dZ dZ dZ dZ d = dZ dZ dZ dZ dZ d dZ[ZZZZZZZZZ dZ dZ dZ dZ d I dZ dZ dZ dZ dZ d P dZZZ dZ dZ dZ dZ d <u dZ dZ dZ dZ dZ d I7 dZZZZZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ d Cy dZZZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ d dZZZZZZZ dZ dZ dZ dZ d = dZ dZ dZ dZ dZ d P dZZZ dZ dZ dZ dZ d <u dZ dZ dZ dZ dZ d  d[�[ [[[ d[ d[ d[ d[ d d[ d[ d[ d[ d[ d CN d[[[ d[ d[ d[ d[ d d[ d[ d[ d[ d[ d  d[[R[[7[[*[[$[ d[ d[! d[" d[# d d[% d[& d[' d[( d[) d  d[+[1[, d[- d[. d[/ d[0 d d[2 d[3 d[4 d[5 d[6 d d[8[E[9[?[: d[; d[< d[= d[> d <u d[@ d[A d[B d[C d[D d d[F[L[G d[H d[I d[J d[K d d[M d[N d[O d[P d[Q d d[S[n[T[a[U[[[V d[W d[X d[Y d[Z d d[\ d[] d[^ d[_ d[` d P d[b[h[c d[d d[e d[f d[g d d[i d[j d[k d[l d[m d Cy d[o[|[p[v[q d[r d[s d[t d[u d d[w d[x d[y d[z d[{ d P d[}[[~ d[ d[ d[ d[ d CN d[ d[ d[ d[ d[ d  d[c[_[^G[]:[\a[[[[[[[[[[[ d[ d[ d[ d[ d Cy d[ d[ d[ d[ d[ d š d[[[ d[ d[ d[ d[ d d[ d[ d[ d[ d[ d P d[[[[[ d[ d[ d[ d[ d P d[ d[ d[ d[ d[ d P d[[[ d[ d[ d[ d[ d Cy d[ d[ d[ d[ d[ d P d[[[[[[[ d[ d[ d[ d[ d = d[ d[ d[ d[ d[ d P d d[[ d[ d[ d[ d[ d P d[[[[[ d[ d[ d[ d[ d = d[ d[ d[ d[ d[ d CN d[[[ d[ d[ d[ d[ d = d[ d[ d[ d[ d[ d CN d[\0[\[\[\[ d[ d[ d\� d\ d = d\ d\ d\ d\ d\ d C] d\ \\ d\ d\ d\ d\ d d\ d\ d\ d\ d\ d d\\#\\\ d\ d\ d\ d\ d = d\ d\ d\ d\! d\" d P d\$\*\% d\& d\' d\( d\) d d\+ d\, d\- d\. d\/ d P d\1\L\2\?\3\9\4 d\5 d\6 d\7 d\8 d = d\: d\; d\< d\= d\> d P d\@\F\A d\B d\C d\D d\E d d\G d\H d\I d\J d\K d d\M\Z\N\T\O d\P d\Q d\R d\S d = d\U d\V d\W d\X d\Y d  d d\[\\ d\] d\^ d\_ d\` d Cy d\b\\c\\d\\e\r\f\l\g d\h d\i d\j d\k d I d\m d\n d\o d\p d\q d CN d\s\y\t d\u d\v d\w d\x d d\z d\{ d\| d\} d\~ d  d\\\\\ d\ d\ d\ d\ d d\ d\ d\ d\ d\ d = d\\\ d\ d\ d\ d\ d CN d\ d\ d\ d\ d\ d Cy d\\\\\\\ d\ d\ d\ d\ d = d\ d\ d\ d\ d\ d CN d\\\ d\ d\ d\ d\ d d\ d\ d\ d\ d\ d  d\\\\\ d\ d\ d\ d\ d  d\ d\ d\ d\ d\ d I7 d d\\ d\ d\ d\ d\ d  d\]\\\\\\\ d\ d\ d\ d\ d d d\ d\ d\ d\ d\ d d\\\ d\ d\ d\ d\ d = d\ d\ d\ d\ d\ d d\\\\\ d\ d\ d\ d\ d <u d\ d\ d\ d\ d\ d CN d\\\ d\ d\ d\ d\ d <u d\ d\ d]� d] d] d P d]]]]]] ] d] d] d] d] d = d] d] d] d] d] d P d]]] d] d] d] d] d CN d] d] d] d] d] d P d] ]-]!]']" d]# d]$ d]% d]& d Cy d]( d]) d]* d]+ d], d d].]4]/ d]0 d]1 d]2 d]3 d = d]5 d]6 d]7 d]8 d]9 d <u d];]]<]]=]t]>]Y]?]L]@]F]A d]B d]C d]D d]E d <u d]G d]H d]I d]J d]K d CN d]M]S]N d]O d]P d]Q d]R d d]T d]U d]V d]W d]X d  d]Z]g][]a]\ d]] d]^ d]_ d]` d ~ d]b d]c d]d d]e d]f d  d]h]n]i d]j d]k d]l d]m d d]o d]p d]q d]r d]s d C] d]u]]v]}]w d]x d]y d]z d]{ d]| d d]~]] d] d] d] d] d C] d] d] d] d] d] d  d]]]]] d] d] d] d] d ~ d] d] d] d] d] d  d]]] d] d] d] d] d d] d] d] d] d] d  d]]]]]]] d] d] d] d] d] d I7 d] d] d] d] d] d] d ~ d]]] d] d] d] d] d] d CN d] d] d] d] d] d] d š d]]]]] d] d] d] d] d] d d] d] d] d] d] d] d d]]] d] d] d] d] d] d = d] d] d] d] d] d] d <u d]^]]]] d]] d] d] d] d] d] d d]]] d] d] d] d] d] d d] d] d] d] d] d] d = d]^ d^�^ d^ d^ d^ d^ d^ d d^^^ d^ d^ d^ d^ d^ d C] d^ d^ d^ d^ d^ d^ d d^^/^^ ^ d^ d^ d^ d^ d^ d^ d d^!^(^" d^# d^$ d^% d^& d^' d d^) d^* d^+ d^, d^- d^. d d^0^?^1^8^2 d^3 d^4 d^5 d^6 d^7 d = d^9 d^: d^; d^< d^= d^> d d d^@^A d^B d^C d^D d^E d^F d CN d^H_^I^^J^s^K^[^L d^M^T^N d^O d^P d^Q d^R d^S d  d^U d^V d^W d^X d^Y d^Z d = d^\^k^]^d^^ d^_ d^` d^a d^b d^c d = d^e d^f d^g d^h d^i d^j d d d^l^m d^n d^o d^p d^q d^r d d^t^^u^^v^}^w d^x d^y d^z d^{ d^| d <u d^~ d^ d^ d^ d^ d^ d <u d^^^ d^ d^ d^ d^ d^ d = d^ d^ d^ d^ d^ d^ d  d^^ d^^ d^ d^ d^ d^ d^ d CN d d^^ d^ d^ d^ d^ d^ d d^^^^^^^^^ d^ d^ d^ d^ d^ d iX d^ d^ d^ d^ d^ d^ d ~ d^^^ d^ d^ d^ d^ d^ d  d^ d^ d^ d^ d^ d^ d = d^^^ d^ d^ d^ d^ d^ d^ d  d^^^ d^ d^ d^ d^ d^ d <u d^ d^ d^ d^ d^ d^ d CN d^^^^ d^^ d^ d^ d^ d^ d^ d = d^^^ d^ d^ d^ d^ d^ d d^ d^ d^ d^ d^ d^ d t d^^^ d^ d^ d^ d^ d^ d = d^ d_� d_ d_ d_ d_ d_ d d__x__@_ _(_ __ __ d_ d_ d_ d_ d_ d d_ d_ d_ d_ d_ d_ d <u d__!_ d_ d_ d_ d_ d_ d d_" d_# d_$ d_% d_& d_' d  d_)_1 d_*_+ d_, d_- d_. d_/ d_0 d = d_2_9_3 d_4 d_5 d_6 d_7 d_8 d d_: d_; d_< d_= d_> d_? d CN d_A_`_B_Q_C_J_D d_E d_F d_G d_H d_I d  d_K d_L d_M d_N d_O d_P d CN d_R_Y_S d_T d_U d_V d_W d_X d  d_Z d_[ d_\ d_] d_^ d__ d = d_a_i_b d_c d_d d_e d_f d_g d_h d = d_j_q_k d_l d_m d_n d_o d_p d d_r d_s d_t d_u d_v d_w d  d_y__z__{_ d_|_} d_~ d_ d_ d_ d_ d d___ d_ d_ d_ d_ d_ d d_ d_ d_ d_ d_ d_ d d__ d__ d_ d_ d_ d_ d_ d = d d__ d_ d_ d_ d_ d_ d  d_______ d_ d_ d_ d_ d_ d  d_ d_ d_ d_ d_ d_ d  d___ d_ d_ d_ d_ d_ d d_ d_ d_ d_ d_ d_ d d_____ d_ d_ d_ d_ d_ d d_ d_ d_ d_ d_ d_ d Cy d___ d_ d_ d_ d_ d_ d CN d_ d_ d_ d_ d_ d_ d C] d_a_`_`O_`_`_____ d_ d_ d_ d_ d_ d ~ d_ d_ d_ d_ d_ d_ d Cy d___ d_ d_ d_ d_ d_ d d`� d` d` d` d` d` d  d````` d` d` d` d` d` d = d` d` d` d` d` d` d d d d`` d` d` d` d` d` d d``7` `/`!`(`" d`# d`$ d`% d`& d`' d <u d`) d`* d`+ d`, d`- d`. d  d d`0`1 d`2 d`3 d`4 d`5 d`6 d d`8`G`9`@`: d`; d`< d`= d`> d`? d Cy d`A d`B d`C d`D d`E d`F d d`H d`I d`J d`K d`L d`M d`N d d`P``Q`p`R`a`S`Z`T d`U d`V d`W d`X d`Y d i d`[ d`\ d`] d`^ d`_ d`` d d`b`i`c d`d d`e d`f d`g d`h d d`j d`k d`l d`m d`n d`o d d`q``r``s d`t d`u d`v d`w d`x d`y d d`z`{ d`| d`} d`~ d &R d` d` d` d` d` d` d d``` d` d` d` d` d` d d` d` d` d` d` d` d d``````` d` d` d` d` d` d = d` d` d` d` d` d` d d``` d` d` d` d` d` d d` d` d` d` d` d` d d````` d` d` d` d` d` d Cy d` d` d` d` d` d` d d``` d` d` d` d` d` d d` d` d` d` d` d` d  d`aM`a``````` d` d` d` d` d` d CN d` d` d` d` d` d` d  d d`` d` d` d` d` d` d  d````` d` d` d` d` d` d I7 d` d` d` d` d` d` d I7 da�aa da da da da da d da da da da da da d daa.aaaaa da da da da da d = da da da da da da d Cy da a'a! da" da# da$ da% da& d da( da) da* da+ da, da- d = da/a>a0a7a1 da2 da3 da4 da5 da6 d = da8 da9 da: da; da< da= d da?aFa@ daA daB daC daD daE d = daG daH daI daJ daK daL d daNaaOadaPaU daQaR daS daT d š daVa]aW daX daY daZ da[ da\ d = da^ da_ da` daa dab dac d  daeatafamag dah dai daj dak dal d dan dao dap daq dar das d <u daua|av daw dax day daz da{ d <u da} da~ da da da da d C] daaaaaaa da da da da da d  da da da da da da d CN daaa da da da da da d ~ da da da da da da d CN daaaaa da da da da da d da da da da da da d  daaa da da da da da d ~ da da da da da da d CN dabab.aaaaaaaaa da da da da da d ~ da da da da da da d d daa da da da da da d = daaaaa da da da da da d I7 da da da da da da d CN daaa da da da da da d da da da da da da d Cy dabab db�b db db db db db d dbbb db db db db db d  db db db db db db d dbb&bbb db db db db db d t db db! db" db# db$ db% d db' db( db) db* db+ db, db- d  db/bgb0bHb1b@b2b9b3 db4 db5 db6 db7 db8 d = db: db; db< db= db> db? d d dbAbB dbC dbD dbE dbF dbG d  dbIbXbJbQbK dbL dbM dbN dbO dbP d = dbR dbS dbT dbU dbV dbW d dbYb`bZ db[ db\ db] db^ db_ d = dba dbb dbc dbd dbe dbf d Cy dbhbbibxbjbqbk dbl dbm dbn dbo dbp d ~ dbr dbs dbt dbu dbv dbw d = dbybbz db{ db| db} db~ db d CN db db db db db db d <u dbbb db db db db db db d = dbbb db db db db db d CN db db db db db db d Cy dbcbbbbbbbbb db db db db db d <u db db db db db db d = dbbb db db db db db d db db db db db db d <u dbbbbb db db db db db d db db db db db db d dbbb db db db db db d = db db db db db db d CN dbc�bbbbb db db db db db d  db db db db db db d ~ dbbb db db db db db d = db db db db db db d dcccc c dc dc dc dc dc d Cy dc dc dc dc dc dc d dccc dc dc dc dc dc d ~ dc dc dc dc dc dc d dc c_c!c@c"c1c#c*c$ dc% dc& dc' dc( dc) d = dc+ dc, dc- dc. dc/ dc0 d dc2c9c3 dc4 dc5 dc6 dc7 dc8 d t dc: dc; dc< dc= dc> dc? d dcAcPcBcIcC dcD dcE dcF dcG dcH d t dcJ dcK dcL dcM dcN dcO d  dcQcXcR dcS dcT dcU dcV dcW d dcY dcZ dc[ dc\ dc] dc^ d CN dc`ccacpcbcicc dcd dce dcf dcg dch d dcj dck dcl dcm dcn dco d dcqcxcr dcs dct dcu dcv dcw d dcy dcz dc{ dc| dc} dc~ d dcc dcc dc dc dc dc dc d dc dc dc dc dc dc dc d <u dcgce=cdmcd ccccccccc dc dc dc dc d dc dc dc dc dc dc d  dccc dc dc dc dc dc d dc dc dc dc dc dc d dccccc dc dc dc dc dc d Cy dc dc dc dc dc dc d = dccc dc dc dc dc dc d <u dc dc dc dc dc dc d = dccccccc dc dc dc dc dc d = dc dc dc dc dc dc d dccc dc dc dc dc dc d dc dc dc dc dc dc d C] dccc dc dc dc dc dc dc d = dcdc dc dd� dd dd dd d  dd dd dd dd dd dd d CN dd dDd d%ddddd dd dd dd dd dd d = dd dd dd dd dd dd d dd dd dd dd! dd" dd# dd$ d = dd&d5d'd.d( dd) dd* dd+ dd, dd- d dd/ dd0 dd1 dd2 dd3 dd4 d CN dd6d=d7 dd8 dd9 dd: dd; dd< d <u dd> dd? dd@ ddA ddB ddC d ddEdNdF ddG ddH ddI ddJ ddK ddL ddM d  ddOd^dPdWdQ ddR ddS ddT ddU ddV d = ddX ddY ddZ dd[ dd\ dd] d  dd_dfd` dda ddb ddc ddd dde d ddg ddh ddi ddj ddk ddl d Cy ddnddoddpddqddrdxds ddt ddu ddv ddw d = ddy ddz dd{ dd| dd} dd~ d dddd dd dd dd dd dd d  dd dd dd dd dd dd d ddd ddd dd dd dd dd dd d CN dddd dd dd dd dd dd d  dd dd dd dd dd dd d dddddd dd dd dd dd dd dd d ~ dddd dd dd dd dd dd d I7 dd dd dd dd dd dd d dd d ddd dd dd dd dd dd d dddddddddd dd dd d dd dd dd dd dd dd d dddd dd dd dd dd dd d dd dd dd dd dd dd d dddddd dd dd dd dd dd d  dd dd dd dd dd dd d d ddd dd dd dd dd dd d  ddee�eeee de de de de de d C] de de de de de de d Cy deee de de de de de d <u de de de de de de d CN dee.e e'e! de" de# de$ de% de& d C] de( de) de* de+ de, de- d Cy de/e6e0 de1 de2 de3 de4 de5 d de7 de8 de9 de: de; de< d de>f(e?ee@eeAe`eBeQeCeJeD deE deF deG deH deI d I deK deL deM deN deO deP d = deReYeS deT deU deV deW deX d = deZ de[ de\ de] de^ de_ d Cy deaepebeiec ded dee def deg deh d = dej dek del dem den deo d = deqexer des det deu dev dew d  dey dez de{ de| de} de~ d deeee dee de de de de de d deee de de de de de d t de de de de de de d = deeeee de de de de de d Cy de de de de de de d CN deee de de de de de d de de de de de de d  deeeeeeeee de de de de de d de de de de de de d d dee de de de de de d dee dee de de de de de d C] deee de de de de de d = de de de de de de d Cy def eeeee de de de de de d de de de de de de d = defe de de de df� df d Cy df df df df df df d df ff ff df df df df df d = df df df df df df d dff!f df df df df df d = df" df# df$ df% df& df' d df)ff*faf+fIf,f:f-f3f. df/ df0 df1 df2 d df4 df5 df6 df7 df8 df9 d df;fBf< df= df> df? df@ dfA d CN dfC dfD dfE dfF dfG dfH d dfJfYfKfRfL dfM dfN dfO dfP dfQ d  dfS dfT dfU dfV dfW dfX d d dfZf[ df\ df] df^ df_ df` d dfbffcfrfdfkfe dff dfg dfh dfi dfj d dfl dfm dfn dfo dfp dfq d š dfsfzft dfu dfv dfw dfx dfy d = df{ df| df} df~ df df d dfffff df df df df df d = df df df df df df d dfff df df df df df d df df df df df df d dfffffffff df df df df df d  df df df df df df d dfff df df df df df d  df df df df df df d dfffff df df df df df d df df df df df df d dfff df df df df df d  df df df df df df d dfg�fffff df df df df df d df df df df df df d dfff df df df df df d df df df df df df d dgggg g dg dg dg dg dg d = dg dg dg dg dg dg d dggg dg dg dg dg dg d Cy dg dg dg dg dg dg d dg ig!h g"gg#gbg$gCg%g4g&g-g' dg( dg) dg* dg+ dg, d  dg. dg/ dg0 dg1 dg2 dg3 d dg5g<g6 dg7 dg8 dg9 dg: dg; d <u dg= dg> dg? dg@ dgA dgB d dgDgSgEgLgF dgG dgH dgI dgJ dgK d Cy dgM dgN dgO dgP dgQ dgR d = dgTg[gU dgV dgW dgX dgY dgZ d <u dg\ dg] dg^ dg_ dg` dga d dgcggdgsgeglgf dgg dgh dgi dgj dgk d dgm dgn dgo dgp dgq dgr d dgtg{gu dgv dgw dgx dgy dgz d = dg| dg} dg~ dg dg dg d dggggg dg dg dg dg dg d ~ dg dg dg dg dg dg d dggg dg dg dg dg dg d  dg dg dg dg dg dg d dggggggggg dg dg dg dg dg d dg dg dg dg dg dg d dggg dg dg dg dg dg d dg dg dg dg dg dg d dggggg dg dg dg dg dg d <u dg dg dg dg dg dg d = dggg dg dg dg dg dg d  dg dg dg dg dg dg d dghggggg dg dg dg dg dg d dg dg dg dg dg dg d dggg dg dg dg dg dg d dg dg dg dg dg dh� d dhhhh h dh dh dh dh dh d = dh dh dh dh dh dh d dhhh dh dh dh dh dh d dh dh dh dh dh dh d dh!hh"hah#hBh$h3h%h,h& dh' dh( dh) dh* dh+ d C] dh- dh. dh/ dh0 dh1 dh2 d = dh4h;h5 dh6 dh7 dh8 dh9 dh: d  dh< dh= dh> dh? dh@ dhA d Cy dhChRhDhKhE dhF dhG dhH dhI dhJ d dhL dhM dhN dhO dhP dhQ d CN dhShZhT dhU dhV dhW dhX dhY d = dh[ dh\ dh] dh^ dh_ dh` d CN dhbhhchrhdhkhe dhf dhg dhh dhi dhj d I7 dhl dhm dhn dho dhp dhq d dhshzht dhu dhv dhw dhx dhy d <u dh{ dh| dh} dh~ dh dh d dhhhhh dh dh dh dh dh d dh dh dh dh dh dh d dhhh dh dh dh dh dh d CN dh dh dh dh dh dh d dhhhhhhhhh dh dh dh dh dh d dh dh dh dh dh dh d dhhh dh dh dh dh dh d = dh dh dh dh dh dh d dhhhhh dh dh dh dh dh d  dh dh dh dh dh dh d d dhh dh dh dh dh dh d dhhhhhhh dh dh dh dh dh d = dh dh dh dh dh dh d d dhh dh dh dh dh dh d dhihhh dh dh dh dh dh d ~ dh dh dh dh di� di d dii i di di di di di d Cy di di di di di di d dijiiiiKii4ii%iii di di di di di d di di di! di" di# di$ d di&i-i' di( di) di* di+ di, d di. di/ di0 di1 di2 di3 d di5i= di6i7 di8 di9 di: di; di< d di>iDi? di@ diA diB diC d diE diF diG diH diI diJ d diLijiMi\iNiUiO diP diQ diR diS diT d = diV diW diX diY diZ di[ d di]ici^ di_ di` dia dib d  did die dif dig dih dii d dikizilisim din dio dip diq dir d dit diu div diw dix diy d di{ii| di} di~ di di di d = di di di di di di d diiiiiiiii di di di di di d di di di di di di d  d dii di di di di di d CN diiiii di di di di di d di di di di di di d diii di di di di di d di di di di di di d diiiiiii di di di di di d = di di di di di di d diii di di di di di d t di di di di di di d diiiii di di di di di d = di di di di di di d diii di di di di di d di di di di di dj� d djjljj4jjjj djj dj dj dj dj dj d djjj dj dj dj dj dj d <u dj dj dj dj dj dj d djj,jj%j dj dj! dj" dj# dj$ d Cy dj& dj' dj( dj) dj* dj+ d d dj-j. dj/ dj0 dj1 dj2 dj3 d dj5jMj6jEj7j>j8 dj9 dj: dj; dj< dj= d = dj? dj@ djA djB djC djD d d djFjG djH djI djJ djK djL d djNj]jOjVjP djQ djR djS djT djU d djW djX djY djZ dj[ dj\ d dj^jej_ dj` dja djb djc djd d  djf djg djh dji djj djk d djmjjnjjoj~jpjwjq djr djs djt dju djv d ~ djx djy djz dj{ dj| dj} d djjj dj dj dj dj dj d Cy dj dj dj dj dj dj d djjjjj dj dj dj dj dj d dj dj dj dj dj dj d d djj dj dj dj dj dj d djjjj djj dj dj dj dj dj d djjj dj dj dj dj dj d = dj dj dj dj dj dj d djj djj dj dj dj dj dj d CN djjj dj dj dj dj dj d  dj dj dj dj dj dj d CN djkQjkjjjjjjjjj dj d dj dj dj dj d = djjj dj d dj dj dj dj d dj dj d djkjkjkj dj dj djk j dj dj dj d djj j j k�k k k kk k kk k k dk d dk k d d k d dkkk dk d  d dk dk d dkk6kk0kk(kk#k dk dk dk! dk" d dk$ dk% dk& dk' d dk)k+k* d dk, dk- dk. dk/ d dk1k4k2 dk3 d dk5 d dk7kGk8kCk9 dk: dk; dk< dk=k@k> dk? d dkA dkB d d kD dkE dkF d dkHkKkI dkJ d dkL dkM dkN dkO dkP d dkRkkSkikTkckUk_kV dkW dkX dkY dkZ dk[ dk\ dk] dk^ d dk` dka dkb d dkdkgke dkf d dkh d dkjkwkkktkl dkm dkn dko dkp dkq dkr dks d dku dkv d dkxk~ky dkz dk{ dk| dk} d dk dk dk dk dk d dkkk d dkkkkk dk dk dk d dk dk dk dk dk d dkkk dk dk dk dk d dk dk dk dk dk d d dk dk dkk dk d dk dk dk dk dkk dk d dk dk dk dk dk dk dk dk dk dkk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk dk d  dk dk dk dk dk d dk dkk dk d dkk d dk dk dk dk dk dk dkk d E dk dk dk dkkkkk{k{Gkz4ky kxklkl}klsklAkl=k dk dk dl� dl dllll šl šl šll š šll šl šl š B šl š šll šl šl šl šl š šl š B šll š šl šl šl šl šl šl šl šl šl l! šl" šl# šl$ šl% šl& šl' šl(l-l)l+l* š B šl, š B šl.l0l/ š B šl1l2 š B šl3 šl4 šl5 šl6 šl7 šl8 šl9 šl: šl; šl< š Bl> dl? dl@ d š dlBlFlC dlD dlE d š d šlGlH šlI šlJ šlK š šlL šlM šlNlO šlP šlQ šlR šlS šlT šlU šlV šlW šlX šlY šlZ š šl[l\ šl] š šl^l_ Bl` Bla Blb Blc Bld Ble Blf Blg Blh Bli Blj Blklpllln Blm B šlo B B šlq Blr B B šlt dlu dlv dlw dlx dly dlz dl{ dl| d š dl~llllll dl d š dl dl dl d š dlll dl dl dl dl dl d š dl dl dl d š dl dlll dl dl d šll d šll d š dl dl dl d dlvslllllll dl dl d šl š dl dl dl d š d šll dl dl d š dlvnlvjl šl šl šlq šlln2 šllmlllll šl šl šl šl šl šl šl šl šl šl šlll š š šl š lll šl šl šl šl šl šl šl šl šl šl šl š šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl šl š lm šll šl šl šl šl šl šl šl šl šl šl šm� š šm šm šm šm šm šm šm šm šm šm šm šm šm š šmmmmfmmMmmAmm6mm,m šm šm šm šm šmm%mm"mm mm š : : šm! š : š šm#m$ š š :m&m) :m'm( š š : šm* šm+ š :m- šm. šm/ šm0 šm1 šm2 šm3 šm4 šm5 š : šm7 šm8 šm9 šm: šm; šm< šm= šm> šm? šm@ š : šmB šmC šmD šmE šmF šmG šmH šmI šmJ šmK šmL š : šmNmZmO šmP šmQ šmR šmS šmT šmU šmV šmW šmX šmY š : šm[ šm\ šm] šm^ šm_ šm` šma šmb šmc šmd šme š : šmgmmhmmimtmj šmk šml šmm šmn šmo šmp šmq šmr šms š : šmu šmv šmw šmx šmy šmz šm{ šm| šm} šm~ š : šm šm šm šm šm šm šm šm šm šm šm š : š šmm šm šm šm šm šm šm šm šm šm šm š : šmmmmm šmmmmm šm šm šm šm šm šm šm šm š : šm šm šm šm šm šm šm šm šm š : šm šm šm šm šm šm šm šm šm šm š : šmmmmm šm šm šm šm šm šm šm šm šm š : šmmm šm šm šm šm šm šm šm šm š : šm šm šm šm šm šm šm šm šm š : šm šm šm šm šm šm šm šm šm šm šm š : šmnmmm šm šm šm šm šm šm šm šm šm šm š : šmnmnm šm šm šm šm šn� šn šn šn š : šn šn šn šn šn šn šn šn šn š : š šnn šn šn šn šn šn šn šn šn š : šnn&n šn šn šn šn šn šn! šn" šn# šn$ šn% š : šn' šn( šn) šn* šn+ šn, šn- šn. šn/ šn0 šn1 š : š šn3n4nCn5 šn6 šn7 šn8 šn9 šn: šn; šn< šn= šn> šn? šn@ šnA š šnB š >nDp nEognFnnGnnHnvnIncnJnZnK šnL šnM šnN šnO šnPnSnQ � šnR š �nTnWnUnV š � š �nXnY š � � šn[ šn\ šn] šn^ šn_ šn` šna šnb š � šndnmne šnf šng šnh šni šnj šnk šnl š � šnn šno šnp šnq šnr šns šnt šnu š � šnwnnxnny šnz šn{ šn| šn} šn~ šn šn š � šn šn šn šn šn šn šn šn š � šnnn šn šn šn šn šn šn šn š � šn šn šn šn šn šn šn šn š � šnnnn šnn šn šn šn šn šn šn šn š � š šnn šn šn šn šn šn šn šn š � šnnnnn šn šn šn šn šn šn šn š � šn šn šn šn šn šn šn šn š � šnnn šn šn šn šn šn šn šn š � šn šn šn šn šn šn šn šn š � šno!nnnn šnn šn šn šn šn šn šn šn š � šnnn šn šn šn šn šn šn šn š � šn šn šn šn šn šn šn šn š � šnonon šn šn šo� šo šo šo šo š � šo šo šo šo šo šo šo šo š � šooo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo š � šo"oIo#o6o$o-o% šo& šo' šo( šo) šo* šo+ šo, š � šo. šo/ šo0 šo1 šo2 šo3 šo4 šo5 š � šo7o@o8 šo9 šo: šo; šo< šo= šo> šo? š � šoA šoB šoC šoD šoE šoF šoG šoH š � šoJoT šoKoL šoM šoN šoO šoP šoQ šoR šoS š � šoUo^oV šoW šoX šoY šoZ šo[ šo\ šo] š � šo_ šo` šoa šob šoc šod šoe šof š � šohooioojookou šolom šon šoo šop šoq šor šos šot š � š šovow šox šoy šoz šo{ šo| šo} šo~ š � šooooo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo šo š � šooooo šo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo šo š � šooo šo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo šo š � šooooo šo šo šo šo šo šo šo šo šo š � šooo šo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo šo š � šop�ooo šo šo šo šo šo šo šo šo š � šo šo šo šo šo šo šo šo šo š � šp šp šp šp šp šp šp šp šp šp š � šp p~p p;pp špp šp šp šp šp šp šp šp šp šp š � špp&p šp šp šp šp šp! šp" šp# šp$ šp% š � šp'p1p( šp) šp* šp+ šp, šp- šp. šp/ šp0 š � šp2 šp3 šp4 šp5 šp6 šp7 šp8 šp9 šp: š � šp<p]p=pH šp>p? šp@ špA špB špC špD špE špF špG š � špIpSpJ špK špL špM špN špO špP špQ špR š � špT špU špV špW špX špY špZ šp[ šp\ š � šp^pip_ šp` špa špb špc špd špe špf špg šph š � špjptpk špl špm špn špo špp špq špr šps š � špu špv špw špx špy špz šp{ šp| šp} š � šppppppppp šp šp šp šp šp šp šp šp š � šp šp šp šp šp šp šp šp šp š � š špp šp šp šp šp šp šp šp šp š � šppppp šp šp šp šp šp šp šp šp š � šp šp šp šp šp šp šp šp šp š � šppp šp šp šp šp šp šp šp šp šp šp šp šp šp šp šp špp š � � šp šp šp šp šp šp šp šp šp š � šppppppp šp šp šp šp šp šp šp šp š � šp šp šp šp šp šp šp šp šp š � š špp šp šp šp šp šp šp šp šp š � špq pqp šp šp šp šp šp šq� šq šq š � šq šq šq šq šq šq šq šq šq š � š šqq šq šq šq šq šq šq šq šq š � šqtqqqqqqqqqGqq, šqq šq! šq" šq# šq$ šq% šq& šq' šq( šq) šq* šq+ š , šq-q:q. šq/ šq0 šq1 šq2 šq3 šq4 šq5 šq6 šq7 šq8 šq9 š , šq; šq< šq= šq> šq? šq@ šqA šqB šqC šqD šqE šqF š , šqHqV šqIqJ šqK šqL šqM šqN šqO šqP šqQ šqR šqS šqT šqU š , šqWqdqX šqY šqZ šq[ šq\ šq] šq^ šq_ šq` šqa šqb šqc š , šqe šqf šqg šqh šqi šqj šqk šql šqm šqn šqo šqp š , šqrqqs šqt šqu šqv šqw šqx šqy šqz šq{ šq| šq} šq~ šq šq š @ šq šq šq šq šq šq šq šq šq šq šq šq šq šq š @ š šqqqq šq šq šq šq šq šq šq šq šq šq šq šq šq š š q š šqq šq šq šq šq šq šq šq šq šq šq šq š šqrqqq šq šq šq šq šq šq šq šq šq šq šq šq šq šq š B{ šqrFqr8qqqqq šq šq šq šq šq šq šqqqq šqq š š Aqqq š š šq š qqq š q šq šq š A šqqqqq šq šq šq šq šq šq šq šq š šq šq šq šq šq šq šq šq šq š š šqq šq šq šq šq šq šq šq šq š šr�rrr r šr šr šr šr šr šr šr šr šr š š šr r šr šr šr šr šr šr šr šr š šrr# šrr šr šr šr šr šr šr šr! šr" š šr$r.r% šr& šr' šr( šr) šr* šr+ šr, šr- š šr/ šr0 šr1 šr2 šr3 šr4 šr5 šr6 šr7 š šr9 šr: š šr;r< šr= šr> šr? šr@ šrA šrB šrC šrD šrE š šrGryrHrUrI š šrJrK šrL šrM šrN šrO šrP šrQ šrR šrS šrT š šrVrbrW šrX šrY šrZ šr[ šr\ šr] šr^ šr_ šr` šra š šrcrnrd šre šrf šrg šrh šri šrj šrk šrl šrm š šro šrp šrq šrr šrs šrt šru šrv šrw šrx š šrzr šr{ šr|r} šr~ šr šr šr šr šr šr šr šr š šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šr šrr š š rrrrr šrr šrr šr šr šr šr šr šr šr šr šr šr š šr šr šr šr šr šr šr šr šr šr šr šr š D šrr šrr šr šr šr šr šr šr šr šr šr šr šr š š šrr šr šr šr šr šr šr šr šr šr šr šr š D šrsrsnrsUrs>r šr šr šr šr šrsrsrrrrrrrr > š š rr š š šr šr , rrrr šr š šr šrsrs� A š š A šs � šssss sss š � š šs š :s s > šs s � : , š šs šs šs D ss+sssss : šs š :ss šs : šs c Dss%s s" �s! š �s#s$ š � � šs&s( šs' : šs)s* š : Ds,s3 šs-s.s0 šs/ � šs1s2 š � � šs4s:s5s7 �s6 š �s8s9 š � A �s; šs<s= � š šs?sJs@ šsA šsB šsC šsD šsE šsF šsG šsH šsI š > šsK šsL šsM šsN šsO šsP šsQ šsR šsS šsT š A šsVsbsW šsX šsY šsZ šs[ šs\ šs] šs^ šs_ šs` šsa š D šsc šsd šse šsf šsg šsh šsi šsj šsk šsl šsm š > šsosspssqs|sr šss šst šsu šsv šsw šsx šsy šsz šs{ š D šs} šs~ šs šs šs šs šs šs šs šs š E šs šs šs šs šs šs šs šs šs šs šs š > šsss šs šs šs šs šs šs šs šs šs šs š > šsss šs šs šs šs šs šs šs šs šs š > šs šs šs šs šs šs šs šs šs šs š > šsssssss šs šs šs šs šs šs šs šs šs šs š > šsss šs šs šs šs šs šs šs šs šs š > šs šs šs šs šs šs šs šs šs šs š > šs šs šs šs šs šs šs šs šs šs šs šs š > šss šss šs šs šs šs šs šs šs šs šs šs š D šs šs šs šs šs šs šs št� št št št št š štut š štt tt tt tlt tAt t,t št št št št št štt!tttttt š š t š š ttt š š @'tt š št"t)t#t&t$t% + š š +t't( š št* š t+ š t-t7t. št/ št0 št1 št2 št3 št4 št5 št6 š št8 št9 št: št; št< št= št> št? št@ š štBtWtCtMtD štE štF štG štH štI štJ štK štL š štN štO štP štQ štR štS štT štU štV š štXtbtY štZ št[ št\ št] št^ št_ št` šta š štc štd šte štf štg šth šti štj štk š  štmty štn štotp štq štr šts štt štu štv štw štx š  štztt{ št| št} št~ št št št št št št š š štt št št št št št št št št š šttttttttt št št št št št št št št š št št št št št št št št št š @' š štt št št št št št št št št š šttt št št št št št št št št št š š štt št št št št št št št št š šttt št št št št št št št št št št š  št št št št št št št št št št št š štuatututtttt št št št št št št št št š št št št št št št št št št š + š štt št šu� šu šu šu šu šu šu š šuuu šu šu šu šu šu šu šu šu šu š  š šuu šu šu šu šu šu šu šu šu š  šuu@u u5u!u+u" šu# šu$ šu% šu& šu' šu( šu) šu* š šu, šu- šu. šu/ šu0 šu1 šu2 šu3 šu4 š  š šu6u7 šu8 šu9 šu: šu; šu< šu= šu> šu? š šuAuVuBuLuC šuD šuE šuF šuG šuH šuI šuJ šuK š šuM šuN šuO šuP šuQ šuR šuS šuT šuU š š šuWuX šuY šuZ šu[ šu\ šu] šu^ šu_ šu` š šubuucuzuduoue šuf šug šuh šui šuj šuk šul šum šun š š šupuq šur šus šut šuu šuv šuw šux šuy š šu{uu| šu} šu~ šu šu šu šu šu šu šu š šu šu šu šu šu šu šu šu šu šu š šuu šuu šu šu šu šu šu šu šu šu šu š šu šu šu šu šu šu šu šu šu šu šu š šu šuvKuv uuuuuuuuu šu šu šu šu šu šu šuu šuu > š >u šu š > šu šu šu šu šu šu šu šu šu šu š > šu šu šu šu šu šu šu šu šu šu šu š > šuuu šu šu šu šu šu šu šu šu šu šu š > šu šu šu šu šu šu šu šu šu šu šu š > šu šuuu šu šu šu šu šu šu šu šu šu šu š > šu šu šv� šv šv šv šv šv šv šv šv š > šv v šv šv v šv šv šv šv šv šv šv šv šv šv š > švv2vv&v šv šv šv šv šv šv! šv" šv# šv$ šv% š > šv' šv( šv) šv* šv+ šv, šv- šv. šv/ šv0 šv1 š > šv3v?v4 šv5 šv6 šv7 šv8 šv9 šv: šv; šv< šv= šv> š > šv@ švA švB švC švD švE švF švG švH švI švJ š > švLv[vM švN švO švP švQ švR švS švT švU švV švW švX švY švZ š F šv\ šv] šv^ šv_ šv` šva švb švc švd šve švf švg švh švi š F švk dvl dvm d š d vovp dvq dvr d š dvtvvuvvvvvw dvx dvy dvz dv{ š šv| šv}v~ šv šv šv šv šv šv šv šv šv šv švv švvvvv šv š  šv šv šv š : vvvvvvvv ( š š vv š > v šv š + v šv šv š � šv dv dv dv dv šv šv š švv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv šv š šv švv šv šv šv š švv šv š šv A š d Evv dvv dv dv d š dvvv dv dv d E dvwWvwBv švw3v šv šv švvvvv šv š švv šv šv š š šv švv šv šv šv š šv š švv šv š švv šv šv švwvwvwvvv šv š � v švw� c š šwww šw š ww šw šw šw šw šw šw šw š  šw šw š  šwww šw šw š šwww šw š , šw šw š šww'ww#w šw! šw" š : š šw$w% šw& š šw(w/w)w,w* šw+ š šw- šw. š H w0 šw1 šw2 š W :w4w;w5 šw6 š šw7w8 šw9 šw: š š šw< šw=w> šw? šw@ šwA š š šwC šwDwE šwF šwG šwH šwIwPwJ šwK š šwLwM šwN šwO š š šwQ šwRwS šwT šwU šwV š šwXwm šwYwZ šw[ šw\ šw] šw^ šw_wfw` šwa š šwbwc šwd šwe š š šwg šwhwi šwj šwk šwl š š šwn šwowpwwq šwr šws šwtw{wu šwv š šwwwx šwy šwz š š šw| šw}w~ šw šw šw š šwwwwwwwww šw š šww šw šw š š šw šww šw šw šw š šwww šw š šww šw šw š š šw šww šw šw šw š šw šwww šw š šww šw šw š š šw šww šw šw šw š šwxjwwwww šw š šww šw šw š š šw šww šw šw šw š š šww šw šw šw šwx=wxww šwww šww šw š šw šw š wwww šww šww  š š w šw šw š  šwww šw šw š š w šw šw š  šwxww šww š šw šw šw š :www šwww š šw š :w šw š š :w šww šww š š : šwx� š : šxxxxxx šxxxx š š šx š x xx šx š š šx šx š x šx š šx šx š x šx šx šx š šx šxx* šxx šx x%x! šx" š šx#x$ š š � šx& šx' šx( šx) � š šx+x,x7x-x2x. š šx/ šx0 šx1  šx3 š šx4 šx5x6 š š x8 š šx9x: šx; š šx< šx> šx?xWx@xGxA š šxBxC šxD šxE š šxF šxH šxIxN šxJxK šxL š šxM šxOxS šxP šxQ šxR š šxT šxUxV š š šxXxYx_ šxZ šx[x\ šx] š šx^ šx`xexa šxb šxc šxd š šxf š šxgxh šxi š šxkxzxlxsxm šxn š šxoxp šxq šxr š š šxt šxuxv šxw šxx šxy š šx{xx| šx} š šx~x šx šx š š šx šxx šx šx šx š šxxxxxxxxxxx dx dx d š dx dx dx d š dxxx dx dx d š dx dx dx d š dxxxxx dx dx dx d š dx dx dx d š dxxx dx dx d š dx dx dx d š dxxxxxxx dx dx dx dx d š dx dx dx d š dxxx dx dx d š dx dx dx d š dxxxxx dx dx dx dx d š dx dx dx d š d šxx dx dx d š dxxxxxxxxx dx dx dx d š dx dx dx d š dx šx dx dx d š dxxxxx dx dx d š dx dx dx d š d dxx dx dx d š dxyx dx dx dy� dy d š dy dy dy dy dy dy dy š šy y š šy yyyryybyy[y dy d šy šy šy šy šy šyy šy šy šy šy š šyy šy šy! šy" šy# šy$ šy% šy&yWy' šy( šy) š šy*y+ šy,yLy-yA šy.y/ šy0 šy1 šy2 šy3y<y4y8y5 šy6 š šy7 ( šy9 šy: šy; š k šy= šy> šy? šy@ š c šyB šyC šyD šyE šyF š šyGyH šyI šyJ šyK š A šyM šyN šyO šyP šyQ šyR šyS šyT šyU šyV š 4 šyX š šyYyZ š š (y\ dy] dy^ dy_ dy` dya d š dycyiyd dye dyf dyg dyh d š dyj dyk dyl dym dyn dyo dyp dyq d š dysyytyzyu dyv dyw dyx dyy d š dy{ dy| dy} dy~ d š dyyy dy dy dy dy dy dy dy d š dy dy dy dy dy dy dy dy d š dyyyyyyy dy dy dy dy dy dy dy d š dy dy dy dy dy d š dyyy d š dy dy dy š šyy šy šy š šy šyy šy š šy šyy š šyy š šy šyy šy šy šy šy šy šy šy šy šy š šyy šy šy š š Byzyzy dy d šy šy šy šy šy šy šy šy šyyy šy šyyyy šy šyyy šy š šy šyy š šy šy š ʗy šy šy š šy šyy š šy š 5py šy šy š šyy šy šy šy šy š šy šyz y šy šy šy šy šy šyz šz�z š šz šzz š š šz šz šz šz šz š A šz z šz šz š šzz š šzz š šzz š šzz š 5a šz dz dz dz dz d š dzz%z dz! dz" dz# dz$ d š dz&z+ dz'z( dz) dz* d š dz,z0z- dz. dz/ d E dz1 dz2 dz3 d š dz5zz6zz7zz8z;z9 dz: d š dz<zz= dz> dz? dz@ dzA dzB dzC šzD šzE š šzFzG šzH š šzI šzJzK š šzL šzMzN šzO šzP šzQ šzR šzS šzT šzU šzV šzW š šzXzY šzZ šz[ šz\ š šz] šz^ šz_z` šza šzb šzc šzd šze šzf šzg š šzh šzizj š šzk šzlzm šzn š šzo šzp šzqzr š šzs šzt šzuzv šzw šzx šzy š šzzz{ šz| š šz} šz~ šz šz šzz šz šz šz šz šz šz šz š šz šz šz šz šzz š šzz š šz šzz šz šz šz šz š šz šzz š šzz šz š šzz š šz šzz šz šz š š dz dz dz dz dz d š dzzzzz dz dz dz dz d š dz d š dzzz d š dz dz dz dz dz d š dzzzzzzz dz dz dz dz d š dz dz dz dz dz d š dzzz dz dz dz dz d š dz dz dz dz dz d dzzzzz dz dz dz dz d š dz dz dz dz dz d š dzzz dz dz dz dz d dz d š dz{z{ zzzzz d š dz dz dz dz dz d š dz{{� d{ d{ d{ d{ d š d{ d{ d{ d{ d{ d š d{ d{ d{ d{ d{ d{ d{ d š d{ d{{{ d{ d{ d{ d{ d{ d d d{ d{ d{{ d{! d{" d{# d{$ d{% d{& d{' d{( d{) d{* d{+ d{, d{- d{. d{/ d{0 d{1 d{2 d{3 d{4 d{5 d{6 d{7 d{8 d{9 d{: d{; d{< d{= d{> d{? d{@ d{A d{B d{C d{D d{E d{F d E d{H d{I d{J d{K d{L š š{M š{N{O š{P š š{Q{R š{S š{T š š{U š{V š{W š{X š{Y{Z š{[ š š{\{] š š{^{_ š{` š{a š{b š{c š{d š{e š š{f{g š š{h š{i{j š š{k{l š š{m š{n š{o š{p{q š š{r{s š{t š{u š{v š{w š{x š{y š{z š{{ š{| š{} š{~ š š{ š{{ š š{{ š š{ š{{ š š{{ š{ š š{ š{{ š š{{ š š{ š{ š{{ š š{ š{ š{{ š š{ š{{ š š{{ š š{ š{ š{{ š{ š{ š{ š š{{ š{ š{ š{ š{ š{ š{ š{ š š{ š{{ š š{ š{{ š{ š{ š š{ š{{ š š d{{,{ d{ d{ d{{{ d{{ š{{ d{ d{ d š d{ š{ d{{{{{{{ d{ d{ d d{ d{ d{ d d{{{ d{ d{ d d{ d{ d š{ d š š d{ d{ d{ d{ d{ d{ d{ d{N{}{|{|E{|{{{{{{{ d{ d{ d{ d{ d{ d{ d š d{ d{ d{ d{ d{ d{ d{ d š d{ d{ d{ d{ d š d|�| ||| d| d| d š d| d| d| d š d| || d| d| d| d| d| d| d š d| d| d| d š d||.||)||!| d| d| d| d| d| d| d š d|" d|# d|$ d|% d|& d|' d|( d š d|* š|+ d|, d|- d š d|/|8 š|0|1 d|2 d|3 d|4 d|5 d|6 d|7 d d|9|A|: d|; d|< d|= d|> d|? d|@ d š d|B d|C d|D d š d|F|}|G|^|H|Y|I|Q|J d|K d|L d|M d|N d|O d|P d š d|R d|S d|T d|U d|V d|W d|X d š d š|Z|[ d|\ d|] d š d|_|l|`|h|a d|b d|c d|d d|e d|f d|g d š d|i d|j d|k d š d|m|u|n d|o d|p d|q d|r d|s d|t d š d|v d|w d|x d|y d|z d|{ d|| d š d|~|||||| d| d| d| d| d| d| d š d| d| d| d| d| d| d| d š d d|| d| d| d š d||||| d| d| d| d| d| d| d š d| d| d| d| d| d| d| d š d||| d| d| d š d| d| d| d š d|} ||||||||| d| d| d š d| d| d| d š d||| d| d| E š E| d| d| d š d||||| d| d| d š d| d| d| d š d||| d| d| d š d| d| d| d d||||||| d| d| d š d| d| d| d| d| d| d| d š d||| d| d| d š d| d| d| d š d||||| d| d| d š d| d| d| d| d| d| d| d š d}�}} d} d} d š d} d} d} d} d} d} d} d š d} }H}}-}} }}} d} d} d} d} d} d} d d} d} d} d} d} d} d} d š d}!}%}" d}# d}$ d š d}& d}' d}( d}) d}* d}+ d}, d š d}.}7}/}3}0 d}1 d}2 d š d}4 d}5 d}6 d š d}8}@}9 d}: d}; d}< d}= d}> d}? d š d}A d}B d}C d}D d}E d}F d}G d d}I}h}J}[}K}S}L d}M d}N d}O d}P d}Q d}R d š d}T d}U d}V d}W d}X d}Y d}Z d š d}\}`}] d}^ d}_ d š d}a d}b d}c d}d d}e d}f d}g d d}i}v}j}r}k d}l d}m d}n d}o d}p d}q d š d}s d}t d}u d š d}w}{}x d}y d}z d š d}| d}} d}~ d} d} d} d} d š d}~c}}}}}}}}}}} d} d} d š d} d} d} d} d} d} d} d š d}}} d} d} d} d} d} d} d š d} d} d} d š d}}}}} d} d} d š d} d} d} d} d} d} d} d š d}}} d} d} d} d} d} d} d š d} d} d} d š d}}}}}}} d} d} d š d} d} d} d} d} d} d} d š d}}} d} d} d š d} d} d} d} d} d} d} d š d}}}}} d} d} d} d} d} d} d š d} d} d} d} d} d} d} d š d}}} d} d} d š d} d} d} d š d}~,}~ }~}~�} d} d} d} d} d} d} d š d~ d~ d~ d š d~ š~ d~ d~ d~ d~ d~ d~ d š d~~~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d š d~~$~ d~ d~ d~ d~! d~" d~# d š d~% d~& d~' d~( d~) d~* d~+ d š d~-~H~.~7~/~3~0 d~1 d~2 d š d~4 d~5 d~6 d š d~8~@~9 d~: d~; d~< d~= d~> d~? d š d~A d~B d~C d~D d~E d~F d~G d š d~I~Z~J~R~K d~L d~M d~N d~O d~P d~Q d š d~S d~T d~U d~V d~W d~X d~Y d š d~[~_~\ d~] d~^ d š d~` d~a d~b d š d~d~~e~~f~~g~t~h~l~i d~j d~k d š d~m d~n d~o d~p d~q d~r d~s d š d~u~y~v d~w d~x d š d~z d~{ d~| d~} d~~ d~ d~ d š d~~~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d š d~~~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d š d~~~~~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d š d~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d š d~~~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d š d~~~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d š d~~~~~~~~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d š d~ d~ d~ d~ d~ d~ d~ d~ d š d~~~ d~ d~ d~ d~ d� d d d d d d š d  d d d š d d d d š d3" d d d d d d d š d d d d d d d! d d#+$ d% d& d' d( d) d* d š d, d- d. d/ d0 d1 d2 d š d4E5=6 d7 d8 d9 d: d; d< d š d> d? d@ dA dB dC dD d š dFJG dH dI d š dK dL dM d š dO dP dQRSrTaU]V dW dX dY dZ d[ d\ d d^ d_ d` d dbjc dd de df dg dh di d š dk dl dm dn do dp dq d š dst|u dv dw dx dy dz d{ d š d} d~ d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d d d d d d d d d d d d d d d d d d d d d š d d d d š d d d d d d d d š d d d d d d d d š d d d d d d d d š d d d d š d d d d d d d d š d d d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d� d d d d d d d d š d d   d d d d d d d š d d d d d d d d š d$ d d d d! d" d# d š d% d& d' d( d) d* d+ d š d d- d. d/ d0 d123u d4 d567y8R9? d: d;< d= d> d š d@IAEB dC dD d dF dG dH d š dJNK dL dM d š dO dP dQ d dSfT]UYV dW dX d š dZ d[ d\ d š d^b_ d` da d dc dd de d dgphli dj dk d š dm dn do d š dqur ds dt d š dv dw dx d š dz{|}~ d d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d E] d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d E d d d d š d d d d d d d d š d d d d š d d d d š d d d� d š d d d d š d  d d d š d d d d š d d d d š d d d d š dN-$  d d d š d! d" d# d š d%)& d' d( d š d* d+ d, d š d.7/30 d1 d2 d š d4 d5 d6 d š d8J9 d: d; d< d= E]> E]? E]@ E]A E]B E]C E]D E] ߼EFH ߼G &\ ߼I ߼ E]K dL dM d š dObPYQUR dS dT d š dV dW dX d dZ^[ d\ d] d š d_ d` da d š dcldhe df dg d š di dj dk d š dmqn do dp d š dr ds dt d š dvwxyz{|}~ d d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d d d d d d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d� d d d š d d d d š d  d d d š d d d d š d d d d š d d d d š dc@-$  d d d š d! d" d# d d%)& d' d( d š d* d+ d, d d.7/30 d1 d2 d š d4 d5 d6 d d8<9 d: d; d š d= d> d? d š dATBKCGD dE dF d š dH dI dJ d š dLPM dN dO d š dQ dR dS d š dU^VZW dX dY d š d[ d\ d] d š d_ d` da db d š ddexfogkh di dj d š dl dm dn d dptq dr ds d š du dv dw d dyz~{ d| d} d E] d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d d š š š š š š š š š š š  šr d d d š d d d d š d d d d d d d d š d d d d E] d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d� d d d š d d d d š d  d d d d d d d š dK8/+    $      ! " # 8 % & '( ) * 8, d- d. d d041 d2 d3 d d5 d6 d7 d d9B:>; d< d= d š d? d@ dA d š dCGD dE dF d š dH dI dJ d š dL_MVNRO dP dQ d š dS dT dU d š dW[X dY dZ d d\ d] d^ d š d`iaeb dc dd d š df dg dh d š djnk dl dm d š do dp dq d š dstuvw{x dy dz d š d| d} d~ d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d š š š š š š š š š š š š : d d d š d d d d š d d d d d d d d d š d d d d š d d d d š d d d d E] d d d d d d d d š d d� d d š d d d d d  d d d š d d d d š d d d d d d d d d]kD1( $! d" d# d š d% d& d' d d)-* d+ d, d š d. d/ d0 d š d2;374 d5 d6 d š d8 d9 d: d š d<@= d> d? d dA dB dC d š dEXFOGKH dI dJ d dL dM dN d š dPTQ dR dS d š dU dV dW d š dYbZ^[ d\ d] d š d_ d` da d š dcgd de df d š dh di dj d š dlmnwosp dq dr d š dt du dv d š dx|y dz d{ d š d} d~ d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d š š š š ( d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d� d š d d d d š d  d d d š d d d d š d6# d d d d d d d š d d d d š d d! d" d š d$-%)& d' d( d š d* d+ d, d d.2/ d0 d1 d d3 d4 d5 d š d7J8A9=: d; d< d d> d? d@ d š dBFC dD dE d š dG dH dI d š dKTLPM dN dO d š dQ dR dS d š dUYV dW dX d š dZ d[ d\ d š d^_`atbkcgd de df d dh di dj d dlpm dn do d š dq dr ds d š du~vzw dx dy d š d{ d| d} d E] d d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d d d d d š d d d d š d d d d d d d d d d d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d E] d d d d š d d d d d š d= d d d š d d� d d š d d d d d d   d d d š d d d d d d d d š d d d d š d.%! d d d š d" d# d$ d š d&*' d( d) d š d+ d, d- d š d/8041 d2 d3 d š d5 d6 d7 d š d9 d: d; d< d d>e?R@IAEB dC dD d š dF dG dH d š dJNK dL dM d š dO dP dQ d š dS\TXU dV dW d š dY dZ d[ d E] d]a^ d_ d` d š db dc dd d E] dfygphli dj dk d dm dn do d dqur ds dt d š dv dw dx d E] dz{| d} d~ d š d d d d š d š d d d š d` d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d E] d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d� d d d š d d d d d š d d d š d d d d š d d d d š d d d d š d d d d š d  d š d d d d d d d š d  d d d d d d d š d d d d š d d d d š d o!H"5#,$(% d& d' d š d) d* d+ d š d-1. d/ d0 d š d2 d3 d4 d š d6?7;8 d9 d: d š d< d= d> d š d@DA dB dC d š dE dF dG d š dI\JSKOL dM dN d dP dQ dR d š dTXU dV dW d š dY dZ d[ d š d]f^b_ d` da d š dc dd de d š dgkh di dj d š dl dm dn d š dpqr{swt du dv d š dx dy dz d š d|} d~ d d š d d d d š d d d d š d d d d d d d d d d d d d d d d š d d d d š d d d d d d d d š d d d d d š d d d d š d d d d š dF d d d d š d d d d š d d d d š d d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d�#  d d d š d d d d š d  d d d š d d d d \ d š d d d š d d d d š d d! d" d d$7%.&*' d( d) d š d+ d, d- d š d/30 d1 d2 d š d4 d5 d6 d š d8=9 d: d; d< d š d>B? d@ dA d š dC dD dE d š dGHoI\JSKOL dM dN d š dP dQ dR d š dTXU dV dW d š dY dZ d[ d š d]f^b_ d` da d š dc dd de d š dgkh di dj d š dl dm dn d š dpqzrvs dt du d š dw dx dy d d{ š| d} d~ d d          7         8 d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d2> � d d d š d d d d d d d d d š d  d d d d š d d d d š d d d d š d/&" d d! d š d# d$ d% d š d'+( d) d* d š d, d- d. d d09152 d3 d4 d š d6 d7 d8 d š d d:; d< d= d š d?h@SAJBFC dD dE d š dG dH dI d š dKOL dM dN d š dP dQ dR d š dT]UYV dW dX d š dZ d[ d\ d š d^d_ d` da db dc š š Be df dg d š di|jskol dm dn d dp dq dr d š dtxu dv dw d š dy dz d{ d d}~ d d d š d d d d š d d d d š d d d d d š š š š š š š š š š š š d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d  d d d d d d d š d d d d š d d d d š d d d� d d š d d d d š d d d d š d   d d d š d d d d š d d d d š d d d d d )!%" d# d$ d š d& d' d( d š d*.+ d, d- d š d/ d0 d1 d š d34s5P6A7<8 d9 d: d; d š d š=> d? d@ d dBKCGD dE dF d š dH dI dJ d š dL dM dN dO d š dQdR[SWT dU dV d š dX dY dZ d š d\`] d^ d_ d š da db dc d š dej dfg dh di d dkol dm dn d š dp dq dr d š dtuvw{x dy dz d š d| d} d~ d š d           8 8      7 8 8                                F  d d d š d d d d š d d d d š d d d d š d d d d š d  d d d d d d d š d  d d d d š š š š š š š š š š > :     �   > : š š š š š š A d d d š d d d d š d d d d d d d d d š d dA. )!%" d# d$ d š d& d' d( d š d* d+ d, d- d d/8041 d2 d3 d š d5 d6 d7 d š d9=: d; d< d š d> d? d@ d š dBQCLDHE dF dG d š dI dJ dK d š d šMN dO dP d š dRWS dT dU dV d dX\Y dZ d[ d š d] d^ d_ d š dab|cdefqgl dhi dj dk d š dm dn do dp d š dr{swt du dv d š dx dy dz d š d|} d~ d d š d d d d d d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d1 d d d d d� d d d d d d d š d  d d d š d d d d š d d d d š d d d d š d'" d d d š d d d! d š d š#$ d% d& d š d d()-* d+ d, d š d. d/ d0 d š d2Y3F4=596 d7 d8 d E d: d; d< d š d>B? d@ dA d š dC dD dE d š dGPHLI dJ dK d š dM dN dO d š dQUR dS dT d š dV dW dX d š dZm[d\`] d^ d_ d š da db dc d deif dg dh d š dj dk dl d š dnwosp dq dr d š dt du dv d d dxy dz d{ d š d}~ d d d š d d d d š d d d d d š d d d d š d d d d d d d d š d d d d š d d d d w d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d E] d d d d š d d d d š d d d d š d d d� d š d  d d d š d d d d š d  d d d š d d d d š ddE2 d d d d š d. d d! d" d# š$ š% š& š' š( š) š* š+ š, š- š š ʗ/ d0 d1 d š d3<485 d6 d7 d š d9 d: d; d š d=A> d? d@ d dB dC dD d š dFUGPHLI dJ dK d š dM dN dO d š d dQR dS dT d š dV[ dWX dY dZ d d\`] d^ d_ d da db dc d š defqglh ši dj dk d dm dn do dp d š drws št du dv d dx|y dz d{ d d} d~ d d š d d š š d d d š d d d d š d d d d š d d š$ d d d š d d d d š d d d d š d d d d š d d d d d š š š š š š š š š š š š  d d d š d d d d d š d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d  d d d š d� d d d š d d d d š d š d  d d d d d d d š d d d d d š d d d d d d d d d d ! d" d# d d%c&@'1 d()-* d+ d, d š d. d/ d0 d š d2;374 d5 d6 d š d8 d9 d: d š d š<= d> d? d š dATBKCGD dE dF d š dH dI dJ d š dLPM dN dO d š dQ dR dS d š dU^VZW dX dY d š d[ d\ d] d E d_ d` da db d š ddetfk šgh di dj d dlpm dn do d š dq dr ds d E du~vzw dx dy d š d{ d| d} d š d d d d d d d d d š š š š š š š ʗ š š š  d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d d d d d š d9  d d d š d d d d š d d d d š d š d d d š d d d d d š d š d d d š d d d d š d d d d š d d d d š d d d d d d d d d d d d š d  d� d d š d d d d š d d d d d š d  d  d d d d d d d š d d d d š d*%! d d d š d" d# d$ d š d d&' d( d) d š d+0, d- d. d/ d š d152 d3 d4 d š d6 d7 d8 d š d:;u<O=F>B? d@ dA d š dC dD dE d š dGKH dI dJ d š dL dM dN d š dPpQ dR dS dT dU d šV šWX šY šZ š[ š\d š] š^_a š` , šbc D š D šelf šgih š @ E jk A , � šm šn šo š š Ry dqr ds dt d E] dvwx dy dz d{ d| d} d d~ d iB d š d d d š d d d d d š d d d d š d d d d d š d d d d š d d d d š d š d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d š d d d d d d d d š d0 š d d d d šrf š š š š š š š š š š šL š š5 š š š š š š š š š š  š š š š š š š� š š š š  š š š š š š š š š š š š š š  š š š š š  š š š š š š š! š" š# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š š6 š7 š8 š9 š: š; š< š= š> š? š@ šA šB šC šD šE šF šG šH šI šJ šK š šM šN šO šP šQ šR š ST šU šV šW šX šY šZ š[ š\ š] š^ š_ š` ša šb šc šd še š šghri šj šk šl šm šn šo š pq š š šstu šv šwxy šz{| š} š~ š š š  š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š  š š š š š š š š šp/ š š š š š!+"(#&$%  A ( ' 5)* c A  5, š- š H. k š091 š2 š3 š4 š5 š6 š7 š8 š  š: ; š< š=>?]@[AZB cC šD šEOF šGLHJ I  5 K  5M šN š  šP šQURT S  5  šVX W  5 Y š 5 ( A \ c^`_ š ša šb šc šd še šfghij Ak|l šm šn šo šp šq šr šs št šu šv{wyx A ( Az  š  5 š}~ š š š š š š š š š  A ( (  A A š  5  ( 5  c c A A   5 š š 5 H H š  c c ( 5 A A  5 š š š š š š c H   ( H 5  A A 5 5  š š A  k š š š š š š š š š š š š š š š š š š š H A 5  c A ( 5 c š  š š š š š š š š š š š š š š š š š š H A 5   � c A ( 5 5 c A š š š  š š š š š š š š š š š š š š šW š š š š š š š! š"9#0$ š% š&+'( š ()*  š ( ,.- (  (/ š  š1 š2 š3 š46 5 š (78  š ( :N; š<H=B>? š (@A  š ( CED (  (FG  š ( šI šJMKL š  š ( ( šO šP šQ šRT S š (UV  š ( X šY šZ š[ š\ š] š^l_e`b Ha Acd 5   figh c A ( 5jk 5 c Am šn šo š q šr š šst šu šv šw šxy{ šz š A|}  š~ š š š š š š ( ( H š š š š š š š š  š š  š š[ š š š š š š š š š š š š š š š š š  š š š š š) š š š š š š š š š š š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š š š š  š š š š � š š  š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š! š" š# š$ š%' š& š( š š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š5 š6 š7 š8 š9N: š; š< š= š> š? š@ šA šBHC šD šE š šF šG š I šJ šK š šL šM š O šP šQ šR šS šT šU šV šWY šX šZ š š\ š] š š^_ š` ša šbf šc šd še šg šh ši š jk šl šm šn šo šp šq š B šstuvw šx šy šz š{ š|}~ @ > š : š : š � � � , š š š š � šE š š% , > , : � : � š � š š š š @ , š , š @ , š š š @ , š @ , š , š š š š š š  š š š š š š š š š  > :   : š š š : � š š š š š š š š š š š š @ , >  � : , š > @ � � , : š š š , š :  � � š š š š š š š š� : � > , � š � @ š š š š š š š š š š š š š š š š š š � � : : , #!" , > $ š š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š5 š6 š7 š8 š9 š:@;><= @ � > �? , � :AC B : ,D š šF šG šH šI šJKLM N šO šP šQ šR šS šT šUV šW šX šY šZ š[ š\ š] š^|_p` šalbhced , >fg š > ,ij : �k > m šn šo š , šq šr šsztwuv : : >xy � š �{ š , š}~ š , > š > , : � >  š š š >  š š : : > � š � š , š š š š š š š š @ � > � , � :  : , š š > : � : , @ , � � š š š š š š š š š š š š š š š š š š š š > > š š š š š š š š , š : š : š š � š � š š š š � š š š š š š š š   š š š š  š š še š šM+� š š š  š š š š š š š š š )  š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š' š( š š* š  š, š š-. š/70 š1 š2 š3 š4 š5 š6 8 š9 š: š; š< š= š> š? š@ šA šB šC šD šE šF šG šH šI šJ šK š L šN šO šP šQ šR šS šT šU šV šW šX šY šZ š[ š\ š] š^ š_ š` ša šb šc šd  f šg šh ši šj šk šlm n šo šp šq šr šs štu š Bv šw šx šy šz š{ š| š} š~ š š    š š š š š š š š š š š š  š š š š š š š š š š š  š š š  š š š  š š š š š š š š š š š š š š š š š š š š š š � A š š š š š š š š š š š š š š š š š š š š š š š š š š š �  � � š š  ( š    š �  š š š š ( š š A š š š � š c H H 5� 5 š � š c 5 5 , š � š š š š  , š š š , ,  š ( > > š š d d d š d'# d! d" d š d$ d% d& d š d(,) d* d+ d š d- d. d/ d š d1D2;374 d5 d6 d š d8 d9 d: d š d<@= d> d? d š dA dB dC d š dE šFG dH dI dJ dK šL šMyNmO šP šQ šR šS šT šU šV šWbX š šY šZ š[\ š] š^ š_ š` ša š š c š šd še šfg šh ši šj šk šl š š (n šo šp šqu šr šs št šv šw š šx šz š{ š| š} š~ š š š š š š A š d d d š d$P}/2k d d d d š d d d d š d d d d d d š d d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d0 d d d� d d š d d d d d d š d  d d d d d š d d d d d d š d# d d d d d š d d d d! d" d š d$*% d& d' d( d) d š d+ d, d- d. d/ d š d1L2?394 d5 d6 d7 d8 d š d: d; d< d= d> d š d@FA dB dC dD dE d š dG dH dI dJ dK d š dMZNTO dP dQ dR dS d š dU dV dW dX dY d š d[a\ d] d^ d_ d` d db dc dd de df dg dh di dj d š dlmno|pvq dr ds dt du d š dw dx dy dz d{ d d}~ d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š š š š š š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d� d d  d d d d d š d d d d d d š d d d d d d d d d d d d š d% d d! d" d# d$ d š d&,' d( d) d* d+ d š d- d. d/ d0 d1 d d3X45`6E7> d89 d: d; d< d= d š d? d@ dA dB dC dD d š dFSGMH dI dJ dK dL d š dN dO dP dQ dR d š dTZU dV dW dX dY d š d[ d\ d] d^ d_ d š da|bocid de df dg dh d š dj dk dl dm dn d š dpvq dr ds dt du d š dw dx dy dz d{ d š d}~ d d d d d š d d d d d d d d d d d d d š š š š š š š š š š , ( : : : : : : : š : š š š š š   >  > c c c c               c š š š š š š š š š š š š š š š  š š š š ( š d d d d d d d d d d d E] d d d d d d š d d d d d d š d d d d� d d š d  d d d d d d d d d d d š d d d d d d š d d d d d d š d9, &! d" d# d$ d% d š d' d( d) d* d+ d d-3. d/ d0 d1 d2 d d4 d5 d6 d7 d8 d š d:G;A< d= d> d? d@ d dB dC dD dE dF d d dHI dJ dK dL dM dN dO P Q R S T U V W 8 YZ[p\c d]^ d_ d` da db d š ddje df dg dh di d š dk dl dm dn do d š dq~rxs dt du dv dw d š dy dz d{ d| d} d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d E] d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d� d d d š d  d d d d d d d d d d d d d d d d" d d d d d š d d d d d! d š d#)$ d% d& d' d( d d* d+ d, d- d. d š d0123j4O5B6<7 d8 d9 d: d; d š d= d> d? d@ dA d š dCID dE dF dG dH d š dJ dK dL dM dN d š dP]QWR dS dT dU dV d š dX dY dZ d[ d\ d š d^d_ d` da db dc d š de df dg dh di d š dkls dmn do dp dq dr d š dtzu dv dw dx dy d š d{ d| d} d~ d d š d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š df�1  d d d d d š d d d d d d d d d d d d š d d d d d d š d*$ d d! d" d# d š d% d& d' d( d) d š d+ d, d- d. d/ d0 d š d2G3@4:5 d6 d7 d8 d9 d š d; d< d= d> d? d š dA dB dC dD dE dF d š dHUIOJ dK dL dM dN d š dP dQ dR dS dT d š dV`W dX dY dZ d[ d\ d] d^ d_ d da db dc dd de d š dghivjpk dl dm dn do d š dq dr ds dt du d š dw}x dy dz d{ d| d š d~ d d d d d š d d d d d d d d d d š d d d d d d E] d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d< d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d� d d š d  d d d d d š d d d d d d š d% d d d d d š d d d d d d š d d d! d" d# d$ d š d&3'-( d) d* d+ d, d š d. d/ d0 d1 d2 d š d465 d š d7 d8 d9 d: d; d š d=>Y?L@FA dB dC dD dE d š dG dH dI dJ dK d š dMSN dO dP dQ dR d š dT dU dV dW dX d š dZ[a\ d] d^ d_ d` d š db dc dd še šf šg šh ši šj šk šl šm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š} š~ š š š š š š š  š š  š d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d+ d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d š d d d d d d š d d d� d d d š d  d d d d d d d d d d d š d d d d d d d d d d d d d% d! d" d# d$ d š d& d' d( d) d* d š d,_-H.;/50 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d š d<B= d> d? d@ dA d š dC dD dE dF dG d š dIRJLK d dM dN dO dP dQ d š dSYT dU dV dW dX d š dZ d[ d\ d] d^ d š d`uanbhc dd de df dg d š di dj dk dl dm d do dp dq dr ds dt d š dvw}x dy dz d{ d| d š d~ d d d d d d d d d d d d d d d š d d d d d d š dEh d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d� d d d š d;   d d d d d š d d d d d d š d d d d d d š d d d d d d š d!."(# d$ d% d& d' d š d) d* d+ d, d- d š d/50 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d d<M=F>@? d š dA dB dC dD dE d š dG dH dI dJ dK dL d dN[OUP dQ dR dS dT d š dV dW dX dY dZ d š d\b] d^ d_ d` da d š dc dd de df dg d š dijklymsn do dp dq dr d š dt du dv dw dx d š dz{ d| d} d~ d d d d d d d d d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d  d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d� d d d d d d d d d d š d &   d d d d d š d d d d d d š d  d d d d d d! d" d# d$ d% d š d'4(.) d* d+ d, d- d š d/ d0 d1 d2 d3 d d5?6 d7 d8 d9 d: d; d< d= d> d š d@ dA dB dC dD d š dFGHyIdJWKQL dM dN dO dP d š dR dS dT dU dV d š dX^Y dZ d[ d\ d] d š d_ d` da db dc d š derflg dh di dj dk d š dm dn do dp dq d d dst du dv dw dx d š dz{|} d~ d d d d š d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d� d d d d š d  d d d d d š d d d d d d š d d d d d d d š dwF7*$ d d! d" d# d š d% d& d' d( d) d š d+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d š d8? d9: d; d< d= d> d š d d@A dB dC dD dE d š dG\HO dIJ dK dL dM dN d dPVQ dR dS dT dU d š dW dX dY dZ d[ d š d]j^d_ d` da db dc d š de df dg dh di d š dkql dm dn do dp d š dr ds dt du dv d š dxyz d{| d} d~ d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š dP d d d d d š d d d d d d d d d d š d d d d d d š d d d d d d š d � d d d d d š d d d d d d š d  d d d d d š d d d d d d š d5(" d d d d! d š d# d$ d% d& d' d š d)/* d+ d, d- d. d š d0 d1 d2 d3 d4 d š d6C7=8 d9 d: d; d< d š d> d? d@ dA dB d š dDJE dF dG dH dI d š dK dL dM dN dO d dQRgS`TZU dV dW dX dY d d[ d\ d] d^ d_ d da db dc dd de df d š dhuioj dk dl dm dn d dp dq dr ds dt d š dv|w dx dy dz d{ d d} d~ d d d d š d d d d d d d š š š š š š š š š š š , š š š š š A š š š š š ʗ š š š š š š š : š š š š š š š š š š š š š š š š š š ( ( š š  š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š d d d d d š d d d d d d š d d d d d d š d  d� d d d d š d d d d d d š d d d d d d d š dJ/" d d d d d š d d d d d! d š d#)$ d% d& d' d( d d* d+ d, d- d. d š d0=172 d3 d4 d5 d6 d š d8 d9 d: d; d< d š d>D? d@ dA dB dC d š dE dF dG dH dI d š dKfLYMSN dO dP dQ dR d š dT dU dV dW dX d š dZ`[ d\ d] d^ d_ d š da db dc dd de d š dgthni dj dk dl dm d š do dp dq dr ds d du{v dw dx dy dz d š d| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š dG d d d d d d š d d d d d d š d d d d d d š d d� d d d d d š d d d d d d d d d d š d d d d d d š d2% d d d d d š d d! d" d# d$ d š d&,' d( d) d* d+ d š d- d. d/ d0 d1 d š d3@4:5 d6 d7 d8 d9 d š d; d< d= d> d? d š d dAB dC dD dE dF d dHyI^JQ dKL dM dN dO dP d š dRXS dT dU dV dW d dY dZ d[ d\ d] d š d_l`fa db dc dd de d š dg dh di dj dk d š dmsn do dp dq dr d š dt du dv dw dx d dz{|~} d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d� d š d  d d d d d d š d  d d d d d š d d d d d d š dF7*  d d d d d š d! d" d# d$ d% d& d' d( d) d š d+1, d- d. d/ d0 d š d2 d3 d4 d5 d6 d š d8? d9: d; d< d= d> d d@ dA dB dC dD dE d š dGbHUIOJ dK dL dM dN d š dP dQ dR dS dT d š dV\W dX dY dZ d[ d š d] d^ d_ d` da d š dcpdje df dg dh di d dk dl dm dn do d dqwr ds dt du dv d š dx dy dz d{ d| d š d~W d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d š d" d d d d d d d d d d d š d d d d d� d š d d d d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d! d š d#8$1%+& d' d( d) d* d d, d- d. d/ d0 d š d d23 d4 d5 d6 d7 d š d9J:D; d< d= d> d? d@ dA dB dC d š dE dF dG dH dI d š dKQL dM dN dO dP d š dR dS dT dU dV d š dXYZu[h\b] d^ d_ d` da d š dc dd de df dg d š dioj dk dl dm dn d dp dq dr ds dt d š dvw}x dy dz d{ d| d š d~ d d d d d š d d d d d d d d d d d d E] d d d d d d š d d d d d d š d d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d� d d d d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d !R"=#0$*% d& d' d( d) d š d+ d, d- d. d/ d š d172 d3 d4 d5 d6 d š d8 d9 d: d; d< d š d>K?E@ dA dB dC dD d š dF dG dH dI dJ d š d dLM dN dO dP dQ d š dSnTaU[V dW dX dY dZ d š d\ d] d^ d_ d` d š dbhc dd de df dg d š di dj dk dl dm d š do|pvq dr ds dt du d š dw dx dy dz d{ d š d}~ d d d d d d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d`) d d d d d š d d d d d d š d d� d d d d d d d d d d d d d d E] d d d d d d š d d d d d d š d# d d d! d" d š d$ d% d& d' d( d š d*E+8,2- d. d/ d0 d1 d š d3 d4 d5 d6 d7 d š d9?: d; d< d= d> d š d@ dA dB dC dD d š dFSGMH dI dJ dK dL d š dN dO dP dQ dR d š dTZU dV dW dX dY d š d[ d\ d] d^ d_ d š dab}cpdje df dg dh di d š dk dl dm dn do d š dqwr ds dt du dv d š dx dy dz d{ d| d š d~ d d d d d š d d d d d d š d d d d d d š d d d d d d š d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d1� d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d  d d d d d š d d d d d d š d d d d d d d d d d d d š d*$ d d! d" d# d š d% d& d' d( d) d š d d+, d- d. d/ d0 d d2c3N4A5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBHC dD dE dF dG d š dI dJ dK dL dM d š dOV dPQ dR dS dT dU d š dW]X dY dZ d[ d\ d š d^ d_ d` da db d ddyel dfg dh di dj dk d dmsn do dp dq dr d š dt du dv dw dx d š dz{| d} d~ d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d� d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š dV ;!."(# d$ d% d& d' d š d) d* d+ d, d- d š d/50 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d š d<I=C> d? d@ dA dB d š dD dE dF dG dH d š dJPK dL dM dN dO d š dQ dR dS dT dU d š dWrXeY_Z d[ d\ d] d^ d š d` da db dc dd d š dflg dh di dj dk d š dm dn do dp dq d š dsz dtu dv dw dx dy d d{| d} d~ d d d š d d d d d d š dL d d d d d E] d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d d� d d š d  d d d d d š d d d d d d š d d d d d d d š d d d d d d d š d- d !'" d# d$ d% d& d š d( d) d* d+ d, d š d.;/50 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d š d<F= d> d? d@ dA dB dC dD dE d š dG dH dI dJ dK d š dMNOjP]QWR dS dT dU dV d š dX dY dZ d[ d\ d š d^d_ d` da db dc d š de df dg dh di d š dkxlrm dn do dp dq d š ds dt du dv dw d š dyz d{ d| d} d~ d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d� d d d d š d  d d d d d š d d d d d d d d d d d d š d d d d d d š d !p"#$[%@&3'-( d) d* d+ d, d š d. d/ d0 d1 d2 d š d4:5 d6 d7 d8 d9 d š d; d< d= d> d? d š dANBHC dD dE dF dG d š dI dJ dK dL dM d š dOUP dQ dR dS dT d š dV dW dX dY dZ d š d\q]j^d_ d` da db dc d š de df dg dh di d š d dkl dm dn do dp d drsyt du dv dw dx d š dz d{ d| d} d~ d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d.� d d d d d š d d d d d d d  d d d d d š d d d d d d d! d d d d d š d d d d d d š d"(# d$ d% d& d' d š d) d* d+ d, d- d E d/012 d3 d4 d5 d6 d7 d8 š9 š: š; š< š= š> š š?@A`BQCJD šEHFG š > BI š > @7K šLOMN š > BP š > @7RYS šTWUV š > BX š > @7Z š[^\] š > B_ š > @7apbic šdgef š > Bh š > @7j šknlm š > Bo š > @7qxr šsvtu š > Bw š > @7y šz}{| š > B~ š > @7 š  c k < ( ? > 5a H A A 5p 5 5  š š š A g  c k < ( ? > 5a H A A 5p 5 5  š š š A g A ? A  5p < 5 g c >  A k ( 5 š š š 5a H A ? A  5p < 5 g c >  A k ( 5 š š š 5a H d d d d d k d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d� d š d9  d d d d d š d d d d d d š d d d d d d š d d d d d d š d, &! d" d# d$ d% d š d' d( d) d* d+ d š d-3. d/ d0 d1 d2 d š d4 d5 d6 d7 d8 d š d:U;H<B= d> d? d@ dA d š dC dD dE dF dG d š dIOJ dK dL dM dN d š dP dQ dR dS dT d dVcW]X dY dZ d[ d\ d š d^ d_ d` da db d š ddje df dg dh di d š dk dl dm dn do d dqHrstuv|w dx dy dz d{ d š d} d~ d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d E] d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d� d d d d š d  d d d d d š d d d d d d š d-  d d d d d š d d d d d d š d!'" d# d$ d% d& d š d( d) d* d+ d, d š d.;/50 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d š d<B= d> d? d@ dA d dC dD dE dF dG d š dIJtKYLRM dN dO dP dQ d š d dST dU dV dW dX d dZg[a\ d] d^ d_ d` d š db dc dd de df d š dhni dj dk dl dm d do dp dq dr ds d š duvwx dy dz d{ d| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d� d š d d d d d d d š d d  d d d d d š dK0# d d d d d š d d d d! d" d š d$*% d& d' d( d) d š d+ d, d- d. d/ d š d1>283 d4 d5 d6 d7 d d9 d: d; d< d= d š d?E@ dA dB dC dD d š dF dG dH dI dJ d š dLgMZNTO dP dQ dR dS d š dU dV dW dX dY d š d[a\ d] d^ d_ d` d š db dc dd de df d š dhuioj dk dl dm dn d š dp dq dr ds dt d š dv|w dx dy dz d{ d š d} d~ d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š dO d d d d d š d d d d d d š d d d d d d š d d d� d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d4 ' d!" d# d$ d% d& d  d(.) d* d+ d, d- d š d/ d0 d1 d2 d3 d d5B6<7 d8 d9 d: d; d š d= d> d? d@ dA d š dCID dE dF dG dH d š dJ dK dL dM dN d š dPtQ_ dRSYT dU dV dW dX d š dZ d[ d\ d] d^ d š d`g dab dc dd de df d š dhni dj dk dl dm d š do dp dq dr ds d š duvwx dy dz d{ d| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d d š ds d d d d d d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d E] d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d� d š d d d d d d š d d d d d d d š dB+ d d d d d š d d d d d d š d% d! d" d# d$ d š d& d' d( d) d* d š d,9-3. d/ d0 d1 d2 d š d4 d5 d6 d7 d8 d E] d:<; d š d= d> d? d@ dA d š dC^DQEKF dG dH dI dJ d š dL dM dN dO dP d š dRXS dT dU dV dW d dY dZ d[ d\ d] d š d_l`fa db dc dd de d š dg dh di dj dk d š d dmn do dp dq dr d š dtuvwx~y dz d{ d| d} d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d E E E š E d d d d d d š d d d d d d š d d d d d d E] d � d d d d d š d d d d d d š d  d d d d d š d d d d d d š d5(" d d d d! d š d# d$ d% d& d' d š d)/* d+ d, d- d. d š d0 d1 d2 d3 d4 d š d6C7=8 d9 d: d; d< d š d> d? d@ dA dB d š dDJE dF dG dH dI d dK dL dM dN dO d š dQRRSTU7VWXsYfZ`[ d\ d] d^ d_ d š da db dc dd de d š dgmh di dj dk dl d dn do dp dq dr d š dtu{v dw dx dy dz d š d| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š š š š š š š š š š š š š š š  š š š š š d d d d d š d� d d d d d š d d d d d d š d d d d d d d š d d d d d d d d d d d d š d d d d d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d*$ d d! d" d# d š d% d& d' d( d) d š d+1, d- d. d/ d0 d š d2 d3 d4 d5 d6 d d89p:U;H<B= d> d? d@ dA d š dC dD dE dF dG d š dIOJ dK dL dM dN d š dP dQ dR dS dT d š dVcW]X dY dZ d[ d\ d š d^ d_ d` da db d š ddje df dg dh di d š dk dl dm dn do d š dqrsyt du dv dw dx d š dz d{ d| d} d~ d š d d d d d d d š d d d d d d d š d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š dh�7  d d d d d d d d d d d š d d d d d d š d d d d d d š d*$ d d! d" d# d d% d& d' d( d) d š d+1, d- d. d/ d0 d š d2 d3 d4 d5 d6 d d8M9@ d:; d< d= d> d? d dAGB dC dD dE dF d š dH dI dJ dK dL d E] dN[OUP dQ dR dS dT d dV dW dX dY dZ d š d\b] d^ d_ d` da d dc dd de df dg d š dijkxlrm dn do dp dq d š ds dt du dv dw d š dyz d{ d| d} d~ d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d d d d d d d d d d d d š d d d d d d š dA  d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d� d d d d š d d d d d d š d &   d d d d d š d d d d d d š d  d d d d d š d! d" d# d$ d% d š d'4(.) d* d+ d, d- d d/ d0 d1 d2 d3 d š d5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBmCXDKE dF dG dH dI dJ d š dLRM dN dO dP dQ d dS dT dU dV dW d š dYfZ`[ d\ d] d^ d_ d š da db dc dd de d š d dgh di dj dk dl d š dno|pvq dr ds dt du d š dw dx dy dz d{ d š d}~ d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š dH} d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d�  d d d d d š d d d d d d š d d d d d d š d d d d d d š dR7*$ d d! d" d# d š d% d& d' d( d) d š d+1, d- d. d/ d0 d š d2 d3 d4 d5 d6 d š d8E9?: d; d< d= d> d š d@ dA dB dC dD d š dFLG dH dI dJ dK d š dM dN dO dP dQ d š dShT[U dV dW dX dY dZ d d\b] d^ d_ d` da d š dc dd de df dg d š divjpk dl dm dn do d š dq dr ds dt du d š d dwx dy dz d{ d| d š d~ d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d  d d d d d š d d d d d d š d d� d d d d š d d d d d d š d  d  d d d d d š d d d d d d d d3,& d d d d! d" d# d$ d% d s d' d( d) d* d+ d d d-. d/ d0 d1 d2 d š d4A5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š d dBC dD dE dF dG d š dI0JKLgMZNTO dP dQ dR dS d š dU dV dW dX dY d š d[a\ d] d^ d_ d` d š db dc dd de df d š dhuioj dk dl dm dn d š dp dq dr ds dt d š dv|w dx dy dz d{ d š d} d~ d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d š d d d d d d š d d� d d d d š d  d d d d d š d d d d d d š d# d d d d d š d d d d d d d d! d" d d$*% d& d' d( d) d š d+ d, d- d. d/ d š d12c3N4A5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBHC dD dE dF dG d š dI dJ dK dL dM d š dO\PVQ dR dS dT dU d š dW dX dY dZ d[ d E] d d]^ d_ d` da db d š ddeflg dh di dj dk d š dm dn do dp dq dr ds št šu šv šw šx šy šz š{ š| š} š~ š š š š š d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š š š š š š š š š š š š š š š š  d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d E d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d� d d d d d d š š  x u š   š c                 ! "  #$ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Yg Z [\  ] ^ _ `a  b cd  ef   ch i  jk  l m n op q r  s t  šv šw š ( y| šz š{ >}~ :  š š š š  š ʗ  š š c š š  d d d d d š d d d d d d d d d d d d š d d d d d d d š dN d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d � d d d d d š d d d d d d š d  d d d d d š d d d d d d š dP5(" d d d d! d š d# d$ d% d& d' d š d)/* d+ d, d- d. d š d0 d1 d2 d3 d4 d š d6C7=8 d9 d: d; d< d š d> d? d@ dA dB d š dDJE dF dG dH dI d š dK dL dM dN dO d š dQlR_SYT dU dV dW dX d š dZ d[ d\ d] d^ d š d`fa db dc dd de d š dg dh di dj dk d š dmznto dp dq dr ds d š du dv dw dx dy d š d{| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d š d d d d d d š d d d d� d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d3, &! d" d# d$ d% d š d' d( d) d* d+ d š d d-. d/ d0 d1 d2 d š d4A5;6 d7 d8 d9 d: d d< d= d> d? d@ d š dBHC dD dE dF dG d š dI dJ dK dL dM d dOPQRmS`TZU dV dW dX dY d š d[ d\ d] d^ d_ d š dagb dc dd de df d dh di dj dk dl d š dn{oup dq dr ds dt d š dv dw dx dy dz d š d|} d~ d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d� d š d  d d d d d š d d d d d d d d d d š d d d d d d d š dzI2+% d! d" d# d$ d š d& d' d( d) d* d š d, d- d. d/ d0 d1 d š d3@4:5 d6 d7 d8 d9 d E d; d< d= d> d? d š dAGB dC dD dE dF d š dH d š dJeKXLRM dN dO dP dQ d š dS dT dU dV dW d š dY_Z d[ d\ d] d^ d š d` da db dc dd d dfsgmh di dj dk dl d š dn do dp dq dr d š d dtu dv dw dx dy d š d{|}~ d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d E] d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d š dA d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d� d d d š d  d d d d d š d d d d d d š d& d d d d d d š d  d d d d d E d! d" d# d$ d% d š d'4(.) d* d+ d, d- d š d/ d0 d1 d2 d3 d š d5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBCDEkF dG dH dI dJ dK dL šM šN šO šP šQ šR šS šT šU š šV šWX šY šZ š[ š š\ š] š^ š_ š`a šb š šcd š šef šg šh š šij š B šl dm dn do dp dq dr š šs štu šv šw šx šy šz š{ š| š} š~ š š š  d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š dI d d d d d š d d d d d d d d d d d d d d d d d d š d � d d d d d š d d d d d d š d d  d d d d d š d.! d d d d d d d d d d d š d"(# d$ d% d& d' d š d) d* d+ d, d- d š d/<061 d2 d3 d4 d5 d d7 d8 d9 d: d; d d=C> d? d@ dA dB d š dD dE dF dG dH d š dJKfLYMSN dO dP dQ dR d š dT dU dV dW dX d š dZ`[ d\ d] d^ d_ d š da db dc dd de d š dgthni dj dk dl dm d š do dp dq dr ds d š du{v dw dx dy dz d š d| d} d~ d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d� d d š d d d d d d š d  d  d d d d d E] d d d d d d š d d d d d d š dU: -!'" d# d$ d% d& d d( d) d* d+ d, d š d.4/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d d;H<B= d> d? d@ dA d š dC dD dE dF dG d š dIOJ dK dL dM dN d š dP dQ dR dS dT d š dVqWdX^Y dZ d[ d\ d] d š d_ d` da db dc d dekf dg dh di dj d š dl dm dn do dp d š drsyt du dv dw dx d š dz d{ d| d} d~ d d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d( � d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d" d d d d! d š d# d$ d% d& d' d š d)D*7+1, d- d. d/ d0 d š d2 d3 d4 d5 d6 d d8>9 d: d; d< d= d d? d@ dA dB dC d š d dEFLG dH dI dJ dK d š dM dN dO dP dQ d š dSaTUV%WXYxZg[a\ d] d^ d_ d` d š db dc dd de df d dhri dj dk dl dm dn do dp dq d š ds dt du dv dw d š dyz{ d| d} d~ d d d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d� d d d d d d d š d d d d d d š d d d d d d š d d š d d d d d d d d! d" d# d$ d š d&'^(C)6*0+ d, d- d. d/ d š d1 d2 d3 d4 d5 d d7=8 d9 d: d; d< d š d> d? d@ dA dB d š dDQEKF dG dH dI dJ d š dL dM dN dO dP d š dRXS dT dU dV dW d š dY dZ d[ d\ d] d š d_z`magb dc dd de df d š dh di dj dk dl d š dnto dp dq dr ds d š du dv dw dx dy d š d{|} d~ d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d d d d d d d d š d d d d d d š d82  d� d d d d d d d d d d š d  d d d d d š d d d d d d š d% d d d d d š d d! d" d# d$ d š d&,' d( d) d* d+ d š d- d. d/ d0 d1 d š d3N4A5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBHC dD dE dF dG d š dI dJ dK dL dM d š dO¼P¶Q dR dS dT dU dV dW X Y Z [ \ ] ^ _ ` a b c d ef g h i j k l m n o p q rs t uv w x y z { | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³´ µ 8 · d¸ d¹ dº d» d d½¾ d¿ d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d� d š d  d d d d d š d d d d d d š d d d d d d d d d d d d š d+% d! d" d# d$ d š d& d' d( d) d* d š d,2- d. d/ d0 d1 d š d3 d4 d5 d6 d7 d š d9è:q;V<I=C> d? d@ dA dB d š dD dE dF dG dH d š dJPK dL dM dN dO d š dQ dR dS dT dU d dWdX^Y dZ d[ d\ d] d š d_ d` da db dc d š dekf dg dh di dj d š dl dm dn do dp d š drÍsÀtzu dv dw dx dy d š d{ d| d} d~ d d š dÁÇ dà dÄ dÅ dÆ d š dÈ dÉ dÊ dË dÌ d š dÎÛÏÕÐ dÑ dÒ dÓ dÔ d š dÖ d× dØ dÙ dÚ d š dÜâÝ dÞ dß dà dá d š dã dä då dæ dç d š déêëøìòí dî dï dð dñ d š dó dô dõ dö d÷ d š dùÿú dû dü dý dþ d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d� d d d d š d  d d d d d š d d d d d d š dź}F1$ d d d d d š d d d! d" d# d š d%+& d' d( d) d* d š d, d- d. d/ d0 d š d29 d34 d5 d6 d7 d8 d š d:@; d< d= d> d? d š dA dB dC dD dE d š dGbHUIOJ dK dL dM dN d E dP dQ dR dS dT d š dV\W dX dY dZ d[ d š d] d^ d_ d` da d š dcpdje df dg dh di d š dk dl dm dn do d š dqwr ds dt du dv d š dx dy dz d{ d| d š d~ıĖĀĉāăĂ d š dĄ dą dĆ dć dĈ d š dĊĐċ dČ dč dĎ dď d š dđ dĒ dē dĔ dĕ d dėĤĘĞę dĚ dě dĜ dĝ d š dğ dĠ dġ dĢ dģ d š dĥīĦ dħ dĨ dĩ dĪ d š dĬ dĭ dĮ dį dİ d š dIJijĿĴĹĵ dĶ dķ dĸ d š dĺ dĻ dļ dĽ dľ d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š dW  d d d d d d d d d d d š d d d d d d š d� d d d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d!<"/#)$ d% d& d' d( d š d* d+ d, d- d. d š d061 d2 d3 d4 d5 d š d7 d8 d9 d: d; d š d=J>D? d@ dA dB dC d dE dF dG dH dI d š dKQL dM dN dO dP d š dR dS dT dU dV d š dXŃYnZa d[\ d] d^ d_ d` d dbhc dd de df dg d š di dj dk dl dm d š do|pvq dr ds dt du d š dw dx dy dz d{ d š d} d~ d dŀ dŁ dł d š dńşŅŒņŌŇ dň dʼn dŊ dŋ d š dō dŎ dŏ dŐ dő d š dœřŔ dŕ dŖ dŗ dŘ d š dŚ dś dŜ dŝ dŞ d š dŠŭšŧŢ dţ dŤ dť dŦ d š dŨ dũ dŪ dū dŬ d š dŮŴů dŰ dű dŲ dų d š dŵ dŶ dŷ dŸ dŹ d š dŻƎż%Žžſ d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d� d d d š d  d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d! d" d# d$ d š d&]'B(5)/* d+ d, d- d. d š d0 d1 d2 d3 d4 d š d6<7 d8 d9 d: d; d d= d> d? d@ dA d š dCPDJE dF dG dH dI d š dK dL dM dN dO d š dQWR dS dT dU dV d š dX dY dZ d[ d\ d š d^y_l`fa db dc dd de d dg dh di dj dk d š dmsn do dp dq dr d š dt du dv dw dx d š dzƁ d{| d} d~ d dƀ d š dƂƈƃ dƄ dƅ dƆ dƇ d š dƉ dƊ dƋ dƌ dƍ d š dƏƐƑƬƒƟƓƙƔ dƕ dƖ dƗ dƘ d š dƚ dƛ dƜ dƝ dƞ d š dƠƦơ dƢ dƣ dƤ dƥ d dƧ dƨ dƩ dƪ dƫ d š dƭƺƮƴƯ dư dƱ dƲ dƳ d dƵ dƶ dƷ dƸ dƹ d š dƻƼ dƽ dƾ dƿ d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d0� d d d d d š d d d d d d d d d d d d š d d d d d d š d# d d d d! d" d š d$*% d& d' d( d) d š d+ d, d- d. d/ d š d1L2?394 d5 d6 d7 d8 d š d: d; d< d= d> d š d@FA dB dC dD dE d š dG dH dI dJ dK d š dMT dNO dP dQ dR dS d š dU[V dW dX dY dZ d š d\ d] d^ d_ d` d š dbcdAefǛg|huioj dk dl dm dn d š dp dq dr ds dt d š d dvw dx dy dz d{ d š d}NJ~DŽ dǀ dǁ dǂ dǃ d š dDž ddž dLJ dLj dlj d š dNjǕnj dǍ dǎ dǏ dǐ dǑ dǒ dǓ dǔ d š dǖ dǗ dǘ dǙ dǚ d š dǜǷǝǪǞǤǟ dǠ dǡ dǢ dǣ d š dǥ dǦ dǧ dǨ dǩ d š dǫDZǬ dǭ dǮ dǯ dǰ d š dDz ddz dǴ dǵ dǶ d š dǸǹǿǺ dǻ dǼ dǽ dǾ d š d d d d d d š d d d d d d š d d d d d d š d  d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d� d d d d d d d d d d š d &   d d d d d š d d d d d d š d  d d d d d š d! d" d# d$ d% d d'4(.) d* d+ d, d- d d/ d0 d1 d2 d3 d š d5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBȫCtD_ERFLG dH dI dJ dK d š dM dN dO dP dQ d š dSYT dU dV dW dX d š dZ d[ d\ d] d^ d š d`magb dc dd de df d š dh di dj dk dl d š d dno dp dq dr ds d š duȐvȃw}x dy dz d{ d| d š d~ d dȀ dȁ dȂ d š dȄȊȅ dȆ dȇ dȈ dȉ d š dȋ dȌ dȍ dȎ dȏ d dȑȞȒȘȓ dȔ dȕ dȖ dȗ d š dș dȚ dț dȜ dȝ d dȟȥȠ dȡ dȢ dȣ dȤ d š dȦ dȧ dȨ dȩ dȪ d š dȬȭȮȻȯȵȰ dȱ dȲ dȳ dȴ d š dȶ dȷ dȸ dȹ dȺ d š dȼȽ dȾ dȿ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d�  d d d d d d d d d d d š d d d d d d d d d d d d š dɉT9, &! d" d# d$ d% d š d' d( d) d* d+ d d-3. d/ d0 d1 d2 d š d4 d5 d6 d7 d8 d š d:G;A< d= d> d? d@ d š dB dC dD dE dF d š dHNI dJ dK dL dM d š dO dP dQ dR dS d š dUjV] dWX dY dZ d[ d\ d d^d_ d` da db dc d š de df dg dh di d š dkxlrm dn do dp dq d š ds dt du dv dw d š dyɃz d{ d| d} d~ d dɀ dɁ dɂ d š dɄ dɅ dɆ dɇ dɈ d š dɊɻɋɠɌɓ dɍɎ dɏ dɐ dɑ dɒ d š dɔɚɕ dɖ dɗ dɘ də d š dɛ dɜ dɝ dɞ dɟ d š dɡɮɢɨɣ dɤ dɥ dɦ dɧ d dɩ dɪ dɫ dɬ dɭ d š dɯɵɰ dɱ dɲ dɳ dɴ d š dɶ dɷ dɸ dɹ dɺ d š dɼɽɾɿ d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d\%  d d d d d š d d d� d d d d d d d d d d d   d d d d d š d d d d d d š d d d d d d š d d! d" d# d$ d š d&A'4(.) d* d+ d, d- d š d/ d0 d1 d2 d3 d š d5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBOCID dE dF dG dH d š dJ dK dL dM dN d E] dPVQ dR dS dT dU d š dW dX dY dZ d[ d š d]ʔ^y_l`fa db dc dd de d š dg dh di dj dk d š dmsn do dp dq dr d š dt du dv dw dx d š dzʇ{ʁ| d} d~ d dʀ d š dʂ dʃ dʄ dʅ dʆ d š dʈʎʉ dʊ dʋ dʌ dʍ d š dʏ dʐ dʑ dʒ dʓ d š dʕʰʖʣʗʝʘ dʙ dʚ dʛ dʜ d š dʞ dʟ dʠ dʡ dʢ d dʤʪʥ dʦ dʧ dʨ dʩ d  dʫ dʬ dʭ dʮ dʯ d š dʱʾʲʸʳ dʴ dʵ dʶ dʷ d š dʹ dʺ dʻ dʼ dʽ d š d dʿ d d d d d š dl̓$ d d d d d d š š š šp š š š š š š š š š š š š š š š š š š š š š š š š š š š š2 š š š š š š š š š š š š� š š š š š š š š š  š š  š š š š š š š š š š š š š š š š š š š š š! š š"# š$ š š% š&' š š() š š*+ š š, š-. š/ š š0 š1 š d3 š4 š5 š š67 š8 š9 š š:; š š<= š> š? š š@ šA šB šC šDE š šFG šH š šI šJ šK šL šMN šO š šPQ š šR šST šU šV š šWX š šYZ š š[\ š š] š^ š_` š ša šbc š šd šef šg š šh ši šj škl š šmn š šo š dq šr š šst šu šv šw šx š šy šz š{ š| š}~ š šˀ š šˁ˂ š˃ š š˄˅ š šˆˇ š šˈˉ š šˊˋ š šˌˍ šˎ šˏ š šːˑ š˒ š˓ š š˔˕ š˖ š š˗˘ š˙ š š˚ š˛ š˜ š˝˞ š š˟ šˠ šˡ šˢ šˣˤ š˥ š š˦ š˧ š˨ š˩ š˪ š˫ šˬ š˭ˮ š š˯˰ š˱ š˲ š˳ š˴ š˵ š˶ š˷ š˸ š š˹˺ š˻ š š˼ š˽ š˾ š˿ š š š š š š š š š š š d š d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d  d d d d d d d d d� d d š d d d d d d d d   d d d d d š d d d d d d š d d d d d d š d d d! d" d# d š d%\&A'4(.) d* d+ d, d- d š d/ d0 d1 d2 d3 d š d5;6 d7 d8 d9 d: d š d< d= d> d? d@ d š dBOCID dE dF dG dH d š dJ dK dL dM dN d š dPVQ dR dS dT dU d š dW dX dY dZ d[ d š d]x^k_e` da db dc dd d š df dg dh di dj d š dlrm dn do dp dq d ds dt du dv dw d š dy̆z̀{ d| d} d~ d d š d́ d̂ d̃ d̄ d̅ d š ḋ̍̈ d̉ d̊ d̋ ď d š d̎ d̏ d̐ d̑ d̒ d š d̺̖̥̗̞̔̕ d̘̙ d̚ d̛ d̜ d̝ d d d̟̠ d̡ d̢ ḍ d̤ d š ḑ̨̦̳̭ d̩ d̪ d̫ d̬ d š d̮ d̯ d̰ ḏ d̲ d š d d̴̵ d̶ d̷ d̸ d̹ d š d̻̼̽̾ d̿ d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d š d# d d d d d š d d d d d d š d d d d� d d š d d d d d d d   d d d d d š d d d d d d š d d d d d d š d d d d! d" d š d$C%2&,' d( d) d* d+ d š d- d. d/ d0 d1 d š d3=4 d5 d6 d7 d8 d9 d: d; d< d š d> d? d@ dA dB d š dDQEKF dG dH dI dJ d š dL dM dN dO dP d š dRfS dT dU dV dW dX dY šZ š[ š\ š] š^ š š_ š`adbc > B >e š @7 šg dh di dj dk d š dmCnoͦp͋q~rxs dt du dv dw d š dy dz d{ d| d} d š d̀ͅ d́ d͂ d̓ d̈́ d š d͆ d͇ d͈ d͉ d͊ d š d͙͍͓͎͌ d͏ d͐ d͑ d͒ d š d͔ d͕ d͖ d͗ d͘ d d͚͛͠ d͜ d͝ d͞ d͟ d š d͡ d͢ dͣ dͤ dͥ d š dͧͨ͵ͩͯͪ dͫ dͬ dͭ dͮ d š dͰ dͱ dͲ dͳ dʹ d š dͶͼͷ d͸ d͹ dͺ dͻ d š dͽ d; dͿ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d� d š d d d d d d š d d d d d d š d d d d d d š d$ d d d d d d š d d d d! d" d# d d%2&,' d( d) d* d+ d š d- d. d/ d0 d1 d š d3=4 d5 d6 d7 d8 d9 d: d; d< d š d> d? d@ dA dB d š dDηE|FaGTHNI dJ dK dL dM d š dO dP dQ dR dS d š dU[V dW dX dY dZ d š d\ d] d^ d_ d` d š dbocid de df dg dh d š dj dk dl dm dn d š dpvq dr ds dt du d š dw dx dy dz d{ d š d}Μ~΋΅΀ d΁ d΂ d΃ d΄ d dΆ d· dΈ dΉ dΊ d š dΌΖ΍ dΎ dΏ dΐ dΑ dΒ dΓ dΔ dΕ d š dΗ dΘ dΙ dΚ dΛ d š dΝΪΞΤΟ dΠ dΡ d΢ dΣ d š dΥ dΦ dΧ dΨ dΩ d š dΫαά dέ dή dί dΰ d š dβ dγ dδ dε dζ d š dθικ dλμ dν dξ dο d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d  d d d d d d d d d š d d d d d d š d d d� d d d š d d d d d d š d   d d d d d š d d d d d d š d d d d d d š d d d! d" d# d d%&2'(b)*+Ϟ,]-B.5 d/0 d1 d2 d3 d4 d š d6<7 d8 d9 d: d; d š d= d> d? d@ dA d š dCPDJE dF dG dH dI d š dK dL dM dN dO d š dQWR dS dT dU dV d š dX dY dZ d[ d\ d š d^s_l`fa db dc dd de d š dg dh di dj dk d d dmn do dp dq dr d š dtϑuϋv dw dx dy dz d{ d| š} š~ š šπ šρ šς š šστ šυ šφ šχ š šψω š Bϊ B šό dύ dώ dϏ dϐ d š dϒϘϓ dϔ dϕ dϖ dϗ d š dϙ dϚ dϛ dϜ dϝ d dϟϠϵϡϮϢϨϣ dϤ dϥ dϦ dϧ d š dϩ dϪ dϫ dϬ dϭ d š d dϯϰ dϱ dϲ dϳ dϴ d š d϶ϷϽϸ dϹ dϺ dϻ dϼ d š dϾ dϿ d d d d š d d d d d d š d d d d d d š d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d� d š de4  d d d d d š d d d d d d š d d d d d d d d d d d d š d -!'" d# d$ d% d& d š d( d) d* d+ d, d š d d./ d0 d1 d2 d3 d š d5P6C7=8 d9 d: d; d< d š d> d? d@ dA dB d š dDJE dF dG dH dI d dK dL dM dN dO d š dQ^RXS dT dU dV dW d š dY dZ d[ d\ d] d d d_` da db dc dd d š dfЗg|huioj dk dl dm dn d š dp dq dr ds dt d š d dvw dx dy dz d{ d š d}Њ~Є dЀ dЁ dЂ dЃ d š dЅ dІ dЇ dЈ dЉ d š dЋБЌ dЍ dЎ dЏ dА d š dВ dГ dД dЕ dЖ d š dИЭЙР dКЛ dМ dН dО dП d š dСЧТ dУ dФ dХ dЦ d š dШ dЩ dЪ dЫ dЬ d š dЮлЯеа dб dв dг dд d š dж dз dи dй dк d š dмн dо dп d d d š d d d d d d š dі3 d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d d d š d d d d� d d š d d d d d d d š d  d d d d d š d d d d d d d&  d d d d d š d! d" d# d$ d% d š d'-( d) d* d+ d, d š d. d/ d0 d1 d2 d š d4_5J6C7=8 d9 d: d; d< d š d> d? d@ dA dB d š d dDE dF dG dH dI d š dKR dLM dN dO dP dQ d š dSYT dU dV dW dX d š dZ d[ d\ d] d^ d š d`{anbhc dd de df dg d š di dj dk dl dm d š doup dq dr ds dt d š dv dw dx dy dz d d|щ}у~ d dр dс dт d š dф dх dц dч dш d š dъѐы dь dэ dю dя d š dё dђ dѓ dє dѕ d š dїјљѴњѧћѡќ dѝ dў dџ dѠ d š dѢ dѣ dѤ dѥ dѦ d š dѨѮѩ dѪ dѫ dѬ dѭ d š dѯ dѰ dѱ dѲ dѳ d š dѵѶѼѷ dѸ dѹ dѺ dѻ d š dѽ dѾ dѿ d d d š d d d d d d š d d d d d d š d d d d d d š d d d d d d d d d d d d š d d d d d d š d d d d d d š d d d d d d š d� d d d d d d d d d d d š d8#   d d d d d š d d d d d d š d d d d d d š d d d d! d" d š d$1%+& d' d( d) d* d š d, d- d. d/ d0 d š d d23 d4 d5 d6 d7 d š d9G: d;A< d= d> d? d@ d š dB dC dD dE dF d š dHUIOJ dK dL dM dN d š dP dQ dR dS dT d š dV\W dX dY dZ d[ d š d] d^ d_ d` da d š dc*defҝg҂huioj dk dl dm dn d š dp dq dr ds dt d š dv|w dx dy dz d{ d š d} d~ d dҀ dҁ d š d҃Ґ҄Ҋ҅ d҆ d҇ d҈ d҉ d š dҋ dҌ dҍ dҎ dҏ d š dґҗҒ dғ dҔ dҕ dҖ d š dҘ dҙ dҚ dқ dҜ d dҞҹҟҬҠҦҡ dҢ dң dҤ dҥ d š dҧ dҨ dҩ dҪ dҫ d š dҭҳҮ dү dҰ dұ dҲ d š dҴ dҵ dҶ dҷ dҸ d š dҺ dһ dҼ dҽ dҾ dҿ d d š d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d7  d d� d d d d d š šӬ. š š  š  š š š š š š š > š š š š > š š š$ š š š " š! š # š š B š%& š'* š( š) A š+, š >- š š >/ š0 š1 š2ӊ3s4S5H6?7:8 š9 š š <;= š< š <> š < š@CA š B šDF šE š šG š ILJ šK š  šMPN šO c š cQ š šR š cTeU^VYW š (X ( šZ\ š[ ( š] š ( š_b A`a š A šc š šd š Afmgj Hhi š H šk š šl š Hnpo š  šq š šr  št šuv|wyx š k šz š{ š š} š~ š 5 šӀӅӁӂ  (Ӄ cӄ ( cӆ šӇ šӈӉ ( A Ӌ šӌӢӍәӎӒӏ šӐ šӑ 4 E/ ӓӖӔ šӕ š šӗ š šӘ HӚӞӛ šӜ šӝ š c šӟ šӠ šӡ š 5a šӣ šӤӨӥ šӦ šӧ š  šө šӪ šӫ š  šӭӮ šӯ šӰ šӱӲӳӴӵӻӶӸ ӷ šӹ š šӺ š ӼӾӽ š > šӿ š > > š : : š : š  š š š š š > š š š š A š š š š D š š : š š š š š š , š � š � š � š � � š š š š š š š š D š š š š š š š� š + š + š   š š š š š š š @' š š d d d d d d š d d d d d d d š d d d d d d d š d (! d" d# d$ d% d& d' d š d)0* d+ d, d- d. d/ d š d1 d2 d3 d4 d5 d6 d d8T9H:A; d< d= d> d? d@ d š dB dC dD dE dF dG d š dI dJ dK dL dM dN dO dP dQ dR dS d š dUVW dX dY dZ d[ d\ d] d š^_ š` ša šb šc šd še šf šg šhi šjk š šlm šn šo šp šq šr šs št šu šv šw šx šy šz š{} š| š >~ š šԀ šԁ šԂ šԃ šԄ šԅ šԆ šԇ šԈ šԉ šԊ šԋ šԌ šԍ šԎ šԏ šԐ šԑ šԒ šԓ šԔ šԕ šԖ šԗ šԘ šԙ šԚ šԛ šԜ šԝ šԞ šԟ šԠ šԡ šԢ šԣ šԤ šԥ šԦ šԧ šԨ šԩ šԪ šԫ šԬ šԭ šԮ šԯ š԰ šԱ šԲ šԳ šԴ š šԵԶ šԷ šԸԹ šԺ š šԻ šԼ šԽԾԿ š > > š š š š š š š š > š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š : š š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š š š š š  š š š š � š d d d d d d š d# d d d d! d" d š d$ d% d& d' d( d) d d+Օ,d-E.=/60 d1 d2 d3 d4 d5 d d7 d8 d9 d: d; d< d š d> d? d@ dA dB dC dD d dFUGNH dI dJ dK dL dM d š dO dP dQ dR dS dT d š dV]W dX dY dZ d[ d\ d š d^ d_ d` da db dc d š de}fn dgh di dj dk dl dm d š dovp dq dr ds dt du d š dw dx dy dz d{ d| d š d~ՍՆՀ dՁ dՂ dՃ dՄ dՅ d š dՇ dՈ dՉ dՊ dՋ dՌ d š dՎ dՏ dՐ dՑ dՒ dՓ dՔ d š dՖ՗պ՘էՙՠ՚ d՛ d՜ d՝ d՞ d՟ d š dա dբ dգ dդ dե dզ d š dըկթ dժ dի dլ dխ dծ d š dհ dձ dղ dճ dմ dյ dն dշ dո dչ d š dջ dռս dվ dտ d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d d d d d d d &k d d d d d d d š d d d d d d d E] d d d d d d� d š d d d d d d d š d  d d d d d d š d d d d d d d š d֒Z;,% d d! d" d# d$ d š d& d' d( d) d* d+ d š d-4. d/ d0 d1 d2 d3 d š d5 d6 d7 d8 d9 d: d š d<K=D> d? d@ dA dB dC d š dE dF dG dH dI dJ d dLSM dN dO dP dQ dR d š dT dU dV dW dX dY d d[s\d] d^ d_ d` da db dc d š delf dg dh di dj dk d š dm dn do dp dq dr d dtփu|v dw dx dy dz d{ d š d} d~ d dր dց dւ d š dք֋օ dֆ dև dֈ d։ d֊ d š d֌ d֍ d֎ d֏ d֐ d֑ d š dֳ֤֖֓֔֕֝֗ d֘ d֙ d֚ d֛ d֜ d š d֞ d֟ d֠ d֡ d֢ d֣ d š d֥֦֬ d֧ d֨ d֩ d֪ d֫ d š d֭ d֮ d֯ dְ dֱ dֲ d š dִֵֶּ dַ dָ dֹ dֺ dֻ d š dֽ d־ dֿ d d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d� d d d š d׃D% d d d d d d š d d d d d d d š d d d d d d d š d d d! d" d# d$ d d&5'.( d) d* d+ d, d- d š d/ d0 d1 d2 d3 d4 d š d6=7 d8 d9 d: d; d< d d> d? d@ dA dB dC d š dEdFUGNH dI dJ dK dL dM d š dO dP dQ dR dS dT d dV]W dX dY dZ d[ d\ d š d^ d_ d` da db dc d š detfmg dh di dj dk dl d š dn do dp dq dr ds d š du|v dw dx dy dz d{ d š d} d~ d d׀ dׁ dׂ d š dׄ׵ׅז׆׎ׇ d׈ d׉ d׊ d׋ d׌ d׍ d š d d׏א dב dג dד dה dו d š dחצטןי dך dכ dל dם dמ d  dנ dס dע dף dפ dץ d š dק׮ר dש dת d׫ d׬ d׭ d š dׯ dװ dױ dײ d׳ d״ d š d׶׷׸׿׹ d׺ d׻ d׼ d׽ d׾ d š d d d d d d d d d d š d d d d d d d d d d d d d d š d d d š d d d d d d d E] d d d d d d d š d:؇h`Y d d d d d d d š š š š š š� š š š š š š š š š š š š  š š  š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š š' š( š)* š š+ š,- š. š š/0 š1 š2 š3 š4 š5 š š67 š š89 š: š š;< š š= š> š? š@A š šBC š šD šE šF šG šH šIJ šK šL šM š šNO šP š šQ šR šST š šUV š šWX š š dZ d[ d\ d] d^ d_ d da db dc dd de df dg d š dixjqk dl dm dn do dp d dr ds dt du dv dw d dy؀z d{ d| d} d~ d d d؁ d؂ d؃ d؄ d؅ d؆ d š d؈أ؉ؘ؊ؑ؋ d، d؍ d؎ d؏ dؐ d š dؒ dؓ dؔ dؕ dؖ dؗ d dؙ؜ؚ d؛ d š d؝ d؞ d؟ dؠ dء dآ d š dؤسإجئ dا dب dة dت dث d š dح dخ dد dذ dر dز d š dشػص dض dط dظ dع dغ d š dؼ dؽ dؾ dؿ d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d� d d š d  d d d d d d d š d  d d d d d d d d d d d d d š d+$ d d d! d" d# d š d% d& d' d( d) d* d š d,3- d. d/ d0 d1 d2 d š d4 d5 d6 d7 d8 d9 d š d;ٺ<{=\>M?F@ dA dB dC dD dE d š dG dH dI dJ dK dL d dNUO dP dQ dR dS dT d š dV dW dX dY dZ d[ d š d]l^e_ d` da db dc dd d š df dg dh di dj dk d š dmtn do dp dq dr ds d š du dv dw dx dy dz d š d|ٛ}ٌ~م dـ dف dق dك dل d š dن dه dو dى dي dً d dٍَٔ dُ dِ dّ dْ dٓ d š dٕ dٖ dٗ d٘ dٙ dٚ d š dٜ٫ٝ٤ٞ dٟ d٠ d١ d٢ d٣ d š d٥ d٦ d٧ d٨ d٩ d٪ d d٬ٳ٭ dٮ dٯ dٰ dٱ dٲ d š dٴ dٵ dٶ dٷ dٸ dٹ d š dٻټٽپٿ d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d� d d d d š d  d d d d d d š d d d d d d d š d# d d d d d d š d d d d d! d" d š d$+% d& d' d( d) d* d š d, d- d. d/ d0 d1 d š d3!45*6ڵ7v8W9H:A; d< d= d> d? d@ d š dB dC dD dE dF dG d š dIPJ dK dL dM dN dO d š dQ dR dS dT dU dV d š dXkY`Z d[ d\ d] d^ d_ d š da db dc dd de df dg dh di dj d š dlom dn d dp dq dr ds dt du d š dwږxڇyڀz d{ d| d} d~ d d š dځ dڂ dڃ dڄ dڅ dچ d š dڈڏډ dڊ dڋ dڌ dڍ dڎ d š dڐ dڑ dڒ dړ dڔ dڕ d š dڗڦژڟڙ dښ dڛ dڜ dڝ dڞ d š dڠ dڡ dڢ dڣ dڤ dڥ d š dڧڮڨ dک dڪ dګ dڬ dڭ d š dگ dڰ dڱ dڲ dڳ dڴ d š dڶڷڸڹں dڻ dڼ dڽ dھ dڿ d š d d d d d d d š d d d d d d d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d� d d d d d d š d d d d d d d d š d d d d d d d d š d d d d d d d š d d! d" d# d$ d% d& d' d( d) d d+۪,k-L.=/60 d1 d2 d3 d4 d5 d š d7 d8 d9 d: d; d< d š d>E? d@ dA dB dC dD d š dF dG dH dI dJ dK d š dM\NUO dP dQ dR dS dT d š dV dW dX dY dZ d[ d š d]d^ d_ d` da db dc d š de df dg dh di dj d š dlۋm|nuo dp dq dr ds dt d š dv dw dx dy dz d{ d š d}ۄ~ d dۀ dہ dۂ dۃ d š dۅ dۆ dۇ dۈ dۉ dۊ d dیۛۍ۔ێ dۏ dې dۑ dے dۓ d š dە dۖ dۗ dۘ dۙ dۚ d š dۣۜ۝ d۞ d۟ d۠ dۡ dۢ d š dۤ dۥ dۦ dۧ dۨ d۩ d š dۭ۫۬ۼۮ۵ۯ d۰ d۱ d۲ d۳ d۴ d š d۶ d۷ d۸ d۹ dۺ dۻ d š d۽ d۾ dۿ d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d� d d d š d d d d d d d d š d  d d d d d d š d d d d d d d š dܕV> /!(" d# d$ d% d& d' d š d) d* d+ d, d- d. d š d071 d2 d3 d4 d5 d6 d š d8 d9 d: d; d< d= d š d?G@ dA dB dC dD dE dF d š dHOI dJ dK dL dM dN d š dP dQ dR dS dT dU d š dWvXgY`Z d[ d\ d] d^ d_ d š da db dc dd de df d š dhoi dj dk dl dm dn d š dp dq dr ds dt du d š dw܆xy dz d{ d| d} d~ d š d܀ d܁ d܂ d܃ d܄ d܅ d š d܇܎܈ d܉ d܊ d܋ d܌ d܍ d š d܏ dܐ dܑ dܒ dܓ dܔ d š dܖܗܶܘܧܙܠܚ dܛ dܜ dܝ dܞ dܟ d š dܡ dܢ dܣ dܤ dܥ dܦ d š dܨܯܩ dܪ dܫ dܬ dܭ dܮ d š dܰ dܱ dܲ dܳ dܴ dܵ d š dܷܸܹܿ dܺ dܻ dܼ dܽ dܾ d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d� d d d d d š d  d d d d d d d d d d d d d š dݢN6'  d d d d d d š d! d" d# d$ d% d& d š d(/) d* d+ d, d- d. d š d0 d1 d2 d3 d4 d5 d š d7? d89 d: d; d< d= d> d š d@GA dB dC dD dE dF d š dH dI dJ dK dL dM d š dOPpQ dR dS dT dU dV dW dX d šYZ š[ š\ š š]^ š_ š` ša šb šckd šeh šfg š ši šj š š šlm šn šo š š :qxr ds dt du dv dw d š dy dz d{ d| d} d~ d š d݀ݓ݁݌݂ d݃ d݄ d݅ d݆ d݇ d݈ d݉ d݊ d݋ d š dݍ dݎ dݏ dݐ dݑ dݒ d š dݔݛݕ dݖ dݗ dݘ dݙ dݚ d š dݜ dݝ dݞ dݟ dݠ dݡ d š dݣݤݥݴݦݭݧ dݨ dݩ dݪ dݫ dݬ d dݮ dݯ dݰ dݱ dݲ dݳ d š dݵݼݶ dݷ dݸ dݹ dݺ dݻ d š dݽ dݾ dݿ d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d� d d d  d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d"# $ގ%]&E'6(/) d* d+ d, d- d. d š d0 d1 d2 d3 d4 d5 d š d7>8 d9 d: d; d< d= d š d? d@ dA dB dC dD d š dFN dGH dI dJ dK dL dM d š dOVP dQ dR dS dT dU d š dW dX dY dZ d[ d\ d š d^v_g d`a db dc dd de df d š dhoi dj dk dl dm dn d E dp dq dr ds dt du d š dw dxy dz d{ d| d} d~ d š dހއށ dނ dރ dބ dޅ dކ d š dވ dމ dފ dދ dތ dލ d š dޏސޯޑޠޒޙޓ dޔ dޕ dޖ dޗ dޘ d š dޚ dޛ dޜ dޝ dޞ dޟ d dޡިޢ dޣ dޤ dޥ dަ dާ d š dީ dު dޫ dެ dޭ dޮ d š dް޿ޱ޸޲ d޳ d޴ d޵ d޶ d޷ d d޹ d޺ d޻ d޼ d޽ d޾ d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d� d d d d d d š d d d d d d d š dߐQ.  d d d d d d š d d d d d d d š d!'" d# d$ d% d& d š d( d) d* d+ d, d- d d/>071 d2 d3 d4 d5 d6 d š d8 d9 d: d; d< d= d š d?J@ dA dB dC dD dE dF dG dH dI d š dK dL dM dN dO dP d š dRqSbT[U dV dW dX dY dZ d š d\ d] d^ d_ d` da d š dcjd de df dg dh di d š dk dl dm dn do dp d š dr߁szt du dv dw dx dy d š d{ d| d} d~ d d߀ d d߂߉߃ d߄ d߅ d߆ d߇ d߈ d š dߊ dߋ dߌ dߍ dߎ dߏ d š dߑߒߪߓߛߔ dߕ dߖ dߗ dߘ dߙ dߚ d š dߜߣߝ dߞ dߟ dߠ dߡ dߢ d š dߤ dߥ dߦ dߧ dߨ dߩ d š d߫߾߬߳߭ d߮ d߯ d߰ d߱ d߲ d š dߴ dߵ d߶ d߷ d߸ d߹ dߺ d߻ d߼ d߽ d š d߿ d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d� d š d  d d d d d d š d d d d d d d š dR3$ d d d d d d d d d d! d" d# d š d%,& d' d( d) d* d+ d š d- d. d/ d0 d1 d2 d š d4C5<6 d7 d8 d9 d: d; d š d= d> d? d@ dA dB d š dDKE dF dG dH dI dJ d š dL dM dN dO dP dQ d dSrTcU\V dW dX dY dZ d[ d š d] d^ d_ d` da db d š ddke df dg dh di dj d š dl dm dn do dp dq d š ds{t du dv dw dx dy dz d š d|} d~ d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d� d d š dV7 d d d d d d š d d d d d d d d d d d d d d š d d d d! š" š# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2534 : š š 6 š : š8G9@: d; d< d= d> d? d š dA dB dC dD dE dF d 8 dHOI dJ dK dL dM dN d š dP dQ dR dS dT dU d š dWkXcY\Z d[ d š d] d^ d_ d` da db d š dd de df dg dh di dj d š dl{mtn do dp dq dr ds d š du dv dw dx dy dz d š d|} d~ d d d d d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d� d d š dG (   d d d d d d d d d d d d d š d! d d d d d d d" d# d$ d% d& d' d d)8*1+ d, d- d. d/ d0 d š d2 d3 d4 d5 d6 d7 d š d9@: d; d< d= d> d? d H dA dB dC dD dE dF d š dHgIXJQK dL dM dN dO dP d š dR dS dT dU dV dW d š dY`Z d[ d\ d] d^ d_ d š da db dc dd de df d š dhwipj dk dl dm dn do d š dq dr ds dt du dv d dx dy dz d{ d| d} d~ d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d E] d d d d d d d š dw8  d d d� d d d š d d d d d d d d  d d d d d d š d d d d d d d š d)" d d d d d! d š d# d$ d% d& d' d( d š d*1+ d, d- d. d/ d0 d š d2 d3 d4 d5 d6 d7 d š d9X:I;B< d= d> d? d@ dA d š dC dD dE dF dG dH d š dJQK dL dM dN dO dP d š dR dS dT dU dV dW d š dYhZa[ d\ d] d^ d_ d` d š db dc dd de df dg d š dipj dk dl dm dn do d š dq dr ds dt du dv d š dxyz{| d} d~ d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d š di* d d d d d d E] d d d d� d d d š d  d d d d d d š d d d d d d d š d" d d d d d d š d d d d d d! d š d# d$ d% d& d' d( d) d š d+J,;-4. d/ d0 d1 d2 d3 d š d5 d6 d7 d8 d9 d: d š d<C= d> d? d@ dA dB d dD dE dF dG dH dI d š dKZLSM dN dO dP dQ dR d š dT dU dV dW dX dY d š d[b\ d] d^ d_ d` da d dc dd de df dg dh d š djkl{mtn do dp dq dr ds d š du dv dw dx dy dz d d|} d~ d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š dZ" d d d d d d š d d d d d d d š d d d d d d d š d d d d� d d d š d  d d d d d d š d d d d d d d š d d d d d d d š d d d d d d! d d#B$3%,& d' d( d) d* d+ d š d- d. d/ d0 d1 d2 d š d4;5 d6 d7 d8 d9 d: d š d< d= d> d? d@ dA d š dCK dDE dF dG dH dI dJ d š dLSM dN dO dP dQ dR d š dT dU dV dW dX dY d š d[\t]e d^_ d` da db dc dd d š dfmg dh di dj dk dl d š dn do dp dq dr ds d š duv}w dx dy dz d{ d| d š d~ d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d[ d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d� d d d d                 8  d d d d d d š d<-& d! d" d# d$ d% d š d' d( d) d* d+ d, d d.5/ d0 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d; d d=L>E? d@ dA dB dC dD d š dF dG dH dI dJ dK d š dMTN dO dP dQ dR dS d š dU dV dW dX dY dZ d š d\]|^m_f` da db dc dd de d š dg dh di dj dk dl d š dnuo dp dq dr ds dt d š dv dw dx dy dz d{ d d}~ d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š dM d d d d š š š d d d d d d d š d d d š d d d d d d d š d� d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d.  d d d d d d š d d d d d d d š d!'" d# d$ d% d& d š d( d) d* d+ d, d- d š d/>071 d2 d3 d4 d5 d6 d š d8 d9 d: d; d< d= d š d?F@ dA dB dC dD dE d š dG dH dI dJ dK dL d š dNOgP_QXR dS dT dU dV dW d š dY dZ d[ d\ d] d^ d d d`a db dc dd de df d E] dhwipj dk dl dm dn do d š dq dr ds dt du dv d š dxy dz d{ d| d} d~ d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d4 d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d� d d d d d d š d d d d d d d d d d d d d d š d% d d d d d d š d d d! d" d# d$ d d&-' d( d) d* d+ d, d š d. d/ d0 d1 d2 d3 d d5t6U7F8?9 d: d; d< d= d> d š d@ dA dB dC dD dE d š dGNH dI dJ dK dL dM d š dO dP dQ dR dS dT d š dVeW^X dY dZ d[ d\ d] d š d_ d` da db dc dd d š dfmg dh di dj dk dl d š dn do dp dq dr ds d š duvw~x dy dz d{ d| d} d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d� d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d š d^ ?!0")# d$ d% d& d' d( d š d* d+ d, d- d. d/ d š d182 d3 d4 d5 d6 d7 d š d9 d: d; d< d= d> d š d@OAHB dC dD dE dF dG d š dI dJ dK dL dM dN d š dPWQ dR dS dT dU dV d dX dY dZ d[ d\ d] d š d_~`oahb dc dd de df dg d š di dj dk dl dm dn d š dpwq dr ds dt du dv d š dx dy dz d{ d| d} d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d- d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d  d  d d d� d d d š d d d d d d d š d & d d d d d d d           $ "! 8 8# 8 8 7% 8 ' d( d) d* d+ d, d š d.q/R0?182 d3 d4 d5 d6 d7 d š d9 d: d; d< d= d> d d@GA dB dC dD dE dF d š dH dI dJ dK dL dM dN dO dP dQ d š dSbT[U dV dW dX dY dZ d š d\ d] d^ d_ d` da d E] dcjd de df dg dh di d š dk dl dm dn do dp d š drst{u dv dw dx dy dz d š d| d} d~ d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d š š š š d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d d š d� d d d d d d d d d d d d d š d  d d d d d d š d d d d d d d š d d d d d d d d š d X!9"1#*$ d% d& d' d( d) d š d+ d, d- d. d/ d0 d d d23 d4 d5 d6 d7 d8 d d:I;B< d= d> d? d@ dA d š dC dD dE dF dG dH d š dJQK dL dM dN dO dP d š dR dS dT dU dV dW d š dYxZi[b\ d] d^ d_ d` da d š dc dd de df dg dh d š djqk dl dm dn do dp d š dr ds dt du dv dw d š dyz{ d| d} d~ d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d E] d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d� d d d d d š d  d d d d d d š d d d d d d d š d]L= d d d d d d š d d! d" d# d$ d% d& d' d( d d)* d d+, d- d. d/60 d1 d2 d3 d4 d5 d d E d7 d8 d9 d: d; d< d E>E? d@ dA dB dC dD d š dF dG dH dI dJ dK d š dMUN dO dP dQ dR dS dT d š dV dW dX dY dZ d[ d\ d š d^}_n`ga db dc dd de df d E] dh di dj dk dl dm d š dovp dq dr ds dt du d š dw dx dy dz d{ d| d š d~ d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d � d d d d d d š d d d d d d d š d d d d d d d d š dU6'  d d d d d d š d! d" d# d$ d% d& d š d(/) d* d+ d, d- d. d d0 d1 d2 d3 d4 d5 d d7F8?9 d: d; d< d= d> d š d@ dA dB dC dD dE d š dGNH dI dJ dK dL dM d š dO dP dQ dR dS dT d š dVnW_ dXY dZ d[ d\ d] d^ d š d`ga db dc dd de df d dh di dj dk dl dm d do~pwq dr ds dt du dv d dx dy dz d{ d| d} d š d d d d d d d š d d d d d d d dw d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d� d š d d d d d d d š d A "   d d d d d d š d d d d d d d š d d d d d d d! d š d#2$+% d& d' d( d) d* d d, d- d. d/ d0 d1 d š d3:4 d5 d6 d7 d8 d9 d š d; d< d= d> d? d@ d š dBaCRDKE dF dG dH dI dJ d š dL dM dN dO dP dQ d š dSZT dU dV dW dX dY d š d[ d\ d] d^ d_ d` d š dbqcjd de df dg dh di d š dk dl dm dn do dp d dr ds dt du dv d š dxyz{ d|} d~ d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d d                          8 d d d d d d š d d d d d d d š d d d d d d� d š d  d d d d d d d d d d d d d š dA1" d d d d d d š d d d d d d! d d#*$ d% d& d' d( d) d š d+ d, d- d. d/ d0 d š d2 d3:4 d5 d6 d7 d8 d9 d š d; d< d= d> d? d@ d š dBaCRDKE dF dG dH dI dJ d š dL dM dN dO dP dQ d š dSZT dU dV dW dX dY d š d[ d\ d] d^ d_ d` d š dbqcjd de df dg dh di d dk dl dm dn do dp d r drys dt du dv dw dx d š dz d{ d| d} d~ d d š dk d d d d d d š d d d d d d d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d d d d d d d š d,  d� d d d d d š d d d d d d d š d d d d d d d d š d$ d d d d d d š d d d d! d" d# d d% d& d' d( d) d* d+ d d-L.=/60 d1 d2 d3 d4 d5 d š d7 d8 d9 d: d; d< d š d>E? d@ dA dB dC dD d dF dG dH dI dJ dK d š dM\NUO dP dQ dR dS dT d dV dW dX dY dZ d[ d š d]d^ d_ d` da db dc d š de df dg dh di dj d dl mnwopqrsztwu dv d š dx dy d š d{~| d} d š d d d š d d d š d d d š d d d š d d d š d d d d d d š d d d š d d d š d d d š d d d š d d d š d d d d d d š d d d š d d d d d d š d d d š d d d š d d d d d d d š d d d d š d d š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š  d d š d d� d š d d d d š dB#    d d š d d d š d d d š d d d d d d d š d  d d š d! d" d š d$3%,&)' d( d š d* d+ d š d-0. d/ d š d1 d2 d š d4;586 d7 d š d9 d: d š d<?= d> d š d@ dA d š dC[DREKFHG d š dI dJ d š dLOM dN d š dP dQ d š dSWT dU dV d š dX dY dZ d š d\k]d^a_ d` d š db dc d š dehf dg d š di dj d š dlsmpn do d š dq dr d š dt du dv d dxyz{|}~ d d š d d d d š š š š š š š š š š š š š c š š š š š š š š š š  š š c d š š d d d š d d d š d d d d d d d d d š d d d š d d d š d d d š d d d š d d d d š d d d d š d d š d d d š d d d š d d d š d d d d š d d d š d d d d d d š d d d š d d d š d d d d d š d � d d d d d d š d d d š d  d d š d d d š d d d d š d d d d" d d š d d! d š d#&$ d% d š d' d( d) d* š+ š, š- š. š/ š0 š1 š2 š3 š49 š5 š6 š7 š8 š : š; š< š= š> ? š@ šA šB šC š šDE šF šG š šH šIJ šK š šL šM šNO šP š šQ šR šST š šU šV šWX šY šZ š š[ š\] š^ š š_` š šab š šc šd še šf šg šh šij š škl š šm šn šop š šq šrs št šu š šv šw šxy šz š{ š š|} š~ š š š š š š š š š š š š š š š š D š d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d š d d d š d d d š d d d š d d d š d d d š d d d d d d d d d d š d d d š dI  d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d� d d š d d d š d  d d š d d d š d* d d š d d d š d d d š d d d š d& #! d" d š d$ d% d d d'( d) d š d+:,3-0. d/ d š d1 d2 d š d475 d6 d š d8 d9 d š d;B<?= d> d š d@ dA d š dCFD dE d š dG dH d š dJKjL[MTNQO dP d š dR dS d š dUXV dW d š dY dZ d š d\c]`^ d_ d š da db d š ddge df d dh di d š dkzlsmpn do d dq dr d š dtwu dv d š dx dy d š d{|} d~ d š d d d š d d d š d d d š d d d d š d d d š d d d š d d d š d d d š d š d d š d d d d š d d d š d d d š d d d š d d d š d d d š d d d š d< d d š d d d š d d d d d d d š d d d š d d d š d d d š d d d š d d d š d d d d š d d d d š d d d š d d d š d d d š d d d š d� d d š d d d š d   d d š d d d d d š d d d š d d d š d d d š d-& #! d" d d$ d% d š d'*( d) d š d+ d, d š d.5/20 d1 d š d3 d4 d š d697 d8 d š d: d; d š d=>Z?N@GADB dC d š dE dF d š dHKI dJ d š dL dM d š dOVPSQ dR d š dT dU d š d dWX dY d š d[\]^ d_ d` da šb šc šd še šf šg šh ši šj|kwlsmpn šo š š šqr š š (t šu šv š � šx šy šz š š{ š} š š~ š š š š  š d d d d d š d d d š d d d š d d d š d d d š d d d š d d d d š d d d š d d d d d d d š š š š š š : : : : : š : : : : : : : : : : : : : : : : : š š : š š : š š š  : š ( : š  : š  š d d š d d d š d d d š d d d š d d d š d d d š d d d š d� d d š d d d š d  d d š d d d š d w F0! d d d d d š d d d š d d d š d")#&$ d% d š d' d( d š d*-+ d, d š d. d/ d  d1:26 d34 d5 d š d d78 d9 d š d;B<?= d> d š d@ dA d š dC dD dE d E] dGHWIPJMK dL d š dN dO d š dQTR dS d dU dV d š dX\ dYZ d[ d š d]^ d_ d` da š šbc šd še šf šg šh ši šj škl š šm šno šp šq šr šs št š šu švw šx šy šz š{ š| š š}~ š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š E š š š š š š š š š š  d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d d d d š š š š š š š š š š š š š š š š š š š� š š š š š š š š š š š š > š>+ d d š d d d š d d d d š d$! d d š d" d# d š d%(& d' d š d) d* d d,5-1 d./ d0 d š d2 d3 d4 d š d6:7 d8 d9 d š d d;< d= d š d?[@LAEB dC dD d š dFIG dH d dJ dK d š dMTNQO dP d š dR dS d š dUXV dW d š dY dZ d š d\k]d^a_ d` d š db dc d š dehf dg d š di dj d š dltm dn do dp dq dr ds d š du dv d š dxyz{|}~ d d š d d d š d d d š d d d š d d d š d d d š d d d d š d  d d š d d d d š d d d š d d d š d d d š d d d š d d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d d d d š d d d š d d d d d d š d d d š d d d š d d d š d)  d d š d d d š d d d d š d� d d š d d d š d  d d š d d d š d d d š d d d š d d d š d d d š d" d d! d š d#&$ d% d š d' d( d š d*+w,3-0. d/ d š d1 d2 d š d4d5 š6 š7 š8V š9:N; š< š= š š>? š@GA š šBC šD š šE šF š BH šI šJ šK š šLM š š B šOP š šQ šR BST šU š B š šW šX šY šZ š[\ š š]^ š_ š š`a š Bbc š B še šf šg šh ši šj šk šl šm šn šo šp šq šr š šs št šuv š šxy|z d{ d š d} d~ d š d d d š d d d š d d d d š d d d š d d d d d d š d d d š d d d š d d d š d+ d d š d d d š d d d d d d d d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d d š d d d d d d d d d d š d d d š d d d š d d d š d d d š d d d d š d�  d d d  F  d d š d  d d d š š š š š š š š š š ( d d š d$! d d š d" d# d š d%(& d' d š d) d* d d,^-B.6/ d031 d2 d š d4 d5 d š d7; d89 d: d š d<?= d> d š d@ dA d š dCODKEHF dG d š dI dJ d š dL dM dN d š dPWQTR dS d š dU dV d š dX[Y dZ d š d\ d] d d_{`lahbec dd d š df dg d š di dj dk d š dmtnqo dp d š dr ds d š duxv dw d š dy dz d š d|}~ d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d E d d d š d d d š d d d d d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d š d d d H d d d š d d d š d d d š d d d d d d š d d d š d d d š d d d d d d d d d š d� d d š d d d d   d d š d d d š d d d š d d d š d d d d š d\=1* #! d" d š d$ d% d& d' d( d) d š d+., d- d š d/ d0 d š d26 d34 d5 d š d7:8 d9 d š d; d< d š d>M?F@CA dB d š dD dE d š dGJH dI d š dK dL d š dNUORP dQ d š dS dT d š dVYW dX d š dZ d[ d d]v^g_c` da db d š dd de df d š dhoilj dk d š dm dn d š dpsq dr d dt du d š dwxy|z d{ d d} d~ d š d d d š d d d š d d d d d d š d d d š d d d d d d d d š d d d d š d d d d š d d d d š d d d d š d d d d š d d d š d d d š d d d š d d d š d d d d š d d d š d d d š d d d š d d d š d d d š d d š d d š d d š d d š d d d d d d š d d d š d d d d d d d d d d d d|�<   d d d d d š d  d d š d d d š d d d š d d d š d d d š d d d d!0")#&$ d% d š d' d( d š d*-+ d, d š d. d/ d š d18253 d4 d š d6 d7 d š d d9: d; d d=c>W?S š@A dB dC dD šE šF šG šH šI šJ šK šL šM šN šO šP šQ š šR 5 š dTU dV d dX\ šYZ d[ d š d]`^ d_ d š da db d š ddpelfig dh d š dj dk d š dm dn do d š dqxrus dt d š dv dw d š dy dz d{ d š d}~ d d d š d d d š d d d š d d d š d d d d š d d d d š d d d š d d d š d d d š d d d š d d d d d d š d d d H d d d š d d d š d d d š d d d š d d d š d d d d š d d š š d d d š d d d š d d d š d d d š d d d d d d š d d d š d d d d d d d d d d d d dKt,0 R���=� 6?      d d d š d d d d š d d d d š d š d d d d d d š d!4"+#'$ d% d& d š d( d) d* d š d,0- d. d/ d š d1 d2 d3 d š d5:6 d7 d8 d9 d š d d;< d= d> d d@cAPBKCGD dE dF d š dH dI dJ d š dL dM dN dO d š dQZRVS dT dU d š dW dX dY d š d[_\ d] d^ d d` da db d š ddsej dfg dh di d š dkol dm dn d š dp dq dr d š dt}uyv dw dx d š dz d{ d| d š d d~ d d d š d d d d š d d d d š d d d d š d d d d d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d d š d d d d d d d d d d š d d d š d d d d š d d d d d š d d d d d š d d d d d š d d d d š d d d d š d š š d5 š d� d d š d d d d d š d   d d d š d d d d š d d d d š d% š d d d š d! d d d š d" d# d$ d š d&,'( š d) d* d+ d š d-1. d/ d0 d š d2 d3 d4 d š d š d7^89:;E< d=A> d? d š@ š dB dC dD d dFOGKH dI dJ d š dL dM dN d š dPRQ d š dS d šT šUV šWXxYc šZ[`\] ^_ 2 ^ Ta šb š šdoelfigh š . S jk š c Am šn š B{ pvqs Wr > Htu  F Bw š šyz{|~ } @  � š  š š m š E� >  m 4  E š  š š š } A E> š  S š Rk  š š š  š š  š $ Q š š  š š š 4 D > B 5 D š A ] š š   d d d d š d d d d d š d d d d d š d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d š d d d d š d š d d d š d  d d d š d d� d d š d d d d š d d d d š d  d d d d š d d d d š d d d d š d d d š d; 1!("&# d$ d% d š d' d š d)-* d+ d, d š d. d/ d0 d š d273 d4 d5 d6 d š d8 d9 d: d š d<O=F>B? d@ dA d š dC dD dE d š dGKH dI dJ d š dL dM dN d š dPU dQR dS dT d dVZW dX dY d š d[ d\ d] d š d_`a|bmcd E šeif Eg Eh E š Ej Ek El E š Enso Ep Eq Er E š Etxu Ev Ew E š Ey Ez E{ E š E}~ š E E E š E E E E š E E E E š E E š ( š š  š š š >  E E E š E E E E š E E E E E š E E E E š E E E E E š E E š E š E E E E E š E E E E š E E E E š E E E E š E E E E E š E š d d d š d d š d d d d š d E š E E E E š E d d d š d d d d š d š d d d š d d d d d š d� d d d š d d d d š d š d | q d d _& š š š š š š š  š š + š š š š  # š!" š š š$ š% š 'B(6)0*-+,  š H./ š 5 š 51423 5  ( š5 š 7=8;9: <  c< š A ?>@? š š 5p šA š ACPDJEGF š 5 AHI š B& H šKNLM š 5 š ʗ šO š 5RQXRUST š k š VW  š > šY\Z[ @ 5p  B]^ > š  ? š`aib š šcdgef š  š (h š A šj škn šl šm  šo šp š  šrvsut d š d š dwx š dy dz d{ d š d}~ E E E š E E E E š E E E E š E E E E š E E E E š E E E E š E E E E š E E E E E š E E E E E š E E E E š E E E E š E E E E š E š E E E E š E E E E 8 E E E E E š E d š d d d d š d d d d d š d d d d d š d d d d š d d d d d š d d d d š d d d d š d d d d š d d� d d š d  d d d š d d d d š d  d d d d d d d š d d d d š d d š dSO= 3!*"&# E$ E% E š E' E( E) E š E+/, E- E. E š E0 E1 E2 E š E4 E596 E7 E8 E š E: E; E< E š E>D? š@ EA EB EC E š EEJ EFG EH EI E š E EKL EM EN E š EP EQ ER E š ETWU EV E š EXsYdZ_[ š\ E] E^ E š E` ša Eb Ec E š Eenfjg Eh Ei E š Ek El Em E š Eo šp Eq Er E š Etvu E š Ewzx Ey E š E{ E| E} E~ E š E d š d d d d š d d d d š d d d d d š d š š d d d š d d d d d š d š d d d š d d d d d š d d d d d š d š d� d d d�� d d d š d d d d š d d d d d š d d d d š d d d d š d d d d d d d d š d E E E š E E E E š E E E E š E E E E š E d d d š d d d š d d d d š d d�� d� d š d� d� d� d š d��� d� d� d� d� d� d� d š d� d� d� d š d d� d� d� d� d�� d� d� d� d� d� d� d d�!�/ d�"�# d d�$�% d d�&�' d�( d�) d�* d�+ d�, d�- d�. d š d�0 d d�1�2 d d�3�4 d d�5�6 d�7 d�8 d�9 d�: d�; d�< d š d�>�u�?�Z�@�M�A d�B d�C d�D d�E d�F d�G d�H d�I d�J d�K d�L d š d�N d�O d�P d�Q d�R d�S d�T d�U d�V d�W d�X d�Y d š d�[�h�\ d�] d�^ d�_ d�` d�a d�b d�c d�d d�e d�f d�g d š d�i d�j d�k d�l d�m d�n d�o d�p d�q d�r d�s d�t d š d�v��w��x d�y d�z d�{ d�| d�} d�~ d� d� d� d� d� d š d� d� d� d� d� d� d� d� d� d� d� d� d š d� d� d� d� d� d� d� d� d� d� d� d� d� d š d� ������� d� d� d� d� d� d� d� d� d� d� d� d š d� d� d� d� d� d� d� d� d� d� d� d� d š d��� d� d� d� d� d� d� d� d� d� d� d� d d� d� d� d� d� d� d� d� d š d����� d� d� d� d� d� d� d� d� d� d� d� d š d� d� d� d� d� d� d� d� d� d� d� d� d š d��� d� d� d� d� d� d� d� d� d� d� d� d š d� d� d d d d d d d d d d d š d 6 ( d d d d d d d d d d d d š d d d d d d! d" d# d$ d% d& d' d d d)* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d š d7 d8E9 d: d; d< d= d> d? d@ dA dB dC dD d š dF dG dH dI dJ dK dL dM dN dO dP dQ d dSTUVqWdX dY dZ d[ d\ d] d^ d_ d` da db dc d š de df dg dh di dj dk dl dm dn do dp d š drs dt du dv dw dx dy dz d{ d| d} d~ d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d� d d d d d d d š d d d d d d d d d d d d d š dI.% d d d d d d d d! d" d# d$ d d& d' d( d) d* d+ d, d- d š d/<0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d š d= d> d? d@ dA dB dC dD dE dF dG dH d š dJeKXL dM dN dO dP dQ dR dS dT dU dV dW d š dY dZ d[ d\ d] d^ d_ d` da db dc dd d š dfsg dh di dj dk dl dm dn do dp dq dr d š dt du dv dw dx dy dz d{ d| d} d~ d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d's d d d d d d d d d d d d d d d d d d d d š d d d d d d d� d d d d d d d š d d d d d d d  d d d d d d d š d@% d d d d d d d d d! d" d# d$ d š d&3' d( d) d* d+ d, d- d. d/ d0 d1 d2 d š d4 d5 d6 d7 E8 E9 E: E; E< E= E> E? E š EAXBOC dD dE dF dG dH dI dJ dK dL dM dN d š dP dQ dR dS dT dU dV dW d š dYfZ d[ d\ d] d^ d_ d` da db dc dd de d š dg dh di dj dk dl dm dn do dp dq dr d š dtuvwx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d  d� d d d d d d d d d d d d š d  d d d d d d d d d d d d š d d d d d d d! d" d# d$ d% d& d d()z*C+5, d- d. d/ d0 d1 d2 d3 d4 d š d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB d š dD_ERF dG dH dI dJ dK dL dM dN dO dP dQ d š dS dT dU dV dW dX dY dZ d[ d\ d] d^ d š d`ma db dc dd de df dg dh di dj dk dl d š dn do dp dq dr ds dt du dv dw dx dy d š d{|}~ d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d? d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d� d d d d d d d d š d d d d d d d d d d d d d š d$ d d d d d d d d d d! d" d# d š d%2& d' d( d) d* d+ d, d- d. d/ d0 d1 d š d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d š d@fAXBKC dD dE dF dG dH dI dJ d š dL dM dN dO dP dQ dR dS dT dU dV dW d š d dYZ d[ d\ d] d^ d_ d` da db dc dd de d š dghui dj dk dl dm dn do dp dq dr ds dt d > dv dw dx dy dz d{ d| d} d~ d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d'f  d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d� d d d d d d d d d d d d š d / d d d d d š d" d d d d d d d d d d d! d š d# d$ d% d& d' d( d) d* d+ d, d- d. d š d0K1>2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d š d? d@ dA dB dC dD dE dF dG dH dI dJ d š dLYM dN dO dP dQ dR dS dT dU dV dW dX d š dZ d[ d\ d] d^ d_ d` da db dc dd de d š dghis djk dl dm dn do dp dq dr d š dtu dv dw dx dy dz d{ d| d} d~ d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d d  d d d d d d d d d d d d š d� d d d d d d d d d d d d š d  d d d d d d d d d d d d š d d d d d d d! d" d# d$ d% d& d š d()*T+F,9- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d š d: d; d< d= d> d? d@ dA dB dC dD dE d dG dH dI dJ dK dL dM dN dO dP dQ dR dS d š dUpVcW dX dY dZ d[ d\ d] d^ d_ d` da db d š dd de df dg dh di dj dk dl dm dn do d š dq~r ds dt du dv dw dx dy dz d{ d| d} d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š dP d d d d d d d d d d d d d d d d d d d d d d d d d š d � d d d d d d d d d d d d š d d d d d d d d d d d d d š d5( d d d d d! d" d# d$ d% d& d' d š d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d š d6C7 d8 d9 d: d; d< d= d> d? d@ dA dB d š dD dE dF dG EH EI EJ EK EL EM EN EO E š EQRmS`T dU dV dW dX dY dZ d[ d\ d] d^ d_ d š da db dc dd de df dg dh di dj dk dl d š dn{o dp dq dr ds dt du dv dw dx dy dz d š d| d} d~ d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d d d d d d d d d d d d d š d & `  d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d š d  d d d d d d d d d d � d  d Es d  d  d  d  d  d  d d d d d d  d š d  G  ,    d  d  d  d  d  d  d  d  d  d  d  d š d d ! d " d # d $ d % d & d ' d ( d ) d * d + d d - : . d / d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 d 8 d 9 d d ; d < d = d > d ? d @ d A d B d C d D d E d F d š d H V d I J d K d L d M d N d O d P d Q d R d S d T d U d š d d W X d Y d Z d [ d \ d ] d ^ d _ d d a  b  c z d q e d f d g d h d i d j d k d l d m d n d o d p d š d r d s d t d u d v d w d x d y d š d { d | d } d ~ d  d d d d d d d d d š d     d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d d d d d š d       d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d š d     d d d d d d d d d d d d š d d � d  d  d  d  d  d  d  d  d d d š d   d  d  d  d  d  d  d  d  d  d  d  d š d  d  d  d  d  d  d d ! d " d # d $ d % d š d '  (  ) ` * E + 8 , d - d . d / d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 d š d 9 d : d ; d < d = d > d ? d @ d A d B d C d D d š d F S G d H d I d J d K d L d M d N d O d P d Q d R d š d T d U d V d W d X d Y d Z d [ d \ d ] d ^ d _ d š d a | b o c d d d e d f d g d h d i d j d k d l d m d n d š d p d q d r d s d t d u d v d w d x d y d z d { d š d }  ~ d  d d d d d d d d d d d š d d d d d d d d d d d d d š d       d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d d š d d  d d d d d d d d d d d d š d  K  !     d d d d d d d d d d d d š d d d d d d d � d  d  d  d  d  d š d    d d d d d d  d  d  d  d  d  d š d  d  d  d  d  d  d  d  d  d  d  d d š d " 0 # d $ d % d & d ' d ( d ) d * d + d , d - d . d / d š d 1 > 2 d 3 d 4 d 5 d 6 d 7 d 8 d 9 d : d ; d < d = d š d ? d @ d A d B d C d D d E d F d G d H d I d J d š d L  M h N [ O d P d Q d R d S d T d U d V d W d X d Y d Z d š d \ d ] d ^ d _ d ` d a d b d c d d d e d f d g d š d i v j d k d l d m d n d o d p d q d r d s d t d u d d w d x d y d z d { d | d } d ~ d  d d d d š d     d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d d d d d š d  t  g    *       d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d d d d d š d     d d d d d d d d d d � d  d š d  d  d  d  d  d  d d d d d d  d š d    d  d  d  d  d  d  d  d  d  d  d  d š d  d  d d ! d " d # d $ d % d & d ' d ( d ) d š d + ^ , G - : . d / d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 d 8 d 9 d š d ; d < d = d > d ? d @ d A d B d C d D d E d F d š d H U I d J d K d L d M d N d O d P d Q d R d S d T d š d V d W d X d Y d Z d [ d \ d ] d š d _ z ` m a d b d c d d d e d f d g d h d i d j d k d l d š d n d o d p d q d r d s d t d u d v d w d x d y d š d {  | d } d ~ d  d d d d d d d d d d d d d d d d d d d d d d š d         d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d d d d d d d d d d d d d d š d     d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d � d  d  d  d  d š d  0    d d d d d d  d  d  d  d  d  d  d š d  #  d  d  d  d  d  d  d  d  d d ! d " d š d $ d % d & d ' d ( d ) d * d + d , d - d . d / d š d 1 L 2 ? 3 d 4 d 5 d 6 d 7 d 8 d 9 d : d ; d < d = d > d š d @ d A d B d C d D d E d F d G d H d I d J d K d š d M Z N d O d P d Q d R d S d T d U d V d W d X d Y d š d [ d \ d ] d ^ d _ d ` d a d b d c d d d e d f d š d h  i  j  k t l d m d n d o d p d q d r d s d š d u d v d w d x d y d z d d { d | } d ~ d  d d d š d d d d d d d d d  d d d d d d š d       d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d š d d d d d d d d d d d d d d     d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d =    � d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d3& d d d d d d d! d" d# d$ d% d š d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d š d4 d5 d6 d7 d8 d9 d: d; d< d š d>W?I@ dA dB dC dD dE dF dG dH d š dJ dK dL dM dN dO d dP dQR dS dT dU dV d dXfY dZ d[ d\ d] d^ d d_` da db dc dd de d š dg dh di dj dk dl dm d dno dp dq dr ds d š duvwxyz{ d| d} d~ d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d� d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d š dk4* d d d d! d" d# d$ d% d& d' d( d) d š d+ d, d- d. d/ d0 d1 d2 d3 d š d5P6C7 d8 d9 d: d; d< d= d> d? d@ dA dB d š dD dE dF dG dH dI dJ dK dL dM dN dO d š dQ^R dS dT dU dV dW dX dY dZ d[ d\ d] d š d_ d` da db dc dd de df dg dh di dj d š dlmn{o dp dq dr ds dt du dv dw dx dy dz d š d| d} d~ d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d š dO d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d� d d š d) d d d d d d d d d d d d š d d d d d d d d d d d d d d d! d" d# d$ d% d& d' d( d š d*E+8, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d š d9 d: d; d< d= d> d? d@ dA dB dC dD d š dF dG dH dI dJ dK dL dM dN d š dPsQdRZS dT dU dV dW dX dY d š d[ d\ d] d^ d_ d` d da dbc d š d def dg dh di dj dk dl d dmn do dp dq dr d š dtuv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š do5|&  d d d d d d d d š d d d d d d d d d d d d d š d� d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d! d" d# d$ d% d š d'E(?)6* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d š d7 d8 d9 d: d; d< d= d> d š d@ dA dB dC dD d š dFaGTH dI dJ dK dL dM dN dO dP dQ dR dS d š dU dV dW dX dY dZ d[ d\ d] d^ d_ d` d š dboc dd de df dg dh di dj dk dl dm dn d š dp dq dr ds dt du dv dw dx dy dz d{ d š d}~ d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d� d d š d d d d d d d d d d d d d š d d d d d d d d d š d( d d d d d! d" d# d$ d% d& d' d š d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d š d678k9T:G; d< d= d> d? d@ dA dB dC dD dE dF d š dH dI dJ dK dL dM dN dO dP dQ dR dS d š dUbV dW dX dY dZ d[ d\ d] d^ d_ d` da d š dc dd de df dg dh di dj d š dlmzn do dp dq dr ds dt du dv dw dx dy d š d{ d| d} d~ d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d� d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d š dE ;!." d# d$ d% d& d' d( d) d* d+ d, d- d š d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d š d< d= d> d? d@ EA EB EC ED E š EFTG dH dI dJ dK dL dM dN dO dP dQ dR dS d š dUbV dW dX dY dZ d[ d\ d] d^ d_ d` da d š dc dd de df dg dh di dj dk dl dm dn d š dpq*rstuv dw dx dy dz d{ d| d} d~ d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d� d d d d š d  d d d d d d d d d d d d š d d d d d d d d d d d d d š d! d" d# d$ d% d& d' d( d) d š d+|,R-H.;/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d š d< d= d> d? d@ dA dB dC dD dE dF dG d š dI dJ dK dL dM dN dO dP dQ d š dSaT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` d š dboc dd de df Eg Eh Ei Ej Ek El Em En E š Ep dq dr ds dt du dv dw dx dy dz d{ d š d}~ d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d š ds d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d� d d d d š d<! d d d d d d d d d d d d š d d d d d d d d d d d d d d"/# d$ d% d& d' d( d) d* d+ d, d- d. d š d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d š d=X>K? d@ dA dB dC dD dE dF dG dH dI dJ d š dL dM dN dO dP dQ dR dS dT dU dV dW d š dYfZ d[ d\ d] d^ d_ d` da db dc dd de d dg dh di dj dk dl dm dn do dp dq dr d š dtuvwx dy dz d{ d| d} d~ d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d� d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d& d d d d d d d d! d" d# d$ d% d š d' d( d) d* d+ d, d- d. d/ d š d1!23H4567a8S9F: d; d< d= d> d? d@ dA dB dC dD dE d š dG dH dI dJ dK dL dM dN dO dP dQ dR d š d dTU dV dW dX dY dZ d[ d\ d] d^ d_ d` d š db}cpd de df dg dh di dj dk dl dm dn do d š dq dr ds dt du dv dw dx dy dz d{ d| d š d~ d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d š dA d d d d d d d d d d d d š d d d d d d d d d d d d d š d  d d� d d d d d d d d d d š d d d d d d d d d d d d d š d& d d d d d d d d! d" d# d$ d% d š d'4( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ d dByC^DQE dF dG dH dI dJ dK dL dM dN dO dP d š dR dS dT dU dV dW dX dY dZ d[ d\ d] d š d_l` da db dc dd de df dg dh di dj dk d š dm dn do dp dq dr ds dt du dv dw dx d š dz{| d} d~ d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š du d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d� d d d d d d d>#  d d d d d d d d d d d d d d d d d d d d d d d! d" d d$1% d& d' d( d) d* d+ d, d- d. d/ d0 d š d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d š d?Z@MA dB dC dD dE dF dG dH dI dJ dK dL d š dN dO dP dQ dR dS dT dU dV dW dX dY d š d[h\ d] d^ d_ d` da db dc dd de df dg d š di dj dk dl dm dn do dp dq dr ds dt d š dvwxyz d{ d| d} d~ d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š š š š š d d d d d d d d� d d d d š d d d d d d d d d d d d d š d-  d d d d d d d d d d d d š d! d" d# d$ d% d& d' d( d) d* d+ d, d š d.;/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d š d< d= d> d? d@ dA dB dC dD dE dF dG d š dIJKLMhN[O dP dQ dR dS dT dU dV dW dX dY dZ d š d\ d] d^ d_ d` da db dc dd de df dg d š divj dk dl dm dn do dp dq dr ds dt du d š dw dx dy dz d{ d| d} d~ d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š dC  d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d� d d d d d d d d d d d d š d ( d d d d d d d d d d d d š d d d d d d! d" d# d$ d% d& d' d š d)6* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d š d7 d8 d9 d: d; d< d= d> d? d@ dA dB d š dDjE`FSG dH dI dJ dK dL dM dN dO dP dQ dR d dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d š da db dc dd de df dg dh di d š dklum dn do dp dq dr ds dt d š dv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d š d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d d š d d d d E E E E E E E� E E š E d d d d d d d d d d d d š d d d d d d d d d d d d d š dsI .! d" d# d$ d% d& d' d( d) d* d+ d, d- d š d/<0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d d= d> d? d@ dA dB dC dD dE dF dG dH d š dJeKXL dM dN dO dP dQ dR dS dT dU dV dW d š dY dZ d[ d\ d] d^ d_ d` da db dc dd d š d dfg dh di dj dk dl dm dn do dp dq dr d š dtuvw dx dy dz d{ d| d} d~ d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d dH$� d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d! d" d# d š d%\&A'4( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d š d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ d š dBOC dD dE dF dG dH dI dJ dK dL dM dN d dP dQ dR dS dT dU dV dW dX dY dZ d[ d š d]x^k_ d` da db dc dd de df dg dh di dj d dl dm dn do dp dq dr ds dt du dv dw d š dyz d{ d| d} d~ d d d d d d d d š d d d d d d d d d d d d d š d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d� d d d d d d d š d d d d d d d d d d š d-  d d d d d d d d d d d d š d! d" d# d$ d% d& d' d( d) d* d+ d, d š d.;/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d š d< d= d> d? d@ dA dB dC dD dE dF dG d š dI JKuLgMZN dO dP dQ dR dS dT dU dV dW dX dY d š d[ d\ d] d^ d_ d` da db dc dd de df d š dh di dj dk dl dm dn do dp dq dr ds dt d š dvwx dy dz d{ d| d} d~ d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d� d d d d d d d d d d š d i C ( d d d d d d d d d d d d š d d d d d d! d" d# d$ d% d& d' d d)6* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d š d7 d8 d9 d: d; d< d= d> d? d@ dA dB d š dD_ERF dG dH dI dJ dK dL dM dN dO dP dQ d š dS dT dU dV dW dX dY dZ d[ d\ d] d^ d š d` da db dc dd de df dg dh d š djk dlym dn do dp dq dr ds dt du dv dw dx d š dz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d U d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d š d d d d d d d d d d d d d d d d d d d d d d d d d d d š d d d d d d d d d d� d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d E d: -! d" d# d$ d% d& d' d( d) d* d+ d, d š d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d š d;H< d= d> d? d@ dA dB dC dD dE dF dG d š dI dJ dK dL dM dN dO dP dQ dR dS dT d š dVWXsYfZ d[ d\ d] d^ d_ d` da db dc dd de d š dg dh di dj dk dl dm dn do dp dq dr d š dtu dv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d d d d d š d d d d d d d d d š d  d d d d d d d d d d d d d d d d d d d d d � d  d  d  d š d  d  d  d  d d d d d d d    W  ;  -    d  d  d  d  d  d  d  d  d  d  d  d š d ! d " d # d $ d % d & d ' d ( d ) d * d + d , d š d d . / d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 d 8 d 9 d : d d < d = J > d ? d @ d A d B d C d D d E d F d G d H d I d š d K d L d M d N d O d P d Q d R d S d T d U d V d š d X  Y t Z g [ d \ d ] d ^ d _ d ` d a d b d c d d d e d f d š d h d i d j d k d l d m d n d o d p d q d r d s d š d u  v d w d x d y d z d { d | d } d ~ d  d d d š d d d d d d d d d d d d d š d     d d d d d d d d d d d d š d d d d d d d d d d d d d d   d d d d d d d d d d d d š d d d d d d d d d d d d d š d !2       d d d d d d d d d d d d š d d d d d d d d d d d d d š d   d d d d d d d d d d d d d d d d d d d d d d d d d š d!�!!!! d! d! d! d! d! d! d! d! d! d! d! d š d! d! d! d! d! d! d! d! d š d!!%! d! d! d! d! d! d! d! d!! d!" d!# d!$ d d!& d!' d!( d!) d!* d!+ d!, d!- d!. d!/ d!0 d!1 d š d!3!j!4!O!5!B!6 d!7 d!8 d!9 d!: d!; d!< d!= d!> d!? d!@ d!A d š d!C d!D d!E d!F d!G d!H d!I d!J d!K d!L d!M d!N d š d!P!]!Q d!R d!S d!T d!U d!V d!W d!X d!Y d!Z d![ d!\ d š d!^ d!_ d!` d!a d!b d!c d!d d!e d!f d!g d!h d!i d š d!k!!l!y!m d!n d!o d!p d!q d!r d!s d!t d!u d!v d!w d!x d š d!z d!{ d!| d!} d!~ d! d! d! d! d! d! d! d š d!!! d! d! d! d! d! d! d! d! d! d! d! d š d! d! d! d! d! d! d! d! d! d! d! d! d š d!&!$+!"!" !!!!! d d!! d! d! d! d! d! d! d! d! d! d! d! d š d!!! d! d! d! d! d! d! d! d! d d d!! d! d! d! d! d! d! d! d! d! d! d! d š d!!!!!!! d! d! d! d! d! d! d! d! d! d! d! d d! d! d! d! d! d! d! d! d! d! d! d! d š d! d! d! d! d! d! d! d! d! d š d!"!"! d! d! d! d! d! d! d"� d" d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d" d š d"!"r""";"#"1 d"$"% d"& d"' d"( d") d"* d"+ d", d"- d". d"/ d"0 d š d"2 d"3 d"4 d"5 d"6 d"7 d"8 d"9 d": d d"<"W"="J"> d"? d"@ d"A d"B d"C d"D d"E d"F d"G d"H d"I d š d"K d"L d"M d"N d"O d"P d"Q d"R d"S d"T d"U d"V d š d"X"e"Y d"Z d"[ d"\ d"] d"^ d"_ d"` d"a d"b d"c d"d d š d"f d"g d"h d"i d"j d"k d"l d"m d"n d"o d"p d"q d š d"s""t""u""v d"w d"x d"y d"z d"{ d"| d"} d"~ d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d š d""" d" d" d" d" d" d" d" d" d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d š d""" d" d" d" d" d" d" d" d" d" d" d" d" d š d""" d" d" d" d" d" d" d" d" d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d š d"#j"#'"#""""" d" d" d" d" d" d" d" d" d" d" d" d š d" d" d" d" d" d" d" d" d" d" d" d" d š d"#" d" d" d" d" d" d" d" d" d" d" d#� d š d# d# d# d# d# d# d# d# d# d# d# d# d š d## d## d# d# d# d# d# d# d# d# d# d# d# d š d# d# d# d#! d#" d## d#$ d#% d#& d š d#(#7 d#)#* d#+ d#, d#- d#. d#/ d d#0#1 d#2 d#3 d#4 d#5 d#6 d š d#8#O#9#B#: d#; d#< d#= d#> d#? d#@ d#A d š d#C d#D d#E d#F d#G d#H d#I d#J d#K d#L d#M d#N d š d#P#]#Q d#R d#S d#T d#U d#V d#W d#X d#Y d#Z d#[ d#\ d š d#^ d#_ d#` d#a d#b d#c d#d d#e d#f d#g d#h d#i d š d#k##l##m##n#{#o d#p d#q d#r d#s d#t d#u d#v d#w d#x d#y d#z d d#| d#} d#~ d# d# d# d# d# d# d# d# d# d š d### d# d# d# d# d# d# d# d š d# d# d# d# d# d# d# d# d# d# d# d# d š d##### d# d# d# d# d# d# d# d# d# d# d# d š d# d# d# d# d# d# d# d# d# d# d# d# d d### d# d# d# d# d# d# d# d# d# d# d# d  d# d# d# d# d# d# d# d# d# d# d# d# d š d#$##### d# d# d# d# d# d# d# d# d# d# d# d š d# d# d# d# d# d# d# d# d# d# d# d# d š d d## d# d# d# d# d# d# d# d# d# d# d$� d š d$$$$$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d d$$ d$ d$! d$" d$# d$$ d$% d$& d$' d$( d$) d$* d š d$,%$-$$.${$/$b$0$K$1$>$2 d$3 d$4 d$5 d$6 d$7 d$8 d$9 d$: d$; d$< d$= d š d$? d$@ d$A d$B d$C d$D d$E d$F d$G d$H d$I d$J d d$L$U$M d$N d$O d$P d$Q d$R d$S d$T d š d$V d$W d$X d$Y d$Z d$[ d$\ d$] d$^ d$_ d$` d$a d d$c$q$d d$e d$f d$g d$h d$i d$j d$k d$l d$m d$n d$o d$p d d$r d$s d$t d$u d$v d$w d$x d$y d$z d š d$|$ d$}$~$$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$$$$$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$$$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$%.$$$$$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$$$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d$ d š d$%$%$ d$ d$ d$ d$ d$ d%� d% d% d% d% d% d š d% d% d% d% d% d% d% d% d% d% d% d% d š d%%!% d% d% d% d% d% d% d% d% d% d% d% d d%" d%# d%$ d%% d%& d%' d%( d%) d%* d%+ d%, d%- d š d%/%f%0%K%1%>%2 d%3 d%4 d%5 d%6 d%7 d%8 d%9 d%: d%; d%< d%= d š d%? d%@ d%A d%B d%C d%D d%E d%F d%G d%H d%I d%J d Es d%L%Y%M d%N d%O d%P d%Q d%R d%S d%T d%U d%V d%W d%X d š d%Z d%[ d%\ d%] d%^ d%_ d%` d%a d%b d%c d%d d%e d š d%g%%h%u%i d%j d%k d%l d%m d%n d%o d%p d%q d%r d%s d%t d š d%v d%w d%x d%y d%z d%{ d%| d%} d%~ d% d% d% d š d%%% d% d% d% d% d% d% d% d% d% d% d% d š d% d% d% d% d% d% d% d% d% d% d% d% d š d%&)%%%%%%% d% d% d% d% d% d% d š d% d% d% d% d% d% d d% d%% d% d% d% d% d š d%%% d% d% d% d% d% d d%% d% d% d% d% d% d š d% d% d% d% d% d% d% d d% d%% d% d% d% d š d%%%%% d% d% d% d% d% d% d d%% d% d% d% d% d š d% d% d% d% d% d% d% d% d d%% d% d% d% d š d%&%&% d% d% d% d% d% d% d% d% d% d% d&� d š d& d& d& d& d& d& d& d& d& d& d& d& d š d&&& d& d& d& d& d& d& d& d& d& d& d& d š d& d& d& d& d&! d&" d&# d&$ d&% d&& d&' d&( d š d&*&&+&b&,&G&-&:&. d&/ d&0 d&1 d&2 d&3 d&4 d&5 d&6 d&7 d&8 d&9 d š d&; d&< d&= d&> d&? d&@ d&A d&B d&C d&D d&E d&F d š d&H&U&I d&J d&K d&L d&M d&N d&O d&P d&Q d&R d&S d&T d š d&V d&W d&X d&Y d&Z d&[ d&\ d&] d&^ d&_ d&` d&a d š d&c&v&d&m&e d&f d&g d&h d&i d&j d&k d&l d š d&n d&o d&p d&q d&r d&s d&t d&u d š d&w&&x d&y d&z d&{ d&| d&} d&~ d& d& d& d& d& d š d& d& d& d& d& d& d& d& d& d& d& d& d š d&&&&& d& d& d& d& d& d& d& d& d& d& d& d& d š d&&& d& d& d& d& d& d& d& d& d& d& d& d š d& d& d& d& d& d& d& d& d& d& d& d& d š d&&&&& d& d& d& d& d& d& d& d& d& d& d& d š d& d& d& d& d& d& d& d& d& d& d& d& d š d&&& d& d& d& d& d& d& d& d& d& d& d& d š d& d& d& d& d& d& d& d& d& d& d& d& d š d&*:&(&'&'Y&'"&' d&& d& d& d& d& d'� d' d' d' d' d' d' d š d''' d' d' d' d' d' d' d' d' d' d' d' d š d' d' d' d' d' d' d' d' d' d' d' d'! d š d'#'>'$'1'% d'& d'' d'( d') d'* d'+ d', d'- d'. d'/ d'0 d š d'2 d'3 d'4 d'5 d'6 d'7 d'8 d'9 d': d'; d'< d'= d š d'?'L'@ d'A d'B d'C d'D d'E d'F d'G d'H d'I d'J d'K d š d'M d'N d'O d'P d'Q d'R d'S d'T d'U d'V d'W d'X d š d'Z''['v'\'i'] d'^ d'_ d'` d'a d'b d'c d'd d'e d'f d'g d'h d š d'j d'k d'l d'm d'n d'o d'p d'q d'r d's d't d'u d š d'w''x d'y d'z d'{ d'| d'} d'~ d' d' d' d' d' d š d' d' d' d' d' d' d' d' d' d' d' d' d š d''''' d' d' d' d' d' d' d' d' d' d' d' d š d' d' d' d' d' d' d' d' d' d' d' d' d š d''' d' d' d' d' d' d' d' d š d' d' d' d' d' d' d' d' d' d' d' d' d š d'(4''''''' d' d' d' E' E' E' E' E' E' E' E' E š E' d' d' d' d' d' d' d' d' d' d' d' d š d''' d' d' d' d' d' d' d' d' d' d' d' d š d' d' d' d' d' d' d' d' d' d' d' d' d š d'('( (� d( d( d( d( d( d( d( d( d( d( d( d š d( d( d( d( d( d( d( d( d( d( d( d( d š d(('( d( d( d( d( d( d(! d(" d(# d($ d(% d(& d š d(( d() d(* d(+ d(, d(- d(. d(/ d(0 d(1 d(2 d(3 d š d(5(_(6(Q(7(D(8 d(9 d(: d(; d(< d(= d(> d(? d(@ d(A d(B d(C d š d(E d(F d(G d(H d(I d(J d(K d(L d(M d(N d(O d(P d š d d(R(S d(T d(U d(V d(W d(X d(Y d(Z d([ d(\ d(] d(^ d š d(`({(a(n(b d(c d(d d(e d(f d(g d(h d(i d(j d(k d(l d(m d š d(o d(p d(q d(r d(s d(t d(u d(v d(w d(x d(y d(z d š d(|((} d(~ d( d( d( d( d( d( d( d( d( d( d š d( d( d( d( d( d( d( d( d( d( d( d( d š d()h((((((( d( d( d( d( d( d( š(( š( š((((( š( š ((( ( š š ((( ( š (  :(((( š((((( š   >( š > š(( š( š( š c((( c š ( š( š((((( š š H(  š (( š( š (( š ( š( d( d( d( d( d( d d( d(( d( d( d( d( d š d((( d( d( d( d( d( d d(( d( d( d( d( d( d š d( d( d( d( d( d( d( d d(( d( d( d( d( d š d()1()() ( d( d( d)� d) d) d) d) d) d) d) d) d š d) d) d) d) d) d) d) d) d) d) d) d) d d))$) d) d) d) d) d) d) d) d) d)! d)" d)# d š d)% d)& d)' d)( d)) d)* d)+ d), d)- d). d)/ d)0 d š d)2)M)3)@)4 d)5 d)6 d)7 d)8 d)9 d): d); d)< d)= d)> d)? d š d)A d)B d)C d)D d)E d)F d)G d)H d)I d)J d)K d)L d š d)N)[)O d)P d)Q d)R d)S d)T d)U d)V d)W d)X d)Y d)Z d š d)\ d)] d)^ d)_ d)` d)a d)b d)c d)d d)e d)f d)g d š d)i))j))k))l)y)m d)n d)o d)p d)q d)r d)s d)t d)u d)v d)w d)x d š d)z d){ d)| d)} d)~ d) d) d) d) d) d) d) d š d))) d) d) d) d) d) d) d) d) d) d) d) d š d) d) d) d) d) d) d) d) d) d) d) d) d š d))))) d) d) d) d) d) d) d) d) d) d) d) d š d) d) d) d) d) d) d) d) d) d) d) d) d š d))) d) d) d) d) d) d) d) d) d) d) d) d š d) d) d) d) d) d) d) d) d) d) d) d) d š d)*))))) d) d) d) d) d) d) d) d) d) d) d) d š d) d) d) d) d) d) d) d) d) d) d) d) d š d)*) d) d) d) d) d) d) d) d) d*� d* d* d š d* d* d* d* d* d* d* d* d* d* d* d* d š d**,*** d* d* d* d* d* d* d* d* d* d* d* d š d* d*! d*" d*# d*$ d*% d*& d*' d*( d*) d** d*+ d š d d*-*. d*/ d*0 d*1 d*2 d*3 d*4 d*5 d*6 d*7 d*8 d*9 d š d*;+*<**=**>*q*?*V*@*M*A d*B d*C d*D d*E d*F d*G d*H d*I d*J d*K d*L d š d*N d*O d*P d*Q d*R d*S d*T d*U d š d*W*d*X d*Y d*Z d*[ d*\ d*] d*^ d*_ d*` d*a d*b d*c d š d*e d*f d*g d*h d*i d*j d*k d*l d*m d*n d*o d*p d š d*r**s**t d*u d*v d*w d*x d*y d*z d*{ d*| d*} d*~ d* d š d* d* d* d* d* d* d* d* d* d* d* d* d š d*** d* d* d* d* d* d* d* d* d* d* d* d d* d* d* d* d* d* d* d* d* d* d* d* d š d***** d* d* d* d* d* d* d* d* d š d d** d* d* d* d* d* d* d* d* d* d* d* d š d***** d* d* d* d* d* d* d* d* d* d* d* d š d* d* d* d* d* d* d* d* d* d* d* d* d š d*** d* d* d* d* d* d* d* d* d* d* d* d š d* d* d* d* d* d* d* d* d* d* d* d* d š d*+i*+2*+*+ * d* d+� d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d++%+ d+ d+ d+ d+ d+ d+ d+ d+! d+" d+# d+$ d š d+& d+' d+( d+) d+* d++ d+, d+- d+. d+/ d+0 d+1 d š d+3+N+4+A+5 d+6 d+7 d+8 d+9 d+: d+; d+< d+= d+> d+? d+@ d š d+B d+C d+D d+E d+F d+G d+H d+I d+J d+K d+L d+M d š d+O+\+P d+Q d+R d+S d+T d+U d+V d+W d+X d+Y d+Z d+[ d š d+] d+^ d+_ d+` d+a d+b d+c d+d d+e d+f d+g d+h d š d+j++k++l+y+m d+n d+o d+p d+q d+r d+s d+t d+u d+v d+w d+x d š d+z d+{ d+| d+} d+~ d+ d+ d+ d+ d+ d+ d+ d š d+++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d+ d+ d+ d+ d+ d+ d+ d+ d š d+++++ d+ d+ d+ d+ d+ d+ d+ d š d d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d+,o+,�+++++ d d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d d+ d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d++ d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d+ d d++ d+ d+ d+ d+ d+ d+ d+ d+ d+ d+ d š d,,8,,,,, d, d, d, d, d, d, d, d, d, d, d, d š d, d, d, d, d, d, d, d, d, d, d, d, d š d,,+, d, d,! d," d,# d,$ d,% d,& d,' d,( d,) d,* d š d,, d,- d,. d,/ d,0 d,1 d,2 d,3 d,4 d,5 d,6 d,7 d š d,9,T,:,G,; d,< d,= d,> d,? d,@ d,A d,B d,C d,D d,E d,F d š d,H d,I d,J d,K d,L d,M d,N d,O d,P d,Q d,R d,S d d,U,b,V d,W d,X d,Y d,Z d,[ d,\ d,] d,^ d,_ d,` d,a d š d,c d,d d,e d,f d,g d,h d,i d,j d,k d,l d,m d,n d š d,p,,q,,r,,s,|,t d,u d,v d,w d,x d,y d,z d,{ d š d d,},~ d, d, d, d d, d, d,, d, d, d, d š d d,, d, d, d, d, d d, d,, d, d, d, d, d š d,,, d d,, d, d, d, d d,, d d,, d, d, d, d š d, d, d, d, d, d, d d,, d, d, d, d, d, d š d d,,,,,, d, d, d, d, d, d, d, d, d, d, d, d d, d, d, d, d, d, d, d, d, d, d, d, d š d,,, d, d, d, d, d, d, d, d, d, d, d, d š d, d, d, d, d, d, d, d, d, d, d, d, d d,=,6,3F,0,.,-,-H,-,- d,, d, d, d, d, d, d, d, d, d-� d- d- d š d d-- d- d- d- d- d- d- d- d- d- d- d- d š d----- - d- d- d- d- d- d- d- d- d- d- d- d d-! d-" d-# d-$ d-% d-& d-' d-( d-) d-* d-+ d-, d š d-.-;-/ d-0 d-1 d-2 d-3 d-4 d-5 d-6 d-7 d-8 d-9 d-: d d-< d-= d-> d-? d-@ d-A d-B d-C d-D d-E d-F d-G d š d-I--J-e-K-X-L d-M d-N d-O d-P d-Q d-R d-S d-T d-U d-V d-W d š d-Y d-Z d-[ d-\ d-] d-^ d-_ d-` d-a d-b d-c d-d d š d-f-s-g d-h d-i d-j d-k d-l d-m d-n d-o d-p d-q d-r d š d-t d-u d-v d-w d-x d-y d-z d-{ d-| d-} d-~ d- d š d----- d- d- d- d- d- d- d- d- d- d- d- d š d- d- d- d- d- d- d- d- d- d- d- d- d š d--- d- d- d- d- d- d- d- d- d- d- d- d š d- d- d- d- d- d- d- d- d- d- d- d- d š d-.'------- d- d- d- d- d- d- d- d- d- d- d- d š d- d- d- d- d- d- d- d- d- d- d- d- d š d--- d- d- d- d- d- d- d- d- d- d- d- d š d- d- d- d- d- d- d- d- d- d- d- d- d š d-. --- d- d- d- d- d- d- d- d- d- d- d- d š d.� d. d. d. d. d. d. d. d. d. d. d. d š d. .. d. d. d. d. d. d. d. d. d. d. d. d š d. d. d. d. d. d. d.! d." d.# d.$ d.% d.& d š d.(._.).D.*.7.+ d., d.- d.. d./ d.0 d.1 d.2 d.3 d.4 d.5 d.6 d š d.8 d.9 d.: d.; d.< d.= d.> d.? d.@ d.A d.B d.C d š d.E.R.F d.G d.H d.I d.J d.K d.L d.M d.N d.O d.P d.Q d š d.S d.T d.U d.V d.W d.X d.Y d.Z d.[ d.\ d.] d.^ d š d.`.w.a.j.b d.c d.d d.e d.f d.g d.h d.i d š d.k d.l d.m d.n d.o d.p d.q d.r d.s d.t d.u d.v d š d.x..y d.z d.{ d.| d.} d.~ d. d. d. d. d. d. d š d. d. d. d. d. d. d. d. d. d. d. d. d š d./`......... d. d. d. d. d. d. d. d. d. d. d š d. d. d. d. d. d. d. d. d. d. d. d. d š d d.. d. d. d. d. d. d. d. d. d. d. d. d š d..... d. d. d. d. d. d. d. d. d. d. d. d š d. d. d. d. d. d. d. d. d š d... d. d. d. d. d. d. d. d. d. d. d. d š d. d. d. d. d. d. d. d. d. d. d. d. d š d./)././. d. d. d. d. d. d. d. d. d. d. d/� d š d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/ d/ d/ d/ d/! d/" d/# d/$ d/% d/& d/' d/( d š d/*/E/+/8/, d/- d/. d// d/0 d/1 d/2 d/3 d/4 d/5 d/6 d/7 d š d/9 d/: d/; d/< d/= d/> d/? d/@ d/A d/B d/C d/D d š d/F/S/G d/H d/I d/J d/K d/L d/M d/N d/O d/P d/Q d/R d š d/T d/U d/V d/W d/X d/Y d/Z d/[ d/\ d/] d/^ d/_ d š d/a//b//c/~/d/q/e d/f d/g d/h d/i d/j d/k d/l d/m d/n d/o d/p d š d/r d/s d/t d/u d/v d/w d/x d/y d/z d/{ d/| d/} d š d d// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d///// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/////// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d d// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/0 /// d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d/ d š d/ d/ d0� d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d01000000O00400'0 d0 d0 d0 d0 d0 d0! d0" d0# d0$ d0% d0& d š d0( d0) d0* d0+ d0, d0- d0. d0/ d00 d01 d02 d03 d š d050B06 d07 d08 d09 d0: d0; d0< d0= d0> d0? d0@ d0A d š d0C d0D d0E d0F d0G d0H d0I d0J d0K d0L d0M d0N d š d0P0g0Q0Z0R d0S d0T d0U d0V d0W d0X d0Y d š d0[ d0\ d0] d0^ d0_ d0` d0a d0b d0c d0d d0e d0f d š d0h0u0i d0j d0k d0l d0m d0n d0o d0p d0q d0r d0s d0t d š d0v d0w d0x d0y d0z d0{ d0| d0} d0~ d0 d0 d0 d d0000000 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d0 d0 d0 d š d d00 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d00000 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d000 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d01P0100000 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d0 d š d01 1� d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d11511(1 d1 d1 d1 d1 d1! d1" d1# d1$ d1% d1& d1' d š d1) d1* d1+ d1, d1- d1. d1/ d10 d11 d12 d13 d14 d š d161C17 d18 d19 d1: d1; d1< d1= d1> d1? d1@ d1A d1B d š d1D d1E d1F d1G d1H d1I d1J d1K d1L d1M d1N d1O d š d1Q11R1m1S1`1T d1U d1V d1W d1X d1Y d1Z d1[ d1\ d1] d1^ d1_ d š d1a d1b d1c d1d d1e d1f d1g d1h d1i d1j d1k d1l d š d1n1{1o d1p d1q d1r d1s d1t d1u d1v d1w d1x d1y d1z d š d1| d1} d1~ d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d11111 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d111 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d12121111 d11 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d111 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d12111 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d š d1 d1 d1 d1 d2� d2 d2 d2 d2 d2 d2 d2 d š d d2 2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d22N22322&2 d2 d2 d2 d2 d2 d2 d2! d2" d2# d2$ d2% d š d2' d2( d2) d2* d2+ d2, d2- d2. d2/ d20 d21 d22 d š d242A25 d26 d27 d28 d29 d2: d2; d2< d2= d2> d2? d2@ d š d2B d2C d2D d2E d2F d2G d2H d2I d2J d2K d2L d2M d š d2O2j2P2]2Q d2R d2S d2T d2U d2V d2W d2X d2Y d2Z d2[ d2\ d š d2^ d2_ d2` d2a d2b d2c d2d d2e d2f d2g d2h d2i d š d2k2x2l d2m d2n d2o d2p d2q d2r d2s d2t d2u d2v d2w d š d2y d2z d2{ d2| d2} d2~ d2 d2 d2 d2 d2 d2 d š d222222 d22 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d222 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d22222 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d222 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d2323222 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d š d2 d2 d2 d2 d2 d2 d2 d3� d3 d3 d3 d3 d š d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d33+333 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3 d3 d3! d3" d3# d3$ d3% d3& d3' d3( d3) d3* d d3,393- d3. d3/ d30 d31 d32 d33 d34 d35 d36 d37 d38 d d3: d3; d3< d3= d3> d3? d3@ d3A d3B d3C d3D d3E d š d3G53H43I4$3J33K33L3g3M3Z3N d3O d3P d3Q d3R d3S d3T d3U d3V d3W d3X d3Y d d3[ d3\ d3] d3^ d3_ d3` d3a d3b d3c d3d d3e d3f d d3h3u3i d3j d3k d3l d3m d3n d3o d3p d3q d3r d3s d3t d š d3v d3w d3x d3y d3z d3{ d3| d3} d3~ d3 d3 d3 d š d33333 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d333 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3333333 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d333 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d34 34�3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d3 d š d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d444 d4 d4 d4 d4 d4 d4 d4 d š d4 d4 d4 d4 d4 d4 d4 d4 d4 d4! d4" d4# d d4%44&4Y4'4>4(414) d4* d4+ d4, d4- d4. d4/ d40 d š d42 d43 d44 d45 d46 d47 d48 d49 d4: d4; d4< d4= d š d4?4L4@ d4A d4B d4C d4D d4E d4F d4G d4H d4I d4J d4K d š d4M d4N d4O d4P d4Q d4R d4S d4T d4U d4V d4W d4X d š d4Z4u4[4h4\ d4] d4^ d4_ d4` d4a d4b d4c d4d d4e d4f d4g d š d4i d4j d4k d4l d4m d4n d4o d4p d4q d4r d4s d4t d š d4v44w d4x d4y d4z d4{ d4| d4} d4~ d4 d4 d4 d4 d d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d44444 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d444 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d4544444 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d d44 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d45444 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d4 d š d4 d4 d4 d5� d5 d5 d5 d5 d5 d š d555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d5 5W5!5:5"505# d5$ d5% d5& d5' d5( d5) d5* d5+ d5, d5- d5. d5/ d š d51 d52 d53 d54 d55 d56 d57 d58 d59 d d5;5I5< d5= d5> d5? d5@ d5A d5B d5C d5D d5E d5F d5G d5H d š d5J d5K d5L d5M d5N d5O d5P d5Q d5R d5S d5T d5U d5V d š d5X5g5Y d5Z d5[ d5\ d5] d5^ d5_ d5` d5a d5b d5c d5d d5e d5f d š d5h5v5i d5j d5k d5l d5m d5n d5o d5p d5q d5r d5s d5t d5u d š d5w d5x d5y d5z d5{ d5| d5} d5~ d5 d5 d5 d5 d5 d š d56,555555555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d š d56 555 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d5 d d5 d5 d5 d6� d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6 6 d6 6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d66"6 d6 d6 d6 d6! d š d6# d6$ d6% d6& d6' d6( d6) d6* d6+ d š d6-66.6[6/6>60 d61 d62 d63 d64 d65 d66 d67 d68 d69 d6: d6; d6< d6= d š d6?6M6@ d6A d6B d6C d6D d6E d6F d6G d6H d6I d6J d6K d6L d š d6N d6O d6P d6Q d6R d6S d6T d6U d6V d6W d6X d6Y d6Z d š d6\6y6]6k6^ d6_ d6` d6a d6b d6c d6d d6e d6f d6g d6h d6i d6j d š d6l d6m d6n d6o d6p d6q d6r d6s d6t d6u d6v d6w d6x d š d d6z6{ d6| d6} d6~ d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6666666 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d666 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d66666 d6 d6 d6 d6 d š d6 d6 d6 d6 d6 d6 d d66 d6 d6 d6 d6 d6 d d666 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6 d6 d6 d6 d6 d6 d6 d6 d6 d š d6:686767f67+67676 d6 d6 d6 d6 d6 d6 d6 d6 d7� d7 d7 d7 d š d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d777 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d7 d7 d7 d7! d7" d7# d7$ d7% d7& d7' d7( d7) d7* d š d7,7I7-7;7. d7/ d70 d71 d72 d73 d74 d75 d76 d77 d78 d79 d7: d š d7< d7= d7> d7? d7@ d7A d7B d7C d7D d7E d7F d7G d7H d š d7J7X7K d7L d7M d7N d7O d7P d7Q d7R d7S d7T d7U d7V d7W d š d7Y d7Z d7[ d7\ d7] d7^ d7_ d7` d7a d7b d7c d7d d7e d š d7g77h77i7w7j d7k d7l d7m d7n d7o d7p d7q d7r d7s d7t d7u d7v d š d7x d7y d7z d7{ d7| d7} d7~ d7 d7 d7 d7 d7 d7 d š d777 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d77777 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d77777 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d š d7 d7 d7 d7 d7 d7 d7 d7 d d77 d7 d7 d š d777 d7 d7 d7 d7 d7 d7 d d77 d7 d7 d7 d š d7 d7 d7 d7 d7 d7 d7 d d7 d77 d7 d7 d š d78d78)7 d78787 d7 d7 d7 d7 d7 d d78� d8 d8 d8 d8 d š d8 d8 d8 d8 d8 d8 d d8 8 d d š888 d8 d8 d8 d8 d8 d d8 d88 d8 d8 d8 d š d8 d8 d8 d8 d8! d8" d d8# d8$ d8%8& d8' d8( d š d8*8G8+898, d8- d8. d8/ d80 d81 d82 d83 d84 d85 d86 d87 d88 d š d8: d8; d8< d8= d8> d8? d8@ d8A d8B d8C d8D d8E d8F d š d8H8V8I d8J d8K d8L d8M d8N d8O d8P d8Q d8R d8S d8T d8U d š d8W d8X d8Y d8Z d8[ d8\ d8] d8^ d8_ d8` d8a d8b d8c d š d8e88f8u8g d8h d8i d8j d8k d8l d8m d8n d8o d8p d8q d8r d8s d8t d š d d8v8w d8x d8y d8z d8{ d8| d8} d8~ d8 d8 d8 d8 d8 d š d88888 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d888 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d898908888888 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d888 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d8 d š d8989 8 d8 d8 d8 d9� d9 d9 d9 d9 d9 d9 d9 d9 d š d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d99"9 d9 d9 d9 d9 d9 d9 d9 d9! d š d9# d9$ d9% d9& d9' d9( d d9)9* d9+ d9, d9- d9. d9/ d š d919l929O939A94 d95 d96 d97 d98 d99 d9: d9; d9< d9= d9> d9? d9@ d š d9B d9C d9D d9E d9F d9G d9H d9I d9J d9K d9L d9M d9N d š d9P9^9Q d9R d9S d9T d9U d9V d9W d9X d9Y d9Z d9[ d9\ d9] d š d9_ d9` d9a d9b d9c d9d d9e d9f d9g d9h d9i d9j d9k d š d9m99n9|9o d9p d9q d9r d9s d9t d9u d9v d9w d9x d9y d9z d9{ d š d9} d9~ d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d999 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9:9999999 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d d999 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9:999 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d š d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d9 d:� d: d š d:: : d: d: d: d: d š d: d: d: d: d: d: d: d: d: d: d: d: d: d d::S::6::(: d: d: d: d: d: d:! d:" d:# d:$ d:% d:& d:' d d:) d:* d:+ d:, d:- d:. d:/ d:0 d:1 d:2 d:3 d:4 d:5 d š d:7:E:8 d:9 d:: d:; d:< d:= d:> d:? d:@ d:A d:B d:C d:D d š d:F d:G d:H d:I d:J d:K d:L d:M d:N d:O d:P d:Q d:R d d:T:m:U:_:V d:W d:X d:Y d:Z d:[ d:\ d:] d:^ d š d:` d:a d:b d:c d:d d:e d:f d:g d:h d:i d:j d:k d:l d š d:n:|:o d:p d:q d:r d:s d:t d:u d:v d:w d:x d:y d:z d:{ d š d:} d:~ d: d: d: d: d: d: d: d: d: d: d: d d:<X:;w:;::::::: d: d: d: d: d: d: d: d: d: d: d: d: d d: d: d: d: d: d: d: d: d: d: d: d: d: d š d::: d: d: d: d: d: d: d: d: d: d: d: d: d š d: d: d: d: d: d: d: d: d: d: d: d: d: d š d::::: d: d: d: d: d: d: d: d: d: d: d: d: d š d: d: d: d: d: d: d: d: d: d: d: d: d: d š d::: d: d: d: d: d: d: d: d: d: d: d: d: d š d: d: d: d: d: d: d: d: d: d;� d; d; d; d š d;;@;;#;;; d; d; d; d; d; d; d; d; d; d; d; d; d š d; d; d; d; d; d; d; d; d; d; d; d;! d;" d d;$;2;% d;& d;' d;( d;) d;* d;+ d;, d;- d;. d;/ d;0 d;1 d š d;3 d;4 d;5 d;6 d;7 d;8 d;9 d;: d;; d;< d;= d;> d;? d š d;A;^;B;P;C d;D d;E d;F d;G d;H d;I d;J d;K d;L d;M d;N d;O d š d;Q d;R d;S d;T d;U d;V d;W d;X d;Y d;Z d;[ d;\ d;] d š d;_;m;` d;a d;b d;c d;d d;e d;f d;g d;h d;i d;j d;k d;l d š d;n d;o d;p d;q d;r d;s d;t d;u d;v d š d;x;;y;;z;;{;;| d;} d;~ d; d; d; d; d; d; d; d; d; d; d š d; d; d; d; d; d; d; d; d; d; d; d; d; d š d;;; d; d; d; d; d; d; d; d; d; d; d; d; d d; d; d; d; d; d; d; d; d; d; d; d; d; d š d;;;;; d; d; d; d; d; d; d; d; d; d; d; d; d š d; d; d; d; d; d; d; d; d; d; d; d; d; d š d;;; d; d; d; d; d; d; d; d; d; d; d; d; d š d; d; d; d; d; d; d; d; d; d; d; d; d; d š d;<;<� d;; d; d; d; d; d; d; d; d; d; d; d; d; d š d<<< d< d< d< d< d< d< d< d< d< d< d< d< d š d< d< d< d< d< d< d< d< d< d< d< d< d< d š d<<;<<-< d<! d<" d<# d<$ d<% d<& d<' d<( d<) d<* d<+ d<, d š d<. d</ d<0 d<1 d<2 d<3 d<4 d<5 d<6 d<7 d<8 d<9 d<: d d<<<J<= d<> d<? d<@ d<A d<B d<C d<D d<E d<F d<G d<H d<I d d<K d<L d<M d<N d<O d<P d<Q d<R d<S d<T d<U d<V d<W d š d<Y=<Z<<[<<\<y<]<k<^ d<_ d<` d<a d<b d<c d<d d<e d<f d<g d<h d<i d<j d š d<l d<m d<n d<o d<p d<q d<r d<s d<t d<u d<v d<w d<x d d<z<<{ d<| d<} d<~ d< d< d< d< d< d< d< d< d< d š d< d< d< d< d< d< d< d< d< d< d< d< d< d š d<<<<< d< d< d< d< d< d< d< d< d< d< d< d< d š d< d< d< d< d< d< d< d< d< d< d< d< d< d š d<<< d< d< d< d< d< d< d< d< d< d< d< d< d š d< d< d< d< d< d< d< d< d< d< d< d< d< d š d<<<<<<< d< d< d< d< d š d< d< d< d< d< d< d< d< d< d< d< d< d< d š d d<< d< d< d< d< d< d< d< d< d< d< d< d< d š d<=< d< d< d< d< d< d< d=� d= d= d= d= d= d= d š d d== d= d= d= d= d= d= d= d= d= d= d= d= d š d====E==( d== d= d= d= d= d= d=! d=" d=# d=$ d=% d=& d=' d š d=)=7=* d=+ d=, d=- d=. d=/ d=0 d=1 d=2 d=3 d=4 d=5 d=6 d š d=8 d=9 d=: d=; d=< d== d=> d=? d=@ d=A d=B d=C d=D d š d=F=c=G=U=H d=I d=J d=K d=L d=M d=N d=O d=P d=Q d=R d=S d=T d d=V d=W d=X d=Y d=Z d=[ d=\ d=] d=^ d=_ d=` d=a d=b d d=d=r=e d=f d=g d=h d=i d=j d=k d=l d=m d=n d=o d=p d=q d š d=s d=t d=u d=v d=w E=x E=y E=z E={ E=| E=} E=~ E= E š E======= d= d= d= d= d= d= d= d= d= d= d= d= d š d= d= d= d= d= d= d= d= d= d= d= d= d= d š d=== d= d= d= d= d= d= d= d= d= d= d= d= d š d= d= d= d= d= d= d= d= d= d= d= d= d= d š d===== d= d= d= d= d= d= d= d= d= d= d= d= d š d= d= d= d= d= d= d= d= d= d= d= d= d= d š d=== d= d= d= d= d= d= d= d= d= d= d= d= d š d= d= d= d= d= d= d= d= d= d= d= d= d= d š d=D=AZ=?=>=>k=>0=>=> >� d> d> d> d> d> d> d> d> d> d> d> d> d š d> d> d> d> d> d> d> d> d> d š d>>&> d> d> d> d> d> d> d> d>! d>" d># d>$ d>% d š d>' d>( d>) d>* d>+ d>, d>- d>. d>/ d š d>1>N>2>@>3 d>4 d>5 d>6 d>7 d>8 d>9 d>: d>; d>< d>= d>> d>? d š d>A d>B d>C d>D d>E d>F d>G d>H d>I d>J d>K d>L d>M d š d>O>]>P d>Q d>R d>S d>T d>U d>V d>W d>X d>Y d>Z d>[ d>\ d š d>^ d>_ d>` d>a d>b d>c d>d d>e d>f d>g d>h d>i d>j d d>l>>m>>n>|>o d>p d>q d>r d>s d>t d>u d>v d>w d>x d>y d>z d>{ d š d>} d>~ d> d> d> d> d> d> d> d> d> d> d> d š d>>> d> d> d> d> d> d> d> d> d> d> d> d> d š d> d> d> d> d> d> d> d> d> d> d> d> d> d š d>>>>> d> d> d> d> d> d> d> d> d> d> d> d> d š d> d> d> d> d> d> d> d> d> d> d> d> d> d š d>>> d> d> d> d> d> d> d> d> d> d> d> d> d š d> d> d> d> d> d> d> d> d> d š d>?:>? >>>>> d> d> d> d> d> d> d> d> d> d> d> d> d š d> d> d> d> d> d> d> d> d> d> d> d> d> d š d d>?� d? d? d? d? d? d? d? d? d? d? d? d? d d??+??? d? d? d? d? d? d? d? d? d? d? d? d? d š d? d? d? d?! d?" d?# d?$ d?% d?& d?' d?( d?) d?* d š d d?,?- d?. d?/ d?0 d?1 d?2 d?3 d?4 d?5 d?6 d?7 d?8 d?9 d š d?;?v?<?Y?=?K?> d?? d?@ d?A d?B d?C d?D d?E d?F d?G d?H d?I d?J d š d?L d?M d?N d?O d?P d?Q d?R d?S d?T d?U d?V d?W d?X d š d?Z?h?[ d?\ d?] d?^ d?_ d?` d?a d?b d?c d?d d?e d?f d?g d š d?i d?j d?k d?l d?m d?n d?o d?p d?q d?r d?s d?t d?u d š d?w??x??y d?z d?{ d?| d?} d?~ d? d? d? d? d? d? d? d š d? d? d? d? d? d? d? d? d? d? d? d? d? d š d??? d? d? d? d? d? d? d? d? d? d? d? d? d š d? d? d? d? d? d? d? d? d? d? d? d? d? d š d?@?@??????? d? d? d? d? d? d? d? d? d? d? d? d? d š d? d? d? d? d? d? d? d? d? d? d? d? d? d š d d?? d? d? d? d? d? d? d? d? d š d????? d? d? d? d? d? d? d? d? d? d? d? d? d š d? d? d? d? d? d? d? d? d? d? d? d? d? d š d?@ ? d? d? d@� d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@@T@@7@@)@ d@ d@ d@ d@ d@! d@" d@# d@$ d@% d@& d@' d@( d š d@* d@+ d@, d@- d@. d@/ d@0 d@1 d@2 d@3 d@4 d@5 d@6 d š d@8@F@9 d@: d@; d@< d@= d@> d@? d@@ d@A d@B d@C d@D d@E d š d@G d@H d@I d@J d@K d@L d@M d@N d@O d@P d@Q d@R d@S d š d@U@n@V@`@W d@X d@Y d@Z d@[ d@\ d@] d@^ d@_ d š d@a d@b d@c d@d d@e d@f d@g d@h d@i d@j d@k d@l d@m d š d@o@}@p d@q d@r d@s d@t d@u d@v d@w d@x d@y d@z d@{ d@| d š d@~ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@@@@@@@@@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@@@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@@ d@@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@@@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d@ d š d@A1@A@A@ d@ d@ d@ d@ d@ d@ dA� dA dA dA dA dA d š dA dA dA dA dA dA dA dA dA dA dA dA dA d š dAA#A dA dA dA dA dA dA dA dA dA dA dA! dA" d š dA$ dA% dA& dA' dA( dA) dA* dA+ dA, dA- dA. dA/ dA0 d š dA2AA dA3A4 dA5 dA6 dA7 dA8 dA9 dA: dA; dA< dA= dA> dA? dA@ d š dABAPAC dAD dAE dAF dAG dAH dAI dAJ dAK dAL dAM dAN dAO d š dAQ dAR dAS dAT dAU dAV dAW dAX dAY d š dA[BA\BA]AA^AA_A|A`AnAa dAb dAc dAd dAe dAf dAg dAh dAi dAj dAk dAl dAm d š dAo dAp dAq dAr dAs dAt dAu dAv dAw dAx dAy dAz dA{ d š dA} dA~ dA dA dA dA dA dA dA dA dA dA dA dA d š dAAAAA dA dA dA dA dA dA dA dA dA dA dA dA d š dA dA dA dA dA dA dA dA dA d š dAAA dA dA dA dA dA dA dA dA dA dA dA dA d š dA dA dA dA dA dA dA dA dA dA dA dA dA d š dAAAAAAA dA dA dA dA dA dA dA dA dA dA dA dA d š dA dA dA dA dA dA dA dA dA dA dA dA dA d š d dAA dA dA dA dA dA dA dA dA dA dA dA dA d dAB� dAA dA dA dA dA dA dA dA dA dA dA dA dA d š dBBB dB dB dB dB dB dB dB dB dB dB dB dB d š dB dB dB dB dB dB dB dB dB dB dB dB dB d š dBBBBLB B=B!B/B" dB# dB$ dB% dB& dB' dB( dB) dB* dB+ dB, dB- dB. d š dB0 dB1 dB2 dB3 dB4 dB5 dB6 dB7 dB8 dB9 dB: dB; dB< d š dB> dB? dB@ dBA dBB dBC dBD dBE dBF dBG dBH dBI dBJ dBK d š dBMBjBNB\BO dBP dBQ dBR dBS dBT dBU dBV dBW dBX dBY dBZ dB[ d š dB] dB^ dB_ dB` dBa dBb dBc dBd dBe dBf dBg dBh dBi d š dBkByBl dBm dBn dBo dBp dBq dBr dBs dBt dBu dBv dBw dBx d š dBz dB{ dB| dB} dB~ dB dB dB dB dB dB dB dB d š dBBBBBBB dB dB dB dB dB dB dB dB dB dB dB dB d š dB dB dB dB dB dB dB dB dB dB dB dB dB d š dBBB dB dB dB dB dB dB dB dB dB dB dB dB d š dB dB dB dB dB dB dB dB dB dB dB dB dB d š dBBBBB dB dB dB dB dB dB dB dB dB dB dB dB d š dB dB dB dB dB dB dB dB dB dB dB dB dB d dBBB dB dB dB dB dB dB dB dB dB dB dB dB d š dB dB dB dB dB dB dB dB dB dB dB dB dB d š dBCC�CiCC<CCCCC dC dC dC dC dC dC dC dC dC dC dC dC d š dC dC dC dC dC dC dC dC dC dC dC dC dC d š dC C.C! dC" dC# dC$ dC% dC& dC' dC( dC) dC* dC+ dC, dC- d š dC/ dC0 dC1 dC2 dC3 dC4 dC5 dC6 dC7 dC8 dC9 dC: dC; d š dC=CZC>CLC? dC@ dCA dCB dCC dCD dCE dCF dCG dCH dCI dCJ dCK d š dCM dCN dCO dCP dCQ dCR dCS dCT dCU dCV dCW dCX dCY d š dC[ dC\ dC] dC^ dC_ dC` dCa dCb dCc dCd dCe dCf dCg dCh d š dCjCCk dClCzCm dCn dCo dCp dCq dCr dCs dCt dCu dCv dCw dCx dCy d š dC{ dC| dC} dC~ dC dC dC dC dC dC dC dC dC d š dCC dCC dC dC dC dC dC dC dC dC dC dC dC dC d dCCC dC dC dC dC dC dC dC dC dC dC dC dC d š dC dC dC dC dC dC dC dC dC dC dC dC dC d E dCD%CCCCCCC dC dC dC dC dC dC dC dC dC dC dC dC d š dC dC dC dC dC d š dCCC dC dC dC dC dC dC dC dC dC dC dC dC d dC dC dC dC dC dC dC dC dC dC dC dC dC d š dCDCCC dC dC dC dC dC dC dC dC dC dC dC dC d dC dC dC dC dC dD� dD dD dD dD dD dD dD d š dD DD dD dD dD dD dD dD dD dD dD dD dD dD d š dD dD dD dD dD dD dD dD dD dD! dD" dD# dD$ d š dD&DSD'DDD(D6D) dD* dD+ dD, dD- dD. dD/ dD0 dD1 dD2 dD3 dD4 dD5 d š dD7 dD8 dD9 dD: dD; dD< dD= dD> dD? dD@ dDA dDB dDC d š dDE dDF dDG dDH dDI dDJ dDK dDL dDM dDN dDO dDP dDQ dDR d š dDTDmDUDcDV dDW dDX dDY dDZ dD[ dD\ dD] dD^ dD_ dD` dDa dDb d š dDd dDe dDf dDg dDh dDi dDj dDk dDl d š dDnD|Do dDp dDq dDr dDs dDt dDu dDv dDw dDx dDy dDz dD{ d š dD} dD~ dD dD dD dD dD dD dD dD dD dD dD d š dDH DF]DEnDDDDDDDDD dD dD dD dD dD dD dD dD dD dD dD dD d š dD dD dD dD dD dD dD dD dD dD dD dD dD d š dDDD dD dD dD dD dD dD dD dD dD dD dD dD d š dD dD dD dD dD dD dD dD dD dD dD dD dD d š dDDDDD dD dD dD dD dD dD dD dD dD dD dD dD d š dD dD dD dD dD dD dD dD dD dD dD dD dD d š dD dD dD dD dD dD dD dD dD dD dD dD dD dD d š dDE3DEDED dD dD dD dD dE� dE dE dE dE dE dE dE d š dE dE dE dE dE EE EE EE EE EE EE EE EE E š EEE%E dE dE dE dE dE dE dE dE dE! dE" dE# dE$ d š dE& dE' dE( dE) dE* dE+ dE, dE- dE. dE/ dE0 dE1 dE2 d š dE4EQE5ECE6 dE7 dE8 dE9 dE: dE; dE< dE= dE> dE? dE@ dEA dEB d š dED dEE dEF dEG dEH dEI dEJ dEK dEL dEM dEN dEO dEP d š dERE`ES dET dEU dEV dEW dEX dEY dEZ dE[ dE\ dE] dE^ dE_ d š dEa dEb dEc dEd dEe dEf dEg dEh dEi dEj dEk dEl dEm d š dEoEEpEEqEErEEs dEt dEu dEv dEw dEx dEy dEz dE{ dE| dE} dE~ dE d š dE dE dE dE dE dE dE dE dE dE dE dE dE d š dEEE dE dE dE dE dE dE dE dE dE dE dE dE d š dE dE dE dE dE dE dE dE dE dE dE dE dE d š dEEEEE dE dE dE dE dE dE dE dE dE dE dE dE d š dE dE dE dE dE dE dE dE dE dE dE dE dE d š dEEE dE dE dE dE dE dE dE dE dE dE dE dE d š dE dE dE dE dE dE dE dE dE dE dE dE dE d š dEF"EFEEE dE dE dE dE dE dE dE dE dE dE dE dE d š dE dE dE dE dE dE dE dE dF� dF dF dF dF d š dFFF dF dF dF dF dF dF dF dF dF dF dF dF d š dF dF dF dF dF dF dF dF dF dF dF dF dF! d š dF#F@F$F2F% dF& dF' dF( dF) dF* dF+ dF, dF- dF. dF/ dF0 dF1 d š dF3 dF4 dF5 dF6 dF7 dF8 dF9 dF: dF; dF< dF= dF> dF? d š dFAFOFB dFC dFD dFE dFF dFG dFH dFI dFJ dFK dFL dFM dFN d dFP dFQ dFR dFS dFT dFU dFV dFW dFX dFY dFZ dF[ dF\ d š dF^G-F_FF`FFaFpFb dFc dFd dFe dFf dFg dFh dFi dFj dFk dFl dFm dFn dFo d š dFqFFr dFs dFt dFu dFv dFw dFx dFy dFz dF{ dF| dF} dF~ d š dF dF dF dF dF dF dF dF dF dF dF dF dF d š dFFFFF dF dF dF dF dF dF dF dF dF dF dF dF d š dF dF dF dF dF dF dF dF dF dF dF dF dF d š dFFF dF dF dF dF dF dF dF dF dF dF dF dF d š dF dF dF dF dF dF dF dF dF dF dF dF dF d š dFFFFFFF dF dF dF dF dF dF dF dF d š dF dF dF dF dF dF dF dF dF dF dF dF dF d š dF dF dF dF dF dF dF dF dF dF dF dF dF dF d š dFGFGF dF dF dF dF dF dF dF dF dF dF dG� dG d š dG dG dG dG dG dG dG dG dG dG dG dG dG d š dGGG dG dG dG dG dG dG dG dG dG dG dG dG d š dG dG! dG" dG# dG$ dG% dG& dG' dG( dG) dG* dG+ dG, d š dG.GG/GjG0GMG1G?G2 dG3 dG4 dG5 dG6 dG7 dG8 dG9 dG: dG; dG< dG= dG> d š dG@ dGA dGB dGC dGD dGE dGF dGG dGH dGI dGJ dGK dGL d š dGNG\GO dGP dGQ dGR dGS dGT dGU dGV dGW dGX dGY dGZ dG[ d š dG] dG^ dG_ dG` dGa dGb dGc dGd dGe dGf dGg dGh dGi d š dGkGGlGzGm dGn dGo dGp dGq dGr dGs dGt dGu dGv dGw dGx dGy d š dG{ dG| dG} dG~ dG dG dG dG dG dG dG dG dG d dGGG dG dG dG dG dG dG dG dG dG dG dG dG d š dG dG dG dG dG dG dG dG dG dG dG dG dG d š dGGGGGGG dG dG dG dG dG dG dG dG dG dG dG dG d š dG dG dG dG dG dG dG dG dG dG dG dG dG d š dGGG dG dG dG dG dG dG dG dG dG dG dG dG d š dG dG dG dG dG dG dG dG dG d š dGG dGG dG dG dG dG dG dG dG dG dG dG dG dG d š dGGG dG dG dG dG dG dG dG dG dG dG dG dG d š dG dG dG dH� dH dH dH dH dH dH dH dH dH d š dH IH HH HxHHKHH(HHH dH dH dH dH dH dH dH dH dH dH dH dH d š dH dH dH! dH" dH# dH$ dH% dH& dH' d š dH)H7H* dH+ dH, dH- dH. dH/ dH0 dH1 dH2 dH3 dH4 dH5 dH6 d š dH8 dH9 dH: dH; dH< dH= dH> dH? dH@ dHA dHBHHHCHE šHD š (HFHG š  šHI š šHJ šHLH[ dHMHN dHO dHP dHQ dHR dHS dHT dHU dHV dHW dHX dHY dHZ d dH\HjH] dH^ dH_ dH` dHa dHb dHc dHd dHe dHf dHg dHh dHi d š dHk dHl dHm dHn dHo dHp dHq dHr dHs dHt dHu dHv dHw d š dHyHHzHH{ dH| dH} dH~ dH dH dH dH dH dH dH dH dH dH d dHHH dH dH dH dH dH dH dH dH dH dH dH dH d š dH dH dH dH dH dH dH dH dH dH dH dH dH d š dHHHHH dH dH dH dH dH dH dH dH dH dH dH dH d š dH dH dH dH dH dH dH dH dH dH dH dH dH d š dHHH dH dH dH dH dH dH dH dH dH dH dH dH d š dH dH dH dH dH dH dH dH dH dH dH dH dH d š dHIQHIHHHHH dH dH dH dH dH dH dH dH dH dH dH dH d š dH dH dH dH dH d š dHIH dH dH dH dH dI� dI dI dI dI dI dI dI d dI dI dI dI dI dI dI dI dI dI dI dI dI d š dII4II&I dI dI dI dI dI dI dI dI! dI" dI# dI$ dI% d š dI' dI( dI) dI* dI+ dI, dI- dI. dI/ dI0 dI1 dI2 dI3 d š dI5ICI6 dI7 dI8 dI9 dI: dI; dI< dI= dI> dI? dI@ dIA dIB d š dID dIE dIF dIG dIH dII dIJ dIK dIL dIM dIN dIO dIP d š dIRIISIlITIbIU dIV dIW dIX dIY dIZ dI[ dI\ dI] dI^ dI_ dI` dIa d dIc dId dIe dIf dIg dIh dIi dIj dIk d š dImI{In dIo dIp dIq dIr dIs dIt dIu dIv dIw dIx dIy dIz d š dI| dI} dI~ dI dI dI dI dI dI dI dI dI dI d dIIIII dI dI dI dI dI dI dI dI dI dI dI dI d š dI dI dI dI dI dI dI dI dI dI dI dI dI d š dIII dI dI dI dI dI dI dI dI dI dI dI dI d š dI dI dI dI dI dI dI dI dI dI dI dI dI d š dIJIJ+IIIIIII dI dI dI dI dI dI dI dI dI dI dI dI d š dI dI dI dI dI dI dI dI dI dI dI dI dI d š dI dI dI dI dI dI dI dI dI dI dI dI dI dI d š dIJIJ�I dI dI dI dI dI dI dI dI d š dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJJJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJ dJ dJ dJ! dJ" dJ# dJ$ dJ% dJ& dJ' dJ( dJ) dJ* d š dJ,JgJ-JJJ.J<J/ dJ0 dJ1 dJ2 dJ3 dJ4 dJ5 dJ6 dJ7 dJ8 dJ9 dJ: dJ; d š dJ= dJ> dJ? dJ@ dJA dJB dJC dJD dJE dJF dJG dJH dJI d š dJKJYJL dJM dJN dJO dJP dJQ dJR dJS dJT dJU dJV dJW dJX d dJZ dJ[ dJ\ dJ] dJ^ dJ_ dJ` dJa dJb dJc dJd dJe dJf d š dJhJJiJwJj dJk dJl dJm dJn dJo dJp dJq dJr dJs dJt dJu dJv d š dJx dJy dJz dJ{ dJ| dJ} dJ~ dJ dJ dJ dJ dJ dJ d š dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJK JJJJJJJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d dJJJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJJJJJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJJJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ dJ d š dJ dK� dK dK dK dK dK dK dK dK dK dK dK d dK K9KK*K dKKK dK dK dK dK dK dK dK dK dK dK dK d š dK dK dK dK! dK" dK# d dK$K% dK& dK' dK( dK) d š dK+ dK, dK- dK. dK/ dK0 dK1 dK2 dK3 dK4 dK5 dK6 dK7 dK8 d š dK:KWK;KIK< dK= dK> dK? dK@ dKA dKB dKC dKD dKE dKF dKG dKH d š dKJ dKK dKL dKM dKN dKO dKP dKQ dKR dKS dKT dKU dKV d š dKXKfKY dKZ dK[ dK\ dK] dK^ dK_ dK` dKa dKb dKc dKd dKe d š dKg dKh dKi dKj dKk dKl dKm dKn dKo dKp dKq dKr dKs d š dKuhKvgKwYTKxRKyOKzMSK{LiK|KK}KK~KKKK dK dK dK dK dK dK dK d š d dKK dK dK d š dKKKKK dK dK dK dK d š dK dK dK dK dK dK dK dK d š dKKK dK dK d š dK dK dK dK dK dK dK d š dKKKKKKK dK dK dK dK dK dK dK dK d š dK dK dK dK dK dK dK d š dK dK dK dK dK dK dK dK d š dKKKKK dK dK dK dK d š dK dK dK dK dK dK dK d š dKKK dK dK dK dK dK dK d š dK dK dK dK dK dK dK d š dKL1KL KKKKK dK dK dK dK dK dK dK dK d š dK dK dK dK dK d š dKLL� dL dL dL dL dL d š dL dL dL dL dL d š dL LLLL dL dL dL dL d š dL dL dL dL dL d š dLL&L dL dL dL dL dL! dL" dL# dL$ dL% d š dL' dL( dL) dL* dL+ dL, dL- dL. dL/ dL0 d š dL2LFL3L@L4L8L5 dL6 dL7 d š dL9 dL: dL; dL< dL= dL> dL? d š d dLALB dLC dLD dLE d š dLGLULHLLLI dLJ dLK d dLM dLN dLO dLP dLQ dLR dLS dLT d š dLVL^LW dLX dLY dLZ dL[ dL\ dL] d š dL_ dL` dLa dLb dLc dLd dLe dLf dLg dLh d dLjLLkLLlLLmLvLn dLo dLp dLq dLr dLs dLt dLu d š dLwLLx dLy dLz dL{ dL| dL} dL~ d š dL dL dL dL dL dL dL d š dLLLLL dL dL dL dL d š dL dL dL dL dL dL d š dL dL dL dL dL dL dL dL dL dL d š dLLLLLLL dL dL dL dL dL dL d š dL dL dL d š d dLL dL dL dL dL dL dL dL dL dL d š dLLLLL dL dL dL dL dL dL dL d š dL dL dL dL d š dLLL dL dL dL dL dL dL d š dL dL dL dL dL dL dL dL dL d š dLM$LMLLLLL dL dL dL dL dL dL dL d š dL dL dL dL dL dL dL d š dLLL dL dL dL dL dL dL d dL dL dM� d š dMMMM M dM dM dM dM dM dM d š dM dM dM dM dM dM dM d š dMMM dM dM dM dM dM dM d š dM dM dM dM dM! dM" dM# d š dM%M@M&M/M'M+M( dM) dM* d š dM, dM- dM. d š dM0M8M1 dM2 dM3 dM4 dM5 dM6 dM7 d š dM9 dM: dM; dM< dM= dM> dM? d š dMAMNMBMFMC dMD dME d š dMG dMH dMI dMJ dMK dML dMM d š dMO dMP dMQ dMR d š dMTN0MUMMVMMWMrMXMeMYM]MZ dM[ dM\ d š dM^ dM_ dM` dMa dMb dMc dMd d š dMfMjMg dMh dMi d š dMk dMl dMm dMn dMo dMp dMq d š dMsMMtMMu dMv dMw dMx dMy dMz dM{ dM| dM}MM~ š šMM š A šM dM dM dM dM dM dM d š dM dM dM dM dM dM dM dM d š dMMMMMMM dM dM d š dM dM dM dM dM dM dM d š dMMM dM dM dM dM dM dM d š dM dM dM dM dM dM d š dMMMMM dM dM dM dM dM dM d š dM dM dM d š dMMM dM dM d š dM dM dM dM dM dM dM d š dMNMMMMM dM dM dM dM dM dM dM d dMMM dM dM d š dM dM dM dM dM dM dM d š dMMMMM dM dM dM dM dM dM d š dM dM dM dM dM dM dM d š d dMM dM dM dM dM dM dN� d š dNNNNNN N dN dN dN dN dN dN d š dN dN dN d š dNNN dN dN dN dN dN dN d š dN dN dN d š dNN'N dN dN! dN" dN# dN$ dN% dN& d š dN(N,N) dN* dN+ d š dN- dN. dN/ d š dN1NN2NeN3NJN4NAN5N=N6 dN7 dN8 dN9 dN: dN; dN< d š dN> dN? dN@ d š dNBNFNC dND dNE d š dNG dNH dNI d š dNKNXNLNTNM dNN dNO dNP dNQ dNR dNS d š dNU dNV dNW d š dNYNaNZ dN[ dN\ dN] dN^ dN_ dN` d š dNb dNc dNd d š dNfNNgNxNhNpNi dNj dNk dNl dNm dNn dNo d š dNq dNr dNs dNt dNu dNv dNw d š dNyNNz dN{ dN| EN} EN~ EN EN E š EN dN dN dN dN dN dN d š dNNNNN dN dN dN dN dN dN d š dN dN dN d š dNNN dN dN d š dN dN dN dN dN dN dN d dNNNNNNN dN dN dN d š dNNN dN dN dN dN dN dN d š dN dN dN dN dN dN dN d š dNNNNN dN dN dN dN dN dN dN dN šN šN šN šNN šN šN šN šNN šN š šN š šNN š šNN šN šNNN > š > > šN dN dN d š dNNN dN dN dN dN dN dN d š dN dN dN dN dN dN dN d š dNONNNNN dN dN d š dN dN dN d š dN dN dO� dO d š dOOOO O dO dO dO dO dO dO d š dO dO dO dO dO dO dO d š dOOO dO dO d š dO dO dO d š dOPOPO OO!OTO"O=O#O,O$O(O% dO& dO' d š dO) dO* dO+ d š dO-O5O. dO/ dO0 dO1 dO2 dO3 dO4 d š dO6 dO7 dO8 dO9 dO: dO; dO< d š dO>OKO?OCO@ dOA dOB d š dOD dOE dOF dOG dOH dOI dOJ d š d šOLOM dON dOO dOP dOQ dOR dOS d š dOUOpOVO_ dOWOX dOY dOZ dO[ dO\ dO] dO^ d š dO`OhOa dOb dOc dOd dOe dOf dOg d š dOi dOj dOk dOl dOm dOn dOo d š dOqO~OrOvOs dOt dOu d š dOw dOx dOy dOz dO{ dO| dO} d š dOOO dO dO dO dO dO dO d š dO dO dO dO dO dO dO d š dOOOOOOOOO dO dO d š dO dO dO d š dOOO dO dO dO dO dO dO d š dO dO dO dO dO dO dO d š dOOOOO dO dO d š dO dO dO dO dO dO dO d š dOOO dO dO dO dO dO dO d š dO dO dO d š dOOOOOOO dO dO d š dO dO dO d š dOOO dO dO dO dO dO dO d š dO dO dO dO dO dO dO d š dOOOOO dO dO dO dO dO dO d š dO dO dO dO dO dO dO d š dOOO dO dO d š dO dO dO dO dO dP� dP d š dPPfPP7PP$PPPPP dP dP dP dP dP dP d š dP dP dP dP dP dP dP d š dPP P dP dP dP dP dP dP d š dP! dP" dP# d š dP%P.P&P*P' dP( dP) d š dP+ dP, dP- d š dP/ dP0 dP1 dP2 dP3 dP4 dP5 dP6 d š dP8PKP9PBP:P>P; dP< dP= d dP? dP@ dPA d š dPCPGPD dPE dPF d š dPH dPI dPJ d š dPLP]PMPUPN dPO dPP dPQ dPR dPS dPT d š dPV dPW dPX dPY dPZ dP[ dP\ d š dP^PbP_ dP` dPa d š dPc dPd dPe d š dPgPPhPPiPvPjPrPk dPl dPm dPn dPo dPp dPq d š dPs dPt dPu d š dPwPPx dPy dPz dP{ dP| dP} dP~ d š dP dP dP d dPPPPP dP dP d š dP dP dP dP dP dP dP d š dPPP dP dP d š dP dP dP dP dP dP dP d š dPPPPPPP dP dP dP dP dP dP d š dP dP dP dP dP dP dP d š dPPP dP dP dP dP dP dP d š dP dP dP dP dP dP dP d dPPPPP dP dP d š dP dP dP dP dP dP dP d š dPPP dP dP d š dP dP dP d š dPQPQJPQPPPPPPP dP dP dP dP dP dP d š dP dP dP d š dPPP dP dP dP dP dP dP d š dP dP dP dP dP dP dP d š dPQPQP dQ� dQ dQ dQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQQQ dQ dQ dQ dQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQ Q3Q!Q& dQ"Q# dQ$ dQ% d š dQ'Q/Q( dQ) dQ* dQ+ dQ, dQ- dQ. d š dQ0 dQ1 dQ2 d š dQ4QAQ5Q9Q6 dQ7 dQ8 d š dQ: dQ; dQ< dQ= dQ> dQ? dQ@ d š dQBQFQC dQD dQE d š dQG dQH dQI d š dQKQQLQkQMQ^QNQVQO dQP dQQ dQR dQS dQT dQU d š dQW dQX dQY dQZ dQ[ dQ\ dQ] d š dQ_QcQ` dQa dQb d š dQd dQe dQf dQg dQh dQi dQj d š dQlQuQmQqQn dQo dQp d š dQr dQs dQt d š dQvQ~Qw dQx dQy dQz dQ{ dQ| dQ} d š dQ dQ dQ d š dQQQQQQQ dQ dQ dQ dQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQQQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQQQQQ dQ dQ dQ d šQQ šQ š šQQ šQ š šQ (Q dQ dQ dQ dQ dQ dQ d dQ dQ dQ dQ dQ dQ dQ dQ d dQR5QQQQQQQQQ dQ dQ dQ dQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQQQ dQ dQ dQ dQ dQ dQ d š dQ dQ dQ d š dQQQQQ dQ dQ d š dQ dQ dQ dQ dQ dQ dQ d š dQQQ dQ dQ d š dQ dQ dQ d š dQRQR QRQ dQ dR� d š dR dR dR dR dR dR dR d š dR RR dR dR dR dR dR dR d š dR dR dR d š dRR$RR R dR dR dR dR dR dR d š dR! dR" dR# d dR%R-R& dR' dR( dR) dR* dR+ dR, d š dR. dR/ dR0 dR1 dR2 dR3 dR4 d š dR6RqR7RVR8RIR9RAR: dR; dR< dR= dR> dR? dR@ d š dRB dRC dRD dRE dRF dRG dRH d š dRJRRRK dRL dRM dRN dRO dRP dRQ d š dRS dRT dRU d š dRWRdRXR`RY dRZ dR[ dR\ dR] dR^ dR_ d š dRa dRb dRc d š dReRiRf dRg dRh d š dRj dRk dRl dRm dRn dRo dRp d š dRrRRsRRtRxRu dRv dRw d š dRy dRz dR{ dR| dR} dR~ dR d š dRRR dR dR dR dR dR dR d š dR dR dR d š dRR dRR dR dR dR dR dR dR d š dRRR dR dR d š dR dR dR dR dR dR dR d š dRVRT~RSRSRRRRRRRRR dR dR dR dR dR dR d š dR dR dR dR dR dR dR d š dRRR dR dR d š dR dR dR d š dRRRRR dR dR dR dR dR dR d š dR dR dR dR dR dR dR d š dRRR dR dR dR dR dR dR d š dR dR dR dR dR dR dR d š dRS�RRRRR dR dR d š dR dR dR dR dR dR dR d š dR dR dR dR dR dR dR dR d š dSS dSS dS dS dS dS dS dS d š dS SS dS dS dS dS dS dS d š dS dS dS dS dS dS dS d š dSS_SS<SS+SS#S dS! dS" d š dS$ dS% dS& dS' dS( dS) dS* d š dS,S4S- dS. dS/ dS0 dS1 dS2 dS3 d š dS5 dS6 dS7 dS8 dS9 dS: dS; d š dS=SNS>SFS? dS@ dSA dSB dSC dSD dSE d š dSG dSH dSI dSJ dSK dSL dSM d š dSOSWSP dSQ dSR dSS dST dSU dSV d š dSX dSY dSZ dS[ dS\ dS] dS^ d š dS`SSaSrSbSjSc dSd dSe dSf dSg dSh dSi d š dSk dSl dSm dSn dSo dSp dSq d š dSsS{St dSu dSv dSw dSx dSy dSz d š dS| dS} dS~ dS dS dS dS d š dSSSSS dS dS dS dS dS dS d š dS dS dS d š dSSS dS dS dS dS dS dS d dS dS dS d š dSTSSSSSS dSS dS dS dS d š dSSS dS dS dS dS dS dS d š dS dS dS dS dS dS dS d š dSSSSS dS dS dS dS dS dS d š dS dS dS dS dS dS dS d š dS dS dS dS dS dS dS dS d š dSSSSSSS dS dS d š dS dS dS dS dS dS dS d dSSS dS dS dS dS dS dS d š dS dS dS d š dSSSSS dS dS d š dS dS dS dS dS dS dS d š dSTT� dT dT dT dT dT dT d š dT dT dT dT dT dT dT d š dTTGTT4TT#TTT dT dT dT dT dT dT d š dT dT dT dT dT dT! dT" d š dT$T,T% dT& dT' dT( dT) dT* dT+ d dT- dT. dT/ dT0 dT1 dT2 dT3 d š dT5T>T6 dT7 dT8 dT9 dT: dT; dT< dT= d š d dT?T@ dTA dTB dTC dTD dTE dTF d š dTHT_TITVTJTNTK dTL dTM d š dTO dTP dTQ dTR dTS dTT dTU d š dTW dTX dTY dTZ dT[ dT\ dT] dT^ d š dT`TmTaTeTb dTc dTd d š dTf dTg dTh dTi dTj dTk dTl d š dTnTvTo dTp dTq dTr dTs dTt dTu d š dTw dTx dTy dTz dT{ dT| dT} d š dTUUTTTTTTTTTTT dT dT dT dT dT dT d š dT dT dT dT dT dT dT d š dTTT dT dT d š dT dT dT ET ET ET ET E š ET d dTT dT dT d š dTTTTTTT dT dT d š dT dT dT dT dT dT dT d š dTTT dT dT dT dT dT dT d š dT dT dT d š dTTTTT dT dT dT dT dT dT d š dT dT dT dT dT dT dT d š dTTT dT dT d š dT dT dT dT dT dT dT d š dTUTUTTTTT dT dT d š dT dT dT dT dT dT dT d š dTTT dT dT dT dT dT dT d š dT dT dT dT dU� dU dU d š dUUUU U dU dU d š dU dU dU dU dU dU dU d š dUUU dU dU dU dU dU dU d š dU dU dU d š dUU:U U1U!U)U" dU# dU$ dU% dU& dU' dU( d š dU* dU+ dU, dU- dU. dU/ dU0 d š d dU2U3 dU4 dU5 dU6 dU7 dU8 dU9 d š dU;UDU<U@U= dU> dU? d š dUA dUB dUC d š dUEUMUF dUG dUH dUI dUJ dUK dUL d š dUN dUO dUP dUQ dUR dUS dUT d š dUVUUWUUXUwUYUfUZUbU[ dU\ dU] dU^ dU_ dU` dUa d š dUc dUd dUe d š dUgUoUh dUi dUj dUk dUl dUm dUn d š dUp dUq dUr dUs dUt dUu dUv d š dUxUUyU}Uz dU{ dU| d š dU~ dU dU d š dUUU dU dU dU dU dU dU d š dU dU dU dU dU dU dU d š dUUUUUUU dU dU d š dU dU dU d dUUU dU dU d š dU dU dU d š dUUUUU dU dU dU dU dU dU d š dU dU dU d dUUU dU dU d dU dU dU d š dUUUUUUUUU dU dU d š dU dU dU d š dUUU dU dU d š dU dU dU d š dUUUUU dU dU dU dU dU dU d š dU dU dU d š dUUU dU dU d š dU dU dU d š dUUUUUUU dU dU d š dU dU dU d š dUUU dU dU d š dU dU dU d š dUVU dV� dV dV d š dV dV dV dV d š dV WV VV VrV V;V VVV dVV dV dV d š dVVV dV dV d š dV dV dV d š dVV.VV&V dV dV! dV" dV# dV$ dV% d š dV' dV( dV) dV* dV+ dV, dV- d š dV/V3V0 dV1 dV2 d š dV4 dV5 dV6 dV7 dV8 dV9 dV: d š dV<VWV=VJV>VBV? dV@ dVA d š dVC dVD dVE dVF dVG dVH dVI d š dVKVSVL dVM dVN dVO dVP dVQ dVR d š dVT dVU dVV d š dVXVeVYV]VZ dV[ dV\ d š dV^ dV_ dV` dVa dVb dVc dVd d š dVfVnVg dVh dVi dVj dVk dVl dVm d š dVo dVp dVq d š dVsVVtVVuVVvVVw dVx dVy dVz dV{ šV| šV} š šV~V šV š šV dV dV d š dVVV dV dV dV dV dV dV d š dV dV dV d š dVV šVV dV dV d š dVVV dV dV dV dV dV dV d š dV dV dV d š dVVVVVVV dV dV dV dV dV dV d š dV dV dV d š dVVV dV dV dV dV dV dV d š dV dV dV dV dV dV dV d š dVVVVV dV dV dV dV dV dV d š dV dV dV d š dVVV dV dV d š dV dV dV dV dV dV dV d š dVW8VW VVVV dVV dV dV dV dV dV dV d d dVV dV dV d š dVVV dV dV dV d š dVWV dV dV dV dV dV dW� d š dW dW dW dW dW dW dW d š dW W)W WW WW dW dW dW dW dW dW d š dW dW dW dW dW dW dW d š dWW!W dW dW d š dW" dW# dW$ dW% dW& dW' dW( d š dW*W/W+ dW, dW- dW. d š dW0 šW1 dW2 dW3 dW4 dW5 dW6 dW7 d š dW9WdW:WMW;WDW<W@W= dW> dW? d š dWA dWB dWC d š dWEWIWF dWG dWH d š dWJ dWK dWL d š dWNW[WOWSWP dWQ dWR d š dWT dWU dWV dWW dWX dWY dWZ d š dW\ dW] dW^ dW_ dW` dWa dWb dWc d š dWeWWfWsWgWkWh dWi dWj d š dWl dWm dWn dWo dWp dWq dWr d š dWtW|Wu dWv dWw dWx dWy dWz dW{ d š dW} dW~ dW dW dW dW dW d š dWWWWW dW dW dW dW dW dW d š dW dW dW d š dWWW dW dW d š dW dW dW d š dWXsWXWWWWWWW dW dW dW dW dW dW dW d š dWWW dW dW d dW dW dW d š dWWWWW dW dW d š dW dW dW dW dW dW dW d š dWWW dW dW dW dW dW dW d š dW dW dW dW dW dW dW d š dWWWW š dWWW dW dW dW dW dW dW d š dW dW dW dW dW dW dW d š dWWWWW dW dW dW dW dW dW d dW dW dW dW dW dW dW d š dWX�W dW dW dW dW dW dW d š dX dX dX dX dX dX dX d š dX X@X X)X XX XX dX dX dX dX dX dX d š dX dX dX dX dX dX dX d š dXX!X dX dX d š dX" dX# dX$ dX% dX& dX' dX( d š dX*X3 dX+X, dX- dX. dX/ dX0 dX1 dX2 d š dX4X8X5 dX6 dX7 d š dX9 dX: dX; dX< dX= dX> dX? d š dXAX\XBXOXCXGXD dXE dXF d š dXH dXI dXJ dXK dXL dXM dXN d š dXPXXXQ dXR dXS dXT dXU dXV dXW d š dXY dXZ dX[ d š dX]XjX^XfX_ dX` dXa dXb dXc dXd dXe d š dXg dXh dXi d š dXkXoXl dXm dXn d š dXp dXq dXr d dXtXXuXXvXXwXXxX|Xy dXz dX{ d š dX} dX~ dX dX dX dX dX d š dXXX dX dX d š dX dX dX d š dXXXXX dX dX d š dX dX dX d š dXXX dX dX dX dX dX dX d š dX dX dX d š dXXXXXXX dX dX d š dX dX dX dX dX dX dX d š dXXX dX dX dX dX dX dX d š dX dX dX d š dXXXXX dX dX d š dX dX dX dX dX dX dX d dXXX dX dX dX dX dX dX d š dX dX dX dX dX dX dX d š dXYXY�XXXXX dX dX dX dX dX dX d š dX dX dX dX dX dX dX d š dXXX dX dX dX dX dX dX d š dX dX dX d š dYY YYY dY dY d š dY dY dY d š dY YY dY dY d š dY dY dY dY dY dY dY d š dYY7YY&YYY dY dY d dY dY dY! dY" dY# dY$ dY% d š dY'Y/Y( dY) dY* dY+ dY, dY- dY. d š dY0 dY1 dY2 dY3 dY4 dY5 dY6 d š dY8YKY9Y=Y: dY; dY< d š dY> dY? dY@ dYA dYB dYC dYD dYE d šYFYGYI šYH BYJ š šYLYPYM dYN dYO d š dYQ dYR dYS d š dYU` YV\YWZYXZ+YYYYZYY[YnY\YeY]YaY^ dY_ dY` d š dYb dYc dYd d š dYfYjYg dYh dYi d š dYk dYl dYm d š dYoYxYpYtYq dYr dYs d š dYu dYv dYw d š dYyY}Yz dY{ dY| d š dY~ dY dY d š dYYYYYYY dY dY dY dY dY dY d dY dY dY dY dY dY dY d dYYY dY dY d š dY dY dY d š dYYYYY dY dY d š dY dY dY dY dY dY dY d š dYYY dY dY d š dY dY dY d š dYYYYYYYYY dY dY dY dY dY dY d š dY dY dY dY dY dY dY d š dYYY dY dY dY dY dY dY d š dY dY dY d š dYYYYY dY dY d š dY dY dY dY dY dY dY d š dY dY dY dY dY dY dY dY d š dYZ YYYYY dY dY dY dY dY dY d š dY dY dY dY dY dY dY d š dZ�ZZ dZ dZ dZ dZ dZ dZ d š dZ dZ dZ d š dZ ZZZZ dZ dZ d š dZ dZ dZ EZ EZ EZ EZ E š EZZ#Z dZ dZ dZ dZ dZ! dZ" d š dZ$ dZ% dZ& dZ' dZ( dZ) dZ* d š dZ,ZZ-Z\Z.ZEZ/Z<Z0Z8Z1 dZ2 dZ3 dZ4 dZ5 dZ6 dZ7 d š dZ9 dZ: dZ; d š dZ=ZAZ> dZ? dZ@ d š dZB dZC dZD d š dZFZOZG dZH dZI dZJ dZK dZL dZM dZN d š dZPZXZQ dZR dZS dZT dZU dZV dZW d š dZY dZZ dZ[ d š dZ]Z|Z^ZoZ_ZgZ` dZa dZb dZc dZd dZe dZf d š dZh dZi dZj dZk dZl dZm dZn d š dZpZtZq dZr dZs d dZu dZv dZw dZx dZy dZz dZ{ d š dZ}ZZ~ZZ dZ dZ d š dZ dZ dZ d š dZZZ dZ dZ dZ dZ dZ dZ d š dZ dZ dZ dZ dZ dZ dZ d š dZZZZZZZZZ dZ dZ dZ dZ dZ dZ d š dZ dZ dZ d š dZZZ dZ dZ d š dZ dZ dZ d š dZZZZZ dZ dZ d š dZ dZ dZ d š dZZZ dZ dZ dZ dZ dZ dZ d dZ dZ dZ dZ dZ dZ dZ d dZZZZZZZ dZ dZ dZ dZ dZ dZ d š dZ dZ dZ dZ dZ dZ dZ d š dZ dZ dZ dZ dZ dZ dZ dZ d š dZZZZZ dZ dZ d š dZ dZ dZ d š dZZZ dZ dZ d š dZ dZ dZ dZ dZ dZ dZ d š dZ[[�[w[[<[[![[[[ [ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d[ d[ d[ d[ d š d[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d š d["[/[#[+[$ d[% d[& d[' d[( d[) d[* d š d[, d[- d[. \ \[0[4[1 d[2 d[3 d š d[5 d[6 d[7 d[8 d[9 d[: d[; d š d[=[\[>[O[?[G[@ d[A d[B d[C d[D d[E d[F d š d[H d[I d[J d[K d[L d[M d[N d š d[P[X[Q d[R d[S d[T d[U d[V d[W d š d[Y d[Z d[[ d d[][j[^[f[_ d[` d[a d[b d[c d[d d[e d š d[g d[h d[i d š d[k[o[l d[m d[n d š d[p d[q d[r d[s d[t d[u d[v d š d[x[[y[[z[[{[[| d[} d[~ d š d[ d[ d[ d[ d[ d[ d[ d š d[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d š d[[[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d[ d[ d[ d[ d d[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d š d[[[[[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d š d[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d[ d[ d[ d[ d š d[[ d[[ d[ d[ d š d[[[ d[ d[ d š d[ d[ d[ d[ d[ d[ d[ d d[\Z[\[\[[[[[ d[ d[ d[ d[ d[ d[ d š d[ d[ d[ d[ d[ d[ d[ d š d[\�[ d[ d[ d š d\ d\ d\ d š d\\\\\ d\ d\ d\ d\ d\ d\ d š d\ d\ d\ d š d\\\ d\ d\ d š d\ d\ d\ d\ d\ d\ d\ d d\ \;\!\.\"\*\# d\$ d\% d\& d\' d\( d\) d š d\+ d\, d\- d š d\/\7\0 d\1 d\2 d\3 d\4 d\5 d\6 d š d\8 d\9 d\: d š d\<\M\=\E\> d\? d\@ d\A d\B d\C d\D d d\F d\G d\H d\I d\J d\K d\L d š d\N\R\O d\P d\Q d š d\S d\T d\U d\V d\W d\X d\Y d š d\[\\\\s\]\j\^\f\_ d\` d\a d\b d\c d\d d\e d š d\g d\h d\i d š d\k d\l d\m d\n d\o d\p d\q d\r d š d\t\y\u d\v d\w d\x d š d\z\~\{ d\| d\} d š d\ d\ d\ d\ d\ d\ d\ d š d\\\\\\\ d\ d\ d š d\ d\ d\ d š d\\\ d\ d\ d š d\ d\ d\ d\ d\ d\ d\ d š d\\\\\ d\ d\ d š d\ d\ d\ d š d\\\ d\ d\ d š d\ d\ d\ d\ d\ d\ d\ d d\^M\]\]\\\\\\\\\ d\ d\ d\ d\ d\ d\ d š d\ d\ d\ d\ d\ d\ d\ d\ d š\\ š\ š ( š\\\ d\ d\ d š d\ d\ d\ d š d\\\\\ d\ d\ d\ d\ d\ d\ d š d\ d\ d\ d š d\\\ d\ d\ d\ d\ d\ d\ d š d\ d\ d\ d\ d\ d\ d\ d š d\]\]\ d\ d\ d\ d\ d]� d] d] d š d d]] d] d] d š d] ]] ]] d] d] d š d] d] d] d š d]]] d] d] d š d] d] d] d š d]]S]]8]]/]]'] d]! d]" d]# d]$ d]% d]& d š d]( d]) d]* d]+ d], d]- d]. d š d]0]4]1 d]2 d]3 d š d]5 d]6 d]7 d š d]9]F]:]>]; d]< d]= d š d]? d]@ d]A d]B d]C d]D d]E d š d]G]K]H d]I d]J d š d]L d]M d]N d]O d]P d]Q d]R d d]T]s]U]f]V]^]W d]X d]Y d]Z d][ d]\ d]] d š d]_ d]` d]a d]b d]c d]d d]e d š d]g]k]h d]i d]j d š d]l d]m d]n d]o d]p d]q d]r d š d]t]y d]u]v d]w d]x d š d]z]]{ d]| d]} d]~ d] d] d] d š d] d] d] d] d] d] d] d š d]]]]]]]]]]] d] d] d d] d] d] d š d]]] d] d] d] d] d] d] d š d] d] d] d] d] d] d] d š d]] d]] d] d] d š d]]] d] d] d] d] d] d] d š d] d] d] d š d]]]]] d] d] d] d] d] d] d] d š d]]] d] d] d] d] d] d] d d] d] d] d] d] d] d] d š d]]]]] d] d] d š d] d] d] d š d]]] d] d] d] d] d] d] d š d] d] d] d š d]^]^]]]]] d] d] d] d] d] d] d š d] d] d] d š d]^^� d^ d^ d š d^ d^ d^ d š d^^^ ^ ^ d^ d^ d š d^ d^ d^ d d^ d^ d^ d^ d^ d^ d^ d^ d d^^6^^)^^!^ d^ d^ d š d^" d^# d^$ d^% d^& d^' d^( d š d^*^.^+ d^, d^- d š d^/ d^0 d^1 d^2 d^3 d^4 d^5 d š d^7^D^8^<^9 d^: d^; d š d^= d^> d^? d^@ d^A d^B d^C d š d^E^I^F d^G d^H d š d^J d^K d^L d š d^N_9^O^^P^^Q^p^R^c^S^[^T d^U d^V d^W d^X d^Y d^Z d š d^\ d^] d^^ d^_ d^` d^a d^b d š d^d^h^e d^f d^g d š d^i d^j d^k d^l d^m d^n d^o d š d^q^~^r^z^s d^t d^u d^v d^w d^x d^y d š d^{ d^| d^} d š d^^^ d^ d^ d^ d^ d^ d^ d š d^ d^ d^ d^ d^ d^ d^ d š d^^^^^^^ d^ d^ d š d^ d^ d^ d š d^^^ d^ d^ d^ d^ d^ d^ d š d^ d^ d^ d š d^^^^^ d^ d^ d^ d^ d^ d^ d š d^ d^ d^ d š d^^^ d^ d^ d^ d^ d^ d^ d š d^ d^ d^ d^ d^ d^ d^ d š d^_^^^^^^^ d^ d^ d š d^ d^ d^ d^ d^ d^ d^ d d^^^ d^ d^ d š d^ d^ d^ d^ d^ d^ d^ d š d^^^^^ d^ d^ d^ d^ d^ d^ d š d^ d^ d^ d^ d^ d^ d^ d š d^^^ d^ d^ d^ d^ d^ d^ d š d^ d_� d_ d š d____ __ _ d_ d_ d š d_ d_ d_ d š d___ d_ d_ d_ d_ d_ d_ d š d_ d_ d_ d_ d_ d_ d_ d š d__0_ _(_! d_" d_# d_$ d_% d_& d_' d š d_) d_* d_+ d_, d_- d_. d_/ d š d_1_5_2 d_3 d_4 d š d_6 d_7 d_8 d š d_:__;_z_<___=_N_>_F_? d_@ d_A d_B d_C d_D d_E d š d_G d_H d_I d_J d_K d_L d_M d š d_O_W_P d_Q d_R d_S d_T d_U d_V d š d_X d_Y d_Z d_[ d_\ d_] d_^ d š d_`_m_a_i_b d_c d_d d_e d_f d_g d_h d š d_j d_k d_l d š d_n_r_o d_p d_q d š d_s d_t d_u d_v d_w d_x d_y d š d_{__|__}__~ d_ d_ d š d_ d_ d_ d_ d_ d_ d_ d š d___ d_ d_ d š d_ d_ d_ d_ d_ d_ d_ d š d_____ d_ d_ d_ d_ d_ d_ d š d_ d_ d_ d_ d_ d_ d_ d š d___ d_ d_ d š d_ d_ d_ d š d_________ d_ d_ d_ d_ d_ d_ d š d_ d_ d_ d_ d_ d_ d_ d š d___ d_ d_ d š d_ d_ d_ d š d__ d__ d_ d_ d_ d_ d_ d_ d š d___ d_ d_ d_ d_ d_ d_ d š d_ d_ d_ d š d_`_____ d_ d_ d_ d_ d_ d_ d š d_ d_ d_ d š d___ d_ d_ d_ d_ d_ d_ d š d_ d_ d`� d š d```` ` d` d` d` d` d` d` d š d` d` d` d` d` d` d` d š d``` d` d` d š d` d` d` d` d` d` d` d š d`!c`"a`#``$``%`\`&`A`'`8`(`0`) d`* d`+ d`, d`- d`. d`/ d š d`1 d`2 d`3 d`4 d`5 d`6 d`7 d d`9`=`: d`; d`< d š d`> d`? d`@ d š d`B`O`C`G`D d`E d`F d š d`H d`I d`J d`K d`L d`M d`N d š d`P`X`Q d`R d`S d`T d`U d`V d`W d š d`Y d`Z d`[ d š d`]`t`^`k`_`g`` d`a d`b d`c d`d d`e d`f d š d`h d`i d`j d š d`l d`m d`n d`o d`p d`q d`r d`s d d`u``v`~`w d`x d`y d`z d`{ d`| d`} d š d` d` d` d` d` d` d` d š d``` d` d` d` d` d` d` d š d` d` d` d` d` d` d` d š d````````` d` d` d` d` d` d` d š d` d` d` d š d``` d` d` d š d` d` d` d` d` d` d` d š d````` d` d` d d` d` d` d š d š`` d` d` d š d``````` d` d` d` d` d` d` d š d` d` d` d š d``` d` d` d š d` d` d` d š d````` d` d` d` d` d` d` d š d` d` d` d š d``` d` d` d` d` d` d` d š d` d` d` d š d`aZ`a'`a `a`a` d` d` d` da� da da d š da da da d š d daa da da d da aaaa da da d š da da da da da da da d š daa#a da da da da da! da" d š da$ da% da& d š da(aGa)a:a*a2a+ da, da- da. da/ da0 da1 d š da3 da4 da5 da6 da7 da8 da9 d š da;aCa< da= da> da? da@ daA daB d š daD daE daF d š daHaQaIaMaJ daK daL d daN daO daP d š daR šaS daT daU daV daW daX daY d š da[aa\asa]aja^aba_ da` daa d š dac dad dae daf dag dah dai d š dakaoal dam dan d š dap daq dar d š dataauayav daw dax d š daz da{ da| da} da~ da da d š daaa da da da da da da d š da da da d š daaaaaaa da da da da da da d š da da da da da da da d š daaa da da d da da da d daaaaa da da da da da da d š da da da d š daaa da da da da da da d š da da da da da da da d š dabab:abaaaaaaa da da da da da da d š da da da da da da da d š d daa da da da da da da d daaaaa da da da da da da d š da da da d š daaa da da da da da da d š db� db db db db db db d dbb#b bb bb db db db db db db d š db db db d š dbbb db db db db db db d š db db! db" d š db$b5b%b-b& db' db( db) db* db+ db, d š db. db/ db0 db1 db2 db3 db4 d š db6 db7 db8 db9 d š db;brb<bSb=bF db>b? db@ dbA dbB dbC dbD dbE d š dbGbKbH dbI dbJ d š dbL dbM dbN dbO dbP dbQ dbR d š dbTbibUbabV dbW dbX dbY dbZ db[ db\ db] db^ b_ 8b` 8 bb dbc dbd dbe dbf dbg dbh d š dbjbnbk dbl dbm d š dbo dbp dbq d š dbsbbtbbub}bv dbw dbx dby dbz db{ db| d š db~ db db d š dbbb db db d š db db db d š dbbbbb db db db db db db d š db db db db db db db d š dbbb db db d š db db db db db db db d dbcbbbbbbbbb db db d š db db db db db db db d š dbbb db db d š db db db d š dbbbbb db db db db db db d š db db db db db db db d š dbbb db db db db db db d š db db db d š dbbbbbbb db db d š db db db d š dbbb db db db db db db d š db db db d š dbcbcb db db dc� dc dc dc d dc dc dc d š dc c c dc dc d š dc dc dc dc dc dc dc d š dccIcc2cc%cc!c dc dc dc dc dc dc d š dc" dc# dc$ d š dc&c.c' dc( dc) dc* dc+ dc, dc- d š dc/ dc0 dc1 d š dc3c<c4c8c5 dc6 dc7 d š dc9 dc: dc; d š dc=cEc> dc? dc@ dcA dcB dcC dcD d š dcF dcG dcH d š dcJcicKc\cLcTcM dcN dcO dcP dcQ dcR dcS d š dcU dcV dcW dcX dcY dcZ dc[ d dc]cec^ dc_ dc` dca dcb dcc dcd d dcf dcg dch d š dcjcwckcscl dcm dcn dco dcp dcq dcr d š dct dcu dcv d š dcxccy dcz dc{ dc| dc} dc~ dc d š dc dc dc d š dce4cdiccccccccccc dc dc dc dc dc dc d š dc dc dc dc dc dc dc d š dccc dc dc dc dc dc dc d š dc dc dc d š dccccc dc dc d š dc dc dc dc dc dc dc d š dccc dc dc dc dc dc dc d š dc dc dc dc dc dc dc d š dccccc dc dc dc dc dc dc dc d š dccc dc dc d š dc dc dc d š dccccc dc dc dc dc dc dc d š dc dc dc dc dc dc dc d š dccc dc dc dc dc dc dc d š dc dc dc d š dcd.cdcd dcc dd� dd d š dddd dd dd d š dd dd dd dd dd dd dd d š ddd!ddd dd dd dd dd dd dd d š dd dd dd dd dd dd dd d š dd"d*d# dd$ dd% dd& dd' dd( dd) d š dd+ dd, dd- d dd/dJd0d=d1d5d2 dd3 dd4 d š dd6 dd7 dd8 dd9 dd: dd; dd< d š dd>dFd? dd@ ddA ddB ddC ddD ddE d š ddG ddH ddI d š ddKdXdLdPdM ddN ddO d š ddQ ddR ddS ddT ddU ddV ddW d š ddYdadZ dd[ dd\ dd] dd^ dd_ dd` d š ddb ddc ddd dde ddf ddg ddh d š ddjddkddlddmdzdndvdo ddp ddq ddr dds ddt ddu d š ddw ddx ddy d š dd{dd| dd} dd~ d š dd dd dd dd dd dd dd d š dddddd dd dd d dd dd dd dd dd dd dd d š dddd dd dd dd dd dd dd d š dd dd dd dd dd dd dd d š dddddddd dd dd d š dd dd dd d š dddd dd dd d š dd dd dd dd dd dd dd d š dddd šd dd dd d š dddd dd dd d š dd dd dd dd dd dd dd d ddeddddddd dd dd dd dd dd dd d š dd dd dd d š dddd dd dd d š dd dd dd d š dddddd dd dd d š dd dd dd dd dd dd dd d š dddd dd dd d š dd dd de� de de de de d š deeeeee e de de d š de de de d š deee de de de de de de d š de de de d š dee/ee'e de! de" de# de$ de% de& d š de( de) de* de+ de, de- de. d š d de0e1 de2 de3 d š de5fe6ee7ene8eSe9eBe:e>e; de< de= d š de? de@ deA d š deCeKeD deE deF deG deH deI deJ d š deL deM deN deO deP deQ deR d š deTeaeUeYeV deW deX d š deZ de[ de\ de] de^ de_ de` d š debefec ded dee d š deg deh dei dej dek del dem d š deoeepe}eqeyer des det deu dev dew dex d š dez de{ de| d š de~ee de de d š de de de de de de de d š deeeee de de de de de de d š de de de de de de de d š deee de de de de de de d de de de d š deeeeeeeee de de d š de de de d š deee de de d š de de de de de de de d š deeeee de de de de de de d š de de de de de de de d š deee de de de de de de d š de de de d š defeeeee de de de de de de d š de de de de de de de d š deee de de de de de de d š de de df� d š dffff f df df df df df df d š df df df d š dfff df df df df df df d š df df df d š dffffUff:f f1f!f)f" df# df$ df% df& df' df( d š df* df+ df, df- df. df/ df0 d š df2f6f3 df4 df5 d š df7 df8 df9 d š df;fLf<fDf= df> df? df@ dfA dfB dfC d š dfE dfF dfG dfH dfI dfJ dfK d š dfMfQfN dfO dfP d š dfR dfS dfT d š dfVfufWfhfXf`fY dfZ df[ df\ df] df^ df_ d š dfa dfb dfc dfd dfe dff dfg d š dfifmfj dfk dfl d š dfn dfo dfp dfq dfr dfs dft d š dfvffwffx dfy dfz df{ df| df} df~ d š df df df df df df df d dfff df df df df df df d š df df df df df df df d š dfffffffff df df df df df df d š df df df df df df df d d šff df df d š dfffff df df df df df df d š df df df df df df df d dfff df df df df df df d š df df df d š dfffffff df df d š df df df df df df df d š dfff df df d š df df df df df df df d š dfffff df df df df df df d š df df df df df df df d š dfgg� dg dg dg dg dg dg d š dg dg dg dg dg dg dg d dghgggg4gg%ggggg dg dg dg dg d š dg dg dg d š d dg g! dg" dg# dg$ d š dg&g+ šg'g( dg) dg* d š dg,g0g- dg. dg/ d š dg1 dg2 dg3 d š dg5g~g6gug7g;g8 dg9 dg: d š dg< šg= šg> šg?g^g@gSgA šgB šgC š šgDgE š šgFgG š šgH šgI šgJ šgKgL šgM šgN šgO š šgP šgQgR š > šgT š šgUgV šgW šgX šgY šgZ šg[ šg\ š šg] š šg_ šg`ga šgbgi šgc šgdge š gfgg šgh š š šgj šgkglgqgm š gngo š gp šgr šgs šgt š > šgvgzgw dgx dgy d š dg{ dg| dg} d š dggggg dg dg d š dg dg dg d š dggg dg dg d š dg dg dg d š dggggggggg dg dg d š dg dg dg d š dggg dg dg d š dg dg dg d š dggg dg dg dg d š dggg dg dg d š dg dg dg d š dggggggg dg dg d š dg dg dg d š dggg dg dg d š dg dg dg d š dghg šg dg dg dg dg šg šg šg šghggggg šggggg š š š šg šg > šgggg šgg š š šggg š > šg šg šg š @'gggg šgg šg š š šg šgg š ggggg šgg š  šg šg š h� š šhhh š š h šh šhh h š šh šh š h šh šh š š šhh dh dh d š dhhLhh5hh"hh š dhhh dh dh d š dh dh dh! d š dh#h,h$h(h% dh& dh' d š dh) dh* dh+ d š dh-h1h. dh/ dh0 d š dh2 dh3 dh4 d š dh6hAh7h< šh8h9 dh: dh; d š dh= šh> dh? dh@ d š dhBhGhC šhD dhE dhF d š d šhHhI dhJ dhK d š dhMhhNhhOhhPhThQ dhR dhS d š dhU dhV dhW dhX dhY šhZ šh[ šh\ šh]hh^h}h_hnh`hdha š šhbhc š A šhehkhfhhhg š š hihj A š š Ahl šhm š 5R šhohuhp šhqhs šhr š ht š  hv šhwhzhxhy :h{h| š ( > Hh~hhhhhh š šh c @h šh š  hhhh šhh š EM  h šh š A šhhh šhhh š š hh 5 > A ,h š šhh š > š šh šhhhhh šhhh š A 5 >h šhh 5R  šhhhh šh  hh : EM hhhh  ( šh š hhh dh dh d š dh dh dh d š dhhhhh dh dh d š dh dh dh d d šhh dh dh d š dhhhhhhh dh dh d š dh dh dh d š dhhh dh dh d š dh dh dh d š dhhh dh dh dh d š dh šh dh dh d š dhihilhi-hihhhh šhh dh dh d š dhhh dh dh d š dh dh dh d š di�i dii di di d š dii i di di d š di di di d š diiiiiii di di d š di di di d š di ši di di d š dii(i i$i! di" di# d š di% di& di' d š di) ši* di+ di, d š di.iMi/i>i0i5 ši1i2 di3 di4 d š di6i:i7 di8 di9 d di; di< di= d š di?iHi@iDiA diB diC d š diE diF diG d š d iIiJ diK diL d š diNi]iOiXiPiTiQ diR diS d š diU diV diW d š diY šiZ di[ di\ d š di^ici_ ši` dia dib d š didihie dif dig d š dii dij dik d dimiqin dio dip d š dir disiitiy šiuiv diw dix d š dizi~i{ di| di} d š di di di d š d šii di di di d š diiiii di di d š diiii ši šii šii di di d š diii di di d š di di di d š diiiiiii di di d š di di di d š diii di di d š di di di d š diiiii di di d š di di di d di ši di di d š dijiiiiii šii di di d š diii di di d š di di di d š dii ii di di d š diii di di d š di di di d š diiiiiii di di d š di di di d š diii di di d š di di di d š diii di di di d š dj�jj dj dj d š dj dj dj d š dj jj jj š šj j dj dj d š djjjjj dj dj d š dj dj dj d dj šj dj dj d š dj j+j!j& šj"j# dj$ dj% d š d šj'j( dj) dj* d š dj,j5j-j1j. dj/ dj0 d š dj2 dj3 dj4 d š dj6j:j7 dj8 dj9 d š dj; dj< dj= d š dj? Rj@jA djB djC djD djE djF djGjHjImjJmjK djLmjM djNlNjOkjPkjQjjRjljSj^jTj]jUjY djVjW djX d l d djZj[ dj\ d m$ d H dj_jgj` djajdjb djc d H dje djf d H djh d djijj djk d l djmjjnj}jojs djpjq djr d l d djtju djv djw djx djy djz d dj{j| d $ dj~ djj djj dj dj dj djj $j $ djjjj $jj $j $j $ $ dj d $ dj d $ d djj dj djjj dj dj dj dj dj dj $j dj dj dj dj d $jj $ d $j dj dj dj dj d $ d dj Hjj dj dj d m4 djjjjjj djj dj dj d H djjj dj dj d m$ dj dj dj d l djjjjj dj dj d < dj dj dj d l djjj dj dj d l dj dj dj d H djjjj djj dj dj d H djjj dj dj d $ dj dj dj d l djjjjj dj dj d H dj dj dj d H djk j dj dj dj dj Hj Hjk Hjj Hj Hj Hj Hjkjk� Hj M Hkk H H 0k Hk H M Hkk Hk Hk H M Hk dk dk d l dkkCkk(kkkkk dk dk dk d m$ dk dk dk dk d H dkk#k dk dk! dk" d H d Hk$k% dk& dk' d l dk)k8k*k/ dk+k, dk- dk. d l dk0k4k1 dk2 dk3 d l dk5 dk6 dk7 d H dk9k> dk:k; dk< dk= d H d dk?k@ dkA dkB d l dkDkdkEkXkFkOkGkKkH dkI dkJ d l dkL dkM dkN d H dkPkTkQ dkR dkS d l dkU dkV dkW d l dkYk_kZk^k[ dk\ dk] d H d < d dk`ka dkb dkc d l dkekskfknkgkjkh dki d H dkk dkl dkm d l d dkokp dkq dkr d l dktky dkukv dkw dkx d H d dkzk{ dk| dk} dk~ dk H Hkk Hk Hk Hk Hk Hk Hk Hk Hk Hk Hk Hk Hkk H H klkkkkkkkkkkk dk dk d l dk dk dk d . d dkk dk dk d l dkkk dk dk dk d l dk dk dk dk d l dkkkkkk H dk dk dk d H d dkk dk dk d m$ dkkkkk dk dk d l dk dk dk d l dkkk dk dk d l dk dk dk d l dkkkkk d dkk dk dk d m4 dkkkkk dk dk d l dk dk dk d l dk dk dk dk d H dkkkkkkk dk dk d H dk dk dk d l dkkk dk dk d H dk dk dk d H dklkkk dk dk d H dk dl� dl d < d dll dl dl d l dl dl l+l ll ll ll dl dl d H dl dl dl d H d dll dl dl d H dll#lll dl dl d m4 dl dl! dl" d m$ dl$l'l% dl& d l dl( dl) dl* d l dl,l;l-l6l.l2l/ dl0 dl1 d H dl3 dl4 dl5 d m$ dl7 dl8 dl9 dl: d l dl<lEl=lAl> dl? dl@ d H dlB dlC dlD d H dlFlJlG dlH dlI d H dlK dlL dlM d H dlOmllPllQllRlplSlalTlYlU HlV dlW dlX d H dlZl^l[ dl\ dl] d H dl_ dl` d l dlblg dlcld dle dlf d H dlhllli dlj dlk d m4 dlm dln dlo d H dlql{ dlrlslwlt dlu dlv d H dlx dly dlz d H dl|l dl}l~ dl dl d H dlll dl dl d l dl dl dl d l dlllllll dl dl dl d H dl dl dl dl d H dlllll dl dl d H dl dl dl d H d dll dl dl d H dlllllll dl dl d < dl dl dl d l dll l dl dl dl d m4 dlllll dl dl d H dl dl dl d H d dll dl dl d H dlmlllllllll dl dl d H dl dl dl d H d dll dl dl d H dlllll dl dl d H dl dl dl d H dlll dl dl d l dl dl dl d m4 dlllllll dl dl d H dl dl dl d H dlll dl dl d H dl dl dl d H dm�m mmm dm dm d H dm dm dm d ! dm mm dm dm d H dm dm dm d H dmm-mmmm dmm dm dm d l d dmm dm d l dmm$m dm! dm" dm# d H dm%m)m& dm' dm( d H dm* dm+ dm, d H dm.m]m/m8m0m4m1 dm2 dm3 d H dm5 dm6 dm7 d m4 dm9 Hm: dm; dm< dm= dm> Hm? Hm@ HmA HmB HmC HmD HmE HmF HmG HmH HmImTmJmQmKmNmLmM H HmOmP H HmR HmS H HmUmZmVmXmW H HmY H  Hm[ Hm\ H  Hm^mcm_ dm` dma dmb d š dmdmhme dmf dmg d l dmi dmj dmk d l dmm dmnmmommpmmqmzmrmvms dmt dmu d H dmw dmx dmy d l dm{mm| dm} dm~ d m4 dm dm dm d H dmm dmm dm dm d H d dmm dm dm dm dm dm dm dm dm d &v dmmmmmmm dm dm d H dm dm dm dm dm dm dm dm dm d & dmmm dm dm d H dm dm dm d H dmmmmm dm dm d m$ dm dm dm d l dmmm dm dm d < dm dm dm d H dm dm dm dmmm dm dm d H dm dm dm d H d H dmm dm dmm dm dm dm dm dm dm dm dm dm dm d H dm d dmm dm d dm dmm dm dm dm d m4 dm dm dm dm dm dm dm dmwm~gm dm dmotm dm dmosmoam dm dmo`m dm dmo-mnn�n{nnrnnenn\nnXn dn dn dn d dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn dn! dn" dn# dn$ dn% dn& dn' dn( dn) dn* dn+ dn, dn- dn. dn/ dn0 dn1 dn2 dn3 dn4 dn5 dn6 dn7 dn8 dn9 dn: dn; dn< dn= dn> dn? dn@ dnA dnB dnC dnD dnE dnF dnG dnH dnI dnJ dnK dnL dnM dnN dnO dnP dnQ dnR dnS dnT dnU dnV dnW d $nY dnZ dn[ d l dn]nan^ dn_ dn` d l dnb dnc dnd d l dnfnk dngnh dni dnj d l dnlnnnm d l dno dnp dnq d H dns dntny dnunv dnw dnx d H d dnz l dn|nn}nn~nn dn dn dn d H dn dn dn dn d l dnnnnn dn d H dn dn dn d l dnnn dn dn d H dn dn dn d l dnnnnnnn dn dn d H dn dn dn d H dn Hn dn dn d l dn dnn H d H dnnnnnnnn dnn dn dn d H d H dnnnnn dn dn d < dn dn dn d H dnnn dn dn d H dn dn dn d l dnnnnnnn dn dn d H dn dn dn d H d dnn dn dn d < dnnnnn dn dn d l dn dn dn d < dnnn dn dn d H dn dn dn d H dnonnnnn dn dn dn d H dn dn dn dn d H dnonon dn do� d H do do do d H doo o do do d H do do do d H dooooooo do do d l do do do d H d doo do do d H doo$o do! do" do# d H do%o)o& do' do( d H do* do+ do, d H do. do/ do0oFo1o@o2o;o3o7o4 do5 do6 d l do8 do9 do: d l do< do= do> do? d l doA doB doC doD doE d H doGoVoHoQoIoMoJ doK doL d H doN doO doP d < doR doS doT doU d m4 doW doXo\oY doZ do[ d H do] do^ do_ d l d $ d m4oboc m4od m4oe m4 m4ofog m4oh m4oi m4oj m4ok m4ol m4om m4on m4oooqop m4 & m4or m4 m4 & l douvovsaowqzoxpuoypozoo{oo|oo}oo~ do do do do do do d H do do do do do do do do do do d H do do do do do do do do do do do d H dooooo do do do do do do do do do d H do do do do do do do do do do d l do do do do do do do do do do do d H dooooooo do do do do do do do do do d H do do do do do do do do do do d H do do do do do do do do do do do d l dooooo do do do do do d l do do do do do do do do do do d l do do do do do do dp� dp dp dp dp d H dpp7ppp dp pp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp d l dp dp!p,p" dp# dp$ dp% dp& dp' dp( dp) dp* dp+ d H dp- dp. dp/ dp0 dp1 dp2 dp3 dp4 dp5 dp6 d l dp8p\p9pPp:pEp; dp< dp= dp> dp? dp@ dpA dpB dpC dpD d H dpF dpG dpH dpI dpJ dpK dpL dpM dpN dpO d H dpQ dpR dpS dpT dpU dpV dpW dpX dpY dpZ dp[ d H dp]pip^ dp_ dp` dpa dpb dpc dpd dpe dpf dpg dph d H dpj dpk dpl dpm dpn dpo dpp dpq dpr dps dpt d H dpvppwppxppy dpzpp{ dp| dp} dp~ dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp d H dppppp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp d l dp dp dp dp dp dp dp dp dp dp dp d m4 dppppppp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp dp d H dppppp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp d H dp dp dp dp dp dp dp dp dp dp dp d H dpq<pq#q�qqq q dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq! dq" d H dq$q0 dq%q& dq' dq( dq) dq* dq+ dq, dq- dq. dq/ d l dq1 dq2 dq3 dq4 dq5 dq6 dq7 dq8 dq9 dq: dq; d H dq=qaq>qUq?qJq@ dqA dqB dqC dqD dqE dqF dqG dqH dqI d H dqK dqL dqM dqN dqO dqP dqQ dqR dqS dqT d H dqV dqW dqX dqY dqZ dq[ dq\ dq] dq^ dq_ dq` d H dqbqnqc dqd dqe dqf dqg dqh dqi dqj dqk dql dqm d H dqo dqp dqq dqr dqs dqt dqu dqv dqw dqx dqy d H dq{rqq|r�q}qq~qqqqqq dq d dqq dq dq d H dq dq dq dq dq dq dq dq dq dq d l dq dq dq dq dq dq dq dq dq dq dq d l dqqqqq dq dq dq dq dq dq dq dq dq d l dq dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq dq d l dqqqqqqq dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq dq d H dqq dqq dq dq dq dq dq dq dq dq dq d H dq dq dq dq dq dq dq dq dq dq dq d H drr?rr&rrrrr dr dr dr dr dr dr dr dr dr d H dr dr dr dr dr dr dr dr dr dr d H dr dr dr dr dr dr dr! dr" dr# dr$ dr% d H dr'r3 dr(r) dr* dr+ dr, dr- dr. dr/ dr0 dr1 dr2 d H dr4 dr5 dr6 dr7 dr8 dr9 dr: dr; dr< dr= dr> d H dr@rdrArXrBrMrC drD drE drF drG drH drI drJ drK drL d H drN drO drP drQ drR drS drT drU drV drW d H drY drZ dr[ dr\ dr] dr^ dr_ dr` dra drb drc d l d drerf drg drh dri drj drk drl drm drn dro drp d H drrrrsrrtrrur drvrw drx dry drz dr{ dr| dr} dr~ dr dr d H dr dr dr dr dr dr dr dr dr dr dr d H drrrrr dr dr dr dr dr dr dr dr dr d H dr dr dr dr dr dr dr dr dr dr d H dr dr dr dr dr dr dr dr dr dr dr d l drrrrrrr dr dr dr dr dr dr dr dr dr d l dr dr dr dr dr dr dr dr dr dr d l dr dr dr dr dr dr dr dr dr dr dr d H drr drr dr dr dr dr dr dr dr dr dr d H dr dr dr dr dr dr dr dr dr dr dr d l drs.rs rr drr dr dr dr dr dr dr dr dr dr d < dr ds� ds ds ds ds ds ds ds ds ds d H ds s"s ss ds ds ds ds ds ds ds ds ds d H ds ds ds ds ds ds ds ds ds ds! d H ds# ds$ ds% ds& ds' ds( ds) ds* ds+ ds, ds- d H ds/sHs0s< ds1s2 ds3 ds4 ds5 ds6 ds7 ds8 ds9 ds: ds; d m4 ds= ds> ds? ds@ dsA dsB dsC dsD dsE dsF dsG d H dsIsUsJ dsK dsL dsM dsN dsO dsP dsQ dsR dsS dsT d H dsV dsW dsX dsY dsZ ds[ ds\ ds] ds^ ds_ ds` d m4 dsbtsctBsdssessfssgs~shsssi dsj dsk dsl dsm dsn dso dsp dsq dsr d H dst dsu dsv dsw dsx dsy dsz ds{ ds| ds} d H ds ds ds ds ds ds ds ds ds ds ds d l dsssss ds ds ds ds ds ds ds ds ds d H ds ds ds ds ds ds ds ds ds ds d H ds ds ds ds ds ds ds ds ds ds ds d H dsss d dss ds ds ds ds ds ds ds ds ds d H dsssss ds ds ds ds ds ds ds ds ds d l ds ds ds ds ds ds ds ds ds ds d H ds ds ds ds ds ds ds ds ds ds ds d l dstsssss ds ds ds ds ds ds ds ds ds ds d H ds ds ds ds ds ds ds ds ds ds ds d l dst dss ds dt� dt dt dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt dt d H dtt5tt-tt"t dt dt dt dt dt dt dt dt dt! d l dt# dt$ dt% dt& dt' dt( dt) dt* dt+ dt, d H dt. dt/ dt0 dt1 dt2 dt3 dt4 d < d dt6t7 dt8 dt9 dt: dt; dt< dt= dt> dt? dt@ dtA d H dtCttDtvtEtRtF dtG dtH dtI dtJ dtK dtL dtM dtN dtO dtP dtQ d l dtStjtTt_tU dtV dtW dtX dtY dtZ dt[ dt\ dt] dt^ d m4 dt` dta dtb dtc dtd dte dtf dtg dth dti d H dtk dtl dtm dtn dto dtp dtq dtr dts dtt dtu d H dtwttxttyttz dt{ dt| dt} dt~ dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt dt d H dtt dtt dt dt dt dt dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt dt d H dttttt dt dt dt t t t t  m4 tt dtt dt dt dt dt dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt dt d H dtttt dtt dt dt dt dt dt dt dt dt dt d H dt dt dt dt dt dt dt dt dt dt dt d l d dtt dt dt dt dt dt dt dt dt dt dt d l du�uuuuu@uuuu duu du du du du du du du du du d H du du du du du du du du du du du d H duu4uu)u du du! du" du# du$ du% du& du' du( d l du* du+ du, du- du. du/ du0 du1 du2 du3 d H du5 du6 du7 du8 du9 du: du; du< du= du> du? d < duAuauBuYuCuNuD duE duF duG duH duI duJ duK duL duM d H duO duP duQ duR duS duT duU duV duW duX d l duZ du[ du\ du] du^ du_ du` d H dubuyucunud due duf dug duh dui duj duk dul dum d H duo dup duq dur dus dut duu duv duw dux d H duz du{ du| du} du~ du du du du du du d H duuuuuu duu du du du du du du du du du d H du du du du du du du du du du du d l duuuuu du du du du du du du du du d m4 du du du du du du du du du du d H du du du du du du du du du du du d l duuuuuuu du du du du du du du du du d H du du du du du du du du du du d H du du du du du du du du du du du d H d duu du du du du du du du du du du d H duvhuv+uvuvu du du du du dv� dv dv dv dv dv d l dv dv dv dv dv dv dv dv dv dv dv d l dvv dvv dv dv dv dv dv dv dv dv dv d H dv dv! dv" dv# dv$ dv% dv& dv' dv( dv) dv* d l dv,vDv- dv.v9v/ dv0 dv1 dv2 dv3 dv4 dv5 dv6 dv7 dv8 d H dv: dv; dv< dv= dv> dv? dv@ dvA dvB dvC d H dvEv\vFvQvG dvH dvI dvJ dvK dvL dvM dvN dvO dvP d H dvR dvS dvT dvU dvV dvW dvX dvY dvZ dv[ d H dv] dv^ dv_ dv` dva dvb dvc dvd dve dvf dvg d l dvivvjvvkvvlvwvm dvn dvo dvp dvq dvr dvs dvt dvu dvv d m4 dvx dvy dvz dv{ dv| dv} dv~ dv dv dv d H dv dv dv dv dv dv dv dv dv dv dv d < dv d dvv dv dv dv dv dv dv dv dv dv d H dvvvvv dv dv dv dv dv dv dv dv dv dv d < dv dv dv dv dv dv dv dv dv dv dv d H dv dv dv dv dv dv dv dv dv dv dv dv d H dvzvxvwvwBvwvvv dvvv dv dv dv dv dv dv dv dv dv d m4 dv dv dv dv dv dv dv dv dv dv d m4 dvvvvv dv dv dv dv dv dv dv dv dv d H dv dv dv dv dv dv dv dv dv dv d l dv dv dv dv dv dv dv dw� dw dw dw d H dwwww dww dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dw dw dw dw dw d H dww6w w+w! dw" dw# dw$ dw% dw& dw' dw( dw) dw* d H dw, dw- dw. dw/ dw0 dw1 dw2 dw3 dw4 dw5 d H dw7 dw8 dw9 dw: dw; dw< dw= dw> dw? dw@ dwA d l dwCwwDwdwEw\wFwQwG dwH dwI dwJ dwK dwL dwM dwN dwO dwP d H dwR dwS dwT dwU dwV dwW dwX dwY dwZ dw[ d & dw] dw^ dw_ dw` dwa dwb dwc d H dwew|wfwqwg dwh dwi dwj dwk dwl dwm dwn dwo dwp d l dwr dws dwt dwu dwv dww dwx dwy dwz dw{ d l dw} dw~ dw dw dw dw dw dw dw dw dw d l dwwwwwww dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dw dw dw dw dw d l d dww dw dw dw dw dw dw dw dw dw dw d H dwx8wxwwwwwww dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dw dw dw dw dw d < dwwwww dw dw dw dw dw dw dw dw dw d l dw dw dw dw dw dw dw dw dw dw d H dw dw dw dw dw dw dx� dx dx dx dx d H dxxxx dxx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx dx d H dx x, dx!x" dx# dx$ dx% dx& dx' dx( dx) dx* dx+ d H dx- dx. dx/ dx0 dx1 dx2 dx3 dx4 dx5 dx6 dx7 d H dx9xx:x^x;xRx<xGx= dx> dx? dx@ dxA dxB dxC dxD dxE dxF d l dxH dxI dxJ dxK dxL dxM dxN dxO dxP dxQ d H dxS dxT dxU dxV dxW dxX dxY dxZ dx[ dx\ dx] d H dx_xvx`xkxa dxb dxc dxd dxe dxf dxg dxh dxi dxj d l dxl dxm dxn dxo dxp dxq dxr dxs dxt dxu d H dxw dxx dxy dxz dx{ dx| dx} dx~ dx dx dx d H dxxxxxxx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx dx d l dxxx dx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx dx d H dxyxy4xyxxxxxxx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx d l dx dx dx dx dx dx dx dx dx dx dx d l dxx dxx dx dx dx dx dx dx dx dx dx d H dx dx dx dx dx dx dx dx dx dx dy� d l dyyyy dyy dy dy dy dy dy dy dy dy dy d l dy dy dy dy dy dy dy dy dy dy dy d H dyy( dyy dy dy dy! dy" dy# dy$ dy% dy& dy' d H dy) dy* dy+ dy, dy- dy. dy/ dy0 dy1 dy2 dy3 d l dy5ygy6yCy7 dy8 dy9 dy: dy; dy< dy= dy> dy? dy@ dyA dyB d l dyDy[yEyPyF dyG dyH dyI dyJ dyK dyL dyM dyN dyO d H dyQ dyR dyS dyT dyU dyV dyW dyX dyY dyZ d H dy\ dy] dy^ dy_ dy` dya dyb dyc dyd dye dyf d H dyhyyi dyjyuyk dyl dym dyn dyo dyp dyq dyr dys dyt d H dyv dyw dyx dyy dyz dy{ dy| dy} dy~ dy d H d dyy dy dy dy dy dy dy dy dy dy dy d H dyzyyyyyyyyy dy dy dy dy dy dy dy dy dy d m4 dy dy dy dy dy dy dy dy dy dy d H dy dy dy dy dy dy dy dy dy dy dy d l dyy dyy dy dy dy dy dy dy dy dy dy d l dy dy dy dy dy dy dy dy dy dy dy d m$ dyyyyyyy dy dy dy dy dy dy dy dy dy d l dy dy dy dy dy dy dy dy dy dy d l dy dy dy dy dy dy dy dy dy dy dy d H dyz yyy dy dy dy dy dy dy dy dy dy d m dz� dz dz dz dz dz dz dz dz dz d H dz dz dz dz dz dz dz dz dz dz dz d < dzz\zz8zz,zz%z dz dz dz dz dz dz! dz" dz# dz$ d l dz& dz' dz( dz) dz* dz+ d H dz- dz. dz/ dz0 dz1 dz2 dz3 dz4 dz5 dz6 dz7 d l dz9zPz:zEz; dz< dz= dz> dz? dz@ dzA dzB dzC dzD d H dzF dzG dzH dzI dzJ dzK dzL dzM dzN dzO d H dzQ dzR dzS dzT dzU dzV dzW dzX dzY dzZ dz[ d l dz]zz^zuz_zjz` dza dzb dzc dzd dze dzf dzg dzh dzi d < dzk dzl dzm dzn dzo dzp dzq dzr dzs dzt d & dzv dzw dzx dzy dzz dz{ dz| dz} dz~ dz dz d H d dzz dz dz dz dz dz dz dz dz dz dz d H dz|jz{~z{zzzzzz dzz dz dz dz dz dz dz dz dz dz d m4 dz dz dz dz dz dz dz dz dz dz dz d H dz dz dz dz dz dz dz dz dz dz dz dz d m$ dzzzzzzz dz dz dz dz dz dz dz dz dz d H dz dz dz dz dz dz dz dz dz dz d m4 dz dz dz dz dz dz dz dz dz dz dz d l dzzzzz dz dz dz dz dz dz dz dz dz d < dz dz dz dz dz dz dz dz dz dz d H dz dz dz dz dz dz dz dz dz d{� d{ d H d{{@{{{ d{{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d l d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d m$ d{{4{{){ d{ d{! d{" d{# d{$ d{% d{& d{' d{( d H d{* d{+ d{, d{- d{. d{/ d{0 d{1 d{2 d{3 d H d{5 d{6 d{7 d{8 d{9 d{: d{; d{< d{= d{> d{? d H d{A{e{B{Y{C{N{D d{E d{F d{G d{H d{I d{J d{K d{L d{M d l d{O d{P d{Q d{R d{S d{T d{U d{V d{W d{X d H d{Z d{[ d{\ d{] d{^ d{_ d{` d{a d{b d{c d{d d H d{f{r{g d{h d{i d{j d{k d{l d{m d{n d{o d{p d{q d H d{s d{t d{u d{v d{w d{x d{y d{z d{{ d{| d{} d l d{{{{{{{{ d{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{{ d{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{{{{ d{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{{ d{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d l d{|,{| {|�{{{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d{ d{ d{ d{ d{ d{ d{ d{ d{ d{ d H d| d| d| d| d| d| d| d| d| d| d| d H d| | ||| d| d| d| d| d| d m4 d| d| d| d| d| d| d| d| d| d| d l d|! d|" d|# d|$ d|% d|& d|' d|( d|) d|* d|+ d H d|-|Q|.|E|/|:|0 d|1 d|2 d|3 d|4 d|5 d|6 d|7 d|8 d|9 d H d|; d|< d|= d|> d|? d|@ d|A d|B d|C d|D d H d|F d|G d|H d|I d|J d|K d|L d|M d|N d|O d|P d l d|R|^|S d|T d|U d|V d|W d|X d|Y d|Z d|[ d|\ d|] d H d|_ d|` d|a d|b d|c d|d d|e d|f d|g d|h d|i d H d|k}a|l||m||n||o||p|{|q d|r d|s d|t d|u d|v d|w d|x d|y d|z d l d|| d|} d|~ d| d| d| d| d| d| d| d H d| d| d| d| d| d| d| d| d| d| d| d H d||||| d| d| d| d| d| d| d| d| d| d H d| d| d| d| d| d| d| d| d| d| d < d| d| d| d| d| d| d| d| d| d| d| d H d||||||| d| d| d| d| d| d| d H d| d| d| d| d| d| d| d| d| d| d l d| d| d| d| d| d| d| d| d| d| d| d l d||||| d| d| d| d| d| d| d| d| d| d H d| d| d| d| d| d| d| d| d| d| d H d| d| d| d| d| d| d| d| d| d| d| d H d|}:|}| d}�} } d} d} d} d} d} d} d} d} d} d m4 d} d} d} d} d} d} d} d} d} d} d l d}}.}}#} d} d} d} d} d} d} d} d}! d}" d H d}$ d}% d}& d}' d}( d}) d}* d}+ d}, d}- d H d}/ d}0 d}1 d}2 d}3 d}4 d}5 d}6 d}7 d}8 d}9 d H d};}T}<}H d}=}> d}? d}@ d}A d}B d}C d}D d}E d}F d}G d H d}I d}J d}K d}L d}M d}N d}O d}P d}Q d}R d}S d H d d}U}V d}W d}X d}Y d}Z d}[ d}\ d}] d}^ d}_ d}` d l d}b}}c}}d}}e}|}f}q}g d}h d}i d}j d}k d}l d}m d}n d}o d}p d H d}r d}s d}t d}u d}v d}w d}x d}y d}z d}{ d H d}} d}~ d} d} d} d} d} d} d} d} d} d l d}}}}} d} d} d} d} d} d} d} d} d} d m4 d} d} d} d} d} d} d} d} d} d} d H d} d} d} d} d} d} d} d} d} d} d} d H d}}}} d}} d} d} d} d} d} d} d} d} d} d l d} d} d} d} d} d} d} d} d} d} d} d H d}}} d} d} d} d} d} d} d} d} d} d} d H d} d} d} d} d} d} d} d} d} d} d} d H d}~)}~}}}}} d} d} d} d} d} d} d} d} d} d H d} d} d} d} d} d} d} d} d} d} d H d} d} d} d} d} d} d~� d~ d~ d~ d~ d H d~~~~~ d~ d~ d~ d~ d~ d~ d~ d~ d~ d l d~ d~ d~ d~ d~ d~ d~ d~ d~ d~ d H d~ d~ d~ d~! d~" d~# d~$ d~% d~& d~' d~( d l d~*~N~+~B~,~7~- d~. d~/ d~0 d~1 d~2 d~3 d~4 d~5 d~6 d m4 d~8 d~9 d~: d~; d~< d~= d~> d~? d~@ d~A d H d~C d~D d~E d~F d~G d~H d~I d~J d~K d~L d~M d H d~O~[~P d~Q d~R d~S d~T d~U d~V d~W d~X d~Y d~Z d H d~\ d~] d~^ d~_ d~` d~a d~b d~c d~d d~e d~f d H d~h~i~j~k~l~m~n d~o d~p d~q~r~s~t~u~v~~w~~x~~y~~z~~~{ d~| d~} d H d~ d~ d~ d H d d~~ d~ d~ d H d~~ d~~ d~ d~ d H d~~~ d~ d~ d H d~ d~ d~ d H d~~~~~~~ d~ d~ d H d~ d~ d~ d H d~~~ d~ d~ d H d~ d~ d~ d H d~~~~~ d~ d~ d H d~ d~ d~ d H d~~~ d~ d~ d H d~ d~ d~ d H d~~~~~~~~~ d~ d~ d H d~ d~ d~ d H d~~~ d~ d~ d H d~ d~ d~ d H d~~~~~ d~ d~ d H d~ d~ d~ d H d~~~ d~ d~ d H d~ d~ d~ d H d~~~~~~~ d~ d~ d H d~ d~ d~ d H d~ d~ d~ d~ d H d~~~~~ d~ d~ d H d~ d~ d~ d H d� d d d H d d d d H d X 1    d d d H d d d d H d d d d H d d d d H d( $! d" d# d H d% d& d' d H d)-* d+ d, d H d. d/ d0 d H d2E3<485 d6 d7 d H d9 d: d; d H d=A> d? d@ d H dB dC dD d H dFOGKH dI dJ d H dL dM dN d H dPTQ dR dS d H dU dV dW d H dY|Zi[`\ d] d^ d_ d H daeb dc dd d H df dg dh d H djskol dm dn d H dp dq dr d H dtxu dv dw d H dy dz d{ d H d}~ d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d. d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d� d H d  d d d H d d d d H d d  d d d H d d d H d d d d H d d d d d H d %! d" d# d$ d H d&*' d( d) d H d+ d, d- d H d/q0V1D2;374 d5 d6 d H d8 d9 d: d H d<@= d> d? d H dA dB dC d H dEMFJG dH dI d H dK dL d H dNRO dP dQ d H dS dT dU d H dWfXaY]Z d[ d\ d H d^ d_ d` d H d dbc dd de d H dgphli dj dk d H dm dn do d H d H drsty duv dw dx d H dz~{ d| d} d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d H d d d d H d d d d H d d d d H dR d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d H d d� d d H d d d d d H d/    d d d H d d d d H d d d d H d d d d H d&" d d! d H d# d$ d% d H d'+( d) d* d H d, d- d. d H d0C1:263 d4 d5 d H d7 d8 d9 d H d;?< d= d> d H d@ dA dB d H dDIE dF dG dH d H dJNK dL dM d H dO dP dQ d H dSTzUhV_W[X dY dZ d H d\ d] d^ d H d`da db dc d H de df dg d H dirjnk dl dm d H do dp dq d H dsvt du d H dw dx dy d H d{|} H d d~ d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d d d H d H d H d d d d H d d d d H dD d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d d H d d� d d H d d d d H d  d d d H d d d d H d d d d d H d-"! d d d H d d d d H d H d#,$(% d& d' d H d) d* d+ d H d H d.9/8041 d2 d3 d H d5 d6 d7 d H d H d:; H d<@= d> d? d H dA dB dC d H dEFeGZHQIMJ dK dL d H dN dO dP d H dRVS dT dU d H dW dX dY d H d[`\ d] d^ d_ d H da db dc dd d H dfygphli dj dk d H dm dn do d H dqur ds dt d H dv dw dx d H dz{| d} d~ d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d d d H d d d d d d H d H d H d d d d H d d d d H d d d d H d d d d H dQ H d d d d H d d d d H d d d d H d d d d H d d d d d H d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d� d d H d*  d d d H d d d d H d d d d H d d d d H d! d d d H d d d d H d"&# d$ d% d H d' d( d) d H d+>,5-1. d/ d0 d H d2 d3 d4 d H d6:7 d8 d9 d H d; d< d= d H d?H@DA dB dC d H dE dF dG d H dIMJ dK dL d H dN dO dP d H dRS H dT HUtVaW`X\Y dZ d[ d H d] d^ d_ d H d H dbkcgd de df d H dh di dj d H dlpm dn do d H dq dr ds d H duvw{x dy dz d H d| d} d~ d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d6 d d d H d d d d H d d d d H d d d d H d� d d d H d d d d H d  d d d H d d d d H d$ d d d H d d d d H d  d d d H d! d" d# d H d%-&*' d( d) d H d+ d, d H d.2/ d0 d1 d H d3 d4 d5 d H d7^8K9B:>; d< d= d H d? d@ dA d H dCGD dE dF d H dH dI dJ d H dLUMQN dO dP d H dR dS dT d H dVZW dX dY d H d[ d\ d] d H d_r`iaeb dc dd d H df dg dh d H djnk dl dm d H do dp dq d H ds|txu dv dw d H dy dz d{ d H d}~ d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d H d d d d H d d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d H d d d H d d d d H d d d H d d d d H d d d d H d d d d H d d d d d H d d d d H d d d d H d d d d H d d H d d d d H d d H d� d d d H d d d d H d H d     H d[5# d d d H d d d d H d d d d H d d! d" d H d$,%)& d' d( d H d* d+ d H d-1. d/ d0 d H d2 d3 d4 d H d6H7?8;9 d: d H d< d= d> d H d@DA dB dC d H dE dF dG d H dIRJNK dL dM d H dO dP dQ d H dSWT dU dV d H dX dY dZ d H d\~]l^c d_` da db d H ddhe df dg d H di dj dk d H dmvnro dp dq d H ds dt du d H dwzx dy d H d{ d| d} d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d H d d d d H d H d d d d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d H d d H d d d d H d� d d d H d   d d d H d d d d H d d d d H d d d d H d H d H d H d H d H d #!" H d H d$%`&E':(1)-* d+ d, d H d. d/ d0 d H d263 d4 d5 d H d7 d8 d9 d H d;D<@= d> d? d H dA dB dC d H d H dFYGPHLI dJ dK d H dM dN dO d H dQUR dS dT d H dV dW dX d H dZ_ d[\ d] d^ d H d H dabtckdge df d H dh di dj d H dlpm dn do d H dq dr ds d H du~vzw dx dy d H d{ d| d} d H d H d d d d d H d d d d H d d d H d d d H d d d d H d d d d H d d d d H d H d d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d H d d d d H d d d d H d d d H d d d d H d d d d H d d H d d d d H d d d d H d d d d H d d d d H d� d d d H d d d d H d   d d d H d d d d H d_:'  d d d H d d d d H d!%" d# d$ d H d& d H d(1)-* d+ d, d H d. d/ d0 d H d263 d4 d5 d H d7 d8 d9 d H d;N<E=A> d? d@ d H dB dC dD d H dFJG dH dI d H dK dL dM d H dOVPTQ dR dS d H dU d H dW[X dY dZ d H d\ d] d^ d H d`atbkcgd de df d H dh di dj d H dlpm dn do d H dq dr ds d H du~vzw dx dy d H d{ d| d} d H d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d d d d H d H d H d d d d d d H d d d d H d H d d d d H d d d d H d d d d H d d d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d H d� H d H dVR d d m d d m d d d d d d d d=2$ d d d m d  m m d m d m! m"# d m m d%.&) m'( m m d*, m+ m d- d m d/ d0 d1 d m d38 d45 d6 d7 d m d9 d: d; d< d m d>Q?H@DA dB dC d m dE dF dG d m dIMJ dK dL d m dN d mOP d m d m dS dT dU d m d dWX dY dZ d[ d\ d] d^ d_ d` da db dc dd de dfogkh di dj d m dl d dm dn m dp dqtr ds d m du dv d m dxyz+{|}~ d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d l d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d d d d d H d  d d d H d d d d d d d d d H d d d d d d d d d� d d d d H d d d d d d d d d H d! d d d d d d d d H d d d d d d d d d H d" d# d$ d% d& d' d( d) d* d H d,c-T.9/0 H d1 d2 d3 d4 d5 d6 d7 d8 d H d:G; d< d= d> d? d@ dA dB dC dD dE dF d H dH dI dJ dK dL dM dN dO dP dQ dR dS d H dU d dVW dX dY dZ d[ d\ d] d^ d_ d` da db d H ddexfkg dh di dj d H dl dm dn do dp dq dr ds dt du dv dw d H dyz d{ d| d} d~ d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d < d d d d d d d d d d d d d H d d d d d d d d d d H dO  H d d d d d d d d d H d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d H d d d d d d d d d H d d d d d d d d d d d d d l d d� d d d d d d d d d d d H d 1  m$ d d d d d d d d d H d$ d d d d d d d! d" d# d H d% d& d' d( d) d* d+ d, d- d. d/ d0 d H d2A384 d5 d6 d7 d < d9 d: d; d< d= d> d? d@ d H dB dC dD dE dF dG dH dI dJ dK dL dM dN d H dPQRiS\T dU dV dW dX dY dZ d[ d H d] d^ d_ d` da db dc dd de df dg dh d H djsk dl dm dn do dp dq dr d H dt du dv dw dx dy dz d{ d| d} d~ d d d d d d H d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d d H d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d d H dCS� d d d d d d d d d d d d d < d d d d d d d d d d d d d d H d4' d d! d" d# d$ d% d& d H d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d H d5B6 d7 d8 d9 d: d; d< d= d> d? d@ dA d H dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR d H dTUdV[W dX dY dZ d H d\ d] d^ d_ d` da db dc d H derf dg dh di dj dk dl dm dn do dp dq d H ds dt du dv dw dx dy dz d{ d| d} d~ d H d l d d d d d d d d d d d d d H d d d d d d d d d d d d d d H d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d H d d d d d d d d d d d d d d H d d d d d d d d d d d d d d H d d d d d d d d d H d d d d d d d d d d d� d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d5, d! d" d# d$ d% d& d' d( d) d* d+ d $ d- d. d/ d0 d1 d2 d3 d4 d H d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB d H dDEFxG]HPI dJ dK dL dM dN dO d H dQ dR dS dT dU dV dW dX dY dZ d[ d\ d H d^k_ d` da db dc dd de df dg dh di dj d H dl dm dn do dp dq dr ds dt du dv dw d H dyz{ d| d} d~ d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d m4 d d d d d d d d d H d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d d d d d H dM) d d d d d d� d d d H d d d d d d d d d d d d d H d d d d d d d d d d d H d d d d d! d" d# d$ d% d& d' d( d H d*A+4, d- d. d/ d0 d1 d2 d3 d H d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ d H dB dC dD dE dF dG dH dI dJ dK dL d H dNyO^PQ H dR dS dT dU dV dW dX dY dZ d[ d\ d] d H d_h` da db dc dd de df dg d H di dj dk dl dm dn do dp dq dr ds dt du dv dw dx d H dz{| d} d~ d d d d d d d d d d H d d d d d d d d d d d d d H d d d d d d d d d d H d d d d d d d d d d d d d d H H H H M H  0  M H H P H d d d d d d H dx�IK! d d d d d H d d d d d m$ d d d d d H d d d d d d  l  l l l l l l l l l l l l l l l l l l l l l� l l l l l l l l  d d d &v d d d d . d d d d d d d d d d d &v d d d d d m$ d"9#.$)% d& d' d( d l d* d+ d, d- d H d/40 d1 d2 d3 d H d5 d6 d7 d8 d . d:@ d;< d= d> d? d H dAFB dC dD dE d H dG dH dI dJ d H dL{MdNYOTP dQ dR dS d < dU dV dW dX d H dZ_[ d\ d] d^ d H d` da db dc d H depfkg dh di dj d H dl dm dn do d H dqvr ds dt du d H dw dx dy dz d H d|} d~ d d d d H d d d d d H d d d d d l d d d d d d l d d d d d d H d d d d H d d d d l d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d m4 d d d d d l d d d d d m$ d d d d d H d d d d d m4 d d d d d H d d d d d d H d d d d d H d d d d d H d* d� d d d < d d d d d l d  d d d d H d d d d d H d d d d d H d d d d d H d %! d" d# d$ d H d& d' d( d) d & d+=,7-2. d/ d0 d1 d H d3 d4 d5 d6 d H d8 d9 d: d; d< d l d d>?D@ dA dB dC d H dE dF dG dH d l dJKLqM_NTO d dPQ dR dS d l dUZV dW dX dY d H d[ d\ d] d^ d H d`fa db dc dd de d H dglh di dj dk d H dm dn do dp d H drs~tyu dv dw dx d H dz d{ d| d} d H d d d d d l d d d d d H d d d d d m4 d d d d d H d d d d d d H d d d d d H d d d d d l d d d d d d H d d d d d H d d d d d l d d d d d d l d d d d d l d d d d d H d d d d d H d d d d d l d d d d d < d d d d d l d d d d d l d d d d d l d>  d d d d H d d d d d H d� d d d d H d d d d d H d  d  d d d d &v d d d d d l d d d d d H d*$ d d! d" d# d $ d d%& d' d( d) d l d+3,.- d H d/ d0 d1 d2 d H d495 d6 d7 d8 d H d: d; d< d= d H d?i@WALBGC dD dE dF d l dH dI dJ dK d H dMRN dO dP dQ d H dS dT dU dV d H dX^Y dZ d[ d\ d] d H d_d` da db dc d l de df dg dh d H djklm dn do dp dq dr m$s m$t m$u m$v m$ m$wx m$y m$ m$z{ m$| m$} m$ m$~ m$ m$ � � � m$ d d d d l d d d d d d & d d d d d H d d d d d H d d d d d l d d d d d H dF d d d d & d d d d H d d d d d l d d d d d H d d d d d H d d d d d d l d d d d d d H d d d d d d l d d d d d l d d d d d H d d d d d H d d d d d H d  d d d d l d d d d d H d� d d d d H d d d d d m$ d   d d d d m$ d d d d d l d d d d d d H d4)$ d! d" d# d m4 d% d& d' d( d m$ d*/+ d, d- d. d l d0 d1 d2 d3 d l d5; d67 d8 d9 d: d H d<A= d> d? d@ d H dB dC dD dE d H dGHhIaJ[KVL dM dN dO dP d dQR dS dT dU d & dW dX dY dZ d H d d\] d^ d_ d` d &v d dbc dd de df dg d H diuj dkpl dm dn do d & dq dr ds dt d $ dvw|x dy dz d{ d H d} d~ d d d H d d d d d H d d d d d m$ d d d d d d d H d d d d d d H d d d d d m$ d d d d d d H d d d d d d H d d d d d H d d d d d H d d d d d l d d d d d l d_ d d d d H d d d d m$ d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d H d d� d d d d H d  d d d d & d d d d d m$ d:( d d d d H d d d d d H d# d d! d" d H d$ d% d& d' d H d)/ d*+ d, d- d. d H d051 d2 d3 d4 d l d6 d7 d8 d9 d H d;M<G=B> d? d@ dA d H dC dD dE dF d m4 dH dI dJ dK dL d m$ dNT dOP dQ dR dS d H dUZV dW dX dY d H d[ d\ d] d^ d H d`aboci dde df dg dh d l d djk dl dm dn d H dp{qvr ds dt du d H dw dx dy dz d l d d|} d~ d d d H d d d d d H d d d d d H d d d d d d H d d d d d H d d d d d m4 d d d d d H d d d d d m4 d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d d H d d d d d H d d d d d H dbb8!   d d d H d d d d H d d d d d H d d d d d m4 d d d d d H d"-#($ d% d& d' d l d) d* d+ d, d H d.3/ d0 d1 d2 d H d4 d5 d6 d7 d H d9K:@ d;< d= d> d? d l dAFB dC dD dE d H dG dH dI dJ d H dLWMRN dO dP dQ d H dS dT dU dV d m4 dX]Y dZ d[ d\ d l d^ d_ d` da d H dcd{epfkg dh di dj d l dl dm dn do d l dqvr ds dt du d H dw dx dy dz d l d|}~ d d d d . d d d d d m4 d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d & d d d d d H d d d d d l d d d d d H d d d d d & d d d d d H d d d d d H d d d d d d H d d d d d m$ d d d d d m$ d d d d d H d d d d d H d� d d d d m$ d d d d d H d d d d d l d d d d d l d d d d d d l d  d d d d l d d d d d m$ d8& d d d d d H d! d d d d H d" d# d$ d% d l d'- d() d* d+ d, d H d.3/ d0 d1 d2 d H d4 d5 d6 d7 d l d9K:@; d< d= d> d? d H dAFB dC dD dE d H dG dH dI dJ d & dLWMRN dO dP dQ d H dS dT dU dV d H dX]Y dZ d[ d\ d l d^ d_ d` da d H dc+defgvhqimj dk dl d l dn do dp d l dr ds dt du d H dw|x dy dz d{ d . d} d~ d d d l d d d d d l d d d d d l d d d d d H d d d d d H d d d d d < d d d d d l d d d d d d < d d d d d H d d d d d H d d d d d l d d d d d l d d d d d d d d d d &v d d d &v d d d d d &v d d d d d l d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d� d l d  d d d d < d d d d d H d d d d d l d d d d d H d d d d d d H d!&" d# d$ d% d l d' d( d) d* d H d,|-R.@/:051 d2 d3 d4 d H d6 d7 d8 d9 d l d d;< d= d> d? d H dAG dBC dD dE dF d H dHMI dJ dK dL d m4 dN dO dP dQ d H dSeT_UZV dW dX dY d H d[ d\ d] d^ d H d` da db dc dd d l dfqglh di dj dk d < dm dn do dp d H drws dt du dv d l dx dy dz d{ d l d}~ d d d d l d d d d d H d d d d d d < d d d d d H d d d d d l d d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d l d d d d d m$ d d d d d l d d d d d l dn d d d d d < d d d d d l d d d d d d H d d d d d H d d d d d H d d d d d m4 d d d d d H d d d� d d m$ d d d d d l d  d d d d H d d d d d H d d d d d H d d d d d H dI 7!,"'# d$ d% d& d m4 d( d) d* d+ d H d-2. d/ d0 d1 d . d3 d4 d5 d6 d H d8C9>: d; d< d= d $ d? d@ dA dB d &v dD dE dF dG dH d l dJ\KQ dLM dN dO dP d l dRWS dT dU dV d H dX dY dZ d[ d &v d]c^ d_ d` da db d H ddie df dg dh d & dj dk dl dm d H dopqrxs dt du dv dw d < dy~z d{ d| d} d l d d d d d H d d d d d H d d d d d < d d d d d l d d d d d m$ d d d d d H d d d d d < d d d d d d H d d d d d m$ d d d d d H d d d d d d H d d d d d m4 d d d d d < d d d d d d d d d d & d d d d d &v d d d d d H d d d d d H d d d d d l d d d d d H d d d d d d H d d d d� d l d  d d d d H d d d d d l d d d d d d H dsI2'" d d d l d d d! d l d# d$ d% d& d l d(-) d* d+ d, d H d. d/ d0 d1 d H d3>495 d6 d7 d8 d H d: d; d< d= d H d?D@ dA dB dC d l dE dF dG dH d l dJaKVLQM dN dO dP d & dR dS dT dU d l dW\X dY dZ d[ d H d] d^ d_ d` d H dbh dcd de df dg d l dinj dk dl dm d l do dp dq dr d m$ dtuv| dwx dy dz d{ d H d}~ d d d d l d d d d d m$ d d d d d d l d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d m$ d d d d d d l d d d d d &v d d d d d m$ d d d d d l d d d d d l d d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d . d d d d d H d d d� d d H d d d d d H d  d d d d H d d d d d m$ d d d d d H d d d d d H dI 7!,"'# d$ d% d& d H d( d) d* d+ d l d-2. d/ d0 d1 d H d3 d4 d5 d6 d H d8C9>: d; d< d= d H d? d@ dA dB d l d dDE dF dG dH d H dJaKVLQM dN dO dP d l dR dS dT dU d &v dW\X dY dZ d[ d H d] d^ d_ d` d l dbmchd de df dg d H di dj dk dl d H dnso dp dq dr d H dt du dv dw d H dyzI{|5}~ d d d H d d d d H d d d d d H d d d d d H d d d d d l d d d d d d m$ d d d d d H d d d d d & d d d d d H d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d l d d d d d m$ d d d d d d H d d d d d H d d d d d l d d d d� d l d d d d d l d  d d d d < d d d d d & d d d d d H d d d d d l d* %! d" d# d$ d l d& d' d( d) d l d+0, d- d. d/ d l d1 d2 d3 d4 d l d67j8S9H:C;?< d= d> d H d@ dA dB d l dD dE dF dG d H dINJ dK dL dM d H dO dP dQ dR d H dT_UZV dW dX dY d m$ d[ d\ d] d^ d H d`ea db dc dd d . df dg dh di d m$ dk}lr dmn do dp dq d H dsxt du dv dw d l dy dz d{ d| d H d~ d d d d d d m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 & m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 & d d d d H d d d d d &v d d d d d l d d d d d H d d d d d l d d d d d H d d d d d d l d d d d d l d d d d d l d d d d H d d d d d l d d d d d d H d d d d d d m$ d d d d d H dE  d d d d m$ d d d d d H d� d d d d H d d d d d H d   d d d d H d d d d d m$ d d d d d d l d.# d d d! d" d m4 d$)% d& d' d( d H d* d+ d, d- d l d/:051 d2 d3 d4 d H d6 d7 d8 d9 d l d;@< d= d> d? d H dA dB dC dD d m$ dFpGYHN dIJ dK dL dM d H dOTP dQ dR dS d l dU dV dW dX d H dZe[`\ d] d^ d_ d H da db dc dd d l dfkg dh di dj d l dl dm dn do d l dqr}sxt du dv dw d H dy dz d{ d| d H d~ d d d d H d d d d d H d d d d d H d d d d d m$ d d d d d l d d d d d < d d d d d l d d d d d H d d d d d H d d d d d & d d d d d H d d d d d l d d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d d H d d d d d d d d d d & d d d & d d d d d H d$� d d d d d H d  d d d d H d d d d d l d d d d d m4 d d d d d l d d d! d" d# d m$ d%7&, d'( d) d* d+ d H d-2. d/ d0 d1 d m$ d3 d4 d5 d6 d H d8C9>: d; d< d= d H d? d@ dA dB d l dD dE dF dG dH d H dJKLM{NdO^PYQUR dS dT d H dV dW dX d l dZ d[ d\ d] d H d d_` da db dc d H depfkg dh di dj d H dl dm dn do d H dqvr ds dt du d m4 dw dx dy dz d m$ d|} d d~ d d d d < d d d d d m4 d d d d d l d d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d d d H d d d d d d l d d d d d H d d d d d & d d d d d l d d d d d m$ d d d d d d H d5 d d d d H d d d d d m4 d d d d d H d d d d d H d� d d d d H d d d d d l d d d d d d H d  d d d d H d d d d d H d d d d d H d d d d d H d* %! d" d# d$ d m4 d& d' d( d) d l d+0, d- d. d/ d H d1 d2 d3 d4 d H d6[7N8C9>: d; d< d= d l d? d@ dA dB d l dDIE dF dG dH d H dJ dK dL dM d H dOU dPQ dR dS dT d l dV dW dX dY dZ d l d\s]h^c_ d` da db d l dd de df dg d H dinj dk dl dm d l do dp dq dr d m$ dtuzv dw dx dy d H d{ d| d} d~ d H d d d d d l d d d d d H d& d d d d l d d d d d H d d d d d m4 d d d d d H d d d d d H d d d d d < d d d d d d H d d d d d d H d d d d d m$ d d d d d H d d d d d d H d d d d d l d d d d d H d d d d d d H d d d d d l d d d d d d H d d d d d d H d d d d d m4 d� d d d d l d  d d d d H d d d d d H d d d d d H d d d d d H d! d d d d H d" d# d$ d% d H d'(o)6*0+ d, d- d. d/ d l d d12 d3 d4 d5 d l d7d8_9 d: d; d< d= d>P l?@ l lAB lC lD lE lF l lGH l lIJ lKML l l NO  l l Q lR lS lT lU lV lW lX l lYZ l l[\ l l]^ l  l` da db dc d H dejf dg dh di d l dk dl dm dn d H dpq|rws dt du dv d & dx dy dz d{ d H d d}~ d d d d m$ d d d d d . d d d d d l d d d d d H d d d d d H d d d d d d l d d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d H d d d d d l dCC  d d d m4 d d d d H d d d d d H d� d d d d H d d d d d H d  d d š d d d d d l d d d d d H d,! d d d d d H d"'# d$ d% d& d H d( d) d* d+ d H d-8.3/ d0 d1 d2 d l d4 d5 d6 d7 d H d9>: d; d< d= d H d? d@ dA dB d H dDiEWFQGLH dI dJ dK d l dM dN dO dP d H d dRS dT dU dV d H dX^ dYZ d[ d\ d] d H d_d` da db dc d l de df dg dh d l dj|kq dlm dn do dp d l drws dt du dv d m4 dx dy dz d{ d l d}~ d d d d H d d d d d l d d d d d H d d d d d m$ d d d d d & d d d d d l d d d d d H d d d d d H d d d d d . d d d d d l d d d d d H d d d d d m$ d d d d d m$ d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d l d d d H d H d d d d� d l d d d d d d H d d  d d d d l d d d d d H d d d d d H d1&! d d d d H d" d# d$ d% d m$ d',( d) d* d+ d H d- d. d/ d0 d l d28 d34 d5 d6 d7 d l d9>: d; d< d= d l d? d@ dA dB d H dDEFtGbHWIRJNK dL dM d H dO dP dQ d H dS dT dU dV d H dX]Y dZ d[ d\ d H d^ d_ d` da d H dcid de df dg dh d H djok dl dm dn d H dp dq dr ds d H duvw|x dy dz d{ d m4 d} d~ d d d H d d d d d d d d d d d &v d d d d d H d d d d d d H d d d d d l d d d d d H d d d d d l d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d H d d d d d m$ d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H dO�*  d d d d l d d d d d l d d d d d H d d d d d H d$ d d d d H d d! d" d# d H d d%& d' d( d) d H d+=,7-2. d/ d0 d1 d H d3 d4 d5 d6 d H d8 d9 d: d; d< d H d>I?D@ dA dB dC d l dE dF dG dH d H dJ dK dL dM dN d H dPzQcRX dST dU dV dW d < dY^Z d[ d\ d] d H d_ d` da db d H ddoejf dg dh di d l dk dl dm dn d H dpuq dr ds dt d l dv dw dx dy d H d{|}~ d d d d l d d d d d l d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H dRG"� d d d d d d d d d d d d d d d d $ d d $ d $ d $ d d $ d $ d $ d d $ d $ d $ d d d d d d d d d d d d $ d $ d d $ d $ d $ d d $ d d $ d d d d d d d d d d d d d $ d d d d & d d d d d H d  d d d d H d d d d d H d d d d d H d d d d d l d d d d d! d H d#5$/%*& d' d( d) d H d+ d, d- d. d l d d01 d2 d3 d4 d H d6A7<8 d9 d: d; d m$ d= d> d? d@ d &v d dBC dD dE dF d m$ dHwI`JUKPL dM dN dO d l dQ dR dS dT d H dV[W dX dY dZ d H d\ d] d^ d_ d l dalbgc dd de df d < dh di dj dk d H dmrn do dp dq d H ds dt du dv d H dxyz{ d| d} d~ d H d d d d d H d d d d d H d d d d d l d d d d d d d d d & & d d d d & & d d d d d < d d d d d H d d d d d H d d d d d H d d d d d . d d d d d H d d d d d H d d d d d d H d d d d d d H d d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d d H d( d d d� d H d d d d d H d  d d d d H d d d d d H d d d d d l d d d d d l d# d d! d" d H d$ d% d& d' d H d)@*5+0, d- d. d/ d H d1 d2 d3 d4 d H d6;7 d8 d9 d: d H d< d= d> d? d & dALBGC dD dE dF d l dH dI dJ dK d & dM dN dO dP dQ d H dSTUVqWfXaY]Z d[ d\ d & d^ d_ d` d m4 db dc dd de d H dglh di dj dk d H dm dn do dp d H drxs dt du dv dw d H dy~z d{ d| d} d H d d d d d H d d d d d d . d d d d d d H d d d d d d H d d d d d H d d d d d l d d d d d m4 d d d d d l d d d d d H d d d d d H d d d d d m4 d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d m$ d d d d d H d d d d d < d d d� d d l d[$ d d d d d l d  d d d d H d d d d d H d d d d d d l d d d! d" d# d l d%2&,' d( d) d* d+ d H d- d. d/ d0 d1 d H d3P495 d6 d7 d8 d &v d: d; d< d= d> d? m$@ m$A m$B m$C m$D m$E m$F m$G m$H m$I m$J m$ m$KLN m$M V &O m$ & mQVR dS dT dU d H dW dX dY dZ d H d\]t^i_d` da db dc d H de df dg dh d H djok dl dm dn d H dp dq dr ds d H duv{w dx dy dz d H d| d} d~ d d H d d d d d l d d d d d H d d d d d d . d d d d d d m4 d d d d d H d d d d d H d d d d d l d d d d d H d\y(i  d d d H d d d d H d d d d d H d d d d d m4 d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d d H d d d d d d l d d d d d l d d d d d H d� d d d d l d d d d d H d : #  d d d d l d d d d d m$ d d d d d l d d d! d" d l d$/%*& d' d( d) d & d+ d, d- d. d H d051 d2 d3 d4 d H d6 d7 d8 d9 d H d;R<G=B> d? d@ dA d l dC dD dE dF d l dHMI dJ dK dL d H dN dO dP dQ d H dS^TYU dV dW dX d H dZ d[ d\ d] d l d_d` da db dc d H de df dg dh d H djklm|nwosp dq dr d H dt du dv d H dx dy dz d{ d l d}~ d d d d H d d d d d m$ d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d l d d d d d l d d d d d H d d d d d H d d d d d l d d d d d d H d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d m4 d d d d d� d d d d d d $ d  d d d d H d d d d d H d d d d d . d d d d d H d# d d! d" d l d$ d% d& d' d l d)*+T,B-<.7/30 d1 d2 d m4 d4 d5 d6 d m$ d8 d9 d: d; d l d d=> d? d@ dA d l dCI dDE dF dG dH d H dJOK dL dM dN d H dP dQ dR dS d & dUwVlW\X dY dZ d[ d H d] d^ d_ d` da dbg dc dde df d &v dh di dj dk d &v dmrn do dp dq d l ds dt du dv d < dxy~z d{ d| d} d H d d d d d H d d d d d l d d d d d l d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d d H d d d d d H d d d d d m4 d d d d d l d d d d d H d d d d d d H d d d d d H d d d d d m$ d)  d d d d d l d d d d d H d d d d d H d d d d d < d d d d d H d� d d d d H d d d d d H d   d d d d d H d d d d d d l d d d d H d d$ d! d" d# d H d% d& d' d( d l d*N+B,7-2. d/ d0 d1 d l d3 d4 d5 d6 d m$ d8=9 d: d; d< d l d> d? d@ dA d &v d dCDIE dF dG dH d l dJ dK dL dM d H dOaPV dQR dS dT dU d l dW\X dY dZ d[ d H d] d^ d_ d` d H dbncid de df dg dh d l lj dk dl dm d H dotp dq dr ds d H du dv dw dx d H dz{|}~ d d d H d d d d H d d d d d H d d d d d d H d d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d ' d d d d d l d d d d d d l d d d d d H d d d d d l d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d d H d d d d d d H d d� d d d d l d  d d d d l d d d d d H d d d d d H d d d d d H dqL5* %! d" d# d$ d l d& d' d( d) d H d+0, d- d. d/ d H d1 d2 d3 d4 d H d6A7<8 d9 d: d; d H d= d> d? d@ d H dBGC dD dE dF d H dH dI dJ dK d H dM_NYOTP dQ dR dS d H dU dV dW dX d H d dZ[ d\ d] d^ d H d`f dab dc dd de d H dglh di dj dk d l dm dn do dp d $ drstz duv dw dx dy d H d{| d} d~ d d & d d d d d H d d d d d d H d d d d d < d d d d d $ d d d d d d H d d d d d d H d d d d d H d d d d d l d d d d d l d d d d d H d\ d d d H d d d d l d d d d d H d d d d d d H d d d d d . d d d d d . d d d d d H d d d d d l d d d d d d m4 d d d d d d H d d d d� d d H d d d d d H d2     d d d d . d d d d d H d d d d d . d d d d d H d!'" d# d$ d% d& d H d(-) d* d+ d, d l d. d/ d0 d1 d l d3E4: d56 d7 d8 d9 d m4 d;@< d= d> d? d H dA dB dC dD d l dFQGLH dI dJ dK d H dM dN dO dP d &v dRWS dT dU dV d l dX dY dZ d[ d H d]^_q`kafb dc dd de d H dg dh di dj d l dl dm dn do dp d H dr}sxt du dv dw d H dy dz d{ d| d l d~ d d d d l d d d d d < d d d d d d H d d d d d d l d d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d < d d d d d m$ d d d d d l d d d d d H d d d d d m4 d d d d d l d d d d d d H d d d d d H d d d d d H d d d d d l d d d d d &v d d d d d H d d d� d d l d_`6   d  d d d l d d d d d H d d d d d &v d d d d d H d +!&" d# d$ d% d H d' d( d) d* d l d,1- d. d/ d0 d H d2 d3 d4 d5 d H d7N8C9>: d; d< d= d l d? d@ dA dB d H dDIE dF dG dH d H dJ dK dL dM d H dOU dPQ dR dS dT d H dV[W dX dY dZ d ' d\ d] d^ d_ d H dab~csdne df dg dh di dj dk dl dm d ' do dp dq dr d H dtyu dv dw dx d l dz d{ d| d} d H d d d d d d m$ d d d d d d l d d d d d d m$ d d d d d d H d d d d d < d d d d d H d d d d d H d d d d d m$ d  d d d l d d d d l d d d d d . d d d d d H d d d d d H d d d d d H d d d d d m$ d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d m$ d d d d d d l d� d d d d H d d d d d H d 5   d d d d H d d d d d H d d d d d d l d* %! d" d# d$ d H d& d' d( d) d H d+0, d- d. d/ d m4 d1 d2 d3 d4 d l d6M7B8=9 d: d; d< d l d> d? d@ dA d m$ dCHD dE dF dG d H dI dJ dK dL d H dNTO dP dQ dR dS d H dUZV dW dX dY d H d[ d\ d] d^ d l d`abcydsenfjg dh di d m4 dk dl dm d H do dp dq dr d l d dtu dv dw dx d H dz{| d} d~ d d H d d d d d l d d d d d . d d d d d H d d d d d H d d d d d H d d d d d d l d d d d d l d d d d d & d d d d d H d d d d d l d d d d d l d d d d d l d d d d d H d d d d d H d d d d d m4 d d d d d H d d d d d H d d d d d l d d d d d d l d d d d d l d d d d d m$ d d� d d d H d  d d d d l d d d d d m$ d~:# d d d d d H d d d d d < d d d! d" d l d$/%*& d' d( d) d H d+ d, d- d. d H d051 d2 d3 d4 d l d6 d7 d8 d9 d & d;M<G=B> d? d@ dA d H dC dD dE dF d H dH dI dJ dK dL d m4 dNsOnP dQ dR dS dT dU <V <W <X <Y <Z <[ <\ <] <^h_ <`da <b <c < ! <e < <f <g  < <ij < <kl <m < < 1o dp dq dr d H dtyu dv dw dx d H dz d{ d| d} d l d d d d d H d d d d d m4 d d d d d d < d d d d d H d d d d d H d d d d d l d d d d d & d d d d d H d d d d d H d d d d d d l d d d d d &v d d d d d H d d d d d H d d d d d H dp%� d d d H d d d d H d d d d d H d d d d d d m$ d d d d d . d d d d d H d d d d d d m$ d  d d d d m4 d d d d d m$ d d d d d d m4 d d d d d d l d  d d d d l d! d" d# d$ d H d&K'4(. d)* d+ d, d- d H d d/0 d1 d2 d3 d H d5@6;7 d8 d9 d: d l d< d= d> d? d H dAFB dC dD dE d l dG dH dI dJ d H dLYMS dNO dP dQ dR d m$ d dTU dV dW dX d H dZe[`\ d] d^ d_ d H da db dc dd d H dfkg dh di dj d l dl dm dn do d m$ dqrstz duv dw dx dy d l d{ d| d} d~ d d m4 d d d d d l d d d d d H d d d d d d l d d d d d d H d d d d d d m4 d d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d ! d d d d d l d d d d d H d d d d d H d d d d d H d d d d d l d d d d d l d d d d d . d d d d d d H d d d d d d H d d d� d d H d d d d d H d w = &   d d d m4 d d d d H d d d d d l d! d d d d < d" d# d$ d% d $ d'2(-) d* d+ d, d H d. d/ d0 d1 d &v d384 d5 d6 d7 d H d9 d: d; d< d H d>U?J@EA dB dC dD d H dF dG dH dI d &v dKPL dM dN dO d m$ dQ dR dS dT d H dV\ dWX dY dZ d[ d l d]r^ d_ d` da db d Hcd He H Hfglhi H jk Hmpno H H Hq Hs dt du dv d l dxyz{| d} d~ d d $ d d d d d H d d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d d l d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d l d d d d d d H d  d d d d H d d d d d l d� d d d d H d d d d d H d   d d d d < d d d d d m$ d d d d d d l dB5* %! d" d# d$ d H d& d' d( d) d H d+0, d- d. d/ d H d1 d2 d3 d4 d l d6< d78 d9 d: d; d H d= d> d? d@ dA d H dCOD dEJF dG dH dI d H dK dL dM dN d l dPV dQR dS dT dU d H dW dX dY dZ d[ d l d]^ _`�abcydsenfjg dh di d & dk dl dm d & do dp dq dr d H d dtu dv dw dx d H dz{ d| d} d~ d d H d d d d d H d d d d d H d d d d d d l d d d d d H d d d d d m$ d d d d d l d d d d d & d d d d d H d d d d d H d d d d d m$ d d d d d l d d d d d d m$ d d d d d l d d d d d l d d d d d d l d d d d d d m$ d d d d d H d d d d d H d d d d d d m$ d d d d d l d d d d d H d_5  d d d H d d d d H d d d d d l d d d d d H d d d d d H d* %! d" d# d$ d H d& d' d( d) d H d+0, d- d. d/ d l d1 d2 d3 d4 d H d6H7B8=9 d: d; d< d H d> d? d@ dA d H d dCD dE dF dG d < dITJOK dL dM dN d H dP dQ dR dS d l dUZV dW dX dY d l d[ d\ d] d^ d H d`axbmchd de df dg d l di dj dk dl d H dnso dp dq dr d H dt du dv dw d H dy dz{ d| d} d~ d H d d d d d H d d d d d l d d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d d l dV d d d d d < d d d d d d H d d d d d l d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d m4 d d d d d H d d d d d l d d d d d l d d d d d H d d d d� d m$ d,  d d d d H d d d d d l d d d d d H d d d d d H d&! d d d d l d" d# d$ d% d H d d'( d) d* d+ d H d-?.9/40 d1 d2 d3 d H d5 d6 d7 d8 d l d d:; d< d= d> d H d@KAFB dC dD dE d H dG dH dI dJ d l dLQM dN dO dP d H dR dS dT dU d H dWXYkZe[`\ d] d^ d_ d H da db dc dd d l df dg dh di dj d H dlwmrn do dp dq d H ds dt du dv d l dx}y dz d{ d| d H d~ d d d d H d d d d d H d d d d d H d d d d d H d d d d d m$ d d d d d d d d d d d & d d d d d H d d d d d l d d d d d H d d d d d l d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d H d d d d d l d d d d d m$ d d d d d H d� d d d d d H d d d d d d l d O8-( d d d d d . . . . . . . . .! ." .# .$ .% .& .' = .) d* d+ d, d m4 d.3/ d0 d1 d2 d < d4 d5 d6 d7 d & d9D:?; d< d= d> d H d@ dA dB dC d l dEJF dG dH dI d H dK dL dM dN d H dPQRS dT dU dV dW dXkYdZ^ d[\] $ d $ d_b`a $ d $ dc d $ de dfigh $ d $ dj d $ dlumrnp do $ dq d $ d dst d $ dv|wyx d $ dz{ $ d $ d} d~ d $ $ $ $ d $ $ d d d $ d d d d d H d d d d d l d d d d d H d d d d d d l d d d d d l d d d d d H d d d d d m4 d d d d d l d d d d d d H d d d d d d l d d d d d d H d d d d d d H d d d d d H d d d d d d l d d d d d l d6  d d d d H d d d d d H d d d d d d & d d d d d� d l d d d d d H d d d d d H d  d d d d . d d d d d . d d d d d d l d +!&" d# d$ d% d l d' d( d) d* d l d,1- d. d/ d0 d . d2 d3 d4 d5 d H d7\8E9? d:; d< d= d> d H d d@A dB dC dD d H dFQGLH dI dJ dK d m$ dM dN dO dP d H dRWS dT dU dV d < dX dY dZ d[ d H d]t^i_d` da db dc d & de df dg dh d H djok dl dm dn d H dp dq dr ds d & duv{w dx dy dz d l d| d} d~ d d H d d d d d H d d d d d l d: d d d H d d d d m$ d d d d d H d d d d d < d d d d d l d d d d d m4 d d d d d l d d d d d H d d d d d E d d d d d m4 d d d d d H d d d d d d H d d d d d d l d d d d d H d  d d d d d H d d d d d H d d d d d H d� d d d d H d d d d d m4 d d d d d H d d d d d H d #  d d d d l d d d d d H d d d d d H d d d! d" d < d$/%*& d' d( d) d l d+ d, d- d. d &v d051 d2 d3 d4 d H d6 d7 d8 d9 d l d;<f=O>D d?@ dA dB dC d H dEJF dG dH dI d l dK dL dM dN d l dP[QVR dS dT dU d H dW dX dY dZ d l d\a] d^ d_ d` d m4 db dc dd de d m$ dgyhn dij dk dl dm d H dotp dq dr ds d H du dv dw dx d m$ dz d{| d} d~ d d l d d d d d d m$ d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d H d d d d d H d d d d d d H d d d d d d H d d d d d H d d d d d ' d d d d d l d d d d d l d<3 d d d H d d d d H d d d d d m$ d d d d d H d d d d d H d d� d d d H d d d d d H d d  d d d d l d d d d d d H d d d d d d &v d(# d d! d" d l d$ d% d& d' d H d).* d+ d, d- d $ d/ d0 d1 d2 d H d4c5L6A7<8 d9 d: d; d H d= d> d? d@ d l dBGC dD dE dF d < dH dI dJ dK d l dMXNSO dP dQ dR d H dT dU dV dW d H dY^Z d[ d\ d] d H d_ d` da db d $ ddvepfkg dh di dj d m4 dl dm dn do d l d dqr ds dt du d l dwx}y dz d{ d| d l d~ d d d d & d d d d d H d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d l d d d d d H d d d d d m$ d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d  d d d d < d d d d d l d d d d d� d H d d d d d d l d d d d d H d% d d d d l d d d d d H d  d d d d � d! d" d# d$ d H d&1',( d) d* d+ d &v d- d. d/ d0 d l d273 d4 d5 d6 d l d8 d9 d: d; d l d=>?s@aAVBKCGD dE dF d l dH dI dJ d H dL dM dN dO dP dQ dR dS dT dU d & dW\X dY dZ d[ d H d] d^ d_ d` d H dbh dcd de df dg d l dinj dk dl dm d l do dp dq dr d l dtuv{w dx dy dz d H d| d} d~ d d l d d d d d d H d d d d d d H d d d d d H d d d d d H d d d d d H d d d d d H d d d d d d H d d d d d H d d d d d H d d d d d m4 d d d d d l d d d d d H d d d d d H d d d d d H d d d d d H d d d d d d H  d d d d H d d d d d l d d d d d l dD$  d d d d H d d d� d d l d d d d d l d d d d d H d d d d d H d d d d d H d d d d d l d d! d" d# d H d%2&, d'( d) d* d+ d H d- d. d/ d0 d1 d < d3>495 d6 d7 d8 d l d: d; d< d= d H d? d@ dA dB dC d l dEtF]GRHMI dJ dK dL d H dN dO dP dQ d l dSXT dU dV dW d m4 dY dZ d[ d\ d H d^i_d` da db dc d H de df dg dh d H djok dl dm dn d m$ dp dq dr ds d H duv| dwx dy dz d{ d H d}~ d d d d H d d d d d H d d d d d l d d d d d H d d d d d l d d d d d m$ d7 d d d d d H d d d d d H d d d d d l d d d d d m$ d d d d d l d d d d d l d d d d d < d d d d d d H d d d d d d H d d d d d d l d d d d d m$ d d d d d m$ d � d d d d H d d d d d H d d d d d d H d d d d d d H d d d d d d & d% d d d d H d d d d d m$ d  d d d d m4 d! d" d# d$ d H d&1',( d) d* d+ d H d- d. d/ d0 d l d d23 d4 d5 d6 d H d89c:L;F<A= d> d? d@ d l dB dC dD dE d l d dGH dI dJ dK d H dMXNSO dP dQ dR d H dT dU dV dW d l dY^Z d[ d\ d] d H d_ d` da db d < ddke d dfg dh di dj d < dlwmrn do dp dq d H ds dt du dv d l dx}y dz d{ d| d l d~ d d d d & d d d d d m4 d d d d d m$ d d d d d d H d d d d d H d d d d d l d d d d d H d d d d d &v d d d d d H d d d d d H d d d d d H d d d d d l d d d d d d & d d d d d H d d d d d H d|" d d d m4 d d d d l d d d d d H d d d d d H d d d d d H d d d d d d l d d d� d d d m4 d d  d d d d . d d d d d l d d d d d l d d d d d H d d d d d! d H d#M$6%0&+' d( d) d* d l d, d- d. d/ d H d d12 d3 d4 d5 d & d7B8=9 d: d; d< d H d> d? d@ dA d H dCHD dE dF dG d H dI dJ dK dL d l dNeOZPUQ dR dS dT d < dV dW dX dY d H d[`\ d] d^ d_ d m4 da db dc dd d & dfqglh di dj dk d H dm dn do dp d H drws dt du dv d l dx dy dz d{ d l d}~ d d d d d l d d d d d H d d d d d H d d d d d H d d d d d l d d d d d l d d d d d H d d d d d d H d d d d d d l d d d d d l d d d d d l d d d d d d m$ d d d d d H d d d d d H d d d d d m4 d d d d d H d d d d d m$ d d d d d H d d d d d H d d d d d H d� d d d d d H d d d d d d l d  d d d d H d d d d d H d d d d d l d d d d d H d d d!"ψ#w$%&'()T*?+4,1-/. d H d0 d H d H23 d H d5:687 d H d9 d H d;=< d H d> d H d@IAFBDC d H dE d H dG dH d H dJOKML d H dN d H dPRQ d H dS d H dU|VqWlXZY d H d[ d\ d] H^ H_ H` Ha Hb Hc Hd He Hf Hg Hh Hi Hj Hk H H <mon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}~ d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d d H d d H d d H d d H d d H d d d H d d d H d d d H d d d H d d H d d H d= d H d d H d d d H d d H d d H d d H d d H d� d H d d H d d d H d   d H d d H d  d H d d H d& d H d d H d d H d H d! H d H d"$# d H d% d H d'2(-)+* d H d, d H d.0/ d H d1 d H d38465 d H d7 d H d9;: d H d< d H d>h?V@KAFBDC d H dE d H dGIH d H dJ d H dLQMON d H dP d H dRTS d H dU d H dWbX]Y[Z d H d\ d H d^`_ d H da d H d Hcdfe d H dg d H dijukplnm d H do d H dqsr d H dt d H dv{wyx d H dz d H d|~} d $ d d H d d d H d d H d d H d d H d d H d d d H dE d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d d H d d d H d d H d d H d d H d d H d d� d H d  d H d d H d   d H d d H d d H d d H d d H d d H d.# d d H d! d H d" d H d$)%'& d H d( d H d*,+ d H d- d H d/:05132 d H d4 d H d687 d H d9 d H d;@<>= d H d? d H dACB d H dD d H dFGnHYINJK H d dLM d H dOTPRQ d H dS d H dUWV d H dX d H dZc[`\^] d H d_ d H da db d H ddiegf d H dh d H djlk d H dm d H dopyqvrts d H du d H dw dx d H dz{}| d H d~ d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H < H d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d� d H d d H d d H d d H d   d H d d H d  d H d d H due8( d H d d H d d d H d # d!" d H d$&% d H d' d H d)0*-+ d, d H d. d/ d H d132 d H d465 d H d7 d H d9P:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQZRU dST d H dVXW d H dY d H d[`\^] d H d_ d H dacb d H dd d H dfg~hsinjlk d H dm d H doqp d H dr d H dtyuwv d H dx d H dz|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d   d H d d H d  d H d d H d d d H d d H d d H dH3(#! d H d" d H d$&% d H d' d H d).*,+ d H d- d H d/10 d H d2 d H d4=58 d67 d H d9;: d H d< d H d>C?A@ d H dB d H dDFE d H dG d H dI`JUKPLNM d H dO d H dQSR d H dT d H dV[WYX d H dZ d H d\^] d H d_ d H dalbgced d H df d H dhji d H dk d H dmrnpo d H dq d H ds dt d H dv-wxyz{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d d H d d d H d�  d H d d H d  d H d d H d   d H d d H d d H d d H d" d H d d H d  d H d! d H d#($&% d H d' d H d)+* d H d, d H d./Z0C1:27354 d H d6 d H d d89 d H d;>< d= d H d?A@ d H dB d H dDOEJFHG d H dI d H dKML d H dN d H dPUQSR d H dT d H dVXW d H dY d H d[p\e]` d^_ d H dacb d H dd d H dfkgih d H dj d H dlnm d H do d H dq|rwsut d H dv d H dxzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d H d?7  d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d d H d "   d H d d H d d H d d H d d H d d H d  d H d! d H d#,$'% d& d H d(*) d H d+ d H d-2.0/ d H d1 d H d354 d H d6 d H d8a9P:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQXRUS dT d H dV dW d H dY^Z\[ d H d] d H d d_` d H dbwcldge df d H dhji d H dk d H dmrnpo d H dq d H dsut d H dv d H dxy~z|{ d H d} d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d � d H d d H d d H d d H d    d H d d H d d d H d* d H d d H d d H d d H d %!#" d H d$ d H d&(' d H d) d H d+4,/- d. d H d021 d H d3 d H d5:687 d H d9 d H d;=< d H d> d H d@ABmCVDMEHF dG d H dIKJ d H dL d H dNQ dOP d H dRTS d H dU d H dWbX]Y[Z d H d\ d H d^`_ d H da d H dchdfe d H dg d H dikj d H dl d H dnozpuqsr d H dt d H dvxw d H dy d H d{|~} d H d d H d d H d d H d d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d $ d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H dO$ d H d d H d� d H d d H d  d H d d H d   d H d d H d d d H d d H d d H d d H d d H d "! d H d# d H d%<&1',(*) d H d+ d H d-/. d H d0 d H d27354 d H d6 d H d8:9 d H d; d H d=F>C?A@ d H dB d H d dDE d H dGJH dI d H dKML d H dN d H dP~QhR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H disjnkml d H d H doqp d H dr d H dtyuwv d H dx d H dz|{ d H d} d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H df  d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d  d H d d H d 7 " d H d d H d d d H d d H d d H d  d H d! d H d#,$' d%& d H d(*) d H d+ d H d-2.0/ d H d1 d H d354 d H d6 d H d8O9D:?;=< d H d> d H d@BA d H dC d H dEJFHG d H dI d H dKML d H dN d H dP[QVRTS d H dU d H dWYX d H dZ d H d\a]_^ d H d` d H dbdc d H de d H dg­h—i€jukplnm d H do d H dqsr d H dt d H dv{wyx d H dz d H d|~} d H d d H dŒ‚‡ƒ…„ d H d† d H dˆŠ‰ d H d‹ d H d’ސ d H d‘ d H d“•” d H d– d H d H˜™¢š d›œ d H dž Ÿ d H d¡ d H d£¨¤¦¥ d H d§ d H d©«ª d H d¬ d H d®¯°»±¶²´³ d H dµ d H d·¹¸ d H dº d H d¼½¿¾ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d� d H d d H d d H d d H d  c 8 #  d H d d H d d H d d H d d H d d H d! d H d" d H d$-%( d&' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9N:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dL dM d H dOZPUQSR d H dT d H dVXW d H dY d H d[^\ d] d H d_a` d H db d H ddÓe|fqglhji d H dk d H dmon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}È~ÃÁÀ d H d d H dÄÆÅ d H dÇ d H dÉÎÊÌË d H dÍ d H dÏÑÐ d H dÒ d H dÔëÕàÖÛ×ÙØ d H dÚ d H dÜÞÝ d H dß d H dáæâäã d H då d H dçéè d H dê d H dì÷íòîðï d H dñ d H dóõô d H dö d H døýùûú d H dü d H dþÿ d H d d H d  d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d � d H d d H d d H d d H d d H d d H d d d H d    d H d d H d d H d d H d d H d d H d d H d d H d!N"7#.$)%'& d H d( d H d*,+ d H d- d H d/20 d1 d H d354 d H d6 d H d8C9>:<; d H d= d H d?A@ d H dB d H dDIEGF d H dH d H dJLK d H dM d H dObP[QVRTS d H dU d H dWYX d H dZ d H d\_ d]^ d H d d`a d H dcldiegf d H dh d H d djk d H dmrnpo d H dq d H dsut d H dv d H dx:yZz{4|}Ĭ~ĕĊĀąāăĂ d H dĄ d H dĆĈć d H dĉ d H dċĐČĎč d H dď d H dđēĒ d H dĔ d H dĖġėĜĘĚę d H dě d H dĝğĞ d H dĠ d H dĢħģĥĤ d H dĦ d H dĨĪĩ d H dī d H dĭĮĹįĴİIJı d H dij d H dĵķĶ d H dĸ d H dĺĿĻĽļ d H dľ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d d d H d     d H d d H d d H d d H d d d H d d H d d H d )!$" d# d H d%'& d H d( d H d*/+-, d H d. d H d021 d H d3 d H d5Ő6e7N8C9>:<; d H d= d H d?A@ d H dB d H dDIEGF d H dH d H dJLK d H dM d H dOZPUQSR d H dT d H dVXW d H dY d H d[`\^] d H d_ d H dacb d H dd d H df{gphmikj d H dl d H dn do d H dqvrts d H du d H dwyx d H dz d H d|Ň}ł~ŀ d H dŁ d H dŃŅń d H dņ d H dňōʼnŋŊ d H dŌ d H d dŎŏ d H dőżŒŧœŜŔŗ dŕŖ d H dŘŚř d H dś d H dŝŢŞŠş d H dš d H dţťŤ d H dŦ d H dŨűũŮŪŬū d H dŭ d H d důŰ d H dŲŷųŵŴ d H dŶ d H dŸźŹ d H dŻ d H dŽžſ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d d H dƟD d H d d H d d H d d H d d H d d H d� d H d d H d   d H d d H d d  d H d  d H d d H d d d H d-" d H d d H d  d H d! d H d#($&% d H d' d H d)+* d H d, d H d.9/4021 d H d3 d H d576 d H d8 d H d:?;=< d H d> d H d@BA d H dC d H dEtF]GRHMIKJ d H dL d H dNPO d H dQ d H dSXTVU d H dW d H dY[Z d H d\ d H d^i_d`ba d H dc d H degf d H dh d H djokml d H dn d H dprq d H ds d H duƊvƁw|xzy d H d{ d H d}~ d H dƀ d H dƂƅƃ dƄ d H dƆƈƇ d H dƉ d H dƋƖƌƑƍƏƎ d H dƐ d H dƒƔƓ d H dƕ d H dƗƚ dƘƙ d H dƛƝƜ d H dƞ d H dƠơƢƹƣƮƤƩƥƧƦ d H dƨ d H dƪƬƫ d H dƭ d H dƯƴưƲƱ d H dƳ d H dƵƷƶ d H dƸ d H dƺƻƼƾƽ d H dƿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d $ d d H d d H d d H d d H d d H d d H d d H d d H d d H d�+  d H d d H d H d    d H d d H d d H d d H d  d H d d H d d H d d H d!&"$# d H d% d H d')( d H d* d H d,C-8.3/10 d H d2 d H d465 d H d7 d H d9>:<; d H d= d H d?A@ d H dB d H dDOEJFHG d H dI d H dKML d H dN d H dPUQSR d H dT d H dVXW d H dY d H d[\]Ǻ^Nj_v`kafbdc d H de d H dgih d H dj d H dlqmon d H dp d H drts d H du d H dwǀx}y{z d H d| d H d~ d d H dǁdžǂDŽǃ d H dDž d H dLJljLj d H dNJ d H dnjǣǍǘǎǓǏǑǐ d H dǒ d H dǔǖǕ d H dǗ d H dǙǞǚǜǛ d H dǝ d H dǟǡǠ d H dǢ d H dǤǯǥǪǦǨǧ d H dǩ d H dǫǭǬ d H dǮ d H dǰǵDZdzDz d H dǴ d H dǶǸǷ d H dǹ d H dǻǼǽǾǿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H dsF1&! d d $ d"$# d H d% d H d',(*) d H d+ d H d-/. d H d0 d H d2=38465 d H d7 d H d9;: d H d< d H d>C?A@ d H dB d H dD dE d H dG\HSINJLK d H dM d H dOQP d H dR d H dTYUWV d H dX d H dZ d[ d H d]h^c_a` d H db d H ddfe d H dg d H dinjlk d H dm d H doqp d H dr d H dtȡuȊvwzx dy d H d{}| d H d~ d H dȀȅȁȃȂ d H dȄ d H dȆȈȇ d H dȉ d H dȋȖȌȑȍȏȎ d H dȐ d H dȒȔȓ d H dȕ d H dȗȜȘȚș d H dț d H dȝȟȞ d H dȠ d H dȢȷȣȮȤȩȥȧȦ d H dȨ d H dȪȬȫ d H dȭ d H dȯȴȰȲȱ d H dȳ d H d dȵȶ d H dȸȹȾȺȼȻ d H dȽ d H dȿ d H d d H d d H d d H d d H d d H dɃ(� d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d d H d  d H d d H d   d H d d H d d H d d H d" d H d d H d  d H d! d H d# d$&% d H d' d H d)T*?+6,1-/. d H d0 d H d243 d H d5 d H d7<8:9 d H d; d H d= d> d H d@IAFBDC d H dE d H dG dH d H dJOKML d H dN d H dPRQ d H dS d H dUlVaW\XZY d H d[ d H d]_^ d H d` d H dbgced d H df d H dhji d H dk d H dmxnsoqp d H dr d H dtvu d H dw d H dy~z|{ d H d} d H dɁɀ d H dɂ d H dɄɅɰɆɛɇɐɈɋ dɉɊ d H dɌɎɍ d H dɏ d H dɑɖɒɔɓ d H dɕ d H dɗəɘ d H dɚ d H dɜɧɝɢɞɠɟ d H dɡ d H dɣɥɤ d H dɦ d H dɨɭɩɫɪ d H dɬ d H dɮ dɯ d H dɱɲɽɳɸɴɶɵ d H dɷ d H dɹɻɺ d H dɼ d H dɾɿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d' d H d d H d d H d d H d"  d H d! d H d#%$ d H d& d H d(/),* d+ d H d- d. d H d05132 d H d4 d H d687 d H d9 d H d;<ˤ=>ʒ?l@WALBGCED d H dF d H dHJI d H dK d H dMRNPO d H dQ d H dSUT d H dV d H dXcY^Z\[ d H d] d H d_a` d H db d H ddiegf d H dh d H dj dk d H dmʀnwotprq d H ds d H d duv d H dx}y{z d H d| d H d d~ d H dʁʇ dʂʃʅʄ d H dʆ d H dʈʍʉʋʊ d H dʌ d H dʎʐʏ d H dʑ d H dʓʔʫʕʠʖʛʗʙʘ d H dʚ d H dʜʞʝ d H dʟ d H dʡʦʢʤʣ d H dʥ d H dʧʩʨ d H dʪ d H dʬʷʭʲʮʰʯ d H dʱ d H dʳʵʴ d H dʶ d H dʸʽʹʻʺ d H dʼ d H dʾʿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H dG  d d H d d H d d H d� d H d d H d d H d d H d    d H d d H d d H d d H d d d H d d d H d2'" d! d H d#%$ d H d& d H d(-)+* d H d, d H d.0/ d H d1 d H d3<47 d56 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHuI`JUKPLNM d H dO d H dQSR d H dT d H dV[WYX d H dZ d H d\^] d H d_ d H dalbgced d H df d H dhji d H dk d H dmrnpo d H dq d H ds dt d H dvˍw˂x}y{z d H d| d H d~ˀ d H dˁ d H d˃ˈ˄ˆ˅ d H dˇ d H dˉˋˊ d H dˌ d H dˎ˙ˏ˔ː˒ˑ d H d˓ d H d˕˗˖ d H d˘ d H d˚˟˛˝˜ d H d˞ d H dˠˢˡ d H dˣ d H d˥X˦˧˨˿˩˴˪˯˫˭ˬ d H dˮ d H d˰˲˱ d H d˳ d H d˵˺˶˸˷ d H d˹ d H d˻˽˼ d H d˾ d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d d H d�-  d H d d H d   d H d d H d d H d d H d d H d d H d" d H d d H d d! d H d#($&% d H d' d H d)+* d H d, d H d.C/:05132 d H d4 d H d687 d H d9 d H d;@<>= d H d? d H dA dB d H dDMEJFHG d H dI d H d dKL d H dNSOQP d H dR d H dTVU d H dW d H dY̸Z̉[r\g]b^`_ d H da d H dced d H df d H dhmikj d H dl d H dnpo d H dq d H ds~tyuwv d H dx d H dz|{ d H d} d H d̄̀̂́ d H d̃ d H d̅̇̆ d H d̈ d H d̡̖̊̋̌̑̍̏̎ d H d̐ d H d̒̔̓ d H d̕ d H d̗̜̘̙̚ d H d̛ d H d̝̟̞ d H d̠ d H ḓ̢̨̣̤̦̥ d H ḑ d H d̩̫̪ d H d̬ d H d̮̳̯̱̰ d H d̲ d H d̴̶̵ d H d̷ d H d̹̺̻̼̽̿̾ d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d   d H d d H d  d H d d H dqF1& d H d d H d d d d d! d" d# d$ d% d $',(*) d H d+ d H d-/. d H d0 d H d2=38465 d H d7 d H d9;: d H d< d H d>A? d@ d H dBDC d H dE d H dG\HSINJLK d H dM d H dOQP d H dR d H dTYUWV d H dX d H d dZ[ d H d]h^c_a` d H db d H ddfe d H dg d H dil djk d H dmon d H dp d H dr͡s͊tuzvxw d H dy d H d{}| d H d~ d H d̀́̓͂ͅ d H d̈́ d H d͈͇͆ d H d͉ d H d͖͍͋͌͑͏͎ d H d͐ d H d͔͓͒ d H d͕ d H d͚͙͗͘͜ d H d͛ d H d͟͝͞ d H d͠ d H d͢ͷͣͮͤͩͥͧͦ d H dͨ d H dͪͬͫ d H dͭ d H dͯʹͰͲͱ d H dͳ d H d͵ dͶ d H d͸͹;ͺͼͻ d H dͽ d H d dͿ d H d d H d d H d d H d d H d$ d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d� d H d d H d d H d  d d H d   d H d d H d d H d d H d d H d d H d! d H d d H d d"# d H d%P&;'0(-)+* d H d, d H d d./ d H d16243 d H d5 d H d798 d H d: d H d<E=@> d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQhR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H ditjokml d H dn d H dprq d H ds d H duzvxw d H dy d H d{}| d H d~ d H d΀/΁΂Ϋ΃Ζ΄΍΅ΈΆ d· d H dΉ΋Ί d H dΌ d H dΎΓΏΑΐ d H dΒ d H dΔ dΕ d H dΗΠΘΛΙ dΚ d H dΜΞΝ d H dΟ d H dΡΦ΢ΤΣ d H dΥ d H dΧΩΨ d H dΪ d H dάέζήαί dΰ d H dβδγ d H dε d H dημθκι d H dλ d H dνοξ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d� d H d d H d  d d H d d  d H d d H d d H d d H d d H d$ d H d d H d "! d H d# d H d%*&(' d H d) d H d+-, d H d. d H d0 d1w2S3D4;5867 H d H d9: H d H d<?=> H d H d d@A dB dC d H dELFIGH H d H dJK H d H dMPNO H d H dQR H d H dTcU\VYWX H d H dZ[ H d H d]`^_ H d H dab H d H ddkehfg H d H dij H d H dlomn H d H dpvq dr dsut d H d H d H dx dy dzρ{~|} H d H dπ H d H dςυστ H d H dφχ H d H dωϊ:ϋ[όύDώϏϾϐϧϑϜϒϗϓϕϔ d H dϖ d H dϘϚϙ d H dϛ d H dϝϢϞϠϟ d H dϡ d H dϣϥϤ d H dϦ d H dϨϳϩϮϪϬϫ d H dϭ d H dϯϱϰ d H dϲ d H dϴϹϵϷ϶ d H dϸ d H dϺϼϻ d H dϽ d H dϿ d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d d H d� d H d d H d d H d d H d d H d d H d d d H d  d H d d H d d d H d   d H d d H d d H d d H d-" d H d d H d  d H d! d H d#($&% d H d' d H d)+* d H d, d H d.9/4021 d H d3 d H d576 d H d8 d H d:?;=< d H d> d H d@BA d H dC d H dEТFuG^HSINJLK d H dM d H dOQP d H dR d H dTYUWV d H dX d H dZ\[ d H d] d H d_j`eacb d H dd d H dfhg d H di d H dkplnm d H do d H dqsr d H dt d H dvЋwЀx}y{z d H d| d H d~ d d H dЁІЂЄЃ d H dЅ d H dЇЉЈ d H dЊ d H dЌЗЍВЎАЏ d H dБ d H dГЕД d H dЖ d H dИНЙЛК d H dМ d H dОРП d H dС d H dУФйХаЦЫЧЩШ d H dЪ d H dЬЮЭ d H dЯ d H dбдв dг d H dезж d H dи d H dклмон d H dп d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H dѫX�-  d H d d H d   d H d d H d d H d d H d d H d d H d" d d H d  d H d! d H d#($&% d H d' d H d)+* d H d, d H d.C/8031 d2 d H d465 d H d7 d H d9>:<; d H d= d H d?A@ d H dB d H dDMEJFHG d H dI d H dK dL d H dNSOQP d H dR d H dTVU d H dW d H dYрZm[d\_ d]^ d H d`ba d H dc d H dehf dg d H dikj d H dl d H dnuorp dq d H ds dt d H dv{wyx d H dz d H d|~} d H d d H dсітыушфцх d H dч d H d dщъ d H dьёэяю d H dѐ d H dђєѓ d H dѕ d H dїѠјѝљћњ d H dќ d H dў dџ d H dѡѦѢѤѣ d H dѥ d H dѧѩѨ d H dѪ d H dѬѭѮѯѺѰѵѱѳѲ d H dѴ d H dѶѸѷ d H dѹ d H dѻѼѾѽ d H dѿ d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d d H d3    d H d d H d d H d d H d d H d d H d d H d d H d( %!#" d H d$ d H d d&' d H d).*,+ d H d- d H d/10 d H d2 d H d4D5=6:78 H d9 d H d; d< d H d>A d?@ d H d dBC d H dEPFKGIH d H dJ d H dLNM d H dO d H dQVRTS d H dU d H dWYX d H dZ d H d\]^ҷ_Ҍ`ualbgced d H df d H dhji d H dk d H dmp dno d H dqsr d H dt d H dvҁw|xzy d H d{ d H d}~ d H dҀ d H d҂҇҃҅҄ d H d҆ d H d҈Ҋ҉ d H dҋ d H dҍҤҎҙҏҔҐҒґ d H dғ d H dҕҗҖ d H dҘ d H dҚҟқҝҜ d H dҞ d H dҠҢҡ d H dң d H dҥҮҦҩ dҧҨ d H dҪҬҫ d H dҭ d H dүҲ dҰұ d H dҳҵҴ d H dҶ d H dҸҹҺһҼҾҽ d H dҿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d � d H d d H d d H d d H d    d H d d H d d d H drC,! d H d d H d d H d d H d"'#%$ d H d& d H d(*) d H d+ d H d-8.3/10 d H d2 d H d465 d H d7 d H d9>:<; d H d= d H d?A@ d H dB d H dD[EPFKGIH d H dJ d H dLNM d H dO d H dQVRTS d H dU d H dWYX d H dZ d H d\g]b^`_ d $ da d H dced d H df d H dhmikj d H dl d H dnpo d H dq d H dsӞtӉu~v{wyx d H dz d H d| d} d H dӄӀӂӁ d H dӃ d H dӅӇӆ d H dӈ d H dӊӓӋӎ dӌӍ d H dӏӑӐ d H dӒ d H dӔәӕӗӖ d H dӘ d H dӚӜӛ d H dӝ d H dӟӲӠөӡӦӢӤӣ d H dӥ d H dӧ dӨ d H dӪӯӫӭӬ d H dӮ d H dӰ dӱ d H dӳӾӴӹӵӷӶ d H dӸ d H dӺӼӻ d H dӽ d H dӿ d H d d H d d H d d H dԃ( d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d� d H d d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d#! d H d" d H d$&% d H d' d H d)V*A+6,1-/. d H d0 d H d243 d H d5 d H d7<8:9 d H d; d H d=?> d H d@ d H dBMCHDFE d H dG d H dIKJ d H dL d H dNQO dP d H dRTS d H dU d H dWnXcY^Z\[ d H d] d H d_a` d H db d H ddiegf d H dh d H djlk d H dm d H dozpuqsr d H dt d H dvxw d H dy d H d{~ d|} d H dԁԀ d H dԂ d H dԄԅԮԆԙԇԐԈԍԉԋԊ d H dԌ d H d dԎԏ d H dԑԖԒԔԓ d H dԕ d H d dԗԘ d H dԚԥԛԠԜԞԝ d H dԟ d H dԡԣԢ d H dԤ d H dԦԩ dԧԨ d H dԪԬԫ d H dԭ d H dԯ԰ԻԱԶԲԴԳ d H dԵ d H dԷԹԸ d H dԺ d H dԼԽԿԾ d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d  d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d  d H d d H d #  d H d d H d d H d d H d d H d d H d! d H d" d H d$/%*&(' d H d) d H d+-, d H d. d H d05132 d H d4 d H d687 d H d9 d H d;"<֭=>՛?l@UALBGCED d H dF d H dHJI d H dK d H dMP dNO d H dQSR d H dT d H dVaW\XZY d H d[ d H d]_^ d H d` d H dbgced d H df d H dhji d H dk d H dmՄnyotprq d H ds d H duwv d H dx d H dz{}| d H d~ d H dՀՂՁ d H dՃ d H dՅՐՆՋՇՉՈ d H dՊ d H dՌՎՍ d H dՏ d H dՑՖՒՔՓ d H dՕ d H d՗ՙ՘ d H d՚ d H d՜՝մ՞թ՟դՠբա d H dգ d H dեէզ d H dը d H dժկիխլ d H dծ d H dհղձ d H dճ d H dյնջշչո d H dպ d H dռվս d H dտ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H dT%� d H d d H d d H d d H d    d H d d H d d H d d H d d d H d d H d d H d  d d H d!#" d H d$ d H d&='2(-)+* d H d, d H d.0/ d H d1 d H d38465 d H d7 d H d9;: d H d< d H d>I?D@BA d H dC d H dEGF d H dH d H dJOKML d H dN d H dPRQ d H dS d H dUքVmWbX]Y[Z d H d\ d H d^`_ d H da d H dchdfe d H dg d H dikj d H dl d H dnyotprq d H ds d H duwv d H dx d H dz{}| d H d~ d H dրւց d H dփ d H dօ֘ֆ֑և֌ֈ֊։ d H d֋ d H d֍֏֎ d H d֐ d H d֒֕֓ d֔ d H d d֖֗ d H d֢֚֙֝ d֛֜ d H d֞֠֟ d H d֡ d H d֣֤֦֥֨ d H d֧ d H d֪֩֫ d H d֬ d H d֮gְֱֲֳִֵֶָֽ֯ d H dַ d H dֹֺֻ d H dּ d H d־ֿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d:% d H d d H d d H d d H d  d d H d!#" d H d$ d H d&/'* d() d H d+-, d H d. d H d05132 d H d4 d H d687 d H d9 d H d;P<G=B>@? d H dA d H dCED d H dF d H dHK dIJ d H dLNM d H dO d H dQ\RWSUT d H dV d H dXZY d H d[ d H d]b^`_ d H da d H dced d H df d H dhiטjׁkvlqmon d H dp d H drts d H du d H dw|xzy d H d{ d H d}~ d H d׀ d H dׂ׍׃׈ׄ׆ׅ d H dׇ d H d׉׋׊ d H d׌ d H d׎ד׏בא d H dג d H dהזו d H dח d H dיװךץכנלמם d H dן d H dסףע d H dפ d H dצ׫קשר d H dת d H d׬׮׭ d H dׯ d H dױ׼ײ׷׳׵״ d H d׶ d H d׸׺׹ d H d׻ d H d׽׾׿ d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d � d H d d H d d H d d H d d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d  d H d! d H d#٦$%}&P'9(3).*,+ d H d- d H d/10 d H d2 d H d4 d576 d H d8 d H d:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQfR[SV dTU d H dWYX d H dZ d H d\a]_^ d H d` d H dbdc d H de d H dgrhmikj d H dl d H dnpo d H dq d H dsxtvu d H dw d H dy{z d H d| d H d~حؖ؀؋؁؆؂؄؃ d H d؅ d H d؇؉؈ d H d؊ d H d،ؑ؍؏؎ d H dؐ d H dؒؔؓ d H dؕ d H dؗآؘ؝ؙ؛ؚ d H d؜ d H d؞ؠ؟ d H dء d H dأبؤئإ d H dا d H dةثت d H dج d H dخدغذصرسز d H dش d H dضظط d H dع d H dػؼؾؽ d H dؿ d H d d H d d H d d d H d d H d d H d d d d d d $ d d d d $ d d d d d $ d d H d d H d d H dI d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d2'"  d H d! d H d#%$ d H d& d H d(-)+* d H d, d H d.0/ d H d1 d H d3>49576 d H d8 d H d:<; d H d= d H d?D@BA d H dC d H dEGF d H dH d H dJyKbLWMRNPO d H dQ d H dSUT d H dV d H dX]Y[Z d H d\ d H d^`_ d H da d H dcndiegf d H dh d H djlk d H dm d H dotprq d H ds d H duwv d H dx d H dzّ{ن|ف}~ d H dـ d H dقلك d H dم d H dهٌويى d H dً d H dٍَُ d H dِ d H dْٖٕٝٓ٘ٔ d H dٗ d H dٙٛٚ d H dٜ d H dٞ٣ٟ١٠ d H d٢ d H d٤ d٥ d H d٧`٨٩٪٫ٶ٬ٱ٭ٯٮ d H dٰ d H dٲٴٳ d H dٵ d H dٷټٸٺٹ d H dٻ d H dٽٿپ d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d3    d H d d H d d d H d d H d d H d d H d d H d(#! d H d" d H d$&% d H d' d H d).*,+ d H d- d H d/10 d H d2 d H d4I5@6;798 d H d: d H d<>= d H d? d H dAD dBC d H dEGF d H dH d H dJUKPLNM d H dO d H dQSR d H dT d H dV[WYX d H dZ d H d\^] d H d_ d H daھbڏczdoejfhg d H di d H dkml d H dn d H dpuqsr d H dt d H dvxw d H dy d H d{ڄ|ځ}~ d H dڀ d H d dڂڃ d H dڅڊچڈڇ d H dډ d H dڋڍڌ d H dڎ d H dڐڧڑڜڒڗړڕڔ d H dږ d H dژښڙ d H dڛ d H dڝڢڞڠڟ d H dڡ d H dڣڥڤ d H dڦ d H dڨڳکڮڪڬګ d H dڭ d H dگڱڰ d H dڲ d H dڴڹڵڷڶ d H dڸ d H dںڼڻ d H dڽ d H dڿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d   d H d d H d  d H d d H d d d H d d H d d H dܓ{L 5!*"'#%$ d H d& d H d( d) d H d+0,.- d H d/ d H d132 d H d4 d H d6A7<8:9 d H d; d H d=?> d H d@ d H dBGCED d H dF d H dHJI d H dK d H dMdNYOTPRQ d H dS d H dUWV d H dX d H dZ_[]\ d H d^ d H d`ba d H dc d H depfkgih d H dj d H dlnm d H do d H dqvrts d H du d H dwyx d H dz d H d|۫}۔~ۉۄۀۂہ d H dۃ d H dۅۇۆ d H dۈ d H dۊۏۋۍی d H dێ d H dېےۑ d H dۓ d H dە۠ۖۛۗۙۘ d H dۚ d H dۜ۞۝ d H d۟ d H dۡۦۣۢۤ d H dۥ d H dۧ۩ۨ d H d۪ d H dۭ۬۸ۮ۳ۯ۱۰ d H d۲ d H d۴۶۵ d H d۷ d H d۹۾ۺۼۻ d H d۽ d H dۿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d8  d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d  d H d d H d !  d d H d d H d d H d d H d d H d d H d d H d"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9h:Q;F<A=?> d H d@ d H dBDC d H dE d H dGLHJI d H dK d H dMON d H dP d H dR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H di~jukplnm d H do d H dqsr d H dt d H dvy dwx d H dz|{ d H d} d H d܊܀܅܁܃܂ d H d܄ d H d܆܈܇ d H d܉ d H d܋܎܌ d܍ d H d܏ܑܐ d H dܒ d H dܔOܕܖܗܮܘܣܙܞܚܜܛ d H dܝ d H dܟܡܠ d H dܢ d H dܤܩܥܧܦ d H dܨ d H dܪܬܫ d H dܭ d H dܯܱܺܰܵܳܲ d H dܴ d H dܸܷܶ d H dܹ d H dܻܼܾܽ d H dܿ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d$  d H d d H d� d H d d H d d H d d H d   d H d d H d d H d d H d d H d d H d d H d d H d "! d H d# d H d%<&1',(*) d H d+ d H d-/. d H d0 d H d27354 d H d6 d H d8:9 d H d; d H d=F>C?A@ d H dB d H dD dE d H dGLHJI d H dK d H d dMN d H dPݫQ|ReS^TYUWV d H dX d H dZ\[ d H d] d H d_b` da d H dc dd d H dfqglhji d H dk d H dmon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}ݔ~݄݂݉݀݁ d H d݃ d H d݆݅݇ d H d݈ d H d݊ݏ݋ݍ݌ d H dݎ d H dݐݒݑ d H dݓ d H dݕݠݖݛݗݙݘ d H dݚ d H dݜݞݝ d H dݟ d H dݡݦݢݤݣ d H dݥ d H dݧݩݨ d H dݪ d H dݬݭݮݹݯݴݰݲݱ d H dݳ d H dݵݷݶ d H dݸ d H dݺݿݻݽݼ d H dݾ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d� d H d d H d d H d߀ h 9 "   d H d d H d d H d d H d d H d d H d  d H d! d H d#.$)%'& d H d( d H d*,+ d H d- d H d/4021 d H d3 d H d576 d H d8 d H d:Q;F<A=?> d H d@ d H dBDC d H dE d H dGLHJI d H dK d H dMON d H dP d H dR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H diޖjށkvlqmon d H dp d H drts d H du d H dw|xzy d H d{ d H d}~ d H dހ d H dނދރކ dބޅ d H dއމވ d H dފ d H dތޑލޏގ d H dސ d H dޒޔޓ d H dޕ d H dޗޮޘޣޙޞޚޜޛ d H dޝ d H dޟޡޠ d H dޢ d H dޤީޥާަ d H dި d H dުެޫ d H dޭ d H dޯ޺ް޵ޱ޳޲ d H d޴ d H d޶޸޷ d H d޹ d H d޻޼޾޽ d H d޿ d H d d H d d H d# d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d d H d� d H d d H d d H d  d H d d H d  d H d d H d d H d d H d d H d d H d! d H d" d H d$Q%<&1',(*) d H d+ d H d-/. d H d0 d H d27354 d H d6 d H d8:9 d H d; d H d=H>C?A@ d H dB d H dDFE d H dG d H dIL dJK d H dMON d H dP d H dRiS^TYUWV d H dX d H dZ\[ d H d] d H d_d`ba d H dc d H degf d H dh d H djukplnm d H do d H dqsr d H dt d H dv{wyx d H dz d H d|~} d H d d H d߁@߂߃߲߄ߛ߅ߐ߆ߋ߇߉߈ d H dߊ d H dߌߎߍ d H dߏ d H dߑߖߒߔߓ d H dߕ d H dߗߙߘ d H dߚ d H dߜߧߝߢߞߠߟ d H dߡ d H dߣߥߤ d H dߦ d H dߨ߭ߩ߫ߪ d H d߬ d H d߮߰߯ d H d߱ d H d߳ߴ߿ߵߺ߶߸߷ d H d߹ d H d߻߽߼ d H d߾ d H d d H d d H d d H d d H d d H d d H d d H d d $ d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d   d H d d H d  d H d d H d) d H d d H d d H d d H d$ "! d H d# d H d%'& d H d( d H d*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dABqCZDOEJFHG d H dI d H dKML d H dN d H dPUQSR d H dT d H dVXW d H dY d H d[f\a]_^ d H d` d H dbdc d H de d H dglhji d H dk d H dmon d H dp d H drs~tyuwv d H dx d H dz|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H dx^�/  d H d d H d   d H d d H d d H d d H d d H d d H d$ d H d d H d "! d H d# d H d%*&(' d H d) d H d+-, d H d. d H d0G1<27354 d H d6 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHSINJLK d H dM d H dOQP d H dR d H dTYUWV d H dX d H dZ\[ d H d] d H d_`walbgced d H df d H dhji d H dk d H dmrnpo d H dq d H dsut d H dv d H dxy~z|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d  d H d  d H d d H d d H d d H d d H d d H dK4)$ "! d H d# d H d%'& d H d( d H d*/+-, d H d. d H d021 d H d3 d H d5@6;798 d H d: d H d<>= d H d? d H dAFBDC d H dE d H dGIH d H dJ d H dLcMXNSOQP d H dR d H dTVU d H dW d H dY^Z\[ d H d] d H d_a` d H db d H ddmeh dfg d H dikj d H dl d H dnsoqp d H dr d H dtvu d H dw d H dy4z{|}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d    d d H d d H d d H d d H d d H d d H d d H d)$ "! d H d# d H d%'& d H d( d H d*/+-, d H d. d H d021 d H d3 d H d56c7L8A9>:<; d H d= d H d d?@ d H dBGCED d H dF d H dHJI d H dK d H dMXNSOQP d H dR d H dTVU d H dW d H dY^Z\[ d H d] d H d_a` d H db d H dd{epfkgih d H dj d H dlnm d H do d H dqvrts d H du d H dwyx d H dz d H d|}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H diQ$  d H d d H d� d H d d H d d H d d H d   d H d d H d d H d d H d d H d d H d d H d d H d "! d H d# d H d%:&/'* d() d H d+-, d H d. d H d05132 d H d4 d H d687 d H d9 d H d;F<A=?> d H d@ d H dBDC d H dE d H dGLHJI d H dK d H dMON d H dP d H dRSjT_UZVXW d H dY d < d[]\ d H d^ d H d`eacb d H dd d H dfhg d H di d H dkvlqmon d H dp d H drts d H du d H dw|xzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d  d H d d H d :# d H d d H d d H d d H d d d H d! d H d" d H d$/%*&(' d H d) d H d+-, d H d. d H d05132 d H d4 d H d687 d H d9 d H d;R<G=B>@? d H dA d H dCED d H dF d H dHMIKJ d H dL d H dNPO d H dQ d H dS^TYUWV d H dX d H dZ\[ d H d] d H d_d`ba d H dc d H degf d H dh d H dj%klmnyotprq d H ds d H duwv d H dx d H dz{}| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d  d H d d H d!#" d H d$ d H d&'V(?)4*/+-, d H d. d H d021 d H d3 d H d5:687 d H d9 d H d;=< d H d> d H d@KAFBDC d H dE d H dGIH d H dJ d H dLQMON d H dP d H dRTS d H dU d H dWnXcY^Z\[ d H d] d H d_a` d H db d H ddiegf d H dh d H djlk d H dm d H dozpuqsr d H dt d H dvxw d H dy d H d{|~} d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d d H dW@ d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d    d H d d H d d H d d H d+  d H d d H d d H d d H d!&"$# d H d% d H d')( d H d* d H d,7-2.0/ d H d1 d H d354 d H d6 d H d8; d9: d H d<>= d H d? d H dApBYCNDIEGF d H dH d H dJLK d H dM d H dOTPRQ d H dS d H dUWV d H dX d H dZe[`\^] d H d_ d H dacb d H dd d H dfkgih d H dj d H dlnm d H do d H dqr}sxtvu d H dw d H dy{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d < d d H d d H d d H d( d H d� d H d d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d#! d H d" d H d$&% d H d' d H d)@*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dALBGCED d H dF d H dHJI d H dK d H dMRNPO d H dQ d H dSUT d H dV d H dXYZ[r\g]b^`_ d H da d H dced d H df d H dhmikj d H dl d H dnpo d H dq d H ds~tyuwv d H dx d H dz|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d � d H d d H d d H d d H d   d H d d H d d H d d H dsD-$ d H d d H d "! d H d# d H d%(& d' d H d)+* d H d, d H d.9/4021 d H d3 d H d576 d H d8 d H d:?;=< d H d> d H d@BA d H dC d H dE\FQGLHJI d H dK d H dMON d H dP d H dRWSUT d H dV d H dXZY d H d[ d H d]h^c_a` d H db d H ddfe d H dg d H dinjlk d H dm d H doqp d H dr d H dtuvw|xzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H dJ0 d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d  d H d d H d   d H d d H d d H d d H d d H d d H d%  d H d d H d!#" d H d$ d H d&+')( d H d* d H d,.- d H d/ d H d1^2I3>49576 d H d8 d H d:<; d H d= d H d?D@BA d H dC d H dEGF d H dH d H dJSKNL dM d H dOQP d H dR d H dTYUWV d H dX d H dZ\[ d H d] d H d_v`kafbdc d H de d H dgih d H dj d H dlqmon d H dp d H drts d H du d H dwx}y{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d3(#! d H d" d H d$&% d H d' d H d).*,+ d H d- d H d/10 d H d2 d H d4?5:687 d H d9 d H d;=< d H d> d H d@EACB d H dD d H dFHG d H dI d H dKLM|NeOZPUQSR d H dT d H dVXW d H dY d H d[`\^] d H d_ d H dacb d H dd d H dfqglhji d H dk d H dmon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}~ d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H dc4    d H d d H d d H d d H d d H d d H d d H d d H d)$ "! d H d# d H d%'& d H d( d H d*/+-, d H d. d < d021 d H d3 d H d5L6A7<8:9 d H d; d H d=?> d H d@ d H dBGCED d H dF d H dHJI d H dK d H dMXNSOQP d H dR d H dTVU d H dW d H dY^Z\[ d H d] d H d_a` d H db d H dde|fqglhji d H dk d H dmon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d;| d H d d H d d H d d H d d H d d H d d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d     d H d d H d d H d d H d d H d d H d d H d d H d O!8"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9D:?;=< d H d> d H d@BA d H dC d H dEJFHG d H dI d H dKML d H dN d H dPgQ\RWSUT d H dV d H dXZY d H d[ d H d]b^`_ d H da d H dced d H df d H dhqinjlk d H dm d H do dp d H drwsut d H dv d H dxzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d  d H d d H d $ d H d d H d d H d d H d d H d d H d "! d H d# d H d%0&+')( d H d* d H d,.- d H d/ d H d16243 d H d5 d H d798 d H d: d H d<=>m?V@KAFBDC d H dE d H dGIH d H dJ d H dLQMON d H dP d H dRTS d H dU d H dWbX]Y[Z d H d\ d H d^`_ d H da d H dchdfe d H dg d H dikj d H dl d H dnozpuqsr d H dt d H dvxw d H dy d H d{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H dT% d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d  d H d d H d!#" d H d$ d H d&='2(-)+* d H d, d H d.0/ d H d1 d H d38465 d H d7 d H d9;: d H d< d H d>I?D@BA d H dC d H dEGF d H dH d H dJOKML d H dN d H dPRQ d H dS d H dUVmWbX]Y[Z d H d\ d H d^`_ d H da d H dchdfe d H dg d H dikj d H dl d H dnyotprq d H ds d H duwv d H dx d H dz{}| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d/r d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d    d H d d H d d H d d H dC,! d H d d H d d H d d H d"'#%$ d H d& d H d(*) d H d+ d H d-8.3/10 d H d2 d H d465 d H d7 d H d9>:<; d H d= d H d?A@ d H dB d H dD[EPFKGIH d H dJ d H dLNM d H dO d H dQVRTS d H dU d H dWYX d H dZ d H d\g]b^`_ d H da d H dced d H df d H dhmikj d H dl d H dnpo d H dq d H dstuvw|xzy d H d{ d H d}~ d H d d H d d H d d < d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d$ d H d d H d "! d H d# d H d%*&(' d H d) d H d+-, d H d. d H d012a3J4?5:687 d H d9 d H d;=< d H d> d H d@EACB d H dD d H dFHG d H dI d H dKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbycndiegf d H dh d H djlk d H dm d H dotprq d H ds d H duwv d H dx d H dz{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H dI d H d d H d d H d d H d� d d H d d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d2)$ "! d H d# d H d%'& d H d( d H d*/+-, d H d. d H d0 d1 d H d3>49576 d H d8 d H d:<; d H d= d H d?D@BA d H dC d H dEGF d H dH d H dJwK`LWMRNPO d H dQ d H dSUT d H dV d H dX]Y[Z d H d\ d H d^ d_ d H dalbgced d H df d H dhji d H dk d H dmrnpo d H dq d H dsut d H dv d H dxyz{}| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d"c d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d 8 !    d H d d H d d H d d H d d H d d H d d H d d H d"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9N:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H d dLM d H dOXPS dQR d H dTVU d H dW d H dY^Z\[ d H d] d H d_a` d H db d H ddef}grhmikj d H dl d H dnpo d H dq d H dsxtvu d H dw d H dy{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d � d H d d H d d H d d H d d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d  d H d! d H d#$%T&='2(-)+* d H d, d H d.0/ d H d1 d H d38465 d H d7 d H d9;: d H d< d H d>I?D@BA d H dC d H dEGF d H dH d H dJOKML d H dN d H dPRQ d < dS d H dUlVaW\XZY d H d[ d H d]_^ d H d` d H dbgced d H df d H dhji d H dk d H dmxnsoqp d H dr d H dtvu d H dw d H dy~z|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d@ d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d   d H d d H d  d H d d H d) d H d d H d d H d d H d$ "! d H d# d H d%'& d H d( d H d*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dApBYCNDIEGF d H dH d H dJLK d H dM d H dOTPRQ d H dS d H dUWV d H dX d H dZe[`\^] d H d_ d H dacb d H dd d H dfkgih d H dj d H dlnm d H do d H dqr}sxtvu d H dw d H dy{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d^ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d�/  d H d d H d   d H d d H d d H d d H d d H d d H d$ d H d d H d "! d H d# d H d%*&(' d H d) d H d+-, d H d. d H d0G1<27354 d H d6 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHSINJLK d H dM d H dOQP d H dR d H dTYUWV d H dX d H dZ\[ d H d] d H d_`axbmchdfe d H dg d H dikj d H dl d H dnsoqp d H dr d H dtvu d H dw d H dyz{}| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d    d H d d H d d H d d H d d H d d H d d d H d|M6 +!&"$# d H d% d H d')( d H d* d H d,1-/. d H d0 d H d243 d H d5 d H d7B8=9;: d H d< d H d>@? d H dA d H dCHDFE d H dG d H dIKJ d H dL d H dNeOZPUQSR d H dT d H dVXW d H dY d H d[`\^] d H d_ d H dacb d H dd d H dfqglhji d H dk d H dmon d H dp d H drwsut d H dv d H dxzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d;  d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d  d H d d H d $ d H d d H d d H d d H d d H d d H d "! d H d# d H d%0&+')( d H d* d H d,.- d H d/ d H d16243 d H d5 d H d798 d H d: d H d<k=T>I?D@BA d H dC d H dEGF d H dH d H dJOKML d H dN d H dPRQ d H dS d H dU`V[WYX d H dZ d H d\^] d H d_ d H dafbdc d H de d H dgih d H dj d H dlmxnsoqp d H dr d H dtvu d H dw d H dy~z|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d\ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d-�  d H d d H d  d H d d H d   d H d d H d d H d d H d" d H d d H d  d H d! d H d#($&% d H d' d H d)+* d H d, d H d.E/:05132 d H d4 d H d687 d H d9 d H d;@<>= d H d? d H dACB d H dD d H dFQGLHJI d H dK d H dMON d H dP d H dRWSUT d H dV d H dXZY d H d[ d H d]^_v`kafbdc d H de d H dgih d H dj d H dlqmon d H dp d H drts d H du d H dwx}y{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H dvI4)$ "! d H d# d H d%'& d H d( d H d*/+-, d H d. d H d021 d H d3 d H d5>6;798 d H d: d H d d<= d H d?D@BA d H dC d H dEGF d H dH d H dJaKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbmchdfe d H dg d H dikj d H dl d H dnsoqp d H dr d H dt du d H dwxyz{}| d H d~ d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d3 d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d(#! d H d" d H d$&% d H d' d H d).*,+ d H d- d H d/10 d H d2 d H d4a5J6A7<8:9 d H d; d H d=?> d H d@ d H dBGCED d H dF d H d dHI d H dKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbycndiegf d H dh d H djlk d H dm d H dotprq d H ds d H duwv d H dx d H dz{|~} d H d d H d d H d d H d d H d d H d d H d d H dO d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  � d H d d H d d H d d H d d H d d H d d d H d    d H d d H d d H d d < d d H d d H d d H d d H d!8"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9D:?;=< d H d> d H d@BA d H dC d H dEJFHG d H dI d H dKML d H dN d H dPQRiS^TYUWV d H dX d H dZ\[ d H d] d H d_d`ba d H dc d H degf d H dh d H djukplnm d H do d H dqsr d H dt d < dv{wyx d H dz d H d|~} d H d d H d d H d d H d d H d d < d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H do@) d H d d H d d H d d H d$ "! d H d# d H d%'& d H d( d H d*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dAXBMCHDFE d H dG d H dIKJ d H dL d H dNSOQP d H dR d H dTVU d H dW d H dYdZ_[]\ d H d^ d H d`ba d H dc d H dejfhg d H di d H dkml d H dn d H dpqr}sxtvu d H dw d H dy{z d H d| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d, d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d�  d H d d H d  d H d d H d  d H d d H d d H d d H d! d d H d d H d d H d"'#%$ d H d& d H d(*) d H d+ d H d-\.E/:05132 d H d4 d H d687 d H d9 d H d;@<>= d H d? d H dACB d H dD d H dFQGLHJI d H dK d H dMON d H dP d H dRWSUT d H dV d H dXZY d H d[ d H d]t^i_d`ba d H dc d H degf d H dh d H djokml d H dn d H dprq d H ds d H duv{wyx d H dz d H d|~} d H d d H d d H d d H d d H d d H d � M d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d    d H d d H d d H d d H d d H d d H d d H d d H d6 +!&"$# d H d% d H d')( d H d* d H d,1-/. d H d0 d H d243 d H d5 d H d7B8=9;: d H d< d H d>@? d H dA d H dCHDFE d H dG d H dIKJ d H dL d H dNO~PgQ\RWSUT d H dV d H dXZY d H d[ d H d]b^`_ d H da d H dced d H df d H dhsinjlk d H dm d H doqp d H dr d H dtyuwv d H dx d H dz|{ d H d} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d $ d d d H d d H d d H d d H d d H d d H d d H d������ d H d� d H d��� d H d� d H d� �� �k� �<��%������� d H d� d H d��� d H d� d H d�� ��� d H d� d H d�!�#�" d H d�$ d H d�&�1�'�,�(�*�) d H d�+ d H d�-�/�. d H d�0 d H d�2�7�3�5�4 d H d�6 d H d�8�:�9 d H d�; d H d�=�T�>�I�?�D�@�B�A d H d�C d H d�E�G�F d H d�H d H d�J�O�K�M�L d H d�N d H d�P�R�Q d H d�S d H d�U�`�V�[�W�Y�X d H d�Z d H d�\�^�] d H d�_ d H d�a�f�b�d�c d H d�e d H d�g�i�h d H d�j d H d�l��m��n�y�o�t�p�r�q d H d�s d H d�u�w�v d H d�x d H d�z��{�}�| d H d�~ d H d��� d H d� d H d������� d H d� d H d��� d H d� d H d����� d H d� d H d��� d H d� d H d��������� d H d� d H d��� d H d� d H d����� d H d� d H d��� d H d� d H d������� d H d� d H d��� d H d� d H d����� d H d� d H d��� d H d� d H d�*����������� d H d� d H d��� d H d� d H d����� d H d� d H d��� d H d� d H d������� d H d� d H d��� d H d� d H d����� d H d� d H d��� d H d� d H d����� d H d d H d d H d d H d    d H d d H d d H d d H d d H d d H d d H d d H d %!#" d H d$ d H d&(' d H d) d H d+Z,C-8.3/10 d H d2 d H d465 d H d7 d H d9>:<; d H d= d H d?A@ d H dB d H dDOEJFHG d H dI d H dKML d H dN d H dPUQSR d H dT d H dVXW d H dY d H d[r\g]b^`_ d H da d H dced d H df d H dhmikj d H dl d H dnpo d H dq d H ds~tyuwv d H dx d H dz|{ d H d} d H d d H d d H d d H d d H dH d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d $ d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d3(#! d H d" d H d$&% d H d' d H d).*,+ d H d- d H d/10 d H d2 d H d4?5:687 d H d9 d H d;=< d H d> d H d@C dAB d H dDFE d H dG d H dIJyKbLWMRNPO d H dQ d H dSUT d H dV d H dX]Y[Z d H d\ d H d^`_ d H da d H dcndiegf d H dh d H djlk d H dm d H dotprq d H ds d H duwv d H dx d H dz{|}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d h 9 "   d H d d H d d H d d H d d H d d H d  d H d! d H d#.$)%'& d H d( d H d*,+ d H d- d H d/4021 d H d3 d H d576 d H d8 d H d:Q;F<A=?> d H d@ d H dBDC d H dE d H dGLHJI d H dK d H dMON d H dP d H dR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H dijkvlqmon d H dp d H drts d H du d H dw|xzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d' d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d"  d H d! d H d#%$ d H d& d H d(W)@*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dALBGCED d H dF d H dHJI d H dK d H dMRNPO d H dQ d H dSUT d H dV d H dXoYdZ_[]\ d H d^ d H d`ba d H dc d H dejfhg d H di d H dkml d H dn d H dp{qvrts d H du d H dwyx d H dz d H d|}~ d H d d H d d H d d H dH d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d1&! d H d d H d"$# d H d% d H d',(*) d H d+ d H d-/. d H d0 d H d2=38465 d H d7 d H d9;: d H d< d H d>C?A@ d H dB d H dDFE d H dG d H dIJyKbLWMRNPO d H dQ d H dSUT d H dV d H dX]Y[Z d H d\ d H d^`_ d H da d H dcndiegf d H dh d H djlk d H dm d H dotprq d H ds d H duwv d H dx d H dz{|}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d h 9 "   d H d d H d d H d d H d d H d d H d  d H d! d H d#.$)%'& d H d( d H d*,+ d H d- d H d/4021 d H d3 d H d576 d H d8 d H d:Q;F<A=?> d H d@ d H dBDC d H dE d H dGLHJI d H dK d H dMON d H dP d H dR]SXTVU d H dW d H dY[Z d H d\ d H d^c_a` d H db d H ddfe d H dg d H dijkvlqmon d H dp d H drts d H du d H dw|xzy d H d{ d H d}~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d' d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d   d H d d H d  d H d d H d d H d d H d d H d d H d"  d H d! d H d#%$ d H d& d H d(W)@*5+0,.- d H d/ d H d132 d H d4 d H d6;798 d H d: d H d<>= d H d? d H dALBGCED d H dF d H dHJI d H dK d H dMRNPO d H dQ d H dSUT d H dV d H dXoYdZ_[]\ d H d^ d H d`ba d H dc d H dejfhg d H di d H dkml d H dn d H dp{qvrts d H du d H dwyx d H dz d H d|}~ d H d d H d d H d d H d G d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d  d H d d H d   d H d d H d d H d d H d d H d d H d0%  d H d d H d!#" d H d$ d H d&+')( d H d* d H d,.- d H d/ d H d1<27354 d H d6 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHIxJaKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbmchdfe d H dg d H dikj d H dl d H dnsoqp d H dr d H dtvu d H dw d H dyz{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d  d H d � d H d    d H d  d H d    g  8  !        d H d  d H d    d H d  d H d      d H d  d H d    d H d d H d " - # ( $ & % d H d ' d H d ) + * d H d , d H d . 3 / 1 0 d H d 2 d H d 4 6 5 d H d 7 d H d 9 P : E ; @ < > = d H d ? d H d A C B d H d D d H d F K G I H d H d J d H d L N M d H d O d H d Q \ R W S U T d H d V d H d X Z Y d H d [ d H d ] b ^ ` _ d H d a d H d c e d d H d f d H d h  i  j u k p l n m d H d o d H d q s r d H d t d H d v { w y x d H d z d H d | ~ } d H d  d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d  &           d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d �   d H d  d H d      d H d d H d   d H d  d H d        d H d  d H d    d H d  d H d  !    d H d d H d " $ # d H d % d H d ' V ( ? ) 4 * / + - , d H d . d H d 0 2 1 d H d 3 d H d 5 : 6 8 7 d H d 9 d H d ; = < d H d > d H d @ K A F B D C d H d E d H d G I H d H d J d H d L Q M O N d H d P d H d R T S d H d U d H d W n X c Y ^ Z \ [ d H d ] d H d _ a ` d H d b d H d d i e g f d H d h d H d j l k d H d m d H d o z p u q s r d H d t d H d v x w d H d y d H d {  | ~ } d H d  d H d   d H d d H d       H             d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d           d H d d H d   d H d d H d     d H d d H d  � d H d  d H d        d H d  d H d   d H d d H d      d H d  d H d    d H d  d H d  1  &  !    d H d d H d " $ # d H d % d H d ' , ( * ) d H d + d H d - / . d H d 0 d H d 2 = 3 8 4 6 5 d H d 7 d H d 9 ; : d H d < d H d > C ? A @ d H d B d H d D F E d H d G d H d I  J y K b L W M R N P O d H d Q d H d S U T d H d V d H d X ] Y [ Z d H d \ d H d ^ ` _ d H d a d H d c n d i e g f d H d h d H d j l k d H d m d H d o t p r q d H d s d H d u w v d H d x d H d z  {  |  }  ~ d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d           d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d    � d H d  d H d    d H d  d H d    h  9  "        d H d  d H d    d H d  d H d      d H d  d H d    d H d ! d H d # . $ ) % ' & d H d ( d H d * , + d H d - d H d / 4 0 2 1 d H d 3 d H d 5 7 6 d H d 8 d H d : Q ; F < A = ? > d H d @ d H d B D C d H d E d H d G L H J I d H d K d H d M O N d H d P d H d R ] S X T V U d H d W d H d Y [ Z d H d \ d H d ^ c _ a ` d H d b d H d d f e d H d g d H d i  j  k v l q m o n d H d p d H d r t s d H d u d H d w | x z y d H d { d H d }  ~ d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d  '           d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d      �   d H d d H d    d H d  d H d      d H d d H d   d H d  d H d        d H d  d H d    d H d  d H d  "    d H d ! d H d # % $ d H d & d H d ( W ) @ * 5 + 0 , . - d H d / d H d 1 3 2 d H d 4 d H d 6 ; 7 9 8 d H d : d H d < > = d H d ? d H d A L B G C E D d H d F d H d H J I d H d K d H d M R N P O d H d Q d H d S U T d H d V d H d X o Y d Z _ [ ] \ d H d ^ d H d ` b a d H d c d H d e j f h g d H d i d H d k m l d H d n d H d p { q v r t s d H d u d H d w y x d H d z d H d |  }  ~ d H d d H d   d H d d H d  G             d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d d H d       d H d d H d   d H d d H d     d H d d H d   d H d d H d         d H d d H d   d H d d H d     d H d d H d   d H d� d H d  d H d d H d   d H d d H d d H d d H d d H d d H d0%  d H d d H d!#" d H d$ d H d&+')( d H d* d H d,.- d H d/ d H d1<27354 d H d6 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHIxJaKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbmchdfe d H dg d H dikj d H dl d H dnsoqp d H dr d H dtvu d H dw d H dyz{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H dg 8 !    d H d d H d d H d d H d d H d d H d d H d d H d"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9P:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQ\RWSUT d H dV d H dXZY d H d[ d H d]b^`_ d H da d H dced d H df d H dhijukplnm d H do d H dqsr d H dt d H dv{wyx d H dz d H d|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d& d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d! d H d d H d"$# d H d% d H d'V(?)4*/+-, d H d. d H d021 d H d3 d H d5:687 d H d9 d H d;=< d H d> d H d@KAFBDC d H dE d H dGIH d H dJ d H dLQMON d H dP d H dRTS d H dU d H dWnXcY^Z\[ d H d] d H d_a` d H db d H ddiegf d H dh d H djlk d H dm d H dozpuqsr d H dt d H dvxw d H dy d H d{|~} d H d d H d d H d d H dG d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H $ d H d d H d d H d d H d� d H d  d H d d H d   d H d d H d d H d d H d d H d d H d0%  d H d d H d!#" d H d$ d H d&+')( d H d* d H d,.- d H d/ d H d1<27354 d H d6 d H d8:9 d H d; d H d=B>@? d H dA d H dCED d H dF d H dHIxJaKVLQMON d H dP d H dRTS d H dU d H dW\XZY d H d[ d H d]_^ d H d` d H dbmchdfe d H dg d H dikj d H dl d H dnsoqp d H dr d H dtvu d H dw d H dyz{|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H dg 8 !    d H d d H d d H d d H d d H d d H d d H d d H d"-#($&% d H d' d H d)+* d H d, d H d.3/10 d H d2 d H d465 d H d7 d H d9P:E;@<>= d H d? d H dACB d H dD d H dFKGIH d H dJ d H dLNM d H dO d H dQ\RWSUT d H dV d H dXZY d H d[ d H d]b^`_ d H da d H dced d H df d H dhijukplnm d H do d H dqsr d H dt d H dv{wyx d H dz d H d|~} d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d& d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d  d H d d H d   d H d d H d d H d d H d d H d d H d! d H d d H d"$# d H d% d H d'V(?)4*/+-, d H d. d H d021 d H d3 d H d5:687 d H d9 d H d;=< d H d> d H d@KAFBDC d H dE d H dGIH d H dJ d H dLQMON d H dP d H dRTS d H dU d H dWnXcY^Z\[ d H d] d H d_a` d H db d H ddiegf d H dh d H djlk d H dm d H dozpuqsr d H dt d H dvxw d H dy d H d{|~} d H d d H d d H d d H dF d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d H d d H d d H d d H d  d H d d H d  d H d d H d  d H d d H d d H d d H d/$ d H d d H d "! d H d# d H d%*&(' d H d) d H d+-, d H d. d H d0;16243 d H d5 d H d798 d H d: d H d<A=?> d H d@ d H dBDC d H dE d H dGHwI`JUKPLNM d H dO d H dQSR d H dT d H dV[WYX d H dZ d H d\^] d H d_ d H dalbgced d H df d H dhji d H dk d H dmrnpo d H dq d H dsut d H dv d H dxyz{}| d H d~ d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d d H d� d H d d H d d H d d H d d d d d    d H d d H d d H d d H d d H d d H d d d $ d d d! d" d#$ d% d&+' d( d) d* d m d,-l.]/;041 m2 m3 m m d58 m6 m7 d m9 m: m d m<@= d> d? d m dADB dC d m dE[F mG mH dI dJ dK dL dM dN dO dP dQ dR dSWT dU dV d m dX dY dZ d m d\ m d m^g_c` da db d m dd de df d m d mhi dj dk d m dmnwos mp mqr m m dt du dv d m dx|y dz d{ d m d} d~ d d m d d d d m d d d d m d m m d m m d m m m d m d m d m m d m m m m d m d d d m d m d d d m d m d m d m m d d d d m d d d d d  r#C. d d d Œ d= d d d d d d d d  d d d s d d d d d V d d  d d d d r d s d d  d d d d d d d d d Z d d d 7 d$� d d i d d d ` d   d d Ʒ d d d d    3_  d d s d d d r d! d d d" d# d  d%1&* '( d) d Œ d+., d- d d/ d0 d  d29364 d5 d d7 d8 d  d d:; d< d d>m?T@LAE BC dD d  dFIG dH d  dJ dK d ï dM dNQO dP d ` dR dS d  dU^VZW dX dY d s d d[\ d] d d_f`ca db d dd de d dgjh di d  dk dl d  dnoupq  Œrs dt d ï dvy dwx d dz}{ d| d  d~ d d ï d d d d d d  d d d d                 d d V d d d d i d d d  d y d d Z d d d d d d Œ d d d d d d d 7 d d d x d d d y d  d d d  d d d ï d d d d Z d d d d d d d y  ï d d d d d ܹ d d d  d d d d d d d d d d dO�. $ $ $ $ $ d d $ d d  $   d d $ d d d d d d $ d d d d d d d $ d $ d! d" d#*$'% d& d $ d( d) d $ d+ $, d- d $ d/ d0F19 $2 $34 d5 d6 d7 d8 d $ d:A; $< d= d> d? d@ d $ dB $C dD dE d $ d $GH d $IJ dK dL dM dN d $ dPtQ dR[ $ST $U $V dW dX dY dZ d $ d\l]c d^_ d` da db d $ dd $e df dg dh di dj $ $k d $ $mn $o dp dq dr d $s $ du dv $ $w $x $yz d{ d| d $}~ d $ $ d d d d d d i d d d y d ï d d ï d  d d d d d d s d d d d ï d Ʒ   d d d s d d d d  d d d d d d r d d d  d d d d d d  d d d Œ d  d d d d d d d d d d Z d d d d d d d d d d d d d ` d d ƙ d#Q d d d d d d d d d d r d d ï d d� d d d  d d i d d d  d  d d d d d 7 d d d d d d d d d d ï d8 ,!("%# d$ d Z d& d' d s d d)* d+ d d-4.1/ d0 d Ʒ d2 d3 d ï d y56 d7 d G d9E:A;>< d= d  d? d@ d s dB ˘C dD d G dFJG H dI d $e dKNL dM d dO dP d  dRSiT]UY VW dX d d GZ[ d\ d d^e_b` da d ï dc dd d  d dfg dh d ï djkol ïm dn d 7 dpsq dr d W dt du dv dw x y z { | } ~         d d d d d  d  d d d  d d ` d d r d d d  d d d         Y3 YB 4? S X X YQ X Y  4? Y` Y` Xr Yp Y~ Y Y Y 7 X Y Y Y Z X Ƒ   o o ` }  ` S X z 7 Yp Xr Y~  X   4? o     K    � �   YB   �       4? }  d d d d d d d  d d Z d  d d dK8 ,!("%# d$ d d& d' d Œ d) d* d+ d  d-4.1/ d0 d Z d2 d3 d  d 56 d7 d r d9B:> d;< d= d ï d d?@ dA d 7 dCGD rE dF d d dHI dJ d dLMNORP dQ d  dS dT dU d V W XY Z [ \ ]^k _ `a be c d figh <  j H lvm nro pq  st u 02w x yz}{| # ~   02  d d  d d d ˘ d ˘ d d ï d d d d Z d  d d ï d                  ց  d d d d d d d d d < d d d Œ d d d Ʒ d d d d  d  d d d d d d d d d d d d d L d d d d d d s d d d d ï d d d d  d  d d ï d d d d Ʒ d d d d d d ƙ d� d d ï d d d d               65 d d d y d d d Œ d ï! d" d d$%&y'=(7)0*-+ d, d y d. d/ d d142 d3 d ï d5 d6 d d89 d : d; d< d d>p?C@ dA dB d ï dDmE F G H IJ K L M N O P Q RbS]TWU V X[YZ Q& \ s ^ _ `a w Tc d ef gh i j k l 6  Tn do d 7 dqu drs dt d ï dv w dx d dz{|}~ d d ƙ d d d Ʒ d d d  d d d d  d d d  d d d d d d d d d y d d ï d Z s d d d d d d d d d d d d d Œ d d d 7 d d d d d d d d d d y d d d d  d d d ҉ d d d i d Ʒ d d ` d  d d  d Œ d d  d y d d d d d Z d d d d ` d d d d d d d G d d d ï d\�) d d d G d   d d s d d d d  d d d d d d ï d k d" d d d d! d  d#&$ d% d d' d( d  d*C+:,3-0. d/ d y d1 d2 d  d475 d6 d Œ d8 d9 d ҉ d;?< d= d> d d@ dA dB d Œ dDPEI dFG dH d dJMK dL d ï dN dO d Œ dQXRUS dT d > dV dW d  d dYZ d[ d d]^t_k`gadb dc d ï de df d  d dhi dj d Œ dlpm xn do d dq dr ds d ï duvz dwx dy d d{~| d} d  d d d ` d  d d d d d d d d ' d d d d d d d d d d Z d r d d d d d  d d d y d  d d Œ d  d d d  d d ï d  d d  d  d d dC r d d r d d d d d d ï d d d d d d d d d d ï d d d  d d d  d d d d d d d d d d d d d d d '& d d d d d d d d d d d� d '& d d d d d d d d d d d d d $e d d d d d d 7 d d G1"! d d ƨ d d d Z d ï#*$'% d& d d( d) d Z d+., d- d  d/ d0 d d273 d4 5 d6 d ï d8<9 : d; d d=@> d? d dA dB d ҉ dDE}FqGpHKI dJ d dL M N O^P Q R S T UV W XY Z [ \ ] _ ` a b c d e f g h i jkm l ߡno ߡ 6 ҉rv st du d dwzx dy d d{ d| d  d~ d d d d d ï d  d d  d Œ d d Z d d d d d d d Ʒ d d s d d d d d d Ʒ d d d r d d d s d d d d d d d  d d  d  d d d  d d d d d  d d d i d` d d d Z d   d d d d d d d d d d d d d d d d d $ d d d d d d d d d $ d d d d Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ� Œ Œ Œ Œ M Œ Œ Œ  ~ 4l W   M ~ \ Œ d d d d d ï dTM d d Ʒ d d d    ! "# $ % & ' ( ) * + , -. / 0 1 2 3 4 56 7 8 9 : ; < => ? @A B CD E FG H I J KL NQO dP d y dR dS d dUYV W dX d Z dZ][ d\ d ï d^ d_ d y da}bqcjdge df d dh di d ` dknl dm d do dp d drvs rt du d dwzx dy d Z d{ d| d d~  d d Ʒ d d d  d d d 7 d d d  d d d  d  d d ï d d d d ï d Z i d d d d d d d d ï d d d d d d d d d ï d d d  d d d d d d y d d d ï d i d d ï d  d d Z d d d G d d d d d d d d d d d d Z d d d V d d d Œ d d d  d  d d  d s y d d d d d Z d�R:  d d Ʒ d d d d  d d d6 d d Œ d ï ï ï ï ï ï ï ï ï ï ï ï ï! ï" ï# ï ï$% ï& ï' ï( ï ï)* ï+ ï, ï ï- ï./ ï0 ï1 ï ï23 ï4 ï5 ï ï 7 8 d9 d d;F<? => d ï d@CA dB d Œ dD dE d  dGNHKI dJ d k dL dM d dO ïP dQ d ï dSlT]UV d rWZX dY d d[ d\ d 7 d^e_b` da d dc dd d  dfig dh d s dj dk d z dmvnr dop dq d s ds t du d dw~x{y dz d ` d| d} d Ʒ d 7 d d i d d d Ʒ d d d d d d ƙ d d d Ʒ d  d d Œ d ƨ d d  d d d d d d d d d d d d ƨ d d d Ʒ d d d s d d d d d d ï d d d ï d d d  d d d d d d d d  d Z d d  d d d d ï d  d d  d d d Œ d d d d  dL d d d i d d d ï d y y y y y y 6 p  d d  d� d d d Z d   d d ˘ d d d ï d  d d Z d d d i d ï d d r d d d Z d d d d <!-")#&$ d% d d' d( d ï d* + d, d i d.5/20 d1 d Ʒ d3 d4 d d697 d8 d Ʒ d: d; d d=C>B? ï@ dA d L d r DKEHF dG d dI dJ d ս d d ҉MtNdO[PWQTR dS d  dU dV d dX yY dZ d Z d\`] d^ d_ d ҉ d ab dc d dekfg G sh i dj d dlp Zmn do d z dq r ds d ï duvw~x{y dz d Œ d| d} d d d d ƨ d d d i d ï d  d d 7 d ï d d d d d d d d d ` d d d d d d Z d d d d d d d                      X      X %"J! p  d ` d d d d d i d d d d d Z d d s d d ƙ d d d d d Ʒ d d d d d d d s d  d d d d d d d d d Ʒ d � d  d  d    d  d  d  d  d  d   d d d  d  d  d  d  d  d Z d  D  -  "    d  d  d  d ï d  d  d d ! d s d # ( $ d % d & d ' d d ) d * d + d , d ƨ d . 9 / 4 0 d 1 d 2 d 3 d Z d 5 d 6 d 7 d 8 d d : ? ; d < d = d > d Z d @ d A d B d C d š d E \ F Q G L H d I d J d K d d M d N d O d P d d R W S d T d U d V d d X d Y d Z d [ d ű d ] e ^ ` _ d d a d b d c d d d d f k g d h d i d j d d l d m d n d o d s d q  r  s  t  u z v d w d x d y d d { d | d } d ~ d ï d   d d d d d d d d d i d     d d d d ï d d d d d ï d   d d d d d d d d d d     d d d d d ï d   d d d d d d d d d d     d d ï d d d d d ս d   d d d d  d d d       d d d d d ï d d d Z d     d d d d d d d d d Z d   d d d d s d d d d d ï d       d d d d d d d d d d   d d d d  d d s d !!� d! d! d! d! d Z d!! ! d! d! d! d š d! d! d! d! d i d!!!!U!!4!!%!!!!! d x d! d! d! d! d i d!! ! d d!! d!" d!# d!$ d ï d!&!.!'!,!( d!) d!* d!+ d r d!- d  d d!/!0 d!1 d!2 d!3 d 7 d!5!F!6!;!7!9!8 d d!: d d!<!A!= d!> d!? d!@ d :y d!B d!C d!D d!E d d!G!J!H d!I d d!K!P!L d!M d!N d!O d i d!Q d!R d!S d!T d ï d!V!z!W!k!X!c!Y!^!Z d![ d!\ d!] d d!_ d!` d!a d!b d Z d!d!i!e d!f d!g d!h d s d!j d V d!l!w!m!r!n d!o d!p d!q d ï d!s d!t d!u d!v d ï d d!x!y d d!{!!|!!}!!~ d! d! d! d Z d! d! d! d! d y d!!! d! d! d! d ˘ d! d! d! d! d L d!!!!! d! d! d! d d! d! d! d! d d!!! d  d! d! d! d! d  d!!!!!!!!!!! d! d! d! d ï d! d! d! d! d d!!! d! d! d! d d! d! d! d! d ` d!! d!! d! d! d! d Z d!!! d d! d! d! d! d d!!!!!!! d! d! d! d r d! d! d! d! d ï d!!! d! d! d! d d! d! d! d! d ` d!!! d! d! d! d! d d d!! d d!"!!" !!!!! d! d! d! d d! d! d! d! d  d"�"" d" d" d" d  d" d" d" d" d x d" "" "" d" d" d" d V d" d" d" d" d ` d""" d" d" d" d  d" d" d" d" d š d"""9"#"."$")"% d"& d"' d"( d  d"* d"+ d", d"- d d"/"4"0 d"1 d"2 d"3 d Z d"5 d"6 d"7 d"8 d y d":"B";"@"< d"= d"> d"? d ï d"A d d"C"H"D d"E d"F d"G d Z d"I d d"K#"L""M""N"r"O"^"P"X"Q"S"R d ` d"T d"U d"V d"W d  d d"Y"Z d"[ d"\ d"] d Œ d"_"j"`"e"a d"b d"c d"d d d"f d"g d"h d"i d ҉ d"k"p"l d"m d"n d"o d ï d"q d ƙ d"s""t""u"z"v d"w d"x d"y d r d"{ d"| d"} d"~ d ï d" d" d  d""""" d" d" d" d ï d" d" d" d" d x d""" d" d" d" d  d" d" d" d" d y d""""""" d" d" d" d" d ï d""" d" d" d" d d" d" d" d" d d"" d"" d d""" d" d" d" d  d" d" d" d" d ` d""""""" d" d" d" d d" d" d" d" d d""" d" d" d" d s d" d" d" d" d  d""""" d ` d" d" d" d" d Ʒ d" d" d" d" d" d Œ d"#v"# """"""" d" d" d" d ҉ d" d" d" d" d d" d" d" d" d" d d"#""" d  d" d" d" d#� d ƨ d### d# d# d# d Ʒ d# d# d# d# d s d# #9##### d# d# d# d# d ## # # # 8 # d# d# d# d Z d# #4#! d#" d## d#$ d#% d#& #' #( #) #* #+ #, #- #.#/ #0 #1 #2 #3 ',#5 d#6 d#7 d#8 d d#:#k#;#=#< d d#> d#? d#@ d#A d#B d#C#[#D à#E à#F à#G à#H à#I à#J à#K à#L à#M à#N#V#O#S à#P#Q#R à 3 à 4/#T à#U à à 4/#W à#X à#Y#Z 3 4/ R à à#\ à#]#^#b à#_#` à à#a 3 à#c#f#d à#e à 3 à#g#i#h à à 3 à#j à 3#l#q#m d#n d#o d#p d Œ d#r d#s d#t d#u d Q d#w##x##y##z##{ d#| d#} d#~ d d# d# d# d# d ï d# d# d d##### d# d# d# d s d# d# d# d# d ƨ d### d# d# d# d ï d# d# d# d# d Ʒ d#### d## d# d# d# d Z d### d# d# d# d ƨ d# d# d# d# d d##### d# d# d# d d# d# d# d# d s d d## d# d# d# d Ʒ d#$o#$######### d# d# d# d r d# d# d# d# d ï d### d# d# d# d d# d# d# d# d Œ d### d# d Z d### d# d# d# d ƨ d# d# d# d# d ï d#$##### d# d# d# d Œ d# d# d# d# d d#$�# d# d# d# d G d$ d$ d$ d$ d  d$$$$ $ d$ d$ d$ d  d$ d$ d$ d$ d d$$$ d$ d$ d$ d Œ d$ d$ d$ d$ d d$$I$$2$$*$ $%$! d$" d$# d$$ d d$& d$' d$( d$) d i d$+$-$, d Z d$. d$/ d$0 d$1 d ï d$3$>$4$9$5 d$6 d$7 d$8 d d$: d$; d$< d$= d i d$?$D$@ d$A d$B d$C d d$E d$F d$G d$H d d$J$^$K$S$L$N$M d s d$O d$P d$Q d$R d Ʒ d$T$Y$U d$V d$W d$X d s d$Z d$[ d$\ d$] d d$_$d$`$b$a d s d$c d d$e$j$f d$g d$h d$i d d$k d$l d$m d$n d  d$p$$q$$r$$s$|$t$y$u d$v d$w d$x d d$z d${ d r d d$}$~ d$ d$ d$ d d$$$$$ d$ d$ d$ d Œ d$ d$ d$ d$ d ` d$$$ d$ d$ d$ d ï d$ d$ d$ d$ d Z d$$$$$$$ d$ d$ d$ d ï d$ d$ d$ d$ d i d$$$ d y d$ d$ d$ d$ d  d$$$ d$ d$ d$ d$ d d$$$ d ƙ d$ d d$$$$$$$ d$ d$ d$ d$ d d$$$ d$ d$ d$ d y d$ d$ d$ d$ d  d$$$$$ d$ d$ d$ d Z d$ d  d$$$ d$ d$ d$ d Œ d$ d$ d$ d$ d ` d$$$$$$$ d$ d$ d$ d d$ d$ d$ d$ d Ʒ d$ d$ d d$$$$$ d$ d$ d$ d d$ d$ d$ d$ d  d$%%� d d% d% d% d% d ƨ d%'%&Y% %% %`% %:% %#% %%%% d% d% d% d Z d% d% d% d% d d%%% d% d% d% d ƨ d% d% d%! d%" d Z d%$%/%%%*%& d%' d%( d%) d d%+ d%, d%- d%. d ï d%0%5%1 d%2 d%3 d%4 d d%6 d%7 d%8 d%9 d d%;%R%<%G%=%B%> d%? d%@ d%A d d%C d%D d%E d%F d d%H%M%I d%J d%K d%L d d%N d%O d%P d%Q d d%S%X%T%V%U d  d%W d Œ d%Y%[%Z d d%\ d%] d%^ d%_ d d%a%%b%v%c%k%d%f%e d Z d%g d%h d%i d%j d i d%l%q%m d%n d%o d%p d ï d%r d%s d%t d%u d Ʒ d%w%%x%}%y d%z d%{ d%| d ƨ d%~ d% d% d% d d%%% d% d% d% d ï d% d% d% d% d d%%%%%%% d% d% d% d d% d% d% d% d ï d% d% d  d%%%%% d% d% d% d ` d% d% d% d% d ` d%%% d d% d% d% d% d Z d%&%%%%% d%%% d% d% d% d d% d% d% d% d Z d%%%%% d% d% d% d d% d% d% d% d 7 d%%% d% d% d% d d% d% d% d% d Ʒ d%%%%%%% d r d% d% d% d% d ï d%%% d% d% d% d ï d% d% d% d% d d%%%%% d% d% d% d x d% d% d% d% d ï d%%% d% d% d% d s d% d&� d& d& d ï d&&0&&&&&& & d& d& d& d W d& d& d& d& d z d&&& d d& d& d& d& d Œ d&&%&& & d& d& d& d d&! d&" d&# d&$ d à d&&&+&' d&( d&) d&* d Œ d&, d&- d&. d&/ d ƨ d&1&H&2&=&3&8&4 d&5 d&6 d&7 d d&9 d&: d&; d&< d d&>&C&? d&@ d&A d&B d  d&D d&E d&F d&G d Z d&I&Q&J&O&K d&L d&M d&N d Z d&P d d&R&W&S d&T d&U d&V d y d&X d d&Z&&[&&\&y&]&l&^&i&_&d&` d&a d&b d&c d d&e d&f d&g d&h d Z d d&j&k d d&m&s&n d&o d&p d&q d&r d d&t d&u d&v d&w d&x d Z d&z&&{&&|&~&} d Z d& d& d& d& d  d&&& d& d& d& d d& d& d& d& d  d&& d&& d& d& d& d s d&&& d& d& d& d ï d& d& d& d& d d&&&&&&&&& d& d& d& d > d& d& d& d& d ƨ d&&& d& d& d& d Z d& d& d& d& d s d&&& d& d d&&& d& d& d& d d& d& d& d& d d&&&&&&& d& d& d& d Œ d& d& d& d& d z d& d& d& d& d& d Œ d&&&&& d :y d& d& d& d& d V d&&& d& d& d& d r d& d& d& d& d d&'I&'&' &&&&& d& d& d& d ï d& d& d& d& d ï d&''� d' d' d' d Ʒ d' d' d' d' d d' '' d' d' d' d' d d''' d' d' d' d > d' d' d' d' d ï d''7''(''#' d' d'! d'" d d'$ d'% d'& d'' d ˘ d')'2'* d'+ d s', s'- s'.'/ s'0 s'1 s s'3 d'4 d'5 d'6 d ` d'8'C'9'>': d'; d'< d'= d s d'? d'@ d'A d'B d d'D d'E d'F d'G d'H d r d'J't'K']'L'R'M d'N d'O d'P d'Q d d'S'X'T d'U d'V d'W d Z d'Y d'Z d'[ d'\ d d'^'i'_'d'` d'a d'b d'c d Œ d'e d'f d'g d'h d d'j'o'k d'l d'm d'n d 7 d'p d'q d'r d's d d'u''v''w'|'x d'y d'z d'{ d d'} d'~ d' d' d  d''' d' d' d' d x d' d' d' d' d ï d''''' d' d' d' d ï d' d  d''' d' d' d' d d' d' d' d' d  d') '(j'(''''''''' d' d' d' d 7 d' d' d' d' d d''' d' d' d' d ` d' d' d' d' d d''''' d' d' d' d Œ d' d' d' d' d ս d''' d' d' d' d  d' d' d' d' d  d'(''''' d' d' d' d d' d' d' d' d d' d' d' d ''' '' ' ' ' ' ' ' ' ' ' ' ' ' ' '   ' ' ' ' ' ' ' ' ' (� ( ( ( ( ( (  % ((( (( d( d( d( d Z d( d d((( d( d( d( d d( d( d( d( d ` d((F((/(()(($( d(! d(" d(# d Z d(% d(& d(' d(( d ƨ d(*(-(+ d(, d y d(. d Z d(0(;(1(6(2 d(3 d(4 d(5 d d(7 d(8 d(9 d(: d s d(<(A(= d(> d(? d(@ d d(B d(C d(D d(E d Z d(G(V(H(P(I(N(J d(K d(L d(M d ƨ d(O d  d(Q d(R d(S d(T d(U d Ʒ d(W(_(X(Z(Y d d([ d(\ d(] d(^ d d(`(e(a d(b d(c d(d d d(f d(g d(h d(i d y d(k((l((m((n(y(o(t(p d(q d(r d(s d d(u d(v d(w d(x d  d(z(|({ d d(} d(~ d( d( d d((((( d( d( d( d d( d( d( d( d d((( d( d( d( d d( d( d( d( d ï d((((((( d( d( d( d Z d( d( d( d( d d( d( d ƨ d((( d( d( d( d( d  d((( d( d( d( d  d( d( d( d( d y d((((((((( d( d( d( d d( d( d( d( d ï d((( d( d( d( d d( d i d((((( d( d( d( d ҉ d( d( d( d( d Ʒ d( d( d ` d((((((( d( d( d( d ï d( d( d( d( d d((( d( d( d( d  d( d d()�((( d( d( d( d ҉ d( d( d( d( d ï d))) d) d) d) d  d) d) d) d) d d) -) -)):))&))))) d) d) d) d Œ d) d) d) d) d Z d))!) d) d) d) d ` d)" d)# d)$ d)% d ï d)')2)()-)) d)* d)+ d), d V d). d)/ d)0 d)1 d ï d)3)5)4 d Z d)6 d)7 d)8 d)9 d Z d);)M)<)B)= d)> d)? d)@ d)A d Z d)C)H)D d)E d)F d)G d  d)I d)J d)K d)L d  d)N)T d)O)P d)Q d)R d)S d ï d)U)Z)V d)W d)X d)Y d d)[ d)\ d)] d)^ d)_+)`*)a )b )c )d )e*)f))g )h))i))j))k)x)l)r)m)p)n)o  }3 }3 x:)q o5 u N)s)v)t)u Tg o5 u N)w o5 x: o5)y)~)z)| }3){ o5 }3)} o5 ^ tI)))) | tI x: )) Tg o5 o5 x:)))))) )  T))  tI o5 Tg)) Tg) }3 o5)) Tg y tI u))))))  ~G  Tg)) tI x: N tI)))) x: T tI u u ))) ))) x: x:)  x:)  ) o5 ) )))   o5)  )  x:) )))))))))  th T)) tI oS }3 xI)))) }3 tI  u)) } tI  o5)))) o5) o5 tI)) tI o5 tI x:))) }3 }3 o5)) tI   tI) )))))) u   tI)) u tI  T)))) xI T |m t)) tI T Tg )*) ) ) ) ) ) ) ) ) ))) )))))))) xg | T T)) x s o o5))))  } T U�) T o ) )) T)  y* ) ^ *�  * * **   T* * * * * * * * * * * * * * *   T*  ** * * * * * *  T  * *! *" *# *$ *% *& *' *( *)** *+ *, *-*m*.*C*/ *0 *1 *2*>*3*8*4*6*5 T tI *7 T  T*9*<*:*; i xg Tg *=   T*? *@ *A*B T  T *D*]*E*K*F *G *H *I  T*J T *L *M*Z*N*T*O*R*P*Q T   T*S T  T*U*X*V*W T  T  T*Y T *[ *\  T *^*f*_ *` *a *b*d xg*c } xg*e  xg *g *h *i *j *k*l  x: o5 *n+Z*o**p**q**r*~*s*x*t*v*u T Tg |*w T T x:*y*{*z T } T*|*} o T  T****** T  T T** o oS o5 }**** tI y | u** tI i  T******** i }3 }3 T** } o5 u sP**** xg  | ~G*   y******* T U� Tg T**  T  T** T* Tg o** o T T x+******** i* T i**  T xg o**** x T  x:** s N T i****** Tg T x: T**  T o5 x**** T  u  tI*  xg********  T  T**  tI o |**** T s y* o5 T* }3 **** * xI ** T sP  T**** T xI o5 T** tI T y* tI*+ *+******** } T u T T* T u**** o  T T** }3 tI Tv *****  T sP** Tg Tv x sP*+�*  T Tg+ T T xg++++ +++ T T U�++ T T xg tI+ ++ + o |  th++ x   T++++++ T  T x+++ }3 s  T++++  T o5 T++ N T T +!+?+"+1+#+*+$+'+%+& | |m U� t+(+) T u } T+++.+,+- T T sP T+/+0 Tg th T xg+2+8+3+5 T+4 o +6+7 sP T T sP+9+<+:+; x o  y*+=+> |  x tI+@+M+A+G+B+E+C+D xg T  x+F T T +H+K+I+J T U� oS }+L T xI T+N+T+O+R+P+Q o5 tI  T+S T  T+U+X+V+W u  x  +Y  T+[++\++]+x+^+m+_+f+`+c+a+b  T T +d+e  T | o5+g+j+h+i xI T T ^+k+l x T sP T+n+r+o+q+p  T   T+s+u+t  U� +v+w } T sP tI+y++z++{+~+|+} o i xg ++  T  xg+++ T t: }3 T+ T o++++ T+ T }3+ T w T++ T+ sP x+ + o5 T+++++++ T++ | T T }++ + tI T++ T  T ++++ + xg +  T + ++ o5  T o5+++++ ++  x:  T++ +  u++ N |  T++++++ x  o5 ++ th T sP xg++++ xg U�  tI+  T + ++++++ +++  tI T +++  T o5++  o tI +  +++ T   }3++++ +++  i T  +++ x:  }3 +++  + }3 ++ tI +  | T+-r+ + + +++ + +  ++ + + + + + + + + + + + + +  Tg T,�-d ,,  ,,  , , , ,, , ,, ,n, ,=, ,#,,,,,,,, o5 T T  T, xg T,,,, xg T T o5 T xg,,, T, T th x:,,!, T } T," T x: ,$,1,%,,,&,),',( sP y* T }3,*,+ o T x U�,-,. T o,/,0 o T | s,2,8,3,5 T,4 T sP,6,7 T T x T,9,; xg,: o5 T T,< N T,>,W,?,J,@,E,A,C,B T T T,D } Tg },F,H },G T i T,I o5 }3,K,R,L,O,M,N o5 x T y*,P,Q y* | | },S,U,T T T T,V T T,X,e,Y,`,Z,],[,\ x T i s,^,_ sP T x+ T,a,c,b T T T,d i T x,f,j T,g,h,i tI T xg Tg,k T,l,m T Tv o xg,o,,p,,q,,r,x,s,u,t T T sP,v,w Tv T tI T,y,|,z,{ tI u o u,},~ T Tg N xg,,,,,, tI i tI T,, t: T x: w,,,, } }3 o5 ^,, th x x },,,,,,,, xI o xI | }3, sP },,,, T sP o5 s,, T y* o5 s,,,,,, tI i i oS,, N T ; x:,,, T i U� }3 T,,,,,,,, T, tI T, T T x:, T,, u T T u,,,,,, i T x T,, T | T T,,,,  o5 tI T,, T tI x: T,,,,,, T, xg T, T s }3,, T tI,, sP u T Tg,,,,, T  xg T, x T T,,, T x+ T T,-A,-,,,,,,,, , o |,, xI T o5 T,,,, T T |m t,, sP T T },,,,,, T T T T,, Tg th T ,, T, T sP,, T T  x,- ,-,-�,, tI T x T--  T T oS---- | }3 xI T-- }3 tI  tI- -- - - T u tI T--  T-- xg   }--2--%------ sP o i o5--  T  x+--"- -! y* o5 T o5-#-$ T sP T -&---'-*-(-) o5 T T -+-, xg T o -.-0-/ tI  t:-1 T th sP T-3-4-:-5-7-6 u T u-8-9 w  x x:-;->-<-= x: N N y-?-@ Tg }3 }3 }-B -C-X-D-K-E-H-F T-G o5 ~G o5-I T T-J x: T-L-R-M-O T-N x: T-P-Q xg tI | T-S-V-T-U T o5 o tI T-W  x:-Y -Z-a-[-^-\-] }3 tI  T-_-`  xg U� |-b -c  T  -e -f-g -h -i -j -k-n-l T-m T T o5-o-q-p T xg T  -s -t -u-v -w -x -y -z -{ -| -} -~----- x:-- - - - - ---- T }3 tI }-- x: }3 }3 - T- - - -----  - o xI---- T x:  T-- Tv T T x:- - -- T  i -  o5 T- -- T u x: --------- d- d- d- d y d- d- d- d- d d--- d- d- d- d d- d- d- d- d  d----- d- d- d- d d- d- d- d- d Z d--- d- d- d- d ï d- d- d- d- d d----- d- d d--- d- d- d- d d- d- d- d- d ï d----- d- d- d- d  d- d- d- d- d d--- d- d- d- d d- d- d- d- d 6b d.�.J..-...... . d. d. d. d ï d. d. d. d. d d... d. d. d. d à d. d. d. d. d z d.."... d  d. d. d. d.! d s d.#.(.$ d.% d.& d.' d d.) d.* d.+ d., d ï d...@./.:.0.5.1 d.2 d.3 d.4 d  d.6 d.7 d.8 d.9 d d.; d.< d.= d.> d.? d ï d.A.D.B d.C d ` d.E d.F d.G d.H d.I d  d.K.r.L.`.M.X.N.S.O d.P d.Q d.R d  d.T d.U d.V d.W d  d.Y.[.Z d Z d.\ d.] d.^ d._ d d.a.g.b d.c d.d d.e d.f d r d.h.m.i d.j d.k d.l d Z d.n d.o d.p d.q d Z d.s..t..u.z.v d.w d.x d.y d d.{ d.| d.} d.~ d ˘ d. d. d. d. d. d Z d... d. d d... d. d. d. d d. d. d. d. d Ʒ d.8.3.1;././E........... d d. d. d. d. d s d. d. d. d. d. d ï d..... d. d. d. d  d. d. d. d. d  d... d. d. d. d 7 d. d. d. d. d s d....... d. d. d. d d. d. d. d. d d... d. d. d. d d. d. d. d. d d..... d. d. d. d d. d  d... d. d. d. d d. d. d. d. d d././..... d. d. d. d i d. d. d. d. d r d... d  d/� d/ d/ d/ d s d//// / d/ d/ d/ d Œ d/ d/ d/ d/ d x d/// d/ d/ d/ d  d/ d/ d/ d/ d s d//.//(//#/ d/ d/! d/" d n d/$ d/% d/& d/' d x d d/)/* d/+ d/, d/- d Œ d///:/0/5/1 d/2 d/3 d/4 d Z d/6 d/7 d/8 d/9 d s d/;/@/< d/= d/> d/? d  d/A d/B d/C d/D d d/F//G/n/H/W/I/L d/J/K d d/M/R/N d/O d/P d/Q d  d/S d/T d/U d/V d d/X/c/Y/^/Z d/[ d/\ d/] d d/_ d/` d/a d/b d 7 d/d/i/e d/f d/g d/h d ï d/j d/k d/l d/m d d/o//p/{/q/v/r d/s d/t d/u d ï d/w d/x d/y d/z d V d/| d/} d/~ d/ d/ d d///// d ï d/ d/ d/ d/ d d/// d/ d/ d/ d d/ d/ d/ d/ d Ʒ d///////// d/ d/ d/ d ï d/ d/ d/ d/ d d/ d/ d  d///// d/ d/ d/ d d/ d/ d/ d/ d s d/// d/ d/ d/ d š d/ d/ d/ d/ d s d//// d// d/ d/ d/ d d/// d/ d/ d/ d ï d/ d/ d/ d/ d  d///// d/ d/ d/ d d/ d/ d/ d/ d i d/// d/ d/ d/ d x d/ d/ d/ d/ d d/0/0;/0//// d// d/ d/ d/ d ҉ d d// d/ d/ š/ š ( š/0/// d/ d/ d/ d Z d0� d0 d0 d0 d Z d00 0 d0 d0 d0 d ï d0 d0 d0 d0 d ï d00$00000 d0 d0 d0 d š d0 d0 d0 d0 d d000 d d0 d0! d0" d0# d ï d0%000&0+0' d0( d0) d0* d s d0, d0- d0. d0/ d ï d010602 d03 d04 d05 d Z d07 d08 d09 d0: d d0<0b0=0N0>0F0?0A0@ d d0B d0C d0D d0E d y d0G0L0H d0I d0J d0K d Ʒ d0M d d0O0W0P0R0Q d d0S d0T d0U d0V d d0X0]0Y d0Z d0[ d0\ d ű d0^ d0_ d0` d0a d d0c0w0d0o0e0j0f d0g d0h d0i d ï d0k d0l d0m d0n d ű d0p0r0q d d0s d0t d0u d0v d ï d0x00y0~0z d0{ d0| d0} d  d0 d0 d0 d0 d :y d d00 d y d00000000000 d0 d0 d0 d d0 d0 d0 d0 d d000 d0 d0 d0 d0 d0 š0 š0 š0 š0 š0 š š00 š0 š0 š š0 š00 š š00 š š c0 d0 d0 d0 d s d00000 d0 d0 d0 d d0 d0 d0 d0 d d000 d0 d0 d0 d d0 d0 d0 d0 d d00000 d0 d0 d0 d0 d  d d00 d0 d0 d0 d ï d00000 d0 d0 d0 d Z d0 d0 d0 d0 d 7 d0 d0 d0 d0 d0 d Ʒ d01 01�00000 d0 d0 d0 d d0 d0 d0 d0 d d000 d0 d0 d0 d d0 d0 d0 d0 d  d11 111 d r d1 d1 d1 d1 d s d d1 1 d  d1 1$11111 d1 d1 d1 d d1 d1 d1 d1 d y d111 d1 d1 d1 d d1 d1! d1" d1# d y d1%101&1+1' d1( d1) d1* d  d1, d1- d1. d1/ d d111612 d13 d14 d15 d d17 d18 d19 d1: d s d1<21=11>1|1?1X1@1L1A1F1B1D1C d d1E d Z d d1G1H d1I d1J d1K d ˘ d1M1U1N1S1O d1P d1Q d1R d i d1T d ï d1V d1W d d1Y1e d1Z1[1`1\ d1] d1^ d1_ d ` d1a d1b d1c d1d d r d1f1q1g1l1h d1i d1j d1k d š d1m d1n d1o d1p d d1r1w1s d1t d1u d1v d d1x d1y d1z d1{ d s d1}11~111111 d1 d1 d1 d ï d1 d1 d1 d1 d  d111 d  d1 d ` d11111 d1 d1 d1 d ` d1 d Z d111 d ` d1 d1 d1 d1 d d1111111 d1 d1 d1 d d1 d1 d1 d1 d Ʒ d111 d  d1 d1 d1 d1 d d11111 d1 d1 d1 d Z d1 d1 d1 d1 d ï d111 d1 d1 d1 d d1 d1 d1 d1 d Z d12111111111 d1 d1 d1 d d1 d1 d1 d1 d G d111 d1 d1 d1 d d1 d d11111 d1 d1 d1 d  d1 d1 d1 d1 d d1 d1 d1 d1 d1 d ` d12 12111 d1 d1 d1 d d1 d1 d2� d2 d s d222 d2 d2 d2 d i d2 d d2 22 22 d2 d2 d2 d d2 d2 d2 d2 d ï d2 d2 d š d22^22O22D22?2 d2 d2 d2! d2" d 2#2$ 2% 2& 2' 2(2)262* 2+ 2, 2- 2.222/ 20 21 23 24 25 27 28 29 2: 2;2< 2= 2> 2@ d2A d2B d2C d Œ d2E2J2F d2G d2H d2I d ˘ d2K d2L d2M d2N d Ʒ d2P2S2Q d2R d ï d2T2Y2U d2V d2W d2X d Œ d2Z d2[ d2\ d2] d d2_2v2`2k2a2f2b d2c d2d d2e d ï d2g d2h d2i d2j d ï d2l2q2m d2n d2o d2p d  d2r d2s d2t d2u d Œ d2w22x2z2y d ï d2{ d2| d2} d2~ d ï d222 d2 d2 d2 d y d2 d2 d2 d2 d i d23722222222222 d ï d2 d2 d2 d2 d  d222 d2 d2 d2 d  d2 d2 d2 d2 d G d222 d2 d2 d2 d2 d  d222 d2 d2 d2 d d2 d2 d2 d2 d Z d2222222 d2 d2 d2 d $e d2 d V d222 d2 d2 d2 d = d2 d2 d2 d2 d  d22222 d2 d2 d2 d Z d2 d2 d2 d2 d Z d222 d2 d2 d2 d d2 d d232222 d22 d2 d2 d2 d d222 d2 d2 d2 d  d2 d2 d2 d2 d d22222 d2 d2 d2 d d2 d2 d2 d2 d d232 d3� d3 d3 d d3 d3 d3 d3 d d3 3 3 33 33 d3 d3 d3 d d3 d3 d3 d3 d ` d333 d3 d3 d3 d > d3 d3 d3 d3 d  d3!3,3"3'3# d3$ d3% d3& d 7 d3( d3) d3* d3+ d d3-323. d3/ d30 d31 d ƨ d33 d34 d35 d36 d :y d383393c3:3L3;3F3<3A3= d3> d3? d3@ d L d3B d3C d3D d3E d d d3G3H d3I d3J d3K d d3M3X3N3S3O d3P d3Q d3R d r d3T d3U d3V d3W d s d3Y3^3Z d3[ d3\ d3] d  d3_ d3` d3a d3b d d3d3{3e3p3f3k3g d3h d3i d3j d d3l d3m d3n d3o d  d3q3v3r d3s d3t d3u d Ʒ d3w d3x d3y d3z d d3|33}33~ d d3 d3 d3 d3 d d333 d3 d3 d3 d Ʒ d3 d3 d3 d3 d d333333333 d d3 d3 d3 d3 d d333 d3 d3 d3 d d3 d3 d3 d3 d s d33333 d ï d3 d3 d3 d3 d Ʒ d333 d3 d3 d3 d > d3 d3 d3 d3 d ˘ d3333333 d Ʒ d3 d3 d3 d3 d ƨ d333 d :y d3 d3 d3 d3 d à d33333 d3 d3 d3 d  d3 d d333 d3 d3 d3 d r d3 d  d36l3533434734 3333333 d3 d3 d3 d  d3 d3 d3 d3 d d333 d3 d3 d3 d à d3 d3 d3 d3 d d3434�3 d3 d3 d3 d x d4 d4 d4 d4 d d4 d4 d4 d4 d4 d  d4 4 4 4444 d4 d4 d4 d G d4 d4 d4 d4 d Z d444 d4 d4 d4 d Œ d4 d r d4!4,4"4'4# d4$ d4% d4& d d4( d4) d4* d4+ d G d4-424. d4/ d40 d41 d d43 d44 d45 d46 d d484d494M4:4E4;4@4< d4= d4> d4? d d4A d4B d4C d4D d d4F4H4G d y d4I d4J d4K d4L d :y d4N4Y4O4T4P d4Q d4R d4S d d4U d4V d4W d4X d s d4Z4_4[ d4\ d4] d4^ d d4` d4a d4b d4c d š d4e4w4f4q4g4l4h d4i d4j d4k d ï d4m d4n d4o d4p d Z d4r d4s d4t d4u d4v d d4x4~ d4y4z d4{ d4| d4} d d d44 d4 d4 d4 d s d444444444 d4 d d444 d4 d4 d4 d ƨ d4 d4 d4 d4 d d44 d44 d4 d4 d4 d Z d444 d4 d4 d4 d Z d4 d4 d4 d4 d d4444444 d4 d4 d4 d  d4 d4 d4 d4 d d444 d4 d4 d4 d y d4 d4 d4 d4 d Ʒ d44444 d4 d4 d4 d Z d4 d4 d4 d4 d r d444 d4 d4 d4 d  d4 d4 d4 d4 d ï d454444444 d d4 d4 d4 d4 d d444 d4 d4 d4 d  d4 d4 d4 d4 d d44444 d4 d4 d4 d  d4 d4 d4 d4 d d444 d4 d4 d4 d d5� d5 d5 d5 d  d555555 5 d5 d5 d5 d d5 d5 d5 d5 d s d555 d5 d5 d5 d d5 d5 d5 d5 d Œ d55(55#5 d5 d5! d5" d d5$ d5% d5& d5' d ï d5)5.5* d5+ d5, d5- d  d5/ d50 d51 d52 d Z d545555565]575I585> d595: d5; d5< d5= d d5?5D5@ d5A d5B d5C d d5E d5F d5G d5H d d5J5R5K5M5L d z d5N d5O d5P d5Q d ˘ d5S5X5T d5U d5V d5W d ï d5Y d5Z d5[ d5\ d d5^5u5_5j5`5e5a d5b d5c d5d d d5f d5g d5h d5i d  d5k5p5l d5m d5n d5o d  d5q d5r d5s d5t d ï d5v5~5w5y5x d d5z d5{ d5| d5} d s d d55 d5 d5 d5 d Z d555555555 d5 d5 d5 d s d5 d5 d5 d5 d s d555 d5 d5 d5 d d5 d5 d5 d5 d Z d55555 d5 d5 d5 d ƙ d5 d5 d5 d5 d d555 d  d5 d5 d5 d5 d ï d5555555 d ï d5 d5 d5 d5 d s d d55 d5 d5 d5 d d55555 d5 d5 d5 d Z d5 d5 d5 d5 d d555 d5 d5 d5 d ܹ d5 d5 d5 d5 d ` d56565555555 d d5 d5 d5 d5 d d555 d5 d5 d5 d d5 d5 d5 d5 d ï d55555 d5 d5 d5 d  d5 d5 d5 d5 d  d d55 d5 d5 d6� d 7 d66666 d6 d d66 6 d d6 d6 d6 d6 d ï d666 d6 d d6 d6 d6 d6 d6 d  d66B66.66#666 d d6 d6 d6! d6" d s d6$6)6% d6& d6' d6( d ï d6* d6+ d6, d6- d Z d6/6:606561 d62 d63 d64 d  d66 d67 d68 d69 d L d6;6@6< d6= d6> d6? d d6A d H d6C6U6D6J6E d6F d6G d6H d6I d ï d6K6P6L d6M d6N d6O d š d6Q d6R d6S d6T d x d6V6a6W6\6X d6Y d6Z d6[ d ï d6] d6^ d6_ d6` d i d6b6g6c d6d d6e d6f d d6h d6i d6j d6k d Z d6m76n76o66p66q66r6x6s d6t d6u d6v d6w d ˘ d6y6~6z d6{ d6| d6} d š d6 d6 d6 d6 d 7 d66666 d6 d6 d6 d d6 d  d666 d6 d6 d6 d G d6 d6 d6 d6 d d6666 d66 d6 d6 d6 d Z d666 d6 d6 d6 d ` d6 d6 d6 d6 d ï d66666 d6 d6 d6 d Z d6 d6 d6 d6 d Z d666 d6 d6 d6 d ï d6 d6 d6 d6 d  d666666666 d6 d6 d6 d s d6 d6 d6 d6 d d d66 d6 d6 d6 d d666 d6 d6 d6 d6 d Z d666 d6 d6 d6 d 7 d6 d6 d6 d6 d ҉ d6666666 d d6 d6 d6 d6 d d6 d6 d6 d6 d6 d d67�666 d6 d6 d6 d s d6 d d7 d7 d7 d7 d7 d ` d77V77,7 77 77 7 7 d d7 d7 d7 d7 d  d777 d7 d7 d7 d ï d7 d7 d7 d7 d  d77)77$7 d7! d7" d7# d  d7% d7& d7' d7( d ï d7* d7+ d ï d7-7?7.797/7470 d71 d72 d73 d ï d75 d76 d77 d78 d d d7:7; d7< d7= d7> d ï d7@7K7A7F7B d7C d7D d7E d d7G d7H d7I d7J d Z d7L7Q7M d7N d7O d7P d d7R d7S d7T d7U d d7W7{7X7g7Y7\7Z d7[ d d7]7b7^ d7_ d7` d7a d Œ d7c d7d d7e d7f d  d7h7s7i7n7j d7k d7l d7m d Œ d7o d7p d7q d7r d ï d7t7v7u d d7w d7x d7y d7z d Z d7|77}77~77 d ï d7 d d777 d s d7 d7 d7 d7 d Z d77777 d7 d7 d7 d d7 d7 d7 d7 d Ʒ d7 d7 d7 d7 d7 d Z d78C77777777777 d ս d7 d7 d7 d7 d Ʒ d7 d7 d d77777 d7 d7 d7 d ï d7 d7 d7 d7 d  d777 d7 d7 d7 d Œ d7 d7 d7 d7 d d7777777 d7 d7 d7 d d7 d7 d7 d7 d i d777 d7 d7 d7 d ï d7 d7 d7 d7 d Ʒ d77777 d d7 d7 d7 d7 d d d77 d7 d7 d7 d > d7878�77777 d7 d7 d7 d ˘ d7 d7 d7 d7 d d777 d7 d7 d7 d Z d7 d Z d88 888 d8 d8 d8 d Z d8 d8 d8 d8 d d8 88 d8 d8 d8 d d8 d8 d8 d8 d  d88/88$888 d8 d8 d8 d  d8 d8! d8" d8# d i d8%8*8& d8' d8( d8) d  d8+ d8, d8- d8. d  d808;818682 d83 d84 d85 d d87 d88 d89 d8: d  d8<8A8= d8> d8? d8@ d Z d8B d d8D88E8t8F8]8G8R8H8M8I d8J d8K d8L d  d8N d8O d8P d8Q d k d8S8X8T d8U d8V d8W d d8Y d8Z d8[ d8\ d ` d8^8i8_8d8` d8a d8b d8c d Z d8e d8f d8g d8h d š d8j8o8k d8l d8m d8n d ï d8p d8q d8r d8s d Œ d8u88v88w8|8x d8y d8z d8{ d  d8} d8~ d8 d8 d  d888 d8 d8 d8 d ï d8 d8 d8 d8 d Œ d88888 d8 d8 d8 d  d8 d8 d8 d8 d i d888 d8 d8 d8 d ï d8 d8 d8 d8 d Ʒ d888888888 d8 d8 d8 d ï d8 d8 d8 d8 d ï d888 d y d8 d d888 d8 d8 d8 d8 d Z d8 d8 d d8888888 d8 d8 d8 d ï d8 d8 d8 d8 d Ʒ d888 d8 d8 d8 d Z d8 d8 d8 d8 d  d888 d8 d8 d8 d8 d d888 d8 d8 d8 d ï d8 d8 d8 d8 d r d8>8<8:O8989C898988888 d8 d8 d8 d Z d8 d8 d8 d8 d Ʒ d898 d9� d9 d9 d ï d9 d9 d9 d9 d d9 99 d9 d9 d9 d9 d  d999 d9 d9 d9 d  d9 d9 d9 d9 d  d99299'99"9 d9 d9 d9! d Ʒ d9# d9$ d9% d9& d Z d9(9-9) d9* d9+ d9, d d9. d9/ d90 d91 d :y d939;949695 d d97 d98 d99 d9: d d9<9A9= d9> d9? d9@ d 7 d9B d  d9D9{9E9W9F9Q9G9L9H d9I d9J d9K d  d9M d9N d9O d9P d ï d d9R9S d9T d9U d9V d s d9X9`9Y9[9Z d à d9\ d9] d9^ d9_ d d9a9v9b d9c d9d 9e 9f  9g 9h 9i 9j 9k 9l 9m 9n 9o 9p 9q 9r 9s 9t 9u  9w d9x d9y d9z d Z d9|99}99~99 d ï d9 d9 d9 d9 d d999 d9 d9 d9 d Z d9 d9 d9 d9 d ï d99999 d9 d9 d9 d d9 d9 d9 d9 d > d999 d9 d9 d9 d G d9 d9 d9 d9 d d99999999999 d9 d9 d9 d d9 d9 d9 d9 d d999 d y d9 d9 d9 d9 d d99999 d9 d9 d9 d Ʒ d9 d9 d9 d9 d ` d999 d9 d9 d9 d ï d9 d9 d9 d9 d 7 d9999999 d9 d9 d9 d r d9 d9 d9 d9 d d999 d9 d9 d9 d y d9 d k d99999 d r d9 d9 d9 d9 d $e d999 d9 d9 d9 d d9 d9 d9 d9 d s d9:(:�::: ::: d  d: d: d: d: d  d: :: d: d: d: d Œ d: d  d::::: d: d: d: d s d: d: d: d: d  d::#: d: d:! d:" d  d:$ d:% d:& d:' d Œ d:):@:*:5:+:0:, d:- d:. d:/ d > d:1 d:2 d:3 d:4 d Ʒ d:6:;:7 d:8 d:9 d:: d Œ d:< d:= d:> d:? d G d:A:L:B:G:C d:D d:E d:F d Z d:H d:I d:J d:K d d:M d:N d  d:P::Q::R:w:S:e:T:Z:U d:V d:W d:X d:Y d  d:[:`:\ d:] d:^ d:_ d d:a d:b d:c d:d d ű d:f:l:g d:h d:i d:j d:k d s d:m:r:n d:o d:p d:q d ï d:s d:t d:u d:v d d:x::y::z:|:{ d ï d:} d:~ d: d: d  d::: d: d: d: d d: d: d: d: d z d::::: d d: d: d: d: d G d::: d: d: d: d ï d: d: d: d: d ű d::::::::: d d: d d::: d: d: d: d i d: d  d::: d: d: d: d: d r d::: d: d: d: d d: d: d: d: d G d::::::: d: d: d: d d: d: d: d: d r d::: d: d: d: d: d: : : : : : : : : : : : : :  : % : d: d: d: d d::::: d: d: d: d Z d: d d::: d: d: d: d ï d: d: d: d: d d:;;�;;;;; d;; d; d; d; d  d d; ; d; d; d; d d;;;;; d; d; d; d Z d; d; d; d; d  d;;; d d; d; d; d;! d;" d;# d;$ d;% d;& d;' d;( d;) d;* d;+ d;, d;- d;. d;/ d;0 d;1 d;2 d;3 d;4 d;5 d;6 d;7 d;8 d;9 d;: d;; d;< d;= d;> d;? d;@ d;A d;B d;C d;D d;E d;F d;G d;H d;I d;J d;K d;L d;M d;N d;O d;P d;Q d;R d;S d;T d;U d;V d;W d;X d;Y d;Z d;[ d;\ d;] d;^ d;_ d;` d;a d;b d;c d;d d;e d;f d;g d;h d;i d;j d;k d;l d;m d;n d;o d;p d;q d;r d;s d;t d;u d;v d;w d;x d;y d;z d;{ d;| d;} d;~ d; d; d; d $e d;;;;;;; d; d; d; d ï d; d; d; d; d Œ d;;; d; d; d; d  d; d; d; d; d ƨ d;;;;; d; d; d; d Ʒ d; d; d; d; d ï d;;; d; d; d; d d; d; d; d; d ï d;;;;;;;;; d; d; d; d d; d  d;;; d; d; d; d d; d; d; d; d y d;;;;; d; d; d; d Z d; d; d; d; d d;;; d; d; d; d  d; d V d;;;;; d; d; d; d; d d;;; d; d; d; d d; d; d; d; d ï d;;;;; d; d; d; d i d; d; d; d; d Z d;<�; d; d; d; d ï d< d< d< d< d ï d<=K<<<<}< <5< << << << d d< d< d< d< d s d<<< d< d< d< d r d< d< d< d< d  d<<*< <%<! d<" d<# d<$ d d<& d<' d<( d<) d Ʒ d<+<0<, d<- d<. d</ d d<1 d<2 d<3 d<4 d ï d<6<V<7<K<8<:<9 d d<; d<< d<= š<> š<? š<@ š<A š<B š<C š<D š<E š<F š<G š<H š<I š<J š ( <L<Q<M d<N d<O d<P d d<R d<S d<T d<U d ï d<W<r<X<]<Y d<Z d<[ d<\ d k d<^ d<_ d<` d<a d<b d<c <d <e <f <g <h <i <j <k <l <m <n <o <p <q <s<x<t d<u d<v d<w d  d<y d<z d<{ d<| d  d<~<<<<<<<< d d< d< d< d< d  d<<< d< d< d< d G d< d  d<<<<< d< d< d< d d< d  d<<< d< d< d< d V d< d  d<<<<<<< d< d< d< d d< d  d<<< d< d< d< d d< d  d<<<<< d< d< d< d  d< d  d<<< d< d< d< d r d< d  d<<<<<<< d<<< d< d< d< d s d< d  d<<<<< d< d< d< d r d< d  d<<< d< d< d< d  d< d  d<<<<<<< d< d< d< d ` d< d  d<<< d  d< d  d<<< d< d< d< d< d d<<< d Ʒ d< d< d< d< d d=�='==== === d= d= d= d d= d= d= d= d ű d=== d  d= d= d= d= d ƨ d==!=== d= d= d= d d= d= d= d= d d=" d=# d=$ d=% d=& d d=(=4=)=1=*=/=+ d=, d=- d=. d d=0 d d=2 d=3 d y d=5=@=6=;=7 d=8 d=9 d=: d Z d=< d== d=> d=? d s d=A=F=B d=C d=D d=E d ҉ d=G d=H d=I d=J d d=L==M==N=p=O=a=P=[=Q=V=R d=S d=T d=U d > d=W d=X d=Y d=Z d Œ d d=\=] d=^ d=_ d=` d ƨ d=b=j=c=h=d d=e d=f d=g d  d=i d d=k d=l d=m d=n d=o d ï d=q==r=}=s=x=t d=u d=v d=w d d=y d=z d={ d=| d i d=~== d= d= d= d r d= d  d===== d= d= d= d d= d= d= d= d d=== d= d= d= d d= d= d= d= d d========= d= d= d= d d= d= d= d= d d d== d= d= d= d ܹ d===== d= d= d= d r d= d= d= d= d d=== d= d= d= d ï d= d= d= d= d Z d======= d= d= d= d r d= d= d= d= d ï d=== d= d= d= d d= d= d= d= d d===== d= d= d= d d= d= d= d= d d=== d= d= d= d  d= d= d= d= d d=>g=>=>=>=>�= d= d= d= d ƨ d> d> d> d> d à d>> > d> d> d> d ï d> d> d> d> d d>>>>> d> d> d> d d> d d> d> d s d>>/>>)>>$> d>! d>" d># d ű d>% d>& d>' d>( d  d d>*>+ d>, d>- d>. d d>0>\>1>W>2 d>3 d>4 d>5 d>6 d>7 š>8 š>9 š>: š>; š>< š>= š>> š>? š>@ š>A>L>B>F š>C>D š>E š š >G š>H>J>I š  š>K š < š>M>Q>N š>O š>P š  š š>R>S>U š>T š š>V c >X d>Y d>Z d>[ d V d>]>b>^ d>_ d>` d>a d ƙ d>c d>d d>e d>f d W d>h>>i>>j>u>k>p>l d>m d>n d>o d r d>q d>r d>s d>t d r d>v>{>w d>x d>y d>z d  d>| d>} d>~ d d>>>>> d> d> d> d ï d> d> d> d> d ï d>>> d> d> d> d y d> d> d> d> d ï d>>>>>>> d d> d> d> d> d d>>> d> d> d> d Z d> d> d> d> d ï d>>>>> d> d> d> d G d> d> d> d> d  d> d> d Z d>AJ>@>?f>? >>>>>>>>> d> d> d> d ï d> d> d> d> d  d>>> d> d> d> d 7 d> d> d> d> d d>>> d> d> d> d> d Z d> d> d d>>>>>>> d> d> d> d d> d> d> d> d d>>> d> d> d> d r d> d> d> d> d d>?>>> d d> d> d?� d? d d??? d? d? d? d d? d? d? d? d d??=??&????? d? d? d? d x d? d? d? d? d s d??!? d? d? d? d ï d?" d?# d?$ d?% d ï d?'?2?(?-?) d?* d?+ d?, d s d?. d?/ d?0 d?1 d ï d?3?8?4 d?5 d?6 d?7 d  d?9 d?: d?; d?< d Ʒ d?>?R???J?@?E?A d?B d?C d?D d G d?F d?G d?H d?I d ï d?K?M?L d d?N d?O d?P d?Q d d?S?[?T?V?U d ˘ d?W d?X d?Y d?Z d i d?\?a?] d?^ d?_ d?` d r d?b d?c d?d d?e d d?g??h??i?x?j?m?k d?l d d?n?s?o d?p d?q d?r d d?t d?u d?v d?w d ï d?y??z??{ d?| d?} d?~ d  d? d? d? d? d y d??? d? d? d? d r d? d? d? d? d d??????? d? d? d? d ï d? d? d? d? d d??? d? d? d? d s d? d? d? d? d 7 d????? d r d? d? d? d? d ï d??? d? d? d? d ƨ d? d? d? d? d  d????????? d? d? d? d y d? d? d? d? d d? d? d  d????? d? d? d? d  d? d? d? d? d G d??? d? d? d? d  d? d? d? d? d ƨ d??????? d? d? d? d Z d? d? d? d? d d??? d? d? d? d d? d? d? d? d 7 d?@?@? d? d@� d@ d  d@ d@ d@ d@ d d@@ @ d@ d@ d@ d i d@ d@ d@ d@ d  d@@@@^@@7@@%@@@ d@ d Ʒ d@@ @ d@ d@ d@ d Z d@! d@" d@# d@$ d  d@&@1@'@,@( d@) d@* d@+ d Z d@- d@. d@/ d@0 d š d@2 d@3 d@4 d@5 d@6 d  d@8@L@9@A@:@<@; d Œ d@= d@> d@? d@@ d d@B@G@C d@D d@E d@F d Ʒ d@H d@I d@J d@K d d@M@S@N d@O d@P d@Q d@R d d@T@Y@U d@V d@W d@X d d@Z d@[ d@\ d@] d ï d@_@@`@t@a@i@b@g@c d@d d@e d@f d Ʒ d@h d ï d@j@o@k d@l d@m d@n d d@p d@q d@r d@s d d@u@@v@{@w d@x d@y d@z d Z d@| d@} d@~ d@ d Z d@@@ d@ d@ d@ d d@ d@ d@ d@ d d@@@@@@@ d@ d@ d@ d  d@ d@ d@ d@ d d@ d@ d@ d@ d@ d d@@@ d@ d@ d@ d@ d Z d@@@ d@ d@ d@ d d@ d@ d@ d@ d ï d@@@@@@@@@@@ d@ d@ d@ d  d@ d Z d@ d@ d d@@@@@ d Z d@ d@ d@ d@ d d@@@ d@ d@ d@ d d@ d ƙ d@@@@@@@ d@ d@ d@ d d@ d@ d@ d@ d y d@@@ d@ d@ d@ d d@ d@ d@ d@ d d@@@@@ d@ d@ d@ d y d@ d@ d@ d@ d d@@@ d@ d@ d@ d š d@ d  d@A)@A@A A�AA dA dA dA d dA dA dA dA d Z dA AA dA dA dA d dA dA dA dA d ï dAAAAA dA dA dA d  dA d s dAA$A dA! dA" dA# d i dA% dA& dA' dA( d ƨ dA*A6A+A3A,A1A- dA. dA/ dA0 d dA2 d  d dA4A5 d Z dA7ABA8A=A9 dA: dA; dA< d Z dA> dA? dA@ dAA d  dACAHAD dAE dAF dAG d dAI d  dAKBALAAMAANAuAOAaAPAV dAQAR dAS dAT dAU d dAWA\AX dAY dAZ dA[ d ï dA] dA^ dA_ dA` d Œ dAbAjAcAhAd dAe dAf dAg d  dAi d y dAkApAl dAm dAn dAo d dAq dAr dAs dAt d 6b dAvAAwAAxA}Ay dAz dA{ dA| d r dA~ dA dA dA d d dAA dA dA dA d ï dAAA dA dA dA dA d dA dA dA dA dA d dAAAAAAA dA dA dA dA d s dA dA d Ʒ dAAAAA dA dA dA d Œ dA dA dA dA d ï dAAA dA dA dA d Ʒ dA dA dA dA d  dAAAAAAA dA dA dA d dA dA dA dA d  dAAA dA dA dA d Z dA dA dA dA d  dAAAAA dA dA dA d dA dA dA dA d s dA dA dA dA dA d dAB?ABAAAAAAA dA dA dA d Œ dA dA dA dA d dAAA dA dA dA d ï dA dA dA dA d ï dABABA dB� dB dB d ï dB dB dB dB d dB BB dB dB dB d Œ dB dB dB dB d dBB(BBBBB d dB dB dB dB d dBB#B dB dB! dB" d dB$ dB% dB& dB' d s dB)B4B*B/B+ dB, dB- dB. d ҉ dB0 dB1 dB2 dB3 d V dB5B:B6 dB7 dB8 dB9 d dB; dB< dB= dB> d  dB@BlBABUBBBMBCBHBD dBE dBF dBG d Œ dBI dBJ dBK dBL d 7 dBNBPBO d dBQ dBR dBS dBT d dBVBaBWB\BX dBY dBZ dB[ d Œ dB] dB^ dB_ dB` d ï dBbBgBc dBd dBe dBf d Ʒ dBh dBi dBj dBk d dBmBBnBvBoBqBp d dBr dBs dBt dBu d dBwB|Bx dBy dBz dB{ d  dB} dB~ dB dB d Ʒ dBBBBB dB dB dB d ƨ dB dB dB dB d ű dB dB d dBC2BBBBBBBBBBB dB dB dB d dB d dBBB dB dB dB d ï dB dB dB dB d dBBBBB dB dB dB d dB dB dB dB d dBBB dB dB dB d ܹ dB dB dB dB d dBBBB dBB dB dB dB d ï dB dB dB dB dB d ï dBBBBB d y dB dB dB dB d ï dBBB dB dB dB d dB dB dB dB d ƨ dBCBBBBBBB dB dB dB d k dB dB dB dB d ï dBBB dB dB dB d dB dB dB dB d Z dBCBBB d s dB dC� dC dC d dCC C dC dC dC d dC dC dC dC d à dCCCCCCC d  dC dC dC dC d Ʒ dC dC dC dC dC d Z dCC*C C%C! dC" dC# dC$ d dC& dC' dC( dC) d dC+C0C, dC- dC. dC/ d Ʒ dC1 d i dC3CC4C^C5CGC6CAC7C<C8 dC9 dC: dC; d  dC= dC> dC? dC@ d r dCB dCC dCD dCE dCF d x dCHCSCICNCJ dCK dCL dCM d  dCO dCP dCQ dCR d  dCTCYCU dCV dCW dCX d dCZ dC[ dC\ dC] d dC_CC`CfCa dCb dCc dCd dCe d i dCgC{Ch dCi dCj Ck Cl Cm Cn Co Cp Cq Cr Cs Ct Cu Cv Cw Cx Cy  Cz  K*C| dC} dC~ dC d dCC dCC dC dC dC d dCCC dC dC dC d dC dC dC dC d dCCCCCCCCC dC dC dC d dC dC dC dC d dCCC dC dC dC d dC dC dC dC d dCC dCC d r dCCC dC dC dC d ƨ dC dC dC dC d ï dCCCCCCC d  dC dC dC dC d ï dCCC dC dC dC d Œ dC dC dC dC d dCCCCC d ˘ dC dC dC dC d  dCCC dC dC dC d Ʒ dC dC dC dC d dCaiCVCVCVCVaCSCQWCDgCD,CDCCCCC kC dC d Z d kCC dC d dCCCCC dC d Z dC dC d r d D�D dD d 7 dDDDD DD D dD d dD dD d dD DD dD d dD dD d Œ dDD dDD dD d Z dD D dD dD d D D D D D! D" D# D$ D% D& D' D( D) D* D+ dD-DBD.D=D/D6D0D3D1 dD2 d  dD4 dD5 d dD7D:D8 dD9 d dD; dD< d dD>D? d D@ dDA d 7 dDCDXDDDKDEDHDF dDG d dDI dDJ d Z dDLDUDM dDN dDO dDP DQDR DS DT r DV dDW d ï dDYD`DZD]D[ dD\ d ˘ dD^ dD_ d Œ dDaDdDb dDc d dDe dDf d dDhQ0DiQDjQDkDrDlDoDm dDn d dDp dDq d ˘ dDs dDt dDu dDvD DwDx DyDDzDD{ D| D} D~ D D DD DD D 02 D D D D D D D D DD D D D D D D D D D D D D D D DDD D  D D  DDD  D D D D DD D D D D D D D D D D D D D D D D D D D D D  DE3D DD D D D D DE,DEDDDDDDDDD D VD D DDDDDD X DD LD D D D D D D D D D D D D D D DD D . D 6DEDE DE DD DD D D D E� E E E E E E E E E E א E  E EE EEEEEE 6 . 6 EE V . 6 EEEE V L <E R E E! E"E)E#E&E$E% R E'E(  6 <E* E+ < E- E. E/ E0 E1 E2 E4 E5 E6E7 E8EE9E`E:E@E; E< E= E>E? EA EB EC ED EE EF EGEREH EIEL EJ EK 6 .EMEO EN  EPEQ  ESE\ETEWEU EV L EXE[EYEZ 6 6 . V E] E^ E_  .EaEmEb Ec Ed EeEi EfEg Eh Ej Ek El En Eo EpEEq ErE Es EtEuEEv Ew Ex EyEz E{ E| E} E~E E EE E E E E EE E E E EE E EE EEEE E EE E EE E E EE E E E EE E EE E E EE E E E EE E E E EE E EE E E EE EEE E E E E EE E E E EEEE E EE E E E EE E E EE E E E EE E EE E E E EPE E E E E EPHEMBEM2EJcEH%EFCEFE E E E E EE EE E EE F� F F FF FF,FFF F F F FF FF FFF F F F F F F F F F F F F F F! F" F#F( F$ F% F&F' F) F* F+ F-F. F/ F0F=F1 F2F;F3F7 6F4F5 LF6 L L 6 LF8F9 LF: L F< L F> F? F@ FAFB 6 6FDG" FE FFFGFFHFuFIFP FJ FKFL FM FN FO FQF\FRFV FS FTFU FWFX FY FZF[ R R F]FlF^FeF_FbF` Fa FcFd L LFfFg FhFjFi Fk FmFqFn Fo Fp Fr FsFt FvFFwFFxFFy FzF{F} F| F~ F FFFF F FFF FF FFF F FFF F FFFFFFFFF F F F F 5F 5F 5 5FFFF F L F LF L LFFF F F . F F F . FFFFFFFFFFF F F FF F F < FF <FF 6 6F 6 6F 6FF  5 FFF FF 6 FFF < F F FFF FF F F  LFF 5 L 5FFFF FFF < 5 5 FF FF F  F L LFGFFFF LF LF L FFFF FF . F . .FF F F 6F 6G� 6 <GGGG GGG G .G . G G G G < <GGGGGG G G GG G G G LG 5G GG G 5 G!  G# G$HG%GG&GrG'GDG(G7G)G+G* < G,G2G-G0G. G/ < G1 < G3 G4G5G6 < G8GAG9G=G: G;G< G> G? G@ <GB GC < GEG_GFGPGGGM GHGIGK GJ 6GL GN GO GQGUGR GS GT GVGY GWGX GZG\G[ G]G^ G`GfGaGb Gc Gd Ge GgGnGhGkGi Gj Gl Gm Go Gp Gq GsGGtGGuG~GvGzGw GxGy G{G| <G} < <G < <G <GG < < <GGGGG G G < G  GGG G GG G  GGG GG G <G GG G G G G G GGGGGGG GG GG G G G G GGGG G GG GGG GGG GG 5G 5G 5 5GGGGGGG 6 5GG 6 5 6 6GG .G . 6 . G G GG GGGGG G G G GG G G GG GGGGGG GG G G G 6G 6 GG 6 6GGG 6G 6GG 6 GGG 6G 6G 6 6G 6GG 6 GHGHG < H�H <H < < <HH H H < H H H  H H  H H HHHH H HH H H HHH    H H HH!H H" H# H$ H&IIH'H? H(H) H* H+ H, H- H.H:H/H3H0 H1 H2 H4H7 H5H6 H8 H9 H; H< H= H> H@ VHA 6HBHHCHrHDHO HE HFHG HHHJ HI HKHM HL HN HPHaHQ HRHXHS HTHV HU <HW < HYH^HZH\H[ < H] H_ H` HbHcHlHdHg He Hf HhHjHi Hk HmHnHp Ho Hq  HsHHtH} HuHvHy HwHx Hz H{ H| H~HHHH H H  HH <HHH H H < HH HHHHH H HH H H H HHH HH H < HH H H  HHHHHHHHHH HH H H H H . HHH HH . . HH 6HHH HHH HH H H HH H HHH H H H HHHH H H H H H HHH   HHHHHH HH H H H H HH H H HH H HI&HIHHHH HH HH H HHHH < < H < HIHI I�II I I II II I I I I IIII III I I IIII III" II I! I#I$I% I'I-I( I) I* I+ I, I.I=I/I8I0I5I1I2 < I3I4 I6 I7 I9 I:I;I< I>IEI?IBI@ IA IC ID IF IG IH IJIIK IL IM IN IOIIPIgIQIYIRIU VIS IT IVIWIX   IZI`I[I]I\ I^I_ IaIdIbIc . 5 6 LIeIf L IhIsIiImIj IkIl RInIp Io RIqIr R R ItI}IuIxIvIw < < IyIz I{I| R I~IIII  I II I II IIIIIIIIIIII <  V I 5 III 6 .IIIIII V 6 I LIII .IIIIII 6 RI L <III < II < <II <I < I 6 I I I II 6I 6 I  IIIII I I IIIIIII I III I I III II I I II <IIII I I III I I R III I I R I I I R I I I I III I I I I I IIJIJI I I IJ IJ�JJ J J JJ 6 .J J J J J JJJ < J J JJ<JJ8JJ0JJ%JJJJJ  <JJ  < JJ"J J! <  <J#J$  < J&J*J' J(J) < < J+J- HJ,  J.J/ < J1 J2 J3J6J4J5  < J7 J9 J: J; <J= J>JJJ?JC J@ JA JB JDJHJEJF V RJG 6 .JI 6 b JKJUJLJPJMJO JN . R ,lJQJSJR JT JVJ\JWJY .JX 6JZJ[ V .J]J`J^J_ 6 . 5 JaJb 6 . JdJJeJlJfJiJgJh JjJk   JmJJnJ JoJp Jq Jr Js JtJ|Ju JvJzJw JxJy 6 6 J{ 6 J} J~ J 6 6 J 6 JJKJ J JK]JK-JJJJJJJJ JJ J  JJJJJ 6JJ J JJ JJJJJJ J JJJJ J JJJJJJJJ J J JJ J J JJJJJJ < JJ < J JJ < JJJJJJJJ < JJ < JJJJ < JJ < JJJJJJ < JJ <  JJJ < JJJJJ JJJJJJ <  J J JJ < JJJJJJJ J JJ JJJJJ J J J K�KKK KKKKK K KK K K K KKKKK KK KKK K KK&KK KKK K K!K$K"K# K% K' K(K+K)K* . 6 5K, 5K.KEK/K5K0 K1 K2K3 K4 . 6K6K>K7K: K8K9 K; K< K=  K? K@ KAKDKBKC  KFKRKGKKKH KI KJ KLKP KM KN KO KQ KSKZKTKWKU KV KX KY K[ K\ K^KK_KmK` KaKdKb Kc KeKg Kf Kh KiKlKjKk . 6 6 .KnKKoK{KpKwKqKr KsKuKt . 6Kv . 6 Kx Ky Kz K| K}K~ KK KKK K 6 KK 6 6 KKKK K K KKK < KKKKKK < KK < KKKK < KK < K KKK KKKKKKKK < KK < KKKK < KK < K K KK < K KKKKKKK  K  K 6 K KK  KLkKL2 KKKK KKKKKK K KK KKKKKK KK   K RK K K  K KK RKK R R RK R KLKKKKK KK K  KK K K . .K 6K 6 KKK K KK KL�K K K L <LL L <LL$LLLL L L L <L L L L LLL L LLLL LL L  L LL! L L L" L# L%L*L& L' L( L) L+ L,L-L/ L. L0L1 L3 L4L5 L6LLL7LEL8L=L9 L:L< L; L>L@L? LALC LB LD LF LG LHLJ LI LK LMLX LNLOLS LPLQLR . . LTLV LU . LW LYL`LZL] L[ L\ 6L^ L_ 6 LaLgLbLd Lc LeLf  Lh LiLj < < LlLmLLnL}Lo Lp Lq LrLv LsLt Lu LwLzLx Ly L{ L| 6 L~ L L L L LL L LLLLLLL LLLLLLLL  LL  < LLLL <  LL  < LLLLLL <  L < LL HL  < L <L LL L LL L L < LLLLLLL LLL L . 6 L 6 LLLL L R LL L 6 L LLLL L 6 VL .LLLL 6 . 5 LL 6 . LLLLLLLL LL 6 . 6LLL . 6 LL L RL LLL V R 6L LLLL L VLL V HLLL 6 < HLMLLL L LLLLL  L L LL H H L M� M M MMM M MM M M  M M M M . 6 .MM'MMMMMMMM  MM H HMM M <MM < M M!M$M"M# H M%M& H M( M)M.M*M-M+M, <M/M1 M0 M3 M4 M5 M6 M7 M8 M9 M: M; M< M= M> M? M@ MA MCNpMDMMEM{MFMuMGMR MH 6MIMJ MK ML MM MN MO MP MQ MSM^MT MU MV MW MX MY MZ M[ M\ M] M_MlM` Ma Mb Mc Md Me MfMiMg Mh MjMk Mm Mn Mo Mp Mq Mr Ms Mt L MvMyMwMx  Mz LM|MM}MM~M MM R 6 VMM 6M 6 VM MMMMMMMM MM V  MMMM 6 M M M M M M M M MM M . M . MMMMM M M M M M M M M 6M M M M M M .MM . H 6MMMMMM H RM ,l  RMM bM M M M MN&MMMMMMMMMM < < MM M 6 MM  6 MMM M RMM RM MMMMMMMM <  M MMM MM < <MMMM M LMM L LMMMM   MM 6  .MNMNMMMMMM V VM <N�NN  NN  < < VNN NN N V N V N N 6 NNNNNN 6 R N 6NNNN 6 N NN NNN  N  . N!N$N"N# < N% 6 VN'NUN(N>N)N5N*N0N+N- N, N.N/ R 6N1N4N2N3 L L 6 LN6N;N7N8 N9N:  N< N= 6 N?NKN@NENANC NB ND 6NFNINGNH  NJ V NLNQNMNPNNNO   NRNSNT  NV NWNbNXN]NYNZ  N[N\ N^N_ 6 .N`Na א א NcNjNdNgNeNf NhNi  HNkNnNlNm H V V No . NqONrNNsNNtNNuNNv Nw Nx Ny Nz N{NN|NN}NN~NNN 6 < NN HNNNN H N < bNNNN N  NN < < NNNN <  <NN < < N NNNN N  NN < bN ,lN < N N N N N NN NNN N <N < NN N N 6N N N N N N N NNNNNNN 6 6NN R .NNNN 6 . 5 NN V V NNNN RN . 6NN 6 . R .NNNN V 6 . 6N . N NNN N N N N N N NNNN N  N 6N N 6 N N N N N N N N NO4NONO N N N N N NONO�N  N N OOOO O O H <O O O <O < O O O O O OOO O O O <O OO <O O O O O O! O" O#O-O$O'O% 6O& 6 R 6O(O+O)O* 5 R V 6 O, .O.O1 .O/ .O0 O2 O3 V 6O5OMO6OBO7 O8 O9 O: O; O< O= O> O? O@OA OC OD OE OF OG OH OI OJ OK OL 6 ON OO OP OQ OR OSO{OTOkOUOcOVO\OWOZOXOY 6 . VO[ O]O`O^O_  6 OaOb 6 L L ROdOgOe Of 6 ROh OiOj 5 V VOlOsOmOp OnOo . .Oq 6Or 6  6OtOxOuOw .Ov . . OyOz R 6O| 6O}O~ O O 6 OOO OOOOO O O O O O OOOOOOO 6 H < HOOOO  HOO H OOOO < OO O OO H H .O O O O O O OOOO OO < <O O O O O O O O O OOOOOO O 6 .OO 6 . OO 6 R V RO OO 6 V OPOOOOO O OOO O O O O O O O O O O OOO O O O OOO O O O O O O O O O OOO O O O OP O O OOO O O O O O O P� P PPP P P P P P P P P PP P P P P P P P P P PPP P P P P P.P! P" P# P$ P% P& P' P(P,P) P* P+ P- P/P:P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P; P< P=PBP> P? P@ PA PC PD PE PFPG PIPgPJ PKP_PL PMP\PN PO PPPQ PR PS PT PU PV PWPY PX PZ P[ P]P^ P` PaPd PbPc Pe Pf . Ph PiPPj PkPPlPyPmPn  Po Pp Pq Pr Ps Pt Pu Pv Pw Px PzPP{PP| P} P~ P P P P P P P P P P P P P P P  PPP P P P P P PP PPP P P P P P P P P P LPPP P PP P P P P P P PP P PPPP P P PPPPP P P P P P P P P 6P  6P P P P P P P P PP .P .P P P P P PPPP PP P P P P P P P P P PPP P P P P P P P PP P P P P P P P P P Q� Q Q Q QQ d QQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q QQ 65QQ$QQ QQ!Q dQ d dQ" dQ# d > dQ%Q)Q& rQ' dQ( d y dQ*Q-Q+ dQ, d dQ. dQ/ d dQ1QDQ2Q;Q3Q7 dQ4Q5 dQ6 d ƨ d Q8Q9 dQ: d dQ<Q@ Q=Q> dQ? d d QAQB dQC d Œ dQEQKQFQJQG QH dQI d Z d d ƷQLQPQM QN dQO d dQQQTQR dQS d G dQU dQV d dQXR9QYQQZQQ[QwQ\QsQ]Q`Q^ dQ_ d  dQa Qb Qc Qd TvQe TvQf TvQg TvQh TvQi Tv TvQjQk TvQl TvQm TvQn TvQo Tv TvQpQq TvQr Tv tI TvQt dQu dQv d ï dQxQQyQ|Qz dQ{ d ï dQ} dQ~ d  dQ Q dQ d ï dQQQQQQQ dQ d Z dQ dQ d dQQQ dQ d dQ dQ d dQQQQQ dQ dQQQQQQQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ d dQQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ dQ d d $Q dQ dQ dQ dQ d dQQ dQ dQ dQ dQ dQ dQ d dQQ dQ dQ d dQQ d dQQ d $ d dQQ d dQQ dQ dQ dQ dQ dQ dQ d $ dQ dQ dQ dQ d $Q $Q $ dQ dQ d dQ Q dQ d G dQR1QRQRQQQ ŒQ ŒQ ŒQ ŒQ ŒQ ŒQ ŒQ ŒQ Œ ŒQQ ŒQ ŒQ ŒQ Œ ŒQQ Œ ŒQ ŒQ Œ Q dR� d x dR ŒR dR d Z dRR R R dR d Z dR R.R ŒR ŒR ŒR ŒR Œ ŒRR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR ŒR! ŒR" ŒR# ŒR$ ŒR% Œ ŒR&R' ŒR( ŒR) Œ ŒR*R+ ŒR, Œ ŒR- Œ MR/ dR0 d z dR2R8R3R4 dR5 sR6 dR7 d  d Ʒ dR:R[R;RNR<RER=RA R>R? dR@ d dRB dRC dRD d  dRFRJ dRGRH dRI d ˘ d RKRL dRM d Ʒ dRORXRPRT dRQRR dRS d dRU ƨRV dRW d  dRYRZ G d ZR\RoR]RfR^RbR_ R` dRa d  d ˘RcRd dRe d dRgRk ŒRhRi dRj d  d ŒRlRm dRn d Œ dRpRyRqRu dRrRs dRt d ` d dRvRw dRx d dRzSR{SR| R} R~ RSR RSARRRR RRRRRR R R R R R BR R R R R R RR  iu RR R R R R R R FRRR RRR R R R R R R BR R R R R R R ٍ R RR R R R R R RR F F RS$RRRR RR R R R R R R 7RRR R R R R R R R R R R R R R B R R R R R R R R R R R R R R R F RS RRR R R R R R R R R R R R R R R 7 R R R R S� S S S FS S S S S S S F S SS S S S S S S F =S S S S S S S FSS S S S S! S" S# F S%S/ S& S'S( S) S* S+ S, S- S. = S0 S1S2 S3 S4 S5 S6 S7 S8 S9 S: S; S< S= S> S? S@ $ SBSCSSDSf SESFSVSG SH SI SJ SK SL SM SN SO SP SQ SR SS ST SU 5 SW SX SY SZ S[ S\ S] S^ S_ S` Sa Sb Sc Sd Se  SgSShSxSi Sj Sk Sl Sm Sn So Sp Sq Sr Ss St Su Sv Sw ٫ Sy Sz S{ S| S} S~ S S S S S S S S S SSS S S S S S S S S S S S S S  S S S S S S S S S S S S S S S  SS S S S S S S S S S S S S S S S S S S S S S S S S S S SS S SS S S iu S dS d s d ŒSS dS d dSUSTST SSSSSSSSS dS d dS dS d dSSS dS d dS dS d dSSSSS dS d dS dS d dSSS dS d r dS dS d dSTSS SS dS d  dSTS dT� d dT dT d ` dTT T T dT d y d Z T T T TT TTTT dT d dT dT d dTTT dT d r dT dT d 7 d TT dT dT d dT!T-T"T&T# T$ dT% d 7 dT'T*T( dT) d dT+ dT, d dT.T2 T/T0 dT1 d dT3T6T4 dT5 d i dT7 T8 T9TT: T; T< T=TT> T? T@ TATz TBTCTY TDTE TF TG TH TI TJ TK TL TMTN TO TP TQTR TS TT TU TVTW TX j TZ T[T\TgT] T^ T_ T` Ta TbTc Td TeTf 65 65 Th Ti Tj Tk Tl Tm Tn To Tp Tq Tr Ts Tt Tu Tv Tw TxTy 65 65T{ T|T} T~T T T TT T T T T T TT T T TT T T T . T TT T T T T T T TT T T TT T T T T T T TT T TT T Q T T T T T T T T T T TT TT TT T T TTT T TTT TT T TT T TT ׁT T TT T T TT ׁT TT T T T TT T TT T ׁTU[TTTTTT TT dT d ï dTTT dT d r dT dT d  dTTTTT dT d y dT dT d  d TT dT d r dU�UUUUUU dU d ï dU dU d ï dU U U dU d dU dU d i dUU y UUU dU d dU dU dU dU šU šU šU šU šU šU šU šU! šU" šU# šU$UGU% šU& šU'U6U( šU) š šU* šU+ šU,U-U3U.U1U/U0   šU2 š k šU4 šU5 š < A šU7U8 šU9 šU: šU; šU< šU= šU> šU? šU@ šUA šUB šUC šUD šUE šUF š  šUH šUI š šUJ šUKUL šUM šUN šUO šUP šUQ šUR šUS šUT šUU šUV šUW šUX šUY šUZ š  šU\UoU]UcU^U_ dU` Ua dUb d ï dUdUkUeUhUf dUg d dUi dUj d x dUl dUm dUn d dUpU|UqUxUrUuUs dUt d dUv dUw d dUy Uz dU{ d G dU}UU~ dU dU d r d r dUUUUUUUUUUUUU dU d y dU dU d  dUUU dU d dU dU d dUUU dU dU d ï dU dU dU d i dUUUU `UU dU d Z dU dU dU d Œ dUU UU dU d dU ZU dU d  dUUUUUUUUU dU d ï dU dU d d 7 ƷUUUUU dU d s dU dU d  dU dU dU d  dUUUUUUU dU d dU dU d dUUU dU d Œ dU dU d Z dUUUUU dU d ï dU dU d ï dUUU U U U U U U U U U U U U U U U U U jU dU d dUV*UVUV dUUUU dU d  dV� dV d ƨ dVVV ZV dV d ƨ dVV V dV d ƨ dV dV d dVVVVV dV dV d dVVV dV d  dV dV d  dVV#VV V dV d  dV! dV" d  dV$V'V% dV& d dV( dV) d ` dV+VHV,V8V-V4V.V1V/ dV0 d dV2 dV3 d  dV5 yV6 dV7 d ƨ dV9VAV:V> V;V<V= j V? dV@ d dVBVEVC dVD d Z dVF dVG d dVIVUVJVNVK VL dVM d  dVOVRVP dVQ d s dVS dVT d ƙ dVVVZ VWVX dVY d i dV[V^V\ dV] d dV_ dV` d dVbVdVc d dVeVhVf dVg d dVi dVj dVk d ZVl ZVmVn Z ZVoVp Z ZVqVr ZVs Z ZVtVu Z ZVv ZVw ZVx ZVyVz ZV{ ZV| ZV} ZV~ ZV ZV Z ZV ZV ZV ZV ZVV ZV Z ZVV Z ZVV ZV ZV ZV ZV ZV ZV ZV ZV Z ZVV Z ZV ZVV Z ZV ZVV ZV Z ZV ZVV Z ZV ZV ZV ZVV Z ZVV Z ZVV ZV ZV ZV Z ZV ZV ZV ZVV Z ZV ZVV ZV ZV ZV ZV ZV Z ZV ZVV Z ZV ZV ZV ZV ZVV Z ZV ZV ZV ZVV Z ZV ZVV Z ZVV ZV ZV Z ZV ZV ZV Z Ʒ d s dV\!VYVX2VWVWLVW�VVVV dVV dV dV dV d dVVV dV dV dV d Œ dV dV dV dV d dVVVVV dV dV dV d ï dV dV dV dV d dVVV d Z dV dV dV dV d  dWWWW WWW dW dW dW d dW dW dW dW d dWWW dW dW dW d dW dW dW dW d :y dWWDWWW dW dW dW d dW dW! dW" dW# dW$ dW% W& W' W( W) W* W+ W, W- W. W/ W0 W1 W2 W3W4 W5 W6 W7 W8 W9 W: W; W< W= W> W? W@ WA WB WC WEWJWF dWG dWH dWI d  dWK d dWMWlWNWZWOWRWP dWQ d ï dWSWXWT dWU dWV dWW d r dWY d i dW[WfW\WaW] dW^ dW_ dW` d à dWb dWc dWd dWe d ï dWg dWh dWi dWj dWk d y dWmWWnWyWoWtWp dWq dWr dWs d dWu dWv dWw dWx d dWzWW{ dW| dW} dW~ d 7 dW dW dW dW d ï dWWWWW dW dW dW d ï dW dW dW dW d Œ dW dW dW dW dW d ű dWWWWWWWWWWW dW dW dW d Œ dW dW dW dW d ï dWWW dW dW dW d ï dW dW dW dW d ï dWWWWW dW dW dW d dW dW dW dW d s dWWW dW dW dW d ` dW dW dW dW d  dWWWWWWW dW dW dW d V dW dW dW dW d  dW dW d  dWWW dW d Z dWWW dW dW dW d Z dW dW dW dW d s dWXWWWWWWW dW dW dW d W dW dW dW dW d Z dWWW d  dW dW dW dW d Ʒ dWX dWW dX� dX dX d ҉ dXX X dX dX dX d Z dX dX dX dX d dXX#XXXXX dX dX dX d ƙ dX dX dX dX d ï dXX!X dX dX dX d  dX" d dX$X* dX%X& dX' dX( dX) d  dX+X-X, d G dX. dX/ dX0 dX1 d  dX3XX4XX5X_X6XHX7XBX8X=X9 dX: dX; dX< d dX> dX? dX@ dXA d dXC dXD dXE dXF dXG d s dXIXTXJXOXK dXL dXM dXN d ï dXP dXQ dXR dXS d ï dXUXZXV dXW dXX dXY d  dX[ dX\ dX] dX^ d dX`XwXaXlXbXgXc dXd dXe dXf d W dXh dXi dXj dXk d ï dXmXrXn dXo dXp dXq d ï dXs dXt dXu dXv d  dXxX~ dXyXz dX{ dX| dX} d ` dX dX dX dX dX d ï dXXXXXX dXX dX dX dX d Z dXXX dX dX dX d x dX dX dX dX d  dXXXXX dX dX dX d dX dX dX dX d  dXXX dX dX dX dX dX `X `X `X `X `X `X `X `X `X `X `X `X `X `X ` . `X dX dX dX d dXXX dXXX dX dX dX d dX dX dX dX d dXXX dX dX dX dX d dXXX dX dX dX d dX dX dX dX d G dXY0XY XXXXXXX d  dX d ƨ dXXX dX dX dX d i dX dX dX dX d dXXXXX dX dX dX d ï dX dX dX dX d ï dXYY� dY dY dY d dY dY dY dY d ƙ dY YY YY YY dY dY dY d ï dY dY dY dY d i d dYY dY dY dY d  dYY(YY#Y dY dY! dY" d dY$ dY% dY& dY' d dY)Y+Y* d dY, dY- dY. dY/ d ï dY1Y[Y2YDY3Y>Y4Y9Y5 dY6 dY7 dY8 d Z dY: dY; dY< dY= d Ʒ dY? dY@ dYA dYB dYC d ï dYEYPYFYKYG dYH dYI dYJ d s dYL dYM dYN dYO d ï dYQYVYR dYS dYT dYU d s dYW dYX dYY dYZ d ï dY\YsY]YhY^YcY_ dY` dYa dYb d :y dYd dYe dYf dYg d Z dYiYnYj dYk dYl dYm d  dYo dYp dYq dYr d  dYtYwYu dYv d dYxY}Yy dYz dY{ dY| d dY~ dY dY dY d  dYZYZ YYYYYYYYYYY dY dY dY d dY dY dY dY d y dY dY d  dYYYYY dY dY dY d ï dY dY dY dY d dYYY dY dY dY d dY dY dY dY d dYYYYYYY dY dY dY d dY dY dY dY d L dY dY dY dY dY d  dYYYYY dY dY dY d dY dY dY dY d dY dY d dYYYYYYYYY d ˘ dY dY dY dY d ï dYYY d dY dY dY dY d ï dYYYYY dY dY dY d dY dY dY dY d  dYYY dY dY dY d dY dY dY dY d  dYZ YZYZY dY dY dZ� d Œ dZ dZ dZ dZ d Ʒ dZ dZ d r dZ ZZ ZZ dZ dZ dZ d ї dZ dZ dZ dZ d Ʒ dZZZ dZ dZ dZ d š dZ dZ dZ dZ d Œ dZ!ZmZ"ZQZ#Z:Z$Z/Z%Z*Z& dZ' dZ( dZ) d dZ+ dZ, dZ- dZ. d s dZ0Z5Z1 dZ2 dZ3 dZ4 d i dZ6 dZ7 dZ8 dZ9 d  dZ;ZFZ<ZAZ= dZ> dZ? dZ@ d n dZB dZC dZD dZE d dZGZLZH dZI dZJ dZK d  dZM dZN dZO dZP d ï dZRZ\ZSZVZT dZU d ` d dZWZX dZY dZZ dZ[ d ï dZ]ZhZ^ZcZ_ dZ` dZa dZb d dZd dZe dZf dZg d ï dZiZkZj d dZl d dZnZZoZZpZxZqZvZr dZs dZt dZu d  dZw d  dZyZ~Zz dZ{ dZ| dZ} d dZ dZ dZ dZ d  dZZ dZZ dZ dZ dZ d dZZZ d dZ dZ dZ dZ d Ʒ dZZZZZZZ dZ dZ dZ d Œ dZ dZ dZ dZ d s dZZZ dZ dZ d dZ dZ dZ dZ d s dZZZZZ dZ dZ dZ d dZ dZ dZ dZ d dZZZ d r dZ dZ dZ dZ d s dZ[qZ[ZZZZZZZZZ dZ dZ dZ d  dZ dZ dZ dZ d dZZZ dZ dZ dZ d ` dZ dZ dZ dZ d  dZZZZZ dZ dZ dZ d s dZ dZ dZ dZ d ű dZZZ dZ dZ dZ d Z dZ dZ dZ dZ d à dZ[ZZZZZ dZ dZ dZ d dZ dZ dZ dZ d s dZ[Z dZ d[� d[ d s d[ d[ d[ d[ d 7 d[[ [ [ [ d d[ d Ʒ d[ d[ d[ d[ d[ d d[[B[[0[[%[[[ d[ d[ d[ d 7 d[ d[ d[ d[ d[! d[" [# [$ K[&[+[' d[( d[) d[* d ï d[, d[- d[. d[/ d ï d[1[7[2 d[3 d[4 d[5 d[6 d š d[8[=[9 d[: d[; d[< d d[> d[? d[@ d[A d d[C[Z[D[O[E[J[F d[G d[H d[I d d[K d[L d[M d[N d d[P[U[Q d[R d[S d[T d y d[V d[W d[X d[Y d d[[[f[\[a[] d[^ d[_ d[` d 7 d[b d[c d[d d[e d d[g[l[h d[i d[j d[k d r d[m d[n d[o d[p d  d[r[[s[[t[[u[[v[{[w d[x d[y d[z d 7 d[| d[} d[~ d[ d d[[[ d[ d[ d[ d  d[ d[ d[ d[ d  d[[[ d[ d[ d[ d[ d ï d[[[ d[ d[ d[ d  d[ d[ d[ d[ d d[[[[[[[ d[ d[ d[ d d[ d[ d[ d[ d s d[ d[ d[ d[ d[ d  d[[[ d[ d[ d[ d[ d W d[[[ d[ d[ d[ d Z d[ d[ d[ d[ d d[[[[[[[[[ d[ d[ d[ d Ʒ d[ d[ d[ d[ d x d[[[ d[ d[ d[ d d[ d[ d[ d[ d d[[[[[ d[ d[ d[ d i d[ d[ d[ d[ d ï d[[[ d[ d[ d[ d ` d[ d[ d[ d[ d Ʒ d[\ [[[[[ d[ d[ d[ d ï d[ d[ d[ d[ d ï d\�\\ d\ d\ d\ d ï d\ d\ d\ d\ d s d\ \\ \\ d\ d\ d\ d s d\ d\ d\ d\ d  d\\\ d\ d\ d\ d ï d\ d\ d\ d\ d d\"^\#]p\$\\%\|\&\U\'\>\(\3\)\.\* d\+ d\, d\- d d\/ d\0 d\1 d\2 d ï d\4\9\5 d\6 d\7 d\8 d d\: d\; d\< d\= d y d\?\J\@\E\A d\B d\C d\D d s d\F d\G d\H d\I d Z d\K\P\L d\M d\N d\O d d\Q d\R d\S d\T d Z d\V\e\W\]\X d\Y d\Z d\[ d\\ d Ʒ d\^\`\_ d d\a d\b d\c d\d d ï d\f\q\g\l\h d\i d\j d\k d d\m d\n d\o d\p d d\r\w\s d\t d\u d\v d d\x d\y d\z d\{ d ï d\}\\~\\\\\\ d\ d\ d\ d i d\ d\ d\ d\ d r d\\\ d d\ d\ d\ d\ d s d\\\\\ d\ d\ d\ d d\ d\ d\ d\ d  d\\\ d\ d\ d\ d L d\ d\ d\ d\ d š d\\\\\\\ d\ d\ d\ d Œ d\ d\ d\ d\ d z d\\\ d  d\ d\ d\ d\ d  d\\\\\ d\ d\ d\ d Z d\ d\ d\ d\ d ƨ d\\\ d\ d\ d\ d s d\ d\ d\ d\ d  d\]!\\\\\\\\\ d\ d\ d\ d r d\ d d\\\ d d\ d\ d\ d\ d Z d d\\\\ d\ d\ d\ d d\ d\ d\ d\ d d\] \\\\\ d à d\ d\ d\ d\ d ï d]�]] d] d] d] d ï d] d] d] d] d y d] ]] ]] d] d] d] d s d] d] d] d] d Ʒ d]]] d] d] d] d s d] d] d] d] d d]"]F]#]/]$],]%]']& d Z d]( d]) d]* d]+ d 7 d]- d]. d  d]0];]1]6]2 d]3 d]4 d]5 d ï d]7 d]8 d]9 d]: d d]<]A]= d]> d]? d]@ d Z d]B d]C d]D d]E d  d]G]^]H]S]I]N]J d]K d]L d]M d L d]O d]P d]Q d]R d ű d]T]Y]U d]V d]W d]X d d]Z d][ d]\ d]] d s d]_]e]` d]a d]b d]c d]d d d]f]k]g d]h d]i d]j d  d]l d]m d]n d]o d ï d]q^ ]r]]s]]t]]u]]v]{]w d]x d]y d]z d Ʒ d]| d]} d]~ d] d ï d]]] d] d] d] d d] d] d] d] d d]]]]] d] d] d] d  d] d] d] d] d d d]] d] d] d] d i d]]]]]]] d] d] d] d d] d] d] d] d š d]]] d] d] d] d Z d] d] d] d] d Z d]]]]] d] d] d] d  d] d] d] d] d r d]]] d] d] d] d d] d] d] d] d  d]]]]]]] d] d d]]] d] d] d] d  d] d] d] d] d d]]]]] d] d] d] d r d] d] d] d] d ï d]]] d] d] d] d d] d d]^ ]]]]] d] d] d] d ï d] d] d] d] d d]^^� d^ d^ d^ d r d^ d^ d^ d^ d Z d^ ^^ ^^ d^ d^ d^ d ˘ d^ d^ d^ d^ d ï d^^^ d^ d^ d^ d d^ d^ d^ d^ d ƨ d^!^^"^]^#^P^$^/^%^*^& d^' d^( d^) d Ʒ d^+ d^, d^- d^. d ï d^0^5^1 d^2 d^3 d^4 d  d^6 d^7 d^8 ^9 ^: ^; ^< ^= ^> ^? ^@ ^A ^B ^C ^D ^E ^F^L^G ^H^J ^I b^K  ^M ^N ^O < ^Q^W d^R^S d^T d^U d^V d d d^X^Y d^Z d^[ d^\ d d^^^r^_^j^`^e^a d^b d^c d^d d Œ d^f d^g d^h d^i d d^k^p^l d^m d^n d^o d 7 d^q d s d^s^~^t^y^u d^v d^w d^x d  d^z d^{ d^| d^} d > d^^^ d^ d^ d^ d ֐ d^ d^ d^ d^ d Z d^^^^^^^^^ d^ d^ d^ d Z d^ d^ d^ d^ d ï d d^^ d^ d^ d^ d d^^^^^ d^ d^ d^ d Ʒ d^ d^ d^ d^ d d^^^ d^ d^ d^ d d^ d^ d^ d^ d G d^^^^^^^ d ` d^ d^ d^ d^ d d^^^ d^ d^ d^ d d^ d^ d^ d^ d d^^^^^ d^ d^ d^ d y d^ d^ d^ d^ d d^^^ d^ d^ d^ d d^ d^ d^ d^ d  d^`"^_^_7^_ ^^^^^^^ d^ d^ d^ d s d^ d^ d^ d^ d d^^^ d^ d^ d^ d 7 d^ d^ d^ d^ d Z d^_^ d^ d_� d_ d_ d  d_ d_ d_ d_ d_ d ï d_ _!_ __ __ d_ d_ d_ d ï d_ d_ d_ d_ d  d___ d_ d_ d_ d s d_ d_ d_ d_ d  d_"_-_#_(_$ d_% d_& d_' d  d_) d_* d_+ d_, d d_._2_/ d_0 d_1 d d_3 d_4 d_5 d_6 d  d_8___9_H_:_@ d_;_< d_= d_> d_? d d_A_F_B d_C d_D d_E d d_G d  d_I_T_J_O_K d_L d_M d_N d d_P d_Q d_R d_S d ï d_U_Z_V d_W d_X d_Y d Ʒ d_[ d_\ d_] d_^ d d_`_t_a_l_b_g_c d_d d_e d_f d G d_h d_i d_j d_k d ` d_m_o_n d  d_p d_q d_r d_s d  d_u__v_{_w d_x d_y d_z d š d_| d_} d_~ d_ d Z d___ d_ d_ d_ d à d_ d_ d_ d_ d x d___________ d_ d_ d_ d Ʒ d_ d_ d_ d_ d d___ d_ d_ d_ d ï d_ d_ d_ d_ d s d_____ d_ d_ d_ d  d_ d_ d_ d_ d d___ d_ d_ d_ d d_ d  d____ d__ d_ d_ d_ d  d___ d_ d_ d_ d s d_ d_ d_ d_ d d___ d_ d_ d_ d_ d d___ d d_ d_ d_ d_ d š d_________ d_ d_ d_ d Ʒ d_ d_ d_ d_ d Z d d__ d_ d_ d_ d d_____ d_ d_ d_ d d_ d_ d_ d_ d i d_ d_ d d_``�` ``` d` d` d` d d` d` d` d` d ï d` `` d d` d` d` d` d d`` d`` d` d` d` d s d`` ` d` d` d` d i d`! d  d`#``$`v`%`J`&`8`'`- d`(`) d`* d`+ d`, d d`.`3`/ d`0 d`1 d`2 d d`4 d`5 d`6 d`7 d  d`9`D`:`?`; d`< d`= d`> d d`@ d`A d`B d`C d Ʒ d`E d`F d`G d`H d`I d d`K`_`L`T`M`R`N d`O d`P d`Q d Œ d`S d i d`U`Z`V d`W d`X d`Y d d`[ d`\ d`] d`^ d d```k`a`f`b d`c d`d d`e d d`g d`h d`i d`j d i d`l`q`m d`n d`o d`p d L d`r d`s d`t d`u d y d`w``x``y``z`|`{ d Œ d`} d`~ d` d` d  d``` d` d` d` d d` d` d` d` d Q d``` d` d i d``` d` d` d` d ï d` d` d` d` d d````` d` d` d` d` d  d``` d` d` d` d d` d` d` d` d ï d````` d` d` d` d ï d` d` d` d` d r d``` d` d` d` d d` d` d` d` d d`a````````` d Z d` d` d` d` d  d``` d` d` d` d V d` d` d` d` d s d````` d` d` d` d d` d` d` d` d s d``` d` d` d` d i d` d` d` d` d r d`a `a�``` d` d` d` d d` d` d` d` d r daaa da da da d ˘ da da da da d G da aa da da da da d G daaa da da da d i da da da da d daaEaa.a a(a!a&a" da# da$ da% d a' d ï d da)a* da+ da, da- d x da/a:a0a5a1 da2 da3 da4 d da6 da7 da8 da9 d da;a@a< da= da> da? d r daA daB daC daD d Œ daFaXaGaRaHaMaI daJ daK daL d s daN daO daP daQ d ï d daSaT daU daV daW d daYaaaZa\a[ d V da] da^ da_ da` d dabagac dad dae daf d dah d r dajmakfald9ambanbaoaapaaqaara}asaxat dau dav daw d day daz da{ da| d > da~ da d ï daaaaa da da da d ƙ da da da da d daaa da da da d  da da da da d y daaaaaaa da da da d s da da da da d i daaa da da da d  da d Ʒ daaaaa da da da d da da da da d ï daaa da da da d da da da da d Z daaaaaaaaa da da da d Z da da da da d daaa da da da d ï da da da da d ï daaaaa da da da d ` da da da da d > daaa da da da d V da da da da d dab ab�aaa da da da d i da da da da d s dbbb db db db d db db db db d ï db bb db db db db d ï dbbb db db db d y db db db db d dbbzbbKb b7b!b,b"b'b# db$ db% db& d db( db) db* db+ d s db-b2b. db/ db0 db1 d s db3 db4 db5 db6 d db8b@b9b;b: d db< db= db> db? d s dbAbFbB dbC dbD dbE d ï dbG dbH dbI dbJ d  dbLbcbMbXbNbSbO dbP dbQ dbR d  dbT dbU dbV dbW d ƨ dbYb^bZ db[ db\ db] d s db_ db` dba dbb d dbdbobebjbf dbg dbh dbi d  dbk dbl dbm dbn d s dbpbubq dbr dbs dbt d dbv dbw dbx dby d ï db{bb|bb}bb~ db d ï dbbb db db db db db xb xb xb xb xb xb xb xb xb xb xb xbbbbbb 4 x 4 4 Lb _ xbbb x 4 _bb ` x x +b db db db d Z dbbbbb db db db d š db db db db d 7 dbbb db db db d db db db db d dbbbbbbb db db db d db db db db d š dbbb db db db d x db db db db d Z dbbb db d dbbb db db db d db db db db d  dbcbc@bcbbbbbbb d  db db db db d ï dbbb db db db d db db db db d  dbcbcb db db dc� d x dc dc dc dc d dcc c dc dc dc d dc dc dc dc d  dcc)ccccc dc dc dc d dc dc dc dc d Z dcc$c dc! dc" dc# d dc% dc& dc' dc( d ï dc*c5c+c0c, dc- dc. dc/ d  dc1 dc2 dc3 dc4 d  dc6c;c7 dc8 dc9 dc: d 7 dc< dc= dc> dc? d dcAcpcBcYcCcNcDcIcE dcF dcG dcH d ï dcJ dcK dcL dcM d Ʒ dcOcTcP dcQ dcR dcS d dcU dcV dcW dcX d Ʒ dcZcec[c`c\ dc] dc^ dc_ d ˘ dca dcb dcc dcd d dcfckcg dch dci dcj d Z dcl dcm dcn dco d  dcqccrc}cscxct dcu dcv dcw d  dcy dcz dc{ dc| d V dc~cc dc dc dc d r dc dc dc dc d 7 dccccc d  dc d Ʒ d dcc d  dccccccccccc dc dc dc dc d dc dc dc dc dc dc dc dcc dc dc dc dc dc dc dc d dcc dc dc dc dc d dcc d dcc d dc dcc dc dc d d Ec dc dc dc d 7 dc dc dc dc dc d dccccc d Œ dc dc dc dc d dc dc dc dc dc d dccccccc dc d r dc dc dc dc d  dc dc d s dccccc dc dc dc d y dc dc dc dc d dccc dc dc dc d y dc dc dc dc d G dcdcd cdcd�c d Œ dd dd dd dd d d ddd dd dd dd d š dd dd dd d Z dddd d i dd dd dd dd d  ddd*dd$ddd dd dd dd d dd dd! dd" dd# d Ʒ dd% dd& dd' dd( dd) d Ʒ dd+d3d,d.d- d dd/ dd0 dd1 dd2 d dd4 dd5 dd6 dd7 dd8 d r dd:ed;dd<dd=d\d>dHd?dBd@ ddA d Z d ddCdD ddE ddF ddG d Œ ddIdTdJdOdK ddL ddM ddN d Œ ddP ddQ ddR ddS d  ddUdWdV d ddX ddY ddZ dd[ d dd]dqd^dfd_dad` d 7 ddb ddc ddd dde d s ddgdldh ddi ddj ddk d ddm ddn ddo ddp d ï ddrd}dsdxdt ddu ddv ddw d ` ddy ddz dd{ dd| d dd~dd dd dd dd d š dd dd dd dd d dddddddddd dd dd dd d s dd dd dd dd d s d ddd dd dd dd d dddddd dd dd dd d  dd dd dd dd d dddd dd dd dd d Z dd dd dd dd d à dddddddd dd dd dd d s dd dd dd dd d  dddd dd dd dd d dd dd dd dd d Ʒ dddd dd dd dd dd d Ʒ dddd dd dd dd d dd dd dd dd d 7 dde&dedddd ddd d r dddd dd dd dd d Ʒ dd dd dd dd d ` dddd dd dd dd dd d 7 dddd dd dd dd d ï dd dd dd de� d G deeee e de de de de d Z de ee de de de d de de de de d Œ dee eee de de de d  de de de de d r de! de" de# de$ de% d G de'eHe(e<e)e1e*e/e+ de, de- de. d de0 d  de2e7e3 de4 de5 de6 d r de8 de9 de: de; d  de=e@e> de? d Z deAeCeB d ï deD deE deF deG d Ʒ deIeieJe^eKeYeL deM deN deO deP deQ deR deS d deTeU deV '0eW '0eX '0 d '0eZ de[ de\ de] d Z de_ede` dea deb dec d dee def deg deh d dejeuekepel dem den deo d  deq der des det d > deve{ew dex dey dez d y de| de} de~ de d Ʒ def&eeeeeeeeeee de de de d ` de de de de d deee de de de d s de de de de d ï deee de de de de d deee de de de d ï de d deeeeeee de de de d y de de de de d Ʒ deee de de de d Z de de de de d 7 deeeee de de de d  de de de de d de de de de de d deeeeeeeee de de de d s de de de de d ƨ de de de de de d ï deeeee de de de d s de de de de d Ʒ deee de de de d s de de de de d ï df�ffff df df df df d y dff f df df df d  df df df df d dfffff df df df d G df df df df d dff!f d 7 df" df# df$ df% d df'f]f(fEf)f6f*f0f+ df, df- df. df/ d s d df1f2 df3 df4 df5 d y df7f?f8f:f9 d  df; df< df= df> d s df@ dfA dfB dfC dfD d ց dfFfPfGfJ dfHfI d :y dfK dfL dfM dfN dfO d dfQfWfR dfS dfT dfU dfV d Z dfX dfY dfZ df[ df\ d  df^ff_frf`fgfa dfb dfc dfd feff H fhfmfi dfj dfk dfl d x dfn dfo dfp dfq d dfsf~ftfyfu dfv dfw dfx d dfz df{ df| df} d df df d dfffffff df df df d ï df df df df d dfff d r df df df df d ï dfffff df df df d ˘ df df df df d df df df df df d Œ dfiIfh fg`fgfffffffff df df df d df df df df d dfff df df df d r df df df df d Z dfffff df df df d df df df df d dfff df df df d  df df df df d  dfffffff df df df d Œ df df df df d ` dfff df df df d df df df df d Ʒ dff dff df df df d Z dfgf df df dg� d dg dg dg dg d ï dgg1ggg gg gg dg dg dg d dg d dggg dg dg dg d  dg dg dg dg d dgg&gg!g dg d ï dg" dg# dg$ dg% d Z dg'g,g( dg) dg* dg+ d dg- dg. dg/ dg0 d  dg2gIg3g>g4g9g5 dg6 dg7 dg8 d  dg: dg; dg< dg= d $e dg?gDg@ dgA dgB dgC d s dgE dgF dgG dgH d dgJgUgKgPgL dgM dgN dgO d dgQ dgR dgS dgT d ƨ dgVg[gW dgX dgY dgZ d  dg\ dg] dg^ dg_ d > dgaggbggcgrgdgg dgegf d L dghgmgi dgj dgk dgl d E dgn dgo dgp dgq d dgsg~gtgygu dgv dgw dgx d  dgz dg{ dg| dg} d  dggg dg dg dg d dg dg dg dg d r dggggggg dg dg dg d dg dg dg dg d y dggg dg dg dg d ` dg dg dg dg d Œ dggggg d Z dg dg dg dg d dggg dg dg dg d dg dg dg dg d Z dggggggggg dg dg dg d s dg dg dg dg d s dggg dg dg dg d  dg dg dg dg d i dggggg d  dg dg dg dg d Z dggg dg dg dg d ï dg dg dg dg d dggggg dg d dggg dg dg dg d dg dg dg dg d V dggggg dg dg dg d dg dg dg dg d dghh� dh dh dh d s dh dh dh dh d dh hh hUh h2h h!hhhhh d dh dh dh dh d  dhhh dh dh dh d y dh dh dh dh d dh"h*h#h%h$ d dh& dh' dh( dh) d dh+h-h, d r dh. dh/ dh0 dh1 d r dh3hDh4h: dh5h6 dh7 dh8 dh9 d  dh;h?h< dh= dh> d dh@ dhA dhB dhC d :y dhEhMhFhHhG d dhI dhJ dhK dhL d  dhNhShO dhP dhQ dhR d ï dhT d š dhVhhWhnhXhchYh^hZ dh[ dh\ dh] d 7 dh_ dh` dha dhb d ű dhdhihe dhf dhg dhh d  dhj dhk dhl dhm d Z dhohzhphuhq dhr dhs dht d Œ dhv dhw dhx dhy d ï dh{ dh| dh} dh~ dh d ƨ dhhhhhhh d s dh dh dh dh d  dh dh d s dhhhhh dh dh dh d dh dh dh dh d d dhh dh dh dh d dhhhhhhhhh dh dh dh dh d dhhh dh dh dh d s dh dh dh dh d ƨ dhhhhh d dh dh dh dh d Ʒ dhhh dh dh dh d  dh dh dh dh d dhhhhhhh dh dh dh d dh dh dh dh d dhhh dh dh dh d dh dh dh dh d dhhhhh dh dh dh d ƨ dh dh dh dh d  dhhh dh dh dh d ï dh dh dh dh d r dhi$hihihi�h dh dh dh d di di di di d G dii i di di di d di di di di d Ʒ diiiii d Z di di di di d diii di di di d  di di! di" di# d di%i7i&i, di'i( di) di* di+ d ƨ di-i2i. di/ di0 di1 d Ʒ di3 di4 di5 di6 d Ʒ di8iCi9i>i: di; di< di= d di? di@ diA diB d i diD diE diF diG diH d r diJkiKiiLiiMimiNi`iOiZiPiUiQ diR diS diT d diV diW diX diY d k d di[i\ di] di^ di_ d diaigib dic did die dif d s d dihii dij dik dil d Z diniioizipiuiq dir dis dit d  div diw dix diy d s di{i}i| d di~ di di di d diiiii di di di d di di di di d di di d diiiiiiiii di di di d ˘ di di di di d ï diii di di di d di di di di d  diiiii d di di di di d diii di di di d di d  diiiii di d diii di di di d di di di di d ï diii di di di di d r diii di di di d  di di di di d Œ dij&ijiiiiiii di di di d  di di di di d ï diii di di di d x di di di di d diii di di di di d  d dij� dj dj dj d ҉ djjjj djj dj dj dj d Z dj dj d  djjjjj dj dj dj d ï dj dj dj dj d djj!j dj dj dj d dj" dj# dj$ dj% d G dj'jNj(j?j)j4j*j/j+ dj, dj- dj. d s dj0 dj1 dj2 dj3 d  dj5j:j6 dj7 dj8 dj9 d ï dj; dj< dj= dj> d dj@jKjAjFjB djC djD djE d djG djH djI djJ d x djL djM d Œ djOkjPj[jQjVjR djS djT djU d Œ djW djX djY djZ d dj\kj] dj^ dj_kEj` ja jb jc jd jejjfjjg jhjjijjj jk jl jm jn jo jp jqjr js jt juj| jvjwjyjx jzj{ ' j}jj~jjj 6 Q&jj E j jj T  j j j j j j j jj j j j j jj sj j j j j j j j jj j j j j j j j j j j Q& j jj j jjjjjjjjjjjj Q& T jj  Q& j j jjjjj  jj  jjjj Q&  jj T j j j j ' j j j j j jj j j j jjjjjj Q&  jj Q&   jj j cj i jjj j jj j jj j j j B jj jkj jk jk� j jj j kkkkk k k k k k k o k o kk Q&kkk Q&k Q& Q&kk Q& k Q&kk Q&k Q& kk:kk*kk# Tkkk"k Tk! T k$k(k% ' 'k&k' ' ' k) ' k+k6k,k3k-k0 k. k/  k1  k2  k4 k5  Ek7k8 k9 E k;kCk< k= k> k?kAk@ v kB s kD T kF kGkH kI kJ kK kLk|kMkbkN kOkV KkP KkQkR K kSkT KkU K K KkW KkXkYk^kZ K k[k\ K k] Kk_ Kk` Kka K Kkc kdktke kf kgkhkmkikkkj ': kl ( knkqko kp D kr ks ku kv kw kxky kz k{ p k} k~ kkk Q&k Q&kk Q&k kk Q& k Q&kkkkk Q& k Q&k Q& k Q&k Q&kk o Q&k Q& o Q&kkkkkk Tk Tk Tkkk ' 'kk ' ' Tk T 'kk T ' Tkkkkkk k k  Tk  k  Tk Tk T  T Ekk Tk T E Tk Tk Tk Tk Tkkk T v Tk T s Tk dk dk dk d x dkk dkk dk dk dk d dkkk d  dk dk dk dk d Z dkl}kl.klkkkkkkk dk dk dk d dk dk dk dk d dkkk dk dk dk d Ʒ dk dk dk dk d dkkkkk dk dk dk d Œ dk dk dk dk d ï dkkk dk dk dk d y dk dk dl� dl d Ʒ dllllll l dl dl dl d dl dl dl dl d  dlll d  dl dl dl dl d  dll#lll dl dl dl d dl dl dl! dl" d ï dl$l)l% dl& dl' dl( d ` dl* dl+ dl, dl- d Z dl/lVl0l?l1l7 dl2l3 dl4 dl5 dl6 d dl8l=l9 dl: dl; dl< d  dl> d V dl@lKlAlFlB dlC dlD dlE d ï dlG dlH dlI dlJ d  dlLlQlM dlN dlO dlP d G dlR dlS dlT dlU d dlWlklXl`lYl^lZ dl[ dl\ dl] d Z dl_ d dlalflb dlc dld dle d y dlg dlh dli dlj d  dlllwlmlrln dlo dlp dlq d Ʒ dls dlt dlu dlv d ƨ d dlxly dlz dl{ dl| d s dl~llllllll dl d dlll dl dl dl d ï dl dl dl dl d  dlllll dl dl dl d š dl dl dl dl d d dll dl dl dl d s dlllllll dl dl dl d  dl dl dl dl d  dlll d dl dl dl dl d ս dlllll d ` dl dl dl dl d r dlll dl dl dl d dl dl dl dl d dlllllll dl dl dl dl d G dlll dl dl dl d ï dl dl dl dl d dlllll dl dl dl d dl dl dl dl d d dll dl dl dl d s dlmlllll dl dl dl d  dl dl dl dl d  dlml dm� dm dm d s dm dm dm dm d š dm mm dm dm dm dm d y dmmm dm dm dm d ï dm dm dm dm d Z dm dm Zmo Zmm Z Zm m! Zm" Zm# Zm$ Z Zm% Zm& Zm'm(mm)mm*mfm+m6m,m.m- Z  Z m/m0 Zm1 m2 Zm3 Zm4 Zm5 Z  Zm7mQm8mIm9 m:mC Zm; m< m= m>m? Zm@ mA mB   ZmD ZmE  mF mG mH  Z ZmJ ZmK ZmLmM ZmN mO mP Z  ZmRmWmS mT ZmU ZmV Z  ZmXmZmY   Zm[mcm\ m] Zm^ Z m_m` Zma Z mb  Zmd Zme Z  Zmgm}mhmj Zmi  Zmkmsml mm Z Zmnmomqmp Z  Zmr Z  Z Zmtmu Zmv Zmw Zmx Zmy Zmz Zm{ Zm| Z  Zm~ Z  Zmmmmmmmm  Zm m Zm m  m Z m m   Z mmm  Z m Zmm Zm Z mm Z  Zmmmm Zmm Zm Z Zmm m m Zm Zm Zm Z  Zm m  Zmm Zm Zm Zm m Z  Zmmmmm m Z Zmm Zm Zm m Zm Zm m   Z mm  mm Zm Zm Z  Zmm  Zmmm Zm m Zm Zm Z  Zm Z Zmm Zm Zm Zm Zm Zm Z  Zmnm Zmnmmmm m  Zm m   Zmmmmm Zm mm Z m m Zm Zm Zm Zm Z  Z Z mmmmm mm Zmm Zm Zm Zm Zm Z Z m Zm Zm Zm Zm  Z m  m Z n� n  Z n Znnnnnn n  n Zn n Zn Zn Z  Z  Z nnn Z   Znnnn  Z Z  Z nnnnrnnKnn2nn+nn# nn n n! Zn" Z  Z n$n%  n&n' Z n(n) Zn* Z  Z n,n- n. n/ n0 Z n1  Zn3n@n4n8n5  n6n7   Zn9 n:n=n; n< Z  Zn> n? Z  Z nAnBnInCnGnD nE ZnF Z  ZnH   Z nJ  ZnLnhnMnbnNnUnO  nPnQ nR ZnS ZnT   ZnVn^nW  nXnY ZnZ Zn[ Zn\ Zn] Z  Zn_n` Z  na  Z ncnd ne nf ng Z Z nino nj nk nl nmnn Z  Znp  nq  Znsnzntnwnu  nv Z  nxny   Zn{nn|n n} n~n nnn Zn Zn Z  Z  Zn  Zn  Znn n Zn n  Z  Znnnnnn nnn n n Z   Znn Z nn n n nn Z  Znnn Z Znn Zn Zn n n Z Z   Znnnn nn n n Zn Zn Zn Z  Z n nn Z  Znnn Z Znn  Znn n Zn Z  Z n Zn Z nnnnnn nn  Zn Znn Z  Zn n n Z nn Z  Zn n n  nn n n n n Z  Znnnnn   Znnnnn Zn n Zn Zn Zn Zn Z  Zn n n n Zn Zn Zn Z  Zn Zn  Z nn  Znn  Znnn Znnn   Z  Zo�  o  Zoqyooo Zo Z Zoo Zo Zo Z Zo o oo Zo Zo Zoon Zoo Zoo Zo Zo Zo Zo Zo Zo Z Zoo Z Zoo Zo Zo Zo! Zo" Z Zo# Zo$ Zo%o& Zo' Zo( Zo) Zo* Zo+ Zo, Zo- Zo. Zo/ Z Zo0o1 Z Zo2o3 Zo4 Zo5 Zo6 Z Zo7 Zo8 Zo9o: Zo; Zo< Zo= Z Zo>o? Z Zo@ ZoAoB Z ZoC ZoD ZoE ZoFoG Z ZoH ZoIoJ Z ZoK ZoLoM Z ZoNoO Z ZoP ZoQoR ZoS ZoT Z ZoU ZoV ZoW ZoXoY Z ZoZo[ Z Zo\o] Zo^ Zo_ Zo` Zoa Zob Zoc Zod Z Zoe Zofog Zoh Zoi Z Zoj Zok Zol Zom Z oo Zop Zoqoor Zos Zot Zou Zovo~ow oxo{oy oz Zo| o} Z oo Z Zo Zo Zo Zo Zoo o o o Z o Zo Zooo Zo Zoooo o o Zo oo Zoooo o Zo o Zo o oo o o Zo Zo Zo Z Zoo oo o o Z Zo Zo Z Zoo Z Z Zoo Zo Zop Zoo Zo Zo Z Zoo Zo Zo Zo Zo Z Zo Zoo Z Zoo Zo Z Zoo Zo Z Zoo Z Zoo Zo Zo Z Zo Zoo Zo Zo Zo Zo Zo Zo Zo Zo Zo Zo Z Zo Zoo Z Zo Zoo Zo Z Zo Zo Zo Zoo Z Zoo Z Zo Zo Zo Zoo Zo Z Zoo Z Zo Zo Zo Zoo Zo Z Zoo Z Zoo Zp� Z Zpp Z Zpp Zp Zp Z Zp Zp Zp Zp Zp Zp Zp p Zp Z Zpp Z Zpp Zp Zp Z Zpp Zp Zp Z Zp Zpp Zp Z Zp Zp Zp! Zp"pp# Zp$pp%pEp& Zp' Zp(p;p) Zp* Zp+p-p, Z b Zp.p3p/ b bp0p1 bp2 b Z bp4p7p5 b bp6 Z b bp8p9p: b Z Z bp< Zp= Zp> Z bp?p@ ZpA b bpBpC b bpD Z bpFplpG ZpHpapI ZpJ ZpK ZpLpYpM 3pNpRpO 3pP 3pQ 3 3 ZpS 3pTpWpU 3 3pV 3 Z 3pX Z 3pZp^p[ 3p\ 3p] 3 Z 3 3p_p` 3 Z 3pb Zpc Zpd Zpe Z 3pfpg 3 3phpi 3pjpk 3 Z 3 Zpm Zpn Zpo Zpp Zpq Zpr Zps Zpt Zpu Zpv Z Zpwpx Zpy Zpz Z Zp{p| Zp} Zp~ Zp Zp Zp Zp Zp Zp Zp Zp Zp Zp Z b Zppppp Zppp Zp Zp Zp Zpp +p +pp +ppp + Z + Z + +pppp +p + +p Z +p + +p +p + Zp Zp Zp Zp Zpppppp + Zppp + Z + Zp Z +ppp +pp Zp Z + + Zppp + Z + Zp Zp Z + +p +p +pp +p + + Zp Zp Zp Zp Zp Zp Zp Zp Zp Zp Z Zpp Zp Zp Z Zpp Zp Zp Zp Zp Zp Zp Zp Zp Zp Zp Zp Zp Z + Zp Zp Zpp ' Zp Zp Zp Zp Z ' Zp Zpqpp Zpqp Zpqp Zp Zppp Z W Zp Wpp Wpppp W Wpp W Zp Z Wp Wp W W Z Wq�q Wq Wq Wq W Z Wq Zq Zq W Wq q Wq q Wq Wq Wqq W Z W Wq Wq W Zq Zq Zq Zq Zq Zq Zq Zq Zq Zq Z Zqq Zq Zq! Z Zq"q# Zq$ Zq% Zq& Zq' Zq( Zq) Zq* Zq+ Zq, Zq- Zq. Zq/ Zq0 Zq1 Wq2 Wq3 Wq4 Wq5 Wq6 Wq7 Wq8 Wq9 Wq: Wq; Wq< Wq= Wq> Wq? Wq@ WqA WqB WqC WqD WqE WqF WqG WqH WqI WqJ WqK WqL WqM WqN WqO WqP WqQ WqR WqS WqT WqU WqV WqW WqX WqY WqZ Wq[ Wq\ Wq] Wq^ Wq_ Wq` Wqa Wqb Wqc Wqd Wqe Wqf Wqg Wqh Wqi Wqj Wqk Wql Wqm Wqn W Wqo W Zqq Zqr Zqs Zqtqu U Zqv Zqw Zqx Z U Z Zqzq{ Z Zq|q} Zq~ Zqqqqqqqqq Zq Zq Zqq 4{ :j ޕ Zqqq Zq Zqq 'I 'Y 'iqqq Zqq 'y ' Zq Zqq ' Zqqqqq Zq Zq Z ޤ Zq Zq Zq Z ކ Zqqqq Zq Z ' Zq Zq Z c 'qqq Zqqqqq Zq Z ' Zq Zqq '  S Zqqq Zq Z  hq Zqq Z Y Zqqqq ,qqqqq  ; S q Z Ɂ Zqqqqqq Z Zq - Uq Zqq ' ' Zqqqqq Zqq ɟ U ɽ Zq Zq Z J :[q 4q Zqq ɐ w ɮ Zqrqqq Zqqqqq Zqq " ( ( Zq Zqq (% 2 (5q Zq Zq Z Zq Zqqqqqqqq (E (U (e (uq Z ( q Zq Z ( (qqq F Uq U Z Fr�r Z Zrr r Z rr Zr Zr Z  (r rr rr rr Zr Z ( Zr Zr Z Wrrr Zrr # ( Zr Zr Z  Zrrr r Zr Z  1r Kr! Zr" Z Zr$r%"r&r'zr(y,r)upr*sr+s�r,rr-r]r.rGr/r;r0r7r1r4r2 dr3 d  dr5 dr6 d  d r8r9 dr: d dr<r@r= ïr> dr? d s drArDrB drC d Œ drE drF d r drHrTrIrMrJ `rK drL d drNrQrO drP d ƨ drR drS d  drUrV rWrZrX drY d  dr[ dr\ d Ʒ dr^rtr_rhr`rd Œrarb drc d > d drerf drg d drirprjrmrk drl d drn dro d d drqrr drs d  drurrvr}rwrzrx dry d y dr{ dr| d 7 dr~rr dr d ï dr dr d y drrr dr dr d ƨ drrr dr d y dr dr d s drrrrrrrrr ir dr d s drrr dr d  dr dr d drr rr dr dr dr rr rr rr rr rr rr rr rr rr rr rr rrr rrrr = r rr rr r Orrr dr d ˘ dr dr d k drrrr d à drr dr d drrrrr dr d Œ d  drrr dr d dr dr d ƨ drrrrrr irrr dr d Œ dr dr d drr drr dr d d d rrrr xrr dr d ï drrr dr d r dr dr d  drrrrr dr d 4 dr dr d ï drrr dr d r dr dr d Z dssess5ssss ss ss ds d ï ds s ds d s dsss ys ds d dsss ds d ds ds d dss&ss"sss ds d ï ds ds! d ds# ïs$ ds% d Œ ds's.s(s+s) ds* d s ds, ds- d ƨ ds/s2s0 ds1 d y ds3 ds4 d ds6sOs7sCs8s<s9 ïs: ds; d  ds=s@s> ds? d ï dsA dsB d dsDsHsE sF dsG d Ʒ dsIsLsJ dsK d dsM dsN d Z dsPs\sQsXsRsUsS dsT d dsV dsW d y d dsYsZ ds[ d ds]sa s^s_ ds` d s d sbsc dsd d ï dsfssgsyshsqsismsj sk dsl d  dsn dso dsp d  d srsssvst dsu d ï dsw dsx d dszss{ss|ss} ds~ d ds ds d  d rss ds d dss ss s   tIs ds ds d  dsssssssss d ܹ ds ds d  dsss ds d ds ds d Z dsssss ds d ds ds d  dsss ds d  ds ds d dssss rss ds d ` dsss ds d š ds ds d dsssss ds d ds ds d Z dsss ds d ds ds d ï dstst0sssssssssss ds d ds ds d ï ds s ds d  dss ss ds d  dsss ds d ds ds d dsssss s ds d ï dsss ds d ds ds d  dsss Zs ds d i d Œss ds d Ʒ dststt�tttt dt d ƨ dt dt d Z d s t tt t t dt d 7 dt dt d r dt Zt dt d 7 dtt!tt dtt dt d x dttt dt d s dt dt d  dt"t)t#t&t$ dt% d ƨ dt' dt( d ց dt*t-t+ dt, d r dt. dt/ d  dt1tgt2tHt3t<t4t8 t5t6 dt7 d Œ d dt9t: dt; d s dt=tAt> dt? dt@ d  dtBtEtC dtD d ï dtF dtG d dtItXtJtQtKtNtL dtM d L dtO dtP d ï dtRtUtS dtT d ï dtV dtW d G dtYt`tZt]t[ dt\ d dt^ dt_ d dtatdtb dtc d r dte dtf d 7 dthtutitrtjtn ztktl dtm d d totp dtq d r dtstt d  tvttwt{tx dty dtz d  d t|t} dt~ d dtt dt dt dt d  dtttttttttt stt dt d dttt dt d dt dt d ï dttt dt dt d  dttt dt d i dt dt d dtttt Ltt dt d dttt dt d dt dt d dttttt dt d dt dt d Z dttt dt d s dt dt d  dttttttttt dt d  dt dt d s d tt dt d ï dttttt dt d  dt dt d dt ït dt d ï dttttttt dt d i dt dt d dt dt dt d dttttt dt d 7 dt dt d Z dttt dt d Z dt dt d dtu@tututtttt dt d dt dt d dtuu� du d du du d duu uu u du d  du du d  duuu du d G du du d G duu4uuuuu du d k du du d š duu1u Œu Œu! Œu" Œu# Œu$ Œu% Œu& Œu' Œu( Œu) Œu* Œu+ Œu, Œu- Œ Œu.u/ Œu0 Œ Œu2 du3 d du5u9 Œu6u7 du8 d r du:u=u; du< d ˘ du> du? d duAuTuBuKuCuD G uEuHuF duG d duI duJ d Z duLuM duNuQuO duP d duR duS d Œ duUuduVu]uWuZuX duY d du[ du\ d du^uau_ du` d  dub duc d s dueulufuiug duh d y duj duk d  dum dun duo d Ʒ duqwLurvBusuutuuuuuvuyuwux d G d kuzu{ d `u|uu} du~ d  du du d s duuuu duu du d Ʒ du zu du d duu d kuu du d ï duuuuuu d ҉uuu du d du du d  duuuuu du d du du d  duuu du d du du d duuuuuuu du d du du d d uu du d duuuuu du d ` du du d i duuu du d k du du d Ʒ duvuuuuuuuuu du d x du du du du uu u u uu u u u u uu uu uu uu r uuu du d r du du d Z duu Œuu du d  du u du d ï duvuu uu du d  d Ʒuu dv� d dvv vvv dv d ï dv dv d  dv v v dv d r dv dv d ï dvv)vvvv ivv dv d  dvvv dv d  dv dv d dvv# Œv v! dv" d s dv$v'v% dv& d ҉ dv( d r dv*v3v+v, d yv-v0v. dv/ d i dv1 dv2 d ï dv4v;v5v8v6 dv7 d  dv9 dv: d dv<v?v= dv> d ` dv@ dvA d Z dvCvvDvvEvnvFvbvGvNvHvKvI dvJ d dvL dvM d  dvO yvP vQ vR vS vT vU vV vW vX vY vZ v[ v\ v] v^ v_ v` va vcvjvdvgve dvf d y dvh dvi d r d dvkvl dvm d y dvovw rvpvqvtvr dvs d G dvu dvv d ƙ dvxvvyv|vz dv{ d dv} dv~ d ˘ dvvv dv d  dv dv d Œ dvvvvvvvvv dv d Z dv dv d ƙ dv dv dv d  dvvv Œv Œv Œvv Œ Œvv Œv Œv Œvvv Œv Œv Œv Œvv \ Œv Œvvv \v \ Œ \v Œ \v \ Œ Œvv Œv Œv Œvv \ Œv Œv Œv Œ \ Œ  vvvv dvv dv d V d vv dv d ï dvvv Œv dv d dvvv dv d dv dv d dvwvvvvvvv v dv d dvvv dv d dv dv d dvvv v dv d r dv dv dv d dvvvv dvv v v v v v v v v v  vvv dv d dv dv d dvw�v dv dv d ű dwww dw d  dw dw d dww$w ww w w w dw d s dwww dw d dw dw d dwwwww dw d à dw dw d dww!w dw d dw" dw# d dw%w1w&w*w' ïw( dw) d  dw+w.w, dw- d  dw/ dw0 d Ʒ dw2w9w3w6w4 dw5 d L dw7 dw8 d dw:wIw; dw< dw= dw> dw?wEw@ dwA dwB dwC dwD d d 4wF d dwG dwH ' dwJ dwK d dwMxwNwwOw|wPwfwQw]wRwVwS dwT dwU d dwWwZwX dwY d Ʒ dw[ dw\ d Z dw^wbw_ w` dwa d r d dwcwd dwe d r dwgwpwhwi Ʒ wjwmwk dwl d dwn dwo d Œ dwqwxwrwuws dwt d r dwv dww d ï dwy wz dw{ d Z dw}ww~wwwwww dw d ˘ dw dw d Z d d wwwww dw d  dw dw d dw w dw d dwwww w  d dww dw d  dw dwww dw d ҉ dw dw d dwwwwwwwww 7w dw d r d ƙ dwwwww dw d dw dw d  dw w dw d ` dwwwwwww dw d dw dw d Z dw w dw d Z dwwwww dw d y dw dw dw dw dw dw dw dw d d $www dw d ҉ dw dw d dwwwwww dww dw d Ʒ d dww dw d Œ dww dww dw d r dwww dw d  dw dw d r dwwwww Ʒw dw d Z d d ˘wx�www dw d  dw dw d = dx x dx d ҉ dxxfxx6xx xxx xx x x dx d dx dx d ï dx dx dx d Z dxx dxx dx d  dxxx dx d Ʒ dx dx d dx!x*x"x&x# dx$ dx% d dx' Zx( dx) d s dx+x2x,x/x- dx. d  dx0 dx1 d dx3 dx4 dx5 d  dx7xMx8xDx9x@x:x=x; dx< d > dx> dx? d Ʒ d xAxB dxC d r dxExI xFxG dxH d Œ dxJ ŒxK dxL d dxNxZxOxVxPxSxQ dxR d Z dxT dxU d s d àxWxX dxY d s dx[x_x\ dx] dx^ d Ʒ dx`xcxa dxb d dxd dxe d dxgxxhxxixuxjxqxkxnxl dxm d 7 dxo dxp d d dxrxs dxt d  dxvx}xwxzxx dxy d ï dx{ dx| d dx~xx dx d  dx dx d dxxxxx `x dx d Ʒ dx yx dx d  dxxx x dx d s dx Ʒx dx d dxxxxxxxxx dx d ƨ dx dx d dxxx dx d dx dx d dxxxxx dx d Ʒ dx dx d š dxxx dx d dx dx d dxy$xx ҉xx dx d dxy!x dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dy� dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy dy d $e dy" dy# d dy%y( yy&y' d  dy) dy* dy+ d ƨ dy-zy.y y/y0y3y1 dy2 d  dy4ymy5yNy6yBy7y;y8 y9 dy: d ` dy<y?y= dy> d dy@ dyA d dyCyJyDyGyE dyF d Ʒ dyH dyI d ï d dyKyL dyM d x dyOy^yPyWyQyTyR dyS d dyU dyV d dyXy[yY dyZ d ï dy\ dy] d Ʒ dy_yfy`ycya dyb d r dyd dye d  dygyjyh dyi d dyk dyl d ï dynyyoyxypytyq zyr dys d Œ d dyuyv dyw d  dyyy}yz dy{ dy| d dy~ ry dy d  dyyyyyyy dy d dy dy d d yy dy d dyyy ïy dy d 7 dy y dy d ƙ dyyy dy d Œ dyzyyyyyyyy yy dy d dyyy dy d Œ dy dy d $e dyyyyy dy d dy dy d dyyy dy d s dy dy d r dyyyy d yyy dy d ҉ dy dy d dyyyyy dy d y dy  y yy y y y y y y y y y y y y y y  y dy dy d dyyyyyyy y dy d  d dyy dy d dyyyyy dy d  dy dy d d dyy dy d  dyzyy `yy dy d dyzy dz� d dz dz d dzz zz z dz d dz dz d ï dz zz dz d dz dz d dzzDzz+zzzzz dz dz d dz dz dz d ï dz z$z! dz" dz# d  dz%z(z& dz' d ` dz) dz* d Z dz,z8z-z4z.z1z/ dz0 d Z dz2 dz3 d dz5 Zz6 dz7 d ï dz9z=z: dz; dz< d 7 dz>zAz? dz@ d Ʒ dzB dzC d Ʒ dzEzvzFzjzGzfzHzKzI dzJ d Œ dzL dzM dzN dzO zP zQ zR zS zTzU zV zW zX zY zZ z[ z\ z] z^ z_z` za zb zc zdze zg zh dzi d dzkzo rzlzm dzn d dzpzszq dzr d dzt dzu d r dzwzzxzzyz|zz dz{ d i dz} dz~ d Œ dzzz dz d ï dz dz d dzzzzz dz d dz dz d ï dz z dz d dz dz d 7 dzzz|Iz{cz{zzzzzzzz zz dz d d ƨzz dz d ï dzzzzz dz d ƨ dz dz d dzzz dz d dz dz d Z dzzzzzzz dz d s dz dz d dzzz dz d dz dz d s dzzz z dz d Z dzzz dz d ï dz dz d dzzzzzzzzz dz d dz dz d r dz Zz dz d ï dzzzzz dz d y dz dz d d zz dz d V dz{z{zzz dz d dz dz dz dz yz y yzz yz yz y yz yzz yz y yz y{�{ y{ y{ y X y s{{  d{{ { d{ d Z d{ d{ d Z d{{0{{ {{{{{{{ d{ d ï d{ d{ d  d{ d{ d{ d d{ d{ d y d{!{'{"{# Z z{$ {% d{& d s d{({,{) ï{* d{+ d ƙ d{- Z{. d{/ d  d{1{D{2{;{3{:{4{7{5 d{6 d i d{8 d{9 d y d i {<{@ Ʒ{={> d{? d d {A{B d{C d  d{E{T{F{M{G{J{H d{I d d{K d{L d Z d{N{Q{O d{P d 7 d{R d{S d  d{U{\{V{Y{W d{X d d{Z d{[ d Z d{]{`{^ d{_ d ï d{a d{b d d{d{{e{{f{u{g{m{h{l{i d{j d{k d y d d Z{n d{o{r{p d{q d d{s d{t d d{v{{w{x Z x{y{|{z d{{ d d{} d{~ d Z d{{{{{ d{ d d{ d{ d  d{{{ d{ d Ʒ d{ d{ d  d{{{{{{{{{ d{ d d{ d{ d Z d {{ d{ d z d{{{{{ d{ d  d{ d{ d ï d{{{ d{ d y d{ d{ d y d{{{{{{{ d{ d ï d{ d{ d i d{{{ d{ d d{ d{ d d{{{{{ d{ d Ʒ d{ d{ d d{ i{ d{ d{ d{ { { { { { { ց{|{{{{{{{{{ d{ d d{ d{ d  d{ d{ d{ d r d{{ d{{ d{ d Z d i{{{{{{{ d{ d d{ d{ d Œ d{{{ d{ d i d{ d{ d Z d{{{{{ d{ d ï d{ d{ d y d{|{ { |� | | |  || | | | | | | | | | |  | d| d  d||0||!||||| d| d d| d| d  d| 7| d| d  d|"|)|#|&|$ d|% d d|' d|( d d|*|-|+ d|, d Z d|. d|/ d à d|1|=|2|9|3|6|4 d|5 d Œ d|7 d|8 d d d|:|; d|< d d|>|B|? |@ d|A d Z d|C|F|D d|E d  d|G d|H d d|J}|K||L|||M|i|N|Z|O|V|P|S|Q d|R d  d|T d|U d Ʒ d|W d|X d|Y d d|[|b|\|_|] d|^ d s d|` d|a d r d|c|f|d d|e d Ʒ d|g d|h d ï d|j|v|k|r|l|o|m d|n d Z d|p d|q d Ʒ d |s|t d|u d d|w|{ d|x|y d|z d d y |}||~|||||| d| d d| d| d d||| d| d Œ d| d| d d||| d| d| d Œ d| s| d| d ï d||||||| d| d r d| d| d ҉ d || d| d d||| | d| d d||| d| d ï d| d| d Œ d||||||||| d| d| d  d| ï| d| d ï d||| | d| d  d||| d| d i d| d| d Œ d||||||| d| d  d| d| d ï d| d| d| d 4 d||||| d| d ï d| d| d ï d d|| d| d W d||||| d Œ r||| Ʒ| d| d ï d| d| d| d r d||||||| d| d d| d| d i d| d| d| d d||| y| d| d ï d d}�} d} d d}}}2}}}}}}} } } d} d d} d} d V d} d} d} d  d}}} d} d} d ï d }} d} d Z d}}#}} y ï ï} }! d}" d d}$}+}%}(}& d}' d x d}) d}* d ï d},}/}- d}. d  d}0 d}1 d d}3}O}4}C}5}<}6}9}7 d}8 d Ʒ d}: d}; d ï d}=}@}> d}? d d}A d}B d ï d}D}H }E}F d}G d ï d}I}L}J d}K d ƨ d}M d}N d Z d}P}\}Q}X}R}U}S d}T d ƨ d}V d}W d k d}Y d}Z d}[ d V d}]}d}^}a}_ d}` d ï d}b d}c d Ʒ d}e }f }g }h }i}j}k }l~}m~}n~}o~}p~e}q}}r}}s}}t}x}u  }v}w  }y}~}z}|}{  }}   t} }  }} } }}  }}} }  }  }  ,}}}}} } }  % } }}}  }}}} }}} S }} }  } }}}  S } }} } } } } } } } } } } } }}} }  % } }   %}}}}}}}}}  }  } }  }} }   }}}}}}}    }} } }   }}}}}}  t t }}    } }  }}}}}}}}}   } }}}    }}}}}}    }}  }}} # } t}~}~�}}}} t }  ~~~~ ~~ S  ~~^~ ~\~ ~ ~ ~ %~ %~ %~ %~ %~ %~ % %~ %~~ %~ %~ %~ %~ % %~ %~~ %~ %~ %~ %~! %~" %~# %~$ %~% %~& %~' %~( %~) %~* %~+ %~, %~- %~. %~/ %~0 %~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9 %~: %~; %~< %~= %~> %~? %~@ %~A %~B %~C %~D %~E %~F %~G %~H %~I %~J %~K %~L %~M %~N % %~O~P % %~Q~R %~S % %~T %~U~V %~W %~X % %~Y %~Z~[ % % ߐ ~] ~_~b~`~a   ~c~d  #  ~f ~g ~h~~i~w~j~p~k~m ~l  ~n~o  t~q~t~r~s  ~u~v  ~x~{ ~y ~z , ~|~~}~~  ~~~~~~~~    ~  ~~~  ~~  ~~~~ ~  ~~ ~~ ~  ~  t Q~~~ ~ ~ ~ ~ ~ ~  ~ ~ ~ ~ ~ ~ ~  ~~ ~~ ~ ~ ~ ~ ~ ~  ~~~ ~ ~ ~ ~ ~ ~  ~ ~ ~ ~ ~ ~ ~   ~~~~~ ~ ~ ~ ~ ~ ~ ~  S ~ ~ ~ ~ ~ ~ ~ ~  ,  ~~ ~ ~ ~ ~ ~ ~ ~  ~ ~~ ~~~~ ~ ~ ~ ~ ~ ~  ~ ~ ~ ~ ~ ~ ~  ~ ~~ ~ ~ ~ ~ �                                 !\"G#5$ %-& ' ( ) * + ,  ( . / 0 1 2 3 4  6 7?8 9 : ; < = >  @ A B C D E F  HR I JK L M N O P Q   S TU V W X Y Z [  ]^y_p`ha b c d e f g  % i j k l m n o   qr s t u v w x  z {| } ~                        S           t                   KH                   %                                                    �       t C                      0  (! " # $ % & '  ) * + , - . /  1:2 3 4 5 6 7 8 9  ; < = > ? @ A B  DEhFWGOH I J K L M N  P Q R S T U V  X`Y Z [ \ ] ^ _  a b c d e f g  izjrk l m n o p q  ; s t u v w x y   {| } ~                                  %            “                      S                                                  #    �       #                       `I4 *! " # $ % & ' ( )  e + , - . / 0 1 2 3  5?6 7 8 9 : ; < = >  @ A B C D E F G H  JUK  LM N O P Q R S T  # V W X Y Z [ \ ] ^ _  abcvdme f g h i j k l  % n o p q r s t u   wx y z { | } ~                                             d d ű d d d ï d d d d  d d d d ƙ d d d r d d d  d d d d d d ï d d d d d d d d d d d  d d d Z dlaZ d d Ʒ d d d d 7 7 7 7 7 7I 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7� 7 7 7 7 7 7 7 7 7 7  7 7 7  7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7! 7 7" 7#$ 7% 7 7& 7'( 7 7) 7*+ 7 7,- 7 7./ 70 7 71 72 73 74 756 77 7 789 7 7: 7; 7< 7=> 7 7? 7@ 7A 7BC 7 7DE 7 7FG 7H 7 7 5J 7K 7 7L 7MN 7 7OP 7Q 7 7R 7S 7T 7U 7VW 7X 7Y 7  7[^\ d] d 7 d_ d` d ï dbh dcdf e  g   i yj dk d dm|nuorp dq d ds dt d  dvyw dx d Z dz d{ d y d}~ d d k d d d s d d d d d d  du  d d d   R            R           R         2 d d d d d d d d  d d d y d ï d d y d d d d d d Z d d  d d d  d d d d d d d d d s d  d d y d d d d r d d   d� d Z d d d d d d  d d d ï d  d  d d d d d Œ d d d ï dS:+' d d d d d d!" d#%$ d d& d d( ) d* d ï d,3-0. d/ d d1 d2 d Ʒ d475 d6 d r d8 d9 d  d;J<C=@> d? d dA dB d  dDGE dF d G dH dI d dKOL M dN d ` d PQ dR d Ʒ dT~UdV]WZX dY d d[ d\ d d^a_ d` d db dc d dewfig dh d s dj k l m n o p qt rs  ן u v  x{y dz d  d| d} d < d d d r d d d d  d d d > d d s d d d d d+ d d ƙ d d d 7 d d d d d d ï d d d y d d d d i d d  d d d Ʒ d d d Œ d d d d d d d d d Q d d d d d Q d d d Q d Q d d d Q d d d Q d d d i d d d k d d d d d d z d d d  d  d d  d d d Ʒ d d d d d d G d� d d r d d d  d  d d d d d Z d  d d y d d d d d d d d d Œ d$! d d s d" d# d  d%(& d' d  d) d* d 7 d,X-L.=/6031 d2 d d4 d5 d d7:8 d9 d d; d< d ï d>E?B@ dA d dC dD d ï dFIG dH d  dJ dK d dMSNO d yP `Q dR d  dT dU dV dW d dYoZf[b\_] d^ d d` da d r d cd de d i dgk dhi dj d dl dm dn d dp dq dr ds dt d dvwxy|z d{ d y d}~ d d d d 7 d d d d d d d d d d s d d d                  d d d d d d d d d s d d d d d 7 d d d d d Z d d d d d d d d d d Ʒ d d d d d d š d d d d d d d d d d Ʒ d d d d d d ƙ d d d d d d d Z d d d d d d d s d d d dQWG d r d� d d d d Œ d d d y d  d d d d  d d d d d à d d  d d d d d r d3(# d d! d" d s d$ d% d& d' d ï d).* d+ d, d- d d/ d0 d1 d2 d Ʒ d4<5:6 d7 d8 d9 d  d; d ï d=B> d? d@ dA d dC dD dE dF d à dHoI]JUKPL dM dN dO d Z dQ dR dS dT d Z dV[W dX dY dZ d  d\ d y d^d d_` da db dc d Z dejf dg dh di d dk dl dm dn d ï dpq|rws dt du dv d ƨ dx dy dz d{ d x d}~ d d d d d d d d d Ʒ d d d d d d ï d d d d d d d d d d d d d d d d 6b d d d d d  d d d d d d d d d d d d d d d s d d d d d s d d d d d d d ս d d ` d d d d d d d d d d d d d d d ï d d d d d d d d d d d  d d d d d  d d d d d  d d d d d  d d d� d d d d d d d d s d   d  d s d d d d d s d d d d d ï dOJ d d d d d ;! L" L# L$0% L& L' L( L) L* L+ L, L- L./ L R= Q L1 L L2 L3 L45 L L67 L L8 L9: L L R= L<= L L> L? L@ LAB L LCD L LEF L LG LHI L L R=K dL dM dN d ï dPUQ dR dS dT d ї dV d 7 dXYZ[o\d]_^ d ƙ d` da db dc d dejf dg dh di d . dk dl dm dn d s dp{qvr ds dt du d dw dx dy dz d  d|} d~ d d d d d d d d d d d z d d d d d d d d d d d  d d d d d Ʒ d d d d d s d d d d d d d d d d 7 d d d d d d d Ʒ d d d d d  d d d d d d d d d d d d d d d d ( d d d d s d d d Œ d d d d d d d d d d  d d d d d d d d d d x d d d d d i d d d d d  dL � d d d d d d d d d d  d d d d d Ʒ d d d d d d d d d d s d5* %! d" d# d$ d d& d' d( d) d s d+0, d- d. d/ d d1 d2 d3 d4 d ű d6A7<8 d9 d: d; d s d= d> d? d@ d i dBGC dD dE dF d x dH dI dJ dK d i dMrN`OU dPQ dR dS dT d s dV[W dX dY dZ d  d\ d] d^ d_ d ` dalbgc dd de df d Z dh di dj dk d d dmn do dp dq d s dstuzv dw dx dy d d{ d| d} d~ d d d d d d ï d d d d d d d  d d d d d ` d d d d d z d d d d d  dM d d d d Z d d d d d d d d d d d  d d d d d à d d d d d Ʒ d d d d d d  d d d d d d d d d d Œ d d d d d d d d d d  d d d d d ï d d d d d s d d d d d ï d d d d d š d#  d d d d ï d� d d d d x d  d d d d d d d  d d d d d d d d d s d d d d d r d d d! d" d d$6%+& d' d( d) d* d d,1- d. d/ d0 d Œ d2 d3 d4 d5 d Z d7B8=9 d: d; d< d ` d> d? d@ dA d Z dCHD dE dF dG d r dI dJ dK dL d s dNOsPbQ\RWS dT dU dV d dX dY dZ d[ d r d] d^ d_ d` da d z dcndie df dg dh d r dj dk dl dm d s doqp d dr d Ʒ dtu}vxw d ï dy dz d{ d| d Z d~ d d d d d d d d d y d d d d d d ҉ d d d d d d d d d d Ʒ d d d d d ï d d d d d s d d s d d d d d Ʒ d d d d d d d d d d Z d d d d d d d d d d d d d d d d  d d d d d d š š š š š š š š š š š R R š š R H š š ʗ 5 X Ĺ 5   < c > š š (   š š š� š R š š š 5R  d š d  d d d d d d d d d Z d d d d d ƨ d d dgC6 +!&" d# d$ d% d ï d' d( d) d* d Z d,1- d. d/ d0 d ï d2 d3 d4 d5 d d7=8 d9 d: d; d< d s d> d? d@ dA dB d Ʒ dDSEMFHG d  dI dJ dK dL d ƨ dN dO dP dQ dR d 7 dT_UZV dW dX dY d d[ d\ d] d^ d d`ea db dc dd d ï df d ƙ dhi{jp dkl dm dn do d dqvr ds dt du d Z dw dx dy dz d ï d|}~ d d d d d d  d d d d d d Ʒ d d d d d d d d d d d d d 7 d d d d d ˘ d d d d d d d d d d d d d d Ʒ d d i d d d d d ï d d d d d  d d d d d s d d d d d s d d d d d Z d d d d d d d d d r d d d d d Ʒ d d d d d d ï d d d d d d d y d d d d d d d d d d d�% d d d d d d d d d d d d d d d d r d d d d d d  d d d d  d! d" d# d$ d ű d&='2(-) d* d+ d, d d. d/ d0 d1 d ƨ d384 d5 d6 d7 d V d9 d: d; d< d d>F?A@ d ï dB dC dD dE d Z dGLH dI dJ dK d dM dN dO dP d ï dRSTUVWkX`Y^Z d[ d\ d] d s d_ d dafb dc dd de d ` dg dh di dj d y dlwmrn do dp dq d G ds dt du dv d dx}y dz d{ d| d d~ d d d d Z d d d d d Z d d d d d s d d d d d d ï d d d d d d d d d d d d d d d s d d d d d d d d  d d d d d Ʒ d d d d d  d d d d d  d d d d d i d d d d d d d d d d d ˘ d d d d d V d d d d d d y d d d d d ˘ d d d d d ˘ d d d d d ï d d d d d s dQ% d� d d d Ʒ d d d d d y d  d d d d ` d d d d d  d d d d d d Z d  d d d d d! d" d# d$ d ï d&:'/(*) d  d+ d, d- d. d d051 d2 d3 d4 d d6 d7 d8 d9 d Z d;F<A= d> d? d@ d K dB dC dD dE d ï dGLH dI dJ dK d  dM dN dO dP d Z dR{SdTYUWV d y dX d ï dZ_[ d\ d] d^ d Ʒ d` da db dc d ï depfkg dh di dj d à dl dm dn do d r dqvr ds dt du d dw dx dy dz d Ʒ d|}~ d d d d ƨ d d ˘ d d d d d  d d d d d i d d d d d d Z d d d d d ս d d d d d 7 dr d d d d x d d d d d ƙ d d d d d Z d d d d d ï d d d d d d d d d d > d d d d d Z d d d d d Z d  d d d d d d Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ 4l Œ Œ W Œ Œ W Œ Œ  Œ Œ  Œ Œ Œ W Œ Œ Œ Œ Œ 4l Œ� d d d d i d d d d d d   d d d d Œ d d d d d d d d d d d ï dL5* %! d" d# d$ d d& d' d( d) d d+0, d- d. d/ d s d1 d2 d3 d4 d  d6A7<8 d9 d: d; d x d= d> d? d@ d dBGC dD dE dF d dH dI dJ dK d Ʒ dM`NYOTP dQ dR dS d dU dV dW dX d r dZ_[ d\ d] d^ d d dagb dc dd de df d ` dhmi dj dk dl d ï dn do dp dq d dstuvw|x dy dz d{ d d} d~ d d d r d d d d d Z d d d d d  d d d d d ï d d ˘ d d d d d ï d d d d d s d d d d d ï d d d d d d d d d d d d d d d ҉ d d d d d ï d d d d Ʒ d d d d d dh d d d d d d d d d d d d d d d ï de d d d d d d   ' s < א    H           �           <    X X X X X X X X X X X X X X X X X! X" X# X$ X% X& X X(/),*+ L . 6-. 6 0c1J 23 '4 '5 '6 '7 '8 '9 ': '; '< '= '> '? '@ 'A 'B 'C 'D 'E 'F 'G 'H 'I ' 'K VL #�M #�N #�O #�P #�Q #�R #�S #�T #�U #�V #�W #�X #�Y #�Z #�[ #�\ #�] #�^ #�_ #�` #�a #�b #� s #�d H f dg d ` di}jukpl dm dn do d  dq dr ds dt d dv{w dx dy dz d G d| d i d~ d d d d d d d d d d d d d d d d d( d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d r d d d d d 7 d d d d d Z d d d d d d d d d d d d d d d d d d d d d d d d d d d ï d d d d d  d d d d d d Ʒ d d d d d d d š d d d d d� d Z d d d d d d s d  d d d d Œ d d d d d s d d d d d d d y d# d d! d" d d$ d% d& d' d Z d)y*T+B,7-2. d/ d0 d1 d Z d3 d4 d5 d6 d  d8=9 d: d; d< d d> d? d@ dA d ] dCNDIE dF dG dH d dJ dK dL dM d d dOP dQ dR dS d š dUgV\ dWX dY dZ d[ d d]b^ d_ d` da d  dc dd de df d i dhsinj dk dl dm d do dp dq dr d dt du dv dw dx d Z dz{|}~ d d d d d d d d d d d d d d  d d d d d ƨ d d d d d Z d d d d d . d d d d d ï d d d d d d d d d d d d Œ d d d d d  d d d d d ï d d d d d d ï d d d d d d d d d d d# d d d d ï d d d d d  d d  d d 7 d d d d d ï d d r d d d d d d d d d d d d d d� d x d d d d d Z d  d d d d d d d d d ï d d d d d d > d d d d d ƨ d d d! d" d Z d$[%9&.')( d r d* d+ d, d- d d/40 d1 d2 d3 d ï d5 d6 d7 d8 d  d:U;@< d= d> d? d Œ dA dB dC dD dE dF G H IJ K LM N O P Q RS T * dVW dX dY dZ d Z d\k]e^`_ d da db dc dd d Z df dg dh di dj d dlwmrn do dp dq d  ds dt du dv d s dx}y dz d{ d| d ï d~ d d d d s d d d d d i d d d d d  d d d d d d d d d d d d d d d d V d d d d d L d d d d d d d d d d r d d d d d Œ d d d d d d s d d d d d ƨ d d d d d d d d d d  d d d d d d d d Œ d d d d d d  d d d d d ï d d d d d Œ d d d d d ï d d d d d d d� d d d d d d d d i d  d d d d d d d d d Q d d  d d d d d Z d d d d d! d ï d#_$%&'()\*Q+4,1-0. d/ d d d2 d3 d d586 d7 d ï d9<: d; d r d= d> d? d@ AB C D EF G H IJ K L M N OP RUS dT d dVYW dX d  dZ d[ d x d] d^ d_ d` abc d e f g hi j kl m n o p q r s t u v w xy z { | } ~                                                     ł                ʵ  d d d d d r d d d d d d Z d d d d d d d d d d d d d d d d 4 d\  d d 7 d� d d  d d d Ʒ d d d  d   d d d d d  d d d ˘ d d d  d d d G d=. '!$" d# d d% d& d  d(+) d* d ƨ d, d- d d/6031 d2 d  d4 d5 d d7:8 d9 d d; d< d d>M?F@CA dB d dD dE d ƙ dGJH dI d y dK dL d ï dNUORP dQ d 7 dS dT d dVYW dX d  dZ d[ d d] d^ d s d`akbcdeqfjg dh di d G dknl dm d  do dp d ï drysvt du d dw dx d dz}{ d| d  d~ d d d d d d d d š d d d r d d d d d d s d d d y d d  d Ʒ d d d ` d d d W d d d W d d d Z d d d ï d d d  d d d z d d d s d d d d d d d r d d d G d d d s d d d d d d d d d d d d s d d d d d d d d d s d( d d Z d d d d d d d  d d d i d d d ƨ d� d d ï d d d d   d d d d d ï d d d Œ d d d  d d d ƨ d d d d" d! d ҉ d d#$'% d& d r d d)H*9+2,/- d. d  d0 d1 d y d364 d5 d ï d7 d8 d ] d:A;>< d= d y d? d@ d ï dBEC dD d ` dF dG d s dI\JQKNL dM d z dO dP d dRUS dT d dVYW dX d  dZ d[ d d]d^a_ d` d Œ db dc d i dehf dg d à di dj d Z dlmno~pwqtr ds d  du dv d Œ dx{y dz d W d| d} d ï d d d Ʒ d d d y d d d d d d s d d d d d d d d d d d d d ' d d d ' d d d d 4 d d d r d d d ` d d d  d d d Z d d d ` d d d d d d G d d d Œ d d d d d d d d d d d d  d d d d d d Z d d d d d d d d d Z d d d d d d d d x d d d d d d  d d d ` d� d d Z dJ+   d d d d d ï d d d d d  d d d d d r d d d y d$! d d Œ d" d# d Z d%(& d' d ƨ d) d* d ƨ d,;-4.1/ d0 d d2 d3 d d586 d7 d d9 d: d ï d<C=@> d? d dA dB d ƙ dDGE dF d ï dH dI d ï dKjL[MTNQO dP d ï dR dS d ƨ dUXV dW d ï dY dZ d  d\c]`^ d_ d :y da db d ddge df d Œ dh di d ï dkzlsmpn do d ï dq dr d à dtwu dv d ï dx dy d  d{|} d~ d ` d d d ƨ d d d d d d ` d� d d Z d d d  d d d d  d d d d d d Ʒ d d d Œ d d d  d d d d d d V d d d d d d d s d d d d y d d d d s d d d Œ d d d d d d š d d d d d d Z d d d :y d d d y d d d ï d d d d d d ï d d d Z d d d d d d d d d d d ƨ d d d Ʒ d:  d d d d d ï d  d d ï d d d d d d d s d d d š d d d Œ d+ $ d!" d# d d%(& d' d Ʒ d) d* d Ʒ d,3-0. d/ d ï d1 d2 d d475 d6 d ï d8 d9 d Z d;<H=D>A? d@ d Z dB dC d ï dE dF dG d š dIJK dL dM dNaO` yPQ y yRS yT yU yV yW y yXY yZ y y[\ y] y^ y_ y p y y b yc yd yexfog yh yi yj y ykl ym yn y X y ypq y yrs yt yu yv yw y yy yz y{ y y|} y~ y y y p y y y y y 6 y d d ƨ d d d d d d ҉ d d d  d d d d d d d                                      ,  d d Œ d d d ï d d d ï d d d d d d  d d d ï d^� d d r d d d W d d d d  d d d d d d d d d d d d Z d d d  d  d d d d d ƨ d   d d Z d d d Z d d d y d d d d d d d d d Ʒ d B!-"& d#$ d% d d'*( d) d y d+ d, d d.8/20 d1 d ï d354 d d6 d7 d ï d9?: d; d< d= d> d ï d@ dA d  dCRDKEHF dG d  dI dJ d  dLOM dN d ï dP dQ d ï dSZTWU dV d  dX dY d Ʒ d[ d\ d] d Œ d_`apbicfd de d ï dg dh d Z djmk dl d dn do d Ʒ dqxrus dt d ` dv dw d G dyz d{ d| d} d~ d  d d d d d d ҉ d d d ƨ d d d d d z d d d d d d d d d d r d d  d d d d d d d d d s d d d Ʒ d d d Œ d d d i d d d y d d d d d d d d d s d d d i d d d d d d  d d d d d d š d d d d d d d s d d d d d d  d`x3C d d d d k d d d d d d� d d d d d d  d d d d d d d d d d d i d d d d d ˘ d,! d d d d d  d"'# d$ d% d& d  d( d) d* d+ d d-8.3/ d0 d1 d2 d  d4 d5 d6 d7 d Z d9>: d; d< d= d d? d@ dA dB d Ʒ dDhETFQGLH dI dJ dK d ï dM dN dO dP d ï dR dS d Z dU`V[W dX dY dZ d d\ d] d^ d_ d  dafb dc dd de d x dg d r di}jrkml d i dn do dp dq d à dsxt du dv dw d ï dy dz d{ d| d Z d~ d d d d  d d d d d š d d d d d ƨ d d d d d d d ƨ d d d d d  d d d d d d d d d d š d d d d d d d d d d y d d d d d d d d d d d d d d d ï d d y d d d d d d d d  d d d d d d d d d d d Z d  d d d d ï d d d d d d d d d d d s d d d d d d d d d� d d d d d d ï d d d d d ˘ d ! d d d d ï d d d d d ï d d d d d Z d d Z d"(# d$ d% d& d' d Œ d).* d+ d, d- d V d/ d0 d1 d2 d  d456]7K8@9;: d Z d< d= d> d? d s dAFB dC dD dE d r dG dH dI dJ d dLWMRN dO dP dQ d dS dT dU dV d Œ d dXY dZ d[ d\ d  d^u_j`ea db dc dd d Œ df dg dh di d dkpl dm dn do d dq dr ds dt d s dv|w dx dy dz d{ d à d} d~ d d d d s d d d d d  d d d d d s d d d d d Ʒ d d d d d s d d d d d $e d d d d d ï d d d d d d d ï d d d d d d Z d d d d d d d d d d d d d d Z d d d d d ƨ d d d d d r d d d d d d V d d d d d d d d d d r d d d d d d ï d d d d d i d d d d d ` d� d d d d s d d d d d Ʒ d d d d d d k d d d d d d  d=+  d d d d r d d d d d ï d!&" d# d$ d% d z d' d( d) d* d ï d,2 d-. d/ d0 d1 d d384 d5 d6 d7 d ï d9 d: d; d< d d>M?B@ dA d dCHD dE dF dG d  dI dJ dK dL d y dNO dP dQ dRS T U V WX YZ[\ ]^l_d` a b c Y ef gjhi VV  YB k ` m|nxouprq } st X ` �v w X 4?y z { X }~  Xr    Y       S     X   Y    ( ) )      Y3              X       7       Y �          Y  }  d d d d d d d d d x d2 d d d d d d d d d d Z d d d d d s d d� d d  d d d d d à d     d d d d i d d d d d d d d d d s d d d d d r d!'" d# d$ d% d& d r d(-) d* d+ d, d r d. d/ d0 d1 d ҉ d3]4K5@6;7 d8 d9 d: d d< d= d> d? d Œ dAFB dC dD dE d  dG dH dI dJ d ï dLWMRN dO dP dQ d Ʒ dS dT dU dV d Œ dX dY dZ d[ d\ d y d^u_j`ea db dc dd d L df dg dh di d ƨ dkpl dm dn do d  dq dr ds dt d  dv|w dx dy dz d{ d Ʒ d}~ d d d d ï d d d d d  d d d d d y d d d d d d d d d d d d d d d  d d d d d d d d d d Z d d d d d ï d d d d d d d d d d d i d d d d d d d d d d d d 7 d d d d d d d d d d 7 d d d d d d r d d d d d d d d d d d s d d d d d Z d d d d d d d d s d d� d d d ï d d d d d d   d d d d Z d d d d d d d d d d ï d d d d d  d !n"G#5$/%*& d' d( d) d ï d+ d, d- d. d š d0 d1 d2 d3 d4 d r d6A7<8 d9 d: d; d  d= d> d? d@ d ï d dBC dD dE dF d Z dHZIO dJK dL dM dN d s dPUQ dR dS dT d dV dW dX dY d d[c\^] d 7 d_ d` da db d  ddie df dg dh d i dj dk dl dm d dopq|rws dt du dv d  dx dy dz d{ d 7 d}~ d d d d d d d d d Z d d d d d d d d d d r d d d d d ï d d d d d Z d d d d d ï d d d d d d Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ 4l Œ  W Œ \ { l Œ d d d d d d d d d d d d d d d& d d d d W d d d d d Œ d d d d d d d d d d d  d d d d d y d d d d d d d d d d Œ d � d d d d Z d d d d d d  d d d d d d d d d d d ˘ d d d! d d d d Z d" d# d$ d% d ï d'N(=)2*-+ d, d d. d/ d0 d1 d r d384 d5 d6 d7 d Œ d9 d: d; d< d Z d>C?A@ d dB d dDIE dF dG dH d x dJ dK dL dM d ï dOfP[QVR dS dT dU d Ʒ dW dX dY dZ d d\a] d^ d_ d` d db dc dd de d dgmh di dj dk dl d r dnso dp dq dr d š dt du dv dw d Z dyyz{#|}~ d d d d d d d d d  d d d  d d d d d  d d d d d d d d d d d y d d ƨ d d d d d  d d d d d ï d d d d d d d d d d i d d d d d d d d d d ï d d d d d d d d d d 7 d d d d d i d d d d d d d d       X  d d d d  d d d d d d d d d d Ʒ d d  d � d d d d d r d d d d d d s d  d d d d d d d d d d d d d d V d d d! d" d ƨ d${%Q&:'/(*) d d+ d, d- d. d  d051 d2 d3 d4 d Z d6 d7 d8 d9 d d;F<A= d> d? d@ d ï dB dC dD dE d dGLH dI dJ dK d Ʒ dM dN dO dP d  dRdS^TYU dV dW dX d dZ d[ d\ d] d Œ d_ d` da db dc d depfkg dh di dj d dl dm dn do d y dqvr ds dt du d Z dw dx dy dz d d|}~ d d d d  d d d d d ƨ d d d d d d Z d d d d d Z d d d d d d d d d d ï d d d d d ï d d d d d s d d d d d d d d d d i d d d d d ˘ d d d d d d Œ d d d d d  d{T d d d d d d  d d d d d d š dID d d    K K K K K K K K K K K K K K K K K K K K K K K K K K K� K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K! K" K# K$ K K% K& K' K( K)* K K+, K K- K./ K0 K K1 K2 K34 K K56 K K7 K89 K: K; K< K= K> K? K@ K KA KBC K KE dF dG dH d  dJOK dL dM dN d ƨ dP dQ dR dS d Œ dUdVYW dX d dZ_[ d\ d] d^ d V d` da db dc d  depfkg dh di dj d ï dl dm dn do d ï dqvr ds dt du d > dw dx dy dz d ï d|}~ d d d d d d d  d d d d d r d d d r d d d d d d d d d d 7 d d d d d s d d d d d d d d d d ï d d d d d ï d d r d d d d d  d d d d d d Z d" d d d d ï d d d d d d d d d d Z d d d d d  d d d d d d d d d d  d d d d d d d d d d d � d d d d d d d d d d d d d d ï d d d d d Z d   d d d d d d d d d  d d d d d ` d d d d! d :y d#J$;%0&+' d( d) d* d d, d- d. d/ d d162 d3 d4 d5 d d7 d8 d9 d: d  d<?= d> d s d@EA dB dC dD d Z dF dG dH dI d Z dKbLWMRN dO dP dQ d  dS dT dU dV d ` dX]Y dZ d[ d\ d d^ d_ d` da d G dcndie df dg dh d Œ dj dk dl dm d  dotp dq dr ds d Z du dv dw dx d ï dz{ |}~ d d d d d d d d d d i d d  d d d d d i d d d d d d d d d d d d d d d  d d d d d ï d d d d d d d d d d ƨ d d d d d d d d d d d d d d d d d d d d d š d d d d d ï d d d d d d d d d d d y d d d d d Z d d d d d d d d d d d ƙ d  d d d d  d d d d� d d d d d d Ʒ d d d d d Z d  d d d d G d d d d d ï d d d d d d d :y d!u"Q#:$/%*& d' d( d) d  d+ d, d- d. d ܹ d051 d2 d3 d4 d d6 d7 d8 d9 d r d;F<A= d> d? d@ d ï dB dC dD dE d dGLH dI dJ dK d dM dN dO dP d ï dRaS^TYU dV dW dX d dZ d[ d\ d] d ƨ d_ d` d Z dbjchd de df dg d  di d s dkpl dm dn do d dq dr ds dt d ƨ dvwxy~z d{ d| d} d 7 d d d d d  d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d ï d d d d d à d d d d d d d d d d r d d d d d  d d d d d s d d d d d Z d d d d d dn d d d d Ʒ d d d d d d d d r d d d d d d  d d d d d d d d d d  d  d d d d d d� d d d ï d d d d d d d d   d d d d d d d d d d d Z d d d d d V d D!0"%# d$ d r d&+' d( d) d* d d, d- d. d/ d  d1<273 d4 d5 d6 d ï d8 d9 d: d; d :y d=B> d? d@ dA d r dC d r dE\FQGLH dI dJ dK d  dM dN dO dP d L dRWS dT dU dV d r dX dY dZ d[ d ` d]h^c_ d` da db d i dd de df dg d d dij dk dl dm d dopqr}sxt du dv dw d  dy dz d{ d| d Z d~ d d d d d d d d d d d d d d d d d d d ï d d d d d d d d d d d ï d d d d d d d s d d d d d G d d d d d ï d d d d d s d d d d d d d d ï d d d d d Z d d d d d d d d d d d d d d d d d d d d ű d d d d d ƨ d d d d d  d d d d d  d d d d d k d d d� d d ï d d d d d i d  d d d d d d d d d  dggPE@ d d   ! " # $ % & ' ( ) * +, - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 6 A dB dC dD d dFKG dH dI dJ d ï dL dM dN dO d  dQ\RWS dT dU dV d dX dY dZ d[ d ï d]b^ d_ d` da d Œ dc dd de df d dhrilj dk d  d dmn do dp dq d ds~tyu dv dw dx d š dz d{ d| d} d š d d d d d š d d d d d  d d d d d d d d d d d d d r d d d d d d V d d d d d Z d d d d d > d d d d d d d d d d d d d > d d d d d  d d d d d r d d d d d y d d d d d ܹ d# d s d d d d d Z d d Œ d d d d d d d d d d d d d d d d d G d  d d d d d d d d� d  d d d d d s d d d d d s d  d d d d s d d d d d ï d d d d d d d d! d" d  d$H%9&.')( d Z d* d+ d, d- d Ʒ d/40 d1 d2 d3 d d5 d6 d7 d8 d ` d:B;=< d ` d> d? d@ dA d x dC dD dE dF dG d i dI`JUKPL dM dN dO d ï dQ dR dS dT d  dV[W dX dY dZ d  d\ d] d^ d_ d r dad dbc d ˘ de df d ű dhHijkzlwmrn do dp dq d  ds dt du dv d  dx dy d :y d{|} d~ d d d ï d d d d d Z d d d d d ƨ d d d d d d d d d d ï d d d d d d d d d d i d d d d d d d Z d d d d d Z d d d d d ` d d d d d  d' d d d d d d d d d d d d d d s d d d d d ҉ d! d d                               $ %�  ,    o Q $ % ,     o Q                 d d d d  d d"# d$ d% d& d  d(4)1*/+ d, d- d. d Ʒ d0 d d2 d3 d ű d5@6;7 d8 d9 d: d :y d< d= d> d? d x dAFB dC dD dE d Œ dG d i dIJqKZLOM dN d Z dPUQ dR dS dT d dV dW dX dY d d[f\a] d^ d_ d` d ܹ db dc dd de d G dglh di dj dk d dm dn do dp d Z drs{tyu dv dw dx d ï dz d d|~} d d d d d d š d d d d d d d d d d ï d d d d d d d d d d d d d d d d  d d d d d d d r d d d d d  d d d d d d d d d d ï d d d d d s d d d d d  d d Œ d d d d d d d d d d  d d d d d d  d d d d d ï d d d d d d d d d d d d d d d d� d d d d ï d d d d d ï d  d d d d d d d d d d d d d d d d,! d  d d d d d  d"'# d$ d% d& d d( d) d* d+ d ƨ d-./ d0 d1 d2 d3 d4 ƙ5 ƙ6 ƙ7 ƙ8 ƙ9 ƙ: ƙ; ƙ< ƙ= ƙ> ƙ? ƙ@ ƙ ƙAB ƙ ƙCD ƙE ƙF ƙG ƙH ƙI ƙJ ƙK ƙL ƙM ƙN ƙO ƙP ƙ ƙQ ƙR ƙST ƙU ƙV ƙW ƙX ƙY ƙZ ƙ[ ƙ\ ƙ] ƙ^ ƙ_ ƙ` ƙa ƙb ƙc ƙd ƙe ƙf ƙg ƙh ƙi ƙj ƙk ƙl ƙm ƙn ƙo ƙp ƙq ƙr ƙs ƙt ƙu ƙv ƙw ƙx ƙy ƙz ƙ{ ƙ| ƙ} ƙ~ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ ƙ 8 ƙ d d d d ï d d d d d d d d d d ï d d d d d ï d d d d d z d d d d d ï d d d d d ܹ d d d d d d d d d d d d d d d ï d d s d d d s d d d d d d d ܹ d d d d d  d d d d d  d d d d d i d d d d d  d? d d d d 7 d d d d d d� d i d d d d d d  d d d d ܹ d d d d d ` d d d d d d d d d d d5 *!%" d# d$ d  d& d' d( d) d  d+0, d- d. d/ d d1 d2 d3 d4 d d697 d8 d y d d:; d< d= d> d ` d@eASBHC dD dE dF dG d ï dINJ dK dL dM d  dO dP dQ dR d ï dT_UZV dW dX dY d d[ d\ d] d^ d r d` da db dc dd d Z dfxgrhmi dj dk dl d  dn do dp dq d d dst du dv dw d Z dy dz{ d| d} d~ d ï d d ` d d d d d d6 d d d d ï d d d d d > d d d d d Z d d d d d Ʒ d d d d d > d d d d d  d d d d d d ï d d d  d d d d d d d d d d Z d d d d d d Z d d d d d  d d d d d  d  d d d ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ּ d d d d Z d d d d d ï d d d d d� d ï d d d d d  d d d d d G d $ d d d d d d d d d Z d d d d d d d! d" d# d  d%0&+' d( d) d* d ï d, d- d. d/ d  d1 d2 d3 d4 d5 d d78g9P:E;@< d= d> d? d s dA dB dC dD d dFKG dH dI dJ d dL dM dN dO d dQ\RWS dT dU dV d ï dX dY dZ d[ d ï d]b^ d_ d` da d ` dc dd de df d x dhtilj dk d ƨ dmrn do dp dq d Z ds d š duv{w dx dy dz d  d| d} d~ d d z d d  d d d d d  d d d d d Œ d d d d d  d d d d d r d d d d d d d d d d d ƙ d d d d d Ʒ d d d d d d d d d d d d d d d  d d d d d d d d d d G d d d d d d ï d d d d d d d dW"5 d d  d d d d d d d d d d d d d ï d  d d         �           d d d d ï d d d d d V d d d d d  d d d ï d* %! d" d# d$ d i d& d' d( d) d r d+0, d- d. d/ d d1 d2 d3 d4 d d6b7N8C9>: d; d< d= d ï d? d@ dA dB d V dDIE dF dG dH d y dJ dK dL dM d Z dOWPRQ d dS dT dU dV d  dX]Y dZ d[ d\ d d^ d_ d` da d dcrdlegf d  dh di dj dk d d dmn do dp dq d Z ds{tyu dv dw dx d ˘ dz d Œ d|} d~ d d d d d Ʒ d d d d d d d d d d k d d d d d d d d d d d d d d d d d  d d d d d  d d ï d d d d d d d d d d d Z d d d d d š d d d d d d d d d d  d d d d d d d Ʒ d d d d d s d d d d d  d d d d d ï d d d d d ` d d d d d d d d d d ï d d d d d i d d� d d d d d d d d d d   d d d d y d d d d d d d d d d d d d d! d d#$}%T&='2(-) d* d+ d, d s d. d/ d0 d1 d d384 d5 d6 d7 d Z d9 d: d; d< d 7 d>I?D@ dA dB dC d dE dF dG dH d 7 dJOK dL dM dN d  dP dQ dR dS d Z dUfV^W\X dY dZ d[ d  d] d r d_a` d db dc dd de d i dgrhmi dj dk dl d  dn do dp dq d ï dsxt du dv dw d Z dy dz d{ d| d  d~ d d d d d d d ï d d d d d d d d d d d y d d d d d ű d d d d d ` d d d d d d d d d d d Z d d d d d Ʒ d d d d d d Œ d d d d d r d d d d d Z d d d d d d d d d d ƨ d d d d d d d d d d Z d d d d d d d d d d s d d d d d d d d d d d Z d d d d d d ` d � d d d d 7 d d d d d ` d d d d d d ű d;$ d d d d d d d d d d Z d d! d" d# d d%0&+' d( d) d* d r d, d- d. d/ d ï d162 d3 d4 d5 d G d7 d8 d9 d: d d<M=B>@? d ï dA d Œ dCHD dE dF dG d dI dJ dK dL d 7 dNQO dP d Z d dRS dT dU dV d ƙ dXY Z[\s]h^c_ d` da db d  dd de df dg d ű dinj dk dl dm d do dp dq dr d  dtuzv dw dx dy d Œ d{ d| d} d~ d d d d d d ï d d d d d d d d d d d d d d d d d d d d d d d d d d d z d d d d d  d d d d d r d d d d d  d d ï d d Z d d d d d r d d d d d d d d d d Z d d d d d  d d d d d d d d d d d d d d d Z d d d d d ï d d d d d d d y d d d d d  d d  d� d d d d k d d d d d ï d ^ 7    d i d d d d d ƙ d d d d d s d d d d d r d!,"'# d$ d% d& d d( d) d* d+ d ` d-2. d/ d0 d1 d Z d3 d4 d5 d6 d ` d8L9A:<; d d= d> d? d@ d  dBGC dD dE dF d ï dH dI dJ dK d V dMXNSO dP dQ dR d Ʒ dT dU dV dW d  dY dZ d[ d\ d] d Z d_`walbgc dd de df d dh di dj dk d ï dmrn do dp dq d s ds dt du dv d dxy~z d{ d| d} d d d d d d d d d d d d d d d d r d d d d d d d d d d  d d d d d d ƨ d d Z d d d d d Z d d d d d ҉ d d d d d d                                                                    �                   d:#  d d d d d d! d" d d$/%*& d' d( d) d d+ d, d- d. d d051 d2 d3 d4 d r d6 d7 d8 d9 d Z d;M<B= d> d? d@ dA d  dCHD dE dF dG d Ʒ dI dJ dK dL d dNYOTP dQ dR dS d  dU dV dW dX d ï dZ_[ d\ d] d^ d ï d` da db dc d š defsgmh di dj dk dl d r dn do dp dq dr d dtuzv dw dx dy d d{ d| d} d~ d . d d d d d d d d d d d d d d d ƨ d d d d d d d d d d š d d d d d à d d d d d d d d d d r d d d d d d Ʒ d d d d d d d d d d d d d d d d > d d d d d Œ d d ï d d d d d d d d d d d d d d d d ƨ d d d d d d d d d d ű d d d d d ï d d ï d d d d d ï d� d d d d 7 d4  d d d d d d d d d  d d d d d s d d d d d V d)$ d! d" d# d d% d& d' d( d  d*/+ d, d- d. d Œ d0 d1 d2 d3 d ` d5I6A7<8 d9 d: d; d ï d= d> d? d@ d Œ dBGC dD dE dF d x dH d ï dJUKPL dM dN dO d dQ dR dS dT d Z dV[W dX dY dZ d Z d\ d] d^ d_ d s dabcderfghitjok dl dm dn d y dp dq dr ds d s duzv dw dx dy d d{ d| d} d~ d ï d d d d d ï d d  d d d d d ï d d d d d d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d d d H d d d d d d                                                                 �                      d d d d d d d d d d ƨ dH1 +!&" d# d$ d% d d' d( d) d* d y d d,- d. d/ d0 d d2=384 d5 d6 d7 d ï d9 d: d; d< d š d>C? d@ dA dB d x dD dE dF dG d  dI`JUKPL dM dN dO d  dQ dR dS dT d r dV[W dX dY dZ d x d\ d] d^ d_ d Z dag dbc dd de df d dhmi dj dk dl d x dn do dp dq d à dstuvw|x dy dz d{ d ï d} d~ d d d Z d d d d d ï d d d d d d d :y d d d d d Z d d d d d ï d d d d d k d d d d d  d d d d d Œ d d d d d  d d d d d 7 d d d d d d Œ d d d d d d d d d d d d Œ d d d d d  d d d d d ï d d d d d s d d d d d d d d d d d d d d d d d d d d s d d d d d ï d� d d d d i d  d d d d ï d d d d d  d d d d d  d d d d d V d d d d p!F"4#)$ d% d& d' d( d ƙ d*/+ d, d- d. d d0 d1 d2 d3 d d5;6 d7 d8 d9 d: d Ʒ d<A= d> d? d@ d  dB dC dD dE d dG^HSINJ dK dL dM d dO dP dQ dR d dTYU dV dW dX d  dZ d[ d\ d] d d_j`ea db dc dd d s df dg dh di d ˘ dk dl dm dn do d dqrstu dv dw dx dy dz { | } ~   H  d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d               .  d d d d d d d d d Q d d d d d  d d d d d d ս d d d d d d d d k d d d d d s dI d d d d d d d d d d d d d d ƨ d d d d d G d d d s d d d� d d d d d d d ï d   d d d d d d d d d d d d  dC d d d d Z d d d! d" d# d$ r% r& r' r( r) r* r+ r, r- r. r/ r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r: r; r< r= r> r? r@ rA rB r 8Z r dDE dF dG dH d  dJiK]LWMRN dO dP dQ d dS dT dU dV d  d dXY dZ d[ d\ d i d^ d_d` da db dc d de df dg dh d Ʒ djtknl dm d  d dop dq dr ds d x du}vxw d ƙ dy dz d{ d| d d d~ d d d d dSD d d d d ï d d d d d Œ d d d d d d d d d d Z d d d d d ` d d d d d Œ d d d d d d     ֞  ֮    ֞ 9 = 9 9 lj ֞ 3 9 ֞ 9E Ǘ ֞ : 9 9 9 95 3 ֞ 9  9 ֞ 9U :" ֞ ֮  9 9d ֮  ֞ 3 ֞ 3 3 ֞ :> ֞   9U k ֞ :> 9� - :> 9E l ֮  ;               ֮ ֞  d d d d ҉ d-" d d d d! d ƨ d#($ d% d& d' d Ʒ d) d* d+ d, d d.9/40 d1 d2 d3 d Z d5 d6 d7 d8 d  d:?; d< d= d> d s d@ dA dB dC d dEoF]GRHMI dJ dK dL d r dN dO dP dQ d  dSXT dU dV dW d dY dZ d[ d\ d Z d^d_ d` da db dc d dejf dg dh di d Z dk dl dm dn d  dpq|rws dt du dv d Ʒ dx dy dz d{ d d}~ d d d d d d d d d V d d ` d d d d d d d d d d ï d d d d d d d d d d ï d d d d d  d d d d d ƨ d d d d d ï d d d d d d d d d d d d d d d d d y d d d d d Ʒ d d d d d d d d d d r d d Ʒ d d d d d d d d d d 7 d d d d d > d d d d d i d% d d d d d d� d d d y d  d d d d V d d d d d  d d d d d d d d d d i d  d d d d ï d! d" d# d$ d y d&='2(-) d* d+ d, d  d. d/ d0 d1 d  d384 d5 d6 d7 d ï d9 d: d; d< d d>I?D@ dA dB dC d r dE dF dG dH d  dJNK dL dM d  dO dP dQ dR d y dTUVuWfX[Y dZ d d\a] d^ d_ d` d ï db dc dd de d  dgrhmi dj dk dl d s dn do dp dq d ds dt d  dvwx}y dz d{ d| d G d~ d d d d Œ d d d d d d Z d d d d d d d d d d d d d d d d d ï d d d y d d d d d Z d d d d d < d d d d d Œ d d d d d i d d Ʒ d d d d d i d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d Ʒ dB d d d d ƙ d d d d d ƙ d� d d d d  d d d d d Ʒ d  d d d d k d d d d d ï d d d 7 d+! d d d d d d d d d d"&# d$ d% d d' d( d) d* d Z d,7-2. d/ d0 d1 d d3 d4 d5 d6 d d8=9 d: d; d< d d> d? d@ dA d  dCeDNEK dFG dH dI dJ d s dL dM d dOZPUQ dR dS dT d dV dW dX dY d Œ d[`\ d] d^ d_ d da db dc dd d G dfsgmh di dj dk dl d d dno dp dq dr d ű dtuzv dw dx dy d d{ d| d} d~ d d d d d d Œ d d d d d ï d{' d d d d d d d d d Œ d d d d d d ï d d d d d d d Z d d d d d d d d d d ï d d d d d d , d d d d d d d d d d ï d d d d d 7 d d d d d d ï d d d d d d ˘ d d d d d Z d d d d d s d d d d d s d d d d d ï d d Z d d d d d Ʒ d d� d d d d d  d d d d ` d d d d d  d d d d d s d d d d d š d" d d d! d s d# d$ d% d& d  d(})S*<+6,1- d. d/ d0 d ï d2 d3 d4 d5 d d d78 d9 d: d; d ƨ d=H>C? d@ dA dB d i dD dE dF dG d ï dINJ dK dL dM d dO dP dQ dR d y dTfU[V dW dX dY dZ d s d\a] d^ d_ d` d db dc dd de d i dgrhmi dj dk dl d Z dn do dp dq d ƨ dsxt du dv dw d dy dz d{ d| d d~ d d  d d d d d Z d d d d d d d d d d d d d d d d s d d d d d Z d d d d d s d d Z d d d d d d d d d d x d d d d d r d d d d d L d d d d d ï d d s d? d d d d 7 d d d d d r d d d d d  d d d d d d d d d d Œ d d d d d d d Z d d d d d  d+� d d d d r d d d d d d d d d š š š š š š š š š š š š š š š š š š ʗ š š š š š! š" š# š$ š% š& š' š( š) š š* š k,7-2. d/ d0 d1 d  d3 d4 d5 d6 d d8:9 d ï d; d< d= d> d 7 d@lAXBMCHD dE dF dG d ï dI dJ dK dL d Z dNSO dP dQ dR d dT dU dV dW d G dYaZ_[ d\ d] d^ d ï d` d dbgc dd de df d ˘ dh di dj dk d dmnyotp dq dr ds d r du dv dw dx d y dz{ d| d} d~ d d d d d d y d d d d d d d d d d x d* d d d d d Z d d d d d  d d d d d Z d d d d d Œ d d d d d r d d d d d Z d d d d d d          H  < d   2 א <     g >   H  < d   2 א <     g >   H  < d  � 2 א <     g >    d d d s d d d d d Z d d d d d Z d" d d d d d! d d#%$ d ƨ d& d' d( d) d d+Z,C-8.3/ d0 d1 d2 d š d4 d5 d6 d7 d 7 d9>: d; d< d= d Ʒ d? d@ dA dB d dDOEJF dG dH dI d dK dL dM dN d s dPUQ dR dS dT d  dV dW dX dY d s d[j\d]b^ d_ d` da d dc d 7 d def dg dh di d ï dkslnm d Ʒ do dp dq dr d s dtyu dv dw dx d ï dz d d|}~R= d d d d d Œ Œ Œ Œ W \ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ  Œ Œ W Or d s d d d d d d d d d d ` d d d d d d d d d d 7 d8 d d d d d š š š š š š š š š š š š š š   š š š š š š š š š š š š ( š š š ( š ( š ( š ( š š ( š ( š š ( ( š š š š š š� š ( š ( š ( š ( š ( š ( š š ( š ( š š š š ( š  š š š š š š š š š š š š š š ( š š š š š ( š š! š" š# š$ š% š& š' š š( š)*/ š+, š- š. š  š041 š2 š3 š  š5 š6 š7 š  š9 d: d; d< d ï d>K?E@ dA dB dC dD d Œ dF dG dH dI dJ d s d dLM dN dO dP dQ d ï dSeT[UXV dW d dY dZ d  d\b] d^ d_ d` da d r dc dd d dfsgmh di dj dk dl d dn do dp dq dr d s dtzu dv dw dx dy d d{ d| d} d~ d d ï d d d d d d d d d d d d d d d d d d d d d d d d r d d d d d d 7 d d d d d d x d d d d d d d d d d d d Z d d d d š d d d d d d d Z d d d d d d Z d d d d d d d d d d d d r d d d d d d Z dB d d d d d d d d d d d Z d d d d d d d d d d š š š š� š š š š š š š š š š  [ š š š š š š š š š š š š š š š š š š š š š! š" š# š$ š% š& š' š( š) š* š+ š, š- š. š/ š0 š1 š2 š3 š4 š5 š6 š7 š8 š9 š: š; š< š= š> š? š@ šA šB šC šD šE šF šG šH šI šJ šK šL šM šN šO šP šQ šR šS šT šU šV šW šX šY šZ š c š\ š] š^ š_ š` ša šb šc šd še šf šg šh ši šj šk šl šm šn šo šp šq šr šs št šu šv šw šx šy šz š{ š| š} š~ š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š š 5 š  d� d d d d ï d d d d d d  d  d d d d d d d d d d d ï d* d d d y d$ d d! d" d# d Z d% d& d' d( d) d Z d+5,/- d. d d0 d1 d2 d3 d4 d V d6<7 d8 d9 d: d; d Z d= d> d? d@ dA d  dCnDYEOFLG dH dI dJ dK d r dM dN d dPSQ dR d dT dU dV dW dX d ű dZd[a\ d] d^ d_ d` d Z db dc d dehf dg d  di dj dk dl dm d Z dop}qwr ds dt du dv d  dx dy dz d{ d| d d~ d d d d d d d d d d d  d d d d d d G d d d d d d Z d d d d d d  d d d d d d d'o  d d y d d d d d d ƨ d d d d d d ҉ d d d d d d Ʒ d d d d d d d d d d d d d d d s d d d d d d s d d d d d d d d d  d d d d d d Z d d d d d d Z d d d d d d Œ d d d d� d d ű d  d d d d d s d d d  d D) d d d d d d d d d d d ï d# d d d! d" d  d$ d% d& d' d( d ï d*7+1, d- d. d/ d0 d d2 d3 d4 d5 d6 d d8>9 d: d; d< d= d Z d? d@ dA dB dC d à dE]FSGMH dI dJ dK dL d dN dO dP dQ dR d dTWU dV d dX dY dZ d[ d\ d ƨ d^e_ d` da db dc dd d ï dflg dh di dj dk d Œ dm dn d dpqrsz dtu dv dw dx dy d > d{| d} d~ d d d d d d  d d d d d d d d d d d d Ʒ d d d d d d ï d d d d d d  d d d d d d ï d d d d d d  d d d d d d d d d à d d d d d d d ï d d d d d d  d d d d d d d d d d d d d d d d ï d d d d d d š d d d d d d Œ d d d d d d ˘ d d d d d d s d  d d d d d d� d d d d d ï d d d d d d s d  d d d d d s d d d d d d ï d! d d d d d ï d" d# d$ d% d& d Ʒ d()*[+C,6-0. d/ d ï d1 d2 d3 d4 d5 d š d7=8 d9 d: d; d< d d> d? d@ dA dB d ï dDQEKF dG dH dI dJ d s dL dM dN dO dP d Ʒ dRXS dT dU dV dW d x dY dZ d Z d\u]j^d_ d` da db dc d s de df dg dh di d x dkql dm dn do dp d Z dr ds dt d dvw}x dy dz d{ d| d d~ d d d d d Z d d d d d d  d d d d d d d d d d d d d d d d d d d d y d d d d d d Œ d d d d d d à d d d Z d d d d d d d d d d d d  d d d d d d z d d d d d d ï d d d d d d s d d d d d d Œ d d d Œ d> d d d d d  d d d r d d d d d d d d d d� d d d d d Œ d d d d d d d  d d d d d d d d d) d d d d d G d d d  d# d d d! d" d d$ d% d& d' d( d x d*1+., d- d ï d/ d0 d L d283 d4 d5 d6 d7 d d9 d: d; d< d= d i d?p@[ANBHC dD dE dF dG d Z dI dJ dK dL dM d dOUP dQ dR dS dT d i dV dW dX dY dZ d ï d\f]c^ d_ d` da db d dd de d <u dgjh di d dk dl dm dn do d r dqrsyt du dv dw dx d s dz d{ d| d} d~ d d d d d d d s d d d ï d d d d d d G d d d d d d ƨ d d d d d d :y d d d d d d dr0 d d d d d d d d d d d ï d d d d d d d d d d d d  d d d  d d d d d d ï d d d d d d d d d d d d d Z d d d d d d d d d d d d  d d d d d d d r r r r r r r r r r r r� r r r r r r r r r r r  r r  r r r r r r  r r r r r r r r r r r r) &! d" d# d$ d% d d' d( d ï d d*+ d, d- d. d/ d d1^2F3<495 d6 d7 d8 d ï d: d; d d=C> d? d@ dA dB d ï dD dE d dGTHNI dJ dK dL dM d z dO dP dQ dR dS d ï dUXV dW d dY dZ d[ d\ d] d s d_w`jadb dc d de df dg dh di d s dkql dm dn do dp d dr ds dt du dv d ï dxyz d{ d| d} d~ d s d d d d d d s d d d d d d ï d d d d d d ҉ d d d d d d Ʒ d d d d d d d d d d d d d d d ï d d d d d d d d d d d d  d d d d d d > d d d d d d ï d d d d d d y d d d d d d  d d d d d d d d d d d d d d d d d d d d d d d d ï d d d d d d ` d d d d d d d� <u <u <u <u 2  d d d d d d d d d d d d d d d Z d% d d d d d d d! d" d# d$ d Ʒ d&,' d( d) d* d+ d ï d- d. d/ d0 d1 d Z d3K4A5;6 d7 d8 d9 d: d d< d= d> d? d@ d dBEC dD d dF dG dH dI dJ d  dLVMSN dO dP dQ dR d Œ dT dU d ` dW]X dY dZ d[ d\ d s d^ d_ d` da šb šc šd še šf šgnhk ši šj š cl šm š š <o šp šq š š s7tuvwx{y dz d z d| d} d~ d d d ˘ d d d d d d d d d d d d Œ d d d d d d d d d s d d d d d d d d d d d d ï d d d d d d d d d d d d r d d d r d d d d d d d d d r d d d ï d d d d d d i d d d ƨ d d d d d d d d d d d d Œ d d d d d d > d d d Z d d d ï d d d d d d d d d d d d d d d� d d d ï d  d d d d d Œ d d d d d d Z d d d d d d $e d d d d d d d -!'" d# d$ d% d& d ï d( d) d* d+ d, d z d.4/ d0 d1 d2 d3 d G d5 d6 d r d89d:L;B d<= d> d? d@ dA d Ʒ dCFD dE d r dG dH dI dJ dK d  dMWNQO dP d dR dS dT dU dV d L dX^Y dZ d[ d\ d] d Ʒ d_ d` da db dc d Z de}fsgmh di dj dk dl d dn do dp dq dr d dtzu dv dw dx dy d ƙ d{ d| d d~ d d d d d d d d  d d d d d d i d d d d d d  d d d d d d d d d d d d d d d Z d d d d d d d d d d d y d d d d d d ï d d d d d d d d d d d d Z d d d d d d ï d d d d d d d d d d d d à d d d s d d d d d d d ^il- d d d d d d d d Ʒ d� d d ƨ d  d d  d d d d  d d Z d d d  d! d d d d d d d d ï d d d ï d")#&$ d% d d' d( d r d d*+ d, d d.P/>07142 d3 d Ʒ d5 d6 d Ʒ d8;9 d: d š d< d= d Ʒ d?F@CA dB d  dD dE d ï dGJH dI d dKNL dM d ï dO d Z dQ]RVS dT dU d  dWZX dY d d[ d\ d d^e_b` da d ï dc dd d s dfig dh d Œ dj dk d ƨ dmno~pwqtr ds d Z du dv d dx{y dz d d| d} d ï d d d V d d d V d d d y d d d d d d Z d d d d d d Z d d d š d d d d d d š d d d 7 d d d y d d d d d d  d d d d d d  d d d s d d d s d d d ï d d d ï d d d š d d d Z d d d d d d d d d d d d Œ d d d d d d ƨ dt8 d d d d d y d d d ` d d d ƨ d� d d ƨ d d d  d  d d d  d d ű d d d Z d d d s d d d ] d)" d d Ʒ d d! d s d#&$ d% d Z d' d( d ƙ d*1+., d- d d/ d0 d d253 d4 d ` d6 d7 d d9X:I;B<?= d> d ` d@ dA d dCFD dE d L dG dH d Ʒ dJQKNL dM d Z dO dP d s dRUS dT d r dV dW d dYeZa[^\ d] d d_ d` d d dbc dd d  dfmgjh di d dk dl d  dnqo dp d dr ds d ï duvwxy|z d{ d  d} d~ d d d d ƨ d d d  d d d ` d d d Z d d d d d d V d d d Œ d d d  d d d d s d d d  d d d Œ d d d d ƙ d d d Z d d d d d d Ʒ d d d  d d d  d d d  d d d s d d d d d d Z d d d d d d d d d d d d ï d d d  d d d Z d d d  d d d Z df0 d d Z d d d ƙ d� d d s d d d  d   d d d d d d d d d d d d$ d d d d d ï d! d d . d" d# d à d%,&)' d( d Œ d* d+ d d- d. d/ d G d1D253 d4 d ƙ d6=7:8 d9 d Z d; d< d Ʒ d>A? d@ d Ʒ dB dC d dETFMGJH dI d dK dL d s dNQO dP d ` dR dS d Z dU\VYW dX d s dZ d[ d y d]c^ d_ d` da db d ï dd de d :y dghijqknl dm d Œ do dp d dr~svt du d dw{x dy dz d à d| d} d y d d d š d d d d d d ï d d d d d d d d d d  d d d Z d d d d d d d d d Ʒ d d d ƙ d d d ï d d d  d d d d d d  d d d ï d d d d ` d d d ` d d d ű d d d d d d d d d d d d d d d d d d d d d d d d d d d d d ' d d ` d d d d d d d d d ï dŠK,� d d d d d z d d d :y d d d d                    %" d! d i d# d$ d Ʒ d&)' d( d d* d+ d  d-<.5/20 d1 d d3 d4 d d697 d8 d s d: d; d ï d=D>A? d@ d dB dC d > dEHF dG d  dI dJ d  dLkMYNRO dP dQ d i dSVT dU d s dW dX d ï dZd[^\ d] d d_ d` da db c ehf dg d i di dj d dl{mtnqo dp d ï dr ds d  duxv dw d  dy dz d d|ƒ}€~ d d 7 d d‚ d Z d„‡… d† d dˆ d‰ d š d‹Œ¬Ž•’ d‘ d ï d“ d” d ï d–š— d˜ d™ d ƨ d› dœ d  dž¥Ÿ¢  d¡ d d£ d¤ d  d¦©§ d¨ d Z dª d« d s d­®¾¯²° d± d Z d³»´¸µ d¶ d· d d¹ dº d Œ d¼ d½ d d d¿ d d ƨ d d d ï d d d d d d d d d d d d  d d d ű d d d Ʒ d d d ï d d d s d d d Ʒ d d d Z d d d Ʒ d d d z d d d d d d ƨ d d� d ƨ d  d d  d d d s d   d d i d d d d>4ÙS4% d d Ʒ d d d d" d! d Ʒ d# d$ d d&-'*( d) d d+ d, d ï d.1/ d0 d ï d2 d3 d d5D6=7:8 d9 d  d; d< d Œ d>A? d@ d ƨ dB dC d  dELFIG dH d dJ dK d  dMPN dO d y dQ dR d x dTvUgV]WZX dY d 7 d[ d\ d d^d_ d` da db dc d 7 de df d dhoilj dk d s dm dn d dpsq dr d dt du d y dwÆxy|z d{ d d} d~ d Z dÀÃÁ d d dÄ dÅ d Z dÇÒÈÏÉÌÊ dË d ƨ dÍ dÎ d 7 dÐ dÑ d Ʒ dÓÖÔ dÕ d ` d× dØ d dÚÛ÷ÜèÝäÞáß dà d  dâ dã d š då dæ dç d r déðêíë dì d y dî dï d y dñôò dó d ï dõ dö d :y døùúýû dü d ï dþ dÿ d d d d d d d r d d d d d d  d d d d s d d d  d d d  d d d s d d d d d d ï d d d r d d d Œ d d d Ʒ d$  d d d d d d š š� š š š š š š š š š š š š š š š A š š š š š š š š š š š š š š š š š š A d!" d# d d%)& d' d( d Ʒ d*-+ d, d d.1/ d0 d d2 d3 d d56ą7S8G9@:=; d< d s d> d? d ï dADB dC d dE dF d dHLI dJ dK d ` dMPN dO d ï dQ dR d Ʒ dTvUoVlW dX dY dZ r[ r\ r] r r^_ r r` rab rc r rde r rf rg rhi r rj rk r m dn d dpsq dr d ƙ dt du d  dw~x{y dz d d| d} d dĂĀ dā d š dă dĄ d k dĆĥćĖĈďĉČĊ dċ d dč dĎ d Z dĐēđ dĒ d ƨ dĔ dĕ d y dėĞĘěę dĚ d ï dĜ dĝ d dğĢĠ dġ d dģ dĤ d dĦIJħī dĨĩ dĪ d  dĬįĭ dĮ d Ʒ dİ dı d  dijĺĴķĵ dĶ d ܹ dĸ dĹ d dĻľļ dĽ d dĿ d d Œ d d d d d d š d d d s d d d ï d d d :y d d d Z d d d d d d d d d d  d d d  d d d d d d ƙ d d d d d d d d d d%� d d s d d d d  d d d        T  d d d d d d d d y d" d! d d# d$ d ƨ d&/'+( d) d* d ű d, d- d. d Ʒ d07142 d3 d d5 d6 d d8;9 d: d š d< d= d d?P@żAzBaCRDKEHF dG d ï dI dJ d dLOM dN d Z dP dQ d Œ dSZTWU dV d dX dY d Œ d[^\ d] d 7 d_ d` d ï dbncg dde df d dhki dj d  dl dm d dovpsq dr d dt du d y dw dx dy d d{Ś|ŋ}ń~Ł dŀ d dł dŃ d dŅňņ dŇ d 7 dʼn dŊ d dŌœōŐŎ dŏ d  dő dŒ d y dŔŗŕ dŖ d s dŘ dř d dśŰŜũŝŠŞ dş d ƨ dšŦŢţ  dŤ dť d Z dŧ dŨ d š dŪŭū dŬ d ƨ dŮ dů d  dűŵ dŲų dŴ d Ʒ dŶŹŷ dŸ d dź dŻ d dŽžſ d d 7 d d d d d d s d d d s d d d  d d d d d d d ` d d d Z d d d ï d d d Œ d d d ܌ d d d i d d d n d d d y d d d  d � d d d d d 7 d d d ƙ d d d Œ d  d  d d  d d d k d d d  d9 d d ` d d d d 6! d" d# d$ i% i& i' i( i) i* i+ i, i- i. i/ i0 i1 i2 i3 i4 i i5 i7 d8 d d:A;>< d= d > d? d@ d  dBMCFD dE d 6b dGJH dI d  dK dL d y dN dO d š dQRƑSrTcU\VYW dX d dZ d[ d Z d]`^ d_ d x da db d ddkehf dg d di dj d Z dlom dn d Œ dp dq d dsƂt{uxv dw d Z dy dz d ï d|} d~ d dƀ dƁ d  dƃƊƄƇƅ dƆ d dƈ dƉ d dƋƎƌ dƍ d dƏ dƐ d dƒƫƓƟƔƘ dƕƖ dƗ d dƙƜƚ dƛ d dƝ dƞ d Z dƠƧơƤƢ dƣ d dƥ dƦ d d dƨƩ dƪ d  dƬƭƴƮƱƯ dư d y dƲ dƳ d  dƵƸƶ dƷ d dƹ dƺ dƻ d Ƽ ƽ ƾƿ                         d d d d d ű d d d ï d d d r d*  d d ű d d d Ʒ d d d y d d d d d d s d d� d ï d d d d d d d d d d   d d d d d H d d d d d d d#  d d s d! d" d d$'% d& d y d( d) d r d+J,;-4.1/ d0 d  d2 d3 d d586 d7 d ï d9 d: d d<C=@> d? d dA dB d ` dDGE dF d dH dI d  dKZLSMPN dO d ï dQ dR d Z dTWU dV d > dX dY d d[b\_] d^ d 7 d` da d y dcfd de d 6b dg dh d djk|limnǮoǕpqxrus dt d  dv dw d Z dy|z d{ d Œ d} d~ d > dǀLJǁDŽǂ dǃ d dDž ddž d  dLjǒljǐNJǍNj dnj d ս dǎ dǏ d  dǑ d 7 dǓ dǔ d  dǖǥǗǞǘǛǙ dǚ d s dǜ dǝ d ï dǟǢǠ dǡ d dǣ dǤ d dǦǪ dǧǨ dǩ d ƨ d dǫǬ dǭ d dǯǰǿDZǸDzǵdz dǴ d  dǶ dǷ d dǹǼǺ dǻ d dǽ dǾ d d d d d d d ` d d d ï d d d d d d s d d d s d d d d d d  d d d d d d d ï d d d ` d)  d d d 6 Dz ï ï Dz ï d d Ʒ d d d d  d� d d d d d k d  d d Z d d d Z d d d ï d d d ï d d d d W d" d d  d d! d i d#&$ d% d  d' d( d d*F+:,3-0. d/ d ï d1 d2 d Z d475 d6 d ƨ d8 d9 d ` d;? d<= d> d y d@CA dB d dD dE d  dGZHL dIJ dK d  dMTNRO dP dQ d  dS d ï dU dV dW dX dY d Z d[b\_] d^ d ï d` da d dcfd de d  dg dh d djkȪlȋm|nuorp dq d ds dt d  dvyw dx d ս dz d{ d d}Ȅ~ȁ dȀ d ű dȂ dȃ d Z dȅȈȆ dȇ d 7 dȉ dȊ d 7 dȌțȍȔȎȑȏ dȐ d š dȒ dȓ d ` dȕȘȖ dȗ d  dș dȚ d dȜȣȝȠȞ dȟ d dȡ dȢ d dȤȧȥ dȦ d  dȨ dȩ d dȫȬȼȭȴȮȱȯ dȰ d ï dȲ dȳ d Ʒ dȵȸȶ dȷ d dȹ dȺ dȻ d dȽȾȿ d d  d d d d d d ï d d d d d d d d d d d d d d d i d d d d d d d d d ƨ d d d  d$ d d d d d ` d d d d d d d d d� d ҉ d d d d d d ï d    d d  d d d Ʒ d d d ` d d d Z d d d d d! d d Ʒ d" d# d y d%`&5'.(+) d* d  d, d- d ` d/20 d1 d d3 d4 d  d6=7:8 d9 d š d; d< d d>A? d@ d dB dC dD dE ƙF ƙG ƙH ƙI ƙJ ƙK ƙL ƙM ƙN ƙO ƙP ƙQ ƙR[SWT ƙU ƙ ƙV 8 ƙXY ƙZ ƙ 8 G\ ƙ] ƙ^ ƙ_ ƙ ƙapbicfd de d Œ dg dh d djmk dl d dn do d 7 dqur ds dt d s dvyw dx d 7 dz d{ d  d}|~ɀɴɁɐɂɉɃɆɄ dɅ d  dɇ dɈ d ű dɊɍɋ dɌ d dɎ dɏ d  dɑɭɒɕɓ dɔ d Œ dɖ dɗ dɘ dəɫɚ  ɛɜ ɝ ɞ ɟ ɠ ɡ ɢ ɣ ɤ ɥ ɦ ɧ ɨ ɩ ɪ   ɬ  ɮɱɯ dɰ d dɲ dɳ d dɵɶɽɷɺɸ dɹ d s dɻ dɼ d  dɾɿ d d d d d  d d d ` d d d Q d d d d i d d d d d d d d d d d d d Ʒ d d d y d d d Z d d d d d d  d d d d d d s d d d ï d � d d 7 d d d ï d  d d d d d  d d d š d d d  d d d ּ d d d V d\=. '!$" d# d i d% d& d  d(+) d* d i d, d- d š d/6031 d2 d  d4 d5 d Ʒ d7:8 d9 d d; d< d s d>M?F@CA dB d  dD dE d  dGJH dI d ҉ dK dL d Ʒ dNUORP dQ d dS dT d ` dVYW dX d  dZ d[ d  d]y^j_c` da db d ï ddge df d š dh di d ` dkrlom dn d ű dp dq d dsvt du d dw dx d ï dz d{ d Œ d}#~ʽʡʀʏʁʈʂʅʃ dʄ d dʆ dʇ d > dʉʌʊ dʋ d dʍ dʎ d  dʐʗʑʔʒ dʓ d ï dʕ dʖ d ƨ dʘʞʙ dʚ dʛ dʜ dʝ d dʟ dʠ d dʢʱʣʪʤʧʥ dʦ d s dʨ dʩ d n dʫʮʬ dʭ d Z dʯ dʰ d dʲʶʳ dʴ dʵ d Œ dʷʺʸ dʹ d dʻ dʼ d dʾʿ d d Œ d d d d d d d                            Q&  d d Ʒ d d d  d d d d ˘ ˘ ˘ ˘ ˘ ˘ )( )( ˘ d� d d d d 7 d   d d ƨ d d d d d d d d d d d d  d d d Ʒ d  d d d! d" d Ʒ d$c%D&5'.(+) d* d ƨ d, d- d Ʒ d/20 d1 d d3 d4 d s d6=7:8 d9 d  d; d< d ï d>A? d@ d  dB dC d Œ dETFMGJH dI d dK dL d Z dNQO dP d dR dS d ï dU\VYW dX d dZ d[ d Ʒ d]`^ d_ d ï da db d dd˿e˝f˖gjh di d r dk dl dm dn o p q r sˇ t u vw  x y z{ | }˃~ˀ  7 ˁ˂   7˄ ˅ˆ  ܜ ܜ ˈ  ˉ ˊˋ  ˌ ˍ ˎˏ ː ˑ ˒˔ ˓  ܜ˕  ( ˗˚˘ d˙ d d˛ d˜ d Œ d˞˥˟ˢˠ dˡ d Z dˣ dˤ d Z d˦˩˧ d˨ d d˪ d˫ dˬ d ˭ ˮ ˯˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷˸ ˹ ˺ ˻ ˼ ˽ ˾ ł  d d d ï d d d  d d d  d d d s d d d d d d d d d r d d d  d[� d d  d d d d d d Z d d d d d d d ` d d d ƙ d d d s d  d d  d d d s d   d d > d d d i d d d d d d ï d d d d d d r d <!-"& d#$ d% d  d'*( d) d ï d+ d, d d.5/20 d1 d s d3 d4 d d697 d8 d  d: d; d š d=L>E?B@ dA d  dC dD d s dFIG dH d dJ dK d Œ dMTNQO dP d dR dS d r dUXV dW d  dY dZ d d\̔]|^m_c` da db d  ddje df dg dh di d dk dl d s dnuorp dq d ï ds dt d dvyw dx d dz d{ d d}̅~ d̂̀ d́ d d̃ d̄ d ƨ d̆̍̇̊̈ d̉ d s d̋ ď d  d d̎̏ d̐ d̑ d̒ d̓ d ḏ̢̛̖̗̘̕ d̙ d̚ d Z d̜̟̝ d̞ d d̠ d̡ d  ḑ̣̪̤̥ d̦ d Ʒ d̨ d̩ d d̫̮̬ ḓ d y d̯ d̰ d Ʒ d̴̷̵̲̳̺ d̶ d d̸ d̹ d d̻̼̾ d̽ d d̿ d d Z d d d d d d d d d ҉ d d d ï dJ d d  d d d  d d d d d d y d d d ű d d d d d d d d d  d d d d d d  d d d d� d d ï d  d d ï d d d y d d  d d d. d d > d d d d d d d d d d '!$" d# d d% d& d d(+) d* d ҉ d, d- d d/;07142 d3 d d5 d6 d d8 d9 d: d s d<C=@> d? d dA dB d dDGE dF d dH dI d  dK͈LkM\NUORP dQ d dS dT d dVYW dX d dZ d[ d d]d^a_ d` d ï db dc d  dehf dg d à di dj d  dlxmq dno dp d ` drus dt d dv dw d i dy}z d{ d| d d~́ d̀ d ï d͂̓ͅ d̈́ d ï d͆ d͇ d 7 d͉͙ͧ͊͋͒͌͏͍ d͎ d d͐ d͑ d s d͓͖͔ d͕ d y d͗ d͘ d Œ d d͚͛ͤ͜ d͝ d͞ d͟͡ 6͠ Dz ïͣ͢ ï Dz ï Dzͥ dͦ d Œ dͨͩͪͭͫ dͬ d dͮ dͯ dͰ dͱ Ͳ ͳ ʹ ͵ Ͷ ͷ ͸ ͹ ͺ ͻ ͼ ͽ; Ϳ     d d ï d d d d d d x d d d d d d d d d dCμ d d š d d d k d d d d ï d d d s d d d d d d d d d  d  d d i d� d d s d d d ƨ d d d d   d d  d d d d d d ï d d d i dΝΎ" d d  d d! d d#&$ d% d s d' d( d) d*z+ š, š- š. š/ š0 š1 š2 š3 š4 š5X6M7C š89@:=;<  c 5p>?  5R 5 5pA šB š  šDIE šF šGH : � kJ šK šL š N šO šPUQR šST š H c <V šW š : šY šZe[_\ š] š^ š š` šacb š šd š š ftgnhkij  ( 5plm  c š 5orpq 5R  ks š šu švxw š : >y �{ š| š} š~ š š΀ š΁ š΂ š΃ š΄ š΅ šΆ š· šΈ šΉ šΊΌ š΋ š ΍ š  šΏΖΐΓΑ dΒ d ï dΔ dΕ d dΗΚΘ dΙ d  dΛ dΜ d Z dΞέΟΦΠΣΡ d΢ d Ʒ dΤ dΥ d ï dΧΪΨ dΩ d ` dΫ dά d G dήείβΰ dα d  dγ dδ d Ʒ dζιη dθ d dκ dλ d r dνξο d d š d d d d d d ƨ d d d d d d Z d d d ï d d d à d d d d d d d d d d d d  d d d d d d d d d :y d d d d d d d$�  d d d d d š d d d d d d d d d d d d Z d d d d d d ï d! d d d" d# d Ʒ d%4&-'*( d) d ï d+ d, d  d.1/ d0 d s d2 d3 d  d5<697 d8 d ï d: d; d s d=@> d? d dA dB d s dDEϊFeGVHOILJ dK d  dM dN d G dPSQ dR d ` dT dU d dW^X[Y dZ d d\ d] d L d_b` da d Œ dc dd d ҉ dfugnhki dj d Ʒ dl dm d ï dorp dq d x ds dt d dvσwπx dy}z d{ d| d  d~ d d r dρ dς d  dτχυ dφ d  dψ dω d dϋϪόϛύϔώϑϏ dϐ d š dϒ dϓ d s dϕϘϖ dϗ d ˘ dϙ dϚ d s dϜϣϝϠϞ dϟ d dϡ dϢ d š dϤϧϥ dϦ d dϨ dϩ d dϫϺϬϳϭϰϮ dϯ d Z dϱ dϲ d dϴϷϵ d϶ d dϸ dϹ d dϻϼϿϽ dϾ d d d d  d d d  d d d  d d d ï d d d  d d d d d d d d d d d d r d d d ƙ d d d d  d d  d d d ` d  d d d        �          d d r d d d  d d d ` d d d d d d  d<-& #! d" d s d$ d% d  d'*( d) d ƨ d+ d, d d.5/20 d1 d d3 d4 d ï d697 d8 d G d: d; d d=O>B? d@ dA d i dCFD dE d dGLH dI dJ dK d dM dN d ƙ dPWQTR dS d dU dV d dX[Y dZ d d\ d] d G d_؅`naRb`cdРeЁfugnhki dj d 7 dl dm d s dorp dq d  ds dt d i dvz dwx dy d d{~| d} d d dЀ d dЂБЃЊЄЇЅ dІ d 7 dЈ dЉ d Œ dЋЎЌ dЍ d dЏ dА d r dВЙГЖД dЕ d ƨ dЗ dИ d dКНЛ dМ d dО dП d 7 dСнТбУЪФЧХ dЦ d dШ dЩ d Ʒ dЫЮЬ dЭ d  dЯ dа d ű dвйгжд dе d r dз dи d ï d dкл dм d dоп d d ƨ d d d d d d  d d d d d d  d d d  d d d Z d d d d d ƨ d d d d . d d d d d d d d d d d d d d d ˘ d d d Z d � d d Ʒ d d d ` d  d d ` d d d ` d d d  d d d  d d d ï d d d d?0) #! d" d y d$ d% d& d' d( d  d*-+ d, d d. d/ d d18253 d4 d  d6 d7 d Z d9<: d; d Z d= d> d d@OAHBEC dD d dF dG d dILJ dK d ƨ dM dN d y dPWQTR dS d dU dV d Z dX[Y dZ d d\ d] d^ d_ d š dabѧcтdselfig dh d Z dj dk d dmpn do d  dq dr d s dt{uxv dw d ï dy dz d d|} d~ d  dр dс d dуѕфюхыцщч dш d r dъ d r dь dэ d dяђѐ dё d  dѓ dє d dіѝїњј dљ d dћ dќ d ` dўѤџ dѠ dѡ dѢ dѣ d dѥ dѦ d ƨ dѨѩѸѪѱѫѮѬ dѭ d dѯ dѰ d ` dѲѵѳ dѴ d  dѶ dѷ d  dѹѺѻ dѼ dѽ dѾ ѿ           t d d Ʒ d d d d d d d d d x d d d  d d d ї d d d  d d d d ï d d d  d d d  d� d d Z d d d V d d d s d d d s d d d ï d d d i d   d d y d d d  d d d ` d3# d d ƙ d d d r d  d d d! d" d > d$,%(& d' d d) d* d+ d r d-0. d/ d ƨ d1 d2 d d4C5<697 d8 d  d: d; d ï d=@> d? d  dA dB d Z dDKEHF dG d dI dJ d dLOM dN d dP dQ d ƙ dStTUґVuWfX_Y\Z d[ d Œ d] d^ d d`ca db d dd de d dgnhki dj d r dl dm d ˘ dorp dq d ] ds dt d Œ dv҂w~x{y dz d š d| d} d Œ d dҀ dҁ d  d҃Ҋ҄҇҅ d҆ d š d҈ d҉ d dҋҎҌ dҍ d 7 dҏ dҐ d s dҒҫғҟҔқҕҘҖ dҗ d Ʒ dҙ dҚ d Œ dҜ dҝ dҞ d ï dҠҧҡҤҢ dң d  dҥ dҦ d dҨ dҩ dҪ d  dҬһҭҴҮұү dҰ d 7 dҲ dҳ d Z dҵҸҶ dҷ d dҹ dҺ d dҼҽҾ dҿ d  d d d  d d d s d d d d d d ű d  d d d d d y d d d 7 d d d  d d d  d d d ï d d d d d d ï d d d d d d ƨ d d d d d d d� d d d d d d  d d ï d d d dR" d d r d d d r d d d d d d  d d! d  d#N$K% d& d' d(I)  *+:, - . / 0 1 2 3 4 5 6 7 8 9  ; <  => ? @ A B C D E F G H   J  L dM d  dO dP dQ d ` dSeT^U[V dW dX dY dZ d ˘ d\ d] d  d_b` da d dc dd d ï dfmgjh di d dk dl d V dnqo dp d s dr ds d duvӮwӖxӇyӀz}{ d| d ƨ d~ d d ƨ dӁӄӂ dӃ d G dӅ dӆ d dӈӏӉӌӊ dӋ d ` dӍ dӎ d dӐӓӑ dӒ d ï dӔ dӕ d dӗӦӘӟәӜӚ dӛ d  dӝ dӞ d dӠӣӡ dӢ d ҉ dӤ dӥ d dӧ dӨӫө dӪ d Z dӬ dӭ d <u dӯӰӼӱӵӲ dӳ dӴ d dӶӹӷ dӸ d ï dӺ dӻ d dӽӾӿ d d d d d d d d d ï d d d  d d d Ʒ d d d s d d d Z d d d ƨ d d d ï d d d s d d d r d/  d d ` d d d i d d d s d d d  d d d d d� d d d d d i d  d d  d d d d  d d Ʒ d d d d d d d d d ï d d d < d!("%# d$ d L d& d' d ï d),* d+ d  d- d. d d0O1@29364 d5 d i d7 d8 d ï d:=; d< d š d> d? d dAHBEC dD d 7 dF dG d > dILJ dK d  dM dN d dP_QXRUS dT d dV dW d ` dY\Z d[ d ï d] d^ d s d`gadb dc d y de df d  dhki dj d z dl dm d do~pq�rԱsԏtԃu|vyw dx d dz d{ d d}Ԁ~ d d > dԁ dԂ d Ʒ dԄԈԅ dԆ dԇ d ï dԉԌԊ dԋ d  dԍ dԎ d  dԐԟԑԘԒԕԓ dԔ d dԖ dԗ d ƨ dԙԜԚ dԛ d > dԝ dԞ d s dԠԧԡԤԢ dԣ d dԥ dԦ d dԨԮԩ dԪ dԫ dԬ dԭ d dԯ d԰ d r dԲԳԴԻԵԸԶ dԷ d i dԹ dԺ d dԼԿԽ dԾ d Ʒ d d d r d d d à d d d Œ d d d d ` d d d i d d d ƨ d d d Z d d d Z d d d d d d d                   tI  d d Z d d d Z d@  d d ï d d d d  d d  d d d s d d d d Ʒ d d d d d d ` d1 '!$" d# d s d% d& d r d(+) d* d s d, d- d. d/ d0 d d29364 d5 d . d7 d8 d d:=; d< d d> d? d dA`BQCJDGE dF d x dH dI d dKNL dM d ` dO dP d ï dRYSVT dU d r dW dX d dZ][ d\ d d^ d_ d dapbicfd de d Ʒ dg dh d djmk dl d Z dn do d ï dqxrus dt d ï dv dw d V dy|z d{ d ƨ d} d~ d ï dՀՁՂզՃ՗ՄՋՅՈՆ dՇ d Z dՉ dՊ d dՌՔՍՒՎ dՏ dՐ dՑ d ï dՓ d ƙ dՕ dՖ d ű d՘բՙ՟՚ d՛ d՜ d՝ d՞ d ҉ dՠ dա d  d dգդ dե d  dէպըկթլժ dի d dխ dծ d dհշձմղ dճ d dյ dն d  dո dչ d dջռտս dվ d d d d  d d d Ʒ d d d ï d d d ` d d d ` d d d š d d d ï d d d d d d  d d d Œ d d d ű d d d Z d d d Z d d d ƙ d d d ï d d d ƙ d d� d  d d d ƨ d d d d E )    d d d d d ï d d d y d d d Z d" d d d d! d ï d#&$ d% d ` d' d( d Z d*9+2,/- d. d d0 d1 d d364 d5 d d7 d8 d  d:A;>< d= d d? d@ d Z dB dC dD d  dFeGVHOILJ dK d Z dM dN d ï dPSQ dR d dT dU d dW^X[Y dZ d ï d\ d] d d_b` da d dc dd d ï dfrgk dhi dj d x dlom dn d dp dq d ƨ dsztwu dv d  dx dy d 7 d d{| d} d r dהրցւ֡փ֒ք֋օֈֆ dև d  d։ d֊ d d֌֏֍ d֎ d s d֐ d֑ d ƨ d֚֓֔ d֕ d֖ d֗ d֘ d֙ d d֛֞֜ d֝ d s d֟ d֠ d  dֺֽ֢֣֤֥ d֦ d֧ d֨ .֩ .֪ .֫ .֬ .֭ .֮ .֯ .ְ .ֱ .ֲ .ֳ . .ִ .ֵ .ֶַ . .ָֹ . .ֻ dּ d d־ֿ d d d d d d d d d  V  d d Z d d d y d d d ` d d d 7 d d d  d d d ` d d d ƨ d d d d d d ï d d d d d d d d d ` d d d š d� d d s d d d  d  d d  d d d d d d ï d d d s dU6'  d d s d d d ï d!$" d# d d% d& d d(/),* d+ d ï d- d. d d031 d2 d ï d4 d5 d ï d7F8?9<: d; d  d= d> d d@CA dB d 7 dD dE d  dGNHKI dJ d dL dM d dORP dQ d Ʒ dS dT d dVxWiXbY\Z d[ d i d] d^ d_ d` da d ï dcfd de d  dg dh d  djqknl dm d do dp d y drus dt d ï dv dw d y dy׈zׁ{~| d} d Z d d׀ d dׂׅ׃ dׄ d ï d׆ dׇ d Ʒ d׉׍׊ d׋ d׌ d ` d׎ב׏ dא d ƨ dג dד d ƨ dו זח׳טקינךםכ dל d  dמ dן d dספע dף d dץ dצ d V dר׬ש dת d׫ d Ʒ d׭װ׮ dׯ d dױ dײ d Z d״׵׼׶׹׷ d׸ d ` d׺ d׻ d d׽׾ d׿ d ï d d d d d d d 7 d d d  d d d d d d x d d d ï d d d d d d d  d d d d k d d d ` d d d d d d d d d d d d Z d d d d d� d d  d d d d d d Ʒ d F -   d d k d d d d d d d d d L d d d ҉ d& #! d" d d$ d% d d'*( d) d Z d+ d, d d.:/30 d1 d2 d ű d475 d6 d d8 d9 d d;?< d= d> d y d@CA dB d dD dE d dGfHWIPJMK dL d dN dO d  dQTR dS d dU dV d dX_Y\Z d[ d d] d^ d ƨ d d`acb d dd de d ` dgvhoilj dk d  dm dn d dpsq dr d ï dt du d dw~x{y dz d d| d} d Ʒ d؂؀ d؁ d d؃ d؄ d d؆~؇r؈{؉؊ؽ؋ا،ؘ؍ؑ d؎؏ dؐ d ` dؒؕؓ dؔ d dؖ dؗ d dؙؠؚ؝؛ d؜ d d؞ d؟ d  dءؤآ dأ d Œ dإ dئ d ï dبرةح dتث dج d dخ dد dذ d L dزضس dش dص d :y dطغظ dع d Œ dػ dؼ d dؾؿ d d  d d d d d d G d d d ƙ d d d L d d d ` d d d d d d š d d d d d d ` d d d Qy d d d  d d d d d d d d d š d d d d<� d d  d d d i d  d d ƙ d d d ƨ d d d d d d d d d ï d d d  d-& #! d" d ƨ d$ d% d 7 d'*( d) d ï d+ d, d ï d.5/20 d1 d  d3 d4 d à d697 d8 d d: d; d Z d=\>M?F@CA dB d dD dE d dGJH dI d  dK dL d x dNUORP dQ d dS dT d à dVYW dX d dZ d[ d  d]l^e_b` da d dc dd d dfig dh d dj dk d  dmtnqo dp d  dr ds d duxv dw d s dy dz d d|}ٹ~َٝـهفلق dك d ҉ dم dن d  dوًى dي d ` dٌ dٍ d  dُِّٖٓ dْ d dٔ dٕ d dٗٚ٘ dٙ d  dٛ dٜ d ƙ dٞ٭ٟ٦٠٣١ d٢ d ï d٤ d٥ d ` d٧٪٨ d٩ d  d٫ d٬ d  dٮٲٯ dٰ dٱ d dٳٶٴ dٵ d ï dٷ dٸ d  dٺٻټٽپ dٿ d x d d d ` d d d ` d d d ` d d d ƨ d d d s d d d G d d d r d d d d d d y d d d Ʒ d d d  d d d Z d d d  d d d d d d  d6 � d d d d d 7 d d d d d d d   d d d d d ` d d d d d d ` d*# d d ` d d! d" d O$'% d& d  d( d) d y d+/, d- d. d d031 d2 d 7 d4 d5 d ƨ d7V8G9@:=; d< d ï d> d? d dADB dC d š dE dF d y dHOILJ dK d dM dN d s dPSQ dR d ` dT dU d s dWfX_Y\Z d[ d à d] d^ d ` d`ca db d dd de d ƨ dgnhki dj d k dl dm d d dop dq d ` dsotuڱvڒwچxy|z d{ d ï d} d~ d k dڀڃځ dڂ d ï dڄ dڅ d dڇڋ dڈډ dڊ d Œ dڌڏڍ dڎ d dڐ dڑ d  dړڢڔڛڕژږ dڗ d ï dڙ dښ d dڜڟڝ dڞ d  dڠ dڡ d ҉ dڣڪڤڧڥ dڦ d dڨ dک d dګڮڬ dڭ d ` dگ dڰ d s dڲڳڴڻڵڸڶ dڷ d ï dڹ dں d s dڼڿڽ dھ d Z d d d d d d Z d d d s d d d s d d d z d d d i d d d  d d d ï d d d ` d d d ï d d d ƨ d d d d d d ï d3 d d d d d  d d d d� d d ս d  d d i d d d d  d d d d d d d d Z d$ d d ˘ d d d d! d d d" d# d y d%,&)' d( d d* d+ d d-0. d/ d ` d1 d2 d ƨ d4M5A6=7:8 d9 d d; d< d  d> d? d@ d ƨ dBICFD dE d  dG dH d  dJ dK dL d Œ dN]OVPSQ dR d s dT dU d dWZX dY d  d[ d\ d d^e_b` da d dc dd d ƨ dflg dh di dj dk d Z dm dn d Z dpqۺr۞sۑtx duv dw d  dy|z d{ d d} d~ d d ۀ ہۂ ۃ ۄ ۅ ۆۍۇ ۈۊ ۉ ۋی <ێ ۏې < ےۚۓۖ۔ dە d dۗ dۘ dۙ d dۛ dۜ d۝ d d۟ۮ۠ۧۡۤۢ dۣ d ï dۥ dۦ d s dۨ۫۩ d۪ d d۬ dۭ d  dۯ۳ d۰۱ d۲ d  d۴۷۵ d۶ d y d۸ d۹ d Z dۻۼ۽۾ۿ d d d d d d d d ï d d d ƨ d d d d d d Z d d d d d d s d d d  d d d d d d Z d d d ƙ d d d s d d d ƨ d d d s d d d d Z d<  d� d r d d d d d d Œ d d d  d   d d ƨ d d d d d d  d d d d-&# d d d! d" d  d$ d% d ` d'*( d) d s d+ d, d ƨ d.5/20 d1 d s d3 d4 d Z d697 d8 d à d: d; d d=_>P?F@CA dB d š dD dE d  dGMH dI dJ dK dL d Z dN dO d dQXRUS dT d dV dW d Z dY\Z d[ d 7 d] d^ d s d`oahbec dd d 7 df dg d y dilj dk d s dm dn d dpwqtr ds d ƨ du dv d dx{y dz d s d| d} d s d܀܁܂܃ܥ܄ܖ܅܏܆܌܇ d܈ d܉ d܊ d܋ d G d܍ d܎ d  dܐܓܑ dܒ d  dܔ dܕ d Z dܗܞܘܛܙ dܚ d Z dܜ dܝ d ï dܟܢܠ dܡ d dܣ dܤ d  dܦܵܧܮܨܫܩ dܪ d 7 dܬ dܭ d ï dܯܲܰ dܱ d dܳ dܴ d Œ dܷܸܶܽܺ dܹ d  dܻ dܼ d dܾܿ d d  d d d Ʒ d d d ï d d d ï d d d d d d  d d d ï d d d d d d d d d ƙ d d d  d d d ƨ d d d > d d d s d d d d d d Œ d� d d d d d d@!  d d k d d d z d d d d ï d d d s d d d y d d d d d d ƨ d"1#*$'% d& d s d( d) d  d+., d- d d/ d0 d r d29364 d5 d d7 d8 d ƙ d:=; d< d  d> d? d ï dA`BQCJDGE dF d dH dI d ï dKNL dM d ï dO dP d  dRYSVT dU d ` dW dX d ï dZ][ d\ d  d^ d_ d Z dapbicfd de d dg dh d djmk dl d ï dn do d dqxrus dt d dv dw d dy|z d{ d ï d} d~ d  d݀݁߉݂ d݃ d݄ d݆݅݇ݺ݈ ݉ ݊ ݋ ݌ݣݍݘݎݓ ݏݐ ݑ ݒ ݔ ݕ ݖ ݗ ' ݙݞݚ ݛ ݜ ݝ  ݟ ݠ ݡ ݢ ݤݯݥݪ ݦݧ ݨ ݩ ݫ ݬ ݭ ݮ E ݰݵݱ ݲ ݳ ݴ Q& ݶ ݷ ݸ ݹ ~ ݻݼݽ ݾݿ       '                  E     Q&     ~         '         �      E      Q&     ~ H     1&!    " # $ % ' ',( ) * +  - . / 0 2=38 45 6 7 9 : ; < E >C? @ A B Q& D E F G ~ IJrK L M N`OU PQ R S T ' V[W X Y Z  \ ] ^ _ ag bc d e f E hmi j k l Q& n o p q ~ stuޤvލwނx} yz { | ~  ހ ށ ' ރވބ ޅ ކ އ  މ ފ ދ ތ ގޙޏޔ ސޑ ޒ ޓ ޕ ޖ ޗ ޘ E ޚޟޛ ޜ ޝ ޞ Q& ޠ ޡ ޢ ޣ ~ ޥ޼ަޱާެ ިީ ު ޫ ޭ ޮ ޯ ް ' ޲޷޳ ޴ ޵ ޶  ޸ ޹ ޺ ޻ ޽޾ ޿       E     Q&     ~       '               E     Q&     ~ *  �       '                   E  %! " # $ Q& & ' ( ) ~ +Z,C-8.3 /0 1 2 4 5 6 7 ' 9>: ; < =  ? @ A B DOEJ FG H I K L M N E PUQ R S T Q& V W X Y ~ [r\g]b ^_ ` a c d e f ' hmi j k l  n o p q s~ty uv w x z { | } E ߄߀ ߁ ߂ ߃ Q& ߅ ߆ ߇ ߈ ~ ߊߩߋߚߌߓߍߐߎ dߏ d ï dߑ dߒ d ï dߔߗߕ dߖ d  dߘ dߙ d dߛߢߜߟߝ dߞ d dߠ dߡ d r dߣߦߤ dߥ d dߧ dߨ d  dߪ߹߲߫߬߯߭ d߮ d  d߰ d߱ d ű d߳߶ߴ dߵ d Ʒ d߷ d߸ d Ʒ dߺ߻߾߼ d߽ d ƨ d߿ d d ` d d d  d d d ҉ d d d d d d d d d d Ʒ d d d  d d d  d d d d d d d d d s d d d d d d ƙ d d d  d d d  d d d d� d d  d d d V d"   d d š d d d d d d d d d  d d d d ƨ d d d d d! d ï d#2$+%(& d' d ï d) d* d d,/- d. d Z d0 d1 d z d3:475 d6 d Z d8 d9 d k d;>< d= d G d? d@ dA dBbC šD šE šFTG š šH šI šJ šKL š šM šN šOP šQ š šRS š š šUV š šWX šY š šZ[ š\ š š] š^ š_` ša š š ( šc šdefg šh ši šj šk šl šm šno šptq š šrs š š uxv Aw A ( Ay A Az{ A| A} A~ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A š š š š š R š š š š š š š š š š š š š š š  š š š š š š š š š š š š š š  š š š š š š š š š š š š š š Bw;�  d d d i d  d d d d d d d d  d d d d d d d d d  d,%" d! d d# d$ d ï d&)' d( d d* d+ d d-4.1/ d0 d ˘ d2 d3 d y d586 d7 d  d9 d: d d<[=L>E?B@ dA d dC dD d ï dFIG dH d Z dJ dK d  dMTNQO dP d ű dR dS d ï dUXV dW d š dY dZ d ƨ d\h]a d^_ d` d ï dbec dd d  df dg d dipjmk dl d dn do d dqtr ds d r du dv d Z dxyz{|} d~ d ˘ d d d Œ d d d y d d d d d d  d d d d d d d d d š d d d ï d d d d d d d d d ï d d d 7 d d d y d d d s d d d r d d d r d d d ï d d d = d d d d d d s d d d d d d d d d ï d d d  d d d d d d s d d d d d d ƨ d d d  d d d ` d d d ` d. d d d ƨ d� d d  d d d ï d  d d d Œ d  d d Z d d d d d d d d d d Ʒ d d d ƙ d '!$" d# d d% d& d s d(+) d* d 7 d, d- d Ʒ d/n0b18253 d4 d  d6 d7 d Z d9_: d; d< d= š> š? š@ šA šB š šCD š šEF šG šH šI šJ šK šL šM šN šO šP šQ šR šS š šT šU šV šW šXY š šZ[ š\ š] š š^ ( š` da d  dcgd de df d dhki dj d dl dm d G do{pwqtr ds d Z du dv d ï d dxy dz d i d|}~ d d i d d d ƨ d d d d d d ƨ d d d Ʒ d d d  d d d ï d d d d d d ƙ d d d d d d d d d Z d d d Ʒ d d d d d d Z d d d Z d d d Œ d d d ï d d d d d d d r d d d d d d d d d  d d d s d d d d d d  d d d 7 d d d :y d d d s d d d ƨ d d d d d d ƙ d� d d d d d Œ d d d  d d d Ʒ d   Q)M1" d d s d d d  d d d Œ d d! d Œ d#*$'% d& d s d( d) d d+., d- d d/ d0 d d2>3:475 d6 d d8 d9 d  d d;< d= d Œ d?F@CA dB d ï dD dE d  dGJH dI d ƨ dK dL d Ʒ dNjO^PWQTR dS d r dU dV d ï dX[Y dZ d  d\ d] d x d_f`ca db d y dd de d d dgh di d s dkzlsmpn do d à dq dr d Œ dtwu dv d dx dy d d{|} d~ d y d d d š d d d ` d d d s d d d  d d d s d d d s d d d d d d d  d d d  d d d z d d d d d d  d d d Z d d d  d d d i d d d d d d d d d d d d  d d d ï d d d d d d ˘ d d d s d d d š d d d d d d s d d d  d d d d d d d d d d d ƨ d d d d d d ï d�t1  d d Œ d d d Ʒ d  d d d d d d d d d d d r d d d d d y y! y" y# y$ y% y& y' y( y) y* y+ y, y- y. X/ X0 y X y2R3:475 d6 d Z d8 d9 d r d;O< d= d> d?A@ š A š šB šCD šE šF šG šH šI šJ šK šL šM š šN A šP dQ d dSmTjU dV dW dX ïY ï ïZ[ ï ï\] ï^ ï_ ï` ïa ïb ïc ï ïde ï ïfg ïh ïi ï S ïk dl d Ʒ dnqo dp d i dr ds d duvw~x{y dz d š d| d} d d d d  d d d d d d d d d Z d d d d d d ƨ d d d Z d d d ï d d d ` d d d d  d d d d d d d  d d d d d d d d d  d d d d d d d d d r d d d ܹ d d d Ʒ d d d Z d d d d  d d d d d d d d d  d d d  d d d d d d d  d d d d d d d d d d d d� d d  d d d d  d d  d d d Ʒ d d d Ʒ d d d d d d d Œ d" d d s d d! d d#&$ d% d d' d( d ƙ d*C+,l-M.=/6031 d2 d k d4 d5 d Z d7:8 d9 d s d; d< d d>F?C@ dA dB d dD dE d r dGJH dI d  dK dL d  dN]OVPSQ dR d s dT dU d y dWZX dY d  d[ d\ d > d^e_b` da d y dc dd d  dfig dh d dj dk d dmn}ovpsq dr d y dt du d dwzx dy d d{ d| d d~ d d ï d d d Z d d d  d d d d                    d d d     d d d d d ï d d d  d d d  d d d Z d d d d d d d d d d d d d d d ï d d d r d d d d d d ï d d d Œ d d d  d d d  d d d d d d  d d d ` d d d d d d  d d d d d� d i d!  d d ï d d d ˘ d  d d ƙ d d d d d d ƨ d d d  d d d ï d d d ï d"4#-$*% d& d' d ( ) א + d, d ƨ d.1/ d0 d d2 d3 d  d5<697 d8 d 6b d: d; d d=@> d? d dA dB d Z dDEFeGVHOILJ dK d dM dN d  dPSQ dR d  dT dU d dW^X[Y dZ d Z d\ d] d  d_b` da d ҉ dc dd d y dfugnhki dj d dl dm d  dorp dq d s ds dt d ` dv}wzx dy d d{ d| d r d~ d d d d d d d d d ƨ d d d  d d d d d d 7 d d d d d d Œ d d d š d d d š d d d Œ d d d s d d d d d d d d d r d d d d d d d� d d  d d d 7 d d d  d d d s d d d Ʒ d d d ` d d d d d d ƨ d d d d d d z d d d d d d z d d d d d d 7 d d d à d d d š d  d d d d d d  d d L d d d d d d z d d d ï d d d d s dB& #! d" d d$ d% d d'?( d) d* d+=,  -. / 0 1 2 3 4 5 6 7 8 9 : ; <   >  @ dA d  dCJDGE dF d dH dI d  dKNL dM d dO dP d dRSTUVWXrY\Z d[ d i d] d^ d_ d ` a bc d e f g h i  jk l m n o p q  st du dv d w x yz { | } ~             d d d d d d š š ( š d d  d d d ï d d d ƨ d d d ű d d d 6b d d d Z d d d s d d d d d d  d d d ` d d d ƨ d d d ï d d d r d d d s d d d ï d d d d d d s d d d  d d d d d d d d d d d d Ʒ d d d ï d d d  d d d š d d d  d d d d d d ï d�F'  d d d d d d d Ʒ d #  d d d d d d              ! " 9  d$% d& d ï d(7)0*-+ d, d  d. d/ d ƙ d142 d3 d  d5 d6 d r d8?9<: d; d d= d> d ƨ d@CA dB d = dD dE d dGyHjIcJ`K dL dM dN O  PQ R S T U V W X Y Z [ \ ] ^ _  a db d ï ddge df d  dh di d dkrlom dn d Z dp dq d ҉ dsvt du d š dw dx d s dz{|} d~ d d d d d d d d d d d d d  d d d  d d d d d d d d d dc d d  d d d d               6 6 6        6  d d à d d d d d d ï d d d  d d d s d d d ƨ d d d Ʒ d d d d                    d d d d d š d� d d s d  d d ï d d d d  d d d d d Z d1" d d d d d ï d d d ` d d! d Z d#*$'% d& d x d( d) d V d+., d- d à d/ d0 d  d2T3:475 d6 d  d8 d9 d d;>< d= d d? d@ dA dB C D E F G H I J K L M N O  PQ R  S | U\VYW dX d  dZ d[ d  d]`^ d_ d z da db d ddefugnhki dj d  dl dm d y dorp dq d  ds dt d dv}wzx dy d d{ d| d Z d~ d d Z d d d ҉ d d d ` d d d ` d d d d d d Z d d d d d d d d d  d d d s d d d ï d d d d d d G d d d Ʒ d d d d d d ï d d d r d d d  d d d d Œ d d d d V d d d d d d d d d 7 d d d d d d d d d d`$ d d d d d y d d d s d d d d d d d d d Z d� d d Œ d d d d  d d  d d d r d d d  d d d d d d s d d d d! d d d" d# d d%D&5'.(+) d* d  d, d- d  d/20 d1 d ï d3 d4 d  d6=7:8 d9 d r d; d< d  d>A? d@ d  dB dC d s dETFMGJH dI d dK dL d Z dNQO dP d ƨ dR dS d Œ dU\VYW dX d  dZ d[ d d d]^ d_ d dabcrdkehf dg d Z di dj d s dlom dn d dp dq d ï dsztwu dv d  dx dy d  d{~| d} d d d d ` d d d Z d d d d d d d Z d d d d d d ï d d d d d d ˘ d d d d d d ï d d d  d d d s d d d d d d s d d d Ʒ d d d y d d d Z d d d 7 d d d d  d d d d d d d d d d ս dE d d d d d d d d d d d s d d d  d d d ` d d d d d d d6/ d d d d �                X K K           ! "# $ % & ' ( ) * + , - . 031 d2 d s d4 d5 d  d7>8;9 d: d  d< d= d  d?B@ dA d dC dD d :y dFeGVHOILJ dK d ƙ dM dN d Z dPSQ dR d dT dU d ƨ dW^X[Y dZ d d\ d] d d_b` da d dc dd d L dfugnhki dj d dl dm d r dorp dq d ds dt d  dv}wzx dy d ï d{ d| d ï d~ d d  d d d ï d d d à d d d ï d d d d d d ï d d d ƙ d d d ƙ d d d ` d d d d d d d             K  d d d d d d d d r d d d s d d d x d d d d d d d d d  d d d d d d d d d  d d d ` d d d d d d s d d d Z d d d ƨ d d d d d d  d� d d d d d d   d d i d d d = d d d d d d ű dz*#  d d  d! d" d Z d$'% d& d r d( d) d š d+2,/- d. d  d0 d1 d  d3w4 d5 d6 d7L8 9: ; < =D > ? @ A B C < E F G H I JK <MN O P Q R S T UVf WX_Y HZ H[ H\ H] H H^ H ` Ha H Hb Hcd He H H g h i jp kl mno <q r su t v /x dy d y d{|}~ d d d d d r d d d ƨ d d d  d d d d                             X  d d d d d Ʒ d d d 7 d d d Ʒ d d d Œ d d d d d d ҉ d d d d d d d d d d d d s d d d d d d y d d d d   d d d d d d d d ` d d d ï d d d d d d d>�  d d à d d d d   d d d d d š d d d d d d d d d d d d d i d /!("%# d$ d  d& d' d Ʒ d),* d+ d d- d. d d07142 d3 d Ʒ d5 d6 d d8;9 d: d Z d< d= d Z d?m@OAHBEC dD d Z dF dG d dILJ dK d  dM dN d s dPWQTR dS d ` dU dV d  dX[Y dZ d d\ d] d^ d_ ` a b c d e f g h i j k l } novpsq dr d dt du d š dwzx dy d š d{ d| d} d~                                X X  K }  d d :y d d d d d d d d d s d- d d  d d d d d d ƨ d d d ƙ d d d ű d d d ƨ d d d d i d d d d d d s d d d d r d d d d d d d d d d d d d d d d d d d d d s d d d d� d d d d d d  d d Ʒ d d d  d d d d d d ` d d d x d d d d& #! d" d ` d$ d% d d'*( d) d r d+ d, d d.z/a0R18253 d4 d d6 d7 d Z d9<: d; d s d= d> d? d@ šA šB šC šD šE š šFG šH šI šJ šK šL šM šN šO šP šQ š SZTWU dV d y dX dY d d[^\ d] d d_ d` d dbncjdge df d ` dh di d à dk dl dm d dovpsq dr d Ʒ dt du d ` dw dx dy d 7 d{|}~ d d d d d Œ d d d s d d d d d d d d d s d d d ` d d d  d d d  d d d  d d d d d d ƨ d d d x d d d š d d d d š š š š š š š š š š š A d d i dJ d d d š š š š š š š š š š š A d d ƨ d d d  d d d d d d ` d d d  d d d ï d d d à d d d d d d š d d d ˘ d� d d š d  d d Ʒ d d d d  d d Ʒ d d d Ʒ d." d d Z d d d Ʒ d d d ï d d! d ` d#*$'% d& d Z d( d) d ű d+ d, d- d y d/;04 d12 d3 d d586 d7 d ƨ d9 d: d d<C=@> d? d ƨ dA dB d y dDGE dF d  dH dI d dKLkM_NUORP dQ d dS dT d  dVYW dX d ƙ dZ d[ d\ d] d^ d d`gadb dc d de df d ƨ dh di dj d > dl{mtnqo dp d dr ds d Ʒ duxv dw d ï dy dz d ï d|} d~ d d  d d d d d d ` d d d Z d d d d d d d                 ł d d ï d d d y d d d ƨ d d d Z d d d ƨ d d d d d d d d d d d d ï d d d Ʒ d d d ƨ d d d ` d d d ƙ dV d d  d d d y d d d  d d d y d d d d d d y d d d ï d d d Ʒ d  d� d ` d d d d d d i d d d  d   d d ï d d d d d d d d d ` d7+$! d d ï d" d# d ` d%(& d' d Ʒ d) d* d ï d,3-0. d/ d d1 d2 d  d4 d5 d6 d d8G9@:=; d< d d> d? d s dADB dC d Ʒ dE dF d  dHOILJ dK d s dM dN d i dPSQ dR d ƨ dT dU d  dWXwYhZa[^\ d] d ï d_ d` d Z dbec dd d ű df dg d  dipjmk dl d  dn do d [ dqtr ds d du dv d dxyz}{ d| d d~ d d  d d d ï d d d r d d d Ʒ d d d  d d d d d d < d d d  d d d š d d d d d d d d d y d d d  d d d ` d d d d d d d d d s d d d d d d ` d d d d ` d d d  d d d r dT d d ï d d d d d d i d d d  d d d s d d d d d d d d d d s d d d Œ d� d d  d d d s d  d d i d d d d  d d ƨ d d d ï d5# d d ƨ d d d Z d  d d Z d! d" d d$.%(& d' d d) d* d+ d, d- d y d/20 d1 d d3 d4 d à d6E7>8;9 d: d x d< d= d x d?B@ dA d ï dC dD d  dFMGJH dI d à dK dL d y dNQO dP d dR dS d dUVuWfX_Y\Z d[ d Z d] d^ d d`ca db d s dd de d  dgnhki dj d Z dl dm d Ʒ dorp dq d ds dt d i dvw~x{y dz d d| d} d d d d ï d d d ` d d d  d d d  d d d  d d d d d d ƙ d d d ` d d d y d d d s d d d  d d d ƙ d d d ` d d d k d d d d d d d d d  d d d ƙ d d d d d d ƨ d d d d d d s dW d d  d d d  d d d d d d Z d d d Z d d d d d d d d d d ` d d d  d d d ï d� d d y d  d d ս d d d d  d d i d d d y d1" d d ` d d d s d d d i d d! d ï d#*$'% d& d d( d) d r d+., d- d  d/ d0 d d2G3=475 d6 d d8 d9 d: d; ï ï< ï Dz>A? d@ d dB dC dD dE dF d r dHOILJ dK d ` dM dN d Z dPTQ dR dS d  dU dV d ű dXYuZi[b\_] d^ d  d` da d dcfd de d dg dh d y djn dkl dm d ` dorp dq d ű ds dt d  dvw~x{y dz d d| d} d d d d d d d d i d d d d d d ` d d d ˘ d d d  d d d ï d d d Z d d d d d d ï d d d d d d Z d d d r d d d d d d s d d d d d d Ʒ d d d s d d d ƨ d d d  d d d š dfH  d d d Z d d d ` d d d ï d d d d d d d d d r d d d Z d� d d ï d d d d d d d d d d d d d à d  d d d d d r d ) d d d d d d  d d d  d" d d ˘ d d! d d#&$ d% d s d' d( d  d*9+2,/- d. d ï d0 d1 d k d364 d5 d d7 d8 d  d:A;>< d= d d? d@ d ` dBEC dD d Ʒ dF dG d Z dI'JKLSMPN dO d ƙ dQ dR d dTU dV dW dX Y  Z[ \]^y_ ` ax bc d esfoglhj i sP  k u m n   Tgp q  r  ut u v w   o5 o z {|  }~    u      o5      tI        tI     tI        tI        s              o5      tI        tI      o5      tI            T  x                 i        o5  d d d d d š d d� d d d d d d d d    d d s d d d Œ d d d x d d d i d  d d s d d d d!$" d# d  d% d& d  d(G)8*1+., d- d d/ d0 d s d253 d4 d d6 d7 d d9@:=; d< d d> d? d r dADB dC d Ʒ dE dF d dHWIPJMK dL d š dN dO d dQTR dS d ű dU dV d  dX_Y\Z d[ d ` d] d^ d d`ca db d ï dd de d 7 dghijykrlom dn d ˘ dp dq d dsvt du d r dw dx d dz{~| d} d ` d d d d d d i d d d Z d d d Ʒ d d d i d d d s d d d s d d d d d d s d d d d d d Ʒ d d d ï d d d d d d d d d Ʒ d d d  d d d r d d d ï d d d d d d Z d d d d d d  d d d d d d  d d d  d d d  d d d ƨ dJ. d d y d d d d d d š d d d ƨ d'$ d d d�      6      ߡ       &    m     9 ! "# % d& d d(+) d* d d, d- d  d/;04 d12 d3 d ƨ d586 d7 d y d9 d: d s d<C=@> d? d x dA dB d r dDGE dF d dH dI d dKjL[MTNQO dP d ï dR dS d i dUXV dW d dY dZ d Ʒ d\c]`^ d_ d 7 da db d ddge df d ű dh di d š dkwlpm dn do d V dqtr ds d r du dv d 7 dxy|z d{ d Ʒ d} d~ d  d d d ű d d d r d d d d d d y d d d  d d d d d d d d d d d d d . d d d Z d d d d d d d ï d d d s d d d  d d d L d d d ` d d d r d d d ï d d d š d d d d d d r d d d ï d d d ƙ d d d d s d d d  d d d ï d d d d d d Œ d d d d s d d d s d d� d Z dA"   d d Ʒ d d d d  d d ï d d d z d d d  d d d s d d d Z d d! d r d#2$+%(& d' d ƨ d) d* d d,/- d. d  d0 d1 d d3:475 d6 d Œ d8 d9 d ï d;>< d= d d? d@ d r dBaCRDKEHF dG d ï dI dJ d y dLOM dN d ï dP dQ d ƨ dSZTWU dV d dX dY d 7 d[^\ d] d Ʒ d_ d` d ï dbcd~e df dg dh .irj k .l .m .n .o .p .q . .s .t .u .v . .wx .y|z{ ! 1 U .} . = . d d d d d d d d i d d d d d d I d d d d d d ` d d d ï d d d d d d  d d d  d d d G d d d ï d d d > d d d r d d d Z d d d d d d d š d d d d d d Ʒ d d d ` d d d Ʒ d d d i d d d d d d i d d d ï d d d d d d y d d d d d d ƨ d d d y d d d y d� d d d d d d   d d y d d d d d d d d\2# d d d d d ï d  d d s d! d" d Z d$+%(& d' d Z d) d* d s d,/- d. d à d0 d1 d Z d3M4;586 d7 d d9 d: d Ʒ d<J= d> d? d@ ŒA ŒB ŒC Œ ŒD ŒE ŒFG ŒH ŒI Œ ŒK dL d dNUORP dQ d dS dT d dVYW dX d dZ d[ d Ʒ d]g^X_Q`ca db d dd de df dghwi j k l mn o p q r sut Y v Ƴx y z { | } ~          4?  ƳP #  4?     4?   Y~      X Y~ 4?               4? X  X    Y     Y                Y     X  Y`  Y `  X X  � X )6 )6   X        )F )F )F )F )F )F )F 4? )F     4?  ! " 4?$ % &2' ( ) X* 7+ 7, 7- 7. 7/ 70 71 X 3 4E5 67>8 9 :; < = 4?? @ A BC D S FG H I J K L M NO 4? X RUS dT d Œ dV dW d Ʒ dY`Z][ d\ d ` d^ d_ d ï dadb dc d Z de df d Ʒ dhp dijmk dl d  dn do d s dqxrus dt d ï dv dw d r dy|z d{ d š d} d~ d Z d  d d ű d d d d d d  d d d r d d d d d d  d d d Œ d d d ƨ d d d ` d d d y d d d ï d d d d š š š š š š š š š š š š š š š š š š š k d d y d d d Œ d d d d d d š d d d Z d d d Œ d d d d d d d i d d d d d d s d d d d d d š d d d d d d d d� d 7 d d d d ƨ d  d d d d d  dA" d d d d d s d d d Z d d d Z d d! d  d#2$+%(& d' d d) d* d d,/- d. d Œ d0 d1 d d3:475 d6 d Z d8 d9 d d;>< d= d š d? d@ d dB^CODH dEF dG d dILJ dK d dM dN d s dPWQTR dS d dU dV d  dX[Y dZ d Z d\ d] d d_n`gadb dc d de df d Z dhki dj d s dl dm d dovpsq dr d dt du d s dwzx dy d y d{ d| d} d~                  r  d d d d d Ʒ d d d ï d d d r d d d  d d d 7 d d d d d d  d d d  d d d y d d d d d d d d d ƨ d d d d d d d y d d d  d d d  d d d ï d d d L d d d  d d d s d d d d d d d   Od  d d d d d  d d d  d d� d  d  d d ï d d d d   d d ` d d d 7 dS1" d d Z d d d V d d d y d d! d d#*$'% d& d ` d( d) d Z d+., d- d š d/ d0 d i d2D3=475 d6 d d8 d9 d: d; d< d E d>A? d@ d Z dB dC d dELFIG dH d dJ dK d ï dMPN dO d ʚ dQ dR d  dTsUdV]WZX dY d  d[ d\ d d^a_ d` d db dc d ï delfig dh d s dj dk d ï dmpn do d dq dr d s dtu|vyw dx d  dz d{ d ï d}~ d d  d d d d d d Z d d d d d d ˘ d d d Œ d d d y d d d Œ d d d d d d à d d d d Z d d d š d d d d d d Z d d d d d d ` d d d i d d d d š d d d d d d d d d d d d d d d ï d d d > d d d d d d ҉ d d d š d d d š d d d  d d d d d d ű d d d ï d� d d y d d d š d  d d  d d d dK,  d d  d d d š d d d r d d d  d!% d"# d$ d d&)' d( d d* d+ d ï d-<.5/20 d1 d r d3 d4 d  d697 d8 d d: d; d d=D>A? d@ d Z dB dC d Z dEHF dG d r dI dJ d Ʒ dLkM\NUORP dQ d ` dS dT d dVYW dX d Ʒ dZ d[ d 7 d]d^a_ d` d db dc d Z dehf dg d di dj d  dl{mtnqo dp d Z dr ds d š duxv dw d  dy dz d ƙ d|}~ d d s d d d k d d d d d d ս d d d  d d d Ʒ d d d  d d d Q d d d Œ d d d ƨ d d d d d d ï d d d  d d d d d d y d d d  d d d Z d d d d d d d Z d d d d d d  d d d d d d š d d d d ï d d d d s d d d Z d d d Ʒ d d d à d d d d d d s d d d x d d d  d d� d ï dF* d d d d   d d ï d d d r d d d ` d d d d d d  d d d d s s!" s s# s$ s%& s s' s( s) s+:,3-0. d/ d i d1 d2 d Ʒ d475 d6 d d8 d9 d V d;?< d= d> d d@CA dB d y dD dE d  dGeH\IPJMK dL d ï dN dO d  dQTR dS d  dU dV dW dXZ ŒY Œ ~[ Œ 4l Œ]a d^_ d` d db dc dd d x dfugnhki dj d dl dm d Z dorp dq d ds dt d s dv}wzx dy d s d{ d| d Z d~ d d š d d d r d d d d Œ d d d d d d d d d r d d d y d d d d d d d d d Z d d d  d d d d d d  d d d ƨ d d d Z d d d Z d d d Ʒ d d d d d d  d d d Œ d d d ï d d d d d d d d d  d d d  d� d d d  d d d d d L L L L L L L L L L L L L L L L L L  L d d  d d d x d   d d Z d d d  dO0$ d d d d d d d d r d d d! d" r r# 8 r%)& d' d( d ï d*-+ d, d ս d. d/ d d1@29364 d5 d Ʒ d7 d8 d d:=; d< d d> d? d Z dAHBEC dD d dF dG d  dILJ dK d dM dN d r dPoQ`RYSVT dU d ï dW dX d dZ][ d\ d d^ d_ d  dahbec dd d df dg d  dilj dk d  dm dn d Ʒ dpqxrus dt d dv dw d s dy|z d{ d  d} d~ d d d d d d d d d d x d d d d d d ƨ d d d d d d ҉ d d d y d d d Ʒ d d d d d d ï d d d  d d d Z d d d Œ d d d  d d d  d d d r d d d  d d d r d d d s d d d V d d d Z d d d s d d d y d d d y d d d d d d ƨ d d d s d d d  d d d s d d d s d d d  d�  d d d d d d d d Z d  d d Ʒ d d d i dQ2# d d d d d d  d d ` d! d" d  d$+%(& d' d  d) d* d  d,/- d. d  d0 d1 d s d3B4;586 d7 d r d9 d: d Z d<?= d> d  d@ dA d  dCJDGE dF d à dH dI d Z dKNL dM d š dO dP d  dRnS_TXU dV dW d  dY\Z d[ d Ʒ d] d^ d  d`gadb dc d de df d ˘ dhki dj d y dl dm d ï do{pwqtr ds d  du dv d ï dx dy dz d s d|}~ d d Z d d d i d d d ` d d d d + �* d d Z d d d d                                  s  d d š d d d d d d d Z d d d d d d Z d d d L d d d ű d d d s d d d ï d d d Z d d d ï d d d  d d d ˘ d  d d d d d s d d d  d d d Œ d� d d  d d d ï d d d d Z d   d d 7 d d d d d d Z d d d ƨ d#  d d  d! d" d  d$'% d& d V d( d) d d+j,N-<.5/20 d1 d > d3 d4 d  d697 d8 d Œ d: d; d ` d=D>A? d@ d i dB dC d š dEKF dG dH dI J 6 L dM d ƨ dO^PWQTR dS d  dU dV d ï dX[Y dZ d d\ d] d ƙ d_f`ca db d dd de d d dgh di d 7 dkl~mwnto dp dq dr ds d y du dv d dx{y dz d d| d} d s d d d ƨ d d d d d d r d d d Z d d d  d d d d d d d ` d d d ` d d d ` d d d ƙ d d d Œ d �  d d > d d d d d d d  d d d r d d d ˘ d d d š d d d i d d d d Ʒ d d d > d d d d d d ï d d d d d d s d d d Ʒ d d d W d � d d d d d r d d d d d d  d d d d d d d �� d d � � � � � � � d � d d � d � d ƨ d � � � d � d s d � d � d y d � � � � � d � d d � d � d V d � � � d � d ƙ d � d � d x d �! � �" �c �# �2 �$ �+ �% �( �& d �' d d �) d �* d  d �, �/ �- d �. d d �0 d �1 d š d �3 �\ �4 �7 �5 d �6 d > d �8 d �9 d �: d �; �< �= �> �? �@ �A �B �C �D �E �F �G �V �H �M �I �J �K �L �N �R �O �P �Q �S �T �U �W �X �Y �Z �[ �] �` �^ d �_ d Z d �a d �b d Ʒ d �d �s �e �l �f �i �g d �h d r d �j d �k d š d �m �p �n d �o d ` d �q d �r d  d �t �{ �u �x �v d �w d z d �y d �z d d �| � �} d �~ d ï d � d � d :y d � � � � � � � � � d � d Z d � d � d d � � � d � d  d � d � d d � � � � � d � d Z d � d � d d � � � d � d d � d � d y d � � � � � � � d � d d � d � d ˘ d � � � d � d d � d � d d � � � � � d � d d � d � d d � � � d � d d � d � d  d � , � B � � � � � � � � � � � d � d 7 d � d � d ï d � � � d � d Ʒ d � d � d . d � � � � � d � d d � d � d  d � � � d � d d � d � d d � � � � � � � d � d  d � d � d d � � � d � d d � d � d s d � � d � � d � d d � � � d � d  d � d � d  d  #        d  d  d  d  d d    d  d y d  d  d d      d  d ï d  d  d  d    d  d ` d  d  d  d ! d " d ƨ d $ 3 % , & ) ' d ( d ï d * d + d d - 0 . d / d i d 1 d 2 d ï d 4 ; 5 8 6 d 7 d ƨ d 9 d : d  d < ? = d > d d @ d A d d C  D  E T F M G J H d I d ű d K d L d Z d N Q O d P d Œ d R d S d š d U  V  W d X d Y d Z l [ š \ š ] š ^ š _ š ` š š a b š c š d š š e š f š g š h š i j š š k š m  n  o š p  q š r ~ s š t š u š v š w š x š y š z š { š | š š } A š  š  š  š  š (  (   (  ( (  (   ( (   š š  š   š  š š š  š  š  š  š  š  š  š  š  š  š    š  š   š 5R š  š  š  š š  š   š  š   š  š  š š  š   š  š  š š   š š   š š  š  š   š  š  š  š š   š  š š  š   š š  š  š B  d  d ï d    d  d d  d  d s d        d  d d  d  d i d    d  d r d  d  d d      d  d d  d  d d    d  d ` d  d  d Z d          d  d d  d  d Z d    d  d ï d  d  d Z d   �   d  d  d  d  d d    d  d š d  d  d s d        d  d  d  d  d i d    d  d  d  d  d d  %  "  d ! d  d # d $ d  d & ) ' d ( d ƨ d * d + d d -  . i / N 0 ? 1 8 2 5 3 d 4 d š d 6 d 7 d d 9 < : d ; d ï d = d > d s d @ G A D B d C d Z d E d F d n d H K I d J d  d L d M d ï d O ] P T d Q R d S d r d d U V d W d X d Y [ Z d d d \ % d ^ e _ b ` d a d  d c d d d ` d f d g d h d Z d j  k z l s m p n d o d  d q d r d  d t w u d v d d x d y d d {  |  } d ~ d r d  d  d Z d    d  d ` d  d  d r d        d  d d  d  d r d    d  d y d  d  d d      d  d  d  d  d d    d  d  d  d  d Z d            d  d d  d  d s d    d  d Z d  d  d  d  7   7 K 7 �      d  d Ʒ d  d  d  d    d  d d  d  d d        d  d  d  d  d  d    d  d Ʒ d  d  d x d      d  d  d  d  d  d    d  d d  d  d  d          d  d d  d  d ï d    d  d ` d  d  d s d     � d  d Z d  d  d  d    d  d š d  d  d  d        d  d d  d  d d    d  d  d  d  d d  $  !  d  d d " d # d d % ( & d ' d d ) d * d d ,  - / .  / k 0 L 1 = 2 6 3 d 4 d 5 d r d 7 : 8 d 9 d ï d ; d < d d > E ? B @ d A d Ʒ d C d D d Ʒ d F I G d H d  d J d K d ƙ d M \ N U O R P d Q d ` d S d T d ï d V Y W d X d G d Z d [ d d ] d ^ a _ d ` d d b d c d d e h f d g d ˘ d i d j d y d l  m | n u o r p d q d d s d t d ƙ d v y w d x d d z d { d š d }  ~   d  d  d  d  d d    d  d š d  d  d d        d  d d  d  d d    d  d Z d  d  d š d      d  d s d  d  d ï d    d  d d  d  d G d            d  d ܜ d  d  d Œ d    d  d x d  d  d  d      d  d Z d  d  d ï d    d  d ï d  d  d d        d  d  d d   d E d  d  d r d    d  d 7 d  d  d L d      d  d  d  d  d G d  d  d s d    d  d  d  d  d d          d  d Z d  d  d ï d    d  d r d  d � d ï d    d  d  d ƨ d    d  d ï d  d  d d     d   d  d d    d  d ű d  d  d  d  %    d  d d  d ! d " d # d $ d Œ d & , ' d ( d ) d * d + d Z d - d . d d 0 3 1 d 2 d d 4 v 5 T 6 E 7 > 8 ; 9 d : d ƨ d < d = d ƨ d ? d @ d A d B d C d D d )U d F M G J H d I d d K d L d ï d N Q O d P d ï d R d S d ï d U d V ] W Z X d Y d Z d [ d \ d  d ^ a _ d ` d ï d b d c d  d e l f i g d h d d j d k d ˘ d m p n d o d ï d q d r d s d t d u d r d w  x  y  z } { d | d š d ~ d  d  d  d  d ï d    d  d ï d  d  d ï d      d  d  d  d  d d  d  d Ʒ d d   d  d d        d  d ï d  d  d  d  d  d d    d  d d  d  d ï d      d  d s d  d  d  d    d  d d  d  d  d    B            d  d  d  d  d  d  d  d d    d  d s d  d  d :y d      d  d  d  d  d  d  d  d y d    d  d d  d  d Ʒ d      d  d  d d    d  d d  d  d ï d      d  d d  d  d  d    d  d ï d  d  d � d  d  d à d  #        d  d d  d  d ` d    d  d š d  d  d r d      d  d d  d  d ï d    d  d d ! d " d ï d $ 3 % , & ) ' d ( d  d * d + d  d - 0 . d / d ` d 1 d 2 d d 4 ; 5 8 6 d 7 d ƨ d 9 d : d ï d < ? = d > d ƨ d @ d A d à d C  D f E W F M G J H d I d ƨ d K d L d  d N Q O d P d d R d S d T d U d V d ` d X _ Y \ Z d [ d d ] d ^ d d ` c a d b d d d d e d ` d g { h r i o j d k d l d m d n d d p d q d š d s v t d u d d w d x d y d z d d |  }  ~ d  d Dz d  d  d ï d    d  d  d  d  d d  d  d  d          d  d  d  d  d s d  d  d d    d  d d  d  d ï d      d  d d  d  d  d  d  d  d  d  d  d G d      d  d  d  d  d  d y d    d  d d  d  d d      d  d Ʒ d  d  d r d d   d  d  d  d  d = d  R            d  d  d  d  d d  d  d  d  d  d d    d  d Ʒ d  d  d d    d  d  d  d    d  d ï d  d  d d     d   d  d d    d  d ƨ d  d � d  d   d   d  d  d  d  d d    d  d s d  d  d  d  d  d d  3  $      d  d d  d  d  d  !  d  d d " d # d d % , & ) ' d ( d d * d + d ï d - 0 . d / d d 1 d 2 d ï d 4 C 5 < 6 9 7 d 8 d d : d ; d ï d = @ > d ? d y d A d B d  d D K E H F d G d Ʒ d I d J d d L O M d N d d P d Q d d S  T v U d V ] W Z X d Y d Œ d [ d \ d r d ^ a _ d ` d  d b d c d ï d e o f l g d h d i d j d k d d m d n d d p s q d r d d t d u d  d w  x  y | z d { d d } d ~ d ï d    d  d Ʒ d  d  d d      d  d  d  d  d ƨ d  d  d Z d    d  d d  d  d  d  d  d d          d  d d  d  d d  d  d  d d    d  d  d  d    d  d d  d  d d        d  d d  d  d ƨ d    d  d d  d  d d      d  d s d  d  d d    d  d  d  d  d d  d  d d  >      d  d d  l  g  X  M    >  (        d  d  d    >  >  >  >  >  >  >  >  >  >  >  >  >  >  �     [ P <W P P  P <W  [  [ P [ >  >   >  >  > mz >  d  d d    d  d d  d  d d      d  d  d  d  d ƙ d  d  d d  %  d ! d " d # d $ d ï d & d ' d d ) 5 * 1 + . , d - d ï d / d 0 d d 2 d 3 d 4 d ï d 6 : 7 d 8 d 9 d d ; d < d = d r d ?  @  A E B d C d D d ï d F I G d H d y d J d K d L d M  N y O  P r Q l R  S  T f U d V c W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k z l s m p n o  oD oS ob q r oq o o o t w u v o o o o x y o o p p {  |  } ~ p* p9 pH pX   Tv pg pw p     p p p q   q q q T         r s s s!   s1 s@ sP s`     so s s    s s s s       s s T )_   s t t t+     t: tI tX th   tw t t t           t t t u   T  u u     u u u u   u v o5 v       v+ v: w w   w w/ w? wO     w_ wo w w   w w w w         T w w w   x x x+ x:     xI xX xg xu   x x N       x x x x   x x x y     y T )o y*   y8 yG yW yf  '           yu y y y   y y y y     y y z z   z. z= zL z\       zl {8 {G {W  � {f {u { {     { { { {   { { | |         | |/ |? |N   |^ |m |} Tg     | | | |   U- | | |       | } } }$   }3 }B }R }a ! $ " # )~ T }q } % & } } } } ( G ) 8 * 1 + . , - } } } } / 0 ~ ) T U� 2 5 3 4 ~ ~) ~8 ~G 6 7 ~V ~f ~u ~ 9 @ : = ; < ~ ~ ~ ~ > ? ~ ) _ o A D B C   E F H W I P J M K L  , ; J N O Z i w Q T R S T U U V X _ Y \ Z [   ! ] ^ 0 U ? N `  a b ^ n ~  y tI e  u Tg g i  h  o j k sP x U� T m   n o   p  q  o5 s   t u   v  w  x |  z  {  |  }  ~                        i      sP        u             o5      d  d r d  d  d d    d  d d  d  d y d        d  d ï d  d  d d    d  d ï d  d  d ˘ d   d   d  d  d  d  d G d    d  d ƨ d  d  d s d            d  d d  d  d  d  d  d s d    d  d d  d  d 7 d      d  d  d  d  d ï d    d  d ï d  d  d d        d  d  d  d  d ï d    d  d ï d  d  d d      d  d d  d � d d    d  d ƙ d  d  d Ʒ d +    d  d ï d  d  d ƨ d    d  d ï d  d  d d  !    d  d d  d d d " % # d $ d ï d & d ' d ( d ) d * d d , > - 7 . 1 / d 0 d ï d 2 d 3 d 4 d 5 d 6 d  d 8 ; 9 d : d r d < d = d  d ? F @ C A d B d  d D d E d d G J H d I d ï d K d L d ƨ d N O P { Q ` R Y S V T d U d d W d X d 65 d Z ] [ d \ d ï d ^ d _ d  d a h b e c d d d ï d f d g d d d i j d k d l d m n o p q r s t u v w x y z ł | } ~  d d ï d d d d d d ï d d d d d d d d d ƙ d d d Z d d d d d d ƙ d d d d d d d d d s d d d d d d d d d d d ï d d d d d d  d d d š d d d d d d 7 d d d d d d d d  d d ï d d d d d d y d d d d d d  d d d ƨ d d d ï d d d r d d d d d d d  � d d ï d  d  d ï d    d  d š d  d d d   d  d x d  d  d  d  d  d 7 d  d  d  d  d  6  *  #   d  d d ! d " d d $ ' % d & d Œ d ( d ) d Z d + / d , - d . d  d 0 3 1 d 2 d d 4 d 5 d d 7 F 8 ? 9 < : d ; d ï d = d > d ƨ d @ C A d B d š d D d E d d G N H K I d J d Z d L d M d > d O R P d Q d d S d T d U d V d W d 7 d Y w Z [ \ { ] l ^ e _ b ` d a d ï d c d d d d f i g d h d r d j d k d d m t n q o d p d Q d r d s d d u x v d w d d y d z d  d | } ~  d d  d d d d d d d d d d d d d d d ƨ d d d ï d d d Ʒ d d d ƨ d d d  d d d ï d d d d d d Z d d d d d d V d d d d ƨ d d d Z d d d d d d ҉ d d d Œ d d d d d d Z d d d d 4 d d Z d d d ƨ d d d ˘ d 8   d d š d d d k d  d � d ű d  d  d  d  d  d Z d   d d d d  d  d  d  d  d ï d  #      d  d ` d  d  d Œ d   d  d ï d ! d " d d $ . % ( & d ' d Z d ) d * d + d , d - d Z d / 2 0 d 1 d d 3 d 4 d 5 d 6 d 7 d i d 9 X : I ; B < ? = d > d d @ d A d  d C F D d E d ï d G d H d x d J Q K N L d M d ï d O d P d Ʒ d R U S d T d s d V d W d  d Y h Z a [ ^ \ d ] d ` d _ d ` d d b e c d d d d f d g d s d i p j m k d l d  d n d o d d q t r d s d ï d u d v d d x y z { | } ~ d  d d d d Œ d d d Z d d d d s d d d d d d ï d d d ï d d d d d d G d d d d d d d ï d d d ï d d d Z d d d ï d d d d d d ï d d d ƙ d d d d d d ƙ d d d ï d d d Z d d d ï d d d y d d d  d d d d d d Z d d d Z d d d ï d d d d d d š d d d ï d d d 6b d d d d ï d .   d � d  d d    d  d ƨ d  d  d d   d d ï d  d  d d d   d  d d  "      d  d  d  d  d d  d d ! d ï d # ' d $ % d & d Œ d ( + ) d * d ƨ d , d - d x d / K 0 ? 1 8 2 5 3 d 4 d  d 6 d 7 d d 9 < : d ; d ï d = d > d s d @ D A d B d C d ï d E H F d G d ƨ d I d J d Z d L [ M T N Q O d P d  d R d S d s d U X V d W d i d Y d Z d ï d \ ` d ] ^ d _ d d a d b d c d ï d e d f d s d h  i q j k l m | n u o r p d q d ï d s d t d d v y w d x d ƙ d z d { d d } ~  d d ï d d d ï d d d d d d ï d d d ƙ d d d d d d r d d d ï d d d d d d ï d d d s d d d d d d Z d d d d d d d ƨ d d d ï d d d Z d d d ƨ d d d ï d d d  d d d d d d Z d d d  d d d ƨ d d d ï d d d d d d ï d d d d d d ï d d d d 8   d d  d d d d d d  d  d � d  d  d  d d  d  d d   d d ƨ d d  d Œ d  d  d  d  d  d  d ï d  &      d  d ï d  d  d d # ! d " d ï d $ d % d < d ' 1 ( . ) d * d + d , d - d Z d / d 0 d d 2 5 3 d 4 d ï d 6 d 7 d š d 9 X : F ; ? < d = d > d = d @ C A d B d ï d D d E d ï d G N H K I d J d ï d L d M d ï d O R P d Q d ï d S d T d U d V d W d r d Y e Z ^ d [ \ d ] d d _ b ` d a d ï d c d d d d f m g j h d i d ï d k d l d d d n o d p d d r s t u v } w z x d y d d { d | d d ~  d d d d d d d d d d d  d d d d d d Z d d d  d d d ï d d d d d d ï d d d s d d d r d d d d d d d d d d ï d d d ï d d d d d d Z d d d <u d d d i d d d ï d d d d d d d d d d d d d d d d d d d d d d  d d d ï d d d Ʒ d d d ` d d d d =    d d  d � d  d > d    d  d d  d  d  d  d  d k d      d  d ï d  d  d Z d    d  d š d  d  d d  .  $  !  d  d s d " d # d d % + & d ' d ( d ) d * d ï d , d - d ï d / 6 0 3 1 d 2 d k d 4 d 5 d ƨ d 7 : 8 d 9 d s d ; d < d d > ] ? K @ D d A B d C d ƙ d E H F d G d d I d J d d L V M S N d O d P d Q d R d ` d T d U d n d W Z X d Y d  d [ d \ d s d ^ p _ f ` c a d b d d d d e d i d g j h d i d d k d l d m d n d o d Z d q x r u s d t d Z d v d w d ű d y | z d { d  d } d ~ d  d  p              d  d ï d  d  d  d    d  d ƨ d  d  d Ʒ d    d  d  d ˘ d    d  d s d  d  d  d        d  d  d  d  d s d    d  d ï d  d  d s d      d  d d  d  d x d  d  d  d Z d          d  d ï d  d  d d    d  d 7 d  d  d  d      d  d ï d  d  d ˘ d    d  d ï d  d  d  d  d  d  d     d   d  d d    d  d à d  d  d d   d   d  d s d    d  d ï d  d  d G d  1          d  d ï d � d  d Z d d   d  d z d      d  d ï d  d  d > d    d  d Z d  d  d Z d  "   d   d  d Ʒ d    d  d L d  d ! d d # * $ ' % d & d ï d ( d ) d d + . , d - d š d / d 0 d G d 2 T 3 ? 4 ; 5 8 6 d 7 d ï d 9 d : d s d d < = d > d d @ J A D B d C d  d E d F d G d H d I d x d K Q L d M d N d O d P d d R d S d ï d U d V ] W Z X d Y d s d [ d \ d :y d ^ a _ d ` d d b d c d :y d e i d f g d h d y d j m k d l d d n d o d  d q  r  s  t  u y d v w d x d Ʒ d z } { d | d = d ~ d  d  d  d  d s d      d  d d  d  d Z d    d  d d  d  d d        d  d ƨ d  d  d d    d  d  d  d  d ï d  d  d ƙ d      d  d ƨ d  d  d Z d    d  d  d  d  d  d       d   d  d  d  d  d i d    d  d d  d  d d      d  d ƨ d  d  d  d    d  d ï d  d  d s d      d  d  d d    d  d ï d  d  d ï d   d   d  d ƙ d    d  d ï d  d  d š d  *          d  d ï d  d  d d    d  d ï d  d  d y d �     d  d d  d  d d    d  d ï d  d  d ï d        d  d ï d  d  d ï d    d  d ï d  d  d G d  #  d ! d " d ƨ d $ ' % d & d ï d ( d ) d ï d + P , > - 7 . 1 / d 0 d ƨ d 2 d 3 d 4 d d 5 6 $e  d 8 ; 9 d : d ï d < d = d ƨ d ? I @ C A d B d ï d D d E d F d G d H d L d J M K d L d i d N d O d Z d Q c R Y S V T d U d ï d W d X d d Z ] [ d \ d  d ^ d _ d ` d a d b d Z d d h d e f d g d d d i j d k d ` d m j n  o  p  q  r  s  t { u x v d w d ï d y d z d d |  } d ~ d Ʒ d  d  d d      d  d ï d  d  d d  d  d  d d        d  d ƨ d  d  d  d  d  d > d    d  d š d  d  d d      d  d ï d  d  d Z d    d  d  d                    d  d s d          d  d  d  d  d ï d    d  d  d  d  d  d  d  d d      d  d ï d  d  d L d    d  d d  d  d  d  d  d d        d  d ï d  d  d ï d  d  d  d  d      d  d d  d  d Z d    d  d ƨ d  d  d  d  ;       �   d  d ï d  d  d  d    d  d  d  d  d ï d  d  d d    d  d  d d    d  d ï d  d  d d  ,  %  "  d ! d ƨ d # d $ d ï d & ) ' d ( d ï d * d + d d - 4 . 1 / d 0 d  d 2 d 3 d Z d 5 8 6 d 7 d ï d 9 d : d ï d < [ = L > E ? B @ d A d d C d D d Z d F I G d H d ï d J d K d s d M T N Q O d P d s d R d S d  d U X V d W d ï d Y d Z d s d \ v ] o ^ a _ d ` d ï d b d c d d d e f g h i j k l m n j p s q d r d ï d t d u d  d w ~ x { y d z d ï d | d } d ï d    d  d ï d  d  d d              d  d Ʒ d  d  d ` d    d  d d  d  d ` d      d  d ï d  d  d d    d  d  d  d  d d  d  d ï d        d  d ƨ d  d  d d    d  d d  d  d  d      d  d ï d  d  d d    d  d ï d  d  d  d          d  d G d  d  d  d ï    Dz ï ï Dz    d  d ï d  d  d i d      d  d ï d  d  d ï d    d  d ` d  d  d d        d  d ï d  d  d ï d    d  d Œ d  d  d ï d     � d  d ï d  d  d d    d  d  d  d  d d  _  0        d  d ï d  d  d d    d  d ï d  d  d d  )  & ! d " d # d $ d % d V d ' d ( d d * - + d , d ï d . d / d d 1 @ 2 9 3 6 4 d 5 d s d 7 d 8 d r d : = ; d < d ï d > d ? d d A H B E C d D d ï d F d G d d d I J d K d L d M N O P Q R S T U V W X Y Z [ \ ] ^ `  a p b i c f d d e d r d g d h d d j m k d l d d n d o d d q x r u s d t d ƨ d v d w d d y | z d { d ï d } d ~ d d        d  d  d  d  d  d  d  d d    d  d ï d  d  d  d  d  d š d      d  d r d  d  d š d    d  d V d  d  d d    %            d  d  d  d  d d    d  d L d  d  d ű d      d  d ï d  d  d  d    d  d s d  d  d z d        d  d ï d  d  d :y d    d  d Z d  d  d d      d  d  d  d  d y d  d  d d    d  d ƙ d  d  d d          d  d > d  d  d d d   d  d ï d      d  d ï d  d  d d �   d  d Z d  d  d d        d  d ï d  d  d  d  d  d d    d  d 7 d  d  d d   d   d  d s d  "  d ! d d # d $ d  d & h ' F ( 7 ) 0 * - + d , d ï d . d / d ï d 1 4 2 d 3 d ï d 5 d 6 d  d 8 ? 9 < : d ; d Z d = d > d x d @ C A d B d ï d D d E d ï d G Y H O I L J d K d ï d M d N d 7 d P V Q d R d S d T d U d  d W d X d ï d Z a [ ^ \ d ] d d _ d ` d d b e c d d d d f d g d Ʒ d i  j | k u l o m d n d Ʒ d p d q d r d s d t d Œ d v y w d x d d z d { d ï d }  ~   d  d ` d  d  d ï d  d  d  d s d        d  d ï d  d  d x d    d  d > d  d  d ƙ d      d  d d  d  d G d    d  d ï d  d  d d  +            d  d ï d  d  d d    d  d  d  d  d  d  d  d d      d  d ï d  d  d ï d    d  d  d  d  d 7 d        d  d d  d  d  d    d  d d  d  d Z d      d  d d  d  d  d d   d  d ï d          d  d d  d  d Z d    d  d à d  d  d ս d      d  d Ʒ d  d � d d    d  d Z d  d  d s d        d  d d  d  d Z d    d  d ï d  d  d ` d      d  d ƨ d  d  d  d ! % " d # d $ d ƙ d & d ' d ( d ) d * d G d ,  - L . = / 6 0 3 1 d 2 d d 4 d 5 d ï d 7 : 8 d 9 d d ; d < d s d > E ? B @ d A d  d C d D d d F d G d H d I d ï J ï K ï Dz M | N U O R P d Q d d S d T d ï d V Y W d X d ï d Z d [ d \ d ] š ^ š _ š ` š a š b š c š d š e š f u g š h š i o š j k š l š m š š n š > p š q š r š s š t š < š v š w š x š y š z š { š 5 š }  ~   d  d ï d  d  d 6 d    d  d Z d  d  d d          d  d ï d  d  d :y d d   d  d  d      d  d  d  d  d ï d  d  d d  d  d  d ï d  X  N    d  d  d  d  d d  d  d  d  V  V  V  V     V   V  V   V   V V   V  V  V  V  V ) V  V  F  F  F F   F  F  F 7 F V   V   V  V ć    V  V  V  V V ć  V  V    V V e  V V   V  V  V F V  V  V    V V  ć V  V  V V  e   e e  e  e   e e  e   1  #  e  e    e  e  e �   e  e e   e  e  e e F  e e   e  e e   e e (   e  e   e  e  e e  e   e  e e F e  e  e  e   e  e e  e ! e " 7 e $ e e % e & e ' ( e ) e e * e + e , - e . e / e e 0 e F 2 @ 3 e e 4 e 5 6 e e 7 e 8 9 e : e ; e e < = e > e ? e ć e A e B e e C D e e E F e G e H e I e e J K e L e M e e F O R P d Q d x d S d T d U d V d W d Œ d Y ` Z ] [ d \ d ï d ^ d _ d ƨ d a g b d c d d d e d f d d h d i d d k j l \ m  n  o  p y q u r d s d t d ï d d v w d x d d z  {  | d } d ~ d  d  d d  d  d  d  d  d ï d    d  d d  d  d s d        d  d  d  d  d  d d   d  d  d      d  d ï d  d  d ï d    d  d ï d  d  d s d        d  d  d  d    d  d ï d  d  d ï d      d  d > d  d  d  d  d  d d    d  d  d  d  d d  d  d d     d   d  d d    d  d d  d  d Z d      d  d ï d  d  d d    d  d ï d  d  d ï d  &       d   d  d > d    d  d d  d  d d    �  d  d  d  d  d ƙ d  d  d d    d  d  d  d  d Œ d  d  d  d      d  d  d Z d  d  d  d :y d      d  d ï d  d  d ï d  # ! d " d Œ d $ d % d d ' C ( 7 ) 0 * - + d , d ï d . d / d d 1 4 2 d 3 d  d 5 d 6 d s d 8 < d 9 : d ; d L d = @ > d ? d Ʒ d A d B d d D M E I d F G d H d d d J K d L d  d N U O R P d Q d ï d S d T d d V Y W d X d r d Z d [ d ƨ d ]  ^  _ ~ ` o a h b e c d d d ï d f d g d  d i l j d k d  d m d n d d p w q t r d s d ï d u d v d ï d x { y d z d d | d } d ű d        d  d d  d  d  d  d  d  d    d  d  d  d  d ï d      d  d ï d  d  d d    d  d  d  d  d d          d  d y d  d  d ï d    d  d > d  d  d ˘ d      d  d ƨ d  d  d d    d  d Ʒ d  d  d d        d  d ï d  d  d d    d  d  d  d  d  d  d  d d      d  d ï d  d  d d    d  d ï d  d  d d  %          d  d d  d  d ƙ d    d  d r d  d  d ƨ d      d  d ï d  d  d d  �  d  d x d  d  d  d  d  d > d        d  d ï d  d  d ï d    d  d ƨ d  d  d d      d  d ï d  d  d  d  "  d ! d š d # d $ d ƨ d & E ' 6 ( / ) , * d + d 8 d - d . d  d 0 3 1 d 2 d š d 4 d 5 d d 7 > 8 ; 9 d : d ï d < d = d d ? B @ d A d V d C d D d Z d F [ G Q H K I d J d ï d L d M d N d O d P d d R X S d T d U d V d W d d Y d Z d Z d \ c ] ` ^ d _ d ƨ d a d b d d d g e d f d x d h d i d  d k  l  m  n  o  p z q t r d s d ï d u d v d w d x d y d  d { ~ | d } d d  d  d d      d  d r d  d  d V d    d  d d  d  d d        d  d r d  d  d  d    d  d ` d  d  d ï d      d  d ï d  d  d d    d  d ï d  d  d ï d       d   d  d d    d  d ƙ d  d  d  d  d  d d      d  d ƨ d  d  d Z d    d  d ï d  d  d ï d        d  d ƨ d  d  d Z d    d  d d  d  d s d      d  d ï d  d  d  d    d  d ï d  d  d Ʒ d  W  5  �      d  d ƨ d  d  d Z d    d  d š d  d  d s d      d  d ï d  d  d  d  d  d 7 d    d  d d  d  d  d               ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 6 H 7 A 8 > 9 d : d ; d < d = d d ? d @ d d B E C d D d d F d G d d I P J M K d L d ï d N d O d d Q T R d S d 7 d U d V d ս d X z Y h Z a [ ^ \ d ] d r d _ d ` d  d b e c d d d Z d f d g d s d i p j m k d l d ï d n d o d  d q t r d s d  d u d v d w d x d y d d {  |  }  ~ d  d Ʒ d  d  d  d    d  d d  d  d d    d  d  d ï d    d  d ï d  d  d 6 d              d  d ï d  d  d r d    d  d d  d  d d      d  d ï d  d  d  d    d  d L d  d  d 6 d        d  d Z d  d  d  d    d  d Ʒ d  d  d d  d    d  d ï d  d  d ƨ d          d  d  d  d  d  d  d  d  d    d  d ƨ d  d  d d      d  d ï d  d  d > d    d  d d  d  d  d  d  d s d        d  d ï d  d  d ï d � d  d  d ï d      d  d š d  d  d i d    d  d ï d  d  d Z d  U  3  '    d  d  d ï d  !  d  d  d  d  d ï d " d # d $ d % d & d G d ( , ) d * d + d ï d - 0 . d / d Z d 1 d 2 d 6 d 4 F 5 < 6 9 7 d 8 d ï d : d ; d d = @ > d ? d ƨ d A d B d C d D d E d r d G N H K I d J d d L d M d  d O R P d Q d ï d S d T d d V r W f X _ Y \ Z d [ d r d ] d ^ d d ` c a d b d d d d e d d g n h k i d j d d l d m d d o d p d q d Z d s  t { u x v d w d i d y d z d ƙ d |  } d ~ d d  d  d ï d      d  d d  d  d  d  d  d Z d d   d  d s d  ,  "        %            d  d s d  d  d š d    d  d ï d  d  d  d      d  d Ʒ d  d  d d    d  d d  d  d Z d        d  d d  d  d  d    d  d d  d  d  d  d  d  d      d  d Z d  d  d ï d    d  d  d  d  d  d  d  d 7 d          d  d  d  d  d ï d  d  d d    d  d ` d  d  d  d  d  d d      d  d  d  d  d d  �  d  d d  d  d d        d  d  d  d  d  d    d  d d  d  d 6 d      d  d  d  d  d  d  d  d d  "  d ! d ï d # d $ d x d & f ' F ( : ) 0 * - + d , d 7 d . d / d ï d 1 7 2 d 3 d 4 d 5 d 6 d Z d 8 d 9 d d ; B < ? = d > d ` d @ d A d r d C d D d E d ï d G Z H S I O J d K d L d M d N d š d P d Q d R d ï d T W U d V d d X d Y d d [ _ \ d ] d ^ d Z d ` c a d b d d d d e d ï d g  h w i p j m k d l d d n d o d  d q t r d s d ` d u d v d Œ d x  y | z d { d š d } d ~ d  d  d  d s d    d  d Z d  d  d d        d  d ï d  d  d  d  d  d Ʒ d    d  d  d  d  d ï d      d  d ï d  d  d  d  d  d d  d  d  d Œ d  .            d  d Œ d  d  d š d    d  d š d  d  d r d      d  d d  d  d d    d  d d  d  d . d        d  d s d  d  d d    d  d d  d  d  d  d  d d      d  d s d  d  d š d    d  d  d  d  d d       d   d  d d    d  d d  d  d Œ d     � d  d s d  d  d Z d    d  d Z d  d  d š d        d  d d  d  d d    d  d d  d  d  d  d  d Ʒ d  ' ! $ " d # d ҉ d % d & d s d ( + ) d * d r d , d - d  d / q 0 R 1 C 2 < 3 9 4 d 5 d 6 d 7 d 8 d d : d ; d d = @ > d ? d  d A d B d ҉ d D K E H F d G d 4 d I d J d 7 d L O M d N d Z d P d Q d d S _ T X U d V d W d ˘ d Y \ Z d [ d Ʒ d ] d ^ d y d ` g a d b d c d ï d e d f d ƙ d h k i d j d Z d l d m d n d o d p d d r  s  t { u x v d w d r d y d z d d |  } d ~ d Z d  d  d Z d      d  d  d  d  d  d  d  d  d  d  d d    d  d d  d  d à d        d  d d  d  d  d  d  d s d    d  d d  d  d  d  d d      d  d i d  d  d  d    8  8    d  d ï d  d  d  d    Q            d  d d  d  d d    d  d  d  d  d  d      d  d ï d  d  d  d    d  d y d  d  d Z d        d  d y d  d  d Ʒ d    d  d x d  d  d d    d  d  d  d Ʒ d  �  d  d  d  d  d d  d  d d  ,        d  d  d  d  d i d  d  d  d  d  d ` d    d  d s d  d  d ` d  %  "  d  d  d  d ! d 7 d # d $ d ï d & ) ' d ( d Z d * d + d d - 9 . 2 d / 0 d 1 d  d 3 6 4 d 5 d  d 7 d 8 d d : > ; d < d = d d ? K @ d A d B d C Œ D Œ E Œ F Œ Œ G H Œ I Œ Œ J Œ ~ L d M d N d O d P d s d R  S o T ` U \ V Y W d X d ҉ d Z d [ d d d ] ^ d _ d d a h b e c d d d  d f d g d d d i j d k d l d m d n d x d p  q { r x s d t d u d v d w d 7 d y d z d Z d |  } d ~ d ˘ d  d  d  d  d  d d      d  d  d  d  d d  d  d ï d    d  d ˘ d  d  d  d  d  d  d          d  d $e d  d  d V d    d  d d  d  d s d   d   d  d  d    d  d  d  d  d Z d        d  d ƙ d  d  d d    d  d ï d  d  d 7 d      d  d d  d  d  d  d  d d    d  d Z d  d  d ` d  Q            d  d  d  d  d d  d  d ï d    d  d  d  d  d  d      d  d Œ d  d  d  d    d  d x d  d  d 7 d   �  d   d  d  d  d  d ű d    d  d Ʒ d  d  d ` d      d  d  d  d  d r d    d  d d  d  d x d  8  ,  $ ! d " d # d i d % ( & d ' d s d ) d * d + d Œ d - 1 . d / d 0 d Œ d 2 5 3 d 4 d d 6 d 7 d x d 9 H : A ; > < d = d  d ? d @ d r d B E C d D d Ʒ d F d G d k d I M d J K d L d Œ d d N O d P d Ʒ d R  S o T ` U \ V Y W d X d d Z d [ d d d ] ^ d _ d L d a e b d c d d d d f l g d h d i d j d k d à d m d n d d p  q { r u s d t d d v d w d x d y d z d Ʒ d |  } d ~ d i d  d  d d      d  d  d  d  d d  d  d d    d  d d  d  d  d          d  d  d  d  d ï d  d  d ` d    d  d d  d  d  d      d  d  d  d  d  d  d  d d    d  d d  d  d  d  d  d Œ d        d  d d  d  d ` d  d  d  d i d      d  d  d  d  d d  d  d  d  d  d š d    d  d  d  d  d  d  d  d  d  d  d G d  L      +          d  d G d  d  d d    d  d  d  d  d r d  d  d ` d     � d  d d  d  d i d    d  d ï d  d  d s d        d  d x d  d  d  d    d  d d  d  d s d  $  !  d  d  d " d # d ű d % ( & d ' d d ) d * d d , b - ? . 8 / 2 0 d 1 d  d 3 d 4 d 5 d 6 d 7 d r d 9 < : d ; d s d = d > d 7 d @ [ A D B d C d d E d F d G d H I J K L M N O P Q R S T U V W X Y Z 65 ł  \ _ ] d ^ d d ` d a d d c r d k e h f d g d  d i d j d r d l o m d n d s d p d q d ` d s z t w u d v d š d x d y d d { ~ | d } d ï d  d  d 7 d            d  d d  d  d  d    d  d ï d  d  d d      d  d d  d  d ƨ d    d  d  d  d  d š d        d  d  d  d  d d    d  d Ʒ d  d  d Ʒ d      d  d à d  d  d Z d    d  d ` d  d  d š d          d  d  d                                     $   d  d  d  d  d z d    d  d d  d  d  d  d  d d      d  d ï d  d  d  d  d  d Z d    d  d d  d  d  d     �   d  d ` d  d  d d    d  d d  d  d  d      d  d y d  d  d  d  d  d ï d    d  d  d  d  d s d   ! y " D # 5 $ . % ( & d ' d  d ) d * d + d , d - d d / 2 0 d 1 d  d 3 d 4 d Z d 6 = 7 : 8 d 9 d Z d ; d < d d > A ? d @ d d B d C d d E W F P G M H d I d J d K d L d Œ d N d O d à d Q T R d S d d U d V d  d X _ Y \ Z d [ d d ] d ^ d d ` c a d b d d d d e d f d g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  3  z  {  |  }  ~ d  d i d  d  d d    d  d ï d  d  d d      d  d s d  d  d ` d    d  d d  d  d š d        d  d d  d  d  d  d  d r d    d  d ï d  d  d Œ d      d  d d  d  d d    d  d  d  d  d d  d  d d            d  d  d  d  d  d  d  d  d    d  d d  d  d ï d      d  d ï d  d  d d    d  d  d  d  d d        d  d Œ d  d  d d    d  d Z d  d  d  d  d  d s d      d  d k d  d  d š d    d � d s d  d  d ï d  '      d d d d d y d    d  d  d  d  d ï d     d  d  d  d  d y d  d  d i d ! $ " d # d d % d & d  d ( : ) 3 * - + d , d d . d / d 0 d 1 d 2 d 7 d 4 7 5 d 6 d ` d 8 d 9 d  d ; E < ? = d > d d @ d A d B d C d D d r d F I G d H d ` d J d K d d M !f N O P l Q ] R V d S T d U d š d W Z X d Y d ï d [ d \ d  d ^ e _ b ` d a d  d c d d d  d f i g d h d Z d j d k d ƨ d m n x o u p d q d r d s d t d d v d w d s d y | z d { d d } d ~ d  d d d d d d  d d d š d d d Œ d d d d d d  d d d d d d d  d d d ƙ d d d d d d d d d r d d d d d d  d d d d d d s d d d d d Z d d d d d d d d d š d d d x d d d Œ d d d d !! d d d d d d d d d d d d d d d d d à d d d Z d d d d d d  d d d  d !� ! ! ! ! ! ! d ! d ű d ! d ! d r d ! ! ! d ! d d ! d ! d ! d ! d ! d  d ! ! ! ! ! d ! d Z d ! d ! d š d ! ! ! d ! d d ! d ! d  d !" !A !# !2 !$ !+ !% !( !& d !' d  d !) d !* d Z d !, !/ !- d !. d š d !0 d !1 d  d !3 !: !4 !7 !5 d !6 d s d !8 d !9 d  d !; !> !< d != d Z d !? d !@ d d !B !T !C !M !D !J !E d !F d !G d !H d !I d š d !K d !L d d !N !Q !O d !P d Ʒ d !R d !S d d !U !\ !V !Y !W d !X d G d !Z d ![ d ï d !] !c !^ d !_ d !` d !a d !b d  d !d d !e d ï d !g " !h ! !i ! !j !y !k !r !l !o !m d !n d  d !p d !q d d !s !v !t d !u d Ʒ d !w d !x d d !z ! !{ !~ !| d !} d d ! d ! d d ! ! ! d ! d d ! d ! d ! d ! d ! d s d ! ! ! ! ! ! ! d ! d d ! d ! d ! d ! d ! d i d ! ! ! d ! d ï d ! d ! d ! d ! d ! d d ! ! ! ! ! d ! d ! d ! d ! d s d ! d ! d ï d d ! ! d ! d d ! ! ! ! ! ! ! ! ! d ! d Z d ! d ! d Œ d ! ! ! d ! d :y d ! d ! d ! d ! d ! d ` d ! ! d ! ! d ! d ï d ! ! ! d ! d ƨ d ! d ! d ! d ! d ! d 7 d ! ! ! ! ! ! ! d ! d d ! d ! d d ! ! ! d ! d Z d ! d ! d ! d ! d ! d d ! " ! ! ! d ! d d ! d ! d ! d ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š ! š "� š : š " " " d " d r d " d " d d " "m " ", " " " " " " " d " d Z d " d " d  d " " " d " d 7 d " d " d š d " "" d " " d " d " d " d "! d ƨ d "# ") "$ d "% d "& d "' d "( d Z d "* d "+ d  d "- "a ". "W "/ "T "0 d "1 d "2 d l "3 "4 l "5 l "6 "E "7 l "8 l "9 l ": l "; l "< l "= l "> l "? l "@ l "A l "B l "C l "D l l "F l "G l "H l "I l "J l "K l "L l "M l "N l "O l "P l "Q l "R l "S l l l "U d "V d i d "X "^ "Y d "Z d "[ d "\ d "] d d "_ d "` d s d "b "f "c d "d d "e d  d "g "j "h d "i d Ʒ d "k d "l d d "n " "o " "p "z "q "t "r d "s d d "u d "v d "w d "x d "y d s d "{ " "| d "} d "~ d " d " d d " d " d  d " " " " " d " d  d " d " d " d " d " d  d d " " d " d d " " " " " " " d " d " d " " " ߡ " " " " " " " " " " " " " " " ) " d " d à d " " " d " d ï d " d " d d " " " " " d " d d " d " d ï d " " " d " d Z d " d " d " d " d " d d " (M " % " $ " #o " # " " " " " " " " " d " d  d " d " d d d " " d " d Z d " " " " " d " d d " d " d " d " d " d Ʒ d " " " d " d ï d " d " d Œ d " " " " " " " d " d à d " d " d Ʒ d " " " d " d d " d " d  d " # " # #� d # d ï d # d # d  d # # # d # d r d # d # d d # #, # # # # # # # d # d d # d # d ï d # d # d # d # d # d # d d # #% # #" # d #! d d ## d #$ d d #& #) #' d #( d ï d #* d #+ d Z d #- #` #. #Y #/ #V #0 d #1 d #2 d #3 #4 #U #5 #E #6 #7 #8 #9 #: #; #< #= #> #? #@ #A #B #C #D ߡ #F #G #H #I #J #K #L #M #N #O #P #Q #R #S #T V V #W d #X d d #Z #] #[ d #\ d d #^ d #_ d ƨ d #a #h #b #e #c d #d d d #f d #g d y d #i #l #j d #k d d #m d #n d d #p # #q # #r # #s #z #t #w #u d #v d ƨ d #x d #y d ƨ d #{ #~ #| d #} d ƙ d # d # d Z d # # # # # d # d ƨ d # d # d d # # # d # d d # d # d ` d # # # # # # # d # d # d # d # d  d # d # d # d # d # d Z d # # # d # d ï d # d # d ï d # # # # # d # d  d # d # d s d # # # d # d š d # d # d d # # # # # # # # # d # d ҉ d # d # d x d # # # d # d Z d # d # d s d # # # # # d # d # d # d # d 7 d # d # d d # # # d # d ï d # d # d d # # # # # # # d # d # d # V # V V # # V # V # V V # # V # V V # # V # V # V V # V # # V V # V # V # d # d Œ d # # # d # d s d # d # d d # $ # $� # d # d  d $ d $ d š d $ $ $ d $ d ï d $ d $ d s d $ %9 $ $ $ $ $ $p $ $ $ $ $ d $ d k d $ d $ d d $ $ $ d $ d d $ d $ d $ d $ 7 $ 7 $ 7 $! 7 $" 7 $# 7 7 $$ $% 7 $& 7 $' 7 $( 7 $) $L $* $5 $+ $, $2 $- $. $0 K $/ K $1 K $3 $4 � $6 $G $7 $> $8 $9 7 $: $< $; 7 7 $= 7 Z 7 $? $C $@ $A  7 $B 7 7 7 $D $E $F  7 7 $H 7 $I 7 7 $J $K 7 7 $M $` $N 7 $O $Y $P $S $Q 7 $R 7  7 $T $W $U $V 7 w 7 $X 7 7 $Z 7 $[ $^ $\ $] X 7 7 7 $_ g 7 $a 7 $b $l $c $f $d 7 $e 7 7 i $g $j $h $i  7 ~ 7 7 $k ) 7 $m 7 $n 7 7 $o ) 7 $q $x d $r $s d $t d $u d $v $w $ $y $ $z d ${ d $| d $} d $~ d š d $ d $ d Z d $ $ $ $ $ $ $ d $ d $ d $ $ $ $ H < $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ < $ d $ d d $ $ $ d $ d d $ d $ d L d $ $ $ $ $ d $ d r d $ d $ d $ d $ d $ d  d $ $ $ d $ d d $ d $ d d $ $ $ $ $ $ $ $ $ d $ d ҉ d $ d $ d s d $ $ $ d $ d $ d $ d $ d à d $ d $ d Z d $ $ $ $ $ d $ d d $ d $ d Z d $ $ $ d $ d d $ d $ d $ d x d $ %$ $ $ $ $ $ d $ d $ d $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ < $ d $ d d $ %! $ d $ d $ d $ r %� r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r % r 8Z r %" d %# d d %% %2 %& %, %' d %( d %) d %* d %+ d d %- d %. d %/ d %0 d %1 d ï d %3 %6 %4 d %5 d d %7 d %8 d ` d %: % %; %Z %< %K %= %D %> %A %? d %@ d d %B d %C d y d %E %H %F d %G d d %I d %J d d %L %S %M %P %N d %O d d %Q d %R d d %T %W %U d %V d ï d %X d %Y d r d %[ % %\ %v %] %s %^ d %_ d %` d %a %b %c %d %e %f %g %h %i %j %k %l %m %n %o %p %q %r < %t d %u d Z d %w %} %x d %y d %z d %{ d %| d d %~ d % d s d % % % % % d % d G d % d % d  d % % % d % d % d % d % d y d % d % d d % % % % % % % % % d % d ҉ d % d % d Œ d % % % d % d % d % d % d y d % d % d ï d % % % % % d % d % d % d % d d % d % d d % % % d % d d % d % d d % % % % % % % d % d d % d % d d % % % d % d d % d % d d % % % % % d % d be d % d % d ƨ d % % % d % d  d % d % d  d % ' % &f % &+ % & % % % % % % % d % d % d % d % d d % d % d Œ d % % % d % d Ʒ d % d % d :y d % % % % % d % d % d % d % d d % d % d à d % &� % d % d % d % d % d  d & d & d ï d & & & & & & & d & d š d & d & d & d & d & d š d & & & d & d & d & d & d d & d & d Z d & &! & & & d & d d & d & d d &" &% &# d &$ d s d && d &' d &( d &) d &* d d &, &J &- &< &. &5 &/ &2 &0 d &1 d Z d &3 d &4 d š d &6 &9 &7 d &8 d ` d &: d &; d š d &= &C &> &A &? d &@ d d &B d d d &D &E d &F d &G d &H d &I d d &K &] &L &V &M &P &N d &O d d &Q d &R d &S d &T d &U d d &W &Z &X d &Y d ˘ d &[ d &\ d d &^ &b &_ d &` d &a d d d &c &d d &e d ï d &g & &h & &i &x &j &n &k d &l d &m d r d &o &r &p d &q d ï d &s d &t d &u d &v d &w d d &y & &z & &{ d &| d &} d &~ d & d Z d & d & d  d & d & d & d d & & & & & & & d & d & d L d & d & d  d d & & d & d Ʒ d & & & & & d & d Z d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d & d d & & & d & d & d & d & d d & d & d d & & & & & & & & & d & d d & d & d & d & d & d  d & & & d & d s d & d & d [ d & & & & & d & d  d & d & d d & & & d & d d & d & d Ʒ d & & & & & & & d & d G d & d & d r d & & & d & d  d & d & d ܹ d & ' & ' '� d ' d ï d ' d ' d ï d ' ' ' d ' d d ' d ' d ű d ' ' ' 'N ' '. ' '" ' ' ' ' ' d ' d ' d ' d ' d d ' d ' d Z d ' ' ' d ' d d ' d '! d s d '# '' '$ d '% d '& d ï d '( '+ ') d '* d Ʒ d ', d '- d ï d '/ '> '0 '7 '1 '4 '2 d '3 d d '5 d '6 d ƨ d '8 '; '9 d ': d d '< d '= d d '? 'F '@ 'C 'A d 'B d r d 'D d 'E d Ʒ d 'G d 'H d 'I d 'J d 'K 'L ï Dz 'M ï Dz ï 'O 'q 'P '_ 'Q 'X 'R 'U 'S d 'T d ` d 'V d 'W d d 'Y '\ 'Z d '[ d d '] d '^ d Z d '` 'j 'a 'd 'b d 'c d d 'e d 'f d 'g d 'h d 'i d d 'k 'n 'l d 'm d ï d 'o d 'p d s d 'r ' 's ' 't 'w 'u d 'v d d 'x d 'y d 'z d '{ ƙ '| ƙ '} ƙ '~ ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ' ƙ ƙ 6 ' ' ' d ' d Œ d ' d ' d ' d ' d ' d r d ' ' ' ' ' d ' d ' d š ' š ' š ' ' š ' š ' š ' ' ' š ' š ' š ' š š ' ' š š ' š ' š ' š ' š ' ? š ' š ' š ' š ' š ' š ' š ' š š ' š ' ' š š ' H š ' d ' d Z d ' ' ' d ' d Œ d ' d ' d d ' ( ' ' ' ' ' ' ' ' ' d ' d  d ' d ' d y d ' ' ' d ' d d ' d ' d ' d ' d ' d ï d ' ' ' ' ' d ' d d ' d ' d d ' ' ' d ' d ' d ' d ' d d ' d ' d d ' ' ' ' ' ' ' d ' d d ' d ' d š d ' ' ' d ' d d ' d ' d :y d ' ( d ' ' d (� d š d ( ( ( d ( d d ( d ( d d ( (1 ( ( ( ( ( ( ( d ( d  d ( d ( d ( d ( d ( d ` d ( ( ( d ( d  d ( d ( d Œ d ( (' ( ($ ( d ( d (! d (" d (# d ƨ d (% d (& d s d (( (. () d (* d (+ d (, d (- d i d (/ d (0 d r d (2 (A (3 (: (4 (7 (5 d (6 d d (8 d (9 d z d (; (> (< d (= d ƨ d (? d (@ d š d (B (I (C (F (D d (E d d (G d (H d  d (J d (K d (L d  d (N * (O )n (P ( (Q ( (R (t (S (b (T ([ (U (X (V d (W d d (Y d (Z d y d (\ (_ (] d (^ d Œ d (` d (a d ï d (c (m (d (g (e d (f d Z d (h d (i d (j d (k d (l d  d (n (q (o d (p d s d (r d (s d ï d (u ( (v ( (w (z (x d (y d d ({ d (| d (} d (~ d ( d d ( ( ( d ( d d ( d ( d Ʒ d ( ( ( ( ( d ( d š d ( d ( d ( d ( d ( d y d ( d ( d ( d ï d ( ( ( ( ( ( ( ( ( d ( d d ( d ( d ƨ d ( ( ( d ( d ҉ d ( d ( d ƨ d ( ( ( ( ( d ( d ï d ( d ( d š d ( ( ( d ( d  d ( d ( d d ( ( ( ( ( ( ( d ( d d ( d ( d d ( ( ( d ( d Z d ( d ( d d ( ( ( d ( d ( d  d ( ( ( d ( d  d ( d ( d ï d ( )/ ( ) ( ( ( ( ( ( ( d ( d ( d ( d ( ( ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d ( d E ( 4 E ( d ( d d ( ( ( d ( d ( d ( d ( d Œ d ( d ( d  d ( ) ( )� ( d ( d d ) d ) d ) d ) d ) d y d ) ) ) d ) d d ) d ) d V d ) ) ) ) ) d ) d ) d ) d ) d ) d d ) ) ) d ) d ƨ d ) d ) d r d ) )% ) )" ) d )! d Z d )# d )$ d d )& ), )' d )( d )) d )* d )+ d d )- d ). d ˘ d )0 )O )1 )= )2 )9 )3 )6 )4 d )5 d r d )7 d )8 d s d ): d ); d )< d y d )> )E )? d )@ d )A d )B d )C d )D d ï d )F )I )G d )H d y d )J d )K d )L d )M d )N d d )P )_ )Q )X )R )U )S d )T d d )V d )W d Z d )Y )\ )Z d )[ d Ʒ d )] d )^ d  d )` )g )a )d )b d )c d s d )e d )f d  d )h )k )i d )j d d )l d )m d  d )o ) )p ) )q ) )r ) )s )z )t )w )u d )v d  d )x d )y d > d ){ )~ )| d )} d r d ) d ) d ) d ) d ) d ï d ) ) ) ) ) d ) d Z d ) d ) d Z d ) ) ) d ) d z d ) d ) d  d ) ) ) ) ) ) ) d ) d d ) d ) d Œ d ) ) ) d ) d  d ) d ) d d ) ) ) ) ) d ) d s d ) d ) d ` d ) ) ) d ) d Œ d ) d ) d s d ) ) ) ) ) ) ) ) ) d ) d ` d ) d ) d d ) ) ) d ) d d ) d ) d d ) ) ) ) ) d ) d d ) d ) d ) d ) d ) d Œ d ) ) ) d ) d ) d ) d ) d $e d ) d ) d ï d ) ) ) ) ) ) ) d ) d  d ) d ) d s d ) ) ) d ) d x d ) d ) d  d ) ) ) ) ) d ) d ) d ) d ) d s d ) d ) d d ) ) ) d ) d ï d ) d ) d d ) *: ) * ) * ) * ) * *� d * d ï d * d * d  d * * * d * d d * d * d ű d * * * * * d * d * d * d * d š d * d * d ű d * * * d * d Œ d * d * d d * *+ * *$ d *! *" d *# d 8 d *% *( *& d *' d Z d *) d ** d ƙ d *, *3 *- *0 *. d */ d ƨ d *1 d *2 d  d *4 *7 *5 d *6 d d *8 d *9 d ï d *; *Z *< *K *= *D *> *A *? d *@ d  d *B d *C d d *E *H *F d *G d d *I d *J d d *L *S *M *P *N d *O d d *Q d *R d  d *T *W *U d *V d  d *X d *Y d r d *[ *s *\ *i *] *c *^ d *_ d *` d *a d *b d  d *d d *e d *f d *g d *h d d *j *p *k d *l d *m d *n d *o d  d *q d *r d  d *t *{ *u *x *v d *w d 7 d *y d *z d s d *| * *} d *~ d  d * d * d * d * d * d d * + * + * * * * * * * * * * * d * d š d * d * d Z d * * * d * d š d * d * d ƨ d * * * * * d * d d * d * d  d * * * d * d ï d * d * d d * * * * * * * d * d š d * d * d ƨ d * * * d * d  d * d * d  d * * * * * d * d * d V d * d * d d * d * d * d Z d * * * * * * * * * d * d  d * d * d  d * * * d * d d * d * d r d * * * * * d * d * d * d * d d * d * d * d * d * d s d d * * d * d  d * * * * * * * d * d * d * d * d ` d * d * d Ʒ d * * * d * d d * d * d s d * + * + * d * d +� d + d + d i d + d + d š d + + + d + d d + d + d ï d + +[ + +< + +- + +# + + + d + d + d Z + + Z Z + + Z + Z + Z + Z + Z Z + + Z , Z +! d +" d Z d +$ +' +% d +& d d +( d +) d +* d ++ d +, d ï d +. +5 +/ +2 +0 d +1 d d +3 d +4 d d +6 +9 +7 d +8 d Œ d +: d +; d d += +O +> +H +? +E +@ d +A d +B d +C d +D d  d +F d +G d r d +I +L +J d +K d Ʒ d +M d +N d ' d +P +W +Q +T +R d +S d d +U d +V d ` d d +X +Y d +Z d 6 d +\ + +] +o +^ +h +_ +b +` d +a d s d +c d +d d +e d +f d +g d d +i +l +j d +k d  d +m d +n d  d +p +w +q +t +r d +s d y d +u d +v d d +x +{ +y d +z d  d +| d +} d +~ d + d + d d + + + + + + + d + d ƙ d + d + d + d + d + d d + + + d + d s d + d + d + d + d + d ï d + + d + + d + d d + + + d + d d + d + d x d + ,, + + + + + + + + + + + d + d + d + d + d d + d + d š d + + + d + d d + d + d r d + + + + + d + d + d + d + d d + d + d + d + d + d ï d + + + d + d d + d + d  d + + + + + d + d + d ï d d + + d + d ï d + + + + + d + d Z d + d + d  d + + + d + d d + d + d d + , + + + + + + + d + d d + d + d d + + + d + d d + d + d d + , + ,� + d + d + d + d + d d , d , d d , , , d , d ï d , d , d , d , d , d r d , , , , , , , d , d d , d , d , d , d , d G d , , , d , d i d , d , d ï d ,! ,( ," ,% ,# d ,$ d  d ,& d ,' d Z d ,) d ,* d ,+ d Ʒ d ,- ,u ,. ,S ,/ ,> ,0 ,7 ,1 ,4 ,2 d ,3 d d ,5 d ,6 d d ,8 ,; ,9 d ,: d i d ,< d ,= d ï d ,? ,I ,@ ,C ,A d ,B d 7 d ,D d ,E d ,F d ,G d ,H d ï d ,J ,M ,K d ,L d s d ,N d ,O d ,P d ï ,Q ,R ï ï Dz ,T ,c ,U ,\ ,V ,Y ,W d ,X d Ʒ d ,Z d ,[ d ƨ d ,] ,` ,^ d ,_ d Ʒ d ,a d ,b d d ,d ,n ,e ,k ,f d ,g d ,h d ,i d ,j d  d ,l d ,m d s d ,o ,r ,p d ,q d ƨ d ,s d ,t d ` d ,v , ,w , ,x , ,y ,| ,z d ,{ d d ,} d ,~ d Z d , d , d , d , d , d , d Z d , , , , , d , d , d , d , d d , d , d x d , , , d , d d , d , d i d , , , , , , , d , d , d d , d , d Ʒ d , , , d , d Z d , d , d Ʒ d , , , , , d , d , d , d , d d , d , d d , , , d , d , d , d , d r d , d , d i d , 5 , 1j , . , - , -C , , , , , , , , , , , d , d r d , d , d > d , , , d , d  d , d , d ҉ d , , d , , d , d Œ d , , , d , d d , d , d  d , , , , , , , d , d  d , d , d d d , , d , d d , , , , , d , d d , d , d ï d , , , d , d i d , d , d ï d , - , - -� - - - - d - d s d - d - d d - - - d - d  d - d - d ƨ d - - - - - d - d d - d - d Ʒ d - - - d - d - d - d - d ï d - d - d d -! -4 -" -- -# -) -$ d -% d -& d -' d -( d y d -* d -+ d -, d r d -. -1 -/ d -0 d Œ d -2 d -3 d ҉ d -5 -< -6 -9 -7 d -8 d à d -: d -; d d -= -@ -> d -? d ï d -A d -B d s d -D - -E -m -F -X -G -N -H -K -I d -J d y d -L d -M d ï d -O -U -P d -Q d -R d -S d -T d  d -V d -W d  d -Y -c -Z -` -[ d -\ d -] d -^ d -_ d ` d -a d -b d ƨ d -d -j -e d -f d -g d -h d -i d ï d -k d -l d s d -n -} -o -v -p -s -q d -r d d -t d -u d d -w -z -x d -y d Ʒ d -{ d -| d ` d -~ - - - - d - d Ʒ d - d - d Œ d - - - d - d - d š - š - - - - š - š - š - š - š - š - š  š š - š - š - š - š - š - š - š - š - š - - - š - - š - š - - š ( š - š š - - - š -  š -  š - d - d d - - - - - - - - - d - d - d - d - d d - d - d d - - - d - d  d - d - d d - - - - - d - d d - d - d  d - - - d - d d - d - d - d - d - d  d - - - - - - - d - d d - d - d <u d - - - d - d 7 d - d - d d - - - - - d - d Ʒ d - d - d d - - - d - d ` d - d - d d - .w - ./ - . - . - - d - - d - d y d - . - d .� d à d . d . d ƙ d . . . d . d . d ˘ d . . . d . d Œ d . d . d . d . d . d Z d . .# . . . . . d . d  d . d . d d . . . d . d Œ d .! d ." d L d .$ .+ .% .( .& d .' d d .) d .* d d ., d .- d .. d ï d .0 .U .1 .I .2 .< .3 .6 .4 d .5 d  d .7 d .8 d .9 d .: d .; d ï d .= .C .> d .? d .@ d .A d .B d d .D d .E d .F d .G d .H d d .J .Q .K .N .L d .M d  d .O d .P d d .R d .S d .T d ï d .V .h .W .^ .X .[ .Y d .Z d  d .\ d .] d x d ._ .e .` d .a d .b d .c d .d d ƨ d .f d .g d d .i .p .j .m .k d .l d Z d .n d .o d  d .q .t .r d .s d ƙ d .u d .v d d .x . .y . .z . .{ . .| . .} d .~ d Z d . d . d s d . d . d . d ű d . . . . . d . d d . d . d . d . d . d ҉ d . . . d . d z d . d . d à d . . . . . . . d . d s d . d . d . d . d . d d . . . d . d ï d . d . d ï d . . . . . d . d  d . d . d ` d . . . d . d  d . d . d x d . . . . . . . . . d . d d . d . d š d d . . d . d ï d . . . . . d . d s d . d . d . d . d . d d . . . d . d d . d . d ï d . . . . . . . d . d G d . d . d ` d . . . d . d Z d . d . d . d . d . d d . . . . . d . d d . d . d ҉ d . . . d . d d . d . d ` d . 0J . / . /J /� /( / / / / / / / d / d  d / d / d  d / / / d / d Z d / d / d / d / d / d d / / / / / d / d s d / d / d d / /" / d / d / d / d /! d Ʒ d /# d /$ d /% d /& š /' š ( š /) /8 /* /1 /+ /. /, d /- d Œ d // d /0 d ƨ d /2 /5 /3 d /4 d š d /6 d /7 d d /9 /C /: /@ /; d /< d /= d /> d /? d d /A d /B d š d /D /G /E d /F d  d /H d /I d š d /K /s /L /a /M /W /N /T /O d /P d /Q d /R d /S d d /U d /V d d /X /^ /Y d /Z d /[ d /\ d /] d d /_ d /` d ƨ d /b /l /c /f /d d /e d Ʒ d /g d /h d /i d /j > /k > 7 > /m /p /n d /o d à d /q d /r d d /t / /u /| /v /y /w d /x d d /z d /{ d Z d /} / /~ d / d  d / d / d ˘ d / / / / / d / d  d / d / d  d / / / d / d ƨ d / d / d  d / 0 / / / / / / / / / d / d d / d / d  d / / / d / d ` d / d / d d / / / / / d / d / d / d / d / d / / / / / / / / / / ׁ / / / / / / / / ł ł / / / / 4 / / / / / / / / ł y / / / r \ / / / / / 4 : / d / d Ʒ d / / / d / d / d / d / d d / d / d d / / / / / / / d / d Z d / d / d d / / / d / d / d ï / / Dz ï Dz / d / d x d / / / / / d / d Ʒ d / d / d d / / / d / d  d 0� d 0 d  d 0 0( 0 0 0 0 0 0 0 d 0 d s d 0 d 0 d d 0 0 0 d 0 d  d 0 d 0 d ƙ d 0 0 0 0 0 d 0 d ű d 0 d 0 d 0 d 0 d 0 d r d 0 0% 0 d 0! d 0" d ï 0# 0$ ï ï Dz 0& d 0' d s d 0) 08 0* 01 0+ 0. 0, d 0- d  d 0/ d 00 d d 02 05 03 d 04 d Ʒ d 06 d 07 d  d 09 0C 0: 0= 0; d 0< d ƙ d 0> d 0? d 0@ d 0A d 0B d r d 0D 0G 0E d 0F d d 0H d 0I d r d 0K 0 0L 0 0M 0o 0N 0c 0O 0Y 0P 0S 0Q d 0R d ` d 0T d 0U d 0V d 0W d 0X d s d 0Z 0` 0[ d 0\ d 0] d 0^ d 0_ d  d 0a d 0b d Z d 0d 0h 0e d 0f d 0g d  d 0i 0l 0j d 0k d d 0m d 0n d  d 0p 0 0q 0{ 0r 0u 0s d 0t d Z d 0v d 0w d 0x d 0y d 0z d r d 0| 0 0} d 0~ d 0 d 0 d 0 d d 0 d 0 d d 0 0 0 d 0 d 0 d d 0 0 0 d 0 d  d 0 d 0 d d 0 0 0 0 0 0 0 0 0 d 0 d d 0 d 0 d s d 0 0 0 d 0 d d 0 d 0 d  d 0 0 0 0 0 d 0 d 0 d 0 d 0 d ï d 0 d 0 d d 0 0 0 d 0 d s d 0 d 0 d d 0 0 0 0 0 0 0 d 0 d d 0 d 0 d ï d 0 0 0 d 0 d x d 0 d 0 d  d 0 0 0 0 0 d 0 d d 0 d 0 d d 0 0 0 d 0 d 0 d 0 d 0 d d 0 d 0 d d 0 1% 0 0 0 0 0 0 0 0 0 d 0 d š d 0 d 0 d d 0 0 0 d 0 d 0 d 0 d 0 d d 0 d 0 d ï d 0 0 0 0 0 d 0 d ï d 0 d 0 d d 0 0 0 d 0 d 0 d 0 d 0 d  d 0 d 0 d d 0 1 0 1 1� 1 1 d 1 d d 1 d 1 d 1 d 1 d 1 d d 1 1 1 d 1 d 1 d 1 d 1 d d 1 d 1 d Ʒ d 1 1 1 1 1 d 1 d Z d 1 d 1 d d 1 1 1 d 1 d d 1 d 1! d 1" d 1# d 1$ d š d 1& 1K 1' 19 1( 12 1) 1, 1* d 1+ d ï d 1- d 1. d 1/ d  10  11  13 16 14 d 15 d d 17 d 18 d ` d 1: 1A 1; 1> 1< d 1= d d 1? d 1@ d  d 1B 1E 1C d 1D d d 1F d 1G d 1H d 1I d 1J d G d 1L 1[ 1M 1W 1N 1T 1O d 1P d 1Q d 1R d 1S d š d 1U d 1V d z d d 1X 1Y d 1Z d d 1\ 1c 1] 1` 1^ d 1_ d s d 1a d 1b d  d 1d 1g 1e d 1f d  d 1h d 1i d  d 1k 3 1l 2| 1m 2� 1n 1 1o 1 1p 1 1q 1x 1r 1u 1s d 1t d ˘ d 1v d 1w d d 1y d 1z d 1{ d 1| d 1} d 1~ d d 1 1 1 1 1 d 1 d  d 1 d 1 d ҉ d d 1 1 d 1 d Z d 1 1 1 1 1 1 1 d 1 d  d 1 d 1 d d 1 1 1 d 1 d r d 1 d 1 d  d 1 1 1 1 1 d 1 d ï d 1 d 1 d 1 d 1 š 1 1 1 š 1 š 1 š 1 š 1 š 1 š 1 1 1 š 1 š 1 š š 1 š 1 : š 1 š š 1 1 š š 1 1 š š 1 š 1 š š 1 1 š š , 1 1 1 d 1 d ï d 1 d 1 d ï d 1 1 1 1 1 1 1 1 1 d 1 d d 1 d 1 d > d 1 1 1 d 1 d ƙ d 1 d 1 d ï d 1 1 1 1 1 d 1 d Œ d 1 d 1 d  d 1 1 1 d 1 d d 1 d 1 d d 1 1 1 1 1 1 1 d 1 d 1 d 1 d 1 d 7 d 1 d 1 d s d d 1 1 d 1 d s d 1 1 1 d 1 d 1 d Z d 1 1 1 d 1 d  d 1 d 1 d  d 2 2C 2 2 2 2 2 2 2 2 2 d 2 d ï d 2 d 2 d d 2 2 2 d 2 d ï d 2 d 2 d  d 2 2 d 2 2 d 2 d  d 2 2 2 d 2 d ƨ d 2 d 2 d d 2 2. 2 2' 2! 2$ 2" d 2# d ` d 2% d 2& d  d 2( 2+ 2) d 2* d d 2, d 2- d Z d 2/ 29 20 23 21 d 22 d Œ d 24 d 25 d 26 d 27 d 28 d d 2: 2= 2; d 2< d  d 2> d 2? d 2@ d 2A d 2B d  d 2D 2c 2E 2T 2F 2M 2G 2J 2H d 2I d d 2K d 2L d d 2N 2Q 2O d 2P d Ʒ d 2R d 2S d d 2U 2\ 2V 2Y 2W d 2X d  d 2Z d 2[ d V d 2] 2` 2^ d 2_ d  d 2a d 2b d d 2d 2p 2e 2l 2f 2i 2g d 2h d d 2j d 2k d  d d 2m 2n d 2o d  d 2q 2x 2r 2u 2s d 2t d d 2v d 2w d d d 2y 2z d 2{ d d 2} 3 2~ 2 2 2 2 2 2 2 2 2 2 d 2 d ƙ d 2 d 2 d d 2 2 2 d 2 d d 2 d 2 d  d 2 2 2 2 2 d 2 d y d 2 d 2 d d 2 2 2 d 2 d d 2 d 2 d Ʒ d 2 2 2 2 2 2 2 d 2 d  d 2 d 2 d i d 2 2 2 d 2 d ƨ d 2 d 2 d 2 d 2 d 2 d d 2 2 2 2 2 d 2 d  d 2 d 2 d  d 2 2 2 d 2 d ƨ d 2 d 2 d 2 d 2 d 2 d  d 2 2 2 2 2 2 2 2 2 d 2 d 2 d 2 d 2 d d 2 d 2 d d 2 2 2 d 2 d Ʒ d 2 d 2 d d 2 2 2 2 2 d 2 d d 2 d 2 d ƨ d 2 2 2 d 2 d s d 2 d 2 d  d 2 2 2 2 2 2 2 d 2 d 2 d 2 d 2 d d 2 d 2 d  d 2 2 2 d 2 d ï d 2 d 2 d  d 2 3 2 2 2 d 2 d d 2 d 3� d Ʒ d 3 3 3 d 3 d ï d 3 d 3 d  d 3 3K 3 3/ 3 3 3 3 3 3 3 d 3 d 3 d 3 d 3 d  d 3 d 3 d i d 3 3 3 d 3 d d 3 d 3 d à d 3 3( 3 3% 3 d 3! d 3" d 3# d 3$ d r d 3& d 3' d d 3) 3, 3* d 3+ d z d 3- d 3. d d 30 3? 31 38 32 35 33 d 34 d ` d 36 d 37 d d 39 3< 3: d 3; d  d 3= d 3> d s d 3@ 3D d 3A 3B d 3C d d 3E 3H 3F d 3G d d 3I d 3J d r d 3L 3h 3M 3\ 3N 3U 3O 3R 3P d 3Q d ï d 3S d 3T d Œ d 3V 3Y 3W d 3X d d 3Z d 3[ d d 3] 3a d 3^ 3_ d 3` d ï d 3b 3e 3c d 3d d ű d 3f d 3g d  d 3i 3u 3j 3n 3k d 3l d 3m d 7 d 3o 3r 3p d 3q d  d 3s d 3t d ƨ d 3v 3} 3w 3z 3x d 3y d ` d 3{ d 3| d ƨ d d 3~ 3 d 3 d ï d 3 4 3 4 3 3 3 3 3 3 3 3 3 3 3 d 3 d ƨ d 3 d 3 d 3 d 3 d 3 d d 3 3 3 d 3 d d 3 d 3 d š d 3 3 3 3 3 d 3 d d 3 d 3 d > d 3 3 3 d 3 d d 3 d 3 d 3 d 3 d 3 d d 3 3 3 3 3 3 3 d 3 d  d 3 d 3 d d 3 3 3 d 3 d  d 3 d 3 d ˘ d 3 3 3 3 3 d 3 d :y d 3 d 3 d d 3 d 3 d 3 d d 3 3 3 3 3 3 3 3 3 d 3 d Z d 3 d 3 d r d 3 3 3 d 3 d d 3 d 3 d  d 3 3 3 3 3 d 3 d d 3 d 3 d š d 3 3 3 d 3 d r d 3 d 3 d d 3 3 3 3 3 3 3 d 3 d ï d 3 d 3 d y d 3 3 3 d 3 d 3 d 3 d 3 d d 3 d 3 d 3 d 3 d 3 d ï d 3 4 3 4 3 d 4� d 4 d 4 d 4 d r d 4 d 4 d d 4 4 4 d 4 d ƨ d 4 d 4 d d 4 4X 4 42 4 4# 4 4 4 4 4 d 4 d Œ d 4 d 4 d d 4 4 4 d 4 d 4 d 4 d 4 d  d 4! d 4" d  d 4$ 4+ 4% 4( 4& d 4' d ï d 4) d 4* d r d 4, 4/ 4- d 4. d  d 40 d 41 d r d 43 4? 44 4; 45 48 46 d 47 d ï d 49 d 4: d  d 4< d 4= d 4> d  d 4@ 4G 4A 4D 4B d 4C d ` d 4E d 4F d d 4H d 4I d 4J d 4K d 4L 4N š 4M š ( š 4O 4P š 4Q š 4R š 4S š 4T š 4U š 4V š š 4W ( 4Y 4u 4Z 4i 4[ 4b 4\ 4_ 4] d 4^ d > d 4` d 4a d d 4c 4f 4d d 4e d d 4g d 4h d ï d 4j 4q 4k 4n 4l d 4m d Œ d 4o d 4p d  d 4r d 4s d 4t d  d 4v 4 4w 4{ 4x d 4y d 4z d Ʒ d 4| 4 4} d 4~ d ï d 4 d 4 d ï d 4 4 4 4 4 d 4 d d 4 d 4 d 4 d 4 d 4 d x d d 4 4 d 4 d  d 4 5C 4 4 4 4 4 4 4 4 d 4 4 d 4 d d 4 4 4 d 4 d š d 4 d 4 d 4 d 4 d 4 d r d 4 4 4 4 4 d 4 d  d 4 d 4 d 4 d 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ց 4 4 4 d 4 d Z d 4 d 4 d š d 4 4 4 4 4 4 4 d 4 d d 4 d 4 d d 4 4 4 d 4 d  d 4 d 4 d 4 d 4 d 4 d d 4 4 4 4 4 d 4 d r d 4 d 4 d r d 4 4 4 d 4 d s d 4 d 4 d à d 4 5$ 4 5 4 4 4 4 4 d 4 d 4 d 4 d 4 d x d 4 d 4 d 4 d 4 d 4 d d 4 4 4 d 4 d 4 d 4 d 4 d d 5� d 5 d 5 d 5 d 5 d 5 d 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L 5 L Mv L 5 5 5 5 5 d 5 d Z d 5 d 5 d ï d 5 5! 5 d 5 d ƨ d 5" d 5# d d 5% 54 5& 5- 5' 5* 5( d 5) d à d 5+ d 5, d d 5. 51 5/ d 50 d  d 52 d 53 d d 55 5< 56 59 57 d 58 d s d 5: d 5; d d 5= 5@ 5> d 5? d r d 5A d 5B d Ʒ d 5D 5 5E 5j 5F 5[ 5G 5N 5H 5K 5I d 5J d  d 5L d 5M d ï d 5O 5U 5P d 5Q d 5R d 5S d 5T d d 5V d 5W d 5X d 5Y d 5Z d Ʒ d 5\ 5c 5] 5` 5^ d 5_ d 7 d 5a d 5b d V d 5d 5g 5e d 5f d d 5h d 5i d d 5k 5} 5l 5s 5m 5p 5n d 5o d d 5q d 5r d š d 5t 5w 5u d 5v d ï d 5x d 5y d 5z d 5{ d 5| d d 5~ 5 5 5 5 d 5 d Œ d 5 d 5 d ` d 5 5 5 d 5 d s d 5 d 5 d 5 d 5 d 5 d d 5 5 5 5 5 5 5 5 5 d 5 d 5 d 5 d 5 d d 5 d 5 d  d 5 5 5 d 5 d ï d 5 d 5 d Z d 5 5 5 5 5 d 5 d ƨ d 5 d 5 d 7 d 5 5 5 d 5 d 7 d 5 d 5 d d 5 5 5 5 5 5 5 d 5 d i d 5 d 5 d 5 d 5 d 5 d  d 5 5 5 d 5 d Ʒ d 5 d 5 d ï d 5 5 5 5 5 d 5 d r d 5 d 5 d  d 5 5 5 d 5 d d 5 d 5 d 5 d 5 Ʒ 5 Ʒ V Ʒ 5 :^ 5 8 5 6 5 6Z 5 6 5 5 5 5 5 5 d 5 5 d 5 d r d 5 5 5 d 5 d ƨ d 5 d 5 d Z d 5 5 5 5 5 d 5 d ƨ d 5 d 5 d d 5 5 5 d 5 d d 5 d 5 d ű d 5 6 5 6 5 5 5 d 5 d  d 6� d 6 d Ʒ d 6 6 6 d 6 d 6 d 6 d 6 d d 6 d 6 d  d 6 6 6 6 6 d 6 d d 6 d 6 d y d 6 6 6 d 6 d ï d 6 d 6 d  d 6 6> 6 6/ 6 6( 6 6" 6 d 6! d > d 6# d 6$ d 6% d 6& d 6' d d 6) 6, 6* d 6+ d ï d 6- d 6. d d 60 67 61 64 62 d 63 d z d 65 d 66 d d 68 6; 69 d 6: d r d 6< d 6= d r d 6? 6K 6@ 6G 6A 6D 6B d 6C d  d 6E d 6F d d d 6H 6I d 6J d  d 6L 6S 6M 6P 6N d 6O d d 6Q d 6R d d 6T 6W 6U d 6V d 7 d 6X d 6Y d d 6[ 6 6\ 6 6] 6l 6^ 6e 6_ 6b 6` d 6a d ƙ d 6c d 6d d d 6f 6i 6g d 6h d d 6j d 6k d ï d 6m 6w 6n 6t 6o d 6p d 6q d 6r d 6s d  d 6u d 6v d ˘ d 6x 6{ 6y d 6z d d 6| d 6} d 6~ d 6 6 ց 6 6 6 6 6 6 6 d 6 d x d 6 d 6 d x d 6 6 6 d 6 d Z d 6 d 6 d ` d 6 6 6 6 6 d 6 d 7 d 6 d 6 d ƨ d 6 6 6 d 6 d L d 6 d 6 d d 6 6 6 6 6 6 6 6 6 d 6 d d 6 d 6 d 6 d 6 d 6 d š d 6 6 6 d 6 d r d 6 d 6 d 6 d 6 d 6 d d 6 6 6 6 6 d 6 d ƨ d 6 d 6 d d 6 d 6 d 6 d r d 6 6 6 6 6 6 6 d 6 d Œ d 6 d 6 d 6 d 6 d 6 d d 6 6 6 d 6 d  d 6 d 6 d ï d 6 6 6 6 6 d 6 d d 6 d 6 d  d 6 6 6 d 6 d  d 6 d 6 d ï d 6 7t 6 72 6 7 6 6 6 6 6 6 6 d 6 d ï d 6 d 6 d d 6 6 6 d 6 d ƨ d 6 d 6 d d 6 7 6 7� 6 d 6 d 6 d 6 d 6 d y d 7 d 7 d à d 7 7 7 d 7 d 7 d 7 d 7 d Z d 7 d 7 d s d 7 7 7 7 7 7 7 d 7 d 7 d 7 d 7 d d 7 d 7 d  d 7 7 7 d 7 d r d 7 d 7 d ` d 7! 7( 7" 7% 7# d 7$ d  d 7& d 7' d d 7) 7/ 7* d 7+ d 7, d 7- d 7. d Z d 70 d 71 d s d 73 7X 74 7F 75 7< 76 79 77 d 78 d d 7: d 7; d  d 7= 7@ 7> d 7? d ï d 7A d 7B d 7C d 7D d 7E d k d 7G 7K 7H d 7I d 7J d r d 7L 7R 7M d 7N d 7O d 7P d 7Q d s d 7S d 7T d 7U d 7V d 7W d Z d 7Y 7e 7Z 7a 7[ 7^ 7\ d 7] d  d 7_ d 7` d  d 7b d 7c d 7d d s d 7f 7m 7g 7j 7h d 7i d d 7k d 7l d  d 7n 7q 7o d 7p d d 7r d 7s d ï d 7u 7 7v 7 7w 7 7x 7 7y 7| 7z d 7{ d r d 7} d 7~ d  d 7 7 7 d 7 d ` d 7 d 7 d d 7 7 7 7 7 d 7 d  d 7 d 7 d 7 d 7 d 7 d d 7 7 7 d 7 d s d 7 d 7 d r d 7 7 7 7 7 7 7 d 7 d 7 d 7 ï 7 7 Dz ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï 7 ï Qy ï 7 d 7 d d 7 7 7 d 7 d 7 d 7 d 7 d G d 7 d 7 d d 7 7 7 7 7 d 7 d d 7 d 7 d  d 7 7 7 d 7 d  d 7 d 7 d 7 d 7 d 7 d ƨ d 7 7 7 7 7 7 7 7 7 d 7 d Z d 7 d 7 d ï d 7 7 7 d 7 d ï d 7 d 7 d  d 7 7 7 7 7 d 7 d Ʒ d 7 d 7 d  d 7 7 7 d 7 d 7 d 7 d 7 d d 7 d 7 d d 7 8 7 7 7 7 7 d 7 d d 7 d 7 d š d 7 8 7 d 8� d 8 d 8 d 8 d  d 8 d 8 d 8 d 8 d 8 d V d 8 8 8 8 8 d 8 d  d 8 d 8 d d 8 8 8 d 8 d d 8 d 8 d ï d 8 9L 8 8 8 8^ 8 8< 8 8* 8 8# 8 d 8! d 8" d Z d 8$ 8' 8% d 8& d  d 8( d 8) d > d 8+ 85 8, 82 8- d 8. d 8/ d 80 d 81 d š d 83 d 84 d Z d 86 89 87 d 88 d  d 8: d 8; d d 8= 8O 8> 8E 8? 8B 8@ d 8A d d 8C d 8D d r d 8F 8L 8G d 8H d 8I d 8J d 8K d ƨ d 8M d 8N d d 8P 8W 8Q 8T 8R d 8S d r d 8U d 8V d Ʒ d 8X d 8Y d 8Z d 8[ d 8\ d 8] d š d 8_ 8 8` 8 8a 8h 8b 8e 8c d 8d d ï d 8f d 8g d d 8i 8o 8j d 8k d 8l d 8m d 8n d  d 8p d 8q d 8r d 8s ï 8t ï 8u ï 8v ï 8w ï 8x ï 8y ï 8z ï 8{ ï 8| ï 8} ï 8~ ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï 8 ï Q^ ï 8 8 8 8 8 d 8 d Œ d 8 d 8 d s d 8 8 8 d 8 d d 8 d 8 d d 8 8 8 8 8 8 8 d 8 d 8 d 8 d 8 d š d 8 d 8 d d 8 8 8 d 8 d 8 d 8 d 8 d L d 8 d 8 d Ʒ d 8 8 8 8 8 d 8 d d 8 d 8 d 8 d 8 d 8 d d 8 8 8 d 8 d d 8 d 8 d d 8 9 8 8 8 8 8 8 8 8 8 d 8 d d 8 d 8 d 8 d 8 d 8 d  d 8 8 8 d 8 d à d 8 d 8 d ï d 8 8 8 8 8 d 8 d r d 8 d 8 d  d 8 8 8 d 8 d 8 d 8 d 8 d Z d 8 d 8 d ` d 8 8 8 8 8 8 8 d 8 d s d 8 d 8 d 8 d 8 d 8 d d 8 8 8 d 8 d s d 8 d 8 d d 8 9 9� 9 9 d 9 d ï d 9 d 9 d 9 d 9 d 9 d ` d 9 d 9 d 9 d 9 d 9 d 9 d ï d 9 90 9 9! 9 9 9 9 9 d 9 d  d 9 d 9 d > d 9 9 9 d 9 d ï d 9 d 9 d d 9" 9) 9# 9& 9$ d 9% d  d 9' d 9( d s d 9* 9- 9+ d 9, d ű d 9. d 9/ d d 91 9= 92 99 93 96 94 d 95 d d 97 d 98 d d d 9: 9; d 9< d d 9> 9E 9? 9B 9@ d 9A d d 9C d 9D d d 9F 9I 9G d 9H d Z d 9J d 9K d i d 9M 9 9N 9 9O 9n 9P 9\ 9Q 9X 9R 9U 9S d 9T d d 9V d 9W d š d 9Y d 9Z d 9[ d ƨ d 9] 9d 9^ 9a 9_ d 9` d d 9b d 9c d Z d 9e 9h 9f d 9g d d 9i d 9j d 9k d 9l d 9m d i d 9o 9 9p 9z 9q 9w 9r d 9s d 9t d 9u d 9v d ï d 9x d 9y d > d 9{ 9~ 9| d 9} d d 9 d 9 d > d 9 9 9 9 9 d 9 d 7 d 9 d 9 d d 9 9 9 d 9 d d 9 d 9 d i d 9 9 9 9 9 9 9 9 9 d 9 d ` d 9 d 9 d  d 9 9 9 d 9 d š d 9 d 9 d x d 9 9 9 9 9 d 9 d 9 d ï d 9 d 9 d V d 9 9 9 d 9 d d 9 d 9 d š d 9 9 9 9 9 9 9 d 9 d  d 9 d 9 d d d 9 9 d 9 d ս d 9 9 9 9 9 d 9 d ï d 9 d 9 d ƙ d 9 9 9 d 9 d  d 9 d 9 d d 9 : 9 9 9 9 9 9 9 9 9 d 9 d Z d 9 d 9 d d 9 d 9 d 9 d  d 9 9 9 9 9 d 9 d Œ d 9 d 9 d 9 d 9 d 9 d i d 9 9 9 d 9 d 9 d 9 d 9 d G d 9 d 9 d 9 d 9 d 9 d  d 9 : 9 9 9 9 9 d 9 d Z d 9 d 9 d d 9 : 9 d :� d d : d : d Ʒ d : : : : : d : d à d : d : d r d : : : d : d : d : d : d Ʒ d : d : d : d : d : d d : :9 : :* : :# : : : d : d d :! d :" d ` d :$ :' :% d :& d Z d :( d :) d ï d :+ :2 :, :/ :- d :. d ï d :0 d :1 d d :3 :6 :4 d :5 d ï d :7 d :8 d r d :: :L :; :B :< :? := d :> d  d :@ d :A d d :C :F :D d :E d ` d :G d :H d :I d :J d :K d ï d :M :T :N :Q :O d :P d d :R d :S d ƨ d :U :[ :V d :W d :X d :Y d :Z d d :\ d :] d d :_ <| :` ;k :a : :b : :c : :d :p :e :i :f d :g d :h d d :j :m :k d :l d d :n d :o d ï d :q :x :r :u :s d :t d ` d :v d :w d  d :y : :z d :{ d :| d :} d :~ d r d : d : d k d : : : : : : : d : d d : d : d d : : : d : d Ʒ d : d : d ƙ d : : d : : d : d d : : : d : d  d : d : d d : : : : : : : : : d : d  d : d : d : d : d : d d : : : d : d d : d : d  d : : : : : d : d : d : d : d Z d : d : d  d : : : d : d  d : d : d : d : d : d G d : : : : : : : d : d s d : d : d ű d : : : d : d ƨ d : d : d d : : : : : d : d  d : d : d à d : : : d : d Z d : d : d d : ;& : ; : : : : : : : d : d d : d : d d : : : d : d Z d : d : d d : ;� : : : d : d  d : d : d d ; d ; d ; d Z d ; ; ; ; ; ; ; d ; d d ; d ; d Z d ; ; ; d ; d ; d ; d ; d Ʒ d ; d ; d d ; ; ; ; ; d ; d d ; d ; d d ; ;# ;! d ;" d 7 d ;$ d ;% d Z d ;' ;I ;( ;: ;) ;3 ;* ;0 ;+ d ;, d ;- d ;. d ;/ d x d ;1 d ;2 d y d ;4 ;7 ;5 d ;6 d d ;8 d ;9 d i d ;; ;B ;< ;? ;= d ;> d d ;@ d ;A d  d ;C ;F ;D d ;E d d ;G d ;H d Œ d ;J ;\ ;K ;U ;L ;O ;M d ;N d  d ;P d ;Q d ;R d ;S d ;T d x d ;V ;Y ;W d ;X d ï d ;Z d ;[ d Z d ;] ;d ;^ d ;_ d ;` d ;a d ;b d ;c d  d ;e ;h ;f d ;g d d ;i d ;j d d ;l ; ;m ; ;n ; ;o ; ;p ;w ;q ;t ;r d ;s d ï d ;u d ;v d Œ d ;x ;~ ;y d ;z d ;{ d ;| d ;} d  d ; d ; d ï d ; ; ; ; ; d ; d d ; d ; d ˘ d ; ; ; d ; d s d ; d ; d ; d ; d ; d d ; ; ; ; ; ; ; d ; d à d ; d ; d ; d ; d ; d  d ; ; ; d ; d ï d ; d ; d i d ; ; ; ; ; d ; d ` d ; d ; d  d ; ; ; d ; d d ; d ; d ; d ; d ; d ű d ; ; ; ; ; ; ; ; ; d ; d ` d ; d ; d  d ; ; ; d ; d d ; d ; d d ; ; ; ; ; d ; d Z d ; d ; d ; d ; d ; d ï d d ; ; d ; d  d ; ; ; ; ; ; ; d ; d ï d ; d ; d ; d ; d ; d d ; ; ; d ; d ; d ; d ; d s d ; d ; d Ʒ d ; ; ; ; ; d ; d ï d ; d ; d Z d ; d ; d ; d r d ; <= ; < ; < ; < ; < <� d < d ƨ d < d < d y d < < < d < d r d < d < d ` d < < < < < d < d ï d < d < d d < < < d < d d < d < d < d < d < d  d < <. < <' <! <$ <" d <# d r d <% d <& d d <( <+ <) d <* d d <, d <- d ƨ d </ <6 <0 <3 <1 d <2 d d <4 d <5 d d <7 <: <8 d <9 d ï d <; d << d d <> <W <? <N <@ <G <A <D <B d <C d x d <E d <F d d <H <K <I d <J d Œ d <L d <M d d <O <S d <P <Q d <R d d d <T <U d <V d r d <X <g <Y <` <Z <] <[ d <\ d d <^ d <_ d d <a <d <b d <c d d <e d <f d  d <h <u <i <o <j d <k d <l d <m d <n d r d <p d <q d <r d <s d <t d d <v <y <w d <x d Œ d <z d <{ d ï d <} = <~ < < < < < < < < < < < < d < d d < d < d s d < < < d < d < d < d  d < d < d G d < < < < < d < d ï d < d < d d < < < d < d r d < d < d d < < < < < < < d < d d < d < d x d < < < d < d  d < d < d  d < < < d < d < d < d < d < d y d < < < d < d  d < d < d Z d < < < < < < < < < d < d s d < d < d r d < < < d < d š d < d < d d < < < < < d < d < d < d d < d < d d < < < d < d  d < d < d G d < < < < < < < d < d V d < d < d k d < < < d < d Ʒ d < d < d d < < < d < d < d Ʒ d < < < d < d ƨ d < d < d r d < =J =� =" = = = = = = = d = d d = d = d r d = = = d = d d = d = d š d = = = = = d = d d = d = d = d = d = d ű d = = = d = d ï d = d =! d r d =# =; =$ =. =% =+ =& d =' d =( d =) d =* d s d =, d =- d z d =/ =5 =0 d =1 d =2 d =3 d =4 d Ʒ d =6 d =7 d =8 d =9 d =: d Z d =< =C == =@ => d =? d ï d =A d =B d d =D =G =E d =F d  d =H d =I d  d =K =j =L =[ =M =T =N =Q =O d =P d  d =R d =S d ï d =U =X =V d =W d ï d =Y d =Z d d =\ =c =] =` =^ d =_ d ï d =a d =b d Z d =d =g =e d =f d d =h d =i d d =k =} =l =s =m =p =n d =o d d =q d =r d V d =t =w =u d =v d  d =x d =y d =z d ={ d =| d s d =~ = = = = d = d d = d = d d = = = d = d š d = d = d = d = d = d  d = ># = = = = = = = = = = = d = d = d = d = d š d = d = d = d = d = d d = = = d = d = d = d = d d = d = d Ʒ d = = = = = d = d ˘ d = d = d Z d = = = d = d = d = d = d d = d = d = d = d = d Z d = = = = = = = d = d = d = d = d y d = d = d d = = = d = d  d = d = d ս d = = = = = d = d = d = = d = d ï d = = = d = d  d = d = d d = > = = = = = = = d = d = d = d = d d = d = d d = = = d = d = d = d = d x d = d = d d = >� d = = d = d  d > > > d > d  d > d > d  d > > > > d > > d > d ű d > > > d > d ˘ d > d > d d > > > > > d > d i d > d > d > d > > > d > d Ʒ d >! d >" d  d >$ >c >% >D >& >5 >' >. >( >+ >) d >* d x d >, d >- d d >/ >2 >0 d >1 d d >3 d >4 d Z d >6 >@ >7 >: >8 d >9 d Œ d >; d >< d >= d >> d >? d d >A d >B d >C d d >E >Q >F >J >G d >H d >I d d >K >N >L d >M d d >O d >P d G d >R >Y >S >V >T d >U d d >W d >X d ƙ d >Z >] >[ d >\ d d >^ d >_ d >` d >a d >b d  d >d > >e > >f > >g >j >h d >i d k d >k d >l d >m d >n r >o r >p r >q r >r r >s r >t r >u r >v r >w r >x r >y r >z r >{ r >| r >} r >~ r > r Lt r > > > d > d  d > d > d d > > > > > d > d > d > d > d Z d > d > d s d > d > d > d Œ d > > > > > > > d > d d > d > d y d > > > d > d ï d > d > d d > > > > > d > d š d > d > d s d d > > d > d s d > h > U\ > L\ > H > @ > ? > ?E > > > > > > > > > > > d > d y d > d > d > d > d > d Z d > > > d > d d > d > d d > > > > > d > d ` d > d > d d > > > d > d  d > d > d  d > > > > > > > d > d Z d > d > d d > > > d > d d > d > d d > > > > > d > d à d > d > d r d d > > d > d > d > d > d d > ?# > ? > ? ?� ? ? d ? d d ? d ? d ? d ? d ? d d ? ? ? d ? d ? d ? d ? d d ? d ? d L d ? ? ? ? ? d ? d ? d d ? d ? d d ? ? ? d ? d ƨ d ?! d ?" d r d ?$ ?3 ?% ?, ?& ?) ?' d ?( d d ?* d ?+ d d ?- ?0 ?. d ?/ d  d ?1 d ?2 d d ?4 ?> ?5 ?; ?6 d ?7 d ?8 d ?9 d ?: d Z d ?< d ?= d d ?? ?B ?@ d ?A d  d ?C d ?D d  d ?F ? ?G ?l ?H ?Z ?I ?P ?J ?M ?K d ?L d d ?N d ?O d ˘ d ?Q ?T ?R d ?S d  d ?U d ?V d ?W d ?X d ?Y d d ?[ ?b ?\ ?_ ?] d ?^ d s d ?` d ?a d y d ?c ?i ?d d ?e d ?f d ?g d ?h d ï d ?j d ?k d ű d ?m ?| ?n ?u ?o ?r ?p d ?q d s d ?s d ?t d ҉ d ?v ?y ?w d ?x d  d ?z d ?{ d ï d ?} ? ?~ ? ? d ? d ? d ? d ? d  d ? d ? d Ʒ d ? ? ? d ? d ï d ? d ? d y d ? ? ? ? ? ? ? ? ? d ? d d ? d ? d ? d ? d ? d d ? ? ? d ? d  d ? d ? d > d ? ? ? ? ? d ? d d ? d ? d d ? ? ? d ? d  d ? d ? d d ? ? ? ? ? ? ? d ? d d ? d ? d d ? ? ? d ? d  d ? d ? d s d ? ? ? ? ? d ? d  d ? d ? d d ? ? ? d ? d s d ? d ? d r d ? @Y ? @ ? ? ? ? ? ? ? ? ? d ? d 7 d ? d ? d Z d d ? ? d ? d ? d ? d ? d 7 d ? ? ? ? ? d ? d ? d ? d ? d Z d ? d ? d d ? ? ? d ? d > d ? d ? d d ? @ ? ? ? ? ? d ? d d ? d ? d  d ? @ @� d @ d Z d @ d @ d d @ @ @ @ @ d @ d ˘ d @ d @ d ƨ d @ @ @ d @ d d @ d @ d ƨ d @ @4 @ @% @ @ @ @ @ d @ d y d @ d @ d ï d @ @" @ d @! d d @# d @$ d d @& @- @' @* @( d @) d d @+ d @, d d @. @1 @/ d @0 d r d @2 d @3 d d @5 @G @6 @@ @7 @= @8 d @9 d @: d @; d @< d d @> d @? d ƨ d @A @D @B d @C d Ʒ d @E d @F d d @H @O @I @L @J d @K d d @M d @N d ` d @P @S @Q d @R d Ʒ d @T d @U d @V d @W d @X d d @Z @ @[ @} @\ @k @] @d @^ @a @_ d @` d ï d @b d @c d š d d @e @f d @g d @h d @i d @j d d @l @s @m @p @n d @o d š d @q d @r d d @t @z @u d @v d @w d @x d @y d d @{ d @| d š d @~ @ @ @ @ @ @ d @ d @ d @ d @ d d @ d @ d @ d @ d @ d  d @ @ @ d @ d d @ d @ d ï d @ @ @ @ @ d @ d y d @ d @ d d @ @ @ d @ d d @ d @ d ï d @ @ @ @ @ @ @ @ @ d @ d d @ d @ d  d @ @ @ d @ d d @ d @ d d @ @ @ @ @ d @ d @ d d @ d @ d d @ @ @ d @ d ï d @ d @ d Z d @ @ @ @ @ @ @ d @ d k d @ d @ d d @ @ @ d @ d  d @ d @ d  d @ @ @ @ @ d @ d d @ d @ d  d @ @ @ d @ d d @ d @ d d @ A @ A] @ A! @ A @ @ @ @ @ @ @ d @ d d @ d @ d d d @ @ d @ d Z d @ @ @ @ @ d @ d ï d @ d @ d s d @ @ @ d @ d d A� d A d d A A A A A A A d A d ƨ d A d A d  d A A A d A d y d A d A d d A A A A A d A d d A d A d d A A A d A d ï d A d A d . d A" A> A# A2 A$ A+ A% A( A& d A' d  d A) d A* d r d A, A/ A- d A. d  d A0 d A1 d  d A3 A: A4 A7 A5 d A6 d d A8 d A9 d ˘ d d A; A< d A= d ï d A? AN A@ AG AA AD AB d AC d Z d AE d AF d d AH AK AI d AJ d  d AL d AM d Œ d AO AV AP AS AQ d AR d Ʒ d AT d AU d Z d AW AZ AX d AY d ƨ d A[ d A\ d d A^ A A_ A A` Au Aa Ak Ab Ah Ac d Ad d Ae d Af d Ag d  d Ai d Aj d d Al Ao Am d An d ƨ d Ap d Aq d Ar d As d At d r d Av A} Aw Az Ax d Ay d d A{ d A| d ï d A~ A A d A d A d A d A d ï d A d A d  d A A A A A A A d A d x d A d A d ƨ d A d A d A d d A A A A A d A d  d A d A d d A A A d A d ï d A d A d d A A A A A A A A A d A d  d A d A d š d A A A d A d Ʒ d A d A d d A A A A A d A d d A d A d d A A A d A d Ʒ d A d A d Z d A A A A A A A d A d d A d A d A d ܹ d A A A d A d d A d A d y d A A A A A d A d A d A A A A A A A A A A A A A A A A A A A d A d A d s A A A G s s G A A A d A d s d A d A d  d A B A B> A B" A B A B B� B B d B d B d B d B d d B d B d d B B B d B d B d B d B d s d B d B d d B B B B B d B d Ʒ d B d B d ï d B B B d B d s d B d B! d ï d B# B2 B$ B+ B% B( B& d B' d ƙ d B) d B* d r d B, B/ B- d B. d d B0 d B1 d d B3 B7 d B4 B5 d B6 d d B8 B; B9 d B: d ƨ d B< d B= d d B? B^ B@ BO BA BH BB BE BC d BD d  d BF d BG d ű d BI BL BJ d BK d d BM d BN d d BP BW BQ BT BR d BS d d BU d BV d Ʒ d BX B[ BY d BZ d d B\ d B] d d B_ B B` Bd d Ba Bb d Bc d s d Be Bh Bf d Bg d ` d Bi d Bj d Bk d Bl B Bm 7 Bn > Bo > Bp > Bq > Br > Bs > Bt > Bu > Bv > Bw > Bx > By > Bz > B{ B~ B| > B} > 7 > B > B > > > B 7 <W B B B B B d B d B d B d B d Ʒ d B d B d ï d B B B d B d E d B d B d ï d B G B B B B B B B B B d B d B d B d B d  d B d B d k d B B B d B d ` d B d B d ï d B B B B B d B d  d B d B d ï d B d B d B d ï d B B B B B B B d B d ï d B d B d ï d B B B d B d  d B d B d š d B B d B B d B d d B G B d B d B d B B G^ B B  B B B  B   B B   B B  B  B  B  B  B  65 B B  L  B E B DF B C B CA B C  B B   B B  B B B B  B B B 8 5 G V B B B   f B B Q v  B B B B B B  . PP B B 6 4  C�  C C   C C# C   C C  C C C C C C C C   C C nu 6& ? C C C C    C C ! 1 n C C C C C C  A y Q C C n  Q a C  C! C"  q  C$   C% C&  C' C6 C( C/ C) C, C* C+   C- C.  C0 C3 C1 C2 65  C4 C5 C7 C= C8 C:  C9 ]  C; C<   C>  C? C@ ,   CB Ci CC CU CD   CE CF  CG CQ CH CK  CI CJ   CL CN  CM ;  CO CP  K  e  CR CS   CT 6q  CV   CW CX  CY Cc CZ C` C[ C]  C\  U C^ C_  o   Ca  Cb  [  Cd  Ce Cg  Cf k 8 Ch  {  Cj Cz Ck   Cl Cm  Cn Cv  Co Cp Cs Cq Cr  ׁ Ct Cu   Cw  Cx   Cy  C{   C| C}  C~ C C C C C C C  ց  C C  C C C   k C C & 6 F  C C C C C C V f = ʊ C C v  C  C   C C C C C C C   C C  C C  C C C  C  4 C C    C  C C  C  C  C   C C  C C C C  C C  ;)  C C C r C  C C C C  3P < C    C C C   C C  C C C C  C C    C C C     C  C  C  7�  C   C C  C C C C  C C C   n C C C  n  C C  0  C C C C C C @    C  6 C  C C  O n9  C D! C D C   C C  C C C C C  C C  nH _ C  C C  L  nf C C C C  C o  C C )  D�  D   D   D D  D D D D D D D D   D D D D D D   � D D n nW n D D D D D D   , D D < L [ D  D D ~ 6 k  D" D> D#   D$ D%  D& D4 D' D. D( D+ D) D*  {   D, D-     D/ D1 D0   u D2 D3 j   M D5 D; D6 D9 D7 D8 n    D:    D<   D= 7  D?   D@ DA  DB   DC  DD DE   ě DG D DH D DI Dn DJ Df DK   DL DM  DN D\ DO DU DP DR DQ   P` DS DT  N  n DV DY DW DX 6   P$ DZ D[ ;    D] Dc D^ D`  D_  % Da Db X   4 Dd  De    Dg   Dh Di  Dj  Dk  Dl  Dm   5 Do D Dp   Dq Dr  Ds Dz Dt Dw  Du Dv   C  Dx  Dy   D{  D| D~  D}  5 D D  3_  S D   D D  D D D D D D D D  P3 c r D D  ;  : D D D D   D D     D D D D  D  � D D     D  D D  0 ?  D D D D D   D D  D D D D D D  D  O D D _  o  D D D D 6    D D   X  D D D D  D W  D D    PB D   D   D   D D  D D D D D D D   ʵ  D    D D    D D D   D  ł D  D D  ^ (  D D D   D D  D D D D D D D D  R  7 D D  n  Q D D D   G  D n  D   D D   W D   D D  D D D   D  D f  D  D   D  u D  D E  D D   D D  D D D   D D    E�   E E    E  E   E E  E E E E E  E   \  E E    E   E  E   E Fv E E E Eq E E3  E E   E  E E E' E E!  E E E 8 5 G V E" E$ E#   f E% E& Q v  E( E/ E) E, E* E+  . PP E- E. 6 4  E0  E1 E2   E4 ES E5   E6  E7 E8 EG E9 E@ E: E= E; E<   E> E? nu 6& ? EA ED EB EC    EE EF ! 1 n EH EO EI EL EJ EK  A y Q EM EN n  Q a EP  EQ ER  q  ET   EU  EV EW Ef EX E_ EY E\ EZ E[   E] E^  E` Ec Ea Eb 65  Ed Ee Eg Em Eh Ej  Ei ]  Ek El   En  Eo Ep ,   Er E Es E Et   Eu  Ev Ew E Ex E{  Ey Ez   E| E~  E} ;  E E  K  e  E E   E 6q  E   E  E E E E E E E  E  U E E  o   E  E  [  E  E E  E k 8 E  {  E E E   E  E E E  E E E E E  ׁ E E   E  E   E  E   E  E E E E E E E E E  ց  E E  E E E   k E E & 6 F  E E E E E E V f = ʊ E E v  E  E   E F E E E E E   E  E E E  E E E  E  4 E E    E  E E  E  E  E   E  E E E E E  E E  ;)  E E E r E  E E E E  3P < E    E E E   E  E E E E E  E E    E E E     E  E  E  7�  F�   F  F F F F F  F F F   n F F F  n  F F  0  F F F F F F @    F  6 F  F F  O n9  F FQ F F2 F   F  F F F( F F$ F!  F" F#  nH _ F%  F& F'  L  nf F) F/ F* F,  F+ o  F- F. )  F0  F1   F3   F4  F5 F6 FE F7 F> F8 F; F9 F:   F< F= F? FB F@ FA   � FC FD n nW n FF FM FG FJ FH FI   , FK FL < L [ FN  FO FP ~ 6 k  FR Fn FS   FT  FU FV Fd FW F^ FX F[ FY FZ  {   F\ F]     F_ Fa F`   u Fb Fc j   M Fe Fk Ff Fi Fg Fh n    Fj    Fl   Fm 7  Fo   Fp  Fq Fr   Fs  Ft Fu   ě Fw G$ Fx F Fy F Fz F F{   F|  F} F~ F F F F F F   P` F F  N  n F F F F 6   P$ F F ;    F F F F  F  % F F X   4 F  F    F   F  F F  F  F  F   5 F F F   F  F F F F F  F F   C  F  F   F  F F  F  5 F F  3_  S F   F  F F F F F F F F F  P3 c r F F  ;  : F F F F   F F     F F F F  F  � F F     F  F F  0 ?  F G F F F   F  F F F F F F F  F  O F F _  o  F F F F 6    F F   X  F F F F  F W  F F    PB F   F   F   F  F F F F F F F F   ʵ  F    F F    F F F   F  ł F  G� G  ^ (  G G G   G  G G G G G G G G G  R  7 G G  n  Q G G G   G  G n  G   G G   W G   G  G G G G   G  G f  G!  G"   G#  u G%  G& G3  G' G(   G)  G* G+ G/ G,   G- G.    G0   G1 G2    G4 GC G5   G6  G7 G8 G? G9 G< G:  G;   \  G= G>    G@   GA  GB   GD  GE  GF  GG  GH  GI G\ GJ GK 65  GL GM M GN M GO M GP M GQ M GR M GS M GT M GU M M GV M GW GX M M GY GZ M G[ M ; M G]  ց  G_ G` Ga Gb Gc Gd Ge Gf Gg Gh Gi Gj Gk Gl Gm Gn Go Gp Gq Gr Gs Gt Gu Gv Gw Gx Gy Gz G{ G| G} G~ G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G L 65 G d G d ï d G G G G G G G G G d G d Z d G d G d G d G d G d d G G G d G d ï d G d G d G d G d G d d G G G G G d G d  d G d G d G d G d G d ï d G G G d G d ï d G d G d d G G G G G G G d G d Ʒ d G d G d > d G G G d G d Ʒ d G d G d d G H G H G d H� d s d H d H d H d H d H d ï d d H H d H d d H J? H I H H H HW H H5 H H# H H H H H d H d H d H d H d ` d H d H d s d H H H d H d d H! d H" d  d H$ H. H% H( H& d H' d  d H) d H* d H+ d H, d H- d Z d H/ H2 H0 d H1 d ï d H3 d H4 d ï d H6 HE H7 H> H8 H; H9 d H: d ƙ d H< d H= d d H? HB H@ d HA d ï d HC d HD d s d HF HP HG HM HH d HI d HJ d HK d HL d d HN d HO d Ʒ d HQ HT HR d HS d d HU d HV d d HX H} HY Hk HZ Hd H[ Ha H\ d H] d H^ d H_ d H` d Z d Hb d Hc d d He Hh Hf d Hg d Dz d Hi d Hj d Ʒ d Hl Hv Hm Hs Hn d Ho d Hp d Hq d Hr d V d Ht d Hu d d Hw Hz Hx d Hy d d H{ d H| d  d H~ H H H H H H d H d i d H d H d d H H H d H d  d H d H d ƨ d H H H H H d H d  d H d H d  d H H H d H d à d H d H d ƨ d H H H H H H H H H H H d H d r d H d H d d H H H d H d > d H d H d s d H H H H H d H d Ʒ d H d H d d H H H d H d d H d H d d H H H H H H H d H d  d H d H d ƨ d H H H d H d ï d H d H d d H H H H H d H d d H d H d Z d H H H d H d d H d H d > d H H H H H H H H H d H d s d H d H d d H H H d H d d H d H d H d H d H d d H H d H H d H d d H H H d H d i d H d H d  d H I H I H I I� d I d d I d I d d I I I d I d d I d I d d I I I I I d I d d I d I d d I I I d I d d I d I d d I I I I` I IA I I/ I I( I! I% I" d I# d I$ d Z d I& d I' d d I) I, I* d I+ d d I- d I. d s d I0 I: I1 I4 I2 d I3 d d I5 d I6 d I7 d I8 d I9 d  d I; I> I< d I= d 6b d I? d I@ d Ʒ d IB IQ IC IJ ID IG IE d IF d š d IH d II d ï d IK IN IL d IM d s d IO d IP d > d IR IY IS IV IT d IU d ï d IW d IX d Z d IZ I] I[ d I\ d 7 d I^ d I_ d d Ia I Ib I Ic I Id Ig Ie d If d d Ih d Ii d Ij d Ik Il Im In Iy Io Ip Iq Ir Is It Iu Iv Iw Ix cg Iz I{ I| I} I~ I I I I I I I I I cg I I I d I d Ʒ d I d I d I d I d I d d I I I I I d I d I d I d I d d I d I d I d I d I d V d I I I d I d ï d I d I d d I I I I I I I d I d d I d I d ï d I I I d I d d I d I d d I I I I I d I d Œ d I d I d d I d I d I d d I J� I I I I I I I I I d I d  d I d I d Ʒ d I I I d I d x d I d I d ű d I I I I I d I d  d I d I d  d d I I d I d j d I I I I I I I d I d y d I d I d x d I I I d I d d I d I d Œ d I I I I I d I d  d I d I d Œ d I I I d I d d I d I d d J J J J J J J J J d J d s d J d J d ƨ d J J J d J d d J d J d L d J J J d J d J d ï d d J J d J d ƨ d J J- J J& J J# J d J d J d J! d J" d z d J$ d J% d  d J' J* J( d J) d d J+ d J, d ï d J. J8 J/ J5 J0 d J1 d J2 d J3 d J4 d d J6 d J7 d ƨ d J9 J< J: d J; d d J= d J> d x d J@ KT JA J JB J JC Jb JD JP JE JL JF JI JG d JH d x d JJ d JK d Z d JM d JN d JO d  d JQ JX JR JU JS d JT d d JV d JW d d JY J\ JZ d J[ d Z d J] d J^ d J_ d J` d Ja d d Jc Jr Jd Jk Je Jh Jf d Jg d d Ji d Jj d ƙ d d Jl Jm d Jn d Jo d Jp d Jq d d Js Jz Jt Jw Ju d Jv d d Jx d Jy d  d J{ J~ J| d J} d r d J d J d J d J d J d i d J J J J J J J d J d J d J d J d J d d J J J d J d Ʒ d J d J d ű d J J J J J d J d  d J d J d J d J d J d i d J J J d J d  d J d J d r d J J J J J d J d J d ƨ d J J J d J d ï d J d J d J d J d J d r d J J J J J d J d ` d J d J d d J J J d J d  d J d J d ƨ d J K J J J J J J J J J d J d J d J d J d G d J d J d r d J J J d J d J d J d J d d J d J d  d J J J J J d J d ï d J d J d d J J J d J d ï d J d J d J d J d J d d J K� J J J J J d J d d J d J d d J J J d J d d J d J d  d K K K K K d K d  d K d K d š d K K K d K d  d K d K d Ʒ d K K, K K K K d K K d K d d K K K d K d  d K d K d d K K( K K% K d K! d K" d K# d K$ d ï d K& d K' d ƨ d K) d K* d K+ d  d K- K? K. K5 K/ K2 K0 d K1 d ƨ d K3 d K4 d x d K6 K9 K7 d K8 d Z d K: d K; d K< d K= d K> d L d K@ KG KA KD KB d KC d Z d KE d KF d Z d KH KN KI d KJ d KK d KL d KM d Z d KO d KP d KQ d KR d KS d ï d KU K KV K KW Ks KX Kg KY K` KZ K] K[ d K\ d ` d K^ d K_ d r d Ka Kd Kb d Kc d Dz d Ke d Kf d ï d Kh Kl d Ki Kj d Kk d Z d Km Kp Kn d Ko d d Kq d Kr d  d Kt K Ku K| Kv Ky Kw d Kx d d Kz d K{ d Ʒ d K} K K~ d K d d K d K d  d K K K K K d K d K d K d K d L d K d K d K d K d K d r d K K K d K d d K d K d  d K K K K K K K K K d K d 7 d K d K d r d K K K d K d ƙ d K d K d r d K K K K K d K d d K d K d r d K K K d K d d K d K d d K K K K K K K d K d y d K d K d d K K K d K d K d K d K d d K d K d K d K d K d  d K K K K K d K d K d K d K d d K d K d x d K K K d K d d K d K d r d K L K K K K K K K K K d K d d K d K d r d K K K d K d à d K d K d ï d K K K K K d K d d K d K d d d K K d K d Ʒ d K L L� L L L L d L d d L d L d ƨ d L L L d L d Ʒ d L d L d d L L L L L d L d ï d L d L d x d L L L d L d ï d L d L d ï d L L@ L L. L L' L! L$ L" d L# d ï d L% d L& d d L( L+ L) d L* d ï d L, d L- d x d L/ L9 L0 L3 L1 d L2 d ï d L4 d L5 d L6 d L7 d L8 d s d L: L= L; d L< d > d L> d L? d ƨ d LA LM LB LI LC LF LD d LE d Ʒ d LG d LH d <u d d LJ LK d LL d d LN LU LO LR LP d LQ d ƨ d LS d LT d d LV LY LW d LX d ï d LZ d L[ d  d L] Q L^ N L_ M[ L` L La L Lb L Lc Lx Ld Lk Le Lh Lf d Lg d s d Li d Lj d ï d Ll Lr Lm d Ln d Lo d Lp d Lq d r d Ls d Lt d Lu d Lv d Lw d s d Ly L Lz L} L{ d L| d s d L~ d L d ƙ d d L L d L d š d L L L L L d L d L d y d L L L d L d L d L d L d d L L L L L d L d d L d L d d d L L d L d  d L L L L L L L L L d L d Z d L d L d Ʒ d d L L d L d  d L L L L L d L d s d L d L d š d L L L d L d ï d L d L d r d L L L L d L L d L d s d L L L d L d  d L d L d  d L L L L L d L d ï d L d L d d d L L d L d d L M L L L L L L L L L d L d d L d L d L d L d L d Œ d d L L d L d ï d L L L L L d L d d L d L d d L L L d L d y d L d L d ƨ d L M L L L L L d L d  d L d L d d L M L d M� d s d M d M d M d M d M d G d M M M M M d M d M d M d M d s d M d M d r d M M M d M d Ʒ d M d M d ï d M M< M M- M M# M M M d M d d M! d M" d d M$ M* M% d M& d M' d M( d M) d Z d M+ d M, d d M. M5 M/ M2 M0 d M1 d d M3 d M4 d d M6 M9 M7 d M8 d i d M: d M; d ƨ d M= ML M> ME M? MB M@ d MA d Z d MC d MD d d MF MI MG d MH d d MJ d MK d s d MM MT MN MQ MO d MP d r d MR d MS d d MU MX MV d MW d d MY d MZ d d M\ M M] M M^ M M_ Mo M` Mh Ma Md Mb d Mc d d Me d Mf d Mg d Z d Mi Ml Mj d Mk d d Mm d Mn d d Mp Mw Mq Mt Mr d Ms d ҉ d Mu d Mv d d Mx M~ My d Mz d M{ d M| d M} d  d M d M d z d M M M M M M M d M d d M d M d ƨ d M d M d M d à d M M M M M d M d ï d M d M d s d M M M d M d d M d M d d M M M M M M M M M d M d  d M d M d  d M M M d M d ï d M d M d d M M M M M d M d M d M d M d Ʒ d M d M d M d M d M d d M M M d M d s d M d M d d M M M M M M M d M d d M d M d G d M M M d M d M d M d M d š d M d M d d M M M M M d M d d M d M d d M M M d M d d M d M d d M NJ M N M M M M M M M d M d ` d M d M d ï d M M M d M d d M d M d  d M M M d M d M d M d M d M d ï d N� N N d N d  d N d N d ` d N N; N N4 N N N d N d N d N d N d ï d N d N d N d N  N  N  N  N  N  N N% N  N  N  N  N  N  N  N!  N"  N#  N$   tI N&  N'  N(  N)  N* N1 N+   N,  N- N.  N/  N0  tI  N2  N3  T  N5 N8 N6 d N7 d s d N9 d N: d ƨ d N< NC N= N@ N> d N? d d NA d NB d d ND NG NE d NF d Z d NH d NI d d NK Nm NL N^ NM NW NN NQ NO d NP d  d NR d NS d NT d NU d NV d 7 d NX N[ NY d NZ d s d N\ d N] d d N_ Nf N` Nc Na d Nb d s d Nd d Ne d > d Ng Nj Nh d Ni d ï d Nk d Nl d ƨ d Nn N No Nv Np Ns Nq d Nr d  d Nt d Nu d  d Nw N| Nx d Ny d Nz d N{ d Œ d N} d N~ d d N N N N N d N d ƙ d N d N d d N N N d N d  d N d N d N d N d N d ƙ d N O N O N N N N N N N N N N N d N d Z d N d N d N d N d N d d N N N d N d Z d N d N d ï d N N N N N d N d d N d N d d N N N d N d N d N N N N d N d x d N N N N N d N d N d Œ d N N N d N d ï d N d N d Ʒ d N N N N N d N d d N d N d  d N N N d N d s d N d N d  d N N N N N N N N N d N d Ʒ d N d N d d N N N d N d d N d N d  d N N N N N d N d N d N d N d Z d N d N d š d d N N d N d ` d N O N O� N N N d N d d N d N d 6b d O O O d O d y d O d O d d O O O O O d O d ` d O d O d d O O O d O d O d O d Z d O d O d ` d O Oa O O? O O- O O# O O O d O d x d O! d O" d ï d O$ O' O% d O& d  d O( d O) d O* d O+ d O, d ï d O. O8 O/ O5 O0 d O1 d O2 d O3 d O4 d Z d O6 d O7 d d O9 O< O: d O; d d O= d O> d ï d O@ OO OA OH OB OE OC d OD d ` d OF d OG d r d OI OL OJ d OK d Ʒ d OM d ON d r d OP OW OQ OT OR d OS d ï d OU d OV d d OX O^ OY d OZ d O[ d O\ d O] d d O_ d O` d d Ob O Oc Or Od Ok Oe Oh Of d Og d CN d Oi d Oj d d Ol Oo Om d On d ƨ d Op d Oq d ƨ d Os Oz Ot Ow Ou d Ov d i d Ox d Oy d d O{ O~ O| d O} d L d O d O d ` d O O d O O O O d O d O d O d O d ï d O d O d š d O O O O O d O d d O d O d d O O O d O d d O d O d  d O P O O O O O O O O O O O d O d d O d O d d O O O d O d  d O d O d ƙ d O O O O O d O d ` d O d O d d O d O d O d r d O O O O O O O d O d < d O d O d O d O d O d d O O O d O d s d O d O d d O O O O O d O d x d O d O d :y d O O O d O d d O d O d r d O O O O O O O O O d O d G d O d O d  d O O O d O d x d O d O d  d O O d O O d O d O d O d O d  d O O O d O d d O d O d d O Pf O P_ P� P P d P d d P d P d P d P 7 P PK 7 P P 7 P 7 P 7 P 7 P 7 P P# P P P 7 P 7 P P 7 P  7 P 7 7  P 7 P P 7 P 7 P P 7 P P 7 P 7 7 K P! 7 P" 7 7  P$ P3 P% P) P& P' P( 7 P* P. 7 P+ P, P- K 7 K 7 P/ P1 P0 7 7  7 P2  7 P4 PG P5 P@ P6 7 P7 7 7 P8 P9 P< P: 7 P; K ) P= P? 7 P>  7 7 , 7 PA 7 PB PC 7 PD 7 PE 7 PF 7 7 K PH 7 PI 7 7 PJ  7 PL 7 PM 7 PN 7 PO 7 PP PW 7 PQ 7 PR 7 PS 7 PT 7 PU 7 PV  7 PX 7 PY 7 PZ 7 P[ 7 P\ 7 P] 7 7 P^  7 P` Pc Pa d Pb d y d Pd d Pe d V d Pg Pu Ph Pk Pi d Pj d ƨ d Pl d Pm d Pn d Po Pr Pp Pq Qy 3 6 ּ Ps Pt Dz u 9 Q5 Pv P| Pw d Px d Py d Pz d P{ d Œ d P} d P~ d Z d P P P P P P P P P P P d P d ï d P d P d P d P P P d P d Ʒ d P d P d  d P P P P P d P d ` d P d P d d P P P d P d ï d P d P d L d P P P P P d P d P d d P P P d P d d P d P d d P P P P P d P d  d P d P d d P P P d P d s d P d P d d P P P P P P P P P d P d Z d P d P d s d P P P d P d d P d P d s d P P P P P d P d  d P d P d  d P P P d P d  d P d P d s d P P P P P P P d P d P d P d P d d P d P d Z d P P P d P d Z d P d P d ƨ d P P P P P d P d ï d P d P d Z d P Q P d P d P d P L P L L P P L Q� L Q L Q L Q L Q L Q L Q L Q L Q L Q L Q L Q L Q L Q L L Q d Q d G d Q S@ Q R Q Q Q Q] Q Q; Q Q& Q Q Q Q Q d Q d ï d Q d Q d d Q Q# Q! d Q" d  d Q$ d Q% d  d Q' Q. Q( Q+ Q) d Q* d  d Q, d Q- d ï d Q/ Q8 Q0 d Q1 d Q2 d Q3 Q5 Q4 ï ï Dz Q6 Q7 Dz ï ï Dz Q9 d Q: d ï d Q< QK Q= QG Q> QD Q? d Q@ d QA d QB d QC d ˘ d QE d QF d ï d d QH QI d QJ d k d QL QS QM QP QN d QO d d QQ d QR d d QT QZ QU d QV d QW d QX d QY d r d Q[ d Q\ d Ʒ d Q^ Q Q_ Qq Q` Qj Qa Qg Qb d Qc d Qd d Qe d Qf d Œ d Qh d Qi d r d Qk Qn Ql d Qm d š d Qo d Qp d  d Qr Q| Qs Qy Qt d Qu d Qv d Qw d Qx d ˘ d Qz d Q{ d i d Q} Q Q~ d Q d ï d Q d Q d  d Q Q Q Q d Q Q d Q d d Q Q Q d Q d x d Q d Q d d Q Q Q Q Q d Q d ï d Q d Q d Q d Q d Q d d Q Q Q d Q d d Q d Q d  d Q Q Q Q Q Q Q Q Q Q Q d Q d s d Q d Q d d d Q Q d Q d  d Q Q Q Q Q d Q d d Q d Q d d Q d Q d Q d Ʒ d Q Q Q Q d Q Q d Q d Ʒ d Q Q Q d Q d ƙ d Q d Q d d Q Q Q Q Q d Q d Z d Q d Q d ƙ d Q Q Q d Q d Z d Q d Q d d Q Q Q Q Q Q Q Q Q d Q d Q d Q d Q d i d Q d Q d  d Q Q Q d Q d Ʒ d Q d Q d Œ d Q Q Q Q Q d Q d Q d Q d Q d  d Q d Q d s d d Q Q d Q d d Q R Q R Q R R� d R d d R d R d R d R d R d  d R R R d R d Ʒ d R d R d ï d R R R R R d R d r d R d R d d R R R d R d r d R d R d ҉ d R R R R` R! R@ R" R4 R# R* R$ R' R% d R& d  d R( d R) d Z d R+ R1 R, d R- d R. d R/ d R0 d ` d R2 d R3 d  d R5 R< R6 R9 R7 d R8 d d R: d R; d d d R= R> d R? d d RA RQ RB RI RC RF RD d RE d ƨ d RG d RH d d RJ RN RK d RL d RM d d RO d RP d š d RR RY RS RV RT d RU d Ʒ d RW d RX d Z d RZ R] R[ d R\ d ï d R^ d R_ d ï d Ra R Rb Rq Rc Rj Rd Rg Re d Rf d d Rh d Ri d  d Rk Rn Rl d Rm d d Ro d Rp d d Rr R| Rs Rv Rt d Ru d Z d Rw d Rx d Ry d Rz d R{ d  d R} d R~ d R d d R R R R R R R d R d ű d R d R d R d R d R d ˘ d R R R d R d  d R d R d R d R d R d Z d R R R R R d R d Ʒ d R d R d R d R d R d Z d R R R d R d Z d R d R d ƨ d R R R R R R R R d R R d R d ï d R R R d R d R d R d R d d R d R d  d R R R R R d R d R d R d R d  d R d R d d R R R d R d d R d R d ï d R R R R R R R d R d R d R R R R R R R R R R R R R R R R R R K R d R d ƨ d d R R d R d s d R R R R R d R d Ʒ d R d R d ˘ d R R R d R d Z d R d R d s d R S R S R S R S S� d S d S d S d S d d S d S d ï d S S S d S d S d S d S d  d S d S d ï d S S S S S d S d i d S d S d Œ d d S S d S d d S S1 S S* S! S$ S" d S# d d S% d S& d S' d S( d S) d ս d S+ S. S, d S- d ï d S/ d S0 d š d S2 S9 S3 S6 S4 d S5 d ű d S7 d S8 d ï d S: S= S; d S< d ` d S> d S? d  d SA TS SB S SC S SD Sc SE ST SF SM SG SJ SH d SI d d SK d SL d i d SN SQ SO d SP d š d SR d SS d d SU S\ SV SY SW d SX d ï d SZ d S[ d ï d S] S` S^ d S_ d ˘ d Sa d Sb d ï d Sd Sy Se So Sf Si Sg d Sh d d Sj d Sk d Sl d Sm d Sn d > d Sp Sv Sq d Sr d Ss d St d Su d G d Sw d Sx d s d Sz S S{ S~ S| d S} d Z d S d S d S d S d S d d S S S d S d S d S d S d d S d S d ï d S S S S S S S S S d S d  d S d S d s d S S S d S d  d S d S d S d S d S d ` d S S d S S d S d V d S S S d S d Œ d S d S d d S S S S S S S d S d Z d S d S d  d S S S d S d V d S d S d > d S S S S S d S d G d S d S d S d S d S d  d S S S d S d  d S d S d Ʒ d S T S S S S S S S S S d S d d S d S d d S d S d S d Ʒ d S S S S S d S d  d S d S d Ʒ d S S S d S d x d S d S d Z d S S S S S S S d S d x d S d S d s d S d S d S d Ʒ d S T S T S d S d T� d T d T d  d T d T d  d T T T d T d ï d T d T d  d T T- T T! T T T T T d T d  d T d T d  d T T T d T d T d T d T d d T d T d š d T" T& d T# T$ d T% d d T' T* T( d T) d d T+ d T, d d T. T= T/ T6 T0 T3 T1 d T2 d ï d T4 d T5 d d T7 T: T8 d T9 d d T; d T< d ƙ d T> TI T? TF T@ d TA d TB d TC d TD TE  H 4  TG d TH d  d TJ TP TK d TL d TM d TN d TO d d TQ d TR d d TT T TU T TV Tu TW Tf TX Tb TY T_ TZ d T[ d T\ d T] d T^ d d T` d Ta d d d Tc Td d Te d  d Tg Tn Th Tk Ti d Tj d d Tl d Tm d d To Tr Tp d Tq d  d Ts d Tt d G d Tv T Tw T~ Tx T{ Ty d Tz d y d T| d T} d ï d T T T d T d ï d T d T d x d T T T T T d T d d T d T d T d T d T d ƨ d T T T d T d d T d T d ƨ d T T T T T T T T T d T d d T d T d d T T T d T d d T d T d  d T T T T T d T d ƨ d T d T d ï d T T T d T d ƨ d T d T d T d T d T d G d T T T T T T T d T d ˘ d T d T d r d T T T d T d  d T d T d  d T T T T T d T d ƨ d T d T d Œ d T T T d T d d T d T d d T U T T T T T T T T T d T d  d T d T d s d T T T d T d r d T d T d T d d T T T T T d T d i d T d T d > d T T T d T d d T d T d ƨ d T U T U T U T d U� d U d U d U d s d U d U d d U U U d U d ƙ d U d U d G d U U U U U d U d d U d U d x d U U U d U d Ʒ d U d U d  d U U= U U1 U U' U! U$ U" d U# d d U% d U& d ƙ d U( U+ U) d U* d d U, d U- d U. d U/ d U0 d s d U2 U6 U3 d U4 d U5 d r d U7 U: U8 d U9 d d U; d U< d d U> UM U? UF U@ UC UA d UB d  d UD d UE d Dz d UG UJ UH d UI d d UK d UL d i d UN UU UO UR UP d UQ d Z d US d UT d r d UV UY UW d UX d d UZ d U[ d d U] _n U^ [ U_ XG U` Vf Ua U Ub U Uc U Ud Us Ue Ul Uf Ui Ug d Uh d d Uj d Uk d Œ d Um Up Un d Uo d  d Uq d Ur d > d Ut U{ Uu Ux Uv d Uw d Z d Uy d Uz d d U| U U} d U~ d r d U d U d r d U U U U U U U d U d Z d U d U d d U U U d U d d U d U d  d U U U U U d U d ï d U d U d  d U U U d U d ï d U d U d ï d U U U U U U U U U d U d d U d U d  d U U U d U d d U d U d ƨ d U U U U U d U d Z d U d U d s d U U U d U d U d U d U d ï d U d U d d U U U U U U U d U d s d U d U d d U U U d U d Ʒ d U d U d ï d U U U U U d U d Z d U d U d d U U U d U d  d U d U d ƨ d U V# U V U U U U U U U d U d  d U d U d s d U U U d U d d U d U d š d U V U U U d U d U d U d U d Œ d U d U d V� d V d V d ï d V V V d V d s d V d V d Z d V V V V V V V d V d Ʒ d V d V d V d d V V d V d d V V V V V d V d Z d V d V d ï d d V V! d V" d 6b d V$ VG V% V4 V& V- V' V* V( d V) d r d V+ d V, d  d V. V1 V/ d V0 d d V2 d V3 d s d V5 V? V6 V9 V7 d V8 d  d V: d V; d V< d V= d V> d  d V@ VD VA d VB d VC d ï d VE d VF d  d VH VW VI VP VJ VM VK d VL d ï d VN d VO d  d VQ VT VR d VS d d VU d VV d ï d VX V_ VY V\ VZ d V[ d y d V] d V^ d d V` Vc Va d Vb d d Vd d Ve d d Vg V Vh V Vi V Vj Vr d Vk Vl Vo Vm d Vn d d Vp d Vq d ï d Vs Vw Vt d Vu d Vv d  d Vx V{ Vy d Vz d d V| d V} d V~ d V d V d Ʒ d V V V V V V V d V d d V d V d à d V V V d V d d V d V d V d V d V d d V V V V V d V d Z d V d V d  d V V V d V d r d V d V d Ʒ d V V V V V V V V V d V d V d  d V d V d d V V V d V d d V d V d ï d V V V V V d V d V d V d V d ï d V d V d ` d V V V d V d V d V d V d d V d V d V d V d V d d V V V V V d V d V d V d V d V d ï d V V V d V d Œ d V d V d V d V d V d d V V V V V d V d d V d V d V d V d V d d V V V d V d r d V d V d i d V X V W V W V V V d V d V d ï d V V V d V d r d V d W� d s d W W W W W d W d Ʒ d W d W d d W W W d W d Z d W d W d d W W W W d W W d W d W d W W W W W Œ W W W W= W Œ W W1 Œ W W W' Œ W W! Œ 4l W" W# W% 4l W$ Xc 4l W& 4l Xc 4l Œ W( Œ W) Œ W* W+ Œ Œ W, W- Œ W. Œ W/ Œ W0 Œ Œ W2 Œ W3 Œ Œ W4 Œ W5 W6 Œ W7 Œ Œ W8 Œ W9 W: Œ Œ W; Œ W< Œ Œ W> W? WV W@ WK Œ WA WB Œ Œ WC WD Œ Œ WE WF Œ WG Œ WH Œ WI Œ Œ WJ Œ WL Œ WM Œ Œ WN WO Œ Œ WP Œ WQ WR Œ Œ WS WT Œ WU Œ Œ WW Wc Œ WX WY Wb Œ WZ W[ Œ Œ W\ W] Œ Œ W^ W_ Œ W` Œ Œ Wa ) Œ Œ W Wd Œ We Œ Wf W Wg W Wh W Wi ) Wj W~ Wk ) Wl ) Wm ) Wn ) Wo ) Wp ) Wq ) Wr ) Ws ) Wt ) Wu ) Wv ) Ww ) Wx ) Wy ) Wz ) W{ ) W| ) W} )  ) W ) W ) ) W ) ) W W ) ) W W ) W ) ) W ) W ) W ) ) W W ) W ) ) W Œ W Œ W Œ W Œ W Œ W Œ W Œ W Œ Œ W Œ W Œ W Œ W Œ W Œ W W Œ Œ W W Œ W Œ W Œ W Œ W Œ W Œ W Œ W Œ W Œ W Œ Œ W W Œ W W Œ W Œ W W Œ W Œ W Œ Œ W Œ W Œ W Œ W Œ W Œ Œ W Œ W W W Œ W 4l W 4l W 4l W 4l 4l W W 4l 4l W W 4l 4l W W W 4l W 4l W W 4l {  W Œ W W  W  W  W  W  W W W W W  W   W W  W  W   W W  l  W W W   W W  W   W W  W  )  W   W W   W  W W  W     W W  W   W  W  W W  W   W   W W W d W d d W d W d ï d W X W X X� d X d d X d X d X d X d X d d X X X d X d X d X d X d s d X d X d d X X( X X d X X X X d X d d X d X d d X X$ X X! X d X d ˘ d X" d X# d Ʒ d d X% X& d X' d :y d X) X5 X* X1 X+ X. X, d X- d d X/ d X0 d  d d X2 X3 d X4 d d X6 X= X7 X: X8 d X9 d d X; d X< d  d X> XD X? d X@ d XA d XB d XC d d XE d XF d d XH Y XI Yf XJ X XK X XL X[ XM XT XN XQ XO d XP d Z d XR d XS d y d XU XX XV d XW d d XY d XZ d s d X\ X X] X` X^ d X_ d s d Xa d Xb d Xc d Xd Xe X Xf Xg Xh Xi Xj Xk Xl Xm Xn Xo Xp Xq Xr Xs Xt X Xu X~ Xv Xw Xx Xy Xz X{ X| X} ł X X X X X X X X X ł X X X X X X X ł X X X X X X X X X ł X X X X X X X X X X X X ł X X X d X d X d X d X d  d X d X d ï d X X X X X X X d X d d X d X d  d X X X d X d Œ d X d X d d X X X X X d X d G d X d X d k d X X X d X d ` d X d X d ƨ d X YD X Y5 X Y. X d X d X d X d  X  X X  X  X  X  X X X X X  X    X  X X X X X X X X X X X  X X X X X X * * X X X X X X  X  X X Y- X  X Y Y� Y Y Y Y Y Y Y  Y Y Y  $  *& Y Y Y   Y   E  Y Y Y  Y  Y  % Y  Y Y Y  Y  k   Y  Y  Y   Y  Y  Y Y    Y! Y' Y"  Y#  Y$  Y%  Y&  E  Y(  Y)   Y*  Y+ Y,     Y/ Y2 Y0 d Y1 d d Y3 d Y4 d ï d Y6 Y= Y7 Y: Y8 d Y9 d d Y; d Y< d d Y> YA Y? d Y@ d  d YB d YC d Z d YE YW YF YM YG YJ YH d YI d r d YK d YL d s d YN YQ YO d YP d  d YR d YS d YT d YU d YV d Œ d YX Y_ YY Y\ YZ d Y[ d > d Y] d Y^ d s d Y` Yc Ya d Yb d  d Yd d Ye d :y d Yg Y Yh Y Yi Yx Yj Yq Yk Yn Yl d Ym d à d Yo d Yp d d Yr Yu Ys d Yt d ` d Yv d Yw d ï d Yy Y Yz Y} Y{ d Y| d š d Y~ d Y d d d Y Y d Y d ï d Y Y Y Y Y Y Y d Y d š d Y d Y d ï d Y Y Y d Y d ï d Y d Y d ƨ d Y Y Y d Y d Y d Œ d Y Y Y d Y d ƙ d Y d Y d 9 d Y Y Y Y Y Y Y Y Y d Y d  d Y d Y d s d Y Y Y d Y d ƨ d Y d Y d r d Y Y d Y Y d Y d d Y Y Y d Y d d Y d Y d r d Y Y Y Y Y d Y d Y d d Y Y Y d Y d Z d Y d Y d ï d Y Y Y Y Y d Y d d Y d Y d d Y Y Y d Y d ƙ d Y d Y d ï d Y Z] Y Z Y Y Y Y Y Y Y Y Y d Y d d Y d Y d ï d Y Y Y d Y d Z d Y d Y d Z d Y Y Y Y Y d Y d Ʒ d Y d Y d r d d Y Y d Y d d Y Z Y Z Y Y Y d Y d  d Y d Z� d  d Z Z Z d Z d Ʒ d Z d Z d d Z Z Z Z Z d Z d d Z d Z d Z d Z š Z š Z š Z š Z Z  < š Z Z Z d Z d x d Z d Z d d Z Z> Z Z/ Z! Z( Z" Z% Z# d Z$ d d Z& d Z' d  d Z) Z, Z* d Z+ d d Z- d Z. d ï d Z0 Z7 Z1 Z4 Z2 d Z3 d Ʒ d Z5 d Z6 d Z d Z8 Z; Z9 d Z: d d Z< d Z= d d Z? ZN Z@ ZG ZA ZD ZB d ZC d  d ZE d ZF d d ZH d ZI d ZJ d ZK d ZL d ZM d  d ZO ZV ZP ZS ZQ d ZR d ˘ d ZT d ZU d ï d ZW ZZ ZX d ZY d d Z[ d Z\ d d Z^ Z Z_ Z~ Z` Zo Za Zh Zb Ze Zc d Zd d d Zf d Zg d ï d Zi Zl Zj d Zk d r d Zm d Zn d i d Zp Zw Zq Zt Zr d Zs d d Zu d Zv d š d Zx Z{ Zy d Zz d G d Z| d Z} d d Z Z Z Z Z Z Z d Z d  d Z d Z d Z d Z d Z d  d Z Z Z d Z d Ʒ d Z d Z d d Z Z Z Z Z d Z d d Z d Z d x d Z Z Z d Z d k d Z d Z d  d Z Z Z Z Z Z Z Z Z d Z d d Z d Z d ï d d Z Z d Z d x d Z Z Z Z Z d Z d s d Z d Z d  d Z Z Z d Z d  d Z d Z d Z d Z z Z z Z z Z z Z z Z z Z z Z z Z z z Z z Z Z z Z z z Z z Z Z z Z z z Z z Z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z Z z  z Z Z Z Z Z Z Z d Z d  d Z d Z d ï d Z Z Z d Z d i d Z d Z d Z d Z d Z d d Z Z Z Z Z d Z d Z d Z d Z d d Z d Z d ï d Z [ [� d [ d  d [ d [ d d [ ]Y [ \ [ [ [ [N [ [2 [ [ [ [ [ [ [ d [ d d [ d [ d Z d [ [ [ d [ d Z d [ d [ d [ d [ d [ d  d [ [+ [ [% [ d [! d [" d [# d [$ d ս d [& d [' d [( d [) d [* d d [, [/ [- d [. d d [0 d [1 d Œ d [3 [? [4 [8 d [5 [6 d [7 d Z d [9 [< [: d [; d d [= d [> d :y d [@ [G [A [D [B d [C d i d [E d [F d d [H [K [I d [J d s d [L d [M d 6 d [O [k [P [_ [Q [X [R [U [S d [T d d [V d [W d ï d [Y [\ [Z d [[ d d [] d [^ d ï d [` [d d [a [b d [c d ï d [e [h [f d [g d ƨ d [i d [j d ï d [l [x [m [t [n [q [o d [p d  d [r d [s d s d [u d [v d [w d ` d [y [ [z [} [{ d [| d d [~ d [ d d [ [ [ d [ d i d [ d [ d Ʒ d [ [ [ [ [ [ [ [ [ [ [ d [ d d [ d [ d ï d [ [ [ d [ d d [ d [ d ï d [ [ [ [ [ d [ d [ d [ d [ d d [ d [ d :y d [ [ [ d [ d [ d [ d [ d Ʒ d [ d [ d ƨ d [ [ [ [ [ [ [ d [ d [ d [ d [ d ˘ d [ d [ d :y d [ [ [ d [ d Ʒ d [ d [ d d [ [ [ [ [ d [ d r d [ d [ d d [ [ [ d [ d i d [ d [ d d [ [ [ [ [ [ [ [ [ d [ d  d [ d [ d d [ [ [ d [ d d [ d [ d d [ [ [ [ [ d [ d d [ d [ d i d [ d [ d [ d d [ [ [ [ [ [ [ d [ d d [ d [ d s d [ [ [ d [ d s d [ d [ d > d [ \ [ \ \� d \ d ű d \ d \ d \ d \ d \ d d d \ \ d \ d Ʒ d \ \ \ \P \ \1 \ \ \ \ \ \ \ d \ d d \ d \ d 7 d \ \ \ d \ d d \ d \ d ƨ d \ \* \! \$ \" d \# d d \% d \& d \' d \( d \) d  d \+ \. \, d \- d  d \/ d \0 d d \2 \A \3 \: \4 \7 \5 d \6 d  d \8 d \9 d  d \; \> \< d \= d d \? d \@ d s d \B \I \C \F \D d \E d d \G d \H d ï d \J \M \K d \L d  d \N d \O d L d \Q \s \R \d \S \Z \T \W \U d \V d d \X d \Y d d \[ \^ \\ d \] d d \_ d \` d \a d \b d \c d d \e \l \f \i \g d \h d Ʒ d \j d \k d  d \m \p \n d \o d ƨ d \q d \r d Z d \t \ \u \ \v \ \w d \x d \y d \z ƙ \{ ƙ \| ƙ \} ƙ \~ ƙ \ ƙ \ ƙ \ \ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ \ \ \ \ \ \ \ ƙ \ \ \ 8J \ 6 6 \ \ \ \ \ \ ƙ V V < ƙ \ < ƙ \ ƙ \ ƙ ƙ \ \ \ ƙ \ \ \ ƙ 8 \ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ \ ƙ 54 ƙ ƙ \ ƙ ƙ \ \ \ ƙ %  ƙ \ ƙ ƙ \ \ ƙ \ ƙ \ ƙ ƙ \ ƙ \ \ ƙ \ ƙ ƙ \ 5C ƙ \ d \ d š d \ \ \ d \ d i d \ d \ d ï d \ \ \ \ \ d \ d d \ d \ d d \ \ \ d \ d s d \ d \ d d \ ] \ \ \ \ \ \ \ \ \ d \ d Z d \ d \ d \ d \ d \ d d \ \ \ d \ d ƨ d \ d \ d  d \ \ \ \ \ d \ d d \ d \ d d \ \ \ d \ d ï d \ d \ d d \ ] ]� ] ] ] ] d ] d ï d ] d ] d Z d ] ] ] d ] d d ] d ] d ï d ] ] ] ] ] d ] d  d ] d ] d s d ] ] ] d ] d Z d ] d ] d ] d ] d ] d d ]! ]C ]" ]4 ]# ]0 ]$ ]* ]% d ]& d ]' d ]( ]) ]+ d ], d ]- d ]. d ]/ d Œ d d ]1 ]2 d ]3 d d ]5 ]? ]6 ]9 ]7 d ]8 d  d ]: d ]; d ]< d ]= d ]> d Z d d ]@ ]A d ]B d d ]D ]L ]E d ]F ]I ]G d ]H d d ]J d ]K d d ]M ]U ]N ]R ]O d ]P d ]Q d d ]S d ]T d Œ d d ]V ]W d ]X d d ]Z ^D ][ ] ]\ ] ]] ]v ]^ ]m ]_ ]f ]` ]c ]a d ]b d Z d ]d d ]e d Ʒ d ]g ]j ]h d ]i d d ]k d ]l d ï d ]n ]r d ]o ]p d ]q d d d ]s ]t d ]u d 7 d ]w ] ]x ]| d ]y ]z d ]{ d s d d ]} ]~ d ] d d ] ] ] ] ] d ] d ` d ] d ] d  d ] d ] d ] d s d ] ] ] ] ] ] ] ] ] d ] d ] d ] d ] d d ] d ] d Z d ] ] ] d ] d s d ] d ] d ï d ] ] ] ] ] d ] d  d ] d ] d Z d ] ] ] d ] d  d ] d ] d ï d ] ] ] ] ] ] ] d ] d ` d ] d ] d d ] ] ] d ] d d ] d ] d ï d ] ] ] ] ] d ] d d ] d ] d ƨ d d ] ] d ] d d ] ^ ] ] ] ] ] d ] ] ] d ] d  d ] d ] d Z d ] ] ] ] ] d ] d ï d ] d ] d d ] ] ] d ] d Ʒ d ] d ] d ï d ] ] ] ] ] ] ] d ] d d ] d ] d ï d ] ] ] d ] d Œ d ] d ] d Ʒ d ] ] ] ] ] d ] d > d ] d ] d ï d ] ^ ] d ^� d d ^ d ^ d ï d ^ ^$ ^ ^ ^ ^ ^ ^ ^ d ^ d Z d ^ d ^ d d ^ ^ ^ d ^ d Z d ^ d ^ d d ^ ^ ^ ^ ^ d ^ d  d ^ d ^ d d ^ ^! ^ d ^ d d ^" d ^# d ï d ^% ^4 ^& ^- ^' ^* ^( d ^) d  d ^+ d ^, d 7 d ^. ^1 ^/ d ^0 d d ^2 d ^3 d ï d ^5 ^< ^6 ^9 ^7 d ^8 d  d ^: d ^; d 6 d ^= ^A ^> d ^? d ^@ d O ^B d ^C d à d ^E ^ ^F ^ ^G ^| ^H ^Z ^I ^S ^J ^P ^K d ^L d ^M d ^N d ^O d à d ^Q d ^R d ï d ^T ^W ^U d ^V d Z d ^X d ^Y d 3 d ^[ ^u ^\ ^r ^] d ^^ d ^_ d ^` ^a ^b ^c ^d ^e ^f ^g ^h ^i ^j ^k ^l ^m ^n ^o ^p ^q ,l ^s d ^t d ï d ^v ^y ^w d ^x d ` d ^z d ^{ d d ^} ^ ^~ ^ ^ ^ ^ d ^ d k d ^ d ^ d ï d ^ ^ ^ d ^ d s d ^ d ^ d ^ d ^ d ^ d  d ^ ^ ^ ^ ^ d ^ d d ^ d ^ d ï d ^ ^ ^ d ^ d  d ^ d ^ d d ^ ^ ^ ^ ^ ^ ^ ^ ^ d ^ d d ^ d ^ d d ^ ^ ^ d ^ d ï d ^ d ^ d d ^ ^ ^ ^ ^ d ^ d ^ d ^ d ^ d i d ^ d ^ d d ^ ^ ^ d ^ d s d ^ d ^ d d ^ ^ ^ ^ ^ ^ ^ d ^ d d ^ d ^ d ^ d ^ d ^ d s d ^ ^ ^ d ^ d d ^ d ^ d z d ^ ^ ^ ^ ^ d ^ d  d ^ d ^ d ï d ^ ^ ^ d ^ d ` d ^ d ^ d š d ^ _/ ^ _ ^ ^ ^ ^ ^ ^ ^ d ^ d d ^ d ^ d ï d ^ ^ ^ d ^ d d ^ d ^ d d ^ _� ^ ^ ^ d ^ d s d ^ d ^ d ^ d ^ d ^ d d _ _ _ d _ d _ d _ d _ d  d _ d _ d _ d _ d _ d  d _ _ _ _ _ _ _ d _ d  d _ d _ d d _ _ _ d _ d _ d _ d _ d d _ d _ d d _! _( _" _% _# d _$ d d _& d _' d  d _) _, _* d _+ d d _- d _. d d _0 _R _1 _C _2 _9 _3 _6 _4 d _5 d  d _7 d _8 d š d _: _@ _; d _< d _= d _> d _? d i d _A d _B d  d _D _K _E _H _F d _G d ű d _I d _J d  d _L _O _M d _N d  d _P d _Q d d _S _b _T _[ d _U _V d _W d _X d _Y d _Z d Z d _\ __ _] d _^ d Z d _` d _a d  d _c _g _d d _e d _f d d _h _k _i d _j d d _l d _m d  d _o c _p a _q ` _r `! _s _ _t _ _u _ _v _} _w _z _x d _y d d _{ d _| d Z d _~ _ _ d _ d  d _ d _ d ï d _ _ _ d _ d _ d _ d _ d _ d d _ _ _ d _ d  d _ d _ d ï d _ _ _ _ _ _ _ d _ d i d _ d _ d V d _ _ _ d _ d d _ d _ d _ d _ k _ k k _ _ _ _ _ d _ d Ʒ d _ d _ d _ d _ r _ r _ r _ r _ r _ r _ r r _ r _ r _ r _ _ r _ r r _ _ r _ r _ r r _ r _ d _ d _ d d _ ` _ _ _ _ _ _ _ d _ d _ d _ d _ d d _ d _ d d _ _ _ d _ d _ d _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ ï _ _ ï ּ ï ּ _ d _ d ` d _ _ _ _ _ d _ d ï d _ d _ d ï d _ _ _ d _ d _ d _ d _ d  d _ d _ d _ d `� d ` d d ` ` ` ` ` ` ` d ` d  d ` d ` d d ` ` ` d ` d r d ` d ` d d ` ` ` ` ` d ` d L d ` d ` d ï d ` ` ` d ` d i d ` d ` d Dz d `" `^ `# `< `$ `3 `% `, `& `) `' d `( d d `* d `+ d Ʒ d `- `0 `. d `/ d z d `1 d `2 d r d `4 `8 d `5 `6 d `7 d  d d `9 `: d `; d  d `= `O `> `H `? `E `@ d `A d `B d `C d `D d  d `F d `G d š d `I `L `J d `K d d `M d `N d  d `P `W `Q `T `R d `S d ï d `U d `V d š d `X `[ `Y d `Z d ս d `\ d `] d ï d `_ ` `` `o `a `h `b `e `c d `d d s d `f d `g d  d `i `l `j d `k d ï d `m d `n d ï d `p `x `q `u `r d `s d `t d  `v d `w d  d `y ` `z d `{ d `| d `} d `~ d  d ` d ` d  d ` ` ` ` ` ` ` d ` d ï d ` d ` d d d ` ` d ` d ˘ d ` ` ` ` ` d ` d > d ` d ` d r d d ` ` d ` d ï d ` a! ` ` ` ` ` ` ` ` ` ` ` d ` d ï d ` d ` d ű d ` ` ` d ` d ,l d ` d ` d Dz d ` ` ` ` ` d ` d ` d ` d ` d d ` d ` d d ` ` ` d ` d Ʒ d ` d ` d d ` ` ` ` ` ` ` d ` d Ʒ d ` d ` d d ` ` ` d ` d ` d ` d ` d ï d ` d ` d ` d ` d ` d  d ` ` ` ` ` d ` d Z d ` d ` d x d ` ` ` d ` d š d ` d ` d ƨ d ` a ` ` ` ` d ` ` d ` d ï d ` ` ` d ` d ï d ` d ` d > d ` ` ` ` ` d ` d ` d ` d ` d Ʒ d ` ` ` d ` d  d a� d a d ï d a a a a d a a d a d Ʒ d a a a d a d ` d a d a d d a a a a a d a d a d a d a d d a d a d ï d a a a d a d d a d a d ï d a" al a# a? a$ a3 a% a, a& a) a' d a( d y d a* d a+ d ű d a- a0 a. d a/ d  d a1 d a2 d d a4 a8 a5 d a6 d a7 d :y d a9 a< a: d a; d ï d a= d a> d d a@ aZ aA aH aB aE aC d aD d x d aF d aG d d aI aW aJ d aK d aL d aM Œ aN Œ aO Œ aP Œ aQ Œ aR Œ aS Œ aT Œ aU Œ Œ aV 4^ aX d aY d ï d a[ ae a\ ab a] d a^ d a_ d a` d aa d d ac d ad d s d af ai ag d ah d d aj d ak d Z d am a an a ao ay ap av aq d ar d as d at d au d s d aw d ax d y d az a} a{ d a| d  d a~ d a d Œ d a a a d a d a d Z d a a a d a d a d a d a d Z d a d a d d a a a a a a a d a d i d a d a d  d a a a d a d > d a d a d š d a a a a a d a d ï d a d a d s d a a a d a d ï d a d a d d a b a b9 a a a a a a a a a a a d a d ƨ d a d a d d a a a d a d a d a d a d d a d a d d a a a a a d a d ï d a d a d d d a a d a d Œ d a a a a a a a d a d i d a d a d d a a a d a d d a d a d ƨ d a a a d a d a d  d a a a d a d  d a d a d ï d a b a b a a a a a d a d G d a d a d d a a a d a d  d a d a d a d a š b� š b š b š b š š b š b š b b š š b b š b š b š b š A š b b b b b d b d ƙ d b d b d Z d b d b d b d d b b* b b b d b d b d b d s d b! b' b" d b# d b$ d b% d b& d d b( d b) d d b+ b2 b, b/ b- d b. d ` d b0 d b1 d . d b3 b6 b4 d b5 d d b7 d b8 d  d b: by b; bZ b< bK b= bD b> bA b? d b@ d d bB d bC d d bE bH bF d bG d d bI d bJ d Z d bL bS bM bP bN d bO d d bQ d bR d  d bT bW bU d bV d d bX d bY d ƨ d b[ bj b\ bc b] b` b^ d b_ d i d ba d bb d ï d bd bg be d bf d d bh d bi d  d bk bu bl bo bm d bn d d bp d bq d br d bs d bt d :y d d bv bw d bx d ï d bz b b{ b b| b b} b b~ d b d d b d b d ï d b b b d b d Œ d b d b d ï d b b b b b d b d d b d b d ï d b b b d b d ű d b d b d ï d b b b b b b b d b d š d b d b d r d b b b d b d b d b d b d d b d b d d b b b b b d b d d b d b d ï d b b b d b d Œ d b d b d ï d b c> b b b b b b b b b b b d b d s d b d b d ï d b b b d b d b d b d b d y d b d b d r d b b b b b d b d d b d b d à d b b b d b d d b d b d ï d b b b b d b b d b d Ʒ d b b b d b d s d b d b d ï d b b b b b d b d  d b d b d  d b b b d b d Z d b d b d  d b c" b c b c c� c c d c d Ʒ d c d c d d c c c d c d c d c d c d i d c d c d d c c c c c d c d d c d c d ï d c c c d c d c d c d c d s d c d c! d ƨ d c# c2 c$ c+ c% c( c& d c' d ï d c) d c* d d c, c/ c- d c. d Œ d c0 d c1 d d c3 c7 d c4 c5 d c6 d ƨ d c8 c; c9 d c: d  d c< d c= d ï d c? c~ c@ c\ cA cM cB cF d cC cD d cE d ï d cG cJ cH d cI d r d cK d cL d š d cN cU cO cR cP d cQ d ï d cS d cT d ï d cV cY cW d cX d d cZ d c[ d ï d c] cl c^ ce c_ cb c` d ca d d cc d cd d Dz d cf ci cg d ch d ` d cj d ck d i d cm cw cn cq co d cp d Z d cr d cs d ct d cu d cv d  d cx c{ cy d cz d  d c| d c} d r d c c c c c c c c c d c d Ʒ d c d c d c d d c d c d c d  d c c c c c d c d Z d c d c d ï d c c c d c d ï d c d c d  d c c c c d c c d c d ï d c c c d c d d c d c d x d c c c c c d c d d c d c d ï d c c c d c d d c d c d c d c d c d Ʒ d c e c d c d@ c c c c c c c c c c c d c d r d c d c d Ʒ d c c c d c d ï d c d c d d c c c d c d c d ï d c c c d c d d c d c d ï d c c c c c c c d c d d c d c d d c c c d c d s d c d c d d c c c c c d c d x d c d c d  d c c c d c d y d c d c d ï d c d c d c d c d d� d d d d d d d d Z d d d d d d d ƨ d d d d d  d d d d d d d d d d d d d d ` d d d d d d d ï d d d d d d d d d d d Z d d d+ d d' d! d$ d" d d# d d d% d d& d ` d d( d d) d d* d ï d d, d6 d- d0 d. d d/ d d d1 d d2 d d3 d d4 d d5 d š d d7 d: d8 d d9 d d d; d d< d d= d d> d? 7� dA d dB dd dC dR dD dK dE dH dF d dG d š d dI d dJ d d dL dO dM d dN d d dP d dQ d ï d dS dZ dT dW dU d dV d d dX d dY d d d[ d^ d\ d d] d  d d_ d d` d da d db d dc d ƙ d de dw df dp dg dm dh d di d dj d dk d dl d ï d dn d do d ƙ d dq dt dr d ds d d du d dv d y d dx d dy d| dz d d{ d d d} d d~ d ï d d d d d d d  d d d d d d d d d d d d d d d d d d :y d d d d d ï d d d d d d d d d d d d :y d d d d d d d d d Dz d d d d d d d d d d d d ï d d d d d d d d d d d  d d d d d ï d d d d d d d d d d d d d d d d r d d d d d d d > d d eE d e� d d d d d d d d d d d d  d d d d d Z d d d d d d d d d d d d s d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d d d d d d d š d d d d d  d d d d d d d d d d d d d Z d d d d d ï d d d d d d d d d d d d d d d ܹ d d d d d d d d d d d d ƨ d d d d d ï d e e& e e e e e e e d e d d e d e d ƨ d e e e d e d ï d e d e d e d e d e d ï d e e e e e d e d ï d e d e d ƨ d e e# e d e d e d e! d e" d ` d e$ d e% d d e' e6 e( e/ e) e, e* d e+ d i d e- d e. d  d e0 e3 e1 d e2 d ű d e4 d e5 d ï d e7 e> e8 e; e9 d e: d d e< d e= d  d e? eB e@ d eA d Ʒ d eC d eD d d eF e eG ef eH eW eI eP eJ eM eK d eL d ƨ d eN d eO d ï d eQ eT eR d eS d ƨ d eU d eV d š d eX e_ eY e\ eZ d e[ d š d e] d e^ d  d e` ec ea d eb d  d ed d ee d  d eg ey eh er ei eo ej d ek d el d em en ep d eq d ű d es d et d eu d ev d ew d ex d d ez e e{ e~ e| d e} d d e d e d d e e e d e d Œ d e d e d > d e e e e e e e e e d e d  d e d e d ï d e e e d e d d e d e d d e e d e e d e d Z d e e e d e d 7 d e d e d L d e e e e e e e d e d d e d e d d e d e d e d d e e e e e d e d  d e d e d d e e e d e d ï d e d e d ï d e f e f? e f e e e e e e e e e d e d > d e d e d ï d e e e d e d d e d e d d e e d e e d e d ï d e e e d e d e d e d e d ï d e d e d ï d e e e e e e e d e d s d e d e d ï d e e e d e d ï d e d e d ï d e e e e e d e d k d e d e d ï d e f� e d e d Z d f d f d ï d f f f f f f f f f d f d f d f d f d ï d f d f d ï d f f f d f d Z d f d f d ï d f f d f f d f d s d f d f d f d  d f! f0 f" f) f# f& f$ d f% d d f' d f( d 7 d d f* f+ d f, d f- d f. d f/ d Z d f1 f8 f2 f5 f3 d f4 d x d f6 d f7 d  d f9 f< f: d f; d d f= d f> d š d f@ f fA ff fB fQ fC fJ fD fG fE d fF d Œ d fH d fI d ï d fK fN fL d fM d ҉ d fO d fP d š d fR f\ fS fV fT d fU d ս d fW d fX d fY d fZ d f[ d  d f] fc f^ d f_ d f` d fa d fb d i d fd d fe d Dz d fg fv fh fo fi fl fj d fk d d fm d fn d Dz d fp fs fq d fr d à d ft d fu d Dz d fw f~ fx f{ fy d fz d Ʒ d f| d f} d d f f f d f d Œ d f d f d š d f f f f f f f f f d f d  d f d f d š d f f f d f d  d f d f d d f f f f f d f d ï d f d f d f d f d f d  d f f f d f d f d f d f d  d f d f d Z d f f f f f f f d f d f d f d f d Z d f d f d s d f f f d f d f d f d f d d f d f d d f f f f f d f d Z d f d f d x d f f f d f d f d f d f d  d f d f d ï d f g f g7 f f f f f f f f f d f d Z d f d f d ű d f f f d f d ƙ d f d f d  d f f f f f d f d s d f d f d ï d f f f d f d Z d f d f d ƨ d f g f g f f f d f d š d f d f d f d f d g� d  d g g g d g d d g d g d d g g0 g d g d g d g d g g g g g g g g g g g g g g g g g g g K g! g" g# g$ g% g& g' g( g) g* g+ g, g- g. g/ K g1 g4 g2 d g3 d d g5 d g6 d Ʒ d g8 gl g9 gZ g: gV g; gS g< d g= d g> d g? gA g@ ƙ K ƙ ƙ gB ƙ gC gD ƙ gE ƙ gF ƙ ƙ gG gH ƙ gI ƙ gJ ƙ gK ƙ gL ƙ gM ƙ gN ƙ ƙ gO gP ƙ ƙ gQ gR ƙ ƙ gT d gU d V d gW d gX d gY d 7 d g[ ge g\ gb g] d g^ d g_ d g` d ga d d gc d gd d s d gf gi gg d gh d  d gj d gk d ï d gm g| gn gu go gr gp d gq d k d gs d gt d ï d gv gy gw d gx d  d gz d g{ d ï d g} g g~ g g d g d d g d g d ï d g g g d g d r d g d g d g d g d g d s d g g g g g g g g g g g d g d š d g d g d ï d g g g d g d s d g d g d d g g g g g d g d  d g d g d ï d g g g d g d s d g d g d d g g g g g g g d g d d g d g d š d g g g d g d Z d g d g d ï d g g d g g d g d ï d g g g d g d Z d g d g d ï d g g g g g g g g g d g d  d g d g d d g g g d g d d g d g d ï d g g g g g d g d g d g d g d Z d g d g d d d g g d g d ï d g h g g g g g d g d d g d g d g d g d g d ï d g g g d g d g d g d g d d g d h� d h d h d h d ï d h h h h h d h d d h d h d š d h h h d h d h d h d h d š d h d h d  d h z h ph h l h j h h h h@ h h= h h! h d h d ` d h" h1 h# h* h$ h' h% d h& d ï d h( d h) d Z d h+ h. h, d h- d  d h/ d h0 d Ʒ d h2 h6 h3 d h4 d h5 d  d h7 h: h8 d h9 d ï d h; d h< d d h> d h? d s d hA h hB ha hC hR hD hK hE hH hF d hG d d hI d hJ d r d hL hO hM d hN d  d hP d hQ d ï d hS hZ hT hW hU d hV d d hX d hY d ï d h[ h^ h\ d h] d Z d h_ d h` d ï d hb ht hc hm hd hj he d hf d hg d hh d hi d ï d hk d hl d d hn hq ho d hp d ƨ d hr d hs d d hu h| hv hy hw d hx d d hz d h{ d Ʒ d h} h h~ d h d  d h d h d d h h h h h h h h h d h d ï d h d h d  d h h h d h d š d h d h d d h h h h h d h d ï d h d h d s d h h h d h d d h d h d h d h d h š h š h š h š h š h š h š h š h š h š h š h š h š h š h š š h h š š h h h h h h h d h d h d h d h d i d h d h d d h d h d h d d h h h h h d h d ï d h d h d Z d d h h d h d  d h iR h i h h h h h h h h h d h d s d h d h d 7 d h h h d h d  d h d h d Z d h h h d h d h d ï d h d h d h d G d h i h h h h h d h d ï d h d h d ` d h h h d h d h d h d h d d h d i� d d i i i i i d i d Z d i d i d d i i i d i d s d i d i d ï d i i0 i i! i i i i i d i d  d i d i d d i i i d i d d i d i d d i" i) i# i& i$ d i% d d i' d i( d  d i* i- i+ d i, d d i. d i/ d à d i1 iC i2 i< i3 i9 i4 d i5 d i6 d i7 d i8 d ï d i: d i; d d i= i@ i> d i? d ƙ d iA d iB d  d iD iK iE iH iF d iG d d iI d iJ d  d iL d iM d iN d iO d iP d iQ d d iS i iT is iU id iV i] iW iZ iX d iY d d i[ d i\ d d i^ ia i_ d i` d d ib d ic d d ie il if ii ig d ih d d ij d ik d d im ip in d io d  d iq d ir d ï d it i iu i| iv iy iw d ix d  d iz d i{ d ï d i} i i~ d i d š d i d i d  d i i i i i d i d d i d i d d i i i d i d i d i d i d d i d i d i d i i i i i i i i i i i i i i d i d d i d i d Z d i i i d i d i d i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i Œ i i i i i i Œ i W Xc i Œ 4l Œ i i i i Œ *5 l Œ Œ i Œ \ i Œ Œ i i Œ Œ i d i d d i i i i i d i d d i d i d d i i i d i d i d i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ i ƙ ƙ K i d i d d i i i i i i i d i d ï d i d i d Z d i i i d i d d i d i d s d i j i j i d j� d ` d j d j d k d j j j d j d j d j d j d d j d j d d j k j j j jV j j. j j j j j j j d j d  d j d j d d d j j d j d d j j' j! j$ j" d j# d  d j% d j& d s d j( j+ j) d j* d ï d j, d j- d ï d j/ jA j0 j7 j1 j4 j2 d j3 d Z d j5 d j6 d š d j8 j> j9 d j: d j; d j< ï j= ï ï ּ j? d j@ d d jB jL jC jI jD d jE d jF d jG d jH d Z d jJ d jK d ï d jM jS jN d jO d jP d jQ d jR d d jT d jU d  d jW jp jX jd jY j` jZ j] j[ d j\ d  d j^ d j_ d à d d ja jb d jc d  d je ji d jf jg d jh d d jj jm jk d jl d d jn d jo d r d jq j jr jy js jv jt d ju d 7 d jw d jx d Z d jz j} j{ d j| d s d j~ d j d ï d j j j j j d j d  d j d j d r d j j j d j d d j d j d Ʒ d j j j j j j j j j j j d j d d j d j d s d j j j d j d Z d j d j d d j j d j j d j d ƨ d j j j d j d d j d j d 6 d j j j j j j j d j d d j d j d d j j j d j d d j d j d d j j j j j d j d d j d j d d j j j d j d j d j d j d  d j d j d 6 d j j j j j j j j j d j d d j d j d  d j j j d j d d j d j d ï d j j j j j d j d ï d j d j d ï d d j j d j d d j j j j j j j d j d d j d j d ï d j j j d j d d j d j d ƨ d j k j k j d k� d ï d k d k d d k k k d k d k d x d k d k d  d k k k kF k k1 k k" k k k k k d k d Z d k d k d k d k d k d d k k k d k d  d k d k! d s d k# k* k$ k' k% d k& d s d k( d k) d d k+ k. k, d k- d ` d k/ d k0 d d k2 k: k3 d k4 k7 k5 d k6 d d k8 d k9 d d k; kB k< k? k= d k> d  d k@ d kA d ï d d kC kD d kE d ï d kG kf kH kW kI kP kJ kM kK d kL d Z d kN d kO d d kQ kT kR d kS d ï d kU d kV d ï d kX k\ kY d kZ d k[ d r d k] k` k^ d k_ d ï d ka d kb d kc d kd d ke d d kg kv kh ko ki kl kj d kk d y d km d kn d š d kp ks kq d kr d  d kt d ku d Z d kw k~ kx k{ ky d kz d d k| d k} d ï d k k k d k d Z d k d k d k d k d k d d k k k k k k k k k k k d k d d k d k d k d k k k k k k k k k k k k k k k k k k k k k d k d d k d k d d k k k k k d k d k d k d k d ї d k d k d d k k k d k d  d k d k d d k k k k k k k d k d ƨ d k d k d d k k k d k d i d k d k d ï d k k k k k d k d ƨ d k d k d d d k k d k d  d k k k k k k k d k d k d r d k k k d k d d k d k d d k k k k k d k d x d k d k d x d k k k d k d Z d k d k d  d k l k l k k k d k d  d k d l� d Ʒ d l l l d l d s d l d l d  d l l l l l d l d :y d l d l d ï d l l l d l d ï d l d l d ï d l nY l m] l l l ls l lS l lA l l% l l" l d l! d ï d l# d l$ d d l& l) l' d l( d ï d l* d l+ d l, d l-  l.  l/  l0  l1  l2  l3  l4  l5  l6  l7  l8  l9  l:  l;  l<  l= l?  l> ܜ ܌ l@    lB lL lC lI lD d lE d lF d lG d lH d r d lJ d lK d d lM lP lN d lO d  d lQ d lR d Ʒ d lT lc lU l\ lV lY lW d lX d  d lZ d l[ d d l] l` l^ d l_ d d la d lb d ï d ld ll le li lf d lg d lh d G d lj d lk d ï d lm lp ln d lo d d lq d lr d ï d lt l lu l lv l} lw lz lx d ly d ` d l{ d l| d > d l~ l l d l d l d l d l d  d l d l d  d l l l l l d l d d l d l d ƙ d l l l d l d d l d l d  d l l l l l l l d l d ƙ d l d l d  d l l l d l d l d l d l d d l d l d l d l l l l 6& l l l l l l l l l l l l l l l  l l l l l l l l l ł ł l l l l l d l d d l d l d d l l l d l d 6 d l d l d l d r l r l r l m l l l l l l l l l d l d d l d l d ƙ d l l l d l d ï d l d l d  d l l l l l d l d ï d l d l d  d l l l d l d l d l d l d  d l d l d l d l d l d ` d m� m m m m m m d m d d m d m d ` d m m m d m d ï d m d m d d m m m m m d m d ï d m d m d ï d m m m d m d ï d m d m d 6 d m m> m m/ m! m( m" m% m# d m$ d > d m& d m' d d m) m, m* d m+ d d m- d m. d s d m0 m7 m1 m4 m2 d m3 d Ʒ d m5 d m6 d d m8 m; m9 d m: d ˘ d m< d m= d Z d m? mN m@ mG mA mD mB d mC d  d mE d mF d ï d mH mK mI d mJ d  d mL d mM d ï d mO mV mP mS mQ d mR d :y d mT d mU d ï d mW mZ mX d mY d Z d m[ d m\ d ï d m^ m m_ m m` m ma mp mb mi mc mf md d me d  d mg d mh d  d mj mm mk d ml d d mn d mo d d mq m{ mr mu ms d mt d d mv d mw d mx d my d mz d s d d m| m} d m~ d ƙ d m m m m m m m d m d  d m d m d Ʒ d m m m d m d d m d m d  d m m m m m d m d ï d m d m d r d m d m d m d ï d m m m m m m m m m d m d d m d m d ï d m m m d m d r d m d m d Z d m m m m m d m d ï d m d m d  d m m m d m d G d m d m d Ʒ d m m m m m m m d m d ï d m d m d ï d m m m d m d d m d m d ï d m m m m m d m d m d m d m d  d m d m d ï d m m m d m d d m d m d d m n m m m m m m m m m d m d > d m d m d Z d m m m d m d ï d m d m d Z d m m m m m d m d ï d m d m d  d m m m d m d d m d m d r d m n n� n n n n d n d d n d n d ï d n n n d n d ƨ d n d n d ï d n n n n n d n d d n d n d ï d n n n d n d Z d n d n d d n n: n n. n n' n! n$ n" d n# d Z d n% d n& d š d n( n+ n) d n* d d n, d n- d ï d n/ n6 n0 n3 n1 d n2 d š d n4 d n5 d ï d d n7 n8 d n9 d ï d n; nJ n< nC n= n@ n> d n? d ï d nA d nB d d nD nG nE d nF d Œ d nH d nI d ï d nK nR nL nO nM d nN d k d nP d nQ d  d nS nV nT d nU d Z d nW d nX d d nZ oY n[ n n\ n n] n| n^ nm n_ nf n` d na d nb d nc d nd d ne d s d ng nj nh d ni d d nk d nl d ï d nn nu no nr np d nq d  d ns d nt d ï d nv ny nw d nx d Ʒ d nz d n{ d ï d n} n n~ n n n n d n d > d n d n d d n n n d n d x d n d n d d n n n n n d n d  d n d n d s d n n n d n d d n d n d s d n n n n n n n n n d n d  d n d n d  d n n n d n d ` d n d n d r d n n n n n d n d  d n d n d  d n n n d n d  d n d n d d n n n n d n n d n d d n n n d n d d n d n d d n n n n n d n d W d n d n d ï d n n n d n d ` d n d n d ï d n o n n n n n n n n n d n d  d n d n d n d n d n d d n n n d n d d n d n d Ʒ d n n n n n d n d š d n d n d ï d n n n d n d d n d n d  d n o n o n o n d o� d d o d o d  d o o o d o d d o d o d d o o o o o d o d  d o d o d o d o d o d d o o o d o d s d o d o d d o o= o o. o o' o! o$ o" d o# d d o% d o& d  d o( o+ o) d o* d d o, d o- d ï d o/ o6 o0 o3 o1 d o2 d r d o4 d o5 d ï d o7 o: o8 d o9 d ï d o; d o< d  d o> oJ o? oF o@ oC oA d oB d Z d oD d oE d d d oG oH d oI d ï d oK oR oL oO oM d oN d d oP d oQ d ` d oS oV oT d oU d ï d oW d oX d d oZ o o[ o o\ o{ o] oo o^ oe o_ ob o` d oa d ï d oc d od d ï d of oi og d oh d  d oj d ok d ol d om d on d s d op ot d oq or d os d d ou ox ov d ow d  d oy d oz d s d o| o o} o o~ o o d o d ï d o d o d d o o o d o d  d o d o d 7 d o o o o o d o d d o d o d 6 d o o o d o d d o d o d Œ d o o o o o o o o o d o d Z d o d o d Œ d d o o d o d 6 d o o o o o d o d ï d o d o d ï d o o o d o d o d o o o o o o o o o o o o o o o o o o 8w o d o d s d o o o o o o o d o d  d o d o d  d o o o d o d r d o d o d i d o o d o o d o d  d o o o d o d  d o d o d d o p& o p o o o o o o o d o d d o d o d ï d d o o d o d Z d o o o o o d o d d o d o d ï d o p o d p� d ï d p d p d ƨ d p p p p p p p d p d d p d p d ï d p p p d p d d p d p d ï d p p p p p d p d d p d p d ï d p p# p d p d p d p! d p" d d p$ d p% d d p' pI p( p7 p) p0 p* p- p+ d p, d L d p. d p/ d ï d p1 p4 p2 d p3 d > d p5 d p6 d ï d p8 pB p9 p< p: d p; d ƨ d p= d p> d p? d  p@ pA  Tv  pC pF pD d pE d > d pG d pH d d pJ pY pK pR pL pO pM d pN d  d pP d pQ d ï d pS pV pT d pU d ï d pW d pX d Z d pZ pa p[ p^ p\ d p] d ï d p_ d p` d ï d pb pe pc d pd d d pf d pg d L d pi v] pj r pk q pl p pm p pn p po p~ pp pw pq pt pr d ps d d pu d pv d ï d px p{ py d pz d ï d p| d p} d ï d p p p p p d p d ƙ d p d p d ï d p p p d p d ƙ d p d p d ƨ d p p p p p p p d p d  d p d p d d p p p d p d d p d p d d p p p p p d p d ` d p d p d  d p p p d p d d p d p d  d p p p p p p p p p d p d d p d p d d p p p d p d  d p d p d p d p d p d Ʒ d p p p p p d p d d p d p d ï d p p p d p d ï d p d p d s d p p p p p p p d p d d p d p d ï d p p p d p d > d p d p d ï d p p p p p d p d G d p d p d d p p p d p d  d p d p d ` d p q. p q p q� p p p p p d p d d p d p d ï d p p p d p d  d p d p d ï d q q q q q d q d d q d q d i d d q q d q d r d q q q q q q q d q d d q d q d d q q q d q d q d > q q > 7 > q d q d d q q' q! q$ q" d q# d š d q% d q& d d q( q+ q) d q* d ï d q, d q- d d q/ qN q0 q? q1 q8 q2 q5 q3 d q4 d d q6 d q7 d 6 d q9 q< q: d q; d s d q= d q> d ï d q@ qG qA qD qB d qC d d qE d qF d r d qH qK qI d qJ d d qL d qM d ˘ d qO q^ qP qW qQ qT qR d qS d ƙ d qU d qV d s d qX q[ qY d qZ d ƨ d q\ d q] d  d q_ q q` q qa d qb d qc d qd qe qn qf qg qh qi qj qk ql qm qo qp qq qr q qs qt qu qv qw ? qx ? qy ? qz ? q{ q| ? q} ? ? q~ ? q q ł q ł q ł q ł q ł q ł q ł q ł q ł q ł q q q q q q q q q q ? ł q ł ł q q PP q ׁ q q ց ł ׁ q q q q q q y ł ׁ ł q q ł PP ? q q q q ł y ց 65 q q ł ʵ PP ł q ł q q q q q q ց j ł n q q n ł PP ł q ł q ł M ł q q q q q q q q q q q q q q q q q q q q q ׁ q q q q q q ) ł q d q d ï d q q q d q d d q d q d d q rb q r q q q q q q q q q d q d q d q d q d d q d q d ï d d q q d q d ï d q q q q q d q d ï d q d q d ƙ d q q q d q d ï d q d q d ï d q r q r q r q d r� d d r d r d ï d r r r d r d ƨ d r d r d > d r r r d r d r d 6 d r r r d r d d r d r d ï d r r7 r r( r r! r r r d r d d r d r d ï d r" r% r# d r$ d  d r& d r' d d r) r0 r* r- r+ d r, d G d r. d r/ d d r1 r4 r2 d r3 d d r5 d r6 d ï d r8 rD r9 r= r: d r; d r< d ï d r> rA r? d r@ d  d rB d rC d d rE rL rF rI rG d rH d d rJ d rK d G d rM rP rN d rO d Z d rQ d rR d rS d rT  rU  rV  rW y rX y rY y rZ y r[ y r\ y r] y y r^ r_ y r` y y ra y tI rc r rd r re rt rf rm rg rj rh d ri d ï d rk d rl d ï d rn rq ro d rp d d rr d rs d ï d ru r| rv ry rw d rx d Z d rz d r{ d d r} r r~ d r d à d r d r d V d r r r r r r r d r d d r d r d > d r r r d r d d r d r d r d r d r d d r r r r r d r d š d r d r d d r r r d r d  d r d r d  d r r r r r r r r r d r d ƨ d r d r d z d r r r d r d r d r d r d à d r r r r r d r d d r d r d  d r r r d r d x d r d r d à d r r r r r r r d r d  d r d r d r d r d r d d r d r d r d x d r r d r r d r d Z d r r r d r d d r d r d ï d r tQ r sh r s& r s r r r r r r r d r d š d r d r d ï d r r r d r d ï d r d r d d r r r r r d r d ƙ d r d r d ` d r s r d s� d d s d s d d s s s s s s s d s d  d s d s d d s s s d s d  d s d s d s d s d s d d s s s s s d s d ï d s d s d ï d s s# s! d s" d d s$ d s% d  d s' sF s( s7 s) s0 s* s- s+ d s, d  d s. d s/ d ˘ d s1 s4 s2 d s3 d ű d s5 d s6 d d s8 sB s9 s< s: d s; d d s= d s> d s? d s@ d sA d s d sC d sD d sE d  d sG sY sH sO sI sL sJ d sK d d sM d sN d ï d sP sV sQ d sR d sS d sT d sU d d sW d sX d  d sZ sa s[ s^ s\ d s] d d s_ d s` d ï d sb se sc d sd d d sf d sg d  d si t sj s sk s sl sv sm sp sn d so d d sq d sr d ss d st d su d > d sw s} sx d sy d sz d s{ d s| d d s~ d s d Ʒ d s s s s s d s d ï d s d s d  d s s s d s d ű d s d s d ï d s t� s s s s s d s d s d s s s š š s š s s š š s s š š s s š š s š s s š s š s š s š s š š s s š  š š s s s s š s š s š s š s š s s s s s s š s š s š š s s š s š s š š š s š s š s š s s s š s š s s š s š s š š s š s š š s š s s š s š s š s š s š š s s š š s s š š s s š > š š s š s š s š s s š s š s š s š s s s s s š š s s š s š s s ( š ( s š s š s š s š s s > š : š s š s š š s s š s š s s c š š ( s d s d d s s s d s d d s d s d ƨ d t t t t t d t d d t d t d d t t t d t d ï d t d t d :y d t t/ t t t t t d t d t d t d t d t d d t t t d t d Z d t d t d r d t! t( t" t% t# d t$ d d t& d t' d 7 d t) t, t* d t+ d d t- d t. d ï d t0 tB t1 t; t2 t5 t3 d t4 d ï d t6 d t7 d t8 d t9 d t: d L d t< t? t= d t> d s d t@ d tA d Z d tC tJ tD tG tE d tF d  d tH d tI d ï d tK tN tL d tM d d tO d tP d d tR u tS u tT u} tU ta tV tZ d tW tX d tY d ` d t[ t^ t\ d t] d ` d t_ d t` d ï d tb uv tc us td d te d tf d tg t th  ti  tj  tk  tl  tm  tn  to t~ tp  tq  tr  ts  tt  tu tz tv  tw  tx ty  tI tI  t{  t|  t}  tI  t  u   t  t t  t  t  t  t u t t t t t t t t t t  t t   t t   t T   t  T t t  t t  t  t  t  T  t  t  t  t t t t x   T t  o5  t t t  t t tI  o5  t  t   t  t t  t  o  t t  t t  t t T   u t t t  t t  t t t t  t  U- T t   t  o  T  t t   t t  t  t  {  t u t u t  t   t  t t o5 t o5 t t o5 t t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 T o5 t t t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 T o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 t o5 u� o5 u o5 u o5 u o5 T o5 u   u u u u u  u u  Tv  u  u  u  }3   sP u u  u u  u   o  u  u  u i T u uU u uB u u( u  u   u u  u! u$ u"  u#  x   u% u& u' Tg | T x u) u6 u*   u+  u, u- u3 u. u1 u/ u0 T T T u2 T o5 u4 T u5 T T tI  u7 u8 uA  u9 u: u> u; u= u< T  x T  u?   u@ sP  xg  uC  uD uN  uE  uF  uG uH uK uI  uJ   |? uL   uM u  uO   uP uQ   uR uS   uT tI ; uV un uW u[  uX uY  uZ  T  u\ ug  u]  u^  u_ u`  ua ud ub uc i o5 tI  ue uf sP x i o uh   ui  uj uk  ul  um  ~ } uo   up  uq ur   | ut d uu d ï d uw uz ux d uy d d u{ d u| d ï d u~ u u u u u u d u d ï d u d u d  d u u u d u d d u d u d ï d u u d u u d u d ï d u u u d u d Z d u d u d  d u u u u u u u u u d u d 7 d u d u d ï d u u u d u d  d u d u d d u u u u u d u d d u d u d d u u u d u d  d u d u d Ʒ d u u u u u u u d u d ï d u d u d r d u u u d u d d u d u d r d u u u u u d u d Z d u d u d  d u u u d u d Ʒ d u d u d s d u v u u u u u u u u u d u d x d u d u d ï d u u u d u d Z d u d u d  d u u u u u d u d ï d u d u d d u u u d u d d u d u d Ʒ d u v u v u u u d u d ï d v� d v d ï d v v v d v d v d v d v d x d v d v d  d v v v v v d v d d v d v d ˘ d v v v d v d Œ d v d v d v d v d v d d v v> v v/ v! v( v" v% v# d v$ d k d v& d v' d r d v) v, v* d v+ d 6 d v- d v. d ï d v0 v7 v1 v4 v2 d v3 d š d v5 d v6 d ï d v8 v; v9 d v: d Z d v< d v= d ï d v? vN v@ vG vA vD vB d vC d d vE d vF d x d vH vK vI d vJ d  d vL d vM d d vO vV vP vS vQ d vR d d vT d vU d  d vW vZ vX d vY d  d v[ d v\ d V d v^ xo v_ wu v` v va v vb v vc vr vd vk ve vh vf d vg d Œ d vi d vj d ï d vl vo vm d vn d  d vp d vq d ï d vs vz vt vw vu d vv d  d vx d vy d ï d v{ v~ v| d v} d  d v d v d d v v v v v v v d v d ï d v d v d Ʒ d v v v d v d s d v d v d ï d v v v v v d v d i d v d v d ï d v d v d v d ï d v v v v v v v v v d v d Z d v d v d ï d v v v d v d ï d v d v d ï d v v v v v d v d d v d v d ï d v v v d v d ï d v d v d d v v v v v v v d v d v d v d v d ` d v d v d d v v v d v d v d v d v d  d v d v d d v v d v v d v d  d v v v d v d B d v d v d š d v w v v v v v v d v v d v d r d v v v d v d d v d v d ï d v v d v v d v d  d v v v d v d Ʒ d v d v d  d v w v w v w� v d v d  d w d w d Ʒ d w w w d w d ï d w d w d  d w w w w w d w d d w d w d  d w w w d w d d w d w d  d w wV w w* w w# w w w d w d s d w! d w" d ï d w$ w' w% d w& d d w( d w) d ï d w+ wO w, wL w- d w. d w/ d w0 w1 *C w2 w3 w4 w5 wD w6 w= w7 w8 w; w9 w: : *S  w< *c *s w> wA w? w@ u Y wB wC * wE wF wI wG wH K wJ wK * wM d wN d ï d wP wS wQ d wR d d wT d wU d ï d wW wf wX w\ wY d wZ d w[ d š d w] wc w^ d w_ d w` d wa d wb d s d wd d we d Z d wg wn wh wk wi d wj d d wl d wm d d wo wr wp d wq d  d ws d wt d ï d wv w ww w wx w wy w wz w w{ w~ w| d w} d ƙ d w d w d > d w w w d w d  d w d w d s d w w d w w d w d s d d w w d w d s d w w w w w w w d w d d w d w d ï d d w w d w d ƙ d w w w d w d w d d w w w d w d Ʒ d w d w d d w w w w w w w w w d w d d w d w d ï d d w w d w d :y d w w w w w d w d Z d w d w d ` d w w w d w d y d w d w d ï d w w w w w w w d w d w d w ï w ï ï w w ï ï w ï w ï w w ï w ï ï w w ï w ï w ï ï w w ï w ï w ï w ï Q5 ï w d w d d w w w d w d Z d w d w d ï d w w w w w d w d ï d w d w d ï d w w w d w d  d w d w d  d w x3 w x w x w x w x w d x� d d x d x d ű d d x x d x d d x x x x x d x d ï d x d x d ï d x x x d x d š d x d x d Œ d x x' x x x x x d x d ï d x d x d š d x! x$ x" d x# d d x% d x& d s d x( x/ x) x, x* d x+ d Z d x- d x. d d d x0 x1 d x2 d d x4 xV x5 xD x6 x= x7 x: x8 d x9 d d x; d x< d d x> xA x? d x@ d s d xB d xC d V d xE xO xF xI xG d xH d d xJ d xK d xL d xM d xN d d xP xS xQ d xR d Z d xT d xU d ï d xW xc xX x_ xY x\ xZ d x[ d d x] d x^ d  d x` d xa d xb d d xd xh xe d xf d xg d s d xi xl xj d xk d š d xm d xn d ï d xp y xq y xr x xs x xt x xu x| xv xy xw d xx d Ʒ d xz d x{ d ï d x} x x~ d x d x d x d x d Z d x d x d ű d x x x x x d x d d x d x d ï d x x x d x d d x d x d Ʒ d x x x x x x x d x d  d x d x d d x x x d x d d x d x d  d x x x x x d x d d x d x d d x x x d x d d x d x d  d x x x x x x x x x d x d d x d x d ï d x x x d x d d x d x d ï d x x x d x d x d 7 d x x x d x d r d x d x d ï d x x x x x x x d x d Ʒ d x d x d d x x x d x d ï d x d x d ï d x y x y x d x d x d Z x x Z x Z x Z x Z x Z x Z x Z x Z x Z x Z x Z Z x x Z x Z x Z x Z Z x x Z x Z x Z x Z x Z x Z x Z y� Z y Z y Z y Z y Z y Z y Z y Z Z y 4{ Z y d y d > d y y y d y d d y d y d ƨ d y yM y y. y y" y y y y y d y d š d y d y d ï d y d y d y! d  d y# y' y$ d y% d y& d Z d y( y+ y) d y* d à d y, d y- d ï d y/ y> y0 y7 y1 y4 y2 d y3 d ` d y5 d y6 d ï d y8 y; y9 d y: d y d y< d y= d ï d y? yF y@ yC yA d yB d ƙ d yD d yE d  d yG yJ yH d yI d r d yK d yL d Z d yN y yO yr yP yk yQ yh yR d yS d yT d yU yg yV V yW V yX V yY V yZ V y[ V y\ V y] V y^ V V y_ y` V ya V yb V yc V yd V ye V yf V ( V V yi d yj d d yl yo ym d yn d d yp d yq d s d ys yz yt yw yu d yv d G d yx d yy d Ʒ d y{ y~ y| d y} d d y d y d d y y y y y d y d y d Z d y y y d y d  d y d y d ï d y y y y y d y d s d y d y d  d y y y d y d Ʒ d y d y d ï d y z y y y y y y y y y y y d y d ï d y d y d ï d y y y d y d y d y d y d s d y d y d  d y y y y y d y d d y d y d ï d y y y d y d d y d y d d y y y y y y y d y d š d y d y d Ʒ d y d y d y d ï d y y y y y d y d y d y d y d i d y d y d d y y y d y d š d y d y d ` d y y y y y y y y y d y d ï d y d y d ƨ d y y y d y d s d y d y d d y y y d y d y d d y y y d y d d y d y d d y z z� z z z z d z d à d z d z d Ʒ d z z z d z d  d z d z d  d z z z z z d z d ƨ d z d z d ï d z z z d z d 7 d z d z d  d z zT z z8 z z) z! z% z" d z# d z$ d  d z& d z' d z( d d z* z1 z+ z. z, d z- d  d z/ d z0 d d z2 z5 z3 d z4 d š d z6 d z7 d ï d z9 zE z: z> d z; z< d z= d ƙ d z? zB z@ d zA d ï d zC d zD d ï d zF zM zG zJ zH d zI d ï d zK d zL d ï d zN zQ zO d zP d i d zR d zS d ï d zU z zV ze zW z^ zX z[ zY d zZ d ï d z\ d z] d Z d z_ zb z` d za d d zc d zd d d zf z zg zj zh d zi d d zk d zl d zm d  zn zo z  zp zq  zr  zs  zt z  zu zv   zw  zx zy   zz z{   z| z}  z~   z  z   z  z z  z   z  z z   z  z  z z z d z d d z d z d  d z z z z z z z d z d  d z d z d z d z d z d d z z z d z d d z d z d d z z z z z d z d Ʒ d z d z d d z z z d z d ï d z d z d ï d z z ~ z | z { z {@ z z z z z z z z z z z d z d ï d z d z d  d z z z d z d z d z d z d s d z d z d d z z z z z d z d š d z d z d à d z z z d z d d z d z d  d z z z z z z z d z d Z d z d z d  d z z z d z d d z d z d d z z z z z d z d š d z d z d d z z z d z d ï d z d z d d z {$ z { {� { { { { d { d  d { d { d Œ d { { { d { d Z d { d { d d { { { { { d { d ï d { d { d { d { { { { > š š > { { š > š > { {! { d { d d {" d {# d š d {% {4 {& {- {' {* {( d {) d d {+ d {, d ƨ d {. {1 {/ d {0 d  d {2 d {3 d ï d {5 {9 {6 d {7 d {8 d ï d {: {= {; d {< d d {> d {? d d {A { {B {d {C {U {D {K {E {H {F d {G d ï d {I d {J d Ʒ d {L {O {M d {N d ï d {P d {Q d {R d {S d {T d  d {V {] {W {Z {X d {Y d  d {[ d {\ d  d {^ {a {_ d {` d  d {b d {c d  d {e {u {f {m {g {j {h d {i d š d {k d {l d  d {n {r {o d {p d {q d d {s d {t d ƨ d {v {} {w {z {x d {y d d {{ d {| d i d {~ { { d { d d { d { d d { { { { { { { { { d { d ï d { d { d  d d { { d { d  d { { { { { d { d { d { d { d Z d { d { d  d { { { d { d { d { d { d s d { d { d  d { { { { { { { d { d d { d { d  d { { { d { d ƨ d { d { d 6 d { { { { { d { d ï d { d { d  d { { { d { d ï d { d { d  d { |C { | { { { { { { { { { d { d d { d { d  d { { { d { d d { d { d Œ d { { { { { d { d d { d { d { d { d { d ï d { { { d { d r d { d { d  d { { { { { { { d { d G d { d { d  d { { { d { d ï d { d { d  d { |� d { { d { d Z d | | | d | d à d | d | d 7 d | |' | | | | | | | d | d š d | d | d d | | | d | d à d | d | d  d | | | | | d | d  d | d | d  d |! |$ |" d |# d à d |% d |& d  d |( |7 |) |0 |* |- |+ d |, d Œ d |. d |/ d  d |1 |4 |2 d |3 d s d |5 d |6 d  d |8 |? |9 |< |: d |; d d |= d |> d  d d |@ |A d |B d  d |D | |E |d |F |U |G |N |H |K |I d |J d ï d |L d |M d  d |O |R |P d |Q d ƨ d |S d |T d  d |V |] |W |Z |X d |Y d ï d |[ d |\ d  d |^ |a |_ d |` d d |b d |c d  d |e |t |f |m |g |j |h d |i d s d |k d |l d  d |n |q |o d |p d d |r d |s d  d |u |y |v d |w d |x d  d |z |} |{ d || d d |~ d | d  d | | | | | | | | | d | d ï d | d | d d | | | d | d d | d | d d | | | | | d | d ï d | d | d | d | d | d Ʒ d | | | d | d d | d | d s d | | | | | | | d | d d | d | d | d | d | d  d | | | d | d š d | d | d  d | | | | | d | d š d | d | d ï d | | | d | d š d | d | d  d | } | }C | } | | | | | | | | | d | d  d | d | d  d | | | d | d G d | d | d  d | | | | | d | d à d | d | d  d d | | d | d  d | | | | | | | d | d ï d | d | d  d | | | d | d i d | d | d š d | | | | | d | d à d | d | d Z d | } | d }� d ï d } d } d d } }$ } } } } } } } d } d  d } d } d ï d } } } d } d 7 d } d } d ï d } } } } } d } d à d } d } d k d } }! } d } d d }" d }# d d }% }4 }& }- }' }* }( d }) d ï d }+ d }, d i d }. }1 }/ d }0 d d }2 d }3 d ï d }5 }< }6 }9 }7 d }8 d à d }: d }; d  d }= }@ }> d }? d ï d }A d }B d  d }D } }E }g }F }X }G }N }H }K }I d }J d L d }L d }M d d }O }U }P d }Q d }R d }S d }T d  d }V d }W d  d }Y }` }Z }] }[ d }\ d d }^ d }_ d  d }a }d }b d }c d  d }e d }f d d }h }w }i }p }j }m }k d }l d s d }n d }o d  d }q }t }r d }s d r d }u d }v d  d }x } }y } }z d }{ d }| d }} d }~ d s d } d } d  d } } } d } d ` d } d } d  d } } } } } } } } } d } d ï d } d } d  d } } } d } d š d } d } d  d } } } } } d } d } d } d } d d } d } d  d } } } d } d à d } d } d  d } } } } } } } d } d ï d } d } d  d } } } d } d à d } d } d  d } } } } } d } d d } d } d  d } } } d } d à d } d } d d } ~H } ~ } } } } } } } } } d } d d } d } d  d } } } d } d Ʒ d } d } d  d } } } } } d } d ï d } d } d  d } } } d } d ï d } d } d  d } } } } } } } d } d ï d } d } d  d } } } d } d Z d } d } d  d } ~ } ~ ~� d ~ d r d ~ d ~ d  d ~ ~ ~ d ~ d r d ~ d ~ d  d ~ ~, ~ ~ ~ ~ ~ ~ ~ d ~ d Z d ~ d ~ d  d ~ ~ ~ d ~ d d ~ d ~ d  d ~ ~% ~ ~" ~ d ~! d Z d ~# d ~$ d  d ~& ~) ~' d ~( d ƨ d ~* d ~+ d  d ~- ~< ~. ~5 ~/ ~2 ~0 d ~1 d Œ d ~3 d ~4 d  d ~6 ~9 ~7 d ~8 d d ~: d ~; d  d ~= ~A d ~> ~? d ~@ d  d ~B ~E ~C d ~D d d ~F d ~G d s d ~I ~ ~J ~f ~K ~Z ~L ~S ~M ~P ~N d ~O d d ~Q d ~R d Ʒ d ~T ~W ~U d ~V d Ʒ d ~X d ~Y d d ~[ ~_ d ~\ ~] d ~^ d à d ~` ~c ~a d ~b d x d ~d d ~e d à d ~g ~v ~h ~o ~i ~l ~j d ~k d  d ~m d ~n d d ~p ~s ~q d ~r d d ~t d ~u d ï d ~w ~~ ~x ~{ ~y d ~z d š d ~| d ~} d Ʒ d ~ ~ ~ d ~ d  d ~ d ~ d ï d ~ ~ ~ ~ ~ ~ ~ ~ ~ d ~ d s d ~ d ~ d ï d ~ ~ ~ d ~ d s d ~ d ~ d d ~ ~ ~ ~ ~ d ~ d  d ~ d ~ d d ~ ~ ~ d ~ d d ~ d ~ d d ~ ~ ~ ~ ~ ~ ~ d ~ d ï d ~ d ~ d Œ d ~ ~ ~ d ~ d d ~ d ~ d Z d ~ ~ ~ ~ ~ d ~ d d ~ d ~ d d ~ ~ ~ d ~ d à d ~ d ~ d d ~ ~  ~ I ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ d ~ d ï d ~ d ~ d Z d ~ ~ ~ d ~ d d ~ d ~ d d ~ ~ ~ ~ ~ d ~ d d ~ d ~ d ï d ~ ~ ~ d ~ d ~ d ~ d ~ d d ~ d ~ d d ~ ~ ~ ~ ~ ~ ~ d ~ d d ~ d ~ d ּ d ~ ~ ~ d ~ d  d ~ d ~ d :y d ~  ~ � ~ d ~ d d  d  d ï d d   d  d  d  d  d s d  *        d  d d  d  d ƙ d    d  d ƙ d  d  d d  #    d  d d ! d " d ï d $ ' % d & d ï d ( d ) d s d + : , 3 - 0 . d / d  d 1 d 2 d Ʒ d 4 7 5 d 6 d r d 8 d 9 d L d ; B < ? = d > d d @ d A d s d C F D d E d :y d G d H d ï d J  K j L X M Q N d O d P d d R U S d T d  d V d W d ï d Y c Z ] [ d \ d 7 d ^ d _ d ` d a d b d Ʒ d d g e d f d > d h d i d 7 d k w l p m d n d o d N d q t r d s d  d u d v d d x  y | z d { d  d } d ~ d ï d    d  d  d  d  d ï d          d  d s d  d  d d    d  d d  d  d š d      d  d ï d  d  d  d    d  d s d  d  d d      d  d  d x d    d  d d  d  d d      d  d d  d  d ƙ d  d  d  d d  O            d  d ï d  d  d ` d    d  d ï d  d  d Œ d      d  d d  d  d ï d    d  d š d  d  d ` d      d  d  d ï d    d  d d  d  d ï d      d  d d  d  d  d    d  d d  d  d d     �     d  d d  d  d d  d d d d d d      d  d ï d  d  d d    d  d r d  d  d ƙ d  *  & # ! d " d ï d $ d % d G d d ' ( d ) d ƙ d + E , B - d . d / d 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A 4 C d D d s d F I G d H d Ʒ d J d K d L d M d N d s d P Q r R d S Z T W U d V d d X d Y d = d [ ^ \ d ] d r d _ d ` d a d b d c d d e n f i g d h d d j d k d l d m ï ï Q5 d o p d q d ï d s  t { u x v d w d ï d y d z d ï d | d } d ~ d Ʒ d d d d d d Ʒ d d d  d d d  d d d d d d Ʒ d d d ï d d d ï d d d ï d d d d d d ï d d d s d d d  d d d d d d d d d ƙ d d d d d d d š d d d Ʒ d J d d ï d d d d d d d d d ï d d d ï d d d <u d d d ` d d d Z d d d d ï d d d d d d d d d s d   d � d ï d  d  d ï d    d  d d d d d (     d  d  d ` d    d  d d  d  d d  !    d  d d  d d d " % # d $ d ƨ d & d ' d ï d ) ; * 1 + . , d - d  d / d 0 d ï d 2 5 3 d 4 d  d 6 d 7 d 8 d 9 d : d d < C = @ > d ? d d A d B d d D G E d F d Z d H d I d ƨ d K L n M \ N U O R P d Q d ï d S d T d x d V Y W d X d Ʒ d Z d [ d ï d ] g ^ a _ d ` d ï d b d c d d d e d f d Z d h k i d j d  d l d m d ` d o ~ p w q t r d s d d u d v d ï d x { y d z d à d | d } d d  d d  d d d  d d d r d d d  d d d ` d d d  d d d ï d d d d d d d d d ï d d d d d d d d d Ʒ d d d ` d d d d d d d d d ` d d d ï d d d ` d d d ï d d d ï d O  d d d ï d d d s d d d d d d d d d ï d d d  d d d  d d d ï d  d d Œ d d d Z d d d d d � d ï d     d  d r d  d  d ˘ d d d ` d  d  d s d  0  !      d  d d  d  d ï d    d  d d  d d d " ) # & $ d % d d ' d ( d G d * - + d , d ï d . d / d  d 1 @ 2 9 3 6 4 d 5 d d 7 d 8 d d : = ; d < d à d > d ? d s d A H B E C d D d k d F d G d s d I L J d K d ƙ d M d N d d P Q m R ^ S W T d U d V d ƨ d X [ Y d Z d d \ d ] d s d _ f ` c a d b d y d d d e d  d g j h d i d d k d l d s d n  o x p s q d r d  d t d u d v d w d  d y | z d { d d } d ~ d š d d d x d d d Œ d d d ï d d d d d d d d d Ʒ d d d r d d d d d d à d d d y d d d ï d d d d d d y d d d  d d d ï d d d ï d d d d d d G d d d d à d d d ï d d d ƙ d 9 . h  d d d d d d d d ï d d d d d d à d d d Z d d d s d d d s d  d d  d d d Ʒ d d � d  d ï d     d  d à d  d d Z d  d d d  d  d  d  d  d  d  7  (  !    d  d 7 d  d  d  d  ï ï ּ ï " % # d $ d  d & d ' d s d ) 0 * - + d , d  d . d / d G d 1 4 2 d 3 d ï d 5 d 6 d d 8 Y 9 R : O ; d < d = d > ƙ ? ƙ @ ƙ A ƙ B ƙ C ƙ D ƙ E ƙ F ƙ G ƙ H ƙ I ƙ J ƙ K ƙ L ƙ M ƙ N ƙ ƙ P d Q d d S V T d U d ï d W d X d s d Z a [ ^ \ d ] d 7 d _ d ` d r d b e c d d d z d f d g d ƨ d i j k z l s m p n d o d ï d q d r d d t w u d v d d x d y d š d { |  } d ~ d k d d d G d d d d d d Œ d d d d d d d d d ï d d d s d d d š d d d ï d d d y d d d d d d d r d d d d d d d d d d d d ƨ d d d d d d  d d d 7 d d d d d d ` d d d d d d ƙ d d d ï d d d Ʒ d d d d d d Œ d d d d d d Z d d d d d d d  d d d  d ?    d � d  d  d  d d  d  d ï d  d d Z d d d d      d  d r d  d  d ï d    d  d  d  d  d  d  d  d  d ! 3 " ) # & $ d % d  d ' d ( d Z d * - + d , d Œ d . d / d 0 d 1 d 2 d s d 4 ; 5 8 6 d 7 d r d 9 d : d Œ d d < = d > d d @  A j B c C ` D d E d F d G H I J K L M N O P Q R S T U [ V W Y X Z \ ] ^ _ 6 R a d b d d d g e d f d ï d h d i d ` d k r l o m d n d ï d p d q d  d s y t d u d v d w d x d s d z d { d | d } d ~ d Œ d d d à d d d L d d d Ʒ d d d d d d d d d d d d Œ d d d d d d d d d Z d d d y d d d ï d d d ï d d d  d d d d d d š d d d d d d d d d š d d d ï d d d Ʒ d d d d O d d š d d d d O d d d d d  d d d d d d ï d d d Z d d d Z d d d d  d d ï d � d  d ű d   d  d  d  d  d d d d ï d       d  d à d  d  d ï d    d  d  d  d  d Ʒ d  d  d ï d ' ! $ " d # d d % d & d ï d ( + ) d * d d , d - d ƨ d / 1 0 1 p 2 Q 3 ? 4 ; 5 8 6 d 7 d s d 9 d : d ï d < d = d > d Ʒ d @ J A G B d C d D d E d F d  d H d I d ƨ d K N L d M d ï d O d P d Z d R a S Z T W U d V d à d X d Y d d [ ^ \ d ] d ï d _ d ` d Z d b i c f d d e d d g d h d d j m k d l d ï d n d o d ï d q r s z t w u d v d ű d x d y d ƨ d { ~ | d } d ï d  d d d d d r d d d Ʒ d d d  d d d d d d d Œ d d d d d d x d d d ï d d d d d d d d d d d d d d d Z d d d s d d d :y d d d d d d Ʒ d d d ï d d d d d d ƨ d d d 6 d d d  d d d ï d d d > d d d d d d d d d d d d ï d d d  d   d d à d d d ƨ d � d d s d  d  d Ʒ d      d  d y d d d d d d Z d d   d  d Ʒ d  "   d   d  d  d  d  d  d    d  d r d d ! d d # * $ ' % d & d Œ d ( d ) d d + . , d - d 7 d / d 0 d d 2 3 r 4 V 5 G 6 @ 7 : 8 d 9 d d ; d < d = d > d ? d 7 d A D B d C d Z d E d F d Z d H O I L J d K d Z d M d N d r d P S Q d R d d T d U d  d W c X \ d Y Z d [ d d ] ` ^ d _ d d a d b d d d n e k f d g d h d i d j d s d l d m d d d o p d q d s d s t u | v y w d x d à d z d { d ` d } ~ d  d r d d d ï d d d d d d d d d  d d d  d d d ï d d d ï d d d ƙ d d d d d d  d d d y d d d ƨ d d d ï d d d r d d d Z d d d ï d d d ï d d d d r d d d ƨ d d d d d d ս d d d d d 65 65 R 65 d d  d d d d d d d d d d d d ï d d d d d d > d d d  d    d d à d d � d  d    d  d ï d  d  d  d  d d  d  d  d d    d  d ƨ d  d  d d  *     d  d d  d  d d ! $ " d # d  d % d & d ' d ( d ) d ï d + 2 , / - d . d Z d 0 d 1 d  d 3 6 4 d 5 d ï d 7 d 8 d Ʒ d : b ; I < =  > ` ? N @ J A G B d C d D d E d F d d H d I d ` d K d L d M d ï d O V P S Q d R d  d T d U d Œ d W Z X d Y d y d [ d \ d ] d ^ d _ d Z d a p b i c f d d e d  d g d h d  d j m k d l d d n d o d s d q x r u s d t d x d v d w d r d y | z d { d y d } d ~ d š d d d à d d d k d d d  d d d ƨ d d d d d d Z d d d ï d d d d d d d d d d d d š d d d x d d d k d d d  d d d r d d d ` d d d  d d d d d d ï d d d 7 d d d d ƨ d d d V d d d ű d d d d d d  d d d d d d d d d d d d d d d d Ʒ d d d ï d d d ` d  �       d  d à d  d  d ï d d d ï d d  d s d   d   d  d d    d  d  d  d  d  d  d  d d  7 * ! $ " d # d Z d % d & d ' d ( d ) d :y d + 1 , d - d . d / d 0 d ï d 2 d 3 d 4 d 5 d 6 d s d 8 ? 9 < : d ; d Ʒ d = d > d d @ C A d B d ï d D d E d F d G d H d d J K L s M _ N X O R P d Q d ï d S d T d U d V d W d d Y \ Z d [ d 6 d ] d ^ d Z d ` i a f b d c d d d e d Œ d g d h d d j m k d l d Ʒ d n d o d p d q d r d Z d t u  v y w d x d Z d z d { d | d } d ~ d r d d d L d d d s d d d k d d d s d d d ` d d d Z d d d ï d d d  d d d š d d d Z d d d L d d d s d d d ` d d d d d d  d d d d d d ` d d d  d d d d d d Z d d d ï d d d d d d Œ d d d d d d V d d d d d d r d #  d d š d d d  d d d V d d d s d d d ï d d d d  d � d  d  d  d  d  d  d d   d d d à d    d  d ï d  d  d  d      d  d š d  d  d ï d   d  d ï d ! d " d  d $ C % 4 & - ' * ( d ) d ï d + d , d  d . 1 / d 0 d ƙ d 2 d 3 d  d 5 < 6 9 7 d 8 d d : d ; d d = @ > d ? d s d A d B d  d D S E L F I G d H d d J d K d d M P N d O d s d Q d R d d T [ U X V d W d d Y d Z d d \ _ ] d ^ d s d ` d a d d c d e f g v h o i l j d k d  d m d n d d p s q d r d Ʒ d t d u d d w ~ x { y d z d d | d } d d  d d ï d d d d d d à d d d ï d d d d d d d d d ï d d d ï d d d  d d d d d d d 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 4 : 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 d d à d d d  d d d à d d d ï d d d à d d d d Z Z Z d d G d d d à d d d à d d d ƨ d d d à d  � d d d  d  d d    d  d d  d d à d J +       d  d V d  d  d à d    d  d  d  d  d à d  $  !  d d ƨ d " d # d à d % ( & d ' d ˘ d ) d * d à d , ; - 4 . 1 / d 0 d à d 2 d 3 d d 5 8 6 d 7 d d 9 d : d Z d < C = @ > d ? d ƨ d A d B d d D G E d F d d H d I d d K m L ^ M W N Q O d P d š d R d S d T d U d V d  d X [ Y d Z d d \ d ] d  d _ f ` c a d b d ƨ d d d e d ` d g j h d i d d k d l d ƙ d n o y p s q d r d à d t d u d v d w d x d Ʒ d z } { d | d d ~ d  d Ʒ d d d  d d d  d d d d d d d d 7 d  d d ï d d d d d d d d d d d d  d d d d d d d d d d d d d d d ` d d d d d d d d d d d d ï d d d  d d d d d d  d d d  d d d s d d d d  d d d  d d d  d d d d d d ï d d d d d d  d d d ï d   d � d s d  d  d d    d  d  d d d ï d    d  d  d  d  d d  d  d 7 d    d  d  d  d  d d  Z  > / ! ( " % # d $ d  d & d ' d Ʒ d ) , * d + d ï d - d . d d 0 7 1 4 2 d 3 d ƨ d 5 d 6 d d 8 ; 9 d : d  d < d = d = d ? K @ D d A B d C d d E H F d G d  d I d J d d L S M P N d O d ï d Q d R d  d T W U d V d  d X d Y d  d [ z \ n ] d ^ a _ d ` d à d b d c d  d e k f d g d h d i d j d  d l d m d  d o v p s q d r d  d t d u d  d d w x d y d G d { | } ~ d  d d d d Z d d d  d d d r d d d d d d Z d d d ï d d d z d d d d d ) ! d d ƨ d d d  d d d ï d d d d d d d d d d d d d d d d d d d d d d d s d d d à d d d d d d d d d d d d k d  d d d d d Ʒ d d d d d d > d d d d d d ï d d d ï d d d ï d � d  d d       d  d Ʒ d d d à d d d  d Z d      d  d  d  d  d d    d  d Z d  d  d  d  d d ï d " b # ? $ 3 % , & ) ' d ( d ҉ d * d + d d - 0 . d / d ï d 1 d 2 d d 4 ; 5 8 6 d 7 d ï d 9 d : d V d d < = d > d d @ R A H B E C d D d Ʒ d F d G d  d I O J d K d L d M d N d ï d P d Q d d S [ T W U d V d Z d X d Y d Z d O \ _ ] d ^ d d ` d a d d c  d s e l f i g d h d s d j d k d d m p n d o d s d q d r d G d t { u x v d w d d y d z d d | d } d ~ d  d d d Ʒ d d d  d d d i d d d d d d Z d d d d d d d d d Œ d d d d ) d d d d d d d d ï d d d Z d d d š d d d d š d d d d d d d d d d d  d d d z d d d s d d d s d d d d d d  d d d d d d  d d d d d d Z d d d s d d d  d d d i d d d d  � d d d  d  d d    d  d  d  d d Z d     d  d ҉ d  d  d  d    d  d d  d  d ƙ d  "    d  d ҉ d d ! d 7 d # & $ d % d Z d ' d ( d d * l + M , ; - 4 . 1 / d 0 d Z d 2 d 3 d d 5 8 6 d 7 d d 9 d : d ű d < F = @ > d ? d  d A d B d C d D d E d Z d G J H d I d d K d L d d N ] O V P S Q d R d ű d T d U d d W Z X d Y d Z d [ d \ d  d ^ e _ b ` d a d  d c d d d ï d f i g d h d y d j d k d r d m n o y p s q d r d d t d u d v d w d x d s d z } { d | d ƙ d ~ d  d d d d r d d d d d d d d d d d d d d d d d d d s d d d  d d d ƨ d d d d d d d ï d d d > d ( d d d d d ï d d d  d d d d d d d d d d d d d d ű d d d d d d d d d d d d d d d d d d ƨ d d d  d d d d d d d  d d s d d d  d d d  d d � d r d  d    d  d ƙ d  d  d d   d d  d d    d  d d  d  d  d  d  d ƨ d  !    d  d ï d  d d Œ d " % # d $ d d & d ' d ï d ) n * O + @ , 3 - 0 . d / d s d 1 d 2 d ï d 4 : 5 d 6 d 7 d 8 d 9 d r d ; d < d = d > d ? d 7 d A H B E C d D d  d F d G d  d I L J d K d s d M d N d  d P _ Q X R U S d T d ű d V d W d  d Y \ Z d [ d i d ] d ^ d  d ` g a d b d c d x d e d f d  d h k i d j d d l d m d  d o p q { r x s d t d u d v d w d d y d z d  d | } d ~ d  d d d d d d ƨ d d d r d d d ƨ d d d d d d ƨ d d d Z d d d r d d d  d d d r d d d d                   i            i      tI  d d d d d  d d d ƙ d d d d a  d d d d d d d d Œ d d d d d d ï d d d d d d  d d d d  �   d  d  d  d  d d   d d Ʒ d d d  d      d  d ƨ d  d  d d    d  d ï d  d  d d  ?  -  & # ! d " d d $ d % d  d ' * ( d ) d ï d + d , d d . 8 / 5 0 d 1 d 2 d 3 d 4 d Z d 6 d 7 d d 9 < : d ; d  d = d > d d @ R A K B H C d D d E d F d G d d I d J d  d L O M d N d š d P d Q d  d S Z T W U d V d d X d Y d  d [ ^ \ d ] d  d _ d ` d  d b c d s e l f i g d h d d j d k d  d m p n d o d d q d r d  d t { u x v d w d r d y d z d  d |  } d ~ d d d d  d d d Z d d d  d d d ` d d d  d d d d š š š š š š š š š š š š š š š š : š k  š c š d d  d d d Ʒ d d d  d d d d  d d d d O d d  d d d Z d d d  d d d d d d  d d d à d d d  d d d d d d ƨ d d d Œ d d d d d d d O d d d  z 8   � d d d  d  d d    d  d  d  d d d d d d      d  d ï d  d  d ܹ d    d  d  d  d  d d  )  "  d d ! d  d # & $ d % d ï d ' d ( d ű d * 1 + . , d - d  d / d 0 d ` d 2 5 3 d 4 d ï d 6 d 7 d 7 d 9 X : I ; B < ? = d > d  d @ d A d d C F D d E d  d G d H d d J Q K N L d M d  d O d P d ï d R U S d T d  d V d W d Z d Y h Z a [ ^ \ d ] d  d _ d ` d Z d b e c d d d  d f d g d > d i p j m k d l d ï d n d o d d q w r d s d t d u d v d d x d y d ƨ d { | } ~  d d  d d d d d d Z d d d d d d ï d d d d d G d d d d d d d d d š d d d  d d d d d d d d d d d d  d d d ï d d d ƨ d d d ï d d d d d d  d d d i d d d 7 d d d d d d d d d y d d d  d d d d d d  d d d ƨ d d d d d d d  d d d d d ï d d d � d  d  d d    d  d ï d  d d = d Q /       d  d k d  d  d z d    d  d ï d  d  d  d  d  d L d ! ( " % # d $ d d & d ' d Z d ) , * d + d ï d - d . d ƙ d 0 ? 1 8 2 5 3 d 4 d  d 6 d 7 d d 9 < : d ; d d = d > d ƙ d @ G A D B d C d  d E d F d s d H N I d J d K d L d M d d O d P d Ʒ d R k S _ T [ U X V d W d  d Y d Z d d d \ ] d ^ d d ` d d a b d c d V d e h f d g d š d i d j d d l ~ m w n q o d p d  d r d s d t d u d v d d x { y d z d  d | d } d Z d  d d V d d d ` d d d  d d d d d d  d d d  d d d  d d d Z d d d d d d i d d d  d d d  d d d  d d d y d d d  d d d Z d d d d d d d d d d  d d d G d d d  d d d ` d d d  d d d ï d d d d d d d d d d d d d d  d d d d d d d d d d d  d d � d s d     d  d  d  d  d d d d d d  d  d  d     U  6  '     d  d d  d  d  d  d  d  d ! $ " d # d  d % d & d ` d ( / ) , * d + d  d - d . d ` d 0 3 1 d 2 d  d 4 d 5 d ï d 7 F 8 ? 9 < : d ; d  d = d > d s d @ C A d B d  d D d E d ï d G N H K I d J d  d L d M d > d O R P d Q d  d S d T d d V u W f X _ Y \ Z d [ d  d ] d ^ d d ` c a d b d  d d d e d r d g n h k i d j d  d l d m d Z d o r p d q d  d s d t d d v w ~ x { y d z d  d | d } d d  d d d  d d d  d d d d d d  d d d d d d  d d d d d d  d d d d d d  d d d d d d  d d d x d d d  d d d ï d d d  d d d d d d  d d d d d d  d d d d d d ï d d d  d d d d d d d d d d  d d d š d d d ï d d d d d d  d  � d d  d d d d d d  d    d  d ï d  d  d d   d d  d d  d s d    d  d ï d  d  d d   c  ;  )  "    d  d  d d ! d s d # & $ d % d d ' d ( d s d * 1 + . , d - d  d / d 0 d r d 2 5 3 d 4 d  d 6 d 7 d 8 d 9 d : d ƙ d < Q = G > A ? d @ d  d B d C d D d E d F d d H K I d J d  d L d M d N d O d P d d R Y S V T d U d  d W d X d Z d Z ] [ d \ d ï d ^ d _ d ` d a d b d ` d d e w f m g j h d i d  d k d l d Œ d n q o d p d ï d r d s d t d u d v d Z d x  y | z d { d  d } d ~ d ս d d d ï d d d  d d d  d d d y d d d d d d d d d ` d d d  d d d  d d d d d d d d d  d d d d d d d d ƙ d d d s d d d  d d d ƨ d d d d ï d d d s d d d Œ d d d Z d d d ƨ d d d  d d d k d d d r d d d ƙ d d d  d d d s d d d d d d ƨ d � d d  d d d d    d  d  d  d  d Ʒ d  d d d     d  d  d  d  d ƨ d    d  d ï d  d  d d  "    d  d  d d ! d ƨ d # & $ d % d d ' d ( d ƨ d * + z , - . S / = 0 8 1 4 2 d 3 d à d 5 d 6 d 7 d d d 9 : d ; d < d ` d > G ? C @ d A d B d d D d E d F d 7 d H L I d J d K d ï d M d N d O d P d Q d R d ï d T j U ^ V Z W d X d Y d L d [ d \ d ] d d _ f ` d a d b d c d d d e d Œ d g d h d i d  d k w l s m d n d o d p d q d r d i d t d u d v d d x | y d z d { d d } d ~ d  d ƙ d d d d d d d d ` d d d d d d d  d d d d  d d d d d d d d  d d d d ƨ d d d d ` d d d d d d d d  d d d d d d d d V d d d d d d d d d d d d d d d d ï d * d d d  d d d d  d d d d < d d d d Z d d d d ï d d d d  d d d d d d d d d   d � d  d  d  d  d ƙ d  d  d  d ï d  d d d  d  d  d d  d  d  d ï d  "    d  d  d  d  d  d d  d d ! d ï d d # $ d % d & d ' d ( d ) d ƨ d + S , ? - 6 . 2 / d 0 d 1 d  d 3 d 4 d 5 d r d 7 ; 8 d 9 d : d d < d = d > d d @ J A E B d C d D d s d F d G d H d I d d K O L d M d N d Z d P d Q d R d Œ d T g U ^ V Z W d X d Y d d [ d \ d ] d ˘ d _ c ` d a d b d x d d d e d f d  d h q i m j d k d l d d n d o d p d d r v s d t d u d d w d x d y d ƨ d { & | } ~  d d d Œ d d d d Z d d d d d d d d d d d d d d d d i d d d d d d d d y d d d d  d d d d d d d d  d d d d  d d d d d d d d d d d Œ d d d d d d d d d d d d ` d d d d d s d d d d  d d d d d d d d  d d d d i d d d d ï d d d d ` d d d d ű d   d � d  d  d  d  d Ʒ d  d  d  d ˘ d  d d d ï d  d  d  d ï d      d  d  d  d d  d  d  d d  "  d d ! d ï d # d $ d % d Ʒ d ' x ( R ) ? * 3 + / , d - d . d > d 0 d 1 d 2 d i d 4 8 5 d 6 d 7 d ï d 9 d : d ; d < d = d > d d @ I A E B d C d D d  d F d G d H d Z d J N K d L d M d ï d O d P d Q d ű d S f T ] U Y V d W d X d d Z d [ d \ d :y d ^ b _ d ` d a d ï d c d d d e d d g s h l i d j d k d 7 d m d n d o d p d q d r d d t d u d v d w d ƨ d y z { | } d ~ d  d ` d d d d d d d  d d d d x d d d d z d d d d d d d d Œ d d d d  d d d d ï d d d d d Z d d d d ű d d d d s d d d d d s d d d d ƙ d d d d  d � d  d d d ƨ d d d d  d d d d d i d d d d  d d d d d d d d d d d ƙ d d d d  d d d d d d d d Ʒ d d d d Z d d d d Z d �    d  d  d Œ d  d  d  d  d  d d d Z d  d  d  d d  =  '      d  d  d G d  d  d  d d  # d ! d " d  d $ d % d & d ï d ( 4 ) 0 * d + d , d - d . d / d d 1 d 2 d 3 d d 5 9 6 d 7 d 8 d i d : d ; d < d d > Q ? H @ D A d B d C d d E d F d G d s d I M J d K d L d Z d N d O d P d d R [ S W T d U d V d d X d Y d Z d  d \ ` ] d ^ d _ d  d a d b d c d i d e f g } h q i m j d k d l d z d n d o d p d x d r y s d t d u d v d w d x d d z d { d | d r d ~  d d d d  d d d d d d d d  d d d d V d d d d d d d d d š d d d d d d d d š d d d d d d d d d d d d Z d d d d d d d d d d d d  d d d d Œ d d d d d d d d Z d d d d d d d d Z d d d d ű d d d d Œ d d d d d d d d . d d d d d d d  d d d d ï d d d d d   Z  0       d  d d d d d d d    d  d  d d  d  d  d d  $   d  d  d  d  d  d i d ! d " d # d d % , & d ' d ( d ) d * d + d  d - d . d / d d 1 D 2 ; 3 7 4 d 5 d 6 d  d 8 d 9 d : d  d < @ = d > d ? d d A d B d C d š d E N F J G d H d I d x d K d L d M d s d O S P d Q d R d s d T d U d V d W d X d Y d d [ ~ \ k ] b d ^ _ d ` d a d ű d c g d d e d f d  d h d i d j d d l u m q n d o d p d Z d r d s d t d ï d v z w d x d y d s d { d | d } d x d  d d d L d d d d d d d d d d d d d d d d d d d  d d d d d d d d ` d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d Z d d d d  d d d d Ʒ d d d d ƙ d d d d d d d d s d d d d d d d Ʒ d & �      d  d  d  d  d  d d Ʒ d  d d  d  d  d  d  d  d      d  d  d ï d  d  d  d ƙ d  "  d d ! d d # d $ d % d d ' : ( 1 ) - * d + d , d d . d / d 0 d d 2 6 3 d 4 d 5 d ű d 7 d 8 d 9 d d ; G < C = d > d ? d @ d A d B d ` d D d E d F d d H N I d J d K d L d M d y d O d P d Q d d S d T d U d V d W d X d d Y d Z d [ \ l ] d ^ a _ ` Z d ї d b g c d d d e d f d ї d d h d i j d k d \ d m  n o p q r | s d t d u d v d w d x d y d z d { d ї d } d ~ d  d d d d d d d ї d d d d d d d d d d d ї d d d d d d d d d d ї d d d d d d d d d d ї d d d d d d d d d d d Z d d d d d d d d d d d d d [ d d d d d d d d d d d ї d d d d d d d d d d d [ d d d d d d d d d d ї d d d d d d d d d d ]= d d d d d d d d d d d Z d   d d d d � d  d  d  d  d  d ї d  d  d d d d d d  d  d  d ї d  d  d  d  d  d  d  d  d  d  d  d [ d d  d  V d ! " # $ % T & 8 ' / d ( ) , * d + d ї d - d . d Z d 0 4 1 d 2 d 3 d ї d 5 d 6 d 7 d [ d 9 H : A ; > < d = d ї d ? d @ d ї d B E C d D d Z d F d G d Z d I P J M K d L d ї d N d O d ї d d Q R d S d [ d U t V e W ^ X [ Y d Z d Z d \ d ] d [ d _ b ` d a d [ d c d d d ї d f m g j h d i d ї d k d l d ї d n q o d p d ]m d r d s d [ d u v z w d x d y d ї d { ~ | d } d ї d  d d ї d d d ї d d d \ d d d d [ d d d d ] d d d \ d d d ]= d d d [ d d d ї d d d ї d d d ї d d d d ї d d d \ d d d [- d d d d \ d d d ї d d d [ d d d ї d d d ї d d d Z d d d ї d d d ї d d d Z d d d ї d d d [= d d d Z d d d ї d d d \ d d d ї d d d ї d d d d ї d ^ .  �      d  d ї d  d  d ї d d d d ї d   d  d  d ї d    d  d ї d  d  d [ d  "    d  d  d [ d d  d ! d ї d # * $ ' % d & d \ d ( d ) d \ d d + , d - d ї d / K 0 ? 1 8 2 5 3 d 4 d \ d 6 d 7 d ]m d 9 < : d ; d ї d = d > d [ d @ G A D B d C d x d E d F d [ d d H I d J d [ d L U M Q N d O d P d [ d R d S d T d ї d V Z W d X d Y d [ d [ d \ d ] d ї d _ t ` b a d ї d c l d h d e f d g d ї d i d j d k d [ d d m n q o d p d \ d r d s d Z d u v w ~ x { y d z d ї d | d } d ї d  d d ї d d d \ d d d ї d d d \ d d d d [ d d d ї d d d ] d d d ї d d d ї d d d \ d d d ї d d d ї d d d [- d d d % d d d ї d d d [ d d d ї d d d d d ї d d d d ї d d d ї d d d d ї d d d ї d d d Z d d d ї d d d [= d d d [ d d d ї d d d d d ї d  d d d ї d d d ї d d � d ї d     d  d ї d  d  d ї d d d d ї d  C  $   d   d  d  d ї d      d  d [ d  d  d ї d  !  d d ї d " d # d ї d % 4 & - ' * ( d ) d ї d + d , d ї d . 1 / d 0 d ї d 2 d 3 d ї d 5 < 6 9 7 d 8 d ї d : d ; d ї d = @ > d ? d ї d A d B d Z d D c E T F M G J H d I d ї d K d L d ї d N Q O d P d Z d R d S d ї d U \ V Y W d X d Z d Z d [ d ]= d ] ` ^ d _ d ї d a d b d \ d d m e i d f g d h d ї d d j k d l d ї d n u o r p d q d ї d s d t d ї d v w d x d y } z d { d | d ї d ~ d  d d d d d d [ d d d ї d d d d [ d d d \ d d d ї d d d ї d d d ї d d d ]} d d d d ]= d d d ї d d d ї d d d Z d d d ї d d d ї d d d d ї d d d ї d d d ї d d d [ d d d ї d d d d [ d d d [ d d d ї d d d d ї d d d ї d d d [ d d d d ]= d + d d d [- d d d ї d d d ї d   � d  d ї d  d  d ї d   d  d ї d d d \ d       d  d ї d  d  d ї d d   d  d  d  d  d  d  d  d d ' ! $ " d # d ї d % d & d [ d d ( ) d * d ї d , : - 5 d . / 2 0 d 1 d [ d 3 d 4 d ї d d 6 d 7 8 d 9 d \ d ; G < @ = d > d ? d ї d A D B d C d ї d E d F d Z d H O I L J d K d ї d M d N d [- d P S Q d R d [- d T d U d [ d W X Y ) Z [ \ } ] i ^ e _ b ` d a d ]m d c d d d Z d f d g d h d ї d j q k n l d m d ї d o d p d ї d r u s d t d ї d v d w d x d y d z d { d | d * d ~ d  d d ї d d d [- d d d d [ d d d ї d d d ї d d d ї d d d ї d d d [ d d d ї d d d ї d d d Z d d d Z d d [- d d d ї d d d d Z d d d d ї d d d ї d d d ^ d d d d Z d d d ї d d d Z d d d ї d d d [ d d d d ] d d d \ d d d ї d d d d ї d d d d \ d d d [ d d d ї d    d d � d ]} d  d  d  d ї d    d d ї d d d ї d    d  d Z d  d  d ї d    d  d  d  d ї d  "    d  d ї d d ! d ї d # & $ d % d ї d ' d ( d ї d * + L , : - 5 . d / 2 0 d 1 d \ d 3 d 4 d ї d d 6 d 7 8 d 9 d ї d ; @ d < = d > d ? d \ d A E d B C d D d ї d F I G d H d [ d J d K d ї d M f N W O S d P Q d R d ї d T d U d V d [ d X _ Y \ Z d [ d ї d ] d ^ d ї d ` c a d b d ї d d d e d ї d g s h o i l j d k d [ d m d n d α d p d q d r d ї d t { u x v d w d ]= d y d z d [- d |  } d ~ d [- d d d [- d d d ї d d d \ d d d ї d d d ї d d d [- d d d \ d d d ї d d d ї d d d d ї d d d ї d d d Z d d d d ї d d d d ]= d d d ї d d d [ d d d ї d d d ї d d d [ d d d [ d d d d [ d d d ї d d d ї d d d \ d d d [ d d d d ї d d d ї d d d Z d g +   d d ї d d d Z d d �  d  d [ d     d  d \ d d d [- d  d  d [ d  d  d \ d        d  d ї d  d  d ї d  d  d  d ї d $ ! d " d # d ї d % ( & d ' d ї d ) d * d ї d , K - < . 5 / 2 0 d 1 d ї d 3 d 4 d ї d 6 9 7 d 8 d [ d : d ; d \ d = D > A ? d @ d Z d B d C d ї d E H F d G d ї d I d J d ї d L X M T N Q O d P d ї d R d S d ї d d U V d W d [ d Y ` Z ] [ d \ d ї d ^ d _ d ї d a d b d c d ї d e d f d ї d h i j v k r l o m d n d ї d p d q d ї d s d t d u d \ d w ~ x { y d z d [ d | d } d ї d d  d d [- d d d d d Z d d d d α d d d ї d d d ^ d d d d ї d d d d d ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї e ї d d [ d d d ї d d d ї d d d Z d d d [ d d d \ d d d d ї d d d d \ d d d ї d d d [ d 6  d d ]} d d d x d d d ї d d d [ d d d d Z d d d d [ d d d d ї d d d \ d �     d  d [ d  d  d ї d  d d [= d d d \ d     d  d   d  d [ d d   d  d  d [- d  '  d   d  d [ d ! $ " d # d \ d % d & d ї d ( / ) , * d + d ї d - d . d ї d 0 3 1 d 2 d ї d 4 d 5 d ї d 7 r 8 d 9 E : A ; > < d = d ї d ? d @ d ї d d B C d D d \ d F M G J H d I d ї d K d L d \ d N Q O d P d [- d R d S d T d U ї V ї W ї X ї Y ї Z ї [ ї \ ї ] ї ^ ї _ ї ` ї a ї b ї c ї ї bu e m d f g j h d i d \ d k d l d Z d n d o d p d q d ї d s t } u y v d w d x d ї d d z { d | d ї d ~  ї d d Z d d d [- d d d ї d d d [ d d d [ d d d [ d d d [- d d d d d ї d / ї d d d d [ d d d d ї d d d d ї d d d ]m d d d d d Z d d d d d [ d d d d d ї d d d d d \ d d d d [ d d d d Z d d d d d x d d d d d [= d d d d d ]m d d d d [- d d d d ї d  d d d ї d d d d ]} d  �   d  d \ d  d  d ї d d   d d d ^1 ^1 ^1  ^1  ^1  ^1  ^1  ^1  ^1  ^1  ^1  ^1  ^1  ^1 ^1  E ^1  '  #   d  d \ d ! d " d ї d d $ % d & d ї d ( d ) , * d + d [ d - d . d ї d 0 w 1 O 2 < 3 d 4 8 5 d 6 d 7 d [ d d 9 : d ; d ]= d = F > B ? d @ d A d ї d d C D d E d ї d G K d H I d J d [ d d L M d N d ї d P ^ Q ] R V d S T d U d I d W Z X d Y d ї d [ d \ d Z d d [ _ k ` g a d b d c d \ d e d f d \ d d h i d j d [ d l s m p n d o d [ d q d r d Z d d t u d v d ї d x y z { |  } d ~ d \ d d d ї d d d d ї d d d d ]= d d d d ї d d d ї d d d \ d d d d Z d d d d d Z d d d ї d d d [- d d d \ d d d [ d d d ї d d d [ d d d ї d d d [- d ї d d ї d d d \ d d d ]} d d d ї d ї d d d Z d d d \ d d d d \ d d [ d d d ї d d d d Z d  d d Z d d Z d d d [ d d d [ d  d �  d  d [ d  d  d  d ї d   d d d [= d  d  d  d [= d      d  d Z d  d  d ї d    d  d [- d  d  d [ d ! S " ; # , $ ( % d & d ' d ] d ) d * d + d [- d - 4 . 1 / d 0 d [- d 2 d 3 d [ d 5 8 6 d 7 d [- d 9 d : d [ d < K = D > A ? d @ d [= d B d C d Z d E H F d G d \ d I d J d ї d L d M P N d O d \ d Q d R d ї d T p U a V Z d W X d Y d [ d [ ^ \ d ] d [= d _ d ` d [= d b i c f d d e d ї d g d h d [- d j m k d l d [- d n d o d \ d q r y s v t d u d [- d w d x d ї d z } { d | d ї d ~ d  d ї d d d d \ d d d ї d d d ї d d d d Z d d d \ d d d ї d d d ї d d d ї d d d d Z d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d ׁ d d d d ] d d d d d ї d d d d Z d d d ї d d d [- d d d [ d d d [ d d d d d d d d d % d d d [= d  � d d d \ d d   d  d ї d   d  d  d Z d d d d Z d  %  ї        d  d \ d  d  d ї d d   d  d Z d  !  d  d d [ d " d # d $ d ї d & B ' 6 ( / ) , * d + d ї d - d . d [ d 0 3 1 d 2 d Z d 4 d 5 d \ d 7 > 8 ; 9 d : d \ d < d = d ] d ? d @ d A d [ d C R D K E H F d G d ї d I d J d ї d L O M d N d ї d P d Q d ї d S W d T U d V d [ d X d Y d Z d [ d d \ d ] d ^ d _ d ` d a b d d c d d����������������IcontinentDcodeBASJgeoname_id_r+EnamesBdeEAsienBenDAsiaBes 6BfrDAsieBjaIアジアEpt-BREÁsiaBruHАзияEzh-CNF亚洲Gcountry Hiso_codeBTH #BdeHThailandBen BesITailandiaBfrJThaïlandeBjaLタイ王国 UJTailândiaBruNТайланд mF泰国Rregistered_country  z e BJP #BdeEJapanBen!*BesFJapónBfrEJaponBjaF日本 UFJapãoBruLЯпония m!K !  z  BCN #BdeEChinaBen!Bes!BfrEChineBjaF中国 U!BruJКитай m! !z  BOC _r/ #BdeHOzeanienBenGOceaniaBesHOceaníaBfrHOcéanieBjaOオセアニア U!BruNОкеания mI大洋洲 z  BAU #BdeJAustralienBenIAustraliaBes"aBfrIAustralieBjaUオーストラリア UJAustráliaBruRАвстралия mL澳大利亚 "A  BEU _r, #BdeFEuropaBenFEuropeBes"Bfr"BjaOヨーロッパ U"BruLЕвропа mF欧洲 z Z BRU #BdeHRusslandBenFRussiaBesERusiaBfrFRussieBjaIロシア UGRússiaBruLРоссия mO俄罗斯联邦 !z  z _ BIN #BdeFIndienBenEIndiaBes#BfrDIndeBjaIインド UFÍndiaBruJИндия mF印度 #  z q BMY #BdeHMalaysiaBen$#BesGMalasiaBfrHMalaisieBjaOマレーシア UHMalásiaBruPМалайзия mL马来西亚 $  z A BKR #BdeISüdkoreaBenKSouth KoreaBesMCorea del SurBfrMCorée du SudBjaL大韓民国 UMCoreia do SulBruUЮжная Корея mF韩国 $  z  BSG #BdeHSingapurBenISingaporeBes%@BfrISingapourBjaRシンガポール UICingapuraBruPСингапур mI新加坡 %.  z t BTW #BdeFTaiwanBen%BesGTaiwánBfrGTaïwanBjaF台灣 U%BruNТайвань mF台湾 %.  z R BHK #BdeHHongkongBenIHong KongBes&;Bfr&;BjaF香港 U&;BruNГонконг m&R %.  z$ %.  z! %.  z * BKH #BdeJKambodschaBenHCambodiaBesGCamboyaBfrHCambodgeBjaRカンボジア国 UGCambojaBruPКамбоджа mI柬埔寨 %.  z% %  z!z %  z& &  z 8 BPH #BdeKPhilippinenBenKPhilippinesBesIFilipinasBfr'kBjaXフィリピン共和国 U'zBruRФилиппины mI菲律宾 'J  z!z  z  BVN #BdeGVietnamBen'Bes'Bfr'BjaLベトナム UGVietnãBruNВьетнам mF越南 ' " z#. % " z &OTis_in_european_union BES #BdeGSpanienBenESpainBesGEspañaBfrGEspagneBjaLスペイン UGEspanhaBruNИспания mI西班牙 (�Y " z . (�` BFR #BdeJFrankreichBenFFranceBesGFranciaBfr(BjaUフランス共和国 UGFrançaBruNФранция mF法国 (� " z (5 BGB #BdeWVereinigtes KönigreichBenNUnited KingdomBesKReino UnidoBfrKRoyaume-UniBjaLイギリス U(Bru\Великобритания mF英国 (t " z(� )(�` BNL #BdeKNiederlandeBenKNetherlandsBesGHolandaBfrHPays-BasBjaRオランダ王国 U(RBruTНидерланды mF荷兰 " z( ( " z .(�` BCZ #BdeJTschechienBenGCzechiaBesPRepública ChecaBfrTRépublique tchèqueBjaRチェコ共和国 UITchéquiaBru]Чешская Республика mF捷克 ( " z ,T(�` BDE #BdeKDeutschlandBenGGermanyBesHAlemaniaBfrIAllemagneBjaXドイツ連邦共和国 UHAlemanhaBruPГермания mF德国 ( " z(�Y ( " z *s(�` BAT #BdeKÖsterreichBenGAustriaBes(<BfrHAutricheBja[オーストリア共和国 UHÁustriaBruNАвстрия mI奥地利 ( " z#. ( " z ( BCH #BdeGSchweizBenKSwitzerlandBesESuizaBfrFSuisseBjaOスイス連邦 UGSuíçaBruRШвейцария mF瑞士 ( " z(t (  BSA _r. #BdeKSüdamerikaBenMSouth AmericaBesKSudaméricaBfrPAmérique du SudBjaO南アメリカ UOAmérica do SulBruYЮжная Америка mI南美洲 z 4 BBR #BdeIBrasilienBenFBrazilBesFBrasilBfrGBrésilBja[ブラジル連邦共和国 U(BruPБразилия mF巴西 ( " z 0s(�` BIT #BdeGItalienBenEItalyBesFItaliaBfrFItalieBjaUイタリア共和国 UGItáliaBruLИталия mI意大利 ( " z (�` BGR #BdeLGriechenlandBenFGreeceBesFGreciaBfrFGrèceBjaUギリシャ共和国 UGGréciaBruLГреция mF希腊 (  BNA _r- #BdeKNordamerikaBenMNorth AmericaBesMNorteaméricaBfrQAmérique du NordBjaO北アメリカ UQAmérica do NorteBru]Северная Америка mI北美洲 z _e BUS #BdeCUSABenMUnited StatesBesNEstados UnidosBfrKÉtats-UnisBjaUアメリカ合衆国 U(VBruFСША mF美国 ( ! z"A ( " z (8(�` BDK #BdeIDänemarkBenGDenmarkBesIDinamarcaBfrHDanemarkBjaUデンマーク王国 U(BruJДания mF丹麦 ( " z ((�` BSE #BdeHSchwedenBenFSwedenBesFSueciaBfrFSuèdeBjaXスウェーデン王国 UGSuéciaBruLШвеция mF瑞典 ( " z "M(�` BPT #BdeHPortugalBen( Bes( Bfr( BjaXポルトガル共和国 U( BruTПортугалия mI葡萄牙 (  BAF _r* #BdeFAfrikaBenFAfricaBesGÁfricaBfrGAfriqueBjaLアフリカ U( sBruLАфрика mF非洲 z # BGH #BdeEGhanaBen( Bes( Bfr( BjaRガーナ共和国 UDGanaBruHГана mF加纳 (  z + BTR #BdeGTürkeiBenFTurkeyBesHTurquíaBfrGTurquieBjaRトルコ共和国 UGTurquiaBruLТурция mI土耳其 ( ( M z "+ BCM #BdeGKamerunBenHCameroonBesHCamerúnBfrHCamerounBjaXカメルーン共和国 UICamarõesBruNКамерун mI喀麦隆 ( " z -8(�` BIE #BdeFIrlandBenGIrelandBesGIrlandaBfrGIrlandeBjaRアイルランド U( ^BruPИрландия mI爱尔兰 ( ( M z  BZA #BdeJSüdafrikaBenLSouth AfricaBesJSudáfricaBfrNAfrique du SudBjaO南アフリカ UNÁfrica do SulBruFЮАР mF南非 ( " z  -(�` BFI #BdeHFinnlandBenGFinlandBesIFinlandiaBfrHFinlandeBja[フィンランド共和国 UJFinlândiaBruRФинляндия mF芬兰 (  z n BAE #Bde\Vereinigte Arabische EmirateBenTUnited Arab EmiratesBesWEmiratos Árabes UnidosBfrTÉmirats Arabes UnisBjaXアラブ首長国連邦 UWEmirados Árabes UnidosBruFОАЭ mI阿联酋 ( " z  /P(�` BPL #BdeEPolenBenFPolandBesGPoloniaBfrGPologneBjaXポーランド共和国 UHPolôniaBruLПольша mF波兰 (  z  BJO #BdeIJordanienBenFJordanBesHJordaniaBfrHJordanieBja]ヨルダン・ハシミテ王国 UIJordâniaBruPИордания mF约旦 (  z& ( " z *¹(�` BBE #BdeGBelgienBenGBelgiumBesHBélgicaBfrHBelgiqueBjaRベルギー王国 U(BruNБельгия mI比利时 ( " z  /U(�` BRO #BdeIRumänienBenGRomaniaBesHRumaníaBfrHRoumanieBjaOルーマニア UHRomêniaBruNРумыния mL罗马尼亚 ( (G z : BAR #BdeKArgentinienBenIArgentinaBes(BfrIArgentineBja[アルゼンチン共和国 U(BruRАргентина mI阿根廷 ( " z -+(�` BLU #BdeILuxemburgBenJLuxembourgBesJLuxemburgoBfr(BjaUルクセンブルグ U(BruTЛюксембург mI卢森堡 ( ( M z s BUG #BdeFUgandaBen(1Bes(1BfrGOugandaBjaUウガンダ共和国 U(1BruLУганда mI乌干达 (  z  BAM #BdeHArmenienBenGArmeniaBes(BfrHArménieBjaXアルメニア共和国 UHArmêniaBruNАрмения mL亚美尼亚 ( ( M z HV BTZ #BdeHTansaniaBenHTanzaniaBes(@BfrHTanzanieBja]タンザニア連合共和国 UITanzâniaBruPТанзания mL坦桑尼亚 ( ( M z  BBI #BdeGBurundiBen(Bes(Bfr(BjaUブルンジ共和国 U(BruNБурунди mI布隆迪 ( (G z 4|Y BUY #BdeGUruguayBen(ABes(ABfr(ABjaXウルグアイ共和国 UGUruguaiBruNУругвай mI乌拉圭 ( (G z ;oJ BCL #BdeEChileBen(Bes(BfrEChiliBjaOチリ共和国 U(BruHЧили mF智利 ( " z  .(�` BBG #BdeIBulgarienBenHBulgariaBes(6BfrHBulgarieBjaXブルガリア共和国 UIBulgáriaBruPБолгария mL保加利亚 ( " z  g BUA #BdeGUkraineBen(BesGUcraniaBfr(BjaXウクライナ共和国 UHUcrâniaBruNУкраина mI乌克兰 ( ( M z vj BEG #BdeHÄgyptenBenEEgyptBesFEgiptoBfrGÉgypteBja]エジプト・アラブ共和国 UEEgitoBruLЕгипет mF埃及 ( (~ z _e BCA #BdeFKanadaBenFCanadaBesGCanadáBfr(BjaIカナダ U(BruLКанада mI加拿大 (  z ~ BIL #BdeFIsraelBen(8Bes(8BfrGIsraëlBjaRイスラエル国 U(8BruNИзраиль mI以色列 (  z k BQA #BdeEKatarBenEQatarBes(Bfr(BjaLカタール UECatarBruJКатар mI卡塔尔 ( " z(q (q " z( (q  z( (  z(& (& " z#. #. " z  m> BMD #BdeXMoldau (Republik Moldau)BenGMoldovaBesHMoldaviaBfrHMoldavieBjaUモルドバ共和国 UVMoldova, República deBruNМолдова mL摩尔多瓦 (O " z( ( " z( ( " z(t 0(�` BHR #BdeHKroatienBenGCroatiaBesGCroaciaBfrGCroatieBjaXクロアチア共和国 UHCroáciaBruPХорватия mL克罗地亚 " ( " z( ( " z(� ( (~ z(, ( " z( ( " z(p (  z' ( (~ z(, (p " z( E ( E (~ z(, (,  z  BIQ #BdeDIrakBenDIraqBes(VBfr(VBjaRイラク共和国 UFIraqueBruHИрак mI伊拉克 (D " z( ( (~ z 6 BBZ #BdeFBelizeBen(BesFBeliceBfr(BjaLベリーズ U(BruJБелиз mI伯利兹 ( " z(m (m  z(  (  " z( ( (~ z( (p " z(p (p " z( (& " z(� (& " z( ( " z( ( (~ z(, (�` BLV #BdeHLettlandBenFLatviaBesGLetoniaBfrHLettonieBjaUラトビア共和国 UHLetôniaBruLЛатвия mL拉脱维亚 (~ z(, #. " z( ( " z( #. (~ z 6v BVG #BdeXBritische JungferninselnBenVBritish Virgin IslandsBesOIslas VírgenesBfrMÎles ViergesBja[英領ヴァージン諸島 UYIlhas Virgens BritânicasBru]Британские Виргинские о-ва mU英属维尔京群岛 (r (~ z(, (m " z( (m  z& (m " z( ( " z(m (, " z( (, " z( ( (~ z(, (� (~ z(,  (�` BLT #BdeGLitauenBenILithuaniaBesHLituaniaBfrHLituanieBjaXリトアニア共和国 UILituâniaBruJЛитва mI立陶宛 " z( (  z( ( " z( <(�` BCY #BdeFZypernBenFCyprusBesFChipreBfrFChypreBjaUキプロス共和国 U(BruHКипр mL塞浦路斯 " z(� ( " z#. (, (~ z(, (O " z( (p " z( I ( I " z(p (t (~ z(, (t " z( 2 ( 2 (G z( (,  z  ` BGE #BdeHGeorgienBenGGeorgiaBes(BfrHGéorgieBjaUグルジア共和国 UHGeórgiaBruLГрузия mL格鲁吉亚 ( " z .(�` BSK #Bde]Slowakei (Slowakische Republik)BenHSlovakiaBesJEslovaquiaBfrISlovaquieBja] スロバキア (スロバキア共和国) UKEslováquiaBruPСловакия mL斯洛伐克 ( + " z(� (, " z#. (t  z < BKZ #BdeJKasachstanBenJKazakhstanBesJKazajstánBfr(!3Bja[カザフスタン共和国 ULCazaquistãoBruRКазахстан mO哈萨克斯坦 (! " z( #. " z( E ( " z e(�` BEE #BdeGEstlandBenGEstoniaBes(!BfrGEstonieBjaXエストニア共和国 UHEstôniaBruNЭстония mL爱沙尼亚 (! ! z"A (, (~ z(, ( " z $B(�` BGI #BdeIGibraltarBen("Bes("Bfr("BjaRジブラルタル U("BruRГибралтар mL直布罗陀 ("~ " z( (p " z / BNO #BdeHNorwegenBenFNorwayBesGNoruegaBfrHNorvègeBjaUノルウェー王国 U(#4BruPНорвегия mF挪威 (# " z( (p  z(& (p " z(q (p " z( (p " z(t (m " z( (m  z _qR BPS #Bde]Palästinensische AutonomiegebieteBenIPalestineBesVTerritorios PalestinosBfrVTerritoire palestinienBjaOパレスチナ UWTerritórios palestinosBru]Палестинские территории mL巴勒斯坦 (# " z  (�` BHU #BdeFUngarnBenGHungaryBesHHungríaBfrGHongrieBjaXハンガリー共和国 UGHungriaBruNВенгрия mI匈牙利 ($ " z(q (t " z( (t (~ z(, &  z& "A (~ z(, % " z(t (,  z%. ( (~ z(, ( " z( ( " z(t ( " z(q (,  z! (O  z(? (? ( M z( ( " z '(�` BMT #BdeEMaltaBen(&QBes(&QBfrEMalteBjaLマルタ島 U(&QBruLМальта mI马耳他 (&:  z$ &  z! &  z# #. " z( ( (~ z(, ( " z( ( E " z( ( " z( (  z  BSA #BdeMSaudi-ArabienBenLSaudi ArabiaBesMArabia SaudíBfrOArabie saouditeBja[サウジアラビア王国 UOArábia SauditaBru]Саудовская Аравия mO沙特阿拉伯 ('  z# (t  z  BIR #BdeZIran (Islamische Republik)BenDIranBesEIránBfr((#Bja]イラン・イスラム共和国 UDIrãBruHИран mF伊朗 ('  z%. (,  z# (, " z( 2 (, " z(p (,  z$ (,  z! (, " z( E (,  z m BBH #BdeGBahrainBen((BesHBahréinBfrHBahreïnBjaOバーレーン U((BruNБахрейн mF巴林 (, ( M z( (, (G z( (,  z!z (, (~ z( (,  z( (, (G z( (, (G z 8> BCO #BdeIKolumbienBenHColombiaBes()BfrHColombieBjaXコロンビア共和国 UIColômbiaBruPКолумбия mL哥伦比亚 (,  z  BSY #BdeFSyrienBenESyriaBesESiriaBfrESyrieBja]シリア・アラブ共和国 UFSíriaBru]Сирийская Арабская Республика mI叙利亚 (*P " z( ( " z(t (p " z(O #. (~ z(, (  z%. ( " z( #. " z( (  z! ( " z(p ( " z#. (  z & BLB #BdeGLibanonBenGLebanonBesGLíbanoBfrELibanBjaUレバノン共和国 U(+BruJЛиван mI黎巴嫩 (+ " z( I (p " z( E (t  z%. (  z l BAZ #BdeMAserbaidschanBenJAzerbaijanBesKAzerbaiyánBfrLAzerbaïdjanBja]アゼルバイジャン共和国 UKAzerbaijãoBruVАзербайджан mL阿塞拜疆 (,@  z ` BOM #BdeDOmanBen(-BesEOmánBfr(-BjaOオマーン国 UDOmãBruHОман mF阿曼 (, " z _L BRS #BdeGSerbienBenFSerbiaBes(-zBfrFSerbieBjaLセルビア UGSérviaBruLСербия mL塞尔维亚 (-] " z( (�Y " z#. (�Y " z( + (�Y " z( (�Y " z(# ( E " z(�Y ( " z(q ( " z($ (  z(  ( " z( ( (~ z( ( " z(# ( " z( ( " z( E (  z(' ( " z( ( " z( ( " z(� ( " z( ( " z ( ; BIS #BdeFIslandBenGIcelandBesHIslandiaBfrGIslandeBja[アイスランド共和国 UIIslândiaBruPИсландия mF冰岛 (.  z& & " z 0 (�` BSI #BdeISlowenienBenHSloveniaBesIEsloveniaBfrISlovénieBjaOスロベニア UJEslovêniaBruPСловения mO斯洛文尼亚 (/ " z  BMK #BdeNNordmazedonienBenONorth MacedoniaBesSMacedonia del NorteBfrRMacédoine du NordBja]マケドニア旧ユーゴスラビア共和国 UJMacedôniaBru]Северная Македония mO前南马其顿 (0(  z%. ( (~ z(, ( " z( (  z(' "A " z .k BLI #BdeMLiechtensteinBen(1^Bes(1^Bfr(1^Bja]リヒテンシュタイン公国 ULLichtensteinBruVЛихтенштейн mO列支敦士登 (1L " z(! (, " z .k^ BJE #BdeFJerseyBen(2 Bes(2 Bfr(2 BjaOジャージー U(2 BruLДжерси mI泽西岛 (t " z( (r " z(� (p " z(t (� " z( (� " z(�Y (� " z( (� " z(p (� " z( (� " z( I (� " z(q (� " z( (� " z( (� " z( 2 (� " z( (� " z( (� " z(1 (1 " z 2% BBA #BdeWBosnien und HerzegowinaBenVBosnia and HerzegovinaBesRBosnia-HerzegovinaBfrSBosnie-HerzégovineBja]ボスニア・ヘルツェゴビナ共和国 UTBósnia-HerzegóvinaBruLБосния mF波黑 (3U " z(p ( " z( ( " z( ('  z O BKG #BdeIKirgistanBenJKyrgyzstanBesKKirguistánBfrLKirghizistanBjaUキルギス共和国 ULQuirguistãoBruTКыргызстан mR吉尔吉斯斯坦 (4a ( M z E(�` BRE #BdeHRéunionBen(5#BesHReuniónBfr(5#BjaRレユニオン島 UHReuniãoBruNРеюньон mI留尼汪 (5 " z#. ( " z( + ( " z(�Y (  z(! ( (~ z(, (' " z(t (q ! z"A (t " z( (t " z( (t  z L BID #BdeJIndonesienBenIIndonesiaBes(65BfrJIndonésieBja[インドネシア共和国 UJIndonésiaBruRИндонезия mO印度尼西亚 (t  z!z (t  z%. (t (~ z( (t (G z( (t ! z Y BAS #BdeRAmerikanisch-SamoaBenNAmerican SamoaBesOSamoa AmericanaBfrRSamoa américainesBjaO米領サモア U(7)Bru]Американское Самоа mO美属萨摩亚 (t (~ z 6 BAI #BdeHAnguillaBen(7BesGAnguilaBfr(7BjaLアンギラ U(7BruNАнгилья mI安圭拉 (t (~ z 6L BAG #BdeSAntigua und BarbudaBenSAntigua and BarbudaBesQAntigua y BarbudaBfrRAntigua et BarbudaBja]アンティグア・バーブーダ URAntígua e BarbudaBru]Антигуа и Барбуда mU安提瓜和巴布达 (t (G z( (t (~ z 6 BAW #BdeEArubaBen(92Bes(92Bfr(92BjaLアルバ島 U(92BruJАруба mI阿鲁巴 (t (~ z 6 BBS #BdeGBahamasBen(9Bes(9Bfr(9BjaLバハマ国 U(9BruLБагамы mI巴哈马 (t (~ z 3| BBB #BdeHBarbadosBen(:Bes(:BfrGBarbadeBjaOバルバドス U(:BruPБарбадос mL巴巴多斯 (t (~ z( (t (~ z 6a BBM #BdeGBermudaBen(:BesHBermudasBfrHBermudesBjaUバミューダ諸島 U(:Bru\Бермудские о-ва mI百慕大 (t (G z ;q BBO #BdeHBolivienBenGBoliviaBes(;'BfrGBolivieBjaUボリビア共和国 UHBolíviaBruNБоливия mL玻利维亚 (t (~ z(r (t (~ z 6. BKY #BdeLKaimaninselnBenNCayman IslandsBesMIslas CaimánBfrNÎles CaïmansBjaRケイマン諸島 ULIlhas CaimanBru]Каймановы Острова mL开曼群岛 (t (G z( (t (G z() (t ! z  BCK #BdeJCookinselnBenLCook IslandsBesJIslas CookBfrJÎles CookBjaOクック諸島 UJIlhas CookBruWОстрова Кука mL库克群岛 (t (~ z 7L| BCR #BdeJCosta RicaBen(=.Bes(=.Bfr(=.BjaOコスタリカ U(=.BruSКоста-Рика mO哥斯达黎加 (t (~ z 6] BCU #BdeDKubaBenDCubaBes(=Bfr(=BjaUキューバ共和国 U(=BruHКуба mF古巴 (t (~ z 6 BDM #BdeHDominicaBen(>Bes(>BfrIDominiqueBjaOドミニカ国 U(>Bru]�Остров Доминика mL多米尼加 (t (~ z 5< BDO #BdeMDom. RepublikBenRDominican RepublicBesURepública DominicanaBfrWRépublique DominicaineBjaUドミニカ共和国 U(>Bru]Доминиканская Республика m(>t (t (G z 7Қ BEC #BdeGEcuadorBen(?nBes(?nBfrIÉquateurBjaXエクアドル共和国 UGEquadorBruNЭквадор mL厄瓜多尔 (t (~ z 6 BSV #BdeKEl SalvadorBen(?Bes(?BfrHSalvadorBjaUエルサルバドル U(?BruRСальвадор mL萨尔瓦多 (t (G z 5 BFK #BdeNFalklandinselnBenPFalkland IslandsBesNIslas MalvinasBfrOÎles MalouinesBja[フォークランド諸島 UNIlhas MalvinasBru]Фолклендские о-ва m]福克兰群岛(马尔维纳斯) (t ! z !" BFJ #BdeGFidschiBenDFijiBesDFiyiBfrEFidjiBjaLフィジー U(AiBruJФиджи mF斐济 (t (~ z 6O BGD #BdeGGrenadaBen(ABesGGranadaBfrGGrenadeBjaLグレナダ U(ABruNГренада mL格林纳达 (t (~ z 6(�` BGP #BdeJGuadeloupeBen(BHBesIGuadalupeBfr(BHBjaRグアドループ U(B\BruRГваделупа mL瓜德罗普 (t ! z = BGU #BdeDGuamBen(BBes(BBfr(BBjaIグアム U(BBruHГуам mF关岛 (t (~ z 6 BGT #BdeIGuatemalaBen(C'Bes(C'Bfr(C'BjaOグアテマラ U(C'BruRГватемала mL危地马拉 (t (G z 3g BGY #BdeFGuyanaBen(CBes(CBfr(CBjaLガイアナ UFGuianaBruLГайана mI圭亚那 (t (~ z 8 BHT #BdeEHaitiBen(D BesFHaitíBfrFHaïtiBjaRハイチ共和国 U(D BruJГаити mF海地 (t (~ z 7d BHN #BdeHHondurasBen(D}Bes(D}Bfr(D}Bja[ホンジュラス共和国 U(D}BruPГондурас mL洪都拉斯 (t (~ z 5@ BJM #BdeGJamaikaBenGJamaicaBes(E BfrIJamaïqueBjaOジャマイカ U(E BruLЯмайка mI牙买加 (t ! z = BKI #BdeHKiribatiBen(EvBes(EvBfr(EvBjaUキリバス共和国 UIQuiribatiBruPКирибати mL基里巴斯 (t (~ z 6 BMS #BdeJMontserratBen(EBes(EBfr(EBjaUモントセラト島 U(EBruRМонсеррат mO蒙特塞拉特 (t ! z  3 BNR #BdeENauruBen(FyBes(FyBfr(FyBjaIナウル U(FyBruJНауру mF瑙鲁 (t (~ z 72 BNI #BdeINikaraguaBenINicaraguaBes(FBfr(FBjaXニカラグア共和国 UJNicaráguaBruRНикарагуа mL尼加拉瓜 (t ! z  % BNC #BdeMNeukaledonienBenMNew CaledoniaBesONueva CaledoniaBfrSNouvelle-CalédonieBjaXニューカレドニア UONova CaledôniaBru]�Новая Каледония mR新喀里多尼亚 (t ! z = BNU #BdeDNiueBen(H4BesIIsla NiueBfrFNiouéBjaLニウエ島 U(H4BruHНиуе mF纽埃 (t ! z  k BNF #BdeLNorfolkinselBenNNorfolk IslandBesLIsla NorfolkBfrLÎle NorfolkBjaUノーフォーク島 ULIlha NorfolkBru[Остров Норфолк mL诺福克岛 (t  z  BKP #BdeINordkoreaBenKNorth KoreaBesOCorea del NorteBfrNCorée du NordBja] 韓国、朝鮮民主主義人民共和国 UOCoreia do NorteBru[Северная Корея mF朝鲜 (t (~ z 8 BPA #BdeFPanamaBen(JBesGPanamáBfr(JBjaIパナマ U(J'BruLПанама mI巴拿马 (t ! z ޴ BPG #BdeOPapua-NeuguineaBenPPapua New GuineaBesSPapúa-Nueva GuineaBfrZPapouasie-Nouvelle GuinéeBja]パプア・ニューギニア UQPapua-Nova GuinéBru] Папуа – Новая Гвинея mU巴布亚新几内亚 (t (G z 4t BPY #BdeHParaguayBen(KsBes(KsBfr(KsBjaXパラグアイ共和国 UHParaguaiBruPПарагвай mI巴拉圭 (t (G z <H BPE #BdeDPeruBen(KBesEPerúBfrFPérouBjaRペルー共和国 U(KBruHПеру mF秘鲁 (t  z'J (t ! z = BPN #BdeHPitcairnBenPPitcairn IslandsBesNIslas PitcairnBfr(LnBjaRピトケアン島 U(LnBruNПиткэрн mL皮特凯恩 (t (~ z E BPR #BdeKPuerto RicoBen(LBes(LBfrJPorto RicoBjaRプエルトリコ U(MBruUПуэрто-Рико mL波多黎各 (t (~ z 6 BKN #BdeUSaint Kitts und NevisBenRSt Kitts and NevisBesWSan Cristóbal y NievesBfr\Saint-Christophe-et-NiévèsBja] セントクリストファー・ネビス UYSão Cristóvão e NévisBru]Сент-Киттс и Невис mU圣基茨和尼维斯 (t (~ z 6 BLC #BdeISt. LuciaBenKSaint LuciaBesLSanta LucíaBfrLSainte-LucieBjaRセントルシア ULSanta LúciaBruSСент-Люсия mL圣卢西亚 (t (~ z 6 BVC #Bde]St. Vincent und die GrenadinenBen]Saint Vincent and the GrenadinesBes\San Vicente y las GranadinasBfr]Saint-Vincent-et-les-GrenadinesBja]セントビンセント・グレナディーン諸島 UZSão Vincente e GranadinasBru]Сент-Винсент и Гренадины m]圣文森特和格林纳丁斯 (t ! z =N BWS #BdeESamoaBen(PBes(PBfr(PBjaL西サモア U(PBruJСамоа mI萨摩亚 (t ! z  6 BSB #BdeNSolomon-InselnBenOSolomon IslandsBesNIslas SalomónBfrMÎles SalomonBjaRソロモン諸島 UNIlhas SalomãoBru]Соломонские острова mO所罗门群岛 (t (G z 3 BSR #BdeHSurinameBen(QBesGSurinamBfr(QBjaUスリナム共和国 U(QBruNСуринам mI苏里南 (t ( M z C BSZ #BdeISwasilandBenHEswatiniBesKSuazilandiaBfrISwazilandBjaXスワジランド王国 ULSuazilândiaBruRСвазиленд mL斯威士兰 (t ! z =b BTK #BdeGTokelauBen(RBes(RBfr(RBjaRトケラウ諸島 U(RBruNТокелау mI托克劳 (t ! z = BTO #BdeETongaBen(SCBes(SCBfr(SCBjaOトンガ王国 U(SCBruJТонга mF汤加 (t (~ z 6W BTT #BdeSTrinidad und TobagoBenSTrinidad and TobagoBesQTrinidad y TobagoBfrRTrinidad et TobagoBja] トリニダード・トバゴ共和国 UQTrindade e TobagoBru]Тринидад и Тобаго mX特立尼达和多巴哥 (t (~ z 6T BTC #BdeWTurks- und CaicosinselnBenXTurks and Caicos IslandsBesUIslas Turcas y CaicosBfrYÎles Turques-et-CaïquesBja] タークス諸島・カイコス諸島 UTIlhas Turks e CaicosBru] Острова Тёркс и Кайкос m[特克斯和凯科斯群岛 (t ! z  3Y BTV #BdeFTuwaluBenFTuvaluBes(UBfr(UBjaIツバル U(UBruLТувалу mI图瓦卢 (t (G z(/ (t ! z  BVU #BdeGVanuatuBen(V.Bes(V.Bfr(V.BjaUバヌアツ共和国 U(V.BruNВануату mL瓦努阿图 (t (G z 7Q BVE #BdeIVenezuelaBen(VBes(VBfrLVénézuélaBjaXベネズエラ共和国 U(VBruRВенесуэла mL委内瑞拉 (t (~ z 4B BPM #BdeWSt. Pierre und MiquelonBenYSaint Pierre and MiquelonBesUSan Pedro y MiquelónBfrXSaint-Pierre et MiquelonBja] サンピエール島・ミクロン島 UWSaint Pierre e MiquelonBru]Сен-Пьер и Микелон mX圣皮埃尔和密克隆 (t " z .i BAD #BdeGAndorraBen(X@Bes(X@BfrGAndorreBjaLアンドラ U(X@BruNАндорра mI安道尔 (t ( M z 3%G BAO #BdeFAngolaBen(XBes(XBfr(XBjaUアンゴラ共和国 U(XBruLАнгола mI安哥拉 (t  z( (t  z(,@ (t  z(( (t  z zu BBD #BdeKBangladeschBenJBangladeshBes(Y^Bfr(Y^Bja] バングラディッシュ人民共和国 UJBangladexeBruRБангладеш mL孟加拉国 (t " z  @ BBY #BdeMWeißrusslandBenGBelarusBesKBielorrusiaBfrLBiélorussieBjaXベラルーシ共和国 UMBielo-RússiaBruPБеларусь mL白俄罗斯 (t ( M z $" BBJ #BdeEBeninBen(ZBesFBenínBfrFBéninBjaRベニン共和国 U(ZBruJБенин mF贝宁 (t  z  BBT #BdeFBhutanBen([ BesFButánBfrGBhoutanBjaRブータン王国 UFButãoBruJБутан mF不丹 (t " z(3U (t ( M z ? BBW #BdeHBotswanaBen([BesHBotsuanaBfr([BjaUボツワナ共和国 U([BruPБотсвана mL博茨瓦纳 (t  z Ȏ BBN #BdeFBruneiBen(\BesGBrunéiBfrRBrunéi DarussalamBjaLブルネイ U(\Bru]Бруней Даруссалам mF文莱 (t " z( (t ( M z $ BBF #BdeLBurkina FasoBen(\Bes(\Bfr(\BjaUブルキナファソ UMBurkina FassoBruWБуркина Фасо mO布基纳法索 (t ( M z( (t  z& (t ( M z( (t ( M z 3~ BCV #BdeIKapverdenBenJCabo VerdeBes(]BfrHCap-VertBjaRカーボベルデ U(]Bru] Острова Зеленого Мыса mI佛得角 (t ( M z  BCF #Bde\Zentralafrikanische RepublikBenXCentral African RepublicBesYRepública CentroafricanaBfrLCentrafriqueBja[中央アフリカ共和国 UZRepública Centro-AfricanaBruFЦАР mF中非 (t ( M z %% BTD #BdeFTschadBenDChadBes(^BfrETchadBjaRチャド共和国 UEChadeBruFЧад mF乍得 (t ! z  BCX #BdeOWeihnachtsinselBenPChristmas IslandBesNIsla ChristmasBfrNÎle ChristmasBjaRクリスマス島 UKIlhas NatalBru]Остров Рождества mI圣诞岛 (t  z p BCC #BdeKKokosinselnBenWCocos [Keeling] IslandsBesKIslas CocosBfrKÎles CocosBja]ココス[キーリング]諸島 UJIlhas CocoBruZКокосовые о-ва m[科科斯(基林)群岛 (t ( M z I BKM #BdeGKomorenBenGComorosBesGComorasBfrGComoresBja] コモロ・イスラム連邦共和国 UMIlhas ComoresBruZКоморские о-ва mI科摩罗 (t ( M z 0 BCD #BdeEKongoBenHDR CongoBesRCongo DemocráticoBfrCRDCBjaXコンゴ民主共和国 UNCongo-KinshasaBruHЗаир mI扎伊尔 (t ( M z " BCI #BdeOElfenbeinküsteBenKIvory CoastBesOCosta de MarfilBfrNCôte d'IvoireBjaL象牙海岸 UOCosta do MarfimBruTКот-д'Ивуар m(bd (t " z( (t ( M z(+ (t ( M z #; BGQ #BdeQÄquatorialguineaBenQEquatorial GuineaBesQGuinea EcuatorialBfrTGuinée équatorialeBjaX赤道ギニア共和国 UQGuiné EquatorialBru] Экваториальная Гвинея mO赤道几内亚 (t ( M z (Z BER #BdeGEritreaBen(cBes(cBfrJÉrythréeBjaOエリトリア UHEritreiaBruNЭритрея mO厄立特里亚 (t " z(! (t ( M z (L BET #BdeJÄthiopienBenHEthiopiaBesHEtiopíaBfrIÉthiopieBjaOエチオピア UHEtiópiaBruNЭфиопия mO埃塞俄比亚 (t " z (p BFO #BdeOFäröer-InselnBenMFaroe IslandsBesKIslas FeroeBfrMÎles FéroéBjaRフェロー諸島 UKIlhas FaroeBruZФарерские о-ва mL法罗群岛 (t ( M z $) BGA #BdeEGabunBenEGabonBesFGabónBfr(eBjaRガボン共和国 UFGabãoBruJГабон mF加蓬 (t ( M z $Ӌ BGM #BdeFGambiaBen(fBes(fBfrFGambieBjaUガンビア共和国 UGGâmbiaBruLГамбия mI冈比亚 (t  z( (t ( M z( (t " z("~ (t " z( (t (~ z 4D BGL #BdeIGrönlandBenIGreenlandBesKGroenlandiaBfrIGroenlandBjaUグリーンランド ULGronelândiaBruTГренландия mI格陵兰 (t ( M z $2 BGW #BdeMGuinea-BissauBen(g^BesNGuinea-BissáuBfrNGuinée-BissauBja[ギニアビサウ共和国 U[República da Guiné-BissauBruYГвинея-Биссау mO几内亚比绍 (t ( M z $ BGN #BdeFGuineaBen(h!Bes(h!BfrGGuinéeBjaRギニア共和国 UFGuinéBruLГвинея mI几内亚 (t  z(' (t  z(D (t " z( 2 (t  z(? (t  z(! (t ( M z  BKE #BdeEKeniaBenEKenyaBes(hBfr(hBjaRケニア共和国 UGQuêniaBruJКения mI肯尼亚 (t  z [ BKW #BdeFKuwaitBen(iWBes(iWBfrGKoweïtBjaOクウェート U(iWBruLКувейт mI科威特 (t  z(4a (t  z D" BLA #BdeDLaosBen(iBes(iBfr(iBjaIラオス U] República Popular Democrática do LaosBruHЛаос mF老挝 (t " z( (t  z(+ (t ( M z ;T BLS #BdeGLesothoBen(jwBes(jwBfr(jwBjaOレソト王国 UFLesotoBruLЛесото mI莱索托 (t ( M z "8 BLR #BdeGLiberiaBen(jBes(jBfr(jBjaUリベリア共和国 UHLibériaBruNЛиберия mL利比里亚 (t ( M z ! BLY #Bde]Libysch-Arabische DschamahirijaBenELibyaBesELibiaBfrELibyeBja] 社会主義人民リビア・アラブ国 UXLíbia Árabe JamahiriyaBruJЛивия mI利比亚 (t " z(1L (t " z( (t  z [ BMO #BdeEMacauBenEMacaoBes(lKBfr(lKBjaIマカオ U] Região Administrativa Especial de MacauBruJМакао mF澳门 (t " z(0( (t ( M z 8# BMG #BdeJMadagaskarBenJMadagascarBes(lBfr(lBja[マダガスカル共和国 U(lBruTМадагаскар mO马达加斯加 (t ( M z & BMW #BdeFMalawiBen(mmBesFMalauiBfr(mmBjaUマラウイ共和国 UGMalauíBruLМалави mI马拉维 (t  z  BMV #BdeIMaledivenBenHMaldivesBesHMaldivasBfr(mBjaLモルジブ U(n�Bru]Мальдивские о-ва mL马尔代夫 (t ( M z %qj BML #BdeDMaliBen(nuBes(nuBfr(nuBjaOマリ共和国 U(nuBruHМали mF马里 (t ( M z $I` BMR #BdeKMauretanienBenJMauritaniaBes(nBfrJMauritanieBja] モーリタニア・イスラム共和国 UKMauritâniaBruTМавритания mO毛利塔尼亚 (t " z(&: (t  z  BMN #BdeHMongoleiBenHMongoliaBes(oBfrHMongolieBjaOモンゴル国 UIMongóliaBruPМонголия mF蒙古 (t ( M z A BMU #BdeIMauritiusBen(pBesHMauricioBfrGMauriceBjaRモーリシャス UIMaurícioBruPМаврикий mL毛里求斯 (t " z(O (t " z -1 BMC #BdeFMonacoBen(pBesGMónacoBfr(pBjaIモナコ U(pBruLМонако mI摩纳哥 (t " z 0 BME #BdeJMontenegroBen(qBes(qBfrLMonténégroBjaRモンテネグロ U(qBruTЧерногория mF黑山 (t ( M z &ɷ BMA #BdeGMarokkoBenGMoroccoBesIMarruecosBfrEMarocBjaRモロッコ王国 UHMarrocosBruNМарокко mI摩洛哥 (t ( M z ҭ BMZ #BdeHMosambikBenJMozambiqueBes(r4Bfr(r4Bja[モザンビーク共和国 UYRepública de MoçambiqueBruPМозамбик mL莫桑比克 (t  z B BMM #BdeOBirma (Myanmar)BenGMyanmarBesRMyanmar [Birmania]Bfr(rBjaUミャンマー連邦 USMianmar [Birmânia]BruLМьянма mF缅甸 (t ( M z 32 BNA #BdeGNamibiaBen(seBes(seBfrGNamibieBjaUナミビア共和国 UHNamíbiaBruNНамибия mL纳米比亚 (t  z  BNP #BdeENepalBen(sBes(sBfrFNépalBjaRネパール王国 U(sBruJНепал mI尼泊尔 (t ( M z %= BNE #BdeENigerBen(tWBesFNígerBfr(tWBjaXニジェール共和国 U(tfBruJНигер mI尼日尔 (t ( M z #^ BNG #BdeGNigeriaBen(tBes(tBfr(tBja]ナイジェリア連邦共和国 UHNigériaBruNНигерия mL尼日利亚 (t  z(, (t  z  BPK #BdeHPakistanBen(ufBesIPakistánBfr(ufBja] パキスタン・イスラム共和国 UJPaquistãoBruPПакистан mL巴基斯坦 (t ! z  BPW #BdeEPalauBen(vBesFPalaosBfr(vBjaIパラオ U(vBruJПалау mF帕劳 (t  z(# (t  z( (t ( M z jH BDJ #BdeIDschibutiBenHDjiboutiBesFYibutiBfr(vBjaIジブチ UGDjibutiBruNДжибути mI吉布提 (t ( M z "~ BCG #BdeVKongo (Republik Kongo)BenNCongo RepublicBesRCongo [República]BfrQCongo-BrazzavilleBjaRコンゴ共和国 UECongoBruJКонго mF刚果 (t " z(m (t ( M z n BRW #BdeFRuandaBenFRwandaBes(wBfr(wBjaUルワンダ共和国 U(wBruLРуанда mI卢旺达 (t ( M z 3n BSH #BdeJSt. HelenaBenLSaint HelenaBesKSanta ElenaBfrOSainte-HélèneBjaRセントヘレナ ULSanta HelenaBru]Остров Святой Елены mL圣赫勒拿 (t " z 0WD BSM #BdeJSan MarinoBen(xBes(xBfrKSaint-MarinBjaXサンマリノ共和国 U(xBruSСан-Марино mL圣马力诺 (t ( M z $ BST #BdeVSao Tomé und PrincipeBenXSão Tomé and PríncipeBesWSanto Tomé y PríncipeBfrWSão Tomé-et-PríncipeBja]サントメ・プリンシペ U]República Democrática de São Tomé e PríncipeBru]Сан-Томе и Принсипе mX圣多美和普林西比 (t  z(' (t ( M z "D BSN #BdeGSenegalBen(zBes(zBfrISénégalBjaUセネガル共和国 U(zBruNСенегал mL塞内加尔 (t " z(-] (t ( M z $ BSL #BdeLSierra LeoneBen({.BesLSierra LeonaBfr({.BjaRシエラレオネ UJSerra LeoaBruWСьерра-Леоне mL塞拉利昂 (t " z( + (t " z(/ (t ( M z Q BSO #BdeGSomaliaBen({Bes({BfrGSomalieBjaLソマリア UHSomáliaBruLСомали mI索马里 (t  z S BLK #BdeISri LankaBen(|TBes(|TBfr(|TBja] スリランカ民主社会主義共和国 U(|TBruQШри-Ланка mL斯里兰卡 (t ( M z  BSD #BdeESudanBen(|BesFSudánBfrFSoudanBjaUスーダン共和国 UFSudãoBruJСудан mF苏丹 (t " z  C` BSJ #BdeVSvalbard und Jan MayenBenVSvalbard and Jan MayenBesTSvalbard y Jan MayenBfrUSvalbard et Jan MayenBja]スバールバル諸島・ヤンマイエン島 UTSvalbard e Jan MayenBru]Свальбард и Ян-Майен m]斯瓦尔巴岛和扬马延岛 (t  z(*P (t  z 9 BTJ #BdeMTadschikistanBenJTajikistanBesKTayikistánBfrKTadjikistanBja[タジキスタン共和国 ULTajiquistãoBruVТаджикистан mO塔吉克斯坦 (t ( M z(" (t  z (t ( M z $& BTG #BdeDTogoBen(VBes(VBfr(VBjaRトーゴ共和国 U(VBruHТого mF多哥 (t ( M z % BTN #BdeHTunesienBenGTunisiaBesFTúnezBfrGTunisieBjaXチュニジア共和国 UHTunísiaBruJТунис mI突尼斯 (t  z  BTM #BdeLTurkmenistanBen(DBesMTurkmenistánBfrMTurkménistanBjaXトルクメニスタン UNTurcomenistãoBruXТуркменистан mO土库曼斯坦 (t ( M z( (t " z( (t  z( (t  z  BUZ #BdeJUsbekistanBenJUzbekistanBesKUzbekistánBfrLOuzbékistanBja]ウズベキスタン共和国 ULUzbequistãoBruTУзбекистан mR乌兹别克斯坦 (t " z 0I BVA #BdeVStaat der VatikanstadtBenLVatican CityBesSCiudad del VaticanoBfrGVaticanBja] ローマ法王庁 (バチカン市国) UHVaticanoBruNВатикан mI梵蒂冈 (t  z' (t  z  BYE #BdeEJemenBenEYemenBes(BfrFYémenBjaUイエメン共和国 UFIêmenBruJЙемен mF也门 (t ( M z  BZM #BdeFSambiaBenFZambiaBes( BfrFZambieBjaUザンビア共和国 UGZâmbiaBruLЗамбия mI赞比亚 (t ( M z  hS BZW #BdeHSimbabweBenHZimbabweBesGZimbaweBfr(BjaXジンバブエ共和国 UIZimbábueBruPЗимбабве mL津巴布韦 (t " z( (t  z  BAF #BdeKAfghanistanBen(3BesKAfganistánBfr(3Bja] アフガニスタン・イスラム国 ULAfeganistãoBruTАфганистан mI阿富汗 (t  z(& (t " z  BAL #BdeHAlbanienBenGAlbaniaBes(BfrGAlbanieBjaXアルバニア共和国 UHAlbâniaBruNАлбания mO阿尔巴尼亚 (t ( M z ' BDZ #BdeHAlgerienBenGAlgeriaBesGArgeliaBfrHAlgérieBja] アルジェリア民主人民共和国 UHArgéliaBruJАлжир mO阿尔及利亚 (t " z  z(�` BAX #BdeKAlandinselnBenFÅlandBesOIslas de ÅlandBfrLÎles ÅlandBjaUオーランド諸島 UFAlandaBruLАланды mL奥兰群岛 (t " z( (t " z .k BIM #BdeKIsle of ManBen(BesKIsla de ManBfrKÎle de ManBjaIマン島 UKIlha de ManBruMМэн, о-в mR英国属地曼岛 ( " z .l: BGG #BdeHGuernseyBen(PBes(PBfrIGuerneseyBjaOガーンジー U(PBruLГернси mL格恩西岛 ( " z( 2 ( " z("~ ( ( M z(kT (kT  z(' (p " z#. (p  z( ( " z(Y (Y " z(p #. " z(m #. " z(t ( " z($ ( " z( (  z( ( (~ z( ( (~ z(B1 (� " z( (   z(iE (,  z(  #. (~ z(, (& " z(p ( (~ z(, (   z! ( E " z( ( E " z( (� " z#. (� (FtraitsUis_satellite_provider " z( ( " z(t ( (~ z( (  z& (p ! z"A (p " z( (, " z( # " z(O (m " z( (m " z(q (m " z( (, " z( (, " z( (, " z( I (,  z(& (, " z(# (, " z(x (q ( M z(R (q ( M z(ax (q  z( (p " z(-] (p  z( (p " z( (p  z(iE (p " z( (p " z( (p " z(�Y (m " z(p (  z( ( ( M z(c (p  z! (m  z%. (m  z& (t  z! (t " z(t #. " z( (  z (p  z$ (p  z'J (p  z! (p ! z ![ BNZ #BdeJNeuseelandBenKNew ZealandBesMNueva ZelandaBfrQNouvelle-ZélandeBjaXニュージーランド UNNova ZelândiaBru[Новая Зеландия mI新西兰 (p (~ z(, (!  z% (t  z& (  z(D (O " z( ( (~ z(, ( " z(�Y (p  z! ( " z(# (m (~ z( (m " z(t (  z( #.  z& !z " z( !z " (q (G z( (  z(iE (iE  z(,@ (  z(Y= (  z(Z (  z([ ( (~ z(, ( " z("~ ( " z(p (�Y (~ z(B1 (B1 ( M z( ( (G z( ( " z( ( " z(Y ( " z( #.  z& (  z(  ( " z(� ( " z( 2 #.  z(& ( " z( ( ! z"A ( " z(�Y ( " z(�Y ( " z( #. " z(q (  z# ( " z( + #.  z(! ( " z( #. " z( E (� " z( (� " z( ( " z  M BXK #BdeFKosovoBen(-Bes(-Bfr(-BjaIコソボ U(-BruLКосово mI科索沃 ( (~ z(, (�Y  z%. (p " z( (p " z( E (p " z( 2 (p ( M z  BSC #BdeJSeychellenBenJSeychellesBes(Bfr(BjaOセイシェル UPIlhas SeychellesBru]Сейшельские о-ва mI塞舌尔 ( " z(t ( " z( ( " z(p ( " z(� ( " z(. (p (~ z(J (J " z#. (O " z(m (O  z& (! " z( (! " z(t ( ! z( (  z(i (, " z( (m " z( (m " z( (m " z( (m " z(�Y (t  z(  (t " z( (t " z(�Y (, ! z = BMP #BdeSNördliche MarianenBenXNorthern Mariana IslandsBesXIslas Marianas del NorteBfrWÎles Mariannes du NordBjaU北マリアナ諸島 UWIlhas Marianas do NorteBru]Северные Марианские о-ва mO北马里亚纳 (, ! z(B (, (~ z < BMX #BdeFMexikoBenFMexicoBesGMéxicoBfrGMexiqueBjaUメキシコ合衆国 U(BruNМексика mI墨西哥 (, " z( (,  z(6 (,  z(  (,  z& (,  z(Z (, (~ z I1g BVI #Bde\Amerikanische JungferninselnBenSU.S. Virgin IslandsBes]Islas Vírgenes de los Estados UnidosBfr]�Îles Vierges des États-UnisBja[米領ヴァージン諸島 UUIlhas Virgens dos EUABru]Виргинские о-ва (США) mU美属维尔京群岛 (, " z( (, ( M z(t (,  z$ (, (G z(K (, ! z YV BUM #BdeUAmerikanisch-OzeanienBen[U.S. Minor Outlying IslandsBes]Islas menores alejadas de los Estados UnidosBfr] Îles mineures éloignées des États-UnisBjaU米領太平洋諸島 U] Ilhas Menores Distantes dos Estados UnidosBru]Внешние малые острова (США) mX美国本土外小岛屿 (, " z( (,  z% (, ! z( (, " z(O (, " z( (, " z(. (, " z( (, " z( (, " z( (, " z( (, " z( (, " z($ (, " z(-] (,  z!z %. " z(t %. " z(p %.  z(i %. (~ z(= (, (G z(?\ (, (G z(V (, (~ z(J (, (~ z(L (, " (,  z! $  z% $  z$ $  z $  z(o $  z# $  z( $  z'J $ (~ z(, %.  z(Y= (Y=  z(uT (uT  z%. #  z(6 (6 ! z(Jo %. ! z(S1 %. ! z(P %. ! z(V %. ! z(AL %. ! z(B %. ! z(<| %. ! z(U %. ! z( %.  z(s %. " z( E %. " z(� %. " z(q %. " z(�Y %.  z(6 %.  z$ %. " z( %. ( M z(h %.  z(|B #  z& $ ! z(Jo (Jo  (,  z(' (,  z' (,  z(l0 (,  z (,  z'J (, (~ z(S (, ( M z(je (,  z( (,  z(, (,  z(|B (, ( M z(+ (, (~ z(L (L (, (~ z(Mt (Mt (~ z(8 (8 ( (~ z(, (~ z(D (D (~ z(O& (O& (~ z(; (; (~ z(N (N (G z(/ (, (~ z(> (, (~ z(A (, (~ z t`T BCW #BdeHCuraçaoBen(BesGCurazaoBfr(BjaOキュラソー U(BruNКюрасао mI库拉索 (,  z(4a (, ( M z(+ ( " z(t (  z# (  z (  z!z (  z% ( (~ z(, ! " z(p ! " z(t !  z& ! " z(� ! (G z(K ! (~ z( ! ( M z(t ! " z( !  z(' ! (G z(V ! (~ z(9 ! ( M z(q !  z(, ! (G z() !  z( ! (~ z(9 (9 " z(-] ( ( M z( ( ( M z(h (,  z(*P (,  z([ (, (~ z(9 (, (G z() (  z' (  z(Y= ( ! z( ( (~ z(9 (9 (G z( ( (G z(Ka (Ka (~ z(> (> (~ z(C (C (G z() () (G z( ( " z(� (t  z& ( " z( (  z! (  z# (  z(s (s ! z(R (R  z(l0 &  z(l0 (l0  z'J "A ! z"A %.  z(m (m  z(! (! (~ z(, # ! z"A ( ! z(GV (GV  z%. & ! z(AL (AL  z(o (o  z!z &  z# %.  z' %. ! z = BWF #BdeQWallis und FutunaBenQWallis and FutunaBesOWallis y FutunaBfrPWallis-et-FutunaBja]ワリー エ フトゥーナ諸島 UUIlhas Wallis e FutunaBru\Уоллис и Футуна mU瓦利斯和富图纳 ( " z(1L ( " z(. ( " z( + ( " z( ( " z(# (  z(uT ( " z(/ ( " z( (J " z( (1L (~ z(, (  z! (&  z! (� (~ z(, ( 2 " z(p (m " z( E (m (~ z(, ( " z( ( " z(m (r " z(m (�Y " z#. (r " z(�Y (r " z(� ( (~ z( (  z! (  z& (  z(  (  z (�Y (q(*Ris_anonymous_proxy " z(O (q " z(�Y (  z# (�Y " z( ( " z(t ( " z( I ( E " z(# (p ! z"A ( +  z(D (DSrepresented_country _e BUS #(:DtypeHmilitary " z#. (  BAN _r0 #BdeIAntarktisBenJAntarcticaBesJAntártidaBfrKAntarctiqueBjaL南極大陸 UJAntárticaBruTАнтарктика mI南极洲 z 3ps BBV #BdeKBouvetinselBenMBouvet IslandBesKIsla BouvetBfrKÎle BouvetBjaLブーベ島 UKIlha BouvetBruUОстров Буве mI布维岛 (  z( ( ! z"A #. " z(p (&  z(  (&  z$ #. " z(q (  z(& (  z( (  z(  ( " z( ( " z( ( " z( #. " z(m ($ " z#. (  z( ( E  z( #. " z( (  z(! #. " z( + ({ " z(t (   z( ( " z(O ( " z(Y ( " z( (�Y " z( 2 (m " z( 2 (  z(uT (p  z(' (p  z% (p (G z( (p (~ z(J (p " z(t (! (~ z( (! (G z( (! " z(� (! (~ z( (! " z( (! " z(q (! " z( E (! " z#. (! " z(p (! " z(x (x " z(q (x " z(t ( 2 " z(� #. " z( #.  z'J #.  z& #. " z(q #. (~ z( #. " z(q (q  z! ( " z( ($  z(  ($ (~ z(9 (p (~ z(r (p " z(t ( " z( (p " z( (p " z( (& " z( ( " z(t ("~ (~ z(, (  z(Y= (,  z(uT (,  z& (,  z(r (, ! z(Jo (, " z(Y (, " z(X. (,  z(? (, " z(1L (, " z(p (, " z( + (, " z(/ (,  z( (, (G z(; (, (G z(Ka (, !z  z% (uT  z'J (uT  z%. (uT  z# (uT ! z"A & " z( + (uT " z( ( E " z( ( E " z( (� " z( I #. " z(q (  z( ( " z($ (  z! ( " z( (�Y  z( #.  z( ( (~ z(f (f " z( (> " z( (t " z( (-] " z( ( " z( ( " z( E ( (~ z(, ( " z( ( " z(�Y ( (~ z(= ( (~ z(Mt ( (G z( (  z& (  z%. ( (G z(/ ( ! z(Py ( ! z( (  z(' (iE " z(m (' " z(p (p " z(-] ( ! z( ( " z( ( (~ z( (� " z( (� " z(m (� ( M z (�` BYT #BdeGMayotteBen(oBes(oBfr(oBjaOマヨット島 U(oBruNМайотта mI马约特 (� " z(> (t  z(~s (~s " z( (  z(r (r " z(� (m " z($ (m  z([ (m " z( (m " z(-] (m " z#. (m " z( + (m ! z"A (m " z(d (m (~ z(, ('  z(  (p  z(( (( (G z( "A  z(6 #. (G z( #. " z(�Y #. (~ z( #.  z& (  z$ ( " z( (r " z(t ( E " z(t (D  z! ( ( M z(5 (�  z(Y= (� " z(q (q(( " z(q (-] (~ z(, (# " z( (p  z([ (  z'J (  z$ (  z(! ( " z(�Y ( E ! z"A ( " z( ( " z( ( " z(. ( (G z( ( " z(�Y ( " z(t ( " z( ( " z( (t " z(t (# " z(p (#  z& (# ! z"A (# " z(/ ( " z(� ( " z( 2 ( (G z( (  z% (  z$ (  z( ( " z( + ( " z( ( " z#. ( " z(q ( (~ z(Mt (, (~ z 65(�` BMF #BdeJSt. MartinBenLSaint MartinBesKSan MartínBfrLSaint-MartinBja[仏領サン・マルタン UMSão MartinhoBru] Остров Святого Мартина mI圣马丁 (, (~ z(B1 (, ! z(6 (, ( M z(+ (+ ( M z( ( ( M z(j (j ( M z(h (h ( M z( ( ( M z(t (t ( M z(" (" ( M z( ( ( M z(ax ( ( M z(h ( ( M z( ( ( M z(ax (ax ( M z(b ( ( M z( ( ( M z(sS (sS ( M z(l (l ( M z(X (X ( M z(b (b ( M z(| (| ( M z( ( ( M z(m[ (m[ ( M z(X (+ ( M z(X (h ( M z(e (e ( M z(p (p ( M z(h (p ( M z(nc (nc ( M z(Z (Z ( M z(^ (^ ( M z([~ ([~ ( M z( (b ( M z(]` (]` ( M z(w (w ( M z(v (v ( M z( ( ( M z(r (r ( M z(e (e ( M z(je (je ( M z( (r ( M z(q (q (~ z( (q ( M z( (p ( M z(c (c ( M z(h (h (" ( M z(R (R (~ z 6z(�` BMQ #BdeJMartiniqueBen(NBesIMartinicaBfr(NBjaXマルティニーク島 U(bBruRМартиника mL马提尼克 (7 ( M z(p ( M z(\ (\ ( M z({ ({ ( M z({ ({ ( M z(tE (tE ( M z(] (] ( M z(D (D ( M z x BSS #BdeISüdsudanBenKSouth SudanBesNSudán del SurBfrJSud-SoudanBjaO南スーダン UMSudão do SulBruUЮжный Судан mI南苏丹 (0 ( M z( ( ( M z(b (b ( M z(z (z ( M z(p (h (G z( (\ ( M z(n (n ( M z( (p ( M z( (p ( M z(vr (vr ( M z(vr (vr(( ( M z( (p ( M z(b (+ ( M z( (, ( M z(` (  z  BIO #Bde] Britisches Territorium im Indischen OzeanBen]British Indian Ocean TerritoryBes] Territorio Británico del Océano ÍndicoBfr] Territoire britannique de l'océan IndienBjaX英領インド洋地域 U] Território Britânico do Oceano ÍndicoBru]/Британская территория в Индийском океане mU英属印度洋领地 ( ( M z(v ( ( M z(t (sS ( M z(t (Z ( M z(t ( ( M z(t (b ( M z(v (h ( M z(X ( M z( (kT ( M z(" (h ( M z( (h ( M z( (b ( M z(w ( " z( ( (~ z(, ( " z#. ( ( M z( (sS ( M z( ( ( M z(sS ( ( M z(X (sS ( M z(Z ( ( M z( (t  z'J (+ ( M z(w (p (~ z( ( ( M z(ax (+ ( M z(X (X ( M z( (t ( M z(X (5  %.  z# !  z%. !  ! " z( %. " z( %. " z($ %. " z(-] %. " z(/ %. " z(3U %. " z( %. " z( + %. " z#. %. (~ z(, !z  z(i (i  z(|B (|B  z([ ([ ! z( "A  z! # ! z"A #  z( #  z(  #  z'J & (~ z(, (uT  z(6 &  z$ &  z (i ( M z( !z ! z( (uT ! z(Fg (uT ! z(u (uT ( z 2 BHM #BdeZHeard- und McDonald-InselnBen]Heard Island and McDonald IslandsBesVIslas Heard y McDonaldBfr\Île Heard et îles McDonaldBja] ハード島・マクドナルド諸島 U[Ilha Heard e Ilhas McDonaldBru]Острова Херд и Макдональд m[赫德岛和麦克唐纳岛 (uT ! z(6 (uT ! z(AL (uT ! z(U (uT ( z f0 BAQ #Bde(%Ben(2Bes(@Bfr(NBjaF南極 U(@BruTАнтарктида m( (uT ( z 5 BGS #Bde]Südgeorgien und die Südlichen SandwichinselnBen]South Georgia and the South Sandwich IslandsBes] Islas Georgia del Sur y Sandwich del SurBfr]Géorgie du Sud-et-les îles Sandwich du SudBja]南ジョージア島・南サンドイッチ諸島 U] Geórgia do Sul e Ilhas Sandwich do SulBru]0Южная Джорджия и Южные Сандвичевы Острова m]南乔治亚岛和南桑德韦奇岛 (uT  z$ (uT  z([ (uT ! z"A (uT (~ z(, (  z# &  z(Y= #  z(Z (Z ! z(Fg (Fg  z %.  z%. $ (~ z(, "A  z'J %. ! z(B (B ! z(V (V ! z"A  z$ # ! z(Py (Py  z$ (Y= " z(p (  z%. "A  z'J $ ! z( (B (~ z( ! ! z ~ BFM #BdeKMikronesienBen]Federated States of MicronesiaBesJMicronesiaBfrKMicronésieBjaXミクロネシア連邦 UKMicronésiaBruTМикронезия mX密克罗尼西亚联邦 (O  z$ !  z!z !  z$ "A  z! "A ! z = BPF #BdeWFranzösisch-PolynesienBenPFrench PolynesiaBesRPolinesia FrancesaBfrUPolynésie FrançaiseBjaU仏領ポリネシア USPolinésia FrancesaBru] Французская Полинезия mU法属波利尼西亚 (J  z$ "A ! z d BTL #BdeKTimor-LesteBenJEast TimorBesNTimor OrientalBfr(tBja[東ティモール共和国 U] República Democrática de Timor-LesteBru]�Восточный Тимор mI东帝汶 (E ! z"A ! z(S1 (S1 (G z( ( (~ z(, ( (~ z(Dk (Dk (G z(?\ (?\ (G z(; (; (~ z(, (Dk " z(t (Dk (~ z(? (? (~ z( ( (G z(K (K (~ z(= (= (~ z(F (F (G z(/ (/ ( (~ z( (  z! (! " z(! #. " z(q ( " z( ( " z( (> " z( (> " z(q (  z( (m " z#. ( " z( ( " z( (  z' (p " z(q (  z(! (p  z(i (p  z(o (p  z(|B (p  z(Y= (p  z(Z (p  z([ (p  z& (p  z(l0 (p  z(r (p  z(s (p ! z(Jo (p  z(4a (p " z(> (>  z& (' " z(! (p ! z(V #. " z(t ( " z(X. (  z( (  z(! ( (~ z(8 ( (~ z(7 ( " z( (  z( ( ( M z(X ( ( z( ( (G z( ( ! z(6 ( " z( ( ! z"A ( (~ z(9 ( " z( (  z(,@ ( " z(3U ( (~ z(9 (  z(Y= ( ( M z(\ ( " z( (  z(( ( ( M z( ( ( M z(Z ( (~ z 6l BBL #BdeOSt. BarthélemyBenQSaint BarthélemyBesNSan BartoloméBfrQSaint-BarthélemyBja[サン・バルテルミー UOSão BartolomeuBru]Остров Святого Бартоломея mO圣巴泰勒米 ( (~ z(:z (  z([ ( (G z(; ( (~ z t`\ BBQ #BdeGBonaireBen]Bonaire, Sint Eustatius, and SabaBes(mBfr]Bonaire, Saint-Eustache et SabaBja]%ボネール、シント・ユースタティウスおよびサバ U(mBru]Бонайре, Синт-Эстатиус и Саба m] 博奈尔岛、圣尤斯达蒂斯和萨巴 ( (~ z(9 (  z(Z ( ( z( ( ( M z([~ ( " z(Y ( (~ z( ( (~ z( (  z(_ ( ( M z(ax ( ( M z(] ( ( M z(v ( ( M z(b ( ! z(<| ( (G z( ( ( M z( (  z!z ( (G z() ( ( M z(]` ( (~ z( ( ! z(_> ( " z( ( " z( ( " z(p ( ( M z(vr ( " z( ( (~ z(> ( (~ z(> ( ( M z(c ( (G z(?\ ( " z(! ( ( M z(+ ( ( M z % BEH #BdeJWestsaharaBenNWestern SaharaBesRSáhara OccidentalBfrQSahara OccidentalBjaL西サハラ UOSaara OcidentalBru]�Западная Сахара mL西撒哈拉 ( ( M z(c ( ( M z(dA ( " z( I ( ! z(AL ( (G z(@i ( ! z(O ( " z(d ( " z(� ( ( M z(e ( (~ z(A (  z( ( (G z 3(�` BGF #BdeTFranzösisch-GuayanaBenMFrench GuianaBesPGuayana FrancesaBfrFGuyaneBjaO仏領ギアナ UOGuiana FrancesaBru]Французская Гвиана mO法属圭亚那 ( " z(> ( ( M z( ( " z("~ ( (~ z(f ( ( M z(e ( ( M z(h ( (~ z(B1 ( ( M z(b ( " z( ( ( z(S ( (~ z(C ( ! z(B ( ( M z(gL ( (G z(C ( ( z( ( (~ z(Dk ( " z( ( (~ z(C ( " z($ (  z(6 ( " z( 2 (  z(& ( " z( (  z# (  z( (  z(D ( " z(. ( " z(1 ( (~ z(D (  z(? (  z! ( ( M z(h (  z(4a (  z& ( ! z(Ed ( ( M z(` (  z$ (  z(iE ( (~ z(; (  z(! (  z(i (  z(+ ( (~ z(N ( " z(1L (  z(|B ( ( M z(j ( ( M z(je ( " z( ( " z( ( " z( ( ( M z(kT ( ( M z(q ( " z(p ( " z(O ( " z(q ( (~ z(z ( ( M z(l ( ! z  BMH #BdeOMarshall-InselnBenPMarshall IslandsBesNIslas MarshallBfrNÎles MarshallBja]マーシャル諸島共和国 UNIlhas MarshallBru\Маршалловы о-ва mO马绍尔群岛 ( " z(0( ( ( M z(nc (  z(r (  z(o (  z(l0 ( ! z( ( (~ z(7 ( ( M z(n ( (~ z(E ( " z(&: ( ( M z(p (  z(m ( ( M z(m[ ( (~ z( (  z$ ( ( M z(r ( ( M z(sS ( ! z(GV ( ( M z(tE ( ! z(H ( ( M z(t ( (~ z(F ( " z(# (  z(s ( ! z(Fg ( ! z(H" (  z(, ( (~ z(J ( (G z(K ( ! z(J ( ! z(Jo (  z'J (  z(uT ( " z( ( (~ z(W ( ! z(L\ ( (~ z(L ( ! z(u ( (G z(Ka (  z( ( ( M z(5 ( " z(m ( " z(-] ( " z#. ( ( M z(w (  z(' ( ! z(P ( ( M z( ( ( M z(x ( " z(/ ( " z(}L ( " z( + ( ( M z({ ( " z(x ( ( M z(z ( ( M z({ ( (G z(Q ( ( M z(0 ( ( M z(y\ ( (~ z(? ( (~ z t_ BSX #BdeLSint MaartenBen({Bes(Bfr(Bja[シント・マールテン U(BruUСинт-Мартен mL圣马丁岛 ( ( M z(R ( (~ z(T ( ( M z(^ ( ( z  BTF #Bde] Französische Süd- und AntarktisgebieteBen[French Southern TerritoriesBes]Territorios Australes FrancesesBfr\Terres australes françaisesBjaR仏領極南諸島 U]�Territórios Franceses do SulBru]Французские Южные Территории mR法属南部领地 ( ( M z(D (  z (  z(~s ( ! z(R ( ! z(E (  z(2 ( ( M z( ( ! z(S1 (  z(  ( (~ z(S ( ! z(U (  z% ( ( M z(" ( " z( ( ( M z( ( ! z( (  z( ( " z( ( (~ z(O& ( (G z(V ( (~ z(r ( (~ z(v (  z' ( ! z(V ( ! z( (  z( ( ( M z(X ( ( M z( ( ( M z( ( ( M z( ( " ( " z( ( " z( (t (~ z(D (, " z(/ (p " z( + (p " z( (p " z($ (p " z(� ( " z(p ( " z( & " z(� & (~ z(> ( (~ z(, ( ( M z( (p " z( ( E " z(� ( E " z(q ( E (~ z(, ( E " z( (  z #. ( z(# (,  z' !z ! z( !z  z% !z ! z(  z#  z!  z'J ( M z(nc ( ( M z(m[ (,  z(m (, ( M z(ax (,  z(o (, " z( (, ( M z( (:z (~ z(, (:z (~ z(:z (:z ( M z(| (, ( M z(  z(_ (, ( M z(p (, ( M z({ (, ( M z(D ( ! z(AL (, ! z(P (, ( M z(c (, ! z(Fg (, ( M z(n (, ( M z(j ( " z(p ( ( M z(b ( ( M z(]` (, ( M z(] " z(x ! z(S1 ( M z(gL ( M z(e ! z(U ( M z(` ( M z(R ( M z(v ( M z(y\ (G z( ( M z({  z(|B  z(s ! z(Py  z& ( " z(! (  z(  z(Z  z(,@ ( M z(| ! z(  z(!  z(' ! z(Jo ( M z(dA  z&  z(4a " z(> ( M z(ax " z(}L ! z(6  z( ( M z(h  z(2 ( z( ( M z(]` ( M z(  z(~s " z(1L (~ z(7 ( M z(r (~ z(B1 ( M z(5  z!z ! z( ( M z(z ( z(# (~ z(J ( M z(c ( M z(tE " z("~ ( M z(^ ( M z(kT ( M z(" ( M z(l  z(i ( M z( (~ z(r (, (~ z(9 (, (~ z(; (, (~ z(> (, (~ z(9 (, (~ z(7 (, (~ z(E (, (~ z(T (, (~ z(O& (, (~ z(W (,  z(+ (,  z%. (6 " z( (s " z(/ (s " z( (s " z(p ( + " z( (  z(& (! " z(p (  z(6 ( " z(p (  z(? ( (~ z( (  z$ ( (~ z( ( " z( (O " z( ( (~ z(C (, (~ z(? (, (~ z(Dk (, (~ z(F (, (G z(Q (, (G z(C (, (~ z(8 (, (~ z(N (, (~ z(C (, (~ z(:z (, ( M z( (, ( M z(] (, ( M z( (, ( M z(w (, ( M z([~ (, " z(t ( " z(p "A " z( (O " z(� ( " z(q ( " z( E #. " z(0( #. " z(t ( " z( (  z! !z " z( ( " z( (�  z(6 ( (G z(K ( " z( ( " z( (  (G z( (p (G z( (p (G z() (p (G z( ( " z( (  z!z (  z& (  z& ( " z( ( +  z% ( " z($ #.  z! #. " z( E ( " ( " z(Y #.  z(' (  (~ z(, ($ " z( ( " z#. (q " z(�Y ( " z( (m  z(! (, " z( E (& " z( ($ " z(q ($ " z(p & " z(�Y (& " z( (p " z( ( " z#. ( " z( (  " z( (p (G z(K (p (G z(/ (p (G z(V (p (~ z( (p " z(� ( ( M z(q #. (~ z( &  z& # ! z"A (6  z & ( M z(X & ! z"A (E ! z(B (  z% "A " z(q "A  z(  % " z( &  z# "A " z(p ! z( # (~ z(, (Y= " z(t # " z(p # " z( (p " z(q (p  z%. #. " z( #. " z(�Y (! " z( (! (~ z(B1 ( (~ z(7 ( " z( (  z(Y= #.  z% #. " z( (!  z(4a #. " #. " z( I (& " z(&: ( (~ z(, (-] " z(�Y (-]  z(6 (p " z(� (  (G z() #. " z( & " z(q & " z(� ( " z(t (' " z(Y ( (~ z( (m (G z( (m  z(6 (m  z% (m " z( #. " z( (, " z( #.  z( #.  z& ( " z( 2 (&  z!z #. " z(p (  z%. ( " z($ (t (~ z(, ( " z(O (p " z(0( (p " z(# #. " z( ( " z( ( " z( (  z(' (  z(s (  z' #. " z( #. " z( 'J ( M z( ( " z( (  z( #. (~ z(, (+ " z( 'J  z%. ( " z(� (  z( (, (G z( ( " z( (-] " z(�Y (  z!z (  z(,@ #. (~ z( ( E " z( (& (G z(V ( " z(t ( (~ z( ( " z(t "A  z& ( " z(/ ( " z(t ( " z(p (' (~ z(, (q " z(t (q " z(O (q " z( #.  z(D #. " z(t (& " z( E ( " z( ( " z( E ( " z(t (-]  z& ( ( M z(+ #.  z(,@ (  z'J (  z! ('  z(' ( " z(0( (  z& (0( " z(t (0( " z( (0( (~ z(, (0( (~ z(, 'J  z! (q (G z(V (V (G z( () (~ z(, ( (~ z(, (K (~ z(J (K (G z( (K (G z( ( " z(p (Dk (G z( ( (~ z(, () (G z(V () (~ z(Dk () (G z( () (G z() ( (G z( ( (G z( (Ka (~ z(, ( (~ z(C (Ka (G z( (J " z(p ( " z(� ( (~ z(S (S (~ z(, (V (G z( () (G z( (Ka ( M z( &  z! (  z& (  z$ ( ( M z( ( ( M z(t ( ( M z(h (  z! (  z% ( (~ z(, (  z$ (  z$ (  z$ ( ! z"A (  z(r (  z'J ( " z(p (  z& (' ! z"A (  z# (  z(  ( (G z( ( (~ z( ( (~ z( ( #  z(Y= %.  z%. (Y=  z% (Y= ! z"A (Y=  z$ (Y= (~ z(, (6 ! z( (, ! z( &  z% & " !z  z(4a (  z%. (  z$ ( " z(p ( " z(�Y ( " z( I ( (J(*(4 " z#. (8 " z( ( + " z(1 (> " z( 2 (�Y " z(t (�Y " (�Y " z(3U (, ! z(<| (, ! z(H" (, " z(> (, ( M z(X (, ! z(GV (, ! z(H (, ( M z(X (, ( M z(e (, ( M z(l (, ( M z(r (,  z(s (,  z(2 (, ! z(L\ (, " z(x (, " z( (, " z(d (, " z(}L (, ( z(S (, (~ z(i (, ( M z(gL (,  z(~s (, ( M z(^ (, ( M z(vr (, (~ z(I (, ( M z(` (, ( M z(" (, ( M z(y\ (, (G z(@i (, ( M z( (, ! z(E (, ! z( (, (~ z([ (,  z( (, " z(m ('  z! ( 2  z%. ( 2 " z(m ( " z(-] ( " ( " z( (  " z( (  z!z ( " z(t ( " z(m (p " ( 2 " z(m ( " z( ( " z( (/ " z(-] (/  z# ( " z(X. (X. " z( ( " z(�Y (' " z(d (d  z!z ( " z( (t (~ z(7 (B1 " z(&: ( (~ z(9 ( " z( (  z(*P (  z(+ (  z(, (  z( (  z(( ( (~ z(9 ( ! z( ( ( z(# ( " z( (  z(Y= (  z(Z (  z& (  z(i (  z(l0 (  z(m (  z(r (  z(s (  z(|B ( " z(p ( E " z(m ( " z( E (# " z( (# (~ z( !z " z(p !z  z& %  z& 'J ! z(H" (H" (,(*(4 " z(# (t " z( + (� ( M z( (�  z(& (�  z%. ( ! z"A ( " z( 2 ( " (p " z(p ( 2 " z(� ( 2 " z( ( 2 " z(q ( 2 " z( ( 2 ( M z( ( 2 " z( ( 2 " z( ( 2 (~ z( ( 2 ! z"A ( 2 ! z( ( 2 ! z(Ed ( 2 ! z(GV ( 2 ! z(AL ( 2 ! z(Py ( 2 ! z(U ( 2 ! z(Jo ( 2 ! z(P ( 2 ! z(u ( 2 ! z( ( 2 ! z(O ( 2 ! z(Fg ( 2 ! z(S1 ( 2 ! z(V ( 2  z& ( 2 ( 2(*(1  ( 2  z# ( 2  z' ( 2  z'J ( 2  z(r ( 2  z(Y= ( 2  z& ( 2  z(i ( 2  z(|B ( 2  z(m ( 2  z% ( 2  z$ ( 2  z ( 2  z([ ( 2  z(6 ( 2  z$ ( 2  z(Z ( 2  z(o ( 2 (G z( ( 2 (~ z(C ( 2 (~ z(Dk ( 2 (~ z(F ( 2 (~ z(J ( 2 (~ z(= ( 2 (~ z(? ( 2 (~ z( ( 2 (~ z(> ( 2 (~ z(D ( 2 (~ z(S ( 2 (~ z(9 ( 2 (~ z(L ( 2 (~ z(9 ( 2 (~ z(Mt ( 2 (~ z(= ( 2 (~ z(C ( 2 (~ z(8 ( 2 (~ z(> ( 2 (~ z(N ( 2 (~ z(O& ( 2 (~ z(9 ( 2 (~ z(A ( 2 (G z( ( 2 (G z( ( 2 (G z() ( 2 (G z(K ( 2 (G z(?\ ( 2 (G z(Ka ( 2 (G z(/ ( 2 (G z(V ( 2 (G z(; ( 2 (G z(Q ( 2 (G z(C ( 2 (G z( ( 2 (G z(K ( (G z(?\ ( (G z(; ( (G z(Ka ( (G z(/ ( (G z( ( (G z(C ( (G z(Q ( (~ z(C ( (~ z( ( (~ z(Dk ( (~ z(F ( (~ z(? ( (~ z(J ( (~ z(= ( (~ z( ( 2 " z(�Y ( 2 " z( ( 2 " z( ( 2 " z( E ( 2 " z(1L ( 2 " z(X. ( 2 " z(x ( 2 " z(p ( 2 " z( ( 2 " z( ( 2 ( M z(q ( 2 ( M z(c ( 2 ( M z( ( 2 ( M z(ax ( 2 ( M z(v ( 2 ( M z(X ( 2 ( M z( ( 2 ( M z(] ( 2 ( M z(^ ( 2 ( M z(b ( 2 ( M z(e ( 2 ( M z(Z ( 2 ( M z(y\ ( 2 ( M z(r ( 2 ( M z(je ( 2 ( M z([~ ( 2 ( M z(R ( 2 ( M z( ( 2 ( M z(m[ ( 2 ( M z(sS ( 2 ( M z(\ ( 2 ( M z(p ( 2 ( M z(l ( 2 ( M z( ( 2 ( M z(` ( 2 ( M z(h ( 2 ( M z(" ( 2 ( M z( ( 2 ( M z(dA ( 2 ( M z(c ( 2 ( M z(vr ( 2 ( M z( ( 2 ( M z(w ( 2 ( M z(t ( 2 ( M z( ( 2 ( M z(z ( 2 ( M z( ( 2 ( M z(D ( 2 ( M z(tE ( 2 ( M z(nc ( 2 ( M z(j ( 2 ( M z({ ( 2 ( M z(e ( 2 ( M z(]` ( 2 ( M z(n ( 2 ( M z(+ ( 2  z(& ( 2  z(? ( 2  z(+ ( 2  z( ( 2  z(( ( 2  z(iE ( 2  z(, ( 2  z( ( 2  z(' ( 2 ( M z(n ( ( M z(p ( ( M z(q ( ( M z(r ( ( M z(sS ( ( M z(tE ( ( M z(t ( ( M z(y\ ( ( M z(z ( ( M z(" ( " z#. ( 2 " z( I ( 2 " z(# ( 2 " z( ( 2 " z(. ( 2 " z(! ( 2 " z( ( 2 " z( ( 2 " z(Y ( 2 " z( ( 2  z(( (  z( (  z(& (  z(iE (  z(, (  z( (  z(' (  z( ( " z( ( 2 " z( ( 2 " z( ( 2 " z(3U ( 2 " z(q ( 2 " z( ( 2 " z(/ ( 2 " z( ( 2 " z( ( 2 " z($ ( 2 " z(O ( 2 " z(0( ( 2  z(uT ( 2  z(! ( 2  z( ( 2  z( ( 2  z(,@ ( 2  z(2 ( 2  z( ( 2  z(4a ( 2  z(~s ( 2 " z(m ( 2 " z( + ( 2 " z(-] ( 2  z(  ( 2 (~ z(8 ( (~ z(> ( (~ z(D ( (~ z(S ( (~ z(9 (  z!z ( 2  z(  ( " z( 2 (  z%. (  z(? (  z(+ ( " z( ( " z( ( " z(q ( ( M z(+ ( ( M z( ( " z#. ( (~ z( ( (G z( ( ! z"A (  z# ( " ( (~ z(, $  z( (  z(r &  z' & " z(� (Y= " z(q (Y= " z(�Y (Y=  & " z( !z  z$ ! ( M z( "A  z'J !  z% ! ! z"A ! " z(� "A  z!z "A  z$ !z  z(r !z  z& (6  z% (6 " z(t  z(' " z(-] (q  z( ( " z(-] ( " z(3U ( " z( (h " z( ( " z( I ( " z(d ( " z(}L (# " z( ((( " ( ( M z( (& ( M z(0 (& " z(� (5 " (# " z( (t (�(*(4 " z( (((  z# ( " z( ( E " z($ ( E " z#. ( E " z( ( E " z( ( E " ( E " z(p (q  z(~s #. " z( ( (p(*(1  z(' (m  z(! (m " (t ((*(1  z(iE (iE(( " z( ( " z(� (�(( " z( ("~ " z(� " z( (m  z$ (p (~ z(9 (D (~ z(r (D ( M z( (,  z( (, (~ z(A (A (~ z(, (o (~ z(v (v (~ z(O& (9 (~ z(Mt (9 (~ z(N (9 (~ z(v (9 ( M z( (, ( M z(q (, (~ z(T (T ( M z(v (, (~ z(; (D " z(&: (  z(# (, ! z(V (, ( M z(Z (, ( M z({ (, ( M z(sS (, (~ z( (, (~ z(> (?\ ( M z(b (, ( M z(D (, ( M z(e (, ( M z( (, " z(�Y (?\ (G z( (?\ " z(t (?\ ( M z(5 (, (~ z(N (D ( M z(z (, ( M z(c (  z(& ( ((*(4 (~ z(> (> (~ z(B1 (8 (~ z(7 (8 (~ z(Mt (8 (~ z(> (8 " z( I ( (~ z(> (9 ! z(Py (, (~ z(W (W  z(6 $ (~ z(z (z " z(� (z (~ z(r (8 " z(&: (p  z(' (, " z(  z$ (t " z( I (t  z( (r (~ z(, ( + " z( ( " z(! (  z(& #. " z( #.  z%. ( " z(q (  z(' (+ " z( (#  z%. (# " z(! ( E " z( ( E (sS(*(1  z(! ( " z( (p " z( (! " z( (! (~ z( ( #. " z( ( " z( (  z(iE ( (~ z(, (q " z( ( " z(0( ( " z(t (> ((*(1 " z( ( " z(3U (, (~ z( (& (G z( ( " z( (  " z(Y ( " z( ( " z(p (  z$ (m ( z( ( E (G z( ( " z( ( I  (t  z& ( " z( E ( " z( (3U " z(m (  z(  ( " z(�Y ( " z(# ( " z( # " z(m (&  z(? (� " (� " z( E ( (G z(@i (@i  z(6 ( " z( E ( I " z(�Y (�Y(( " z(t (t(( ( M z( (t " z( (�Y " z(� (�Y " z#. (! " z#. ("~ " z(p (O (~ z(, ( " z( (q " z( (q ((*(1 " z( ( " z( ( ( M z(v ( " z#. ( ( M z({ ( " z(m ( " z( ( " z( (& (~ z(7 (�  z# (p " z( # " z( # " z( # ( M z(h ( ((*(4 " ( " z( ( " ( " z(# ( " z( ( " z(0( (/ " z(q (/ " z(3U (/ " z(�Y ( M z(c ( " z(0( (' (~ z(= (p  z(' # " z( ( (G z(; (q  z& ( (G z() (�Y " z( ( ( M z(e (& ( M z(ax (&  z(r (& (G z() (& ( M z(h (&  z(  ( (( (G z( (� (G z( (  z(& ( " z(&: ( ( M z( (# " z($ (  z! (  z$ (  z( ( ! z"A (& " z( (& " z( (& " z( (& " z#. (&  z& (& (~ z( (t ( M z(c (�  z(+ #. (~ z( (  z( ( (( " ( (t(*(1 " z#. ( " z(t (. " z( (. " z( E (. " z(t ( " z( E ( " z(t ( I " z( (q  z'J ( (~ z(C (p (~ z(? (p (~ z(Dk (p  z& #. " z( (  z(+ ( ( M z(t (:z ( M z(t (� (:z(*(1 ( M z(t ( ( M z(t & ( M z(t ( ( M z(t (�Y ( M z(t ( ( M z(t (& ( M z(t (q " z( ($ " z( ( " z( ( E (�(*(1 " z( ( (~ z( (/ " z( (�Y " z( 2 ( " z( ( " z( ( " z#. ( " z( #  z(l0 (m  z(Y= (m ( M z(X (q ( M z(0 (q " z( (q ( M z(\ (q ( M z(Z (q ( M z([~ (q ( M z( (q ( M z(] (q ( M z(v (q ( M z(c (q ( M z( (q ( M z(dA (q ( M z(e (q ( M z(e (q ( M z(h (q ( M z(b (q ( M z(gL (q ( M z(b (q ( M z(j (q ( M z(je (q " z( (q ( M z(l (q ( M z(m[ (q ( M z(r (q " z(� (q ( M z(sS (q ( M z(w (q ( M z({ (q  z(D (q " z(m (m(( " z#. ( " ( " z(p (3U  z(+ (p  z( (  " z(� ("~  z( (� " z( E (&: " z( (&: " z(t (&: " z(p (&: " z(q (&: " z(! (  z(D ('  z(+ (' " z(X. ( ( M z(c ( " z(3U ( " z(1 ( " z(0( ( " z(p ( " z(q ( ( M z( (  z(uT (' " z( ( " z(> (m " z( (  z! ( " z( 2 ( " z( ( (~ z( ( (G z( ( " z( ( " z(p (  z$ (  (p " z( (  z(D ( " z( ( " z(q ( " z(p ( " z#. (  z'J (m " z( (m  z'J (  z ( " z(m (! " z(! (  z(& (  z(,@ ( " z( ('  z(! ( " z(�Y #  z(& #  z( (' " z(�Y ( " z(-] ( " z(O ( ( M z( (q ( M z(h (q ( M z( (q ( M z( (q " z( (q " z( (q " z( (q " z(�Y (q " z(# (q " z( I (q " z( E (q ( M z( (q ( M z(kT (q ( M z( (q  z(i #. " z( (�  z(  (�  z# (�  z& (�  z!z (� " z( (' " z( I (�Y " z( I ( " z( ( " z(m (q  z( (r (~ z(, (r  z(Y= ( " z( 2 ( " z( I ( " z(m # " z(�Y (  z(6 ( " z(�Y (,@  z%. ( " z(O (' " z(O (�Y " z( (r (~ z( # ( M z(j (t ( z(# (t " z(O (r " z( ( " z(O ( " z(O (  z(, (p " z( (, " z( (, " z( ( " z( ( " z( (  z( ((( " z#. (  z(' (' (~ z(I (�  z(! ( E (~ z(f (m " z(1L (m " z( (m (~ z(J (m  z(' #. " z(p (D (~ z(, (D ! z"A (D " z(� (D  z(D ( " z( ( " z( (� ! z"A ( ( M z( ( " z(# ( " z("~ ( " z(p (-] (~ z( (O " z( ( " z( (0( " z( + ( " z( "A " z( (  z(2 #. " " ( " z( ( " z( " z(t ( " z( E (�Y " z#. (' " z( (x  z(  (  z( ( " z( (p (~ z(J #. ( M z( (& ! z"A (/ " z(O ( " z(� (  z$ ( " z( E ( ( M z(t (1 " z( I (m " z( ( " z(� ( " z#. # " z( #. ( M z(h ( (G z() ( " z(O (� (~ z( ( " z( ( " z( ( " z( (q " z($ ( ( M z( #. ( M z( #.  z(uT #. ( M z(+ ( " z( (-] " z(� (# " z( (# " z( (# " z#. (# (# (*(1 " z( E ( " z(# ( (t(*(4 (~ z(I (B1 " z( (  z( ( " z( ( " z( 2 ("~ " z($ (� " z(! (� " z(. (� " z( (� " z(# (� " z(/ (� " z( 2 ( " z( ( E " z(�Y ( " z(Y # (~ z( %. " z(O ( " z#. " z( (p " z(1L (p (~ z(= ( (~ z(B1 (7 " z(� ( ( z(S (p (~ z(, ("~ " z( ("~ " z( 2 ( E " z(t (? " z(-] (  z%. ( I " z(p ( I " z( ( I " z( (  z(2 ( " z(! ( " z(t (O " z(t (!  z(2 (2 " z(m ( ( M z(5 (B1 (~ z(, (h " z( E (h " z(p (h " z(t (h " z(# (h " z( I (h " z(�Y (h (~ z(C (h " z( (h " z( (h " z(q (h " z(� ( + " z(t ( + (~ z( ( +  z(' ( " z( ("~ ( M z(q (m " z(p (m  z( (m  z(' (m  z( (m (G z(V (m (~ z(9 (m  z(|B (m " z( 2 (q " z( (q " z(. (q " z($ (q " z( + (q ( M z(z (q ( M z(D (q ( M z(" (q (~ z( " z(t &  z# (q ! z"A $  z& $ ( M z(| (0 (~ z(, (t ( M z(p (t ( M z( ( ( M z(t (  z(& ( " z(t ( (~ z( ( " z(q (  z(uT ( ( M z(" ( ( M z(h ( ( M z(p (  z'J ( (~ z(, (p  z%. (p ( M z(` (` " z( !z ! z( ( ! z(P (P " z( (  z% $  z& " z( ! z(Jo "A  z $ (6  z# (&   z%.  z' 'J  z# ( ( "A ! z(Ed (Ed  "A  z(! (!(( ! z( ! ! z(u (u " z( "A  z(l0 $ ! z(H (H  z& (uT ! z"A & $  z%. 'J  z%  z(r  z(_ "A " z( $  z%. !z  z! 'J " z( (Y= " z( (Y= " z($ (Y= " z(-] (Y= " z(/ (Y= " z(3U (Y= " z( (Y= " z( + (Y= ! z"A 'J " z( (  z(& %.  z! $ (~ z( (Y= " z( 2 (Y= " z(# (Y= " z( I (Y= " z( E (Y= " z(t (uT " z( (Y= " z( (Y= " z( (Y= " z( (Y= (G z( (Y= " z( (Y=  z# (Y= " z( (Y= " z#. (Y=  z(uT (  z$  z# ( E (~ z(,  z(' #  z& (~ z( (Y=  z$ !z ! z"A (J  z! (J  z%. (J (Y=  z%. '  z' "A  z% ' " z#. &  z& ("~  z%. ("~  z& "A (uT  z(uT $  z(6 !z  z! (uT  z(6 #  z(Y= !z ( M z(c (uT  z(! (uT (~ z(, (s  z(r %.  z(6 (uT  z! !(( " z( #  z(,@ # " z( %.  z(6 "A  z%. (�  z$ (� ! z"A (� ! z( (�  z(6 (�  z$ (�  z% (�  z "A  z(6 %  z& (V  z! (V  z (uT  z(Y= (uT  z(Y=  z& &  z%. (!  z'J !z  z& &  z(uT &  z( !z  z& !z  z(' !z  z(m #.  z# (  z$ #  z# !z " z( ! z( ( (~ z(  z% (  z%. ( (~ z(L (uT (G z( (uT  z(s (uT  z(i (uT  z& (uT " z(p ( " z( (Y= " z( (Y=  z !z  z# (  z$ (r (~ z(, (r ! z"A (r " z(p (Y= ! z( 'J " z(t (Y=  z! (Y=  z# % " z(p $  z$ ( " z( 2 %. " z( & " z( & " z(t (6 ' (G z( #  z(uT #  z #  z$  z( %. " z(m "A ! z"A (Ed  z' # (~ z( # ! z(B (u  z(+ (~ z(9 ( M z(h ( M z(q (~ z( (~ z(9 ( M z(  z(l0 " z(&:  z(  z( " z(  z(( (G z()  z(,  z([ ( M z(  z(*P (~ z( " z( ( M z(t ! z(U ( ! z(O (,  z(uT ( M z(| ( ( M z(p ( ( M z(b (, " z(0( (, ( M z(nc (, " z(Y ( ( M z(R ( " z(3U ( ( M z(h ( ! z(AL ( " z(q (, ( M z({ ( ( M z(kT (, ! z(S1 (, ( M z( ( ( M z(c ( " z( ( (~ z(7 (7 (~ z(S ( (G z(; (~ z(= (, ( M z(x (, (~ z(Dk ( (~ z(f ( (~ z(7 ( (~ z(9 ( (~ z(7 ( (~ z(I ( (~ z(T ( (~ z(r ( ! z( ( ! z(R (, ! z( ( ! z(H ( (~ z(L ( ! z(H" ( ! z(_> ( (~ z(9 ( ! z(J ( ! z(<| ( ( z(# ( (G z(@i ( " z(1 (, (G z( ( " z(&: (,  z( " z(p (~ z(z (B1  z(,@ (, ( M z(dA (, ( M z(j (, ( M z(" (p ( M z(r (p " z(t (p " z( (p " z( E (p " z(p (p ( M z( ( " z(� (p ( M z( (X " z(�Y ! " z( ! (G z( ! ( M z(+ !  z( ! ( M z(c (, (~ z(9 ( " z( (# " z(t ' ! z"A ( " z( (((  z( ( " z(�Y (X.  z!z (q  z(' (  z!z ( " z( (! (�Y " z(�Y ( I  z'J ( " z( E ( $(*(1  z(r $ ! z"A !z  '  z!z #  (6  z( "A (G z() (Y= (G z( (Y=  z (Y= ! z"A % " z(� ( (G z( $ (G z( &  z(|B %. (G z( %.  z(, $ ( M z( $  z(' %. ! z(B #  z'J #  z(uT !z  z# (D  z(uT (o  z!z (o  z(s (o ! z(B ! ! z(B (O ! z(E '  z%. $ " z(3U (p (~ z( (� " z(q (G z( ( " z( (q (~ z( (J (G z() (J (~ z(, (J " z(p (p(( (~ z(i (i " ( I (~ z( ( I  z% (  z ( (G z( (F (~ z(, (L  z(' ( " z( (  z(s # (~ z( (  z(4a "A (G z( (# " z( I (#  z$ (t (G z() (V (G z(C (C (G z(K ( (G z( ( (G z(V ( (G z(?\ ( " z( ( (~ z([ ([ (~ z( ( (G z() ( (G z(K ( (~ z( ( (~ z(:z () " z(� (Dk (~ z(9 (9 (~ z(, ([ " z(t ([  z( &  z( &  (# " z(-] #.  z(~s ( ( M z({ (  z' ( " z(�Y ( " z( ( " z(# ( I  z (&  z%. (&  (�  z( (  z( (  z& (r " z( !z  (  z$ (# " ( " z( (  z# ( " z( E ( ( M z( ( " z( ( (~ z( ( " z( ( " z( ( " z( (,  ( ( z( "A ( z( "A ! z( (t (~ z(C (C (~ z( (?\ ( z( (� (~ z( % " z( (q " z(#  z( (( " z(q (  z# ( (~ z(= (= ( M z(b (=  z(6 ( " z( (  z(' ( " z( 2 (  z (t (~ z(, (q " z(p (c (~ z( (  z( ( (G z( ( (G z( (  z%. ( (~ z(, (c (~ z(, (+  z ( ( M z( (�Y ( M z(q ( " z(� ( (~ z(, ( (~ z(, (  z(+ (! ( z(S (0 " z(t ( " z(p (tE(( ( M z( ( ( M z(y\ (y\ ( M z( (h ( M z(h (t ( M z(\ ( ( M z(m[ ( ( M z(gL (gL (  z(s (  z(Y= ( (G z( ( " z( ( " z( I ( " z( ( " z($ (  z(D (, " z( (  z'J ( " z( (  z( (  z(' ( " z( E ( " z( (  z(  (  z' (  z& (  z(uT ( " z(q ( " z(�Y ( ( z(# (l ( M z( ([~ (~ z(7 (, ( M z(t (p ( M z(j (q ( M z( (' ( M z(b &  z$ (b " z(p (+ ( M z(j (c " z( (�Y  z( (  z(Z ( " z( " z(1L ( " z(x (  z(( ( " z("~ (,  z(! (,  z(2 (  z( (  z(D ( " z( (  z%. ([ (~ z( ( " z($ (  z& ( " z(�Y ( " z(�Y & ( M z( ! ! z(Jo ( (G z( ( ! (G z( (� (G z( (� ( M z( (� " z(-] (� ( M z({ ! " z( (p ( M z( ! (G z( (t ! z(E (t ! z(J (t " z(. (t (~ z( (t (~ z(v (t  z(' #. " z( ( I " z( ( (~ z(= ( (~ z(Mt ( " z( I ( (G z( %. ( M z( %.  z(uT %. (G z() %. " z( I ( (~ z(= (J " z( ( " z( ( " z(3U ( " z( ( " z( ( " z( ( (G z() ( " z( ( " z(! ( " z( ( " z( ( " z($ ( " z( ( " z( ( " z(O ( " z(q ( " z(0( ( (G z(K ( " z( ( " z(-] (  z(' ( " z(/ ( " z( + (  z% ( " z( ( " z(Y ( (G z(/ ( (G z(V ( (~ z(D ( (~ z(> (  z(|B (  z' (  z(o (  z(i (  z(! (  z(s (  z(' ( ( M z(sS ([~ " z(�Y ( (~ z(, (, " z(p (, " z(� (,  z(& (, (~ z( (, " z(t (9 (~ z(r (9 (~ z(, (7 ! z"A $ (G z() (� (G z( (�  z! (,(( (G z( (K ( ( M z(R ( ( M z(dA (dA (G z(Ka (K (~ z(, ( ( M z(h ( ! z( ( ! z( ( " z( E ( " z( I ( " z(! (  z% # (~ z(Dk ( " z( (  z(6 (  z%. ( " z( ( (G z(Q (Q (G z() ( ( M z( ([~ (~ z(L ( (~ z(C (?\ (~ z(, (C " (= " z(p (L ( M z(v (ax ( M z(0 (| (G z( (/ (~ z(C (? (G z(K ( (~ z(B1 (  z! (Dk " z($ (  z& (  z%. ( ( z( (, ( z( (, ( M z( (, ( M z(h (p " z(p (,(( (~ z(T (D (~ z( (1  z(6 $  z(D $  z(& $ ( M z(+ $  z(I? (I? ( z( (p (p(*(4  z(? (?(( " z( (�  z& (�Y (~ z( #. " z(3U ( " z( ( (~ z(, (7  z! (  z(  " z(O ( ( M z(c (m " z(q (m " z(&: (m (~ z( (  z'J (� (~ z(, (! (G z( ( ( z( (O " z(Y (�Y " z(&: (�  z(  (*P " z#. (Y ! z( (O " z(&: (! " z( I (!  z'J (! " z("~ (! " z(> (! " z( (/ " z#. (J  z(' ( " z( (  z( ( " z(t (  z(uT ( " z(�Y ( " z( ( ! z( ( " z(# ( " z( E ( " z(� ( " z( I ( " z(q ( " z( (  z# ( ! z"A (  z%. ( ! z( ( " z(q ( " z(. ( ! z"A ( " z(# (  z(iE ( (G z( ( (~ z( ( (G z() ( (G z(?\ () (G z(Ka () (G z(Ka ( " z(�Y (V (~ z( (= (G z( ( " z(�Y ( " z(p (  z! ( " z( 2 (  z%. ( " z( ( " z( ( (G z(K (  z$ (  z& ( " z( (  z ( " z(�Y ( " z(! ( " z( ( " z( ( " z(t ( " z( (  z$ (3U  z(  (  z$ ( " z( (  z( (  z% ( (G z( (, ! z(J (, (~ z(, (3U ! z(Ed %. " "A " z(�Y "A  z(& "A  z(o %. " z( ! ! z(J %. " z("~ (  z(  ( (G z( (  z(' (( " z( ( ( M z(kT ( 2 " z(X. (� " z( ( ( M z( (p " z( ( " z( ( " z(Y (  z' ( " z(# ( " z(� ( " z( (  z(D (  z%. (q (G z( (q  z(( (((( (r(*(4 " z( (m " z(3U (  z(  ( " z(q (�Y  z$ (  z( (  z& ( + " z(. ( " z( ( " z( ( (G z( ( +  z$ ( + " z( (&: (~ z(9 (! (~ z(r (! (G z( (! " z(m (!  z# (! (G z(K (!  z(uT (! ! z(AL (! (~ z(J (!  z!z (! " z(. (! " z( ( " z( ( I " z(t (J " z(&: ( " z(/ (-] " z( (iE  z$ (  z(~s (�Y " z(&: (�Y  z( (# " z(q (' " z(# ( " z( ( " z( #. " (&  (&  z(  (�Y " z( ( " z#. ( (~ z(, (/ (~ z(, (> " z(q (>  z& (> (~ z( (>  z%. (> ! z"A (> (~ z( (> " z(q (   z(# (&  z(  (+ " z(m ( ( M z(tE ( " z(m ( " z(t ( " z(m ( " z(� # " z( I #  z( (r " z(-] (O ( z( (, " z( ('  z(+ (D (G z(; (p (G z(Ka (p ( M z(+ (p (~ z( (  z! ( " z(Y ( " z( E # " ( " z#. (&: (G z(K ( " z( ( E  z(' ( " z(-] ( ( M z(+ "A " z( # (~ z(, ( " z#. ( " z( (m " z( (�Y " z( ( ( M z({ ( " z( ( " z(. ( " z(! # (G z(?\ (p (~ z(> (p (~ z(F (p " z#. ( " z(t (x " z( ( (~ z( (p " z( ( (~ z(, ( " z(t (1  z# ( " z( ("~ " z(p ("~  z(? ( " z( ( " z(p (  " z(p (' " z( (& (G z( ( ( z( ( I " z(p ( ( M z(j (  z(*P (   z(~s (  z!z ( " z( E " z( (~ z(I (I  z$ #. " z("~ #. " z( ( " z( E (  z(  (' " z(m ( " z(p ( " (!  z(! (�Y  z(! (  " z(m (  " z( (p " z(t (iE " z#. (-]  z(uT ( " z#. (   z(  & " z( ( " z( " z( ( (~ z(J ( " z( (O " z(3U #.  z( (m " z( (m  z(o (m " z(p (D(( (G z(K () (~ z( (?\ (G z( ( (~ z(J (V (G z() ( (~ z(, ( (G z( ( (G z( ( (G z(K ( (~ z(J ( (~ z(= ( (~ z(C ( " z( 2 (&:  z!z (m " z( ( " z( ( + ! z"A ( " z(# (  z(& ( " z( (((  z(  (m  z%. (�Y ( M z(+ (m  z' (m ( M z( (m  z& (m  z% ( " z( (X. " z(X. (m  z(4a (! (~ z(, (? (~ z(Dk (C (~ z(C (Dk (~ z(, ([ (~ z( ([ (~ z(= ( (~ z(9 ( (G z() ( (G z( ( (~ z(J ( (~ z( (K (G z() (K (~ z(J () (~ z(> () (~ z( () (~ z(? () (~ z(C () (~ z(= () (~ z(F (= (~ z(J (= (G z() (= (~ z(? ( (~ z(Dk ( ( M z( ( ( M z( ( (~ z(> ( (~ z(F (C (~ z(, (/ (G z(?\ (J (G z(/ (J (~ z(J ( (~ z(Dk (?\ (~ z(J (?\ (~ z(= (C (~ z(z (i (~ z( ( " z(p (J " z( (J (G z(?\ ( (G z(V ( (~ z(, ( (~ z( & (G z( &  z$ ( " z( (  z (  z(  ( " z#. ( " z( E ( " z( (  z! (  z ! " z(O (  z$ ( ( M z( ( " z( 2 ( " z( (  z(& ( ( M z( ( (G z( ! " z#. ( ( M z(t (3U  z& (  z([ ( (G z(V (  z( (  z(uT ( " z( ( (G z(; ( (G z(/ ( ( M z( ( ! z"A (3U " z(. ( E (~ z(, ( I " z( "A (~ z(E (8  z(& ( E " z( ( E " z( ( E " z(/ ( E " z(O ( E ! z"A ( E " z( ( I (~ z(A (N  ( E " z("~ (p " z($ ( (G z() (Ka (~ z(, (>  z& ( " z( (' " z( ( " z( ( " z(� (-]  z(' (� " z( ( ! z"A (  z# ( (t " z(� ( " z(m ( E " z(� ($  z(& (# " z(O & ( M z( ( ((*(4 " z(q ( " z(m ( I " z( (O ( " z(/ (m (G z( ( E  ( " z(0( ( " (1L (G z(K ( " z(# (# (( ( M z(X (#  z& ( E (~ z( ( E  ( " z( " z( ( (G z( #. " z( ( E (G z( ( E " z($ ( (~ z(z (� ( M z(^ (� ( M z(b (� " z( (-] " z(p (! ! z(R  z(? (p (~ z( ( " z(X. (p  z(! (p (~ z(8 (p (~ z(7 (p  z( (p ( M z(X (p ! z(6 (p (~ z(9 (p " z( (p  z(,@ (p (~ z(9 (p ( M z(\ (p  z(( (p ( M z( (p ( M z(Z (p (~ z(I (p (~ z(:z (p (~ z([ (p ( z( (p ( M z([~ (p " z(Y (p  z(_ (p ( M z(ax (p ( M z(] (p ( M z(v (p ( M z(b (p ! z(<| (p ( M z( (p  z!z (p (~ z(= (p ( M z(]` (p (~ z( (p ! z(_> (p ( M z(vr (p (~ z(> (p ( M z(j (p ( M z(c (p ( M z(dA (p ! z(AL (p (G z(@i (p ! z(O (p " z(d (p ( M z(e (p (~ z(A (p  z( (p (G z( (p " z(> (p ( M z( (p (~ z(f (p ( M z(e (p ( M z(h (p (~ z(B1 (p ( M z(b (p ! z(B (p ( M z(gL (p (G z(C (p ( z( (p (~ z(C (p " z( (p  z( (p  z(D (p " z(1 (p (~ z(D (p ! z(Ed (p ( M z(` (p (~ z(Mt (p  z(I? (p (~ z(; (p (~ z(N (p ( M z(j (p ( M z(je (p ( M z(kT (p ( M z(q (p " z(p (p (~ z(z (p ( M z(l (p ! z( (p ( M z(nc (p ! z( (p (~ z(7 (p ( M z(n (p (~ z(E (p ( M z(p (p  z(m (p ( M z(m[ (p ( M z(r (p ( M z(sS (p ! z(GV (p ( M z(tE (p ! z(H (p ( M z(t (p ! z(Fg (p ! z(H" (p ! z(J (p (~ z(W (p ! z(L\ (p (~ z(L (p  z(# (p ! z(u (p ( M z(5 (p ( M z(w (p ! z(P (p ( M z( (p ( M z(| (p ( M z(x (p " z(}L (p ( M z({ (p " z(x (p ( M z(z (p ( M z({ (p (G z(Q (p ( M z(0 (p ( M z(y\ (p (~ z(i (p  z(*P (p ( M z(R (p (~ z(T (p ( M z(^ (p ( z(# (p ( M z(D (p  z(~s (p ! z(R (p ! z(E (p  z(2 (p ! z(S1 (p (~ z(S (p ! z(U (p ( M z(" (p ( M z( (p ! z( (p  z( (p (~ z(O& (p (~ z(v (p ! z(V (p ! z( (p ! z(Py (p  z( (p ( M z(X (p ( M z( (p ( M z( (p " z( (J  z$ (  z(, #. " z( (-]  z%. ( E " z( ( E " z(-] ( E  z(' (  z' ( (G z( ( " z(# (  z(& ( " z(q #  z(! (� " z(! (V " z#. (*P " z( (1L " z(p #. (~ z( (? " & ( (~ z(J (� (� " z( # " z(/ ( " ($ " z( (/ " z(! (&  z! ( (G z( ( " z( ( " z( (q " z( ( + ( z( ( " z(t ( " z( ( " (  z( ( " z( ( " z( I ( ! z( #. ( M z( ( ( (*(1 (p (*(1 " z( ( " z( + ( " z( 2 ( " z( ( " z(# ( (G z() ( (G z(K ( " z( ( ( M z(je ( (~ z( # (~ z(Mt ( " z( ( " z( ( ( M z(c (dA ( M z( ( " z( E ( " z( ( (~ z(L ( (~ z(L ( (~ z(L (  z!z ( " z( ( ( M z(c (c ( M z([~ (b (h(*(1 ((*(1 ( M z(vr ({ ( M z(h (" ( M z(+ (+(( ( M z( ( ( M z(] ( (~ z( (  z(6 ( ( M z( ( I  z( ( ( M z( ( ( M z(p ( ( M z( (t ( M z(+ (! ( M z(m[ ( ( M z(sS (p " z(&: ( (~ z(W ( " z( E (Mt " z(m 'J  z(,@ ( ( M z(q ( (~ z(E (E (~ z(9 (N (~ z(9 (N  ( (~ z(B1 (z (~ z( (D (~ z(r (T (,(*(1 (G z( (/ " z( () (~ z( () " z(t () (~ z(= (G z(V (?\ (G z() (?\ (G z(/ ( (G z( (V (~ z(A (9 (~ z(T (9 " z(q (Dk (~ z(Dk (? (~ z(Dk (V ((*(4 (G z(?\ (= (~ z(Dk (= (~ z(? (C (G z(K (J  z! () ! z(U (U " z(� (J ! z(Py %.  ( " z(p (6 ! z(<| (<| " z(t !z  z# (|B ( z( !z  z(Y= &  z& &((  $  z$ (  z(& & (~ z( "A ! z(O %.  z([ & ! z(_> "A (~ z(C 'J (~ z( 'J  z(m $  z!z ' " z( "A  z(uT "A  $ (~ z(N (8  (  z(6 ( (~ z(Dk (,(( ( M z(tE (, (~ z(, (,(( (~ z(Mt (7  z!z $ ( M z(t ( ( M z(kT ( " z( (& " z( (& " z( (& " z("~ (& " z( (& " z($ (& " z(q (& " z(. (& " z( (& " z( (& " z( (& " z(# (& " z( + (& " z( (& " z(&: (& " z(-] (& " z(Y (& " z(3U (& " z(O (& " z( (& " z(0( (& " z(q (& " z( (& " z(X. (& " z(p (& " z(1L (& " z(x (&  z( (& ( M z(q (&  z(' &  z! (((  z(I? !z  z$ $( A BKR #$((  z$ $(( " z( ! (~ z(, $ " z(p $  z(D ( " z(t ((( " z(! (-] " z(Y (-] " z(# (-] ! z( (-] " z(m (-] ( M z(h (& " ( ! z( ( " z( ( " z(# ( " z( ( ( M z(c (�Y " z( (q (G z(K #. " z(&: (  z(,@ (�Y ( M z({ (�Y ( M z( (�Y  z(? (�Y (~ z(= (�Y " z( (�Y " z( (�Y ( M z(+ (�Y " z( (�Y (~ z(C (�Y " z(. (�Y " z( (�Y  z(, (�Y  z!z (�Y " z($ (�Y " z(0( (�Y " z(-] (�Y ( M z(h (�Y (~ z( (�Y " z(3U (�Y " z( ( " z( ( " z( (! ( M z( (� ( M z([~ ( " z(p (� " z#. (4a #.(*(4 (~ z( (:z (~ z(9 (9(( (~ z(; ( " z( ( ( M z(t ( (~ z( (q ((*(1 " z(� ( ( M z(e ( ( M z( ( ( M z(ax ( " z( (  z ( ( M z(h &  z# #((  z(6 (  z& # " z(� !z " z( E !z  z(, !z " z( ( " z( (' " z( ( " z(# ( " z(# (  " z(# ( + " z(# (�Y " z(# ( " z(# (# " z( ( " z( ( " z( ( " z( (. " z( ( I " z( (# " z( ( " z( (' " z( ( " z( ( " z( (-] " z( ( " z#. ( " z#. ($ " z( ( " z( ( + " z( ( " z( (# " z( ( I " z( " z( ( " z( (  " z( ( I " z( (# " z( (' " z( ( " z( ("~ " z( ( " z( ( " z( ( " z( (. " z( ( I " z( (1L " z( (  " z( ($ " z( ( + " z#. ( I " z( (1L " z( + " z( + ( I " z( + ( " z( + ( E " z( + (' " z( + ( " z( + ( " z( + (# " z( + (' " z( E ( " z( E ( " z( E ($ " z( E ( " z( E ( + " z( E (1L " z(O  z! (6 ! z"A (H ! z"A ' ! z"A (s  z# (6 (~ z(C (G z(/ (G z( " z( 2 ( " z(/ ( M z(h ( ( M z([~ ( M z( ( M z( ( ( M z( (+ ( M z( (h ( M z( (" ( M z( (D ( M z( ( ( M z( (  z# (#  z(r (G z( # " z(# # ( M z( # ( M z(t # " z( 2 # " z( # " z( # " z( # " z( #  z(l0 %.  z%. %  z! %  z%. ! z(GV " z(m (L (~ z(N (G z(Ka (~ z(> (G z( (= (G z(V (~ z(? (~ z(S (G z(K (= (G z( (= (~ z(i " z(� (K " z(t (K (~ z(F (G z(Q " z(Y  z(iE  z(?  z(l0 ( 2 ( M z( (� ( M z(l (� ( M z(p (�  z(( (� ( M z(+ (� " z( (� ( M z(h (� ( M z( (� ( M z(b (� ( M z(q (�  z( (�  z(,@ (� (G z(V (� (G z(?\ (� (G z(K (� (G z(/ (� (~ z(C (� (~ z(= (� (~ z(? (� (~ z(F (� (~ z(Dk (� (~ z(L (� (~ z(> (� ! z(GV (�  z(uT (�  z (� ( M z(je ( " z(m " z( ( " z( ( " z(O ( " z#. ( + (G z(V ( " z( ( " z(! (~ z(= (  z(I? (  z(# ( ( M z(| (  z(*P (  z(|B ( ( M z( (  z! (  z'J (  z(  ( E ( M z( ( E (~ z(:z ( ( z( ( " z("~ (  z ( E (G z(?\ (�Y (G z( (�Y (G z( (�Y (~ z( (�Y " z(X. (�Y ! z"A (�Y ( M z(eMaxMind.com[binary_format_major_version[binary_format_minor_versionKbuild_epoch`"Mdatabase_typePGeoLite2-CountryKdescriptionBenYGeoLite2 Country databaseJip_versionIlanguagesBdeBenBesBfrBjaEpt-BRBruEzh-CNJnode_count dKrecord_size������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfRESTAPI.php�����������������������������������������������������������������������������������0000644�����������������00000000571�15233113245�0007471 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (defined('ABSPATH')) { class wfWP_REST_Users_Controller extends WP_REST_Users_Controller { public static function wfGetURLBase() { $controller = new wfWP_REST_Users_Controller(); return rtrim($controller->namespace . '/' . $controller->rest_base, '/'); } public function _wfGetURLBase() { return rtrim($this->namespace, '/' . $this->rest_base, '/'); } } } ���������������������������������������������������������������������������������������������������������������������������������������lib/menu_tools_diagnostic.php�����������������������������������������������������������������������0000644�����������������00000152664�15233113245�0012430 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } /** @var boolean $inEmail */ $diagnostic = new wfDiagnostic; $plugins = get_plugins(); $activePlugins = array_flip(get_option('active_plugins')); $activeNetworkPlugins = is_multisite() ? array_flip(wp_get_active_network_plugins()) : array(); $muPlugins = get_mu_plugins(); $themes = wp_get_themes(); $currentTheme = wp_get_theme(); $cols = 3; $w = new wfConfig(); if (!isset($sendingDiagnosticEmail)) { $sendingDiagnosticEmail = false; } ?> <?php if (!$sendingDiagnosticEmail): ?> <script type="application/javascript"> (function($) { $(function() { document.title = "<?php esc_attr_e('Diagnostics', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName; }); })(jQuery); </script> <?php endif; ?> <div id="wf-diagnostics"> <?php if (!$sendingDiagnosticEmail): ?> <div class="wf-diagnostics-wrapper"> <div class="wf-flex-row"> <div class="wf-flex-row-1"> <?php esc_html_e('This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment.', 'wordfence') ?> </div> <div class="wf-flex-row-0 wf-padding-add-left"> <div id="sendByEmailThanks" class="hidden"> <h3><?php esc_html_e('Thanks for sending your diagnostic page over email', 'wordfence'); ?></h3> </div> <div id="sendByEmailDiv" class="wf-add-bottom"> <span class="wf-nowrap"> <input class="wf-btn wf-btn-primary wf-btn-sm" type="submit" id="exportDiagnostics" value="Export"/> <input class="wf-btn wf-btn-primary wf-btn-sm" type="submit" id="sendByEmail" value="Send Report by Email"/> <input class="wf-btn wf-btn-default wf-btn-sm" type="button" id="expandAllDiagnostics" value="Expand All Diagnostics"/> </span> </div> </div> </div> <div id="sendByEmailForm" class="wf-block wf-active hidden"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Send Report by Email', 'wordfence') ?></strong> </div> </div> </div> <div class="wf-block-content wf-clearfix"> <ul class="wf-block-list"> <li> <div><?php esc_html_e('Email address:', 'wordfence'); ?></div> <div style="width: 40%"> <p><input class="wf-input-text" type="email" id="_email" value="wftest@wordfence.com"/> </p> </div> </li> <li> <div><?php esc_html_e('Ticket Number/Forum Username:', 'wordfence'); ?></div> <div style="width: 40%"> <p><input class="wf-input-text" type="text" id="_ticketnumber" required/></p> </div> </li> <li> <p> <input class="wf-btn wf-btn-primary" type="button" id="doSendEmail" value="Send"/> </p> </li> </ul> </div> </div> </div> <?php endif; ?> <div class="wf-diagnostics-wrapper"> <?php foreach ($diagnostic->getResults() as $title => $tests): $key = sanitize_key('wf-diagnostics-' . $title); $hasFailingTest = false; foreach ($tests['results'] as $result) { $infoOnly = isset($result['infoOnly']) && $result['infoOnly']; if (!$result['test'] && !$infoOnly) { $hasFailingTest = true; break; } } if ($inEmail): ?> <table> <thead> <tr> <th colspan="2"><?php echo esc_html($title) ?></th> </tr> </thead> <tbody> <?php foreach ($tests['results'] as $result): ?> <?php $infoOnly = isset($result['infoOnly']) && $result['infoOnly']; ?> <tr> <td style="width: 75%; min-width: 300px"><?php echo (is_array($result['label']) && isset($result['label']['raw']) && $result['label']['raw'] ? $result['label']['value'] : wp_kses($result['label'], array( 'code' => array(), 'strong' => array(), 'em' => array(), 'a' => array('href' => true), ))) ?></td> <td> <?php if ($infoOnly): ?> <div class="wf-result-info"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php elseif ($result['test']): ?> <div class="wf-result-success"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php else: ?> <div class="wf-result-error"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php endif ?> <?php if (isset($result['detail']) && !empty($result['detail'])): ?> <p><strong><?php esc_html_e('Additional Detail', 'wordfence'); ?></strong><br><?php echo nl2br(esc_html($result['detail'])); ?></p> <?php endif; ?> </td> </tr> <?php endforeach ?> </tbody> </table> <?php else: ?> <div class="wf-block<?php echo (wfPersistenceController::shared()->isActive($key) ? ' wf-active' : '') . ($hasFailingTest ? ' wf-diagnostic-fail' : '') ?>" data-persistence-key="<?php echo esc_attr($key) ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php echo esc_html($title) ?></strong> <span class="wf-text-small"><?php echo esc_html($tests['description']) ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($key) ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix"> <ul class="wf-block-list"> <?php foreach ($tests['results'] as $key => $result): ?> <?php $infoOnly = isset($result['infoOnly']) && $result['infoOnly']; ?> <li> <div style="width: 75%; min-width: 300px;"><?php echo (is_array($result['label']) && isset($result['label']['raw']) && $result['label']['raw'] ? $result['label']['value'] : wp_kses($result['label'], array( 'code' => array(), 'strong' => array(), 'em' => array(), 'a' => array('href' => true), ))) ?></div> <div class="wf-right"> <?php if ($infoOnly): ?> <div class="wf-result-info"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php elseif ($result['test']): ?> <div class="wf-result-success"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php else: ?> <div class="wf-result-error"><?php echo nl2br(esc_html($result['message'])); ?></div> <?php endif ?> <?php if (isset($result['detail']) && !empty($result['detail'])): ?> <p><a href="#" onclick="jQuery('#wf-diagnostics-detail-<?php echo esc_attr($key); ?>').show(); jQuery(this).hide(); return false;"><?php esc_html_e('View Additional Detail', 'wordfence'); ?></a></p> <pre class="wf-pre wf-split-word" id="wf-diagnostics-detail-<?php echo esc_attr($key); ?>" style="max-width: 600px; display: none;"><?php echo esc_html($result['detail']); ?></pre> <?php endif; ?> </div> </li> <?php endforeach ?> </ul> </div> </div> <?php endif ?> <?php endforeach ?> <?php $howGet = wfConfig::get('howGetIPs', false); list($currentIP, $currentServerVarForIP) = wfUtils::getIPAndServerVariable(); $howGetHasErrors = $howGet && (! $currentServerVarForIP || $howGet !== $currentServerVarForIP); ?> <div class="wf-block<?php echo ($howGetHasErrors ? ' wf-diagnostic-fail' : '') . (wfPersistenceController::shared()->isActive('wf-diagnostics-client-ip') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-client-ip') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('IP Detection', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('Methods of detecting a visitor\'s IP address.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-client-ip') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody class="thead"> <tr> <th><?php esc_html_e('IPs', 'wordfence'); ?></th> <th><?php esc_html_e('Value', 'wordfence'); ?></th> <th><?php esc_html_e('Used', 'wordfence'); ?></th> </tr> </tbody> <tbody> <?php $serverVariables = array( 'REMOTE_ADDR' => 'REMOTE_ADDR', 'HTTP_CF_CONNECTING_IP' => 'CF-Connecting-IP', 'HTTP_X_REAL_IP' => 'X-Real-IP', 'HTTP_X_FORWARDED_FOR' => 'X-Forwarded-For', ); foreach (wfUtils::getAllServerVariableIPs() as $variable => $ip): ?> <tr> <td><?php echo isset($serverVariables[$variable]) ? $serverVariables[$variable] : $variable ?></td> <td><?php if (! $ip) { _e('(not set)', 'wordfence'); } elseif (is_array($ip)) { $output = array_map('esc_html', $ip); echo str_replace($currentIP, "<strong>{$currentIP}</strong>", implode(', ', $output)); } else { echo esc_html($ip); } ?></td> <?php if ($currentServerVarForIP && $currentServerVarForIP === $variable): ?> <td class="wf-result-success"><?php esc_html_e('In use', 'wordfence'); ?></td> <?php elseif ($howGet === $variable): ?> <td class="wf-result-error"><?php esc_html_e('Configured but not valid', 'wordfence'); ?></td> <?php else: ?> <td></td> <?php endif ?> </tr> <?php endforeach ?> <tr> <td><?php esc_html_e('Trusted Proxies', 'wordfence'); ?></td> <td><?php echo esc_html(implode(', ', explode("\n", wfConfig::get('howGetIPs_trusted_proxies', '')))); ?></td> <td></td> </tr> </tbody> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-constants') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-constants') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('WordPress Settings', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('WordPress version and internal settings/constants.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-constants') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody> <?php require(ABSPATH . 'wp-includes/version.php'); $postRevisions = (defined('WP_POST_REVISIONS') ? WP_POST_REVISIONS : true); $wordPressValues = array( 'WordPress Version' => array('description' => '', 'value' => $wp_version), 'Multisite' => array('description' => __('Return value of is_multisite()', 'wordfence'), 'value' => is_multisite() ? __('Yes', 'wordfence') : __('No', 'wordfence')), 'ABSPATH' => __('WordPress base path', 'wordfence'), 'WP_DEBUG' => array('description' => __('WordPress debug mode', 'wordfence'), 'value' => (defined('WP_DEBUG') && WP_DEBUG ? __('On', 'wordfence') : __('Off', 'wordfence'))), 'WP_DEBUG_LOG' => array('description' => __('WordPress error logging override', 'wordfence'), 'value' => defined('WP_DEBUG_LOG') ? (WP_DEBUG_LOG ? 'Enabled' : 'Disabled') : __('(not set)', 'wordfence')), 'WP_DEBUG_DISPLAY' => array('description' => __('WordPress error display override', 'wordfence'), 'value' => defined('WP_DEBUG_DISPLAY') ? (WP_DEBUG_LOG ? 'Enabled' : 'Disabled') : __('(not set)', 'wordfence')), 'SCRIPT_DEBUG' => array('description' => __('WordPress script debug mode', 'wordfence'), 'value' => (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? __('On', 'wordfence') : __('Off', 'wordfence'))), 'SAVEQUERIES' => array('description' => __('WordPress query debug mode', 'wordfence'), 'value' => (defined('SAVEQUERIES') && SAVEQUERIES ? __('On', 'wordfence') : __('Off', 'wordfence'))), 'DB_CHARSET' => __('Database character set', 'wordfence'), 'DB_COLLATE' => __('Database collation', 'wordfence'), 'WP_SITEURL' => __('Explicitly set site URL', 'wordfence'), 'WP_HOME' => __('Explicitly set blog URL', 'wordfence'), 'WP_CONTENT_DIR' => array('description' => __('"wp-content" folder is in default location', 'wordfence'), 'value' => (realpath(WP_CONTENT_DIR) === realpath(ABSPATH . 'wp-content') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress content directory. */ __('No: %s', 'wordfence'), WP_CONTENT_DIR))), 'WP_CONTENT_URL' => __('URL to the "wp-content" folder', 'wordfence'), 'WP_PLUGIN_DIR' => array('description' => __('"plugins" folder is in default location', 'wordfence'), 'value' => (realpath(WP_PLUGIN_DIR) === realpath(ABSPATH . 'wp-content/plugins') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress plugins directory. */ __('No: %s', 'wordfence'), WP_PLUGIN_DIR))), 'WP_LANG_DIR' => array('description' => __('"languages" folder is in default location', 'wordfence'), 'value' => (realpath(WP_LANG_DIR) === realpath(ABSPATH . 'wp-content/languages') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress languages directory. */ __('No: %s', 'wordfence'), WP_LANG_DIR))), 'WPLANG' => __('Language choice', 'wordfence'), 'UPLOADS' => __('Custom upload folder location', 'wordfence'), 'TEMPLATEPATH' => array('description' => __('Theme template folder override', 'wordfence'), 'value' => (defined('TEMPLATEPATH') && realpath(get_template_directory()) !== realpath(TEMPLATEPATH) ? sprintf(/* translators: WordPress theme template directory. */ __('Overridden: %s', 'wordfence'), TEMPLATEPATH) : __('(not set)', 'wordfence'))), 'STYLESHEETPATH' => array('description' => __('Theme stylesheet folder override', 'wordfence'), 'value' => (defined('STYLESHEETPATH') && realpath(get_stylesheet_directory()) !== realpath(STYLESHEETPATH) ? sprintf(/* translators: WordPress theme stylesheet directory. */ __('Overridden: %s', 'wordfence'), STYLESHEETPATH) : __('(not set)', 'wordfence'))), 'AUTOSAVE_INTERVAL' => __('Post editing automatic saving interval', 'wordfence'), 'WP_POST_REVISIONS' => array('description' => __('Post revisions saved by WordPress', 'wordfence'), 'value' => is_numeric($postRevisions) ? $postRevisions : ($postRevisions ? __('Unlimited', 'wordfence') : __('None', 'wordfence'))), 'COOKIE_DOMAIN' => __('WordPress cookie domain', 'wordfence'), 'COOKIEPATH' => __('WordPress cookie path', 'wordfence'), 'SITECOOKIEPATH' => __('WordPress site cookie path', 'wordfence'), 'ADMIN_COOKIE_PATH' => __('WordPress admin cookie path', 'wordfence'), 'PLUGINS_COOKIE_PATH' => __('WordPress plugins cookie path', 'wordfence'), 'NOBLOGREDIRECT' => __('URL redirected to if the visitor tries to access a nonexistent blog', 'wordfence'), 'CONCATENATE_SCRIPTS' => array('description' => __('Concatenate JavaScript files', 'wordfence'), 'value' => (defined('CONCATENATE_SCRIPTS') && CONCATENATE_SCRIPTS ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'WP_MEMORY_LIMIT' => __('WordPress memory limit', 'wordfence'), 'WP_MAX_MEMORY_LIMIT' => __('Administrative memory limit', 'wordfence'), 'WP_CACHE' => array('description' => __('Built-in caching', 'wordfence'), 'value' => (defined('WP_CACHE') && WP_CACHE ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))), 'CUSTOM_USER_TABLE' => array('description' => __('Custom "users" table', 'wordfence'), 'value' => (defined('CUSTOM_USER_TABLE') ? sprintf(/* translators: WordPress custom user table. */ __('Set: %s', 'wordfence'), CUSTOM_USER_TABLE) : __('(not set)', 'wordfence'))), 'CUSTOM_USER_META_TABLE' => array('description' => __('Custom "usermeta" table', 'wordfence'), 'value' => (defined('CUSTOM_USER_META_TABLE') ? sprintf(/* translators: WordPress custom user meta table. */ __('Set: %s', 'wordfence'), CUSTOM_USER_META_TABLE) : __('(not set)', 'wordfence'))), 'FS_CHMOD_DIR' => array('description' => __('Overridden permissions for a new folder', 'wordfence'), 'value' => defined('FS_CHMOD_DIR') ? decoct(FS_CHMOD_DIR) : __('(not set)', 'wordfence')), 'FS_CHMOD_FILE' => array('description' => __('Overridden permissions for a new file', 'wordfence'), 'value' => defined('FS_CHMOD_FILE') ? decoct(FS_CHMOD_FILE) : __('(not set)', 'wordfence')), 'ALTERNATE_WP_CRON' => array('description' => __('Alternate WP cron', 'wordfence'), 'value' => (defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))), 'DISABLE_WP_CRON' => array('description' => __('WP cron status', 'wordfence'), 'value' => (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ? __('Disabled', 'wordfence') : __('Enabled', 'wordfence'))), 'WP_CRON_LOCK_TIMEOUT' => __('Cron running frequency lock', 'wordfence'), 'EMPTY_TRASH_DAYS' => array('description' => __('Interval the trash is automatically emptied at in days', 'wordfence'), 'value' => (EMPTY_TRASH_DAYS > 0 ? EMPTY_TRASH_DAYS : __('Never', 'wordfence'))), 'WP_ALLOW_REPAIR' => array('description' => __('Automatic database repair', 'wordfence'), 'value' => (defined('WP_ALLOW_REPAIR') && WP_ALLOW_REPAIR ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))), 'DO_NOT_UPGRADE_GLOBAL_TABLES' => array('description' => __('Do not upgrade global tables', 'wordfence'), 'value' => (defined('DO_NOT_UPGRADE_GLOBAL_TABLES') && DO_NOT_UPGRADE_GLOBAL_TABLES ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'DISALLOW_FILE_EDIT' => array('description' => __('Disallow plugin/theme editing', 'wordfence'), 'value' => (defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'DISALLOW_FILE_MODS' => array('description' => __('Disallow plugin/theme update and installation', 'wordfence'), 'value' => (defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'IMAGE_EDIT_OVERWRITE' => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'FORCE_SSL_ADMIN' => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'WP_HTTP_BLOCK_EXTERNAL' => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'WP_ACCESSIBLE_HOSTS' => __('Allowlisted hosts', 'wordfence'), 'WP_AUTO_UPDATE_CORE' => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')), 'WP_PROXY_HOST' => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')), 'WP_PROXY_PORT' => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')), 'MULTISITE' => array('description' => __('Multisite enabled', 'wordfence'), 'value' => defined('MULTISITE') ? (MULTISITE ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')), 'WP_ALLOW_MULTISITE' => array('description' => __('Multisite/network ability enabled', 'wordfence'), 'value' => (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))), 'SUNRISE' => array('description' => __('Multisite enabled, WordPress will load the /wp-content/sunrise.php file', 'wordfence'), 'value' => defined('SUNRISE') ? __('Yes', 'wordfence') : __('(not set)', 'wordfence')), 'SUBDOMAIN_INSTALL' => array('description' => __('Multisite enabled, subdomain installation constant', 'wordfence'), 'value' => defined('SUBDOMAIN_INSTALL') ? (SUBDOMAIN_INSTALL ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')), 'VHOST' => array('description' => __('Multisite enabled, Older subdomain installation constant', 'wordfence'), 'value' => defined('VHOST') ? (VHOST == 'yes' ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')), 'DOMAIN_CURRENT_SITE' => __('Defines the multisite domain for the current site', 'wordfence'), 'PATH_CURRENT_SITE' => __('Defines the multisite path for the current site', 'wordfence'), 'BLOG_ID_CURRENT_SITE' => __('Defines the multisite database ID for the current site', 'wordfence'), 'WP_DISABLE_FATAL_ERROR_HANDLER' => array('description' => __('Disable the fatal error handler', 'wordfence'), 'value' => (defined('WP_DISABLE_FATAL_ERROR_HANDLER') && WP_DISABLE_FATAL_ERROR_HANDLER ? __('Yes', 'wordfence') : __('No', 'wordfence'))), ); foreach ($wordPressValues as $settingName => $settingData): $escapedName = esc_html($settingName); $escapedDescription = ''; $escapedValue = __('(not set)', 'wordfence'); if (is_array($settingData)) { $escapedDescription = esc_html($settingData['description']); if (isset($settingData['value'])) { $escapedValue = esc_html($settingData['value']); } } else { $escapedDescription = esc_html($settingData); if (defined($settingName)) { $escapedValue = esc_html(constant($settingName)); } } ?> <tr> <td><strong><?php echo $escapedName ?></strong></td> <td><?php echo $escapedDescription ?></td> <td><?php echo $escapedValue ?></td> </tr> <?php endforeach ?> </tbody> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-plugins') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('WordPress Plugins', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('Status of installed plugins.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody> <?php foreach ($plugins as $plugin => $pluginData): ?> <?php $slug = $plugin; if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } ?> <tr> <td> <strong><?php echo esc_html($pluginData['Name']); ?> (<?php echo esc_html($slug); ?>)</strong> <?php if (!empty($pluginData['Version'])): ?> - <?php echo esc_html(sprintf(__('Version %s', 'wordfence'), $pluginData['Version'])); ?> <?php endif ?> </td> <?php if (array_key_exists(trailingslashit(WP_PLUGIN_DIR) . $plugin, $activeNetworkPlugins)): ?> <td class="wf-result-success"><?php esc_html_e('Network Activated', 'wordfence'); ?></td> <?php elseif (array_key_exists($plugin, $activePlugins)): ?> <td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td> <?php else: ?> <td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td> <?php endif ?> </tr> <?php endforeach ?> </tbody> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-mu-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-mu-wordpress-plugins') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Must-Use WordPress Plugins', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('WordPress "mu-plugins" that are always active, including those provided by hosts.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-mu-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <?php if (!empty($muPlugins)): ?> <tbody> <?php foreach ($muPlugins as $plugin => $pluginData): ?> <?php $slug = $plugin; if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } ?> <tr> <td> <strong><?php echo esc_html($pluginData['Name']) ?> (<?php echo esc_html($slug); ?>)</strong> <?php if (!empty($pluginData['Version'])): ?> - <?php echo esc_html(sprintf(/* translators: Plugin version. */ __('Version %s', 'wordfence'), $pluginData['Version'])); ?> <?php endif ?> </td> <td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td> </tr> <?php endforeach ?> </tbody> <?php else: ?> <tbody> <tr> <td><?php esc_html_e('No MU-Plugins', 'wordfence'); ?></td> </tr> </tbody> <?php endif ?> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-dropin-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-dropin-wordpress-plugins') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Drop-In WordPress Plugins', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('WordPress "drop-in" plugins that are active.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-dropin-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody> <?php //Taken from plugin.php and modified to always show multisite drop-ins $dropins = array( 'advanced-cache.php' => array( __( 'Advanced caching plugin' ), 'WP_CACHE' ), // WP_CACHE 'db.php' => array( __( 'Custom database class' ), true ), // auto on load 'db-error.php' => array( __( 'Custom database error message' ), true ), // auto on error 'install.php' => array( __( 'Custom installation script' ), true ), // auto on installation 'maintenance.php' => array( __( 'Custom maintenance message' ), true ), // auto on maintenance 'object-cache.php' => array( __( 'External object cache' ), true ), // auto on load 'php-error.php' => array( __( 'Custom PHP error message' ), true ), // auto on error 'fatal-error-handler.php'=> array( __( 'Custom PHP fatal error handler' ), true ), // auto on error ); $dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded' ), is_multisite() && 'SUNRISE' ); // SUNRISE $dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message' ), is_multisite() ); // auto on deleted blog $dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message' ), is_multisite() ); // auto on inactive blog $dropins['blog-suspended.php'] = array( __( 'Custom site suspended message' ), is_multisite() ); // auto on archived or spammed blog ?> <?php foreach ($dropins as $file => $data): ?> <?php $active = file_exists(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && is_readable(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && $data[1]; ?> <tr> <td> <strong><?php echo esc_html($data[0]) ?> (<?php echo esc_html($file); ?>)</strong> </td> <?php if ($active): ?> <td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td> <?php else: ?> <td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td> <?php endif; ?> </tr> <?php endforeach ?> </tbody> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-themes') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-themes') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Themes', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('Status of installed themes.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-themes') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <?php if (!empty($themes)): ?> <tbody> <?php foreach ($themes as $theme => $themeData): ?> <?php $slug = $theme; if (preg_match('/^([^\/]+)\//', $theme, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $theme, $matches)) { $slug = $matches[1]; } ?> <tr> <td> <strong><?php echo esc_html($themeData['Name']) ?> (<?php echo esc_html($slug); ?>)</strong> <?php if (!empty($themeData['Version'])): ?> - <?php echo esc_html(sprintf(/* translators: Theme version. */ __('Version %s', 'wordfence'), $themeData['Version'])); ?> <?php endif ?> <?php if ($currentTheme instanceof WP_Theme && $theme === $currentTheme->get_stylesheet()): ?> <td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td> <?php else: ?> <td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td> <?php endif ?> </tr> <?php endforeach ?> </tbody> <?php else: ?> <tbody> <tr> <td><?php esc_html_e('No Themes', 'wordfence'); ?></td> </tr> </tbody> <?php endif ?> </table> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-cron-jobs') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-cron-jobs') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Cron Jobs', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('List of WordPress cron jobs scheduled by WordPress, plugins, or themes.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-cron-jobs') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody> <?php $cron = _get_cron_array(); foreach ($cron as $timestamp => $values) { if (is_array($values)) { foreach ($values as $cron_job => $v) { if (is_numeric($timestamp)) { $overdue = ((time() - 1800) > $timestamp); ?> <tr<?php echo $overdue ? ' class="wf-overdue-cron"' : ''; ?>> <td><?php echo esc_html(date('r', $timestamp)) . ($overdue ? ' <strong>(' . esc_html__('Overdue', 'wordfence') . ')</strong>' : '') ?></td> <td><?php echo esc_html($cron_job) ?></td> </tr> <?php } } } } ?> </tbody> </table> </div> </div> <?php global $wpdb; $wfdb = new wfDB(); //This must be done this way because MySQL with InnoDB tables does a full regeneration of all metadata if we don't. That takes a long time with a large table count. $tables = $wfdb->querySelect('SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() ORDER BY TABLE_NAME ASC LIMIT 250'); $total = $wfdb->querySingle('SELECT FOUND_ROWS()'); foreach ($tables as &$t) { $t = "'" . esc_sql($t['TABLE_NAME']) . "'"; } unset($t); $q = $wfdb->querySelect("SHOW TABLE STATUS WHERE Name IN (" . implode(',', $tables) . ')'); if ($q): $databaseCols = count($q[0]); ?> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-database-tables') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-database-tables') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Database Tables', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('Database table names, sizes, timestamps, and other metadata.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-database-tables') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <ul class="wf-block-list wf-padding-add-left-large wf-padding-add-right-large"> <li style="border-bottom: 1px solid #e2e2e2;"> <div style="width: 75%; min-width: 300px;"><?php esc_html_e('Wordfence Table Check', 'wordfence'); ?></div> <div class="wf-right"> <?php if ($total > 250): ?> <div class="wf-result-info"><?php esc_html_e('Unable to verify - table count too high', 'wordfence'); ?></div> <?php else: $hasAll = true; $schemaTables = wfSchema::tableList(); $existingTables = wfUtils::array_column($q, 'Name'); if (WFWAF_IS_WINDOWS) { $existingTables = wfUtils::array_strtolower($existingTables); } //Windows MySQL installations are case-insensitive $missingTables = array(); foreach ($schemaTables as $t) { $table = wfDB::networkTable($t); if (WFWAF_IS_WINDOWS) { $table = strtolower($table); } if (!in_array($table, $existingTables)) { $hasAll = false; $missingTables[] = $t; } } foreach ( array( \WordfenceLS\Controller_DB::TABLE_2FA_SECRETS, \WordfenceLS\Controller_DB::TABLE_SETTINGS, ) as $t) { $table = \WordfenceLS\Controller_DB::network_table($t); if (!in_array($table, $existingTables)) { $hasAll = false; $missingTables[] = $t; } } if ($hasAll): ?> <div class="wf-result-success"><?php esc_html_e('All Tables Exist', 'wordfence'); ?></div> <?php else: ?> <div class="wf-result-error"><?php echo esc_html(sprintf( /* translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. */ __('Tables missing (prefix %1$s, %2$s): %3$s', 'wordfence'), wfDB::networkPrefix(), wfSchema::usingLowercase() ? __('lowercase', 'wordfence') : __('regular case', 'wordfence'), implode(', ', $missingTables))); ?></div> <?php endif; ?> <?php endif; ?> </div> </li> </ul> <div class="wf-add-top-large" style="max-width: 100%; overflow: auto; padding: 1px;"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody class="thead thead-subhead" style="font-size: 85%"> <?php $val = wfUtils::array_first($q); $actualKeyOrder = array_keys($val); $preferredKeyOrder = array('Name', 'Comment', 'Engine', 'Rows', 'Avg_row_length', 'Data_length', 'Index_length', 'Auto_increment', 'Create_time', 'Row_format', 'Collation', 'Version', 'Max_data_length', 'Data_free', 'Update_time', 'Check_time', 'Checksum', 'Create_options'); $leftoverKeys = array(); $displayKeyOrder = array(); foreach ($preferredKeyOrder as $k) { if (in_array($k, $actualKeyOrder)) { $displayKeyOrder[] = $k; } } $diff = array_diff($actualKeyOrder, $preferredKeyOrder); $displayKeyOrder = array_merge($displayKeyOrder, $diff); ?> <tr> <?php foreach ($displayKeyOrder as $tkey): ?> <th><?php echo esc_html($tkey) ?></th> <?php endforeach; ?> </tr> </tbody> <tbody style="font-size: 85%"> <?php $count = 0; foreach ($q as $val) { ?> <tr> <?php foreach ($displayKeyOrder as $tkey): ?> <td><?php if (isset($val[$tkey])) { echo esc_html($val[$tkey]); } ?></td> <?php endforeach; ?> </tr> <?php $count++; if ($count >= 250 && $total > $count) { ?> <tr> <td colspan="<?php echo $databaseCols; ?>"><?php echo esc_html(sprintf(/* translators: Row/record count. */ __('and %d more', 'wordfence'), $total - $count)); ?></td> </tr> <?php break; } } ?> </tbody> </table> </div> </div> </div> <?php endif ?> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-log-files') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-log-files') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Log Files', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('PHP error logs generated by your site, if enabled by your host.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-log-files') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right"> <div style="max-width: 100%; overflow: auto; padding: 1px;"> <table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>> <tbody class="thead thead-subhead" style="font-size: 85%"> <tr> <th><?php esc_html_e('File', 'wordfence'); ?></th> <th><?php esc_html_e('Download', 'wordfence'); ?></th> </tr> </tbody> <tbody style="font-size: 85%"> <?php $errorLogs = wfErrorLogHandler::getErrorLogs(); if (count($errorLogs) < 1): ?> <tr> <td colspan="2"><em><?php esc_html_e('No log files found.', 'wordfence'); ?></em></td> </tr> <?php else: foreach ($errorLogs as $log => $readable): ?> <?php $metadata = array(); if (is_callable('filesize')) { $rawSize = @filesize($log); if ($rawSize !== false) { $metadata[] = wfUtils::formatBytes(filesize($log)); } } if (is_callable('lstat')) { $rawStat = @lstat($log); if (is_array($rawStat) && isset($rawStat['mtime'])) { $ts = $rawStat['mtime']; $utc = new DateTimeZone('UTC'); $dtStr = gmdate("c", (int) $ts); //Have to do it this way because of PHP 5.2 $dt = new DateTime($dtStr, $utc); $metadata[] = $dt->format('M j, Y G:i:s') . ' ' . __('UTC', 'wordfence'); } } $shortLog = $log; if (strpos($shortLog, ABSPATH) === 0) { $shortLog = '~/' . substr($shortLog, strlen(ABSPATH)); } ?> <tr> <td style="width: 100%"><?php echo esc_html($shortLog); if (!empty($metadata)) { echo ' (' . esc_html(implode(', ', $metadata)) . ')'; } ?></td> <td style="white-space: nowrap; text-align: right;"><?php echo($readable ? '<a href="#" data-logfile="' . esc_attr($log) . '" class="downloadLogFile" target="_blank" rel="noopener noreferrer">' . esc_html__('Download', 'wordfence') . '</a>' : '<em>' . esc_html__('Requires downloading from the server directly', 'wordfence') . '</em>'); ?></td> </tr> <?php endforeach; endif; ?> </tbody> </table> </div> </div> </div> </div> <?php if (!empty($inEmail)) { echo '<h1>' . esc_html__('Scan Issues', 'wordfence') . "</h1>\n"; $issues = wfIssues::shared()->getIssues(0, 50, 0, 50); $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts()); $issueTypes = wfIssues::validIssueTypes(); echo '<h2>' . esc_html(sprintf(/* translators: Number of scan issues. */ __('New Issues (%d total)', 'wordfence'), $issueCounts['new'])) . "</h2>\n"; if (isset($issues['new']) && count($issues['new'])) { foreach ($issues['new'] as $i) { if (!in_array($i['type'], $issueTypes)) { continue; } $viewContent = ''; try { $viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render(); } catch (wfViewNotFoundException $e) { //Ignore -- should never happen since we validate the type } if (!empty($viewContent)) { echo nl2br($viewContent) . "<br><br>\n"; } } } else { echo '<h1>' . esc_html__('No New Issues', 'wordfence') . "</h1>\n"; } } ?> <?php if (!empty($inEmail)): ?> <?php phpinfo(); ?> <?php endif ?> <?php if (!empty($emailForm)): ?> <div class="wf-diagnostics-wrapper"> <div id="wf-diagnostics-other-tests" class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-other-tests') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-other-tests') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Other Tests', 'wordfence') ?></strong> <span class="wf-text-small"><?php esc_html_e('System configuration, memory test, send test email from this server.', 'wordfence') ?></span> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-other-tests') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix"> <ul class="wf-block-list"> <li> <span> <a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=sysinfo&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Click to view your system\'s configuration in a new window', 'wordfence'); ?></a> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a> </span> </li> <li> <span> <a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=testmem&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Test your WordPress host\'s available memory', 'wordfence'); ?></a> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_MEMORY); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a> </span> </li> <li> <span> <?php esc_html_e('Send a test email from this WordPress server to an email address:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_EMAIL); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a> <input type="text" id="testEmailDest" value="" size="20" maxlength="255" class="wfConfigElem"/> <input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Email', 'wordfence'); ?>" onclick="WFAD.sendTestEmail(jQuery('#testEmailDest').val());"/> </span> </li> <li> <span> <?php esc_html_e('Send a test activity report email:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a> <input type="email" id="email_summary_email_address_debug" value="" size="20" maxlength="255" class="wfConfigElem"/> <input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Activity Report', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_email_summary_email_address_debug', {email: jQuery('#email_summary_email_address_debug').val()});"/> </span> </li> <li> <span> <?php esc_html_e('Clear all Wordfence Central connection data', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a> <input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Clear Connection Data', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_wfcentral_disconnect', {}, function() { WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), 'Successfully romved data', 'All associated Wordfence Central data has been removed from the database.'); });"/> </span> </li> </ul> </div> </div> <div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-debugging-options') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-debugging-options') ?>"> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Debugging Options', 'wordfence') ?></strong> </div> <div class="wf-block-header-action"> <div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-debugging-options') ? 'true' : 'false'); ?>" tabindex="0"></div> </div> </div> </div> <div class="wf-block-content wf-clearfix"> <form action="#" id="wfDebuggingConfigForm"> <ul class="wf-block-list"> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'debugOn', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => $w->get('debugOn') ? 1 : 0, 'title' => __('Enable debugging mode (increases database load)', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_DEBUGGING_MODE), ))->render(); ?> </li> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'startScansRemotely', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => $w->get('startScansRemotely') ? 1 : 0, 'title' => __('Start all scans remotely (Try this if your scans aren\'t starting and your site is publicly accessible)', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_REMOTE_SCANS), ))->render(); ?> </li> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'ssl_verify', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => $w->get('ssl_verify') ? 1 : 0, 'title' => __('Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_SSL_VERIFICATION), ))->render(); ?> </li> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'avoid_php_input', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => wfWAF::getInstance()->getStorageEngine()->getConfig('avoid_php_input', false) ? 1 : 0, 'title' => __('Disable reading of php://input', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT), ))->render(); ?> </li> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'betaThreatDefenseFeed', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => $w->get('betaThreatDefenseFeed') ? 1 : 0, 'title' => __('Enable beta threat defense feed', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_BETA_TDF), ))->render(); ?> </li> <li> <?php echo wfView::create('options/option-toggled', array( 'optionName' => 'wordfenceI18n', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => $w->get('wordfenceI18n') ? 1 : 0, 'title' => 'Enable Wordfence translations', 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS), ))->render(); ?> </li> <li> <p> <a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr(wfConfig::OPTIONS_TYPE_DIAGNOSTICS); ?>"><?php esc_html_e('Restore Defaults', 'wordfence'); ?></a> <a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#"><?php esc_html_e('Cancel Changes', 'wordfence'); ?></a> <a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#"><?php esc_html_e('Save Changes', 'wordfence'); ?></a> </p> </li> </ul> </form> </div> </div> </div> <?php endif ?> </div> <div class="wf-scrollTop"> <a href="javascript:void(0);"><i class="wf-ionicons wf-ion-chevron-up"></i></a> </div> <script type="text/x-jquery-template" id="wfTmpl_restoreDefaultsPrompt"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Confirm Restore Defaults', 'wordfence'), 'message' => __('Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'), 'primaryButton' => array('id' => 'wf-restore-defaults-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'), 'secondaryButtons' => array(array('id' => 'wf-restore-defaults-prompt-confirm', 'labelHTML' => wp_kses(__('Restore<span class="wf-hidden-xs"> Defaults</span>', 'wordfence'), array('span'=>array('class'=>array()))), 'link' => '#')), ))->render(); ?> </script>����������������������������������������������������������������������������lib/wfDict.php��������������������������������������������������������������������������������������0000644�����������������00000001342�15233113245�0007242 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php $dictWords = array( 'password', 'Password', 'passwd', 'admin', 'administrator', 'super', 'superuser', 'supervisor', 'root', 'manager', 'mgr', '1234567890', '123456789', '12345678', '1234567', '123456', '12345', '1234', '123', '12', '1', 'password', 'abc123', 'qwerty', 'asdf', 'zxcv', '9876543210', '876543210', '76543210', '6543210', '543210', '43210', '3210', '210', '10', '0', '1', '11', '111', '1111', '11111', '2', '22', '222', '2222', '22222', '3', '33', '333', '3333', '33333', '4', '44', '444', '4444', '44444', '5', '55', '555', '5555', '55555', '6', '66', '666', '6666', '66666', '7', '77', '777', '7777', '77777', '8', '88', '888', '8888', '88888', '9', '99', '999', '9999', '99999', '0', '00', '000', '0000', '00000' ); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfCrypt.php�������������������������������������������������������������������������������������0000644�����������������00000010062�15233113245�0007457 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfCrypt { private static function getPubKey(){ #Command to generate our keypair was: openssl req -x509 -newkey rsa:2048 -keyout mycert.key -out mycert.pem -nodes -subj "/C=US/ST=Washington/L=Seattle/O=Wordfence/OU=IT/CN=wordfence.com" -days 7300 #This is a 2048 bit key using SHA256 with RSA. $key = <<<ENDKEY -----BEGIN CERTIFICATE----- MIIDrTCCApWgAwIBAgIJAIg6Va5tcvwyMA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRIw EAYDVQQKDAlXb3JkZmVuY2UxCzAJBgNVBAsMAklUMRYwFAYDVQQDDA13b3JkZmVu Y2UuY29tMB4XDTE1MDMxMjA1NTIzMFoXDTM1MDMwNzA1NTIzMFowbTELMAkGA1UE BhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxEjAQ BgNVBAoMCVdvcmRmZW5jZTELMAkGA1UECwwCSVQxFjAUBgNVBAMMDXdvcmRmZW5j ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/9Ogj1PIQsuZu dTUNWlG0zaDNWpeY1ZiB/6oBS/YXkGFuG8R/nZ/kYsRmBm6yRp/3jC/HiPjg+7Zc bA/CKoHdUlNjFZ+10DmS369wVX+c0oV9f720b/a0xN0qeKxJTiN2NsAl5szYv2CQ Bvzjeb5VfKgrfV9tgYr38swudxvexponYaK0OlDL3u/Xca4SLRKmB+ZYCcZJttoG SNFsQMlLHWWmM0FJH9qZ3x8MtRM5KsNEWO+/op511Rr36ZnLJdzUnETsaxHKwuCv 0+D9b0mwk8K/c67l63v4+zywXNkdYIslgo7Aeeyb6t0lyyfruXutEyMinmApACT2 sDMAbYk7AgMBAAGjUDBOMB0GA1UdDgQWBBTstr/AoPQyLLIt4/peFSjj0FFXHzAf BgNVHSMEGDAWgBTstr/AoPQyLLIt4/peFSjj0FFXHzAMBgNVHRMEBTADAQH/MA0G CSqGSIb3DQEBCwUAA4IBAQA9HsK+XdZh2MGP2SDdggA+MxkNBCCFBtcsmQrpiLUW 67xt59FPRMwTgSA9Lt8uqcWaXoHXiaTnXTRtN/BKZR0F71HQfiV6zy511blIRlk2 nV+vYzwLUENCZ31hQEZsY+uYqBSTiHecUKohn8A9pOOEpis2YEn2zVo4cobdyGa1 zCnaAN99KT8s9lOO0UW0J52qZhvv4y8YhELtrXKBsFatGEsVIM0NFI+ZDsNpMnSQ cmUtLiIJtk5hxNbOaIz2vzbOkbzJ3ehzODJ1X5rya7X0v2akLLhwP9jqz5ua6ttP duLv4Q6v3LY6pwDoyKQMDqNNxVjaFmx5HyFWRPofpu/T -----END CERTIFICATE----- ENDKEY; return $key; } public static function makeSymHexKey($length){ return bin2hex(wfWAFUtils::random_bytes($length / 2)); } public static function pubCrypt($symKey){ //encrypts a symmetric key and returns it base64 openssl_public_encrypt($symKey, $encSymKey, self::getPubKey(), OPENSSL_PKCS1_OAEP_PADDING); //The default OPENSSL_PKCS1_PADDING is deprecated. return base64_encode($encSymKey); } /** * Returns the payload symmetrically encrypted and signed by the noc1 public key. The payload is converted to JSON, * encrypted using a randomly-generated symmetric key, and then hashed and signed with the noc1 public key. * * This is NOT cryptographically secure for verifying that this server sent or was aware of the context of the * message, rather it is intended to be used in tandem with verification via another method (e.g., a call that * validates due to the site URL matching the license key or noc1 does a call itself to the server to retrieve the * encrypted payload). It is solely a means to provide data to noc1 that only it can read. * * @param array $payload * @return array The encrypted and signed payload in the form array('message' => <encrypted message in hex>, 'signature' => <signature in hex>). */ public static function noc1_encrypt($payload) { $payloadJSON = json_encode($payload); $keyData = file_get_contents(dirname(__FILE__) . '/noc1.key'); $key = @openssl_get_publickey($keyData); if ($key !== false) { $symmetricKey = wfWAFUtils::random_bytes(32); $iv = wfWAFUtils::random_bytes(16); $encrypted = @openssl_encrypt($payloadJSON, 'aes-256-cbc', $symmetricKey, OPENSSL_RAW_DATA, $iv); if ($encrypted !== false) { $success = openssl_public_encrypt($symmetricKey, $symmetricKeyEncrypted, $key, OPENSSL_PKCS1_OAEP_PADDING); if ($success) { $message = $iv . $symmetricKeyEncrypted . $encrypted; $signatureRaw = hash('sha256', $message, true); $success = openssl_public_encrypt($signatureRaw, $signature, $key, OPENSSL_PKCS1_OAEP_PADDING); if ($success) { $package = array('message' => bin2hex($message), 'signature' => bin2hex($signature)); return $package; } } } } return array(); } /** * Returns a SHA256 HMAC for $payload using the local long key. * * @param $payload * @return false|string */ public static function local_sign($payload) { return hash_hmac('sha256', $payload, wfConfig::get('longEncKey')); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfUpdateCheck.php�������������������������������������������������������������������������������0000644�����������������00000043520�15233113245�0010543 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfUpdateCheck { private $needs_core_update = false; private $core_update_version = 0; private $plugin_updates = array(); private $all_plugins = array(); private $plugin_slugs = array(); private $theme_updates = array(); private $api = null; public static function syncAllVersionInfo() { // Load the core/plugin/theme versions into the WAF configuration. wfConfig::set('wordpressVersion', wfUtils::getWPVersion()); wfWAFConfig::set('wordpressVersion', wfUtils::getWPVersion(), wfWAF::getInstance(), 'synced'); if (!function_exists('get_plugins')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $pluginVersions = array(); foreach (get_plugins() as $pluginFile => $pluginData) { $slug = plugin_basename($pluginFile); if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $pluginFile, $matches)) { $slug = $matches[1]; } $pluginVersions[$slug] = isset($pluginData['Version']) ? $pluginData['Version'] : null; } wfConfig::set_ser('wordpressPluginVersions', $pluginVersions); wfWAFConfig::set('wordpressPluginVersions', $pluginVersions, wfWAF::getInstance(), 'synced'); if (!function_exists('wp_get_themes')) { require_once(ABSPATH . '/wp-includes/theme.php'); } $themeVersions = array(); foreach (wp_get_themes() as $slug => $theme) { $themeVersions[$slug] = isset($theme['Version']) ? $theme['Version'] : null; } wfConfig::set_ser('wordpressThemeVersions', $themeVersions); wfWAFConfig::set('wordpressThemeVersions', $themeVersions, wfWAF::getInstance(), 'synced'); } public function __construct() { $this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); } public function __sleep() { return array('needs_core_update', 'core_update_version', 'plugin_updates', 'all_plugins', 'plugin_slugs', 'theme_updates'); } public function __wakeup() { $this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); } /** * @return bool */ public function needsAnyUpdates() { return $this->needsCoreUpdate() || count($this->getPluginUpdates()) > 0 || count($this->getThemeUpdates()) > 0; } /** * Check for any core, plugin or theme updates. * * @return $this */ public function checkAllUpdates($useCachedValued = true) { return $this->checkCoreUpdates($useCachedValued) ->checkPluginUpdates($useCachedValued) ->checkThemeUpdates($useCachedValued); } /** * Check if there is an update to the WordPress core. * * @return $this */ public function checkCoreUpdates($useCachedValued = true) { $this->needs_core_update = false; if (!function_exists('wp_version_check')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('get_preferred_from_update_core')) { require_once(ABSPATH . 'wp-admin/includes/update.php'); } include(ABSPATH . WPINC . '/version.php'); //defines $wp_version $update_core = get_preferred_from_update_core(); if ($useCachedValued && isset($update_core->last_checked) && isset($update_core->version_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_core->last_checked) && $update_core->version_checked == $wp_version) { //Duplicate of _maybe_update_core, which is a private call //Do nothing, use cached value } else { wp_version_check(); $update_core = get_preferred_from_update_core(); } if (isset($update_core->response) && $update_core->response == 'upgrade') { $this->needs_core_update = true; $this->core_update_version = $update_core->current; } return $this; } /** * Check if any plugins need an update. * * @return $this */ public function checkPluginUpdates($useCachedValued = true) { $this->plugin_updates = array(); if (!function_exists('wp_update_plugins')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('plugins_api')) { require_once(ABSPATH . '/wp-admin/includes/plugin-install.php'); } $update_plugins = get_site_transient('update_plugins'); if ($useCachedValued && isset($update_plugins->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_plugins->last_checked)) { //Duplicate of _maybe_update_plugins, which is a private call //Do nothing, use cached value } else { wp_update_plugins(); $update_plugins = get_site_transient('update_plugins'); } //Get the full plugin list if (!function_exists('get_plugins')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $installedPlugins = get_plugins(); if ($update_plugins && !empty($update_plugins->response)) { foreach ($update_plugins->response as $plugin => $vals) { if (!function_exists('get_plugin_data')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null); if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $pluginFile, $matches)) { $slug = $matches[1]; } } $data = get_plugin_data($pluginFile); $data['pluginFile'] = $pluginFile; $data['newVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown'); $data['slug'] = $slug; $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null); //Check the vulnerability database if ($slug !== null && isset($data['Version'])) { $status = $this->isPluginVulnerable($slug, $data['Version']); $data['vulnerable'] = !!$status; if (is_string($status)) { $data['vulnerabilityLink'] = $status; } } else { $data['vulnerable'] = false; } if ($slug !== null) { $this->plugin_slugs[] = $slug; $this->all_plugins[$slug] = $data; } $this->plugin_updates[] = $data; unset($installedPlugins[$plugin]); } } //We have to grab the slugs from the update response because no built-in function exists to return the true slug from the local files if ($update_plugins && !empty($update_plugins->no_update)) { foreach ($update_plugins->no_update as $plugin => $vals) { if (!function_exists('get_plugin_data')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $data = get_plugin_data($pluginFile); $data['pluginFile'] = $pluginFile; $data['slug'] = (isset($valsArray['slug']) ? $valsArray['slug'] : null); $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null); //Check the vulnerability database if (isset($valsArray['slug']) && isset($data['Version'])) { $status = $this->isPluginVulnerable($valsArray['slug'], $data['Version']); $data['vulnerable'] = !!$status; if (is_string($status)) { $data['vulnerabilityLink'] = $status; } } else { $data['vulnerable'] = false; } if (isset($valsArray['slug'])) { $this->plugin_slugs[] = $valsArray['slug']; $this->all_plugins[$valsArray['slug']] = $data; } unset($installedPlugins[$plugin]); } } //Get the remaining plugins (not in the wordpress.org repo for whatever reason) foreach ($installedPlugins as $plugin => $data) { $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the list was generated continue; } $data = get_plugin_data($pluginFile); $slug = null; if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } if ($slug !== null) { $this->plugin_slugs[] = $slug; $this->all_plugins[$slug] = $data; } } return $this; } /** * Check if any themes need an update. * * @return $this */ public function checkThemeUpdates($useCachedValued = true) { $this->theme_updates = array(); if (!function_exists('wp_update_themes')) { require_once(ABSPATH . WPINC . '/update.php'); } $update_themes = get_site_transient('update_themes'); if ($useCachedValued && isset($update_themes->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_themes->last_checked)) { //Duplicate of _maybe_update_themes, which is a private call //Do nothing, use cached value } else { wp_update_themes(); $update_themes = get_site_transient('update_themes'); } if ($update_themes && (!empty($update_themes->response))) { if (!function_exists('wp_get_themes')) { require_once(ABSPATH . '/wp-includes/theme.php'); } $themes = wp_get_themes(); foreach ($update_themes->response as $theme => $vals) { foreach ($themes as $name => $themeData) { if (strtolower($name) == $theme) { $vulnerable = false; if (isset($themeData['Version'])) { $vulnerable = $this->isThemeVulnerable($theme, $themeData['Version']); } $this->theme_updates[] = array( 'newVersion' => (isset($vals['new_version']) ? $vals['new_version'] : 'Unknown'), 'package' => (isset($vals['package']) ? $vals['package'] : null), 'URL' => (isset($vals['url']) ? $vals['url'] : null), 'Name' => $themeData['Name'], 'name' => $themeData['Name'], 'version' => $themeData['Version'], 'vulnerable' => $vulnerable ); } } } } return $this; } public function checkAllVulnerabilities() { $this->checkPluginVulnerabilities(); $this->checkThemeVulnerabilities(); } public function checkPluginVulnerabilities() { if (!function_exists('wp_update_plugins')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('plugins_api')) { require_once(ABSPATH . '/wp-admin/includes/plugin-install.php'); } $vulnerabilities = array(); //Get the full plugin list if (!function_exists('get_plugins')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $installedPlugins = get_plugins(); //Get the info for plugins on wordpress.org $this->checkPluginUpdates(); $update_plugins = get_site_transient('update_plugins'); if ($update_plugins) { if (!function_exists('get_plugin_data')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } if (!empty($update_plugins->response)) { foreach ($update_plugins->response as $plugin => $vals) { $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $data = get_plugin_data($pluginFile); $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null); if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } } $record = array(); $record['slug'] = $slug; $record['toVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown'); $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown'); $record['vulnerable'] = false; $vulnerabilities[] = $record; unset($installedPlugins[$plugin]); } } if (!empty($update_plugins->no_update)) { foreach ($update_plugins->no_update as $plugin => $vals) { $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $data = get_plugin_data($pluginFile); $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null); if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } } $record = array(); $record['slug'] = $slug; $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown'); $record['vulnerable'] = false; $vulnerabilities[] = $record; unset($installedPlugins[$plugin]); } } } //Get the remaining plugins (not in the wordpress.org repo for whatever reason) foreach ($installedPlugins as $plugin => $data) { $pluginFile = wfUtils::getPluginBaseDir() . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled continue; } $data = get_plugin_data($pluginFile); $slug = null; if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } $record = array(); $record['slug'] = $slug; $record['fromVersion'] = (isset($data['Version']) ? $data['Version'] : 'Unknown'); $record['vulnerable'] = false; $vulnerabilities[] = $record; } if (count($vulnerabilities) > 0) { try { $result = $this->api->call('plugin_vulnerability_check', array(), array( 'plugins' => json_encode($vulnerabilities), )); foreach ($vulnerabilities as &$v) { $vulnerableList = $result['vulnerable']; foreach ($vulnerableList as $r) { if ($r['slug'] == $v['slug']) { $v['vulnerable'] = !!$r['vulnerable']; if (isset($r['link'])) { $v['link'] = $r['link']; } break; } } } } catch (Exception $e) { //Do nothing } wfConfig::set_ser('vulnerabilities_plugin', $vulnerabilities); } } public function checkThemeVulnerabilities() { if (!function_exists('wp_update_themes')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('plugins_api')) { require_once(ABSPATH . '/wp-admin/includes/plugin-install.php'); } $this->checkThemeUpdates(); $update_themes = get_site_transient('update_themes'); $vulnerabilities = array(); if ($update_themes && !empty($update_themes->response)) { if (!function_exists('get_plugin_data')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } foreach ($update_themes->response as $themeSlug => $vals) { $valsArray = (array) $vals; $theme = wp_get_theme($themeSlug); $record = array(); $record['slug'] = $themeSlug; $record['toVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown'); $record['fromVersion'] = $theme->version; $record['vulnerable'] = false; $vulnerabilities[] = $record; } try { $result = $this->api->call('theme_vulnerability_check', array(), array( 'themes' => json_encode($vulnerabilities), )); foreach ($vulnerabilities as &$v) { $vulnerableList = $result['vulnerable']; foreach ($vulnerableList as $r) { if ($r['slug'] == $v['slug']) { $v['vulnerable'] = !!$r['vulnerable']; break; } } } } catch (Exception $e) { //Do nothing } wfConfig::set_ser('vulnerabilities_theme', $vulnerabilities); } } public function isPluginVulnerable($slug, $version) { return $this->_isSlugVulnerable('vulnerabilities_plugin', $slug, $version); } public function isThemeVulnerable($slug, $version) { return $this->_isSlugVulnerable('vulnerabilities_theme', $slug, $version); } private function _isSlugVulnerable($vulnerabilitiesKey, $slug, $version) { $vulnerabilities = wfConfig::get_ser($vulnerabilitiesKey, array()); foreach ($vulnerabilities as $v) { if ($v['slug'] == $slug) { if ($v['fromVersion'] == 'Unknown' && $v['toVersion'] == 'Unknown') { if ($v['vulnerable'] && isset($v['link']) && is_string($v['link'])) { return $v['link']; } return $v['vulnerable']; } else if ((!isset($v['toVersion']) || $v['toVersion'] == 'Unknown') && version_compare($version, $v['fromVersion']) >= 0) { if ($v['vulnerable'] && isset($v['link']) && is_string($v['link'])) { return $v['link']; } return $v['vulnerable']; } else if ($v['fromVersion'] == 'Unknown' && isset($v['toVersion']) && version_compare($version, $v['toVersion']) < 0) { if ($v['vulnerable'] && isset($v['link']) && is_string($v['link'])) { return $v['link']; } return $v['vulnerable']; } else if (version_compare($version, $v['fromVersion']) >= 0 && isset($v['toVersion']) && version_compare($version, $v['toVersion']) < 0) { if ($v['vulnerable'] && isset($v['link']) && is_string($v['link'])) { return $v['link']; } return $v['vulnerable']; } } } return false; } /** * @return boolean */ public function needsCoreUpdate() { return $this->needs_core_update; } /** * @return int */ public function getCoreUpdateVersion() { return $this->core_update_version; } /** * @return array */ public function getPluginUpdates() { return $this->plugin_updates; } /** * @return array */ public function getAllPlugins() { return $this->all_plugins; } /** * @return array */ public function getPluginSlugs() { return $this->plugin_slugs; } /** * @return array */ public function getThemeUpdates() { return $this->theme_updates; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfView.php��������������������������������������������������������������������������������������0000644�����������������00000004335�15233113245�0007276 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfView { /** * @var string */ protected $view_path; /** * @var string */ protected $view_file_extension = '.php'; /** * @var string */ protected $view; /** * @var array */ protected $data; /** * @param string $view * @param array $data * @return wfView */ public static function create($view, $data = array()) { return new self($view, $data); } /** * @param string $view * @param array $data */ public function __construct($view, $data = array()) { $this->view_path = WORDFENCE_PATH . 'views'; $this->view = $view; $this->data = $data; } /** * @return string * @throws wfViewNotFoundException */ public function render() { $view = preg_replace('/\.{2,}/', '.', $this->view); $view_path = $this->view_path . '/' . $view . $this->view_file_extension; if (!file_exists($view_path)) { throw new wfViewNotFoundException(sprintf(/* translators: File path. */ __('The view %s does not exist or is not readable.', 'wordfence'), $view_path)); } extract($this->data, EXTR_SKIP); ob_start(); /** @noinspection PhpIncludeInspection */ include $view_path; return ob_get_clean(); } /** * @return string */ public function __toString() { try { return $this->render(); } catch (wfViewNotFoundException $e) { return defined('WP_DEBUG') && WP_DEBUG ? esc_html($e->getMessage()) : esc_html__('The view could not be loaded.', 'wordfence'); } } /** * @param $data * @return $this */ public function addData($data) { $this->data = array_merge($data, $this->data); return $this; } /** * @return array */ public function getData() { return $this->data; } /** * @param array $data * @return $this */ public function setData($data) { $this->data = $data; return $this; } /** * @return string */ public function getView() { return $this->view; } /** * @param string $view * @return $this */ public function setView($view) { $this->view = $view; return $this; } /** * Prevent POP */ public function __wakeup() { $this->view_path = WORDFENCE_PATH . 'views'; $this->view = null; $this->data = array(); $this->view_file_extension = '.php'; } } class wfViewNotFoundException extends Exception { }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfIPWhitelist.php�������������������������������������������������������������������������������0000644�����������������00000003074�15233113245�0010570 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php /** * Addresses should be in human readable format as a single IP (e.g. 1.2.3.4) or CIDR (e.g. 1.2.3.4/32) */ $wfIPWhitelist = array( 'private' => array( //We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting. //'0.0.0.0/8', #Broadcast addr '10.0.0.0/8', #Private addrs //'100.64.0.0/10', #carrier-grade-nat for comms between ISP and subscribers '127.0.0.0/8', #loopback //'169.254.0.0/16', #link-local when DHCP fails e.g. os x '172.16.0.0/12', #private addrs '192.0.0.0/29', #used for NAT with IPv6, so basically a private addr //'192.0.2.0/24', #Only for use in docs and examples, not for public use //'192.88.99.0/24', #Used by 6to4 anycast relays '192.168.0.0/16', #Used for local communications within a private network //'198.18.0.0/15', #Used for testing of inter-network communications between two separate subnets //'198.51.100.0/24', #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly. //'203.0.113.0/24', #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly. //'224.0.0.0/4', #Reserved for multicast assignments as specified in RFC 5771 //'240.0.0.0/4', #Reserved for future use, as specified by RFC 6890 //'255.255.255.255/32', #Reserved for the "limited broadcast" destination address, as specified by RFC 6890 ), 'wordfence' => array( '54.68.32.247', // Central @ AWS '44.235.211.232', '54.71.203.174' ), ); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfDB.php����������������������������������������������������������������������������������������0000644�����������������00000017272�15233113245�0006655 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfDB { public $errorMsg = false; public static function shared() { static $_shared = null; if ($_shared === null) { $_shared = new wfDB(); } return $_shared; } /** * Returns the table prefix for the main site on multisites and the site itself on single site installations. * * @return string */ public static function networkPrefix() { global $wpdb; return $wpdb->base_prefix; } /** * Returns the table with the site (single site installations) or network (multisite) prefix added. * * @param string $table * @param bool $applyCaseConversion Whether or not to convert the table case to what is actually in use. * @return string */ public static function networkTable($table, $applyCaseConversion = true) { if (wfSchema::usingLowercase() && $applyCaseConversion) { $table = strtolower($table); } return self::networkPrefix() . $table; } /** * Returns the table prefix for the given blog ID. On single site installations, this will be equivalent to wfDB::networkPrefix(). * * @param int $blogID * @return string */ public static function blogPrefix($blogID) { global $wpdb; return $wpdb->get_blog_prefix($blogID); } /** * Returns the table with the site (single site installations) or blog-specific (multisite) prefix added. * * @param string $table * @param bool $applyCaseConversion Whether or not to convert the table case to what is actually in use. * @return string */ public static function blogTable($table, $blogID, $applyCaseConversion = true) { if (wfSchema::usingLowercase() && $applyCaseConversion) { $table = strtolower($table); } return self::blogPrefix($blogID) . $table; } public function querySingle(){ global $wpdb; if(func_num_args() > 1){ $args = func_get_args(); return $wpdb->get_var(call_user_func_array(array($wpdb, 'prepare'), $args)); } else { return $wpdb->get_var(func_get_arg(0)); } } public function querySingleRec(){ //queryInSprintfFormat, arg1, arg2, ... :: Returns a single assoc-array or null if nothing found. global $wpdb; if(func_num_args() > 1){ $args = func_get_args(); return $wpdb->get_row(call_user_func_array(array($wpdb, 'prepare'), $args), ARRAY_A); } else { return $wpdb->get_row(func_get_arg(0), ARRAY_A); } } public function queryWrite(){ global $wpdb; if(func_num_args() > 1){ $args = func_get_args(); return $wpdb->query(call_user_func_array(array($wpdb, 'prepare'), $args)); } else { return $wpdb->query(func_get_arg(0)); } } public function flush(){ //Clear cache global $wpdb; $wpdb->flush(); } public function querySelect(){ //sprintfString, arguments :: always returns array() and will be empty if no results. global $wpdb; if(func_num_args() > 1){ $args = func_get_args(); return $wpdb->get_results(call_user_func_array(array($wpdb, 'prepare'), $args), ARRAY_A); } else { return $wpdb->get_results(func_get_arg(0), ARRAY_A); } } public function queryWriteIgnoreError(){ //sprintfString, arguments global $wpdb; $oldSuppress = $wpdb->suppress_errors(true); $args = func_get_args(); call_user_func_array(array($this, 'queryWrite'), $args); $wpdb->suppress_errors($oldSuppress); } public function columnExists($table, $col){ $table = wfDB::networkTable($table); $q = $this->querySelect("desc $table"); foreach($q as $row){ if($row['Field'] == $col){ return true; } } return false; } public function dropColumn($table, $col){ $table = wfDB::networkTable($table); $this->queryWrite("alter table $table drop column $col"); } public function createKeyIfNotExists($table, $col, $keyName){ $table = wfDB::networkTable($table); $exists = $this->querySingle(<<<SQL SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='%s' SQL , $table); $keyFound = false; if($exists){ $q = $this->querySelect("show keys from $table"); foreach($q as $row){ if($row['Key_name'] == $keyName){ $keyFound = true; } } } if(! $keyFound){ $this->queryWrite("alter table $table add KEY $keyName($col)"); } } public function getMaxAllowedPacketBytes(){ $rec = $this->querySingleRec("show variables like 'max_allowed_packet'"); return intval($rec['Value']); } public function getMaxLongDataSizeBytes() { $rec = $this->querySingleRec("show variables like 'max_long_data_size'"); return $rec['Value']; } public function truncate($table){ //Ensures everything is deleted if user is using MySQL >= 5.1.16 and does not have "drop" privileges $this->queryWrite("truncate table $table"); $this->queryWrite("delete from $table"); } public function getLastError(){ global $wpdb; return $wpdb->last_error; } public function realEscape($str){ global $wpdb; return $wpdb->_real_escape($str); } } abstract class wfModel { private $data; private $db; private $dirty = false; /** * Column name of the primary key field. * * @return string */ abstract public function getIDColumn(); /** * Table name. * * @return mixed */ abstract public function getTable(); /** * Checks if this is a valid column in the table before setting data on the model. * * @param string $column * @return boolean */ abstract public function hasColumn($column); /** * wfModel constructor. * @param array|int|string $data */ public function __construct($data = array()) { if (is_array($data) || is_object($data)) { $this->setData($data); } else if (is_numeric($data)) { $this->fetchByID($data); } } public function fetchByID($id) { $id = absint($id); $data = $this->getDB()->get_row($this->getDB()->prepare('SELECT * FROM ' . $this->getTable() . ' WHERE ' . $this->getIDColumn() . ' = %d', $id)); if ($data) { $this->setData($data); return true; } return false; } /** * @return bool */ public function save() { if (!$this->dirty) { return false; } $this->dirty = ($this->getPrimaryKey() ? $this->update() : $this->insert()) === false; return !$this->dirty; } /** * @return false|int */ public function insert() { $data = $this->getData(); unset($data[$this->getPrimaryKey()]); $rowsAffected = $this->getDB()->insert($this->getTable(), $data); $this->setPrimaryKey($this->getDB()->insert_id); return $rowsAffected; } /** * @return false|int */ public function update() { return $this->getDB()->update($this->getTable(), $this->getData(), array( $this->getIDColumn() => $this->getPrimaryKey(), )); } /** * @param $name string * @return mixed */ public function __get($name) { if (!$this->hasColumn($name)) { return null; } return array_key_exists($name, $this->data) ? $this->data[$name] : null; } /** * @param $name string * @param $value mixed */ public function __set($name, $value) { if (!$this->hasColumn($name)) { return; } $this->data[$name] = $value; $this->dirty = true; } /** * @return array */ public function getData() { return $this->data; } /** * @param array $data * @param bool $flagDirty */ public function setData($data, $flagDirty = true) { $this->data = array(); foreach ($data as $column => $value) { if ($this->hasColumn($column)) { $this->data[$column] = $value; $this->dirty = (bool) $flagDirty; } } } /** * @return wpdb */ public function getDB() { if ($this->db === null) { global $wpdb; $this->db = $wpdb; } return $this->db; } /** * @param wpdb $db */ public function setDB($db) { $this->db = $db; } /** * @return int */ public function getPrimaryKey() { return $this->{$this->getIDColumn()}; } /** * @param int $value */ public function setPrimaryKey($value) { $this->{$this->getIDColumn()} = $value; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/flags.php���������������������������������������������������������������������������������������0000644�����������������00000015173�15233113245�0007125 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php $flags = array ( '__' => '-0px -0px', 'ad' => '-16px -0px', 'ae' => '-32px -0px', 'af' => '-48px -0px', 'ag' => '-64px -0px', 'ai' => '-80px -0px', 'al' => '-96px -0px', 'am' => '-112px -0px', 'an' => '-128px -0px', 'ao' => '-144px -0px', 'ap' => '-160px -0px', 'aq' => '-176px -0px', 'ar' => '-0px -11px', 'as' => '-16px -11px', 'at' => '-32px -11px', 'au' => '-48px -11px', 'aw' => '-64px -11px', 'ax' => '-80px -11px', 'az' => '-96px -11px', 'ba' => '-112px -11px', 'bb' => '-128px -11px', 'bd' => '-144px -11px', 'be' => '-160px -11px', 'bf' => '-176px -11px', 'bg' => '-0px -22px', 'bh' => '-16px -22px', 'bi' => '-32px -22px', 'bj' => '-48px -22px', 'bl' => '-64px -22px', 'bm' => '-80px -22px', 'bn' => '-96px -22px', 'bo' => '-112px -22px', 'bq' => '-128px -22px', 'br' => '-144px -22px', 'bs' => '-160px -22px', 'bt' => '-176px -22px', 'bv' => '-0px -33px', 'bw' => '-16px -33px', 'by' => '-32px -33px', 'bz' => '-48px -33px', 'ca' => '-64px -33px', 'cc' => '-80px -33px', 'cd' => '-96px -33px', 'cf' => '-112px -33px', 'cg' => '-128px -33px', 'ch' => '-144px -33px', 'ci' => '-160px -33px', 'ck' => '-176px -33px', 'cl' => '-0px -44px', 'cm' => '-16px -44px', 'cn' => '-32px -44px', 'co' => '-48px -44px', 'cr' => '-64px -44px', 'cs' => '-80px -44px', 'cu' => '-96px -44px', 'cv' => '-112px -44px', 'cw' => '-128px -44px', 'cx' => '-144px -44px', 'cy' => '-160px -44px', 'cz' => '-176px -44px', 'de' => '-0px -55px', 'dj' => '-16px -55px', 'dk' => '-32px -55px', 'dm' => '-48px -55px', 'do' => '-64px -55px', 'dz' => '-80px -55px', 'ec' => '-96px -55px', 'ee' => '-112px -55px', 'eg' => '-128px -55px', 'eh' => '-144px -55px', 'england' => '-160px -55px', 'er' => '-176px -55px', 'es' => '-0px -66px', 'et' => '-16px -66px', 'eu' => '-32px -66px', 'fam' => '-48px -66px', 'fi' => '-64px -66px', 'fj' => '-80px -66px', 'fk' => '-96px -66px', 'fm' => '-112px -66px', 'fo' => '-128px -66px', 'fr' => '-144px -66px', 'ga' => '-160px -66px', 'gb' => '-176px -66px', 'gd' => '-0px -77px', 'ge' => '-16px -77px', 'gf' => '-32px -77px', 'gg' => '-48px -77px', 'gh' => '-64px -77px', 'gi' => '-80px -77px', 'gl' => '-96px -77px', 'gm' => '-112px -77px', 'gn' => '-128px -77px', 'gp' => '-144px -77px', 'gq' => '-160px -77px', 'gr' => '-176px -77px', 'gs' => '-0px -88px', 'gt' => '-16px -88px', 'gu' => '-32px -88px', 'gw' => '-48px -88px', 'gy' => '-64px -88px', 'hk' => '-80px -88px', 'hm' => '-96px -88px', 'hn' => '-112px -88px', 'hr' => '-128px -88px', 'ht' => '-144px -88px', 'hu' => '-160px -88px', 'id' => '-176px -88px', 'ie' => '-0px -99px', 'il' => '-16px -99px', 'im' => '-32px -99px', 'in' => '-48px -99px', 'io' => '-64px -99px', 'iq' => '-80px -99px', 'ir' => '-96px -99px', 'is' => '-112px -99px', 'it' => '-128px -99px', 'je' => '-144px -99px', 'jm' => '-160px -99px', 'jo' => '-176px -99px', 'jp' => '-0px -110px', 'ke' => '-16px -110px', 'kg' => '-32px -110px', 'kh' => '-48px -110px', 'ki' => '-64px -110px', 'km' => '-80px -110px', 'kn' => '-96px -110px', 'kp' => '-112px -110px', 'kr' => '-128px -110px', 'kw' => '-144px -110px', 'ky' => '-160px -110px', 'kz' => '-176px -110px', 'la' => '-0px -121px', 'lb' => '-16px -121px', 'lc' => '-32px -121px', 'li' => '-48px -121px', 'lk' => '-64px -121px', 'lr' => '-80px -121px', 'ls' => '-96px -121px', 'lt' => '-112px -121px', 'lu' => '-128px -121px', 'lv' => '-144px -121px', 'ly' => '-160px -121px', 'ma' => '-176px -121px', 'mc' => '-0px -132px', 'md' => '-16px -132px', 'me' => '-32px -132px', 'mf' => '-48px -132px', 'mg' => '-64px -132px', 'mh' => '-80px -132px', 'mk' => '-96px -132px', 'ml' => '-112px -132px', 'mm' => '-128px -132px', 'mn' => '-144px -132px', 'mo' => '-160px -132px', 'mp' => '-176px -132px', 'mq' => '-0px -143px', 'mr' => '-16px -143px', 'ms' => '-32px -143px', 'mt' => '-48px -143px', 'mu' => '-64px -143px', 'mv' => '-80px -143px', 'mw' => '-96px -143px', 'mx' => '-112px -143px', 'my' => '-128px -143px', 'mz' => '-144px -143px', 'na' => '-160px -143px', 'nc' => '-176px -143px', 'ne' => '-0px -154px', 'nf' => '-16px -154px', 'ng' => '-32px -154px', 'ni' => '-48px -154px', 'nl' => '-64px -154px', 'no' => '-80px -154px', 'np' => '-96px -154px', 'nr' => '-112px -154px', 'nu' => '-128px -154px', 'nz' => '-144px -154px', 'om' => '-160px -154px', 'pa' => '-176px -154px', 'pe' => '-0px -165px', 'pf' => '-16px -165px', 'pg' => '-32px -165px', 'ph' => '-48px -165px', 'pk' => '-64px -165px', 'pl' => '-80px -165px', 'pm' => '-96px -165px', 'pn' => '-112px -165px', 'pr' => '-128px -165px', 'ps' => '-144px -165px', 'pt' => '-160px -165px', 'pw' => '-176px -165px', 'py' => '-0px -176px', 'qa' => '-16px -176px', 're' => '-32px -176px', 'ro' => '-48px -176px', 'rs' => '-64px -176px', 'ru' => '-80px -176px', 'rw' => '-96px -176px', 'sa' => '-112px -176px', 'sb' => '-128px -176px', 'sc' => '-144px -176px', 'scotland' => '-160px -176px', 'sd' => '-176px -176px', 'se' => '-0px -187px', 'sg' => '-16px -187px', 'sh' => '-32px -187px', 'si' => '-48px -187px', 'sj' => '-64px -187px', 'sk' => '-80px -187px', 'sl' => '-96px -187px', 'sm' => '-112px -187px', 'sn' => '-128px -187px', 'so' => '-144px -187px', 'sr' => '-160px -187px', 'ss' => '-176px -187px', 'st' => '-0px -198px', 'sv' => '-16px -198px', 'sx' => '-32px -198px', 'sy' => '-48px -198px', 'sz' => '-64px -198px', 'tc' => '-80px -198px', 'td' => '-96px -198px', 'tf' => '-112px -198px', 'tg' => '-128px -198px', 'th' => '-144px -198px', 'tj' => '-160px -198px', 'tk' => '-176px -198px', 'tl' => '-0px -209px', 'tm' => '-16px -209px', 'tn' => '-32px -209px', 'to' => '-48px -209px', 'tr' => '-64px -209px', 'tt' => '-80px -209px', 'tv' => '-96px -209px', 'tw' => '-112px -209px', 'tz' => '-128px -209px', 'ua' => '-144px -209px', 'ug' => '-160px -209px', 'uk' => '-176px -209px', 'um' => '-0px -220px', 'un' => '-16px -220px', 'us' => '-32px -220px', 'uy' => '-48px -220px', 'uz' => '-64px -220px', 'va' => '-80px -220px', 'vc' => '-96px -220px', 've' => '-112px -220px', 'vg' => '-128px -220px', 'vi' => '-144px -220px', 'vn' => '-160px -220px', 'vu' => '-176px -220px', 'wales' => '-0px -231px', 'wf' => '-16px -231px', 'ws' => '-32px -231px', 'xk' => '-48px -231px', 'ye' => '-64px -231px', 'yt' => '-80px -231px', 'za' => '-96px -231px', 'zm' => '-112px -231px', 'zw' => '-128px -231px', );�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wordfenceClass.php������������������������������������������������������������������������������0000644�����������������00001467724�15233113245�0011011 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wordfenceConstants.php'); require_once(dirname(__FILE__) . '/wfScanEngine.php'); require_once(dirname(__FILE__) . '/wfScan.php'); require_once(dirname(__FILE__) . '/wfCrawl.php'); require_once(dirname(__FILE__) . '/Diff.php'); require_once(dirname(__FILE__) . '/Diff/Renderer/Html/SideBySide.php'); require_once(dirname(__FILE__) . '/wfAPI.php'); require_once(dirname(__FILE__) . '/wfIssues.php'); require_once(dirname(__FILE__) . '/wfDB.php'); require_once(dirname(__FILE__) . '/wfUtils.php'); require_once(dirname(__FILE__) . '/wfLog.php'); require_once(dirname(__FILE__) . '/wfConfig.php'); require_once(dirname(__FILE__) . '/wfSchema.php'); require_once(dirname(__FILE__) . '/wfCache.php'); require_once(dirname(__FILE__) . '/wfCrypt.php'); require_once(dirname(__FILE__) . '/wfMD5BloomFilter.php'); require_once(dirname(__FILE__) . '/wfView.php'); require_once(dirname(__FILE__) . '/wfHelperString.php'); require_once(dirname(__FILE__) . '/wfDirectoryIterator.php'); require_once(dirname(__FILE__) . '/wfUpdateCheck.php'); require_once(dirname(__FILE__) . '/wfActivityReport.php'); require_once(dirname(__FILE__) . '/wfHelperBin.php'); require_once(dirname(__FILE__) . '/wfDiagnostic.php'); require_once(dirname(__FILE__) . '/wfStyle.php'); require_once(dirname(__FILE__) . '/wfDashboard.php'); require_once(dirname(__FILE__) . '/wfNotification.php'); require_once(dirname(__FILE__) . '/../models/page/wfPage.php'); require_once(dirname(__FILE__) . '/../models/common/wfTab.php'); require_once(dirname(__FILE__) . '/../models/block/wfBlock.php'); require_once(dirname(__FILE__) . '/../models/block/wfRateLimit.php'); require_once(dirname(__FILE__) . '/../models/firewall/wfFirewall.php'); require_once(dirname(__FILE__) . '/../models/scanner/wfScanner.php'); require_once(dirname(__FILE__) . '/wfPersistenceController.php'); require_once(dirname(__FILE__) . '/wfImportExportController.php'); require_once(dirname(__FILE__) . '/wfOnboardingController.php'); require_once(dirname(__FILE__) . '/wfSupportController.php'); require_once(dirname(__FILE__) . '/wfCredentialsController.php'); require_once(dirname(__FILE__) . '/wfVersionCheckController.php'); require_once(dirname(__FILE__) . '/wfDateLocalization.php'); require_once(dirname(__FILE__) . '/wfAdminNoticeQueue.php'); require_once(dirname(__FILE__) . '/wfModuleController.php'); require_once(dirname(__FILE__) . '/wfAlerts.php'); if (version_compare(phpversion(), '5.3', '>=')) { require_once(dirname(__FILE__) . '/WFLSPHP52Compatability.php'); define('WORDFENCE_USE_LEGACY_2FA', wfCredentialsController::useLegacy2FA()); $wfCoreLoading = true; require(dirname(__FILE__) . '/../modules/login-security/wordfence-login-security.php'); } require_once(dirname(__FILE__) . '/wfJWT.php'); require_once(dirname(__FILE__) . '/wfCentralAPI.php'); if (class_exists('WP_REST_Users_Controller')) { //WP 4.7+ require_once(dirname(__FILE__) . '/wfRESTAPI.php'); } if (wfCentral::isSupported()) { //WP 4.4.0+ require_once(dirname(__FILE__) . '/rest-api/wfRESTAuthenticationController.php'); require_once(dirname(__FILE__) . '/rest-api/wfRESTConfigController.php'); require_once(dirname(__FILE__) . '/rest-api/wfRESTScanController.php'); } class wordfence { public static $printStatus = false; public static $wordfence_wp_version = false; /** * @var WP_Error */ public static $authError; private static $passwordCodePattern = '/\s+wf([a-z0-9 ]+)$/i'; protected static $lastURLError = false; protected static $curlContent = ""; protected static $curlDataWritten = 0; protected static $hasher = ''; protected static $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; protected static $ignoreList = false; private static $wfLog = false; private static $hitID = 0; private static $debugOn = null; private static $runInstallCalled = false; public static function installPlugin(){ self::runInstall(); if (get_current_user_id() > 0) { wfConfig::set('activatingIP', wfUtils::getIP()); } //Used by MU code below update_option('wordfenceActivated', 1); if (defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE) { WFLSPHP52Compatability::install_plugin(); } } public static function uninstallPlugin(){ //Send admin alert $currentUser = wp_get_current_user(); $username = $currentUser->user_login; $alertCallback = array(new wfWordfenceDeactivatedAlert($username, wfUtils::getIP()), 'send'); do_action('wordfence_security_event', 'wordfenceDeactivated', array( 'username' => $username, 'ip' => wfUtils::getIP(), ), $alertCallback); //Check if caching is enabled and if it is, disable it and fix the .htaccess file. wfCache::removeCaching(); //Used by MU code below update_option('wordfenceActivated', 0); wp_clear_scheduled_hook('wordfence_daily_cron'); wp_clear_scheduled_hook('wordfence_hourly_cron'); wp_clear_scheduled_hook('wordfence_daily_autoUpdate'); //Remove old legacy cron job if it exists wp_clear_scheduled_hook('wordfence_scheduled_scan'); //Remove all scheduled scans. wfScanner::shared()->unscheduleAllScans(); // Remove cron for email summary wfActivityReport::clearCronJobs(); // Remove the admin user list so it can be regenerated if Wordfence is reactivated. wfConfig::set_ser('adminUserList', false); if (!WFWAF_SUBDIRECTORY_INSTALL) { wfWAFConfig::set('wafDisabled', true); } if(wfConfig::get('deleteTablesOnDeact')){ if (wfCentral::isSupported() && wfCentral::isConnected()) { self::ajax_wfcentral_disconnect_callback(); } wfConfig::updateTableExists(false); $schema = new wfSchema(); $schema->dropAll(); foreach(array('wordfence_version', 'wordfenceActivated', wfSchema::TABLE_CASE_OPTION) as $opt) { if (is_multisite() && function_exists('delete_network_option')) { delete_network_option(null, $opt); } delete_option($opt); } if (!WFWAF_SUBDIRECTORY_INSTALL) { try { if (WFWAF_AUTO_PREPEND) { $helper = new wfWAFAutoPrependHelper(); if ($helper->uninstall()) { wfWAF::getInstance()->uninstall(); } } else { wfWAF::getInstance()->uninstall(); } } catch (wfWAFStorageFileException $e) { error_log($e->getMessage()); } catch (wfWAFStorageEngineMySQLiException $e) { error_log($e->getMessage()); } } } if (defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE) { WFLSPHP52Compatability::uninstall_plugin(); } } public static function hourlyCron() { wfLog::trimHumanCache(); wfRateLimit::trimData(); wfVersionCheckController::shared()->checkVersionsAndWarn(); } private static function keyAlert($msg){ self::alert($msg, $msg . " " . __("To ensure uninterrupted Premium Wordfence protection on your site,\nplease renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\nselect the license about to expire and click the button to renew that license.", 'wordfence'), false); } public static function dailyCron() { $lastDailyCron = (int) wfConfig::get('lastDailyCron', 0); if (($lastDailyCron + 43200) > time()) { //Run no more frequently than every 12 hours return; } wfConfig::set('lastDailyCron', time()); global $wpdb; $version = $wpdb->get_var("SELECT VERSION()"); wfConfig::set('dbVersion', $version); $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $keyType = wfAPI::KEY_TYPE_FREE; $keyData = $api->call('ping_api_key', array(), array('supportHash' => wfConfig::get('supportHash', ''), 'whitelistHash' => wfConfig::get('whitelistHash', ''), 'tldlistHash' => wfConfig::get('tldlistHash', ''))); if (isset($keyData['_isPaidKey'])) { $keyType = wfConfig::get('keyType'); } if(isset($keyData['_isPaidKey']) && $keyData['_isPaidKey']){ $keyExpDays = $keyData['_keyExpDays']; $keyIsExpired = $keyData['_expired']; if (!empty($keyData['_autoRenew'])) { if ($keyExpDays > 12) { wfConfig::set('keyAutoRenew10Sent', ''); } else if ($keyExpDays <= 12 && $keyExpDays > 0 && !wfConfig::get('keyAutoRenew10Sent')) { wfConfig::set('keyAutoRenew10Sent', 1); $email = __("Your Premium Wordfence License is set to auto-renew in 10 days.", 'wordfence'); self::alert($email, $email . " " . __("To update your license settings please visit http://www.wordfence.com/zz9/dashboard", 'wordfence'), false); } } else { if($keyExpDays > 15){ wfConfig::set('keyExp15Sent', ''); wfConfig::set('keyExp7Sent', ''); wfConfig::set('keyExp2Sent', ''); wfConfig::set('keyExp1Sent', ''); wfConfig::set('keyExpFinalSent', ''); } else if($keyExpDays <= 15 && $keyExpDays > 0){ if($keyExpDays <= 15 && $keyExpDays >= 11 && (! wfConfig::get('keyExp15Sent'))){ wfConfig::set('keyExp15Sent', 1); self::keyAlert(__("Your Premium Wordfence License expires in less than 2 weeks.", 'wordfence')); } else if($keyExpDays <= 7 && $keyExpDays >= 4 && (! wfConfig::get('keyExp7Sent'))){ wfConfig::set('keyExp7Sent', 1); self::keyAlert(__("Your Premium Wordfence License expires in less than a week.", 'wordfence')); } else if($keyExpDays == 2 && (! wfConfig::get('keyExp2Sent'))){ wfConfig::set('keyExp2Sent', 1); self::keyAlert(__("Your Premium Wordfence License expires in 2 days.", 'wordfence')); } else if($keyExpDays == 1 && (! wfConfig::get('keyExp1Sent'))){ wfConfig::set('keyExp1Sent', 1); self::keyAlert(__("Your Premium Wordfence License expires in 1 day.", 'wordfence')); } } else if($keyIsExpired && (! wfConfig::get('keyExpFinalSent')) ){ wfConfig::set('keyExpFinalSent', 1); self::keyAlert(__("Your Wordfence Premium License has Expired!", 'wordfence')); } } } if (isset($keyData['dashboard'])) { wfConfig::set('lastDashboardCheck', time()); wfDashboard::processDashboardResponse($keyData['dashboard']); } if (isset($keyData['support']) && isset($keyData['supportHash'])) { wfConfig::set('supportContent', $keyData['support']); wfConfig::set('supportHash', $keyData['supportHash']); } if (isset($keyData['_whitelist']) && isset($keyData['_whitelistHash'])) { wfConfig::setJSON('whitelistPresets', $keyData['_whitelist']); wfConfig::set('whitelistHash', $keyData['_whitelistHash']); } if (isset($keyData['_tldlist']) && isset($keyData['_tldlistHash'])) { wfConfig::set('tldlist', $keyData['_tldlist']); wfConfig::set('tldlistHash', $keyData['_tldlistHash']); } if (isset($keyData['scanSchedule']) && is_array($keyData['scanSchedule'])) { wfConfig::set_ser('noc1ScanSchedule', $keyData['scanSchedule']); if (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC) { wfScanner::shared()->scheduleScans(); } } if (isset($keyData['showWfCentralUI'])) { wfConfig::set('showWfCentralUI', (int) $keyData['showWfCentralUI']); } if (isset($keyData['_keyNoLongerValid']) && $keyData['_keyNoLongerValid'] == 1) { self::alert(__("The Wordfence Premium License in use on this site has been removed from your account.", 'wordfence'), __("The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help.", 'wordfence'), false); } wfConfig::set('keyType', $keyType); } catch(Exception $e){ wordfence::status(4, 'error', sprintf(/* translators: Wordfence license key. */ __("Could not verify Wordfence License: %s", 'wordfence'), $e->getMessage())); } $allowMySQLi = wfConfig::testDB(); wfConfig::set('allowMySQLi', $allowMySQLi); $wfdb = new wfDB(); $table_wfLocs = wfDB::networkTable('wfLocs'); $wfdb->queryWrite("delete from {$table_wfLocs} where ctime < unix_timestamp() - %d", WORDFENCE_MAX_IPLOC_AGE); wfBlock::vacuum(); $table_wfCrawlers = wfDB::networkTable('wfCrawlers'); $wfdb->queryWrite("delete from {$table_wfCrawlers} where lastUpdate < unix_timestamp() - (86400 * 7)"); self::trimWfHits(); $maxRows = absint(wfConfig::get('liveTraf_maxRows', 2000));; //affects stuff further down too $table_wfLogins = wfDB::networkTable('wfLogins'); $count2 = $wfdb->querySingle("select count(*) as cnt from {$table_wfLogins}"); if($count2 > 20000){ $wfdb->truncate($table_wfLogins); //in case of Dos } else if($count2 > $maxRows){ $wfdb->queryWrite("delete from {$table_wfLogins} order by ctime asc limit %d", ($count2 - $maxRows)); } $table_wfReverseCache = wfDB::networkTable('wfReverseCache'); $wfdb->queryWrite("delete from {$table_wfReverseCache} where unix_timestamp() - lastUpdate > 86400"); $table_wfStatus = wfDB::networkTable('wfStatus'); $count4 = $wfdb->querySingle("select count(*) as cnt from {$table_wfStatus}"); if($count4 > 100000){ $wfdb->truncate($table_wfStatus); } else if($count4 > 1000){ //max status events we keep. This determines how much gets emailed to us when users sends us a debug report. $wfdb->queryWrite("delete from {$table_wfStatus} where level != 10 order by ctime asc limit %d", ($count4 - 1000)); $count5 = $wfdb->querySingle("select count(*) as cnt from {$table_wfStatus} where level=10"); if($count5 > 100){ $wfdb->queryWrite("delete from {$table_wfStatus} where level = 10 order by ctime asc limit %d", ($count5 - 100) ); } } self::_refreshVulnerabilityCache(); $report = new wfActivityReport(); $report->rotateIPLog(); self::_refreshUpdateNotification($report, true); $next = self::getNextScanStartTimestamp(); if ($next - time() > 3600 && wfConfig::get('scheduledScansEnabled')) { wfScanEngine::startScan(false, wfScanner::SCAN_TYPE_QUICK); } wfUpdateCheck::syncAllVersionInfo(); wfConfig::remove('lastPermissionsTemplateCheck'); } public static function _scheduleRefreshUpdateNotification($upgrader = null, $options = null) { $defer = false; if (is_array($options) && isset($options['type']) && $options['type'] == 'core') { $defer = true; set_site_transient('wordfence_updating_notifications', true, 600); } if ($defer) { wp_schedule_single_event(time(), 'wordfence_refreshUpdateNotification'); } else { self::_refreshUpdateNotification(); } } public static function _refreshUpdateNotification($report = null, $useCachedValued = false) { if ($report === null) { $report = new wfActivityReport(); } $updatesNeeded = $report->getUpdatesNeeded($useCachedValued); if ($updatesNeeded) { $items = array(); $plural = false; if ($updatesNeeded['core']) { $items[] = sprintf(/* translators: WordPress version. */ __('WordPress (v%s)', 'wordfence'), esc_html($updatesNeeded['core'])); } if ($updatesNeeded['plugins']) { $entry = sprintf(/* translators: Number of plugins. */ _n('%d plugin', '%d plugins', count($updatesNeeded['plugins']), 'wordfence'), count($updatesNeeded['plugins'])); $items[] = $entry; } if ($updatesNeeded['themes']) { $entry = sprintf(/* translators: Number of themes. */ _n('%d theme', '%d themes', count($updatesNeeded['themes']), 'wordfence'), count($updatesNeeded['themes'])); $items[] = $entry; } $message = _n('An update is available for ', 'Updates are available for ', count($items), 'wordfence'); for ($i = 0; $i < count($items); $i++) { if ($i > 0 && count($items) > 2) { $message .= ', '; } else if ($i > 0) { $message .= ' '; } if ($i > 0 && $i == count($items) - 1) { $message .= __('and ', 'wordfence'); } $message .= $items[$i]; } new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('update-core.php') . '">' . $message . '</a>', 'wfplugin_updates'); } else { $n = wfNotification::getNotificationForCategory('wfplugin_updates'); if ($n !== null) { $n->markAsRead(); } } $i = new wfIssues(); $i->reconcileUpgradeIssues($report, true); wp_schedule_single_event(time(), 'wordfence_completeCoreUpdateNotification'); } public static function _completeCoreUpdateNotification() { //This approach is here because WP Core updates run in a different sequence than plugin/theme updates, so we have to defer the running of the notification update sequence by an extra page load delete_site_transient('wordfence_updating_notifications'); wfVersionCheckController::shared()->checkVersionsAndWarn(); } public static function runInstall(){ if(self::$runInstallCalled){ return; } self::$runInstallCalled = true; if (function_exists('ignore_user_abort')) { @ignore_user_abort(true); } if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $previous_version = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, 'wordfence_version', '0.0.0') : get_option('wordfence_version', '0.0.0')); if (is_multisite() && function_exists('update_network_option')) { update_network_option(null, 'wordfence_version', WORDFENCE_VERSION); //In case we have a fatal error we don't want to keep running install. } else { update_option('wordfence_version', WORDFENCE_VERSION); //In case we have a fatal error we don't want to keep running install. } wordfence::status(4, 'info', sprintf(/* translators: Wordfence version. */ __('`runInstall` called with previous version = %s', 'wordfence'), $previous_version)); //EVERYTHING HERE MUST BE IDEMPOTENT //Remove old legacy cron job if exists wp_clear_scheduled_hook('wordfence_scheduled_scan'); wfSchema::updateTableCase(); $schema = new wfSchema(); $schema->createAll(); //if not exists wfConfig::updateTableExists(true); /** @var wpdb $wpdb */ global $wpdb; //6.1.15 $configTable = wfDB::networkTable('wfConfig'); $hasAutoload = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='autoload' AND TABLE_NAME=%s SQL , $configTable)); if (!$hasAutoload) { $wpdb->query("ALTER TABLE {$configTable} ADD COLUMN autoload ENUM('no', 'yes') NOT NULL DEFAULT 'yes'"); $wpdb->query("UPDATE {$configTable} SET autoload = 'no' WHERE name = 'wfsd_engine' OR name LIKE 'wordfence_chunked_%'"); } $wpdb->query("DELETE FROM $configTable WHERE `name` = 'emailedIssuesList' AND LENGTH(`val`) > 2 * 1024 * 1024"); wfConfig::setDefaults(); //If not set $restOfSite = wfConfig::get('cbl_restOfSiteBlocked', 'notset'); if($restOfSite == 'notset'){ wfConfig::set('cbl_restOfSiteBlocked', '1'); } if(wfConfig::get('autoUpdate') == '1'){ wfConfig::enableAutoUpdate(); //Sets up the cron } $freshAPIKey = false; if(! wfConfig::get('apiKey')){ $api = new wfAPI('', wfUtils::getWPVersion()); try { $keyData = $api->call('get_anon_api_key'); if($keyData['ok'] && $keyData['apiKey']){ wfConfig::set('apiKey', $keyData['apiKey']); wfConfig::set('keyType', wfAPI::KEY_TYPE_FREE); wfConfig::set('touppPromptNeeded', true); $freshAPIKey = true; } else { throw new Exception(__("Could not understand the response we received from the Wordfence servers when applying for a free license key.", 'wordfence')); } } catch(Exception $e){ error_log("Could not fetch free license key from Wordfence: " . $e->getMessage()); return; } } wp_clear_scheduled_hook('wordfence_daily_cron'); wp_clear_scheduled_hook('wordfence_hourly_cron'); if (is_main_site()) { wfConfig::remove('lastDailyCron'); wp_schedule_event(time() + 15, 'daily', 'wordfence_daily_cron'); //'daily' wp_schedule_event(time() + 15, 'hourly', 'wordfence_hourly_cron'); } $db = new wfDB(); // IPv6 schema changes for 6.0.1 $tables_with_ips = array( 'wfCrawlers', 'wfBadLeechers', 'wfBlockedIPLog', 'wfBlocks', //Removed in 7.0.1 but left in in case migrating from really old 'wfHits', 'wfLocs', 'wfLogins', 'wfReverseCache', ); foreach ($tables_with_ips as $ip_table) { $ptable = wfDB::networkTable($ip_table); $tableExists = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s SQL , $ptable)); if (!$tableExists) { continue; } $result = $wpdb->get_row("SHOW FIELDS FROM {$ptable} where field = 'IP'"); if (!$result || strtolower($result->Type) == 'binary(16)') { continue; } $db->queryWriteIgnoreError("ALTER TABLE {$ptable} MODIFY IP BINARY(16)"); // Just to be sure we don't corrupt the data if the alter fails. $result = $wpdb->get_row("SHOW FIELDS FROM {$ptable} where field = 'IP'"); if (!$result || strtolower($result->Type) != 'binary(16)') { continue; } $db->queryWriteIgnoreError("UPDATE {$ptable} SET IP = CONCAT(LPAD(CHAR(0xff, 0xff), 12, CHAR(0)), LPAD( CHAR( CAST(IP as UNSIGNED) >> 24 & 0xFF, CAST(IP as UNSIGNED) >> 16 & 0xFF, CAST(IP as UNSIGNED) >> 8 & 0xFF, CAST(IP as UNSIGNED) & 0xFF ), 4, CHAR(0) ))"); } //Country reassignment moved to the GeoIP file sync segment if (wfConfig::get('other_hideWPVersion')) { wfUtils::hideReadme(); } $colsFor610 = array( 'attackLogTime' => '`attackLogTime` double(17,6) unsigned NOT NULL AFTER `id`', 'statusCode' => '`statusCode` int(11) NOT NULL DEFAULT 0 AFTER `jsRun`', 'action' => "`action` varchar(64) NOT NULL DEFAULT '' AFTER `UA`", 'actionDescription' => '`actionDescription` text AFTER `action`', 'actionData' => '`actionData` text AFTER `actionDescription`', ); $hitTable = wfDB::networkTable('wfHits'); foreach ($colsFor610 as $col => $colDefintion) { $count = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME=%s AND TABLE_NAME=%s SQL , $col, $hitTable)); if (!$count) { $wpdb->query("ALTER TABLE $hitTable ADD COLUMN $colDefintion"); } } $has404 = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='is404' AND TABLE_NAME=%s SQL , $hitTable)); if ($has404) { $wpdb->query(<<<SQL UPDATE $hitTable SET statusCode= CASE WHEN is404=1 THEN 404 ELSE 200 END SQL ); $wpdb->query("ALTER TABLE $hitTable DROP COLUMN `is404`"); } $loginsTable = wfDB::networkTable('wfLogins'); $hasHitID = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='hitID' AND TABLE_NAME=%s SQL , $loginsTable)); if (!$hasHitID) { $wpdb->query("ALTER TABLE $loginsTable ADD COLUMN hitID int(11) DEFAULT NULL AFTER `id`, ADD INDEX(hitID)"); } if (!WFWAF_SUBDIRECTORY_INSTALL) { wfWAFConfig::set('wafDisabled', false); } // Call this before creating the index in cases where the wp-cron isn't running. self::trimWfHits(); $hitsTable = wfDB::networkTable('wfHits'); $hasAttackLogTimeIndex = $wpdb->get_var($wpdb->prepare(<<<SQL SELECT COLUMN_KEY FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = %s AND COLUMN_NAME = 'attackLogTime' SQL , $hitsTable)); if (!$hasAttackLogTimeIndex) { $wpdb->query("ALTER TABLE $hitsTable ADD INDEX `attackLogTime` (`attackLogTime`)"); } //6.1.16 $allowed404s = wfConfig::get('allowed404s', ''); if (!wfConfig::get('allowed404s6116Migration', false)) { if (!preg_match('/(?:^|\b)browserconfig\.xml(?:\b|$)/i', $allowed404s)) { if (strlen($allowed404s) > 0) { $allowed404s .= "\n"; } $allowed404s .= "/browserconfig.xml"; wfConfig::set('allowed404s', $allowed404s); } wfConfig::set('allowed404s6116Migration', 1); } if (wfConfig::get('email_summary_interval') == 'biweekly') { wfConfig::set('email_summary_interval', 'weekly'); } //6.2.0 wfConfig::migrateCodeExecutionForUploadsPHP7(); //6.2.3 if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); //changed slightly for 7.0.1 } //6.2.8 wfCache::removeCaching(); //6.2.10 $snipCacheTable = wfDB::networkTable('wfSNIPCache'); $hasType = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='type' AND TABLE_NAME=%s SQL , $snipCacheTable)); if (!$hasType) { $wpdb->query("ALTER TABLE `{$snipCacheTable}` ADD `type` INT UNSIGNED NOT NULL DEFAULT '0'"); $wpdb->query("ALTER TABLE `{$snipCacheTable}` ADD INDEX (`type`)"); } //6.3.5 $fileModsTable = wfDB::networkTable('wfFileMods'); $hasStoppedOn = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='stoppedOnSignature' AND TABLE_NAME=%s SQL , $fileModsTable)); if (!$hasStoppedOn) { $wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN stoppedOnSignature VARCHAR(255) NOT NULL DEFAULT ''"); $wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN stoppedOnPosition INT UNSIGNED NOT NULL DEFAULT '0'"); } $blockedIPLogTable = wfDB::networkTable('wfBlockedIPLog'); $hasType = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='blockType' AND TABLE_NAME=%s SQL , $blockedIPLogTable)); if (!$hasType) { $wpdb->query("ALTER TABLE {$blockedIPLogTable} ADD blockType VARCHAR(50) NOT NULL DEFAULT 'generic'"); $wpdb->query("ALTER TABLE {$blockedIPLogTable} DROP PRIMARY KEY"); $wpdb->query("ALTER TABLE {$blockedIPLogTable} ADD PRIMARY KEY (IP, unixday, blockType)"); } //6.3.6 if (!wfConfig::get('migration636_email_summary_excluded_directories')) { $excluded_directories = explode(',', (string) wfConfig::get('email_summary_excluded_directories')); $key = array_search('wp-content/plugins/wordfence/tmp', $excluded_directories); if ($key !== false) { unset($excluded_directories[$key]); } $key = array_search('wp-content/wflogs', $excluded_directories); if ($key === false) { $excluded_directories[] = 'wp-content/wflogs'; } wfConfig::set('email_summary_excluded_directories', implode(',', $excluded_directories)); wfConfig::set('migration636_email_summary_excluded_directories', 1, wfConfig::DONT_AUTOLOAD); } $fileModsTable = wfDB::networkTable('wfFileMods'); $hasSHAC = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='SHAC' AND TABLE_NAME=%s SQL , $fileModsTable)); if (!$hasSHAC) { $wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN `SHAC` BINARY(32) NOT NULL DEFAULT '' AFTER `newMD5`"); $wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN `isSafeFile` VARCHAR(1) NOT NULL DEFAULT '?' AFTER `stoppedOnPosition`"); } //6.3.7 $hooverTable = wfDB::networkTable('wfHoover'); $hostKeySize = $wpdb->get_var($wpdb->prepare(<<<SQL SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='hostKey' AND TABLE_NAME=%s SQL , $hooverTable)); if ($hostKeySize < 124) { $wpdb->query("ALTER TABLE {$hooverTable} CHANGE `hostKey` `hostKey` VARBINARY(124) NULL DEFAULT NULL"); } //6.3.15 $scanFileContents = wfConfig::get('scansEnabled_fileContents', false); if (!wfConfig::get('fileContentsGSB6315Migration', false)) { if (!$scanFileContents) { wfConfig::set('scansEnabled_fileContentsGSB', false); } wfConfig::set('fileContentsGSB6315Migration', 1); } //6.3.20 $lastBlockAggregation = wfConfig::get('lastBlockAggregation', 0); if ($lastBlockAggregation == 0) { wfConfig::set('lastBlockAggregation', time()); } //7.0.1 //---- Config Migration if (!wfConfig::get('config701Migration', false)) { //loginSec_strongPasswds gains a toggle if (wfConfig::get('loginSec_strongPasswds') == '') { wfConfig::set('loginSec_strongPasswds', 'pubs'); wfConfig::set('loginSec_strongPasswds_enabled', false); } $limitedOptions = wfScanner::limitedScanTypeOptions(); $standardOptions = wfScanner::standardScanTypeOptions(); $highSensitivityOptions = wfScanner::highSensitivityScanTypeOptions(); $settings = wfScanner::customScanTypeOptions(); if ($settings == $limitedOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_LIMITED); } else if ($settings == $standardOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_STANDARD); } else if ($settings == $highSensitivityOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_HIGH_SENSITIVITY); } else { wfConfig::set('scanType', wfScanner::SCAN_TYPE_CUSTOM); } if (wfConfig::get('isPaid')) { wfConfig::set('keyType', wfAPI::KEY_TYPE_PAID_CURRENT); } wfConfig::remove('premiumAutoRenew'); wfConfig::remove('premiumNextRenew'); wfConfig::remove('premiumPaymentExpiring'); wfConfig::remove('premiumPaymentExpired'); wfConfig::remove('premiumPaymentMissing'); wfConfig::remove('premiumPaymentHold'); wfConfig::set('config701Migration', 1); } //---- wfBlocks migration $oldBlocksTable = wfDB::networkTable('wfBlocks'); $blocksTable = wfBlock::blocksTable(); $oldBlocksExist = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s SQL , $oldBlocksTable)); if ($oldBlocksExist && !wfConfig::get('blocks701Migration', false)) { //wfBlocks migration $query = $wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`) SELECT CASE WHEN wfsn = 1 AND permanent = 0 THEN %d WHEN wfsn = 0 AND permanent = 0 THEN %d WHEN wfsn = 0 AND permanent = 1 THEN %d END AS `type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, CASE WHEN wfsn = 1 AND permanent = 0 THEN (`blockedTime` + 600) WHEN wfsn = 0 AND permanent = 0 THEN (`blockedTime` + %d) WHEN wfsn = 0 AND permanent = 1 THEN 0 END AS `expiration` FROM `{$oldBlocksTable}`", wfBlock::TYPE_WFSN_TEMPORARY, wfBlock::TYPE_RATE_BLOCK, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfConfig::get('blockedTime')); $wpdb->query($query); //wfBlocksAdv migration $advancedBlocksTable = wfDB::networkTable('wfBlocksAdv'); $advancedBlocks = $wpdb->get_results("SELECT * FROM {$advancedBlocksTable}", ARRAY_A); foreach ($advancedBlocks as $b) { $blockType = $b['blockType']; //unused $blockString = $b['blockString']; $ctime = (int) $b['ctime']; $reason = $b['reason']; $totalBlocked = (int) $b['totalBlocked']; $lastBlocked = (int) $b['lastBlocked']; list($ipRange, $uaRange, $referrer, $hostname) = explode('|', $blockString); wfBlock::createPattern($reason, $ipRange, $hostname, $uaRange, $referrer, wfBlock::DURATION_FOREVER, $ctime, $lastBlocked, $totalBlocked); } //throttle migration $throttleTable = wfDB::networkTable('wfThrottleLog'); $throttles = $wpdb->get_results("SELECT * FROM {$throttleTable}", ARRAY_A); foreach ($throttles as $t) { $ip = wfUtils::inet_ntop($t['IP']); $startTime = (int) $t['startTime']; $endTime = (int) $t['endTime']; $timesThrottled = (int) $t['timesThrottled']; $reason = $t['lastReason']; wfBlock::createRateThrottle($reason, $ip, wfBlock::rateLimitThrottleDuration(), $startTime, $endTime, $timesThrottled); } //lockout migration $lockoutTable = wfDB::networkTable('wfLockedOut'); $lockouts = $wpdb->get_results("SELECT * FROM {$lockoutTable}", ARRAY_A); foreach ($lockouts as $l) { $ip = wfUtils::inet_ntop($l['IP']); $blockedTime = (int) $l['blockedTime']; $reason = $l['reason']; $lastAttempt = (int) $l['lastAttempt']; $blockedHits = (int) $l['blockedHits']; wfBlock::createLockout($reason, $ip, wfBlock::lockoutDuration(), $blockedTime, $lastAttempt, $blockedHits); } //country blocking migration $countries = wfConfig::get('cbl_countries', false); if ($countries) { $countries = explode(',', $countries); wfBlock::createCountry(__('Automatically generated from previous country blocking settings', 'wordfence'), wfConfig::get('cbl_loginFormBlocked', false), wfConfig::get('cbl_restOfSiteBlocked', false), $countries); } wfConfig::set('blocks701Migration', 1); } //---- wfIssues/wfPendingIssues Schema Change $issuesTable = wfDB::networkTable('wfIssues'); $pendingIssuesTable = wfDB::networkTable('wfPendingIssues'); $hasLastUpdated = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='lastUpdated' AND TABLE_NAME=%s SQL , $issuesTable)); if (!$hasLastUpdated) { $wpdb->query("ALTER TABLE `{$issuesTable}` ADD `lastUpdated` INT UNSIGNED NOT NULL AFTER `time`"); $wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`lastUpdated`)"); $wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`status`)"); $wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`ignoreP`)"); $wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`ignoreC`)"); $wpdb->query("UPDATE `{$issuesTable}` SET `lastUpdated` = `time` WHERE `lastUpdated` = 0"); $wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD `lastUpdated` INT UNSIGNED NOT NULL AFTER `time`"); $wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`lastUpdated`)"); $wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`status`)"); $wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`ignoreP`)"); $wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`ignoreC`)"); } //---- Scheduled scan start hour and manual type if (wfConfig::get('schedStartHour') < 0) { wfConfig::set('schedStartHour', wfWAFUtils::random_int(0, 23)); if (wfConfig::get('schedMode') == 'manual') { $sched = wfConfig::get_ser('scanSched', array()); if (is_array($sched) && is_array($sched[0])) { //Try to determine the closest matching value for manualScanType $hours = array_fill(0, 24, 0); $distinctHours = array(); $days = array_fill(0, 7, 0); $distinctDays = array(); foreach ($sched as $dayIndex => $day) { foreach ($day as $h => $enabled) { if ($enabled) { if (in_array($h, $distinctHours)) { $distinctHours[] = $h; } $hours[$h]++; if (in_array($dayIndex, $distinctDays)) { $distinctDays[] = $dayIndex; } $days[$dayIndex]++; } } } sort($distinctHours, SORT_NUMERIC); sort($distinctDays, SORT_NUMERIC); if (count($distinctDays) == 7) { if (count($distinctHours) == 1) { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_ONCE_DAILY); wfConfig::set('schedStartHour', $distinctHours[0]); } else if (count($distinctHours) == 2) { $matchesTwiceDaily = false; if ($distinctHours[0] + 12 == $distinctHours[1]) { $matchesTwiceDaily = true; foreach ($sched as $dayIndex => $day) { if (!$day[$distinctHours[0]] || !$day[$distinctHours[1]]) { $matchesTwiceDaily = false; } } } if ($matchesTwiceDaily) { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_TWICE_DAILY); wfConfig::set('schedStartHour', $distinctHours[0]); } else { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM); } } else { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM); } } else if (count($distinctDays) == 5 && count($distinctHours) == 1) { if ($days[2] == 0 && $days[4] == 0 && $hours[$distinctHours[0]] == 5) { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS); wfConfig::set('schedStartHour', $distinctHours[0]); } else if ($days[0] == 0 && $days[6] == 0 && $hours[$distinctHours[0]] == 5) { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_WEEKDAYS); wfConfig::set('schedStartHour', $distinctHours[0]); } else { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM); } } else if (count($distinctDays) == 2 && count($distinctHours) == 1) { if ($distinctDays[0] == 0 && $distinctDays[1] == 6 && $hours[$distinctHours[0]] == 2) { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_WEEKENDS); wfConfig::set('schedStartHour', $distinctHours[0]); } else { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM); } } else { wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM); } } //manualScanType } } //---- Onboarding if (!$freshAPIKey) { wfOnboardingController::migrateOnboarding(); } //7.0.2 if (!wfConfig::get('blocks702Migration')) { $blocksTable = wfBlock::blocksTable(); $query = "UPDATE `{$blocksTable}` SET `type` = %d WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"ipRange\"%'"; $wpdb->query($wpdb->prepare($query, wfBlock::TYPE_PATTERN, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT)); $countryBlock = wfBlock::countryBlocks(); if (!count($countryBlock)) { $query = "UPDATE `{$blocksTable}` SET `type` = %d WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"blockLogin\"%' LIMIT 1"; $wpdb->query($wpdb->prepare($query, wfBlock::TYPE_COUNTRY, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT)); } $query = "DELETE FROM `{$blocksTable}` WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"blockLogin\"%'"; $wpdb->query($wpdb->prepare($query, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT)); wfConfig::set('blocks702Migration', 1); } //7.0.3 /*if (!wfConfig::get('generateAllOptionsNotification')) { new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<p>Developers: If you prefer to edit all Wordfence options on one page, you can enable the "All Options" page here:</p> <p><a href="javascript:WFAD.enableAllOptionsPage();" class="wf-btn wf-btn-primary wf-btn-callout-subtle">Enable "All Options" Page</a></p>', 'wfplugin_devalloptions'); wfConfig::set('generateAllOptionsNotification', 1); }*/ //7.1.9 if (wfConfig::get('loginSec_maxFailures') == 1) { wfConfig::set('loginSec_maxFailures', 2); } $blocksTable = wfBlock::blocksTable(); $patternBlocks = wfBlock::patternBlocks(); foreach ($patternBlocks as $b) { if (!empty($b->ipRange) && preg_match('/^\d+\-\d+$/', $b->ipRange)) { //Old-style range block using long2ip $ipRange = new wfUserIPRange($b->ipRange); $ipRange = $ipRange->getIPString(); $parameters = $b->parameters; $parameters['ipRange'] = $ipRange; $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `parameters` = %s WHERE `id` = %d", json_encode($parameters), $b->id)); } } wfConfig::set('needsGeoIPSync', true, wfConfig::DONT_AUTOLOAD); // Set the default scan options based on scan type. if (!wfConfig::get('config720Migration', false)) { // Replace critical/warning checkboxes with setting based on numeric severity value. if (wfConfig::hasCachedOption('alertOn_critical') && wfConfig::hasCachedOption('alertOn_warnings')) { $alertOnCritical = wfConfig::get('alertOn_critical'); $alertOnWarnings = wfConfig::get('alertOn_warnings'); wfConfig::set('alertOn_scanIssues', $alertOnCritical || $alertOnWarnings); if ($alertOnCritical && ! $alertOnWarnings) { wfConfig::set('alertOn_severityLevel', wfIssues::SEVERITY_HIGH); } else { wfConfig::set('alertOn_severityLevel', wfIssues::SEVERITY_LOW); } } // Update severity for existing issues where they are still using the old severity values. foreach (wfIssues::$issueSeverities as $issueType => $severity) { $wpdb->query($wpdb->prepare("UPDATE $issuesTable SET severity = %d WHERE `type` = %s AND severity in (0,1,2) ", $severity, $issueType)); } $syncedOptions = array(); switch (wfConfig::get('scanType')) { case wfScanner::SCAN_TYPE_LIMITED: $syncedOptions = wfScanner::limitedScanTypeOptions(); break; case wfScanner::SCAN_TYPE_STANDARD: $syncedOptions = wfScanner::standardScanTypeOptions(); break; case wfScanner::SCAN_TYPE_HIGH_SENSITIVITY: $syncedOptions = wfScanner::highSensitivityScanTypeOptions(); break; } if ($syncedOptions) { foreach ($syncedOptions as $key => $value) { if (is_bool($value)) { wfConfig::set($key, $value ? 1 : 0); } } } wfConfig::set('config720Migration', true); } //7.2.3 if (wfConfig::get('waf_status') === false) { $firewall = new wfFirewall(); $firewall->syncStatus(true); } //7.3.1 //---- drop long deprecated tables $tables = array('wfBadLeechers', 'wfBlockedCommentLog', 'wfBlocks', 'wfBlocksAdv', 'wfLeechers', 'wfLockedOut', 'wfNet404s', 'wfScanners', 'wfThrottleLog', 'wfVulnScanners'); foreach ($tables as $t) { $schema->drop($t); } //---- enable legacy 2fa if applicable if (wfConfig::get('isPaid') && (wfCredentialsController::hasOld2FARecords() || version_compare(phpversion(), '5.3', '<'))) { wfConfig::set(wfCredentialsController::ALLOW_LEGACY_2FA_OPTION, true); } //Check the How does Wordfence get IPs setting wfUtils::requestDetectProxyCallback(); //Install new schedule. If schedule config is blank it will install the default 'auto' schedule. wfScanner::shared()->scheduleScans(); //Check our minimum versions and generate the necessary warnings if (!wp_next_scheduled('wordfence_version_check')) { wp_schedule_single_event(time(), 'wordfence_version_check'); } //Must be the final line } public static function _refreshVulnerabilityCache() { $update_check = new wfUpdateCheck(); $update_check->checkAllVulnerabilities(); } private static function doEarlyAccessLogging(){ $wfLog = self::getLog(); if($wfLog->logHitOK()){ $request = $wfLog->getCurrentRequest(); if(is_404()){ if ($request) { $request->statusCode = 404; } $wfLog->logLeechAndBlock('404'); } else { $wfLog->logLeechAndBlock('hit'); } } } public static function initProtection(){ //Basic protection during WAF learning period // Infinite WP Client - Authentication Bypass < 1.9.4.5 // https://wpvulndb.com/vulnerabilities/10011 $iwpRule = new wfWAFRule(wfWAF::getInstance(), 0x80000000, null, 'auth-bypass', 100, 'Infinite WP Client - Authentication Bypass < 1.9.4.5', 0, 'block', null); wfWAF::getInstance()->setRules(wfWAF::getInstance()->getRules() + array(0x80000000 => $iwpRule)); if (strrpos(wfWAF::getInstance()->getRequest()->getRawBody(), '_IWP_JSON_PREFIX_') !== false) { $iwpRequestDataArray = explode('_IWP_JSON_PREFIX_', wfWAF::getInstance()->getRequest()->getRawBody()); $iwpRequest = json_decode(trim(base64_decode($iwpRequestDataArray[1])), true); if (is_array($iwpRequest)) { if (array_key_exists('iwp_action', $iwpRequest) && ($iwpRequest['iwp_action'] === 'add_site' || $iwpRequest['iwp_action'] === 'readd_site') ) { require_once ABSPATH . '/wp-admin/includes/plugin.php'; if (is_plugin_active('iwp-client/init.php')) { $iwpPluginData = get_plugin_data(WP_PLUGIN_DIR . '/iwp-client/init.php'); if (version_compare('1.9.4.5', $iwpPluginData['Version'], '>')) { remove_action('setup_theme', 'iwp_mmb_set_request'); } } if ((is_multisite() ? get_site_option('iwp_client_action_message_id') : get_option('iwp_client_action_message_id')) && (is_multisite() ? get_site_option('iwp_client_public_key') : get_option('iwp_client_public_key')) ) { wfWAF::getInstance()->getStorageEngine()->logAttack(array($iwpRule), 'request.rawBody', wfWAF::getInstance()->getRequest()->getRawBody(), wfWAF::getInstance()->getRequest(), wfWAF::getInstance()->getRequest()->getMetadata() ); } } } } } public static function install_actions(){ register_activation_hook(WORDFENCE_FCPATH, 'wordfence::installPlugin'); register_deactivation_hook(WORDFENCE_FCPATH, 'wordfence::uninstallPlugin'); $versionInOptions = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, 'wordfence_version', false) : get_option('wordfence_version', false)); if( (! $versionInOptions) || version_compare(WORDFENCE_VERSION, $versionInOptions, '>')){ //Either there is no version in options or the version in options is greater and we need to run the upgrade self::runInstall(); } self::getLog()->initLogRequest(); //Fix wp_mail bug when $_SERVER['SERVER_NAME'] is undefined add_filter('wp_mail_from', 'wordfence::fixWPMailFromAddress'); //These access wfConfig::get('apiKey') and will fail if runInstall hasn't executed. if(defined('MULTISITE') && MULTISITE === true){ global $blog_id; if($blog_id == 1 && get_option('wordfenceActivated') != 1){ return; } //Because the plugin is active once installed, even before it's network activated, for site 1 (WordPress team, why?!) } //User may be logged in or not, so register both handlers add_action('wp_ajax_nopriv_wordfence_lh', 'wordfence::ajax_lh_callback'); add_action('wp_ajax_nopriv_wordfence_doScan', 'wordfence::ajax_doScan_callback'); add_action('wp_ajax_nopriv_wordfence_testAjax', 'wordfence::ajax_testAjax_callback'); if(wfUtils::hasLoginCookie()){ //may be logged in. Fast way to check. These aren't secure functions, this is just a perf optimization, along with every other use of hasLoginCookie() add_action('wp_ajax_wordfence_lh', 'wordfence::ajax_lh_callback'); add_action('wp_ajax_wordfence_doScan', 'wordfence::ajax_doScan_callback'); add_action('wp_ajax_wordfence_testAjax', 'wordfence::ajax_testAjax_callback'); if (is_multisite()) { add_action('wp_network_dashboard_setup', 'wordfence::addDashboardWidget'); } else { add_action('wp_dashboard_setup', 'wordfence::addDashboardWidget'); } } add_action('wp_ajax_wordfence_wafStatus', 'wordfence::ajax_wafStatus_callback'); add_action('wp_ajax_nopriv_wordfence_wafStatus', 'wordfence::ajax_wafStatus_callback'); add_action('wp_ajax_nopriv_wordfence_remoteVerifySwitchTo2FANew', 'wordfence::ajax_remoteVerifySwitchTo2FANew_callback'); add_action('wordfence_start_scheduled_scan', 'wordfence::wordfenceStartScheduledScan'); add_action('wordfence_daily_cron', 'wordfence::dailyCron'); add_action('wordfence_daily_autoUpdate', 'wfConfig::autoUpdate'); add_action('wordfence_hourly_cron', 'wordfence::hourlyCron'); add_action('wordfence_version_check', array(wfVersionCheckController::shared(), 'checkVersionsAndWarn')); add_action('plugins_loaded', 'wordfence::veryFirstAction'); add_action('init', 'wordfence::initAction'); //add_action('admin_bar_menu', 'wordfence::admin_bar_menu', 99); add_action('template_redirect', 'wordfence::templateRedir', 1001); add_action('shutdown', 'wordfence::shutdownAction'); if (!wfConfig::get('ajaxWatcherDisabled_front')) { add_action('wp_enqueue_scripts', 'wordfence::enqueueAJAXWatcher'); } if (!wfConfig::get('ajaxWatcherDisabled_admin')) { add_action('admin_enqueue_scripts', 'wordfence::enqueueAJAXWatcher'); } //add_action('wp_enqueue_scripts', 'wordfence::enqueueDashboard'); add_action('admin_enqueue_scripts', 'wordfence::enqueueDashboard'); if(version_compare(PHP_VERSION, '5.4.0') >= 0){ add_action('wp_authenticate','wordfence::authActionNew', 1, 2); } else { add_action('wp_authenticate','wordfence::authActionOld', 1, 2); } add_filter('authenticate', 'wordfence::authenticateFilter', 99, 3); $lockout = wfBlock::lockoutForIP(wfUtils::getIP()); if ($lockout !== false) { add_filter('xmlrpc_enabled', '__return_false'); } add_action('login_init','wordfence::loginInitAction'); add_action('wp_login','wordfence::loginAction'); add_action('wp_logout','wordfence::logoutAction'); add_action('lostpassword_post', 'wordfence::lostPasswordPost', '1'); $allowSeparatePrompt = ini_get('output_buffering') > 0; if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) { add_action('login_form', 'wordfence::showTwoFactorField'); } if(wfUtils::hasLoginCookie()){ add_action('user_profile_update_errors', 'wordfence::validateProfileUpdate', 0, 3 ); add_action('profile_update', 'wordfence::profileUpdateAction', '99', 2); } add_action('validate_password_reset', 'wordfence::validatePassword', 10, 2); // Add actions for the email summary add_action('wordfence_email_activity_report', array('wfActivityReport', 'executeCronJob')); //For debugging //add_filter( 'cron_schedules', 'wordfence::cronAddSchedules' ); add_filter('wp_redirect', 'wordfence::wpRedirectFilter', 99, 2); add_filter('wp_redirect_status', 'wordfence::wpRedirectStatusFilter', 99, 2); //html|xhtml|atom|rss2|rdf|comment|export if(wfConfig::get('other_hideWPVersion')){ add_filter('style_loader_src', 'wordfence::replaceVersion'); add_filter('script_loader_src', 'wordfence::replaceVersion'); add_action('upgrader_process_complete', 'wordfence::hideReadme'); } add_filter('get_the_generator_html', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_xhtml', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_atom', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_rss2', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_rdf', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_comment', 'wordfence::genFilter', 99, 2); add_filter('get_the_generator_export', 'wordfence::genFilter', 99, 2); add_filter('registration_errors', 'wordfence::registrationFilter', 99, 3); add_filter('woocommerce_new_customer_data', 'wordfence::wooRegistrationFilter', 99, 1); if (wfConfig::get('loginSec_disableAuthorScan')) { add_filter('oembed_response_data', 'wordfence::oembedAuthorFilter', 99, 4); add_filter('rest_request_before_callbacks', 'wordfence::jsonAPIAuthorFilter', 99, 3); add_filter('rest_post_dispatch', 'wordfence::jsonAPIAdjustHeaders', 99, 3); add_filter('wp_sitemaps_users_pre_url_list', '__return_false', 99, 0); add_filter('wp_sitemaps_add_provider', 'wordfence::wpSitemapUserProviderFilter', 99, 2); } if (wfConfig::get('loginSec_disableApplicationPasswords')) { add_filter('wp_is_application_passwords_available', '__return_false'); // Override the wp_die handler to let the user know app passwords were disabled by the Wordfence option. if (!empty($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] === ABSPATH . 'wp-admin/authorize-application.php') { add_filter('wp_die_handler', function ($handler = null) { return function ($message, $title, $args) { if ($message === 'Application passwords are not available.') { $message = __('Application passwords have been disabled by Wordfence.', 'wordfence'); } _default_wp_die_handler($message, $title, $args); }; }, 10, 1); } } add_filter('rest_dispatch_request', 'wordfence::_filterCentralFromLiveTraffic', 99, 4); // Change GoDaddy's limit login mu-plugin since it can interfere with the two factor auth message. if (self::hasGDLimitLoginsMUPlugin()) { add_action('login_errors', array('wordfence', 'fixGDLimitLoginsErrors'), 11); } add_action('upgrader_process_complete', 'wordfence::_refreshVulnerabilityCache'); add_action('upgrader_process_complete', 'wfUpdateCheck::syncAllVersionInfo'); add_action('upgrader_process_complete', 'wordfence::_scheduleRefreshUpdateNotification', 99, 2); add_action('automatic_updates_complete', 'wordfence::_scheduleRefreshUpdateNotification', 99, 0); add_action('wordfence_refreshUpdateNotification', 'wordfence::_refreshUpdateNotification', 99, 0); add_action('wordfence_completeCoreUpdateNotification', 'wordfence::_completeCoreUpdateNotification', 99, 0); add_action('wfls_xml_rpc_blocked', 'wordfence::checkSecurityNetwork'); add_action('wfls_registration_blocked', 'wordfence::checkSecurityNetwork'); add_action('wfls_activation_page_header', 'wordfence::_outputLoginSecurityInstallation'); add_action('wfls_activation_page_footer', 'wordfence::_outputLoginSecurityTour'); add_action('wfls_settings_set', 'wordfence::queueCentralConfigurationSync'); if(is_admin()){ add_action('admin_init', 'wordfence::admin_init'); add_action('admin_head', 'wordfence::_retargetWordfenceSubmenuCallout'); if(is_multisite()){ if(wfUtils::isAdminPageMU()){ add_action('network_admin_menu', 'wordfence::admin_menus', 10); add_action('network_admin_menu', 'wordfence::admin_menus_20', 20); add_action('network_admin_menu', 'wordfence::admin_menus_30', 30); add_action('network_admin_menu', 'wordfence::admin_menus_40', 40); add_action('network_admin_menu', 'wordfence::admin_menus_50', 50); add_action('network_admin_menu', 'wordfence::admin_menus_60', 60); add_action('network_admin_menu', 'wordfence::admin_menus_70', 70); add_action('network_admin_menu', 'wordfence::admin_menus_80', 80); add_action('network_admin_menu', 'wordfence::admin_menus_90', 90); } //else don't show menu } else { add_action('admin_menu', 'wordfence::admin_menus', 10); add_action('admin_menu', 'wordfence::admin_menus_20', 20); add_action('admin_menu', 'wordfence::admin_menus_30', 30); add_action('admin_menu', 'wordfence::admin_menus_40', 40); add_action('admin_menu', 'wordfence::admin_menus_50', 50); add_action('admin_menu', 'wordfence::admin_menus_60', 60); add_action('admin_menu', 'wordfence::admin_menus_70', 70); add_action('admin_menu', 'wordfence::admin_menus_80', 80); add_action('admin_menu', 'wordfence::admin_menus_90', 90); } add_filter('plugin_action_links_' . plugin_basename(realpath(dirname(__FILE__) . '/../wordfence.php')), 'wordfence::_pluginPageActionLinks'); } add_action('request', 'wordfence::preventAuthorNScans'); add_action('password_reset', 'wordfence::actionPasswordReset'); $adminUsers = new wfAdminUserMonitor(); if ($adminUsers->isEnabled()) { add_action('set_user_role', array($adminUsers, 'updateToUserRole'), 10, 3); add_action('grant_super_admin', array($adminUsers, 'grantSuperAdmin'), 10, 1); add_action('revoke_super_admin', array($adminUsers, 'revokeSuperAdmin'), 10, 1); } else if (wfConfig::get_ser('adminUserList', false)) { // reset this in the event it's disabled or the network is too large wfConfig::set_ser('adminUserList', false); } if (wfConfig::liveTrafficEnabled()) { add_action('wp_head', 'wordfence::wfLogHumanHeader'); add_action('login_head', 'wordfence::wfLogHumanHeader'); } add_action('wordfence_processAttackData', 'wordfence::processAttackData'); if (!empty($_GET['wordfence_syncAttackData']) && get_site_option('wordfence_syncingAttackData') <= time() - 60 && get_site_option('wordfence_lastSyncAttackData', 0) < time() - 4) { @ignore_user_abort(true); update_site_option('wordfence_syncingAttackData', time()); header('Content-Type: text/javascript'); define('WORDFENCE_SYNCING_ATTACK_DATA', true); add_action('init', 'wordfence::syncAttackData', 10, 0); add_filter('woocommerce_unforce_ssl_checkout', '__return_false'); } add_action('wordfence_batchReportBlockedAttempts', 'wordfence::wfsnBatchReportBlockedAttempts'); add_action('wordfence_batchReportFailedAttempts', 'wordfence::wfsnBatchReportFailedAttempts'); if (wfConfig::get('other_hideWPVersion')) { add_filter('update_feedback', 'wordfence::restoreReadmeForUpgrade'); } add_action('rest_api_init', 'wordfence::initRestAPI'); if (wfCentral::isConnected()) { add_action('wordfence_security_event', 'wfCentral::sendSecurityEvent', 10, 3); } else { add_action('wordfence_security_event', 'wfCentral::sendAlertCallback', 10, 3); } if (!wfConfig::get('wordfenceI18n', true)) { add_filter('gettext', function ($translation, $text, $domain) { if ($domain === 'wordfence') { return $text; } return $translation; }, 10, 3); } } public static function _pluginPageActionLinks($links) { if (!wfConfig::get('isPaid')) { $links = array_merge(array('aWordfencePluginCallout' => '<a href="https://www.wordfence.com/zz12/wordfence-signup/" target="_blank" rel="noopener noreferrer"><strong style="color: #11967A; display: inline;">' . esc_html__('Upgrade To Premium', 'wordfence') . '</strong></a>'), $links); } return $links; } public static function _outputLoginSecurityInstallation() { if (WORDFENCE_LS_FROM_CORE && wfOnboardingController::shouldShowAttempt3()) { echo wfView::create('onboarding/banner')->render(); } } public static function _outputLoginSecurityTour() { if (WORDFENCE_LS_FROM_CORE) { echo wfView::create('tours/login-security', array())->render(); } } public static function fixWPMailFromAddress($from_email) { if ($from_email == 'wordpress@') { //$_SERVER['SERVER_NAME'] is undefined so we get an incomplete email address wordfence::status(4, 'info', __("wp_mail from address is incomplete, attempting to fix", 'wordfence')); $urls = array(get_site_url(), get_home_url()); foreach ($urls as $u) { if (!empty($u)) { $u = preg_replace('#^[^/]*//+([^/]+).*$#', '\1', $u); if (substr($u, 0, 4) == 'www.') { $u = substr($u, 4); } if (!empty($u)) { wordfence::status(4, 'info', sprintf(/* translators: Email address. */ __("Fixing wp_mail from address: %s", 'wordfence'), $from_email . $u)); return $from_email . $u; } } } //Can't fix it, return it as it was } return $from_email; } public static function wpRedirectFilter($location, $status) { self::getLog()->initLogRequest(); self::getLog()->getCurrentRequest()->statusCode = $status; return $location; } public static function wpRedirectStatusFilter($status, $location) { self::getLog()->initLogRequest(); self::getLog()->getCurrentRequest()->statusCode = $status; self::getLog()->logHit(); return $status; } public static function enqueueAJAXWatcher() { $wafDisabled = !WFWAF_ENABLED || (class_exists('wfWAFConfig') && wfWAFConfig::isDisabled()); if (wfUtils::isAdmin() && !$wafDisabled) { wp_enqueue_style('wordfenceAJAXcss', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wordfenceBox.css'), '', WORDFENCE_VERSION); wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION); wp_enqueue_script('wordfenceAJAXjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.ajaxWatcher.js'), array('jquery'), WORDFENCE_VERSION); wp_localize_script('wordfenceAJAXjs', 'WFAJAXWatcherVars', array( 'nonce' => wp_create_nonce('wf-waf-error-page'), )); self::setupI18nJSStrings(); } } public static function enqueueDashboard() { if (wfUtils::isAdmin()) { wp_enqueue_style('wf-adminbar', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-adminbar.css'), '', WORDFENCE_VERSION); wp_enqueue_script('wordfenceDashboardjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfdashboard.js'), array('jquery'), WORDFENCE_VERSION); if (wfConfig::get('showAdminBarMenu')) { wp_enqueue_script('wordfencePopoverjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfpopover.js'), array('jquery'), WORDFENCE_VERSION); wp_localize_script('wordfenceDashboardjs', 'WFDashVars', array( 'ajaxURL' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('wp-ajax'), )); } } } public static function ajax_testAjax_callback(){ die("WFSCANTESTOK"); } public static function ajax_doScan_callback(){ @ignore_user_abort(true); self::$wordfence_wp_version = false; if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } //This is messy, but not sure of a better way to do this without guaranteeing we get $wp_version require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */ self::$wordfence_wp_version = $wp_version; require_once(dirname(__FILE__) . '/wfScan.php'); wfScan::wfScanMain(); } //END doScan public static function ajax_lh_callback(){ self::getLog()->canLogHit = false; $UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $isCrawler = empty($UA); if ($UA) { if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) { $isCrawler = true; } } @ob_end_clean(); if(! headers_sent()){ header('Content-type: text/javascript'); header("Connection: close"); header("Content-Length: 0"); header("X-Robots-Tag: noindex"); if (!$isCrawler) { wfLog::cacheHumanRequester(wfUtils::getIP(), $UA); } } flush(); if(! $isCrawler){ $hid = $_GET['hid']; $hid = wfUtils::decrypt($hid); if(! preg_match('/^\d+$/', $hid)){ exit(); } $db = new wfDB(); $table_wfHits = wfDB::networkTable('wfHits'); $db->queryWrite("update {$table_wfHits} set jsRun=1 where id=%d", $hid); } die(""); } public static function ajaxReceiver(){ if(! wfUtils::isAdmin()){ wfUtils::send_json(array('errorMsg' => __("You appear to have logged out or you are not an admin. Please sign-out and sign-in again.", 'wordfence'))); } $func = (isset($_POST['action']) && $_POST['action']) ? $_POST['action'] : $_GET['action']; $nonce = (isset($_POST['nonce']) && $_POST['nonce']) ? $_POST['nonce'] : $_GET['nonce']; if(! wp_verify_nonce($nonce, 'wp-ajax')){ wfUtils::send_json(array('errorMsg' => __("Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again.", 'wordfence'), 'tokenInvalid' => 1)); } //func is e.g. wordfence_ticker so need to munge it $func = str_replace('wordfence_', '', $func); $returnArr = call_user_func('wordfence::ajax_' . $func . '_callback'); if($returnArr === false){ $returnArr = array('errorMsg' => __("Wordfence encountered an internal error executing that request.", 'wordfence')); } if(! is_array($returnArr)){ error_log("Function " . wp_kses($func, array()) . " did not return an array and did not generate an error."); $returnArr = array(); } if(isset($returnArr['nonce'])){ error_log("Wordfence ajax function return an array with 'nonce' already set. This could be a bug."); } $returnArr['nonce'] = wp_create_nonce('wp-ajax'); wfUtils::send_json($returnArr); } public static function ajax_remoteVerifySwitchTo2FANew_callback() { $payload = wfUtils::decodeJWT(wfConfig::get('new2FAMigrationNonce')); if (empty($payload)) { wfUtils::send_json(new stdClass()); //Ensures an object response } $package = wfCrypt::noc1_encrypt($payload); wfUtils::send_json($package); } public static function ajax_switchTo2FANew_callback() { $migrate = (isset($_POST['migrate']) && wfUtils::truthyToBoolean($_POST['migrate'])); $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if ($migrate && is_array($twoFactorUsers) && !empty($twoFactorUsers)) { $smsActive = array(); $authenticatorActive = array(); foreach ($twoFactorUsers as &$t) { if ($t[3] == 'activated') { $user = new WP_User($t[0]); if ($user instanceof WP_User && $user->exists()) { if ((!isset($t[5]) || $t[5] != 'authenticator')) { $smsActive[] = $user->user_login; } else { $authenticatorActive[] = $t[6]; } } } } if (!empty($smsActive)) { return array('ok' => 0, 'smsActive' => $smsActive); } $total = 0; $imported = 0; $nonce = bin2hex(wfWAFUtils::random_bytes(32)); wfConfig::set('new2FAMigrationNonce', wfUtils::generateJWT(array('nonce' => $nonce), 90)); $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $response = $api->call('twoFactorTOTP_migrate', array(), array('migrateids' => json_encode($authenticatorActive), 'nonce' => $nonce, 'verifyurl' => add_query_arg(array('action' => 'wordfence_remoteVerifySwitchTo2FANew'), admin_url('admin-ajax.php')))); /* * A successful response will be in the format * { * "ok": 1, * "records": { * "skipped": { * <id>: true, ... if applicable * }, * "totp": { * <id>: { * "secret": <secret>, * "recovery": <recovery keys>, * "ctime": <timestamp created>, * "vtime": <timestamp of last verified TOTP code> * }, * ... * } * } * } */ if (!is_array($response) || !isset($response['records']) || !is_array($response['records'])) { return array('ok' => 0, 'fail' => 1); } $secrets = $response['records']; if (!isset($secrets['totp']) || !is_array($secrets['totp'])) { return array('ok' => 0, 'fail' => 2); } $import = array(); foreach ($twoFactorUsers as &$t) { if ($t[3] == 'activated') { $user = new WP_User($t[0]); if ($user instanceof WP_User && $user->exists()) { if ((!isset($t[5]) || $t[5] != 'authenticator')) { //Do nothing } else { if (isset($secrets['totp'][$t[6]])) { $import[$user->ID] = $secrets['totp'][$t[6]]; $import[$user->ID]['type'] = 'authenticator'; $total++; } } } } } $imported = WFLSPHP52Compatability::import_2fa($import); } catch (Exception $e) { wordfence::status(4, 'error', sprintf(/* translators: Error message. */ __('2FA Migration Error: %s', 'wordfence'), $e->getMessage())); return array('ok' => 0, 'fail' => 1); } wfConfig::remove('new2FAMigrationNonce'); wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, true); return array('ok' => 1, 'total' => $total, 'imported' => $imported); } //No legacy 2FA active, just set the option. wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, true); return array('ok' => 1); } public static function ajax_switchTo2FAOld_callback() { wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, false); return array('ok' => 1); } public static function validateProfileUpdate($errors, $update, $userData){ wordfence::validatePassword($errors, $userData); } public static function validatePassword($errors, $userData) { $password = (isset($_POST['pass1']) && trim($_POST['pass1'])) ? $_POST['pass1'] : false; $user_id = isset($userData->ID) ? $userData->ID : false; $username = isset($_POST["user_login"]) ? $_POST["user_login"] : $userData->user_login; if ($password == false) { return $errors; } if ($errors->get_error_data("pass")) { return $errors; } $enforceStrongPasswds = false; if (wfConfig::get('loginSec_strongPasswds_enabled')) { if (wfConfig::get('loginSec_strongPasswds') == 'pubs') { if (user_can($user_id, 'publish_posts')) { $enforceStrongPasswds = true; } } else if (wfConfig::get('loginSec_strongPasswds') == 'all') { $enforceStrongPasswds = true; } } if ($enforceStrongPasswds && !wordfence::isStrongPasswd($password, $username)) { $errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.', 'wordfence')); return $errors; } $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if (preg_match(self::$passwordCodePattern, $password) && is_array($twoFactorUsers) && count($twoFactorUsers) > 0) { $errors->add('pass', __('Passwords containing a space followed by "wf" without quotes are not allowed.', 'wordfence')); return $errors; } $enforceBreachedPasswds = false; if (wfConfig::get('loginSec_breachPasswds_enabled')) { if ($user_id !== false && wfConfig::get('loginSec_breachPasswds') == 'admins' && wfUtils::isAdmin($user_id)) { $enforceBreachedPasswds = true; } else if ($user_id !== false && wfConfig::get('loginSec_breachPasswds') == 'pubs' && user_can($user_id, 'publish_posts')) { $enforceBreachedPasswds = true; } } if ($enforceBreachedPasswds && wfCredentialsController::isLeakedPassword($username, $password)) { $errors->add('pass', sprintf(/* translators: Support URL. */ __('Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href="%s">Learn More</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD))); return $errors; } else if ($user_id !== false) { wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($user_id)); wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($user_id)); wfCredentialsController::clearCachedCredentialStatus($userData); } return $errors; } public static function isStrongPasswd($passwd, $username ) { $strength = 0; if(strlen( trim( $passwd ) ) < 5) return false; if(strtolower( $passwd ) == strtolower( $username ) ) return false; if(preg_match('/(?:password|passwd|mypass|wordpress)/i', $passwd)){ return false; } if($num = preg_match_all( "/\d/", $passwd, $matches) ){ $strength += ((int)$num * 10); } if ( preg_match( "/[a-z]/", $passwd ) ) $strength += 26; if ( preg_match( "/[A-Z]/", $passwd ) ) $strength += 26; if ($num = preg_match_all( "/[^a-zA-Z0-9]/", $passwd, $matches)){ $strength += (31 * (int)$num); } if($strength > 60){ return true; } } public static function lostPasswordPost() { $IP = wfUtils::getIP(); if ($request = self::getLog()->getCurrentRequest()) { $request->action = 'lostPassword'; $request->save(); } if (wfBlock::isWhitelisted($IP)) { return; } $lockout = wfBlock::lockoutForIP(wfUtils::getIP()); if ($lockout !== false) { $lockout->recordBlock(); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } if (empty($_POST['user_login'])) { return; } $user_login = $_POST['user_login']; if (is_array($user_login)) { $user_login = wfUtils::array_first($user_login); } $user_login = trim($user_login); $user = get_user_by('login', $user_login); if (!$user) { $user = get_user_by('email', $user_login); } if($user){ $alertCallback = array(new wfLostPasswdFormAlert($user, wfUtils::getIP()), 'send'); do_action('wordfence_security_event', 'lostPasswdForm', array( 'email' => $user->user_email, 'ip' => wfUtils::getIP(), ), $alertCallback); } if(wfConfig::get('loginSecurityEnabled')){ $tKey = self::getForgotPasswordFailureCountTransient($IP); $forgotAttempts = get_transient($tKey); if($forgotAttempts){ $forgotAttempts++; } else { $forgotAttempts = 1; } if($forgotAttempts >= wfConfig::get('loginSec_maxForgotPasswd')){ self::lockOutIP($IP, sprintf( /* translators: 1. Password reset limit (number). 2. WordPress username. */ __('Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: \'%2$s\''), wfConfig::get('loginSec_maxForgotPasswd'), $_POST['user_login'] )); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } set_transient($tKey, $forgotAttempts, wfConfig::get('loginSec_countFailMins') * 60); } } public static function lockOutIP($IP, $reason) { wfBlock::createLockout($reason, $IP, wfBlock::lockoutDuration(), time(), time(), 1); self::getLog()->tagRequestForLockout($reason); $alertCallback = array(new wfLoginLockoutAlert($IP, $reason), 'send'); do_action('wordfence_security_event', 'loginLockout', array( 'ip' => $IP, 'reason' => $reason, 'duration' => wfBlock::lockoutDuration(), ), $alertCallback); } public static function getLoginFailureCountTransient($IP) { return 'wflginfl_' . bin2hex(wfUtils::inet_pton($IP)); } public static function getForgotPasswordFailureCountTransient($IP) { return 'wffgt_' . bin2hex(wfUtils::inet_pton($IP)); } public static function clearLockoutCounters($IP) { delete_transient(self::getLoginFailureCountTransient($IP)); delete_transient(self::getForgotPasswordFailureCountTransient($IP)); } public static function veryFirstAction() { /** @var wpdb $wpdb ; */ global $wpdb; self::initProtection(); $wfFunc = isset($_GET['_wfsf']) ? @$_GET['_wfsf'] : false; if($wfFunc == 'unlockEmail'){ $nonceValid = wp_verify_nonce(@$_POST['nonce'], 'wf-form'); if (!$nonceValid && method_exists(wfWAF::getInstance(), 'createNonce')) { $nonceValid = wfWAF::getInstance()->verifyNonce(@$_POST['nonce'], 'wf-form'); } if(!$nonceValid){ die(__("Sorry but your browser sent an invalid security token when trying to use this form.", 'wordfence')); } $numTries = get_transient('wordfenceUnlockTries'); if($numTries > 10){ printf("<html><body><h1>%s</h1><p>%s</p></body></html>", esc_html__('Please wait 3 minutes and try again', 'wordfence'), esc_html__('You have used this form too much. Please wait 3 minutes and try again.', 'wordfence') ); exit(); } if(! $numTries){ $numTries = 1; } else { $numTries = $numTries + 1; } set_transient('wordfenceUnlockTries', $numTries, 180); $email = trim(@$_POST['email']); global $wpdb; $ws = $wpdb->get_results($wpdb->prepare("SELECT ID, user_login FROM $wpdb->users WHERE user_email = %s", $email)); $found = false; foreach($ws as $user){ $userDat = get_userdata($user->ID); if(wfUtils::isAdmin($userDat)){ if($email == $userDat->user_email){ $found = true; break; } } } if(! $found){ foreach(wfConfig::getAlertEmails() as $alertEmail){ if($alertEmail == $email){ $found = true; break; } } } if($found){ $key = wfUtils::bigRandomHex(); $IP = wfUtils::getIP(); set_transient('wfunlock_' . $key, $IP, 1800); $content = wfUtils::tmpl('email_unlockRequest.php', array( 'siteName' => get_bloginfo('name', 'raw'), 'siteURL' => wfUtils::getSiteBaseURL(), 'unlockHref' => wfUtils::getSiteBaseURL() . '?_wfsf=unlockAccess&key=' . $key, 'key' => $key, 'IP' => $IP )); wp_mail($email, __("Unlock email requested", 'wordfence'), $content, "Content-Type: text/html"); } echo "<html><body><h1>" . esc_html__('Your request was received', 'wordfence') . "</h1><p>" . esc_html(sprintf(/* translators: Email address. */ __("We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now.", 'wordfence'), wp_kses($email, array()))) . "</p></body></html>"; exit(); } else if($wfFunc == 'unlockAccess'){ if (!preg_match('/^(?:(?:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9](?::|$)){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))$/i', get_transient('wfunlock_' . $_GET['key']))) { _e("Invalid key provided for authentication.", 'wordfence'); exit(); } if($_GET['func'] == 'unlockMyIP'){ wfBlock::unblockIP(wfUtils::getIP()); if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } self::clearLockoutCounters(wfUtils::getIP()); header('Location: ' . wp_login_url()); exit(); } else if($_GET['func'] == 'unlockAllIPs'){ wordfence::status(1, 'info', __("Request received via unlock email link to unblock all IPs.", 'wordfence')); wfBlock::removeAllIPBlocks(); if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } self::clearLockoutCounters(wfUtils::getIP()); header('Location: ' . wp_login_url()); exit(); } else if($_GET['func'] == 'disableRules'){ wfConfig::set('firewallEnabled', 0); wfConfig::set('loginSecurityEnabled', 0); wordfence::status(1, 'info', __("Request received via unlock email link to unblock all IPs via disabling firewall rules.", 'wordfence')); wfBlock::removeAllIPBlocks(); wfBlock::removeAllCountryBlocks(); if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } self::clearLockoutCounters(wfUtils::getIP()); header('Location: ' . wp_login_url()); exit(); } else { _e("Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader.", 'wordfence'); exit(); } } else if ($wfFunc == 'detectProxy') { wfUtils::doNotCache(); if (wfUtils::processDetectProxyCallback()) { self::getLog()->getCurrentRequest()->action = 'scan:detectproxy'; //Exempt a valid callback from live traffic echo wfConfig::get('detectProxyRecommendation', '-'); } else { echo '0'; } exit(); } else if ($wfFunc == 'removeAlertEmail') { wfUtils::doNotCache(); $payloadStatus = false; $jwt = (isset($_GET['jwt']) && is_string($_GET['jwt'])) ? $_GET['jwt'] : ''; if (!empty($jwt)) { $payload = wfUtils::decodeJWT($jwt); if ($payload && isset($payload['email'])) { $payloadStatus = true; } } if (isset($_POST['resend'])) { $email = trim(@$_POST['email']); $found = false; $alertEmails = wfConfig::getAlertEmails(); foreach ($alertEmails as $e) { if ($e == $email) { $found = true; break; } } if ($found) { $content = wfUtils::tmpl('email_unsubscribeRequest.php', array( 'siteName' => get_bloginfo('name', 'raw'), 'siteURL' => wfUtils::getSiteBaseURL(), 'IP' => wfUtils::getIP(), 'jwt' => wfUtils::generateJWT(array('email' => $email)), )); wp_mail($email, __("Unsubscribe Requested", 'wordfence'), $content, "Content-Type: text/html"); } echo wfView::create('common/unsubscribe', array( 'state' => 'resent', ))->render(); exit(); } else if (!$payloadStatus) { echo wfView::create('common/unsubscribe', array( 'state' => 'bad', ))->render(); exit(); } else if (isset($_POST['confirm'])) { $confirm = wfUtils::truthyToBoolean($_POST['confirm']); if ($confirm) { $found = false; $alertEmails = wfConfig::getAlertEmails(); $updatedAlertEmails = array(); foreach ($alertEmails as $alertEmail) { if ($alertEmail == $payload['email']) { $found = true; } else { $updatedAlertEmails[] = $alertEmail; } } if ($found) { wfConfig::set('alertEmails', implode(',', $updatedAlertEmails)); } echo wfView::create('common/unsubscribe', array( 'jwt' => $_GET['jwt'], 'email' => $payload['email'], 'state' => 'unsubscribed', ))->render(); exit(); } } echo wfView::create('common/unsubscribe', array( 'jwt' => $_GET['jwt'], 'email' => $payload['email'], 'state' => 'prompt', ))->render(); exit(); } else if ($wfFunc == 'installLicense') { if (wfUtils::isAdmin()) { wfUtils::doNotCache(); if (isset($_POST['license'])) { $nonceValid = wp_verify_nonce(@$_POST['nonce'], 'wf-form'); if (!$nonceValid) { die(__('Sorry but your browser sent an invalid security token when trying to use this form.', 'wordfence')); } $changes = array('apiKey' => $_POST['license']); $errors = wfConfig::validate($changes); if ($errors !== true) { $error = __('An error occurred while saving the license.', 'wordfence'); if (count($errors) == 1) { $error = sprintf(/* translators: Error message. */ __('An error occurred while saving the license: %s', 'wordfence'), $errors[0]['error']); } echo wfView::create('common/license', array( 'state' => 'bad', 'error' => $error, ))->render(); exit(); } try { wfConfig::save(wfConfig::clean($changes)); echo wfView::create('common/license', array( 'state' => 'installed', ))->render(); exit(); } catch (Exception $e) { echo wfView::create('common/license', array( 'state' => 'bad', 'error' => sprintf(/* translators: Error message. */ __('An error occurred while saving the license: %s', 'wordfence'), $e->getMessage()), ))->render(); exit(); } } echo wfView::create('common/license', array( 'state' => 'prompt', ))->render(); exit(); } } if (is_main_site() && wfUtils::isAdmin()) { if (wp_next_scheduled('wordfence_daily_cron') === false) { wp_schedule_event(time() + 600, 'daily', 'wordfence_daily_cron'); wordfence::status(2, 'info', __("Rescheduled missing daily cron", 'wordfence')); } if (wp_next_scheduled('wordfence_hourly_cron') === false) { wp_schedule_event(time() + 600, 'hourly', 'wordfence_hourly_cron'); wordfence::status(2, 'info', __("Rescheduled missing hourly cron", 'wordfence')); } } // Sync the WAF data with the database. $updateCountries = false; if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) { $homeurl = wfUtils::wpHomeURL(); $siteurl = wfUtils::wpSiteURL(); //Sync the GeoIP database if needed $destination = WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb'; if (!file_exists($destination) || wfConfig::get('needsGeoIPSync')) { $allowSync = false; if (wfConfig::createLock('wfSyncGeoIP')) { $status = get_transient('wfSyncGeoIPActive'); if (!$status) { $allowSync = true; set_transient('wfSyncGeoIPActive', true, 3600); } wfConfig::releaseLock('wfSyncGeoIP'); } if ($allowSync) { if (version_compare(phpversion(), '5.4.0', '>=')) { if (!class_exists('wfGeoIP2')) { require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php'); } try { $wflogsGeoIP = @wfGeoIP2::shared(wfGeoIP2::DB_WFLOGS); $bundledGeoIP = @wfGeoIP2::shared(wfGeoIP2::DB_BUNDLED); if ($wflogsGeoIP === false || $wflogsGeoIP->version() != $bundledGeoIP->version()) { $source = dirname(__FILE__) . '/GeoLite2-Country.mmdb'; if (copy($source, $destination)) { $shash = ''; $dhash = ''; $sp = @fopen($source, "rb"); if ($sp) { $scontext = hash_init('sha256'); while (!feof($sp)) { $data = fread($sp, 65536); if ($data === false) { $scontext = false; break; } hash_update($scontext, $data); } fclose($sp); if ($scontext !== false) { $shash = hash_final($scontext, false); } } $dp = @fopen($destination, "rb"); if ($dp) { $dcontext = hash_init('sha256'); while (!feof($dp)) { $data = fread($dp, 65536); if ($data === false) { $dcontext = false; break; } hash_update($dcontext, $data); } fclose($dp); if ($scontext !== false) { $dhash = hash_final($dcontext, false); } } if (hash_equals($shash, $dhash)) { $updateCountries = true; wfConfig::remove('needsGeoIPSync'); delete_transient('wfSyncGeoIPActive'); } } } else { wfConfig::remove('needsGeoIPSync'); delete_transient('wfSyncGeoIPActive'); } } catch (Exception $e) { //Ignore } } } } if (!$updateCountries && version_compare(phpversion(), '5.4.0', '>=')) { $previousVersionHash = wfConfig::get('geoIPVersionHash', ''); $geoIPVersion = wfUtils::geoIPVersion(); if (is_array($geoIPVersion)) { $geoIPVersion = implode(',', $geoIPVersion); } $geoIPVersionHash = hash('sha256', $geoIPVersion); $updateCountries = ($geoIPVersion !== null && $previousVersionHash != $geoIPVersionHash); } if ($updateCountries) { // Fix the data in the country column $intervalSQL = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)'; switch (wfConfig::get('email_summary_interval', 'weekly')) { case 'daily': $intervalSQL = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)'; break; case 'monthly': $intervalSQL = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)'; break; } $table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog'); $ip_results = $wpdb->get_results("SELECT DISTINCT countryCode, IP FROM `{$table_wfBlockedIPLog}` WHERE unixday >= {$intervalSQL} GROUP BY IP ORDER BY unixday DESC LIMIT 500"); if ($ip_results) { foreach ($ip_results as $ip_row) { $country = wfUtils::IP2Country(wfUtils::inet_ntop($ip_row->IP)); if ($country != $ip_row->countryCode) { $wpdb->query($wpdb->prepare("UPDATE `{$table_wfBlockedIPLog}` SET countryCode = %s WHERE IP = %s", $country, $ip_row->IP)); } } } $geoIPVersion = wfUtils::geoIPVersion(); if (is_array($geoIPVersion)) { $geoIPVersion = implode(',', $geoIPVersion); } $geoIPVersionHash = hash('sha256', $geoIPVersion); wfConfig::set('geoIPVersionHash', $geoIPVersionHash); } try { $sapi = @php_sapi_name(); if ($sapi != "cli") { $lastPermissionsTemplateCheck = wfConfig::getInt('lastPermissionsTemplateCheck', 0); if (defined('WFWAF_LOG_PATH') && ($lastPermissionsTemplateCheck + 43200) < time()) { //Run no more frequently than every 12 hours $timestamp = preg_replace('/[^0-9]/', '', microtime(false)); //We avoid using tmpfile since it can potentially create one with different permissions than the defaults $tmpTemplate = rtrim(WFWAF_LOG_PATH, '/') . "/template.{$timestamp}.tmp"; $template = rtrim(WFWAF_LOG_PATH, '/') . '/template.php'; @unlink($tmpTemplate); @file_put_contents($tmpTemplate, "<?php exit('Access denied'); __halt_compiler(); ?>\n"); $tmpStat = @stat($tmpTemplate); if ($tmpStat !== false) { $mode = $tmpStat[2] & 0777; $updatedMode = 0600; if (($mode & 0020) == 0020) { //Group writable $updatedMode = $updatedMode | 0060; } if (defined('WFWAF_LOG_FILE_MODE')) { $updatedMode = WFWAF_LOG_FILE_MODE; } $stat = @stat($template); if ($stat === false || ($stat[2] & 0777) != $updatedMode) { @chmod($tmpTemplate, $updatedMode); @unlink($template); @rename($tmpTemplate, $template); } @unlink($tmpTemplate); } else { @unlink($tmpTemplate); } wfConfig::set('lastPermissionsTemplateCheck', time()); @chmod(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755)); wfWAFWordPress::writeHtaccess(); $contents = self::_wflogsContents(); if ($contents) { $validFiles = wfWAF::getInstance()->fileList(); foreach ($validFiles as &$vf) { $vf = basename($vf); } $validFiles = array_filter($validFiles); $previousWflogsFileList = wfConfig::getJSON('previousWflogsFileList', array()); $wflogs = realpath(WFWAF_LOG_PATH); $filesRemoved = array(); foreach ($contents as $f) { if (!in_array($f, $validFiles) && in_array($f, $previousWflogsFileList)) { $fullPath = $f; $removed = self::_recursivelyRemoveWflogs($f); $filesRemoved = array_merge($filesRemoved, $removed); } } $contents = self::_wflogsContents(); wfConfig::setJSON('previousWflogsFileList', $contents); if (!empty($filesRemoved)) { $removalHistory = wfConfig::getJSON('diagnosticsWflogsRemovalHistory', array()); $removalHistory = array_slice($removalHistory, 0, 4); array_unshift($removalHistory, array(time(), $filesRemoved)); wfConfig::setJSON('diagnosticsWflogsRemovalHistory', $removalHistory); } } } } } catch (Exception $e) { //Ignore } try { $configDefaults = array( 'apiKey' => wfConfig::get('apiKey'), 'isPaid' => !!wfConfig::get('isPaid'), 'siteURL' => $siteurl, 'homeURL' => $homeurl, 'whitelistedIPs' => (string) wfConfig::get('whitelisted'), 'whitelistedServiceIPs' => @json_encode(wfUtils::whitelistedServiceIPs()), 'howGetIPs' => (string) wfConfig::get('howGetIPs'), 'howGetIPs_trusted_proxies' => wfConfig::get('howGetIPs_trusted_proxies', ''), 'detectProxyRecommendation' => (string) wfConfig::get('detectProxyRecommendation'), 'other_WFNet' => !!wfConfig::get('other_WFNet', true), 'pluginABSPATH' => ABSPATH, 'serverIPs' => json_encode(wfUtils::serverIPs()), 'blockCustomText' => wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))), 'betaThreatDefenseFeed' => !!wfConfig::get('betaThreatDefenseFeed'), 'disableWAFIPBlocking' => wfConfig::get('disableWAFIPBlocking'), 'wordpressVersion' => wfConfig::get('wordpressVersion'), 'wordpressPluginVersions' => wfConfig::get_ser('wordpressPluginVersions'), 'wordpressThemeVersions' => wfConfig::get_ser('wordpressThemeVersions'), 'WPLANG' => get_site_option('WPLANG'), ); if (wfUtils::isAdmin()) { $errorNonceKey = 'errorNonce_' . get_current_user_id(); $configDefaults[$errorNonceKey] = wp_create_nonce('wf-waf-error-page'); //Used by the AJAX watcher script } foreach ($configDefaults as $key => $value) { $waf->getStorageEngine()->setConfig($key, $value, 'synced'); } if (wfConfig::get('timeoffset_wf') !== false) { $waf->getStorageEngine()->setConfig('timeoffset_wf', wfConfig::get('timeoffset_wf'), 'synced'); } else { $waf->getStorageEngine()->unsetConfig('timeoffset_wf', 'synced'); } if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } if (wfUtils::isAdmin()) { if ($waf->getStorageEngine()->getConfig('wafStatus', '') == 'learning-mode') { if ($waf->getStorageEngine()->getConfig('learningModeGracePeriodEnabled', false)) { if ($waf->getStorageEngine()->getConfig('learningModeGracePeriod', 0) <= time()) { // Reached the end of the grace period, activate the WAF. $waf->getStorageEngine()->setConfig('wafStatus', 'enabled'); $waf->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 0); $waf->getStorageEngine()->unsetConfig('learningModeGracePeriod'); $firewall = new wfFirewall(); $firewall->syncStatus(true); } } } } if (empty($_GET['wordfence_syncAttackData'])) { $table_wfHits = wfDB::networkTable('wfHits'); if ($waf->getStorageEngine() instanceof wfWAFStorageMySQL) { $lastAttackMicroseconds = floatval($waf->getStorageEngine()->getConfig('lastAttackDataTruncateTime')); } else { $lastAttackMicroseconds = $wpdb->get_var("SELECT MAX(attackLogTime) FROM {$table_wfHits}"); } if (get_site_option('wordfence_lastSyncAttackData', 0) < time() - 4) { if ($waf->getStorageEngine()->hasNewerAttackData($lastAttackMicroseconds)) { if (get_site_option('wordfence_syncingAttackData') <= time() - 60) { // Could be the request to itself is not completing, add ajax to the head as a workaround $attempts = get_site_option('wordfence_syncAttackDataAttempts', 0); if ($attempts > 10) { add_action('wp_head', 'wordfence::addSyncAttackDataAjax'); add_action('login_head', 'wordfence::addSyncAttackDataAjax'); add_action('admin_head', 'wordfence::addSyncAttackDataAjax'); } else { update_site_option('wordfence_syncAttackDataAttempts', ++$attempts); wp_remote_post(add_query_arg('wordfence_syncAttackData', microtime(true), home_url('/')), array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', false) )); } } } } } if ($waf instanceof wfWAFWordPress && ($learningModeAttackException = $waf->getLearningModeAttackException())) { $log = self::getLog(); $log->initLogRequest(); $request = $log->getCurrentRequest(); $request->action = 'learned:waf'; $request->attackLogTime = microtime(true); $ruleIDs = array(); /** @var wfWAFRule $failedRule */ foreach ($learningModeAttackException->getFailedRules() as $failedRule) { $ruleIDs[] = $failedRule->getRuleID(); } $actionData = array( 'learningMode' => 1, 'failedRules' => $ruleIDs, 'paramKey' => $learningModeAttackException->getParamKey(), 'paramValue' => $learningModeAttackException->getParamValue(), ); if ($ruleIDs && $ruleIDs[0]) { $rule = $waf->getRule($ruleIDs[0]); if ($rule) { $request->actionDescription = $rule->getDescription(); $actionData['category'] = $rule->getCategory(); $actionData['ssl'] = $waf->getRequest()->getProtocol() === 'https'; $actionData['fullRequest'] = base64_encode($waf->getRequest()); } } $request->actionData = wfRequestModel::serializeActionData($actionData); register_shutdown_function(array($request, 'save')); self::scheduleSendAttackData(); } } catch (wfWAFStorageFileException $e) { // We don't have anywhere to write files in this scenario. } catch (wfWAFStorageEngineMySQLiException $e) { // Ignore and continue } } if(wfConfig::get('firewallEnabled')){ $wfLog = self::getLog(); $wfLog->firewallBadIPs(); $IP = wfUtils::getIP(); if (wfBlock::isWhitelisted($IP)) { return; } if (wfConfig::get('neverBlockBG') == 'neverBlockUA' && wfCrawl::isGoogleCrawler()) { return; } if (wfConfig::get('neverBlockBG') == 'neverBlockVerified' && wfCrawl::isVerifiedGoogleCrawler()) { return; } if (wfConfig::get('bannedURLs', false)) { $URLs = explode("\n", wfUtils::cleanupOneEntryPerLine(wfConfig::get('bannedURLs'))); foreach ($URLs as $URL) { if (preg_match(wfUtils::patternToRegex($URL, ''), $_SERVER['REQUEST_URI'])) { $reason = __('Accessed a banned URL', 'wordfence'); wfBlock::createIP($reason, $IP, wfBlock::blockDuration(), time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY); wfActivityReport::logBlockedIP($IP, null, 'bannedurl'); $wfLog->tagRequestForBlock($reason); $wfLog->do503(3600, __("Accessed a banned URL", 'wordfence')); //exits } } } if (wfConfig::get('other_blockBadPOST') == '1' && $_SERVER['REQUEST_METHOD'] == 'POST' && empty($_SERVER['HTTP_USER_AGENT']) && empty($_SERVER['HTTP_REFERER'])) { $reason = __('POST received with blank user-agent and referer', 'wordfence'); wfBlock::createIP($reason, $IP, wfBlock::blockDuration(), time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY); wfActivityReport::logBlockedIP($IP, null, 'badpost'); $wfLog->tagRequestForBlock($reason); $wfLog->do503(3600, __("POST received with blank user-agent and referer", 'wordfence')); //exits } } } private static function _wflogsContents() { $dir = opendir(WFWAF_LOG_PATH); if ($dir) { $contents = array(); while ($path = readdir($dir)) { if ($path == '.' || $path == '..') { continue; } $contents[] = $path; } closedir($dir); return $contents; } return false; } /** * Removes a path within wflogs, recursing as necessary. * * @param string $file * @param array $processedDirs * @return array The list of removed files/folders. */ private static function _recursivelyRemoveWflogs($file, $processedDirs = array()) { if (preg_match('~(?:^|/|\\\\)\.\.(?:/|\\\\|$)~', $file)) { return array(); } if (stripos(WFWAF_LOG_PATH, 'wflogs') === false) { //Sanity check -- if not in a wflogs folder, user will have to do removal manually return array(); } $path = rtrim(WFWAF_LOG_PATH, '/') . '/' . $file; if (is_link($path)) { if (@unlink($path)) { return array($file); } return array(); } if (is_dir($path)) { $real = realpath($file); if (in_array($real, $processedDirs)) { return array(); } $processedDirs[] = $real; $count = 0; $dir = opendir($path); if ($dir) { $contents = array(); while ($sub = readdir($dir)) { if ($sub == '.' || $sub == '..') { continue; } $contents[] = $sub; } closedir($dir); $filesRemoved = array(); foreach ($contents as $f) { $removed = self::_recursivelyRemoveWflogs($file . '/' . $f, $processedDirs); $filesRemoved = array($filesRemoved, $removed); } } if (@rmdir($path)) { $filesRemoved[] = $file; } return $filesRemoved; } if (@unlink($path)) { return array($file); } return array(); } public static function loginAction($username){ if(sizeof($_POST) < 1){ return; } //only execute if login form is posted if(! $username){ return; } wfConfig::inc('totalLogins'); $user = get_user_by('login', $username); $userID = $user ? $user->ID : 0; self::getLog()->logLogin('loginOK', 0, $username); if(wfUtils::isAdmin($user)){ wfConfig::set_ser('lastAdminLogin', array( 'userID' => $userID, 'username' => $username, 'firstName' => $user->first_name, 'lastName' => $user->last_name, 'time' => wfUtils::localHumanDateShort(), 'IP' => wfUtils::getIP() )); } $salt = wp_salt('logged_in'); //TODO: Drop support for legacy cookie after 1 year $legacyCookieName = 'wf_loginalerted_' . hash_hmac('sha256', wfUtils::getIP() . '|' . $user->ID, $salt); $cookieName = 'wf_loginalerted_' . hash_hmac('sha256', $user->ID, $salt); $cookieValue = hash_hmac('sha256', $user->user_login, $salt); $newDevice = !(isset($_COOKIE[$legacyCookieName]) && hash_equals($cookieValue, $_COOKIE[$legacyCookieName])); //Check legacy cookie if($newDevice){ $newDevice = !(isset($_COOKIE[$cookieName]) && hash_equals($cookieValue, $_COOKIE[$cookieName])); } else{ $_COOKIE[$cookieName]=$cookieValue; } if(wfUtils::isAdmin($userID)){ $securityEvent = 'adminLogin'; $alertCallback = array(new wfAdminLoginAlert($cookieName, $cookieValue, $username, wfUtils::getIP()), 'send'); } else { $securityEvent = 'nonAdminLogin'; $alertCallback = array(new wfNonAdminLoginAlert($cookieName, $cookieValue, $username, wfUtils::getIP()), 'send'); } if($newDevice) $securityEvent.='NewLocation'; do_action('wordfence_security_event', $securityEvent, array( 'username' => $username, 'ip' => wfUtils::getIP(), ), $alertCallback); if (wfConfig::get(wfUtils::isAdmin($userID)?'alertOn_firstAdminLoginOnly':'alertOn_firstNonAdminLoginOnly')) { //Purge legacy cookie if still present if(array_key_exists($legacyCookieName, $_COOKIE)) wfUtils::setcookie($legacyCookieName, '', 1, '/', null, wfUtils::isFullSSL(), true); wfUtils::setcookie($cookieName, $cookieValue, time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true); } } public static function registrationFilter($errors, $sanitizedLogin, $userEmail) { if (wfConfig::get('loginSec_blockAdminReg') && $sanitizedLogin == 'admin') { $errors->add('user_login_error', __('<strong>ERROR</strong>: You can\'t register using that username', 'wordfence')); } return $errors; } public static function wooRegistrationFilter($wooCustomerData) { /* $wooCustomerData matches: array( 'user_login' => $username, 'user_pass' => $password, 'user_email' => $email, 'role' => 'customer', ) */ if (wfConfig::get('loginSec_blockAdminReg') && is_array($wooCustomerData) && isset($wooCustomerData['user_login']) && isset($wooCustomerData['user_email']) && preg_match('/^admin\d*$/i', $wooCustomerData['user_login'])) { //Converts a username of `admin` generated from something like `admin@example.com` to `adminexample` $emailComponents = explode('@', $wooCustomerData['user_email']); if (strpos(wfUtils::array_last($emailComponents), '.') === false) { //e.g., admin@localhost $wooCustomerData['user_login'] .= wfUtils::array_last($emailComponents); } else { //e.g., admin@example.com $hostComponents = explode('.', wfUtils::array_last($emailComponents)); array_pop($hostComponents); $wooCustomerData['user_login'] .= wfUtils::array_last($hostComponents); } //If it's still `admin` at this point, it will fall through and get blocked by wordfence::blacklistedUsernames } return $wooCustomerData; } public static function oembedAuthorFilter($data, $post, $width, $height) { unset($data['author_name']); unset($data['author_url']); return $data; } public static function jsonAPIAuthorFilter($response, $handler, $request) { $route = $request->get_route(); if (!current_user_can('edit_others_posts')) { $urlBase = wfWP_REST_Users_Controller::wfGetURLBase(); if (preg_match('~' . preg_quote($urlBase, '~') . '/*$~i', $route)) { $error = new WP_Error('rest_user_cannot_view', __('Sorry, you are not allowed to list users.'), array('status' => rest_authorization_required_code())); $response = rest_ensure_response($error); if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); } } else if (preg_match('~' . preg_quote($urlBase, '~') . '/+(\d+)/*$~i', $route, $matches)) { $id = (int) $matches[1]; if (get_current_user_id() !== $id) { $error = new WP_Error('rest_user_invalid_id', __('Invalid user ID.'), array('status' => 404)); $response = rest_ensure_response($error); if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); } } } } return $response; } public static function jsonAPIAdjustHeaders($response, $server, $request) { if (defined('WORDFENCE_REST_API_SUPPRESSED')) { $response->header('Allow', 'GET'); } return $response; } public static function wpSitemapUserProviderFilter($provider, $name) { if ($name === 'users') { return false; } return $provider; } public static function _filterCentralFromLiveTraffic($dispatch_result, $request, $route, $handler) { if (preg_match('~^/wordfence/v\d+/~i', $route)) { self::getLog()->canLogHit = false; } return $dispatch_result; } public static function showTwoFactorField() { $existingContents = ob_get_contents(); if (!preg_match('/wftwofactornonce:([0-9]+)\/(.+?)\s/', $existingContents, $matches)) { return; } $userID = intval($matches[1]); $twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $matches[2]); if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) { return; } //Strip out the username and password fields $formPosition = strrpos($existingContents, '<form'); $formTagEnd = strpos($existingContents, '>', $formPosition); if ($formPosition === false || $formTagEnd === false) { return; } ob_end_clean(); ob_start(); echo substr($existingContents, 0, $formTagEnd + 1); //Add the 2FA field echo "<p> <label for=\"wfAuthenticationCode\">Authentication Code<br> <input type=\"text\" size=\"6\" class=\"input\" id=\"wordfence_authFactor\" name=\"wordfence_authFactor\" autofocus></label> <input type=\"hidden\" id=\"wordfence_twoFactorUser\" name=\"wordfence_twoFactorUser\" value=\"" . $userID . "\"> <input type=\"hidden\" id=\"wordfence_twoFactorNonce\" name=\"wordfence_twoFactorNonce\" value=\"" . $twoFactorNonce . "\"> </p>"; } private static function verifyTwoFactorIntermediateValues($userID, $twoFactorNonce) { $user = get_user_by('ID', $userID); if (!$user || get_class($user) != 'WP_User') { return false; } //Check that the user exists $expectedNonce = get_user_meta($user->ID, '_wf_twoFactorNonce', true); $twoFactorNonceTime = get_user_meta($user->ID, '_wf_twoFactorNonceTime', true); if (empty($twoFactorNonce) || empty($twoFactorNonceTime)) { return false; } //Ensure the two factor nonce and time have been set if ($twoFactorNonce != $expectedNonce) { return false; } //Verify the nonce matches the expected $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if (!$twoFactorUsers || !is_array($twoFactorUsers)) { return false; } //Make sure there are two factor users configured foreach ($twoFactorUsers as &$t) { //Ensure the two factor nonce hasn't expired if ($t[0] == $user->ID && $t[3] == 'activated') { if (isset($t[5]) && $t[5] == 'authenticator') { $graceTime = WORDFENCE_TWO_FACTOR_GRACE_TIME_AUTHENTICATOR; } else { $graceTime = WORDFENCE_TWO_FACTOR_GRACE_TIME_PHONE; } return ((time() - $twoFactorNonceTime) < $graceTime); } } return false; } public static function authenticateFilter($authUser, $username, $passwd) { wfConfig::inc('totalLoginHits'); //The total hits to wp-login.php including logins, logouts and just hits. $IP = wfUtils::getIP(); $secEnabled = wfConfig::get('loginSecurityEnabled'); $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); $userDat = (isset($_POST['wordfence_userDat']) ? $_POST['wordfence_userDat'] : false); $checkBreachList = $secEnabled && !wfBlock::isWhitelisted($IP) && wfConfig::get('loginSec_breachPasswds_enabled') && is_object($authUser) && get_class($authUser) == 'WP_User' && ((wfConfig::get('loginSec_breachPasswds') == 'admins' && wfUtils::isAdmin($authUser)) || (wfConfig::get('loginSec_breachPasswds') == 'pubs' && user_can($authUser, 'publish_posts'))); $usingBreachedPassword = false; if ($checkBreachList) { $cacheStatus = wfCredentialsController::cachedCredentialStatus($authUser); if ($cacheStatus != wfCredentialsController::UNCACHED) { $usingBreachedPassword = ($cacheStatus == wfCredentialsController::LEAKED); } else { if (wfCredentialsController::isLeakedPassword($authUser->username, $passwd)) { $usingBreachedPassword = true; } wfCredentialsController::setCachedCredentialStatus($authUser, $usingBreachedPassword); } } $checkTwoFactor = $secEnabled && !wfBlock::isWhitelisted($IP) && wfConfig::get('isPaid') && isset($twoFactorUsers) && is_array($twoFactorUsers) && sizeof($twoFactorUsers) > 0 && is_object($userDat) && get_class($userDat) == 'WP_User' && wfCredentialsController::useLegacy2FA(); if ($checkTwoFactor) { $twoFactorRecord = false; $hasActivatedTwoFactorUser = false; foreach ($twoFactorUsers as &$t) { if ($t[3] == 'activated') { $userID = $t[0]; $testUser = get_user_by('ID', $userID); if (is_object($testUser) && wfUtils::isAdmin($testUser)) { $hasActivatedTwoFactorUser = true; } if ($userID == $userDat->ID) { $twoFactorRecord = &$t; } } } if (isset($_POST['wordfence_authFactor']) && $_POST['wordfence_authFactor'] && $twoFactorRecord) { //User authenticated with name and password, 2FA code ready to check $userID = $userDat->ID; if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) { //Do nothing. This is the code path the old method of including the code in the password field will take -- since we already have a valid $authUser, skip the nonce verification portion } else if (isset($_POST['wordfence_twoFactorNonce'])) { $twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']); if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again.')); return self::processBruteForceAttempt(self::$authError, $username, $passwd); } } else { //Code path for old method, invalid password the second time self::$authError = $authUser; if (is_wp_error(self::$authError) && (self::$authError->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || self::$authError->get_error_code() == 'incorrect_password' || $authUser->get_error_code() == 'authentication_failed') && wfConfig::get('loginSec_maskLoginErrors')) { self::$authError = new WP_Error('incorrect_password', sprintf(/* translators: 1. WordPress username. 2. Password reset URL. */ __('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?'), $username, wp_lostpassword_url())); } return self::processBruteForceAttempt(self::$authError, $username, $passwd); } if ($usingBreachedPassword) { wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($userID)); wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf( /* translators: 1. WordPress admin panel URL. 2. Support URL. */ __('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD) ), '2faBreachPassword', array($authUser->ID)); } if (isset($twoFactorRecord[5])) { //New method TOTP $mode = $twoFactorRecord[5]; $code = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_authFactor']); $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactorTOTP_verify', array(), array('totpid' => $twoFactorRecord[6], 'code' => $code, 'mode' => $mode)); if (isset($codeResult['notPaid']) && $codeResult['notPaid']) { //No longer a paid key, let them sign in without two factor } else if (isset($codeResult['ok']) && $codeResult['ok']) { //Everything's good, let the sign in continue } else { if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) { //Using the old method of appending the code to the password if ($mode == 'authenticator') { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>).')); } else { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>).')); } } else { $loginNonce = wfWAFUtils::random_bytes(20); if ($loginNonce === false) { //Should never happen but is technically possible remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.')); return self::$authError; } $loginNonce = bin2hex($loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time()); if ($mode == 'authenticator') { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); } else { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); } } return self::processBruteForceAttempt(self::$authError, $username, $passwd); } } catch (Exception $e) { if (self::isDebugOn()) { error_log('TOTP validation error: ' . $e->getMessage()); } } // Couldn't connect to noc1, let them sign in since the password was correct. } else { //Old method phone authentication $authFactor = $_POST['wordfence_authFactor']; if (strlen($authFactor) == 4) { $authFactor = 'wf' . $authFactor; } if ($authFactor == $twoFactorRecord[2] && $twoFactorRecord[4] > time()) { // Set this 2FA code to expire in 30 seconds (for other plugins hooking into the auth process) $twoFactorRecord[4] = time() + 30; wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); } else if ($authFactor == $twoFactorRecord[2]) { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactor_verification', array(), array('phone' => $twoFactorRecord[1])); if (isset($codeResult['notPaid']) && $codeResult['notPaid']) { //No longer a paid key, let them sign in without two factor } else if (isset($codeResult['ok']) && $codeResult['ok']) { $twoFactorRecord[2] = $codeResult['code']; $twoFactorRecord[4] = time() + 1800; //30 minutes until code expires wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); //save the code the user needs to enter and return an error. $loginNonce = wfWAFUtils::random_bytes(20); if ($loginNonce === false) { //Should never happen but is technically possible remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.')); return self::$authError; } $loginNonce = bin2hex($loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time()); remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); return self::$authError; } //else: No new code was received. Let them sign in with the expired code. } catch (Exception $e) { // Couldn't connect to noc1, let them sign in since the password was correct. } } else { //Bad code, so cancel the login and return an error to user. $loginNonce = wfWAFUtils::random_bytes(20); if ($loginNonce === false) { //Should never happen but is technically possible remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.')); return self::$authError; } $loginNonce = bin2hex($loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time()); remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with \'wf\' and should be four characters (e.g., wfAB12).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); return self::processBruteForceAttempt(self::$authError, $username, $passwd); } } delete_user_meta($userDat->ID, '_wf_twoFactorNonce'); delete_user_meta($userDat->ID, '_wf_twoFactorNonceTime'); $authUser = $userDat; //Log in as the user we saved in the wp_authenticate action } else if (is_object($authUser) && get_class($authUser) == 'WP_User') { //User authenticated with name and password, prompt for the 2FA code //Verify at least one administrator has 2FA enabled $requireAdminTwoFactor = $hasActivatedTwoFactorUser && wfConfig::get('loginSec_requireAdminTwoFactor'); if ($twoFactorRecord) { if ($twoFactorRecord[0] == $userDat->ID && $twoFactorRecord[3] == 'activated') { //Yup, enabled, so require the code if ($usingBreachedPassword) { wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($authUser->ID)); wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf( /* translators: 1. WordPress admin panel URL. 2. Support URL. */ __('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), '2faBreachPassword', array($authUser->ID)); } $loginNonce = wfWAFUtils::random_bytes(20); if ($loginNonce === false) { //Should never happen but is technically possible, allow login $requireAdminTwoFactor = false; } else { $loginNonce = bin2hex($loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce); update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time()); if (isset($twoFactorRecord[5])) { //New method TOTP authentication if ($twoFactorRecord[5] == 'authenticator') { if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) { $retries = get_option('limit_login_retries', array()); $ip = limit_login_get_address(); if (!is_array($retries)) { $retries = array(); } if (isset($retries[$ip]) && is_int($retries[$ip])) { $retries[$ip]--; } else { $retries[$ip] = 0; } update_option('limit_login_retries', $retries); } $allowSeparatePrompt = ini_get('output_buffering') > 0; if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); return self::$authError; } else { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).')); return self::$authError; } } else { //Phone TOTP $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactorTOTP_sms', array(), array('totpid' => $twoFactorRecord[6])); if (isset($codeResult['notPaid']) && $codeResult['notPaid']) { $requireAdminTwoFactor = false; //Let them sign in without two factor if their API key has expired or they're not paid and for some reason they have this set up. } else { if (isset($codeResult['ok']) && $codeResult['ok']) { if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) { $retries = get_option('limit_login_retries', array()); $ip = limit_login_get_address(); if (!is_array($retries)) { $retries = array(); } if (isset($retries[$ip]) && is_int($retries[$ip])) { $retries[$ip]--; } else { $retries[$ip] = 0; } update_option('limit_login_retries', $retries); } $allowSeparatePrompt = ini_get('output_buffering') > 0; if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); return self::$authError; } else { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).')); return self::$authError; } } else { //oops, our API returned an error. $requireAdminTwoFactor = false; //Let them sign in without two factor because the API is broken and we don't want to lock users out of their own systems. } } } catch (Exception $e) { if (self::isDebugOn()) { error_log('TOTP SMS error: ' . $e->getMessage()); } $requireAdminTwoFactor = false; // Couldn't connect to noc1, let them sign in since the password was correct. } } } else { //Old method phone authentication $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactor_verification', array(), array('phone' => $twoFactorRecord[1])); if (isset($codeResult['notPaid']) && $codeResult['notPaid']) { $requireAdminTwoFactor = false; //Let them sign in without two factor if their API key has expired or they're not paid and for some reason they have this set up. } else { if (isset($codeResult['ok']) && $codeResult['ok']) { $twoFactorRecord[2] = $codeResult['code']; $twoFactorRecord[4] = time() + 1800; //30 minutes until code expires wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); //save the code the user needs to enter and return an error. if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) { $retries = get_option('limit_login_retries', array()); $ip = limit_login_get_address(); if (!is_array($retries)) { $retries = array(); } if (isset($retries[$ip]) && is_int($retries[$ip])) { $retries[$ip]--; } else { $retries[$ip] = 0; } update_option('limit_login_retries', $retries); } $allowSeparatePrompt = ini_get('output_buffering') > 0; if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->'); return self::$authError; } else { remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>).')); return self::$authError; } } else { //oops, our API returned an error. $requireAdminTwoFactor = false; //Let them sign in without two factor because the API is broken and we don't want to lock users out of their own systems. } } } catch (Exception $e) { $requireAdminTwoFactor = false; // Couldn't connect to noc1, let them sign in since the password was correct. } } //end: Old method phone authentication } } } else if ($usingBreachedPassword) { if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) { wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID)); wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(__('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID)); } else { $username = $authUser->user_login; self::getLog()->logLogin('loginFailValidUsername', 1, $username); $alertCallback = array(new wfBreachLoginAlert($username, wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), wfUtils::getIP()), 'send'); do_action('wordfence_security_event', 'breachLogin', array( 'username' => $username, 'resetPasswordURL' => wp_lostpassword_url(), 'supportURL' => wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), 'ip' => wfUtils::getIP(), ), $alertCallback); remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('breached_password', sprintf( /* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>'), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD))); return self::$authError; } } if ($requireAdminTwoFactor && wfUtils::isAdmin($authUser)) { $username = $authUser->user_login; self::getLog()->logLogin('loginFailValidUsername', 1, $username); wordfence::alert(__("Admin Login Blocked"), sprintf(/* translators: WordPress username. */__("A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not.", 'wordfence'), $username), wfUtils::getIP()); self::$authError = new WP_Error('twofactor_disabled_required', __('<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account.')); return self::$authError; } //User is not configured for two factor. Sign in without two factor. } } //End: if ($checkTwoFactor) else if ($usingBreachedPassword) { if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) { wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID)); wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(/* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID)); } else { $username = $authUser->user_login; self::getLog()->logLogin('loginFailValidUsername', 1, $username); $alertCallback = array(new wfBreachLoginAlert($username, wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), wfUtils::getIP()), 'send'); do_action('wordfence_security_event', 'breachLogin', array( 'username' => $username, 'resetPasswordURL' => wp_lostpassword_url(), 'supportURL' => wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), 'ip' => wfUtils::getIP(), ), $alertCallback); remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages self::$authError = new WP_Error('breached_password', sprintf( /* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>'), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD))); return self::$authError; } } return self::processBruteForceAttempt($authUser, $username, $passwd); } public static function checkSecurityNetwork($endpointType = null) { if (wfConfig::get('other_WFNet')) { $IP = wfUtils::getIP(); if ($maxBlockTime = self::wfsnIsBlocked($IP, 'brute', $endpointType)) { $secsToGo = ($maxBlockTime ? $maxBlockTime : wfBlock::blockDuration()); $reason = __('Blocked by Wordfence Security Network', 'wordfence'); wfBlock::createWFSN($reason, $IP, $secsToGo, time(), time(), 1); wfActivityReport::logBlockedIP($IP, null, 'brute'); self::getLog()->tagRequestForBlock($reason, true); self::getLog()->getCurrentRequest()->action = 'blocked:wfsn'; self::getLog()->do503($secsToGo, $reason); //exits } } } public static function processBruteForceAttempt($authUser, $username, $passwd) { $IP = wfUtils::getIP(); $secEnabled = wfConfig::get('loginSecurityEnabled'); if (wfBlock::isWhitelisted($IP)) { return $authUser; } $failureErrorCodes = array('invalid_username', 'invalid_email', 'incorrect_password', 'twofactor_invalid', 'authentication_failed', 'wfls_twofactor_invalid', 'wfls_twofactor_failed', 'wfls_twofactor_blocked'); if (is_wp_error($authUser) && in_array($authUser->get_error_code(), $failureErrorCodes)) { self::checkSecurityNetwork(); //May exit } if($secEnabled){ if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email')){ if($blacklist = wfConfig::get('loginSec_userBlacklist')){ $users = explode("\n", wfUtils::cleanupOneEntryPerLine($blacklist)); foreach($users as $user){ if(strtolower($username) == strtolower($user)){ $secsToGo = wfBlock::blockDuration(); $reason = __('Blocked by login security setting', 'wordfence'); wfBlock::createIP($reason, $IP, $secsToGo, time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY); wfActivityReport::logBlockedIP($IP, null, 'brute'); self::getLog()->tagRequestForBlock($reason); self::getLog()->do503($secsToGo, $reason); //exits } } } if(wfConfig::get('loginSec_lockInvalidUsers')){ if(strlen($username) > 0 && preg_match('/[^\r\s\n\t]+/', $username)){ self::lockOutIP($IP, sprintf(/* translators: WordPress username. */ __("Used an invalid username '%s' to try to sign in", 'wordfence'), $username)); self::getLog()->logLogin('loginFailInvalidUsername', true, $username); } $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } } $tKey = self::getLoginFailureCountTransient($IP); if(is_wp_error($authUser) && in_array($authUser->get_error_code(), $failureErrorCodes)) { $tries = get_transient($tKey); if($tries){ $tries++; } else { $tries = 1; } if($tries >= wfConfig::get('loginSec_maxFailures')){ self::lockOutIP($IP, sprintf( /* translators: 1. Login attempt limit. 2. WordPress username. */ __('Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: \'%2$s\'', 'wordfence'), wfConfig::get('loginSec_maxFailures'), $username ) ); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } set_transient($tKey, $tries, wfConfig::get('loginSec_countFailMins') * 60); } else if(is_object($authUser) && get_class($authUser) == 'WP_User'){ delete_transient($tKey); //reset counter on success } } if(is_wp_error($authUser)){ if($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email'){ self::getLog()->logLogin('loginFailInvalidUsername', 1, $username); } else { self::getLog()->logLogin('loginFailValidUsername', 1, $username); } } if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || $authUser->get_error_code() == 'incorrect_password') && wfConfig::get('loginSec_maskLoginErrors')){ return new WP_Error( 'incorrect_password', sprintf( /* translators: 1. WordPress username. 2. Reset password URL. */ __( '<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?' ), $username, wp_lostpassword_url() ) ); } return $authUser; } public static function wfsnBatchReportBlockedAttempts() { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $threshold = wfConfig::get('lastBruteForceDataSendTime', 0);; $wfdb = new wfDB(); global $wpdb; $table_wfHits = wfDB::networkTable('wfHits'); $rawBlocks = $wfdb->querySelect("SELECT SQL_CALC_FOUND_ROWS IP, ctime, actionData FROM {$table_wfHits} WHERE ctime > %f AND action = 'blocked:wfsnrepeat' ORDER BY ctime ASC LIMIT 100", sprintf('%.6f', $threshold)); $totalRows = $wpdb->get_var('SELECT FOUND_ROWS()'); $ipCounts = array(); $maxctime = 0; foreach ($rawBlocks as $record) { $maxctime = max($maxctime, $record['ctime']); $endpointType = 0; if (!empty($record['actionData'])) { $actionData = wfRequestModel::unserializeActionData($record['actionData']); if (isset($actionData['type'])) { $endpointType = $actionData['type']; } } if (isset($ipCounts[$record['IP']])) { $ipCounts[$record['IP']] = array(); } if (isset($ipCounts[$record['IP']][$endpointType])) { $ipCounts[$record['IP']][$endpointType]++; } else { $ipCounts[$record['IP']][$endpointType] = 1; } } $toSend = array(); foreach ($ipCounts as $IP => $endpoints) { foreach ($endpoints as $endpointType => $count) { $toSend[] = array('IP' => base64_encode($IP), 'count' => $count, 'blocked' => 1, 'type' => $endpointType); } } try { $response = wp_remote_post(WORDFENCE_HACKATTEMPT_URL_SEC . 'multipleHackAttempts/?k=' . rawurlencode(wfConfig::get('apiKey')) . '&t=brute', array( 'timeout' => 1, 'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'), 'body' => 'IPs=' . rawurlencode(json_encode($toSend)), 'headers' => array('Referer' => false), )); if (!is_wp_error($response)) { if ($totalRows > 100) { self::wfsnScheduleBatchReportBlockedAttempts(); } wfConfig::set('lastBruteForceDataSendTime', $maxctime); } else { self::wfsnScheduleBatchReportBlockedAttempts(); } } catch (Exception $err) { //Do nothing } } private static function wfsnScheduleBatchReportBlockedAttempts($timeToSend = null) { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } if ($timeToSend === null) { $timeToSend = time() + 30; } $notMainSite = is_multisite() && !is_main_site(); if ($notMainSite) { global $current_site; switch_to_blog($current_site->blog_id); } if (!wp_next_scheduled('wordfence_batchReportBlockedAttempts')) { wp_schedule_single_event($timeToSend, 'wordfence_batchReportBlockedAttempts'); } if ($notMainSite) { restore_current_blog(); } } public static function wfsnReportBlockedAttempt($IP, $type){ if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } self::wfsnScheduleBatchReportBlockedAttempts(); $endpointType = self::wfsnEndpointType(); self::getLog()->getCurrentRequest()->actionData = wfRequestModel::serializeActionData(array('type' => $endpointType)); } public static function wfsnBatchReportFailedAttempts() { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $threshold = time(); $wfdb = new wfDB(); $table_wfSNIPCache = wfDB::networkTable('wfSNIPCache'); $rawRecords = $wfdb->querySelect("SELECT id, IP, type, count, 1 AS failed FROM {$table_wfSNIPCache} WHERE count > 0 AND expiration < FROM_UNIXTIME(%d) LIMIT 100", $threshold); $toSend = array(); $toDelete = array(); if (count($rawRecords)) { foreach ($rawRecords as $record) { $toDelete[] = $record['id']; unset($record['id']); $record['IP'] = base64_encode(filter_var($record['IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? wfUtils::inet_aton($record['IP']) : wfUtils::inet_pton($record['IP'])); $key = $record['IP'] . $record['type']; //Aggregate multiple records if for some reason there are multiple for an IP/type combination if (!isset($toSend[$key])) { $toSend[$key] = $record; } else { $toSend[$key]['count'] += $record['count']; } } $toSend = array_values($toSend); try { $response = wp_remote_post(WORDFENCE_HACKATTEMPT_URL_SEC . 'multipleHackAttempts/?k=' . rawurlencode(wfConfig::get('apiKey')) . '&t=brute', array( 'timeout' => 1, 'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'), 'body' => 'IPs=' . rawurlencode(json_encode($toSend)), 'headers' => array('Referer' => false), )); if (is_wp_error($response)) { self::wfsnScheduleBatchReportFailedAttempts(); return; } } catch (Exception $err) { //Do nothing } } array_unshift($toDelete, $threshold); $wfdb->queryWriteIgnoreError("DELETE FROM {$table_wfSNIPCache} WHERE (expiration < FROM_UNIXTIME(%d) AND count = 0)" . (count($toDelete) > 1 ? " OR id IN (" . rtrim(str_repeat('%d, ', count($toDelete) - 1), ', ') . ")" : ""), $toDelete); $remainingRows = $wfdb->querySingle("SELECT COUNT(*) FROM {$table_wfSNIPCache}"); if ($remainingRows > 0) { self::wfsnScheduleBatchReportFailedAttempts(); } } private static function wfsnScheduleBatchReportFailedAttempts($timeToSend = null) { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } if ($timeToSend === null) { $timeToSend = time() + 30; } $notMainSite = is_multisite() && !is_main_site(); if ($notMainSite) { global $current_site; switch_to_blog($current_site->blog_id); } if (!wp_next_scheduled('wordfence_batchReportFailedAttempts')) { wp_schedule_single_event($timeToSend, 'wordfence_batchReportFailedAttempts'); } if ($notMainSite) { restore_current_blog(); } } public static function wfsnIsBlocked($IP, $hitType, $endpointType = null) { if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $wfdb = new wfDB(); if ($endpointType === null) { $endpointType = self::wfsnEndpointType(); } $table_wfSNIPCache = wfDB::networkTable('wfSNIPCache'); $cachedRecord = $wfdb->querySingleRec("SELECT id, body FROM {$table_wfSNIPCache} WHERE IP = '%s' AND type = %d AND expiration > NOW()", $IP, $endpointType); if (isset($cachedRecord)) { $wfdb->queryWriteIgnoreError("UPDATE {$table_wfSNIPCache} SET count = count + 1 WHERE id = %d", $cachedRecord['id']); if (preg_match('/BLOCKED:(\d+)/', $cachedRecord['body'], $matches) && (!wfBlock::isWhitelisted($IP))) { return $matches[1]; } return false; } $backoff = get_transient('wfsn_backoff'); if ($backoff) { return false; } try { $result = wp_remote_get(WORDFENCE_HACKATTEMPT_URL_SEC . 'hackAttempt/?k=' . rawurlencode(wfConfig::get('apiKey')) . '&IP=' . rawurlencode(filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? wfUtils::inet_aton($IP) : wfUtils::inet_pton($IP)) . '&t=' . rawurlencode($hitType) . '&type=' . $endpointType, array( 'timeout' => 3, 'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'), 'headers' => array('Referer' => false), )); if (is_wp_error($result)) { set_transient('wfsn_backoff', 1, WORDFENCE_NOC3_FAILED_BACKOFF_TIME); return false; } $wfdb->queryWriteIgnoreError("INSERT INTO {$table_wfSNIPCache} (IP, type, expiration, body) VALUES ('%s', %d, DATE_ADD(NOW(), INTERVAL %d SECOND), '%s')", $IP, $endpointType, 30, $result['body']); self::wfsnScheduleBatchReportFailedAttempts(); if (preg_match('/BLOCKED:(\d+)/', $result['body'], $matches) && (!wfBlock::isWhitelisted($IP))) { return $matches[1]; } return false; } catch (Exception $err) { set_transient('wfsn_backoff', 1, WORDFENCE_NOC3_FAILED_BACKOFF_TIME); return false; } } public static function wfsnEndpointType() { $wploginPath = ABSPATH . 'wp-login.php'; $type = 0; //Unknown if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) { $type = 2; } else if (defined('DOING_AJAX') && DOING_AJAX) { $type = 3; if (isset($_REQUEST['action']) && ($_REQUEST['action'] == 'wordfence_ls_authenticate' || $_REQUEST['action'] == 'nopriv_wordfence_ls_authenticate')) { $type = 301; } } else if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == $wploginPath) { $type = 1; } return $type; } public static function logoutAction(){ $userID = self::getLog()->getCurrentRequest()->userID; $userDat = get_user_by('id', $userID); if(is_object($userDat)){ self::getLog()->logLogin('logout', 0, $userDat->user_login); } // Unset the roadblock cookie if (!WFWAF_SUBDIRECTORY_INSTALL) { wfUtils::setcookie(wfWAF::getInstance()->getAuthCookieName(), ' ', time() - (86400 * 365), '/', null, wfUtils::isFullSSL(), true); } } public static function loginInitAction() { $lockout = wfBlock::lockoutForIP(wfUtils::getIP()); if ($lockout !== false) { $lockout->recordBlock(); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } self::doEarlyAccessLogging(); //Rate limiting } public static function authActionNew(&$username, &$passwd){ //As of php 5.4 we must denote passing by ref in the function definition, not the function call (as WordPress core does, which is a bug in WordPress). $lockout = wfBlock::lockoutForIP(wfUtils::getIP()); if ($lockout !== false) { $lockout->recordBlock(); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } if (isset($_POST['wordfence_twoFactorUser'])) { //Final stage of login -- get and verify 2fa code, make sure we load the appropriate user $userID = intval($_POST['wordfence_twoFactorUser']); $twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']); if (self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) { $user = get_user_by('ID', $userID); $username = $user->user_login; $passwd = $twoFactorNonce; $_POST['wordfence_userDat'] = $user; return; } } if (is_array($username) || is_array($passwd)) { return; } //Intermediate stage of login if(! $username){ return; } $userDat = get_user_by('login', $username); if (!$userDat) { $userDat = get_user_by('email', $username); } $_POST['wordfence_userDat'] = $userDat; if(preg_match(self::$passwordCodePattern, $passwd, $matches)){ $_POST['wordfence_authFactor'] = $matches[1]; $passwd = preg_replace('/^(.+)\s+wf([a-z0-9 ]+)$/i', '$1', $passwd); $_POST['pwd'] = $passwd; } } public static function authActionOld($username, $passwd){ //Code is identical to Newer function above except passing by ref ampersand. Some versions of PHP are throwing an error if we include the ampersand in PHP prior to 5.4. $lockout = wfBlock::lockoutForIP(wfUtils::getIP()); if ($lockout !== false) { $lockout->recordBlock(); $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require(dirname(__FILE__) . '/wfLockedOut.php'); } if (isset($_POST['wordfence_twoFactorUser'])) { //Final stage of login -- get and verify 2fa code, make sure we load the appropriate user $userID = intval($_POST['wordfence_twoFactorUser']); $twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']); if (self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) { $user = get_user_by('ID', $userID); $username = $user->user_login; $passwd = $twoFactorNonce; $_POST['wordfence_userDat'] = $user; return; } } if (is_array($username) || is_array($passwd)) { return; } //Intermediate stage of login if(! $username){ return; } $userDat = get_user_by('login', $username); if (!$userDat) { $userDat = get_user_by('email', $username); } $_POST['wordfence_userDat'] = $userDat; if(preg_match(self::$passwordCodePattern, $passwd, $matches)){ $_POST['wordfence_authFactor'] = $matches[1]; $passwd = preg_replace('/^(.+)\s+wf([a-z0-9 ]+)$/i', '$1', $passwd); $_POST['pwd'] = $passwd; } } public static function getWPFileContent($file, $cType, $cName, $cVersion){ if ($cType == 'plugin') { if (preg_match('#^/?wp-content/plugins/[^/]+/#', $file)) { $file = preg_replace('#^/?wp-content/plugins/[^/]+/#', '', $file); } else { //If user is using non-standard wp-content dir, then use /plugins/ in pattern to figure out what to strip off $file = preg_replace('#^.*[^/]+/plugins/[^/]+/#', '', $file); } } else if ($cType == 'theme') { if (preg_match('#/?wp-content/themes/[^/]+/#', $file)) { $file = preg_replace('#/?wp-content/themes/[^/]+/#', '', $file); } else { $file = preg_replace('#^.*[^/]+/themes/[^/]+/#', '', $file); } } else if ($cType == 'core') { //No special processing } else { return array('errorMsg' => __('An invalid type was specified to get file.', 'wordfence')); } $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $contResult = $api->binCall('get_wp_file_content', array( 'v' => wfUtils::getWPVersion(), 'file' => $file, 'cType' => $cType, 'cName' => $cName, 'cVersion' => $cVersion )); if ($contResult['data']) { return array('fileContent' => $contResult['data']); } throw new Exception(__('We could not fetch a core WordPress file from the Wordfence API.', 'wordfence')); } catch (Exception $e) { return array('errorMsg' => wp_kses($e->getMessage(), array())); } } public static function ajax_sendDiagnostic_callback(){ add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3); $inEmail = true; $body = "This email is the diagnostic from " . site_url() . ".\nThe IP address that requested this was: " . wfUtils::getIP() . "\nTicket Number/Forum Username: " . $_POST['ticket']; $sendingDiagnosticEmail = true; ob_start(); require(dirname(__FILE__) . '/menu_tools_diagnostic.php'); $body = nl2br($body) . ob_get_clean(); $findReplace = array( '<div class="wf-block-header">' => '<div style="margin:20px 0px 0px;padding:6px 4px;background-color:#222;color:#fff;width:926px;">', '<th ' => '<th style="text-align:left;background-color:#222;color:#fff;"', '<th>' => '<th style="text-align:left;background-color:#222;color:#fff;">', ' class="wf-result-success"' => ' style="font-weight:bold;color:#008c10;" class="wf-result-success"', ' class="wf-result-error"' => ' style="font-weight:bold;color:#d0514c;" class="wf-result-error"', ' class="wf-result-inactive"' => ' style="font-weight:bold;color:#666666;" class="wf-result-inactive"', ); $body = str_replace(array_keys($findReplace), array_values($findReplace), $body); $result = wfUtils::htmlEmail($_POST['email'], '[Wordfence] Diagnostic results (' . $_POST['ticket'] . ')', $body); if (function_exists('remove_filter')) { remove_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0); } //Remove for consistency. It's okay if it doesn't pre-4.7.0 since the call exits anyway. return compact('result'); } public static function ajax_exportDiagnostics_callback(){ add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3); $url = site_url(); $url = preg_replace('/^https?:\/\//i', '', $url); $url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url); $url = preg_replace('/^_+/', '', $url); $url = preg_replace('/_+$/', '', $url); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="diagnostics_for_' . $url . '.txt"'); echo wfView::create('diagnostics/text', array( 'diagnostic' => new wfDiagnostic, 'plugins' => get_plugins(), )); exit; } public static function _diagnosticsTranslationDisabler($translation, $text, $domain) { return $text; } public static function ajax_sendTestEmail_callback(){ $rawEmails = explode(",", $_POST['email']); $emails = array(); foreach ($rawEmails as $e) { $e = trim($e); if (wfUtils::isValidEmail($e)) { $emails[] = $e; } } $result = false; if (count($emails)) { $result = wp_mail(implode(', ', $emails), __('Wordfence Test Email', 'wordfence'), sprintf(/* translators: 1. Site URL. 2. IP address. */ __("This is a test email from %1\$s.\nThe IP address that requested this was: %2\$s", 'wordfence'), site_url(), wfUtils::getIP())); } $result = $result ? 'True' : 'False'; return array('result' => $result); } public static function ajax_addTwoFactor_callback(){ if(! wfConfig::get('isPaid')){ return array('errorMsg' => __('Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/gnl1twoFac3/wordfence-signup/" target="_blank" rel="noopener noreferrer">Click here to upgrade now.</a>', 'wordfence')); } $username = sanitize_text_field($_POST['username']); $phone = sanitize_text_field($_POST['phone']); $mode = sanitize_text_field($_POST['mode']); $user = get_user_by('login', $username); if(! $user){ return array('errorMsg' => __("The username you specified does not exist.", 'wordfence')); } $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if (!is_array($twoFactorUsers)) { $twoFactorUsers = array(); } for ($i = 0; $i < sizeof($twoFactorUsers); $i++) { if ($twoFactorUsers[$i][0] == $user->ID) { return array('errorMsg' => __("The username you specified is already enabled.", 'wordfence')); } } if ($mode != 'phone' && $mode != 'authenticator') { return array('errorMsg' => __("Unknown authentication mode.", 'wordfence')); } if ($mode == 'phone') { if (!preg_match('/^\+\d[\d\-\(\)\s]+$/', $phone)) { return array('errorMsg' => __("The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234", 'wordfence')); } $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactorTOTP_register', array(), array('phone' => $phone, 'mode' => $mode)); } catch (Exception $e) { return array('errorMsg' => sprintf(__("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array()))); } $recoveryCodes = preg_replace('/[^a-f0-9]/i', '', $codeResult['recoveryCodes']); if (isset($codeResult['ok']) && $codeResult['ok']) { $secretID = $codeResult['id']; } else if (isset($codeResult['errorMsg']) && $codeResult['errorMsg']) { return array('errorMsg' => wp_kses($codeResult['errorMsg'], array())); } else { wordfence::status(4, 'info', sprintf(__("Could not generate verification code: %s", 'wordfence'), var_export($codeResult, true))); return array('errorMsg' => __("We could not generate a verification code.", 'wordfence')); } self::twoFactorAdd($user->ID, $phone, '', 'phone', $secretID); return array( 'ok' => 1, 'userID' => $user->ID, 'username' => $username, 'homeurl' => preg_replace('#.*?//#', '', get_home_url()), 'mode' => $mode, 'phone' => $phone, 'recoveryCodes' => $recoveryCodes, ); } else if ($mode == 'authenticator') { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactorTOTP_register', array(), array('mode' => $mode)); } catch (Exception $e) { return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array()))); } /* Expected Fields: 'ok' => 1, 'secret' => $secret, 'base32Secret' => $base32Secret, 'recoveryCodes' => $codes, 'uriQueryString' => $uriQueryString, 'id' => $recordID, */ $secret = preg_replace('/[^a-f0-9]/i', '', $codeResult['secret']); $base32Secret = preg_replace('/[^a-z2-7]/i', '', $codeResult['base32Secret']); //Encoded in base32 $recoveryCodes = preg_replace('/[^a-f0-9]/i', '', $codeResult['recoveryCodes']); $uriQueryString = preg_replace('/[^a-z0-9=&]/i', '', $codeResult['uriQueryString']); if (isset($codeResult['ok']) && $codeResult['ok']) { $secretID = $codeResult['id']; } else if (isset($codeResult['errorMsg']) && $codeResult['errorMsg']) { return array('errorMsg' => wp_kses($codeResult['errorMsg'], array())); } else { wordfence::status(4, 'info', sprintf(/* translators: Error message. */ __("Could not generate verification code: %s", 'wordfence'), var_export($codeResult, true))); return array('errorMsg' => __("We could not generate a verification code.", 'wordfence')); } self::twoFactorAdd($user->ID, '', '', 'authenticator', $secretID); return array( 'ok' => 1, 'userID' => $user->ID, 'username' => $username, 'homeurl' => preg_replace('#.*?//#', '', get_home_url()), 'mode' => $mode, 'secret' => $secret, 'base32Secret' => $base32Secret, 'recoveryCodes' => $recoveryCodes, 'uriQueryString' => $uriQueryString, ); } return array('errorMsg' => __("Unknown two-factor authentication mode.", 'wordfence')); } public static function ajax_twoFacActivate_callback() { $userID = sanitize_text_field($_POST['userID']); $code = sanitize_text_field($_POST['code']); $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if (!is_array($twoFactorUsers)) { $twoFactorUsers = array(); } $found = false; $user = false; for ($i = 0; $i < sizeof($twoFactorUsers); $i++) { if ($twoFactorUsers[$i][0] == $userID) { $mode = 'phone'; if (isset($twoFactorUsers[$i][5]) && $twoFactorUsers[$i][5] == 'authenticator') { $mode = 'authenticator'; } $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $codeResult = $api->call('twoFactorTOTP_verify', array(), array('totpid' => $twoFactorUsers[$i][6], 'code' => $code, 'mode' => $mode)); } catch (Exception $e) { return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array()))); } if (isset($codeResult['ok']) && $codeResult['ok']) { $twoFactorUsers[$i][3] = 'activated'; $twoFactorUsers[$i][4] = 0; $found = true; $user = $twoFactorUsers[$i]; break; } else { return array('errorMsg' => __("The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code.", 'wordfence')); } } } if(! $found){ return array('errorMsg' => __("We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page.", 'wordfence')); } wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); $WPuser = get_userdata($userID); if ($mode == 'authenticator') { return array( 'ok' => 1, 'userID' => $userID, 'username' => $WPuser->user_login, 'status' => 'activated', 'mode' => 'authenticator' ); } return array( 'ok' => 1, 'userID' => $userID, 'username' => $WPuser->user_login, 'phone' => $user[1], 'status' => 'activated', 'mode' => 'phone' ); } private static function twoFactorAdd($ID, $phone, $code, $mode, $totpID){ $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if(! is_array($twoFactorUsers)){ $twoFactorUsers = array(); } for($i = 0; $i < sizeof($twoFactorUsers); $i++){ if($twoFactorUsers[$i][0] == $ID || (! $twoFactorUsers[$i][0]) ){ array_splice($twoFactorUsers, $i, 1); $i--; } } $twoFactorUsers[] = array($ID, $phone, $code /* deprecated parameter */, 'notActivated', time() + (86400 * 30) /* deprecated parameter */, $mode, $totpID); //expiry of code is 30 days in future wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); } public static function ajax_loadTwoFactor_callback() { $users = wfConfig::get_ser('twoFactorUsers', array()); $ret = array(); foreach ($users as $user) { $WPuser = get_userdata($user[0]); if ($user) { if (isset($user[5]) && $user[5] == 'authenticator') { $ret[] = array( 'userID' => $user[0], 'username' => $WPuser->user_login, 'status' => $user[3], 'mode' => 'authenticator' ); } else { $ret[] = array( 'userID' => $user[0], 'username' => $WPuser->user_login, 'phone' => $user[1], 'status' => $user[3], 'mode' => 'phone' ); } } } return array('ok' => 1, 'users' => $ret); } public static function ajax_twoFacDel_callback(){ $ID = $_POST['userID']; $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); if(! is_array($twoFactorUsers)){ $twoFactorUsers = array(); } $deleted = false; for($i = 0; $i < sizeof($twoFactorUsers); $i++){ if($twoFactorUsers[$i][0] == $ID){ array_splice($twoFactorUsers, $i, 1); $deleted = true; $i--; } } wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); if($deleted){ return array('ok' => 1, 'userID' => $ID); } else { return array('errorMsg' => __("That user has already been removed from the list.", 'wordfence')); } } public static function getNextScanStartTimestamp() { $nextTime = false; $cron = _get_cron_array(); foreach($cron as $key => $val){ if(isset($val['wordfence_start_scheduled_scan'])){ $nextTime = $key; break; } } return $nextTime; } public static function getNextScanStartTime($nextTime = null) { if ($nextTime === null) { $nextTime = self::getNextScanStartTimestamp(); } if (!$nextTime) { return __('No scan is scheduled', 'wordfence'); } $difference = $nextTime - time(); if ($difference < 1) { return __("Next scan is starting now", 'wordfence'); } return sprintf(/* translators: 1. Time until. 2. Localized date. */ __('Next scan in %1$s (%2$s)', 'wordfence'), wfUtils::makeDuration($difference), date_i18n('M j, Y g:i:s A', $nextTime + (3600 * get_option('gmt_offset')))); } public static function wordfenceStartScheduledScan($scheduledStartTime) { //If scheduled scans are not enabled in the global config option, then don't run a scheduled scan. if(wfConfig::get('scheduledScansEnabled') != '1'){ return; } $minimumFrequency = (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? 1800 : 43200); $lastScanStart = wfConfig::get('lastScheduledScanStart', 0); if($lastScanStart && (time() - $lastScanStart) < $minimumFrequency){ //A scheduled scan was started in the last 30 mins (manual schedule) or 12 hours (automatic schedule), so skip this one. return; } wfConfig::set('originalScheduledScanStart', $scheduledStartTime); wfConfig::set('lastScheduledScanStart', time()); wordfence::status(1, 'info', sprintf(/* translators: Localized date. */ __("Scheduled Wordfence scan starting at %s", 'wordfence'), date('l jS \of F Y h:i:s A', current_time('timestamp'))) ); //We call this before the scan actually starts to advance the schedule for the next week. //This ensures that if the scan crashes for some reason, the schedule will hold. wfScanner::shared()->scheduleScans(); try { wfScanEngine::startScan(); } catch (wfScanEngineTestCallbackFailedException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); wfUtils::clearScanLock(); } catch (Exception $e) { if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL); } } } public static function ajax_saveCountryBlocking_callback(){ if(! wfConfig::get('isPaid')){ return array('errorMsg' => __("Sorry but this feature is only available for paid customers.", 'wordfence')); } wfConfig::set('cbl_action', $_POST['blockAction']); wfConfig::set('cbl_countries', $_POST['codes']); wfConfig::set('cbl_redirURL', $_POST['redirURL']); wfConfig::set('cbl_loggedInBlocked', $_POST['loggedInBlocked']); wfConfig::set('cbl_loginFormBlocked', $_POST['loginFormBlocked']); wfConfig::set('cbl_restOfSiteBlocked', $_POST['restOfSiteBlocked']); wfConfig::set('cbl_bypassRedirURL', $_POST['bypassRedirURL']); wfConfig::set('cbl_bypassRedirDest', $_POST['bypassRedirDest']); wfConfig::set('cbl_bypassViewURL', $_POST['bypassViewURL']); return array('ok' => 1); } public static function ajax_sendActivityLog_callback(){ $content = sprintf(/* translators: Site URL. */ __('SITE: %s', 'wordfence'), site_url()) . "\n"; $content .= sprintf(/* translators: Plugin version. */ __('PLUGIN VERSION: %s', 'wordfence'), WORDFENCE_VERSION) . "\n"; $content .= sprintf(/* translators: WordPress version. */ __('WORDPRESS VERSION: %s', 'wordfence'), wfUtils::getWPVersion()) . "\n"; $content .= sprintf(/* translators: Wordfence license key. */ __('LICENSE KEY: %s', 'wordfence'), wfConfig::get('apiKey')) . "\n"; $content .= sprintf(/* translators: Email address. */ __('ADMIN EMAIL: %s', 'wordfence'), get_option('admin_email')) . "\n"; $content .= __('LOG:', 'wordfence') . "\n\n"; $wfdb = new wfDB(); $table_wfStatus = wfDB::networkTable('wfStatus'); $q = $wfdb->querySelect("select ctime, level, type, msg from {$table_wfStatus} order by ctime desc limit 10000"); $timeOffset = 3600 * get_option('gmt_offset'); foreach($q as $r){ if($r['type'] == 'error'){ $content .= "\n"; } $content .= date(DATE_RFC822, $r['ctime'] + $timeOffset) . '::' . sprintf('%.4f', $r['ctime']) . ':' . $r['level'] . ':' . $r['type'] . '::' . wp_kses_data( (string) $r['msg']) . "\n"; } $content .= "\n\n"; $content .= str_repeat('-', 80); $content .= "\n\n"; $content .= __('# Scan Issues', 'wordfence') . "\n\n"; $issues = wfIssues::shared()->getIssues(0, 50, 0, 50); $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts()); $issueTypes = wfIssues::validIssueTypes(); $content .= sprintf(/* translators: Number of scan results. */ __('## New Issues (%d total)', 'wordfence'), $issueCounts['new']) . "\n\n"; if (isset($issues['new']) && count($issues['new'])) { foreach ($issues['new'] as $i) { if (!in_array($i['type'], $issueTypes)) { continue; } $viewContent = ''; try { $viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render(); } catch (wfViewNotFoundException $e) { //Ignore -- should never happen since we validate the type } if (!empty($viewContent)) { $content .= $viewContent . "\n\n"; } } } else { $content .= __('No New Issues', 'wordfence') . "\n\n"; } $content .= str_repeat('-', 10); $content .= "\n\n"; $content .= sprintf(/* translators: Number of scan results. */ __('## Ignored Issues (%d total)', 'wordfence'), $issueCounts['ignoreP'] + $issueCounts['ignoreC']) . "\n\n"; if (isset($issues['new']) && count($issues['new'])) { foreach ($issues['ignored'] as $i) { if (!in_array($i['type'], $issueTypes)) { continue; } $viewContent = ''; try { $viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render(); } catch (wfViewNotFoundException $e) { //Ignore -- should never happen since we validate the type } if (!empty($viewContent)) { $content .= $viewContent . "\n\n"; } } } else { $content .= __('No Ignored Issues', 'wordfence') . "\n\n"; } $content .= str_repeat('-', 80); $content .= "\n\n"; ob_start(); phpinfo(); $phpinfo = ob_get_contents(); ob_get_clean(); $content .= $phpinfo; $rawEmails = explode(",", $_POST['email']); $emails = array(); foreach ($rawEmails as $e) { $e = trim($e); if (wfUtils::isValidEmail($e)) { $emails[] = $e; } } if (count($emails)) { wp_mail(implode(', ', $emails), __('Wordfence Activity Log', 'wordfence'), $content); } return array('ok' => 1); } public static function ajax_downgradeLicense_callback(){ $api = new wfAPI('', wfUtils::getWPVersion()); try { $keyData = $api->call('get_anon_api_key', array(), array('previousLicense' => wfConfig::get('apiKey'))); if($keyData['ok'] && $keyData['apiKey']){ wfConfig::set('apiKey', $keyData['apiKey']); wfConfig::set('isPaid', 0); wfConfig::set('keyType', wfAPI::KEY_TYPE_FREE); //When downgrading we must disable all two factor authentication because it can lock an admin out if we don't. wfConfig::set_ser('twoFactorUsers', array()); wfConfig::remove('premiumAutoRenew'); wfConfig::remove('premiumNextRenew'); wfConfig::remove('premiumPaymentExpiring'); wfConfig::remove('premiumPaymentExpired'); wfConfig::remove('premiumPaymentMissing'); wfConfig::remove('premiumPaymentHold'); self::licenseStatusChanged(); if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); } } else { throw new Exception(__("Could not understand the response we received from the Wordfence servers when applying for a free license key.", 'wordfence')); } } catch(Exception $e){ return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not fetch free license key from Wordfence: %s", 'wordfence'), wp_kses($e->getMessage(), array()))); } return array('ok' => 1); } public static function ajax_tourClosed_callback() { $page = ''; if (isset($_POST['page'])) { $page = $_POST['page']; } $keys = array(wfOnboardingController::TOUR_DASHBOARD, wfOnboardingController::TOUR_FIREWALL, wfOnboardingController::TOUR_SCAN, wfOnboardingController::TOUR_BLOCKING, wfOnboardingController::TOUR_LIVE_TRAFFIC, wfOnboardingController::TOUR_LOGIN_SECURITY); if (in_array($page, $keys)) { if (wfOnboardingController::shouldShowNewTour($page)) { wfConfig::set('needsNewTour_' . $page, 0); } else if (wfOnboardingController::shouldShowUpgradeTour($page)) { wfConfig::set('needsUpgradeTour_' . $page, 0); } } return array('ok' => 1); } public static function ajax_autoUpdateChoice_callback(){ $choice = $_POST['choice']; wfConfig::set('autoUpdateChoice', '1'); if($choice == 'yes'){ wfConfig::set('autoUpdate', '1'); } else { wfConfig::set('autoUpdate', '0'); } return array('ok' => 1); } public static function ajax_misconfiguredHowGetIPsChoice_callback() { $choice = $_POST['choice']; if ($choice == 'yes') { wfConfig::set('howGetIPs', wfConfig::get('detectProxyRecommendation', '')); if (isset($_POST['issueID'])) { $issueID = intval($_POST['issueID']); $wfIssues = new wfIssues(); $wfIssues->updateIssue($issueID, 'delete'); wfScanEngine::refreshScanNotification($wfIssues); } } else { wfConfig::set('misconfiguredHowGetIPsChoice' . WORDFENCE_VERSION, '1'); } return array('ok' => 1); } public static function ajax_switchLiveTrafficSecurityOnlyChoice_callback() { $choice = $_POST['choice']; if ($choice == 'yes') { wfConfig::set('liveTrafficEnabled', false); } else { wfConfig::set('switchLiveTrafficSecurityOnlyChoice', '1'); } return array('ok' => 1); } public static function ajax_dismissAdminNotice_callback() { if (isset($_POST['id'])) { wfAdminNoticeQueue::removeAdminNotice($_POST['id']); } return array('ok' => 1); } public static function ajax_updateConfig_callback(){ $key = $_POST['key']; $val = $_POST['val']; wfConfig::set($key, $val); if ($key == 'howGetIPs') { wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD); $ipAll = wfUtils::getIPPreview(); $ip = wfUtils::getIP(true); return array('ok' => 1, 'ip' => $ip, 'ipAll' => $ipAll); } return array('ok' => 1); } public static function ajax_checkHtaccess_callback(){ if(wfUtils::isNginx()){ return array('nginx' => 1); } $file = wfCache::getHtaccessPath(); if(! $file){ return array('err' => __("We could not find your .htaccess file to modify it.", 'wordfence')); } $fh = @fopen($file, 'r+'); if(! $fh){ $err = error_get_last(); return array('err' => sprintf(/* translators: Error message. */ __("We found your .htaccess file but could not open it for writing: %s", 'wordfence'), $err['message'])); } return array('ok' => 1); } public static function ajax_downloadHtaccess_callback(){ $url = site_url(); $url = preg_replace('/^https?:\/\//i', '', $url); $url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url); $url = preg_replace('/^_+/', '', $url); $url = preg_replace('/_+$/', '', $url); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="htaccess_Backup_for_' . $url . '.txt"'); $file = wfCache::getHtaccessPath(); readfile($file); die(); } public static function ajax_downloadLogFile_callback() { if (!isset($_GET['logfile'])) { status_header(400); nocache_headers(); exit; } wfErrorLogHandler::outputErrorLog(stripslashes($_GET['logfile'])); //exits } public static function _blocksAJAXReponse(&$hasCountryBlock = false, $offset = 0, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') { $includeAutomatic = wfConfig::get('displayAutomaticBlocks'); $types = array(); //Empty array is all if (!$includeAutomatic) { $types = array(wfBlock::TYPE_IP_MANUAL, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfBlock::TYPE_COUNTRY, wfBlock::TYPE_PATTERN); } if (empty($filter)) { $blocks = wfBlock::allBlocks(true, $types, $offset, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection); } else { $blocks = wfBlock::filteredBlocks(true, $types, $offset, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection, $filter); } $dateFormat = get_option('date_format') . ' ' . get_option('time_format'); $hasCountryBlock = wfUtils::array_first(wfBlock::countryBlocks(true)); if ($hasCountryBlock !== null) { $hasCountryBlock = json_encode($hasCountryBlock->editValues()); } else { $hasCountryBlock = ''; } $response = array(); foreach ($blocks as $b) { $skip = false; $entry = array(); $entry['id'] = $b->id; $entry['typeSort'] = $b->type; $entry['typeDisplay'] = esc_html(wfBlock::nameForType($b->type)); switch ($b->type) { case wfBlock::TYPE_IP_MANUAL: $entry['editType'] = 'ip-address'; case wfBlock::TYPE_IP_AUTOMATIC_PERMANENT: $entry['detailSort'] = base64_encode(wfUtils::inet_pton($b->ip)); $entry['detailDisplay'] = esc_html($b->ip); break; case wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY: case wfBlock::TYPE_WFSN_TEMPORARY: case wfBlock::TYPE_RATE_BLOCK: case wfBlock::TYPE_RATE_THROTTLE: case wfBlock::TYPE_LOCKOUT: if (!$includeAutomatic) { $skip = true; } $entry['detailSort'] = base64_encode(wfUtils::inet_pton($b->ip)); $entry['detailDisplay'] = esc_html($b->ip); break; case wfBlock::TYPE_COUNTRY: require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */ ksort($wfBulkCountries); $countries = $b->countries; sort($countries); $entry['editable'] = 1; $entry['editType'] = 'country'; $entry['editValues'] = json_encode($b->editValues()); $entry['detailSort'] = $b->blockLogin . '|' . $b->blockSite . '|' . implode('|', $countries); $entry['detailDisplay'] = ''; if ($countries == array_keys($wfBulkCountries)) { $entry['detailDisplay'] = __('All Countries', 'wordfence'); } else if (count($countries) == 1) { $entry['detailDisplay'] = __('1 Country', 'wordfence'); } else { $entry['detailDisplay'] = sprintf(/* translators: Number of countries. */ __('%d Countries', 'wordfence'), count($countries)); } if ($b->blockLogin && $b->blockSite) { $entry['detailDisplay'] .= ' (' . __('Entire Site', 'wordfence') . ')'; } else if ($b->blockLogin) { $entry['detailDisplay'] .= ' (' . __('Login Only', 'wordfence') . ')'; } else if ($b->blockSite) { $entry['detailDisplay'] .= ' (' . __('Site Except Login', 'wordfence') . ')'; } break; case wfBlock::TYPE_PATTERN: $entry['editType'] = 'custom-pattern'; $entry['detailSort'] = base64_encode($b->ipRange . '|' . $b->userAgent . '|' . $b->referrer . '|' . $b->hostname); $components = array(); if (!empty($b->ipRange)) { $components[] = __('IP Range', 'wordfence') . ' - ' . $b->ipRange; } if (!empty($b->userAgent)) { $components[] = __('User Agent', 'wordfence') . ' - ' . $b->userAgent; } if (!empty($b->referrer)) { $components[] = __('Referrer', 'wordfence') . ' - ' . $b->referrer; } if (!empty($b->hostname)) { $components[] = __('Hostname', 'wordfence') . ' - ' . $b->hostname; } $entry['detailDisplay'] = esc_html(implode(', ', $components)); break; } if ($skip) { continue; } $entry['ruleAdded'] = $b->blockedTime; $entry['ruleAddedSort'] = $b->blockedTime; $entry['ruleAddedDisplay'] = esc_html(wfUtils::formatLocalTime($dateFormat, $b->blockedTime)); $entry['reasonSort'] = esc_attr($b->reason); $entry['reasonDisplay'] = esc_html($b->reason); $entry['expiration'] = $b->expiration; $entry['expirationSort'] = $b->expiration; $entry['expirationDisplay'] = ($b->expiration == wfBlock::DURATION_FOREVER ? __('Permanent', 'wordfence') : esc_html(wfUtils::formatLocalTime($dateFormat, $b->expiration))); $entry['blockCountSort'] = $b->blockedHits; $entry['blockCountDisplay'] = $b->blockedHits; $entry['lastAttemptSort'] = $b->lastAttempt; $entry['lastAttemptDisplay'] = ($b->lastAttempt == 0 ? __('Never', 'wordfence') : esc_html(wfUtils::formatLocalTime($dateFormat, $b->lastAttempt))); $response[] = $entry; } return $response; } public static function ajax_getBlocks_callback() { $offset = 0; if (isset($_POST['offset'])) { $offset = (int) $_POST['offset']; } $sortColumn = 'type'; if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) { $sortColumn = $_POST['sortColumn']; } $sortDirection = 'ascending'; if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) { $sortDirection = $_POST['sortDirection']; } $filter = ''; if (isset($_POST['blocksFilter'])) { $filter = $_POST['blocksFilter']; } $hasCountryBlock = false; $blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter); return array('blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock); } public static function ajax_createBlock_callback() { $offset = 0; if (isset($_POST['offset'])) { $offset = (int) $_POST['offset']; } $sortColumn = 'type'; if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) { $sortColumn = $_POST['sortColumn']; } $sortDirection = 'ascending'; if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) { $sortDirection = $_POST['sortDirection']; } $filter = ''; if (isset($_POST['blocksFilter'])) { $filter = $_POST['blocksFilter']; } if (!empty($_POST['payload']) && ($payload = json_decode(stripslashes($_POST['payload']), true)) !== false) { try { $error = wfBlock::validate($payload); if ($error !== true) { return array( 'error' => $error, ); } wfBlock::create($payload); $hasCountryBlock = false; $blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter); return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock); } catch (Exception $e) { return array( 'error' => __('An error occurred while creating the block.', 'wordfence'), ); } } return array( 'error' => __('No block parameters were provided.', 'wordfence'), ); } public static function ajax_deleteBlocks_callback() { $offset = 0; if (isset($_POST['offset'])) { $offset = (int) $_POST['offset']; } $sortColumn = 'type'; if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) { $sortColumn = $_POST['sortColumn']; } $sortDirection = 'ascending'; if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) { $sortDirection = $_POST['sortDirection']; } $filter = ''; if (isset($_POST['blocksFilter'])) { $filter = $_POST['blocksFilter']; } if (!empty($_POST['blocks']) && ($blocks = json_decode(stripslashes($_POST['blocks']), true)) !== false && is_array($blocks)) { $removed = wfBlock::removeBlockIDs($blocks, true); //wfBlock::removeBlockIDs sanitizes the array if($removed!==false) { foreach($removed as $block) { self::clearLockoutCounters(wfUtils::inet_ntop($block->IP)); } } $hasCountryBlock = false; $blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter); return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock); } return array( 'error' => __('No blocks were provided.', 'wordfence'), ); } public static function ajax_makePermanentBlocks_callback() { $offset = 0; if (isset($_POST['offset'])) { $offset = (int) $_POST['offset']; } $sortColumn = 'type'; if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) { $sortColumn = $_POST['sortColumn']; } $sortDirection = 'ascending'; if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) { $sortDirection = $_POST['sortDirection']; } $filter = ''; if (isset($_POST['blocksFilter'])) { $filter = $_POST['blocksFilter']; } if (!empty($_POST['updates']) && ($updates = json_decode(stripslashes($_POST['updates']), true)) !== false && is_array($updates)) { wfBlock::makePermanentBlockIDs($updates); //wfBlock::makePermanentBlockIDs sanitizes the array $hasCountryBlock = false; $blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter); return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock); } return array( 'error' => __('No blocks were provided.', 'wordfence'), ); } public static function ajax_installLicense_callback() { if (!empty($_POST['license'])) { $license = strtolower(trim($_POST['license'])); if (!preg_match('/^[a-fA-F0-9]+$/', $license)) { return array( 'error' => __('The license key entered is not in a valid format. It must contain only numbers and the letters A-F.', 'wordfence'), ); } $existingLicense = strtolower(wfConfig::get('apiKey', '')); if ($existingLicense != $license) { //Key changed, try activating $api = new wfAPI($license, wfUtils::getWPVersion()); try { $res = $api->call('check_api_key', array(), array('previousLicense' => $existingLicense)); if ($res['ok'] && isset($res['isPaid'])) { $isPaid = wfUtils::truthyToBoolean($res['isPaid']); wfConfig::set('apiKey', $license); wfConfig::set('isPaid', $isPaid); //res['isPaid'] is boolean coming back as JSON and turned back into PHP struct. Assuming JSON to PHP handles bools. wordfence::licenseStatusChanged(); if (!$isPaid) { wfConfig::set('keyType', wfAPI::KEY_TYPE_FREE); } return array( 'success' => 1, 'isPaid' => wfConfig::get('isPaid') ? 1 : 0, ); } else if (isset($res['_hasKeyConflict']) && $res['_hasKeyConflict']) { return array( 'error' => __('The license provided is already in use on another site.', 'wordfence'), ); } else { return array( 'error' => __('The Wordfence activation server returned an unexpected response. Please try again.', 'wordfence'), ); } } catch (Exception $e) { return array( 'error' => __('We received an error while trying to activate the license with the Wordfence servers: ', 'wordfence') . wp_kses($e->getMessage(), array()) ); } } else { return array( 'success' => 1, 'isPaid' => wfConfig::get('isPaid') ? 1 : 0, ); } } return array( 'error' => __('No license was provided to install.', 'wordfence'), ); } public static function ajax_recordTOUPP_callback() { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $result = $api->call('record_toupp', array(), array()); wfConfig::set('touppBypassNextCheck', 1); //In case this call kicks off the cron that checks, this avoids the race condition of that setting the prompt as being needed at the same time we've just recorded it as accepted wfConfig::set('touppPromptNeeded', 0); return array( 'success' => 1, ); } public static function ajax_mailingSignup_callback() { if (isset($_POST['emails'])) { $emails = @json_decode(stripslashes($_POST['emails']), true); if (is_array($emails) && count($emails)) { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $result = $api->call('mailing_signup', array(), array('signup' => json_encode(array('emails' => $emails)), 'ip' => wfUtils::getIP())); } } return array( 'success' => 1, ); } public static function ajax_enableAllOptionsPage_callback() { wfConfig::set('displayTopLevelOptions', 1); $n = wfNotification::getNotificationForCategory('wfplugin_devalloptions'); if ($n !== null) { $n->markAsRead(); } $response = array('success' => true); if (function_exists('network_admin_url') && is_multisite()) { $response['redirect'] = network_admin_url('admin.php?page=WordfenceOptions'); } else { $response['redirect'] = admin_url('admin.php?page=WordfenceOptions'); } return $response; } public static function ajax_restoreDefaults_callback() { if (!empty($_POST['section'])) { if (wfConfig::restoreDefaults($_POST['section'])) { return array( 'success' => true, ); } else { return array( 'error' => __('An unknown configuration section was provided.', 'wordfence'), ); } } return array( 'error' => __('No configuration section was provided.', 'wordfence'), ); } public static function ajax_saveOptions_callback() { if (!empty($_POST['changes']) && ($changes = json_decode(stripslashes($_POST['changes']), true)) !== false) { try { $errors = wfConfig::validate($changes); if ($errors !== true) { if (count($errors) == 1) { return array( 'error' => sprintf(/* translators: Error message. */ __('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']), ); } else if (count($errors) > 1) { $compoundMessage = array(); foreach ($errors as $e) { $compoundMessage[] = $e['error']; } return array( 'error' => sprintf(/* translators: Error message. */ __('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)), ); } return array( 'error' => __('Errors occurred while saving the configuration.', 'wordfence'), ); } wfConfig::save(wfConfig::clean($changes)); $response = array('success' => true); if (!empty($_POST['page']) && preg_match('/^Wordfence/i', $_POST['page'])) { if ($_POST['page'] == 'WordfenceOptions' && isset($changes['displayTopLevelOptions']) && !wfUtils::truthyToBoolean($changes['displayTopLevelOptions'])) { if (function_exists('network_admin_url') && is_multisite()) { $response['redirect'] = network_admin_url('admin.php?page=Wordfence'); } else { $response['redirect'] = admin_url('admin.php?page=Wordfence'); } } } return $response; } catch (wfWAFStorageFileException $e) { return array( 'error' => __('An error occurred while saving the configuration.', 'wordfence'), ); } catch (wfWAFStorageEngineMySQLiException $e) { return array( 'error' => __('An error occurred while saving the configuration.', 'wordfence'), ); } catch (Exception $e) { return array( 'error' => $e->getMessage(), ); } } return array( 'error' => __('No configuration changes were provided to save.', 'wordfence'), ); } public static function ajax_updateIPPreview_callback() { $howGet = $_POST['howGetIPs']; $validIPs = array(); $invalidIPs = array(); $testIPs = preg_split('/[\r\n,]+/', $_POST['howGetIPs_trusted_proxies']); foreach ($testIPs as $val) { if (strlen($val) > 0) { if (wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val)) { $validIPs[] = $val; } else { $invalidIPs[] = $val; } } } $trustedProxies = $validIPs; $ipAll = wfUtils::getIPPreview($howGet, $trustedProxies); $ip = wfUtils::getIPForField($howGet, $trustedProxies); return array('ok' => 1, 'ip' => $ip, 'ipAll' => $ipAll); } public static function ajax_hideFileHtaccess_callback(){ $issues = new wfIssues(); $issue = $issues->getIssueByID((int) $_POST['issueID']); if (!$issue) { return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence')); } if (!function_exists('get_home_path')) { include_once(ABSPATH . 'wp-admin/includes/file.php'); } $homeURL = get_home_url(); $components = parse_url($homeURL); if ($components === false) { return array('errorMsg' => __("An error occurred while trying to hide the file.", 'wordfence')); } $sitePath = ''; if (isset($components['path'])) { $sitePath = trim($components['path'], '/'); } $homePath = get_home_path(); $file = $issue['data']['file']; $localFile = ABSPATH . '/' . $file; //The scanner uses ABSPATH as its base rather than get_home_path() $localFile = realpath($localFile); if (strpos($localFile, $homePath) !== 0) { return array('errorMsg' => __("An invalid file was requested for hiding.", 'wordfence')); } $localFile = substr($localFile, strlen($homePath)); $absoluteURIPath = trim($sitePath . '/' . $localFile, '/'); $regexLocalFile = preg_replace('#/#', '/+', preg_quote($absoluteURIPath)); $filename = basename($localFile); $htaccessContent = <<<HTACCESS <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} ^/?{$regexLocalFile}$ RewriteRule .* - [F,L,NC] </IfModule> <IfModule !mod_rewrite.c> <Files "{$filename}"> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> </IfModule> HTACCESS; if (!wfUtils::htaccessPrepend($htaccessContent)) { return array('errorMsg' => __("You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.", 'wordfence')); } $issues->updateIssue((int) $_POST['issueID'], 'delete'); wfScanEngine::refreshScanNotification($issues); $counts = $issues->getIssueCounts(); return array( 'ok' => 1, 'issueCounts' => $counts, ); } public static function ajax_unlockOutIP_callback(){ $IP = $_POST['IP']; wfBlock::unlockOutIP($IP); self::clearLockoutCounters($IP); return array('ok' => 1); } public static function ajax_unblockIP_callback(){ $IP = $_POST['IP']; wfBlock::unblockIP($IP); self::clearLockoutCounters($IP); return array('ok' => 1); } public static function ajax_permBlockIP_callback(){ $IP = $_POST['IP']; wfBlock::createIP(__('Manual permanent block by admin', 'wordfence'), $IP, wfBlock::DURATION_FOREVER, time(), false, 0, wfBlock::TYPE_IP_MANUAL); return array('ok' => 1); } public static function ajax_unblockRange_callback(){ $id = trim($_POST['id']); wfBlock::removeBlockIDs(array($id)); return array('ok' => 1); } public static function ajax_whois_callback(){ $val = trim($_POST['val']); $val = preg_replace('/[^a-zA-Z0-9\.\-:]+/', '', $val); $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $result = $api->call('whois', array(), array( 'val' => $val, )); return array('ok' => 1, 'result' => $result['result']); } public static function ajax_recentTraffic_callback(){ $ip = trim($_POST['ip']); try { $response = self::IPTraf($ip); $reverseLookup = $response['reverseLookup']; $results = $response['results']; ob_start(); require(dirname(__FILE__) . '/IPTrafList.php'); $content = ob_get_clean(); return array('ok' => 1, 'result' => $content); } catch (InvalidArgumentException $e) { return array('errorMsg' => $e->getMessage()); } } public static function ajax_blockIP_callback() { $IP = trim($_POST['IP']); $perm = (isset($_POST['perm']) && $_POST['perm'] == '1') ? wfBlock::DURATION_FOREVER : wfConfig::getInt('blockedTime'); if (!wfUtils::isValidIP($IP)) { return array('err' => 1, 'errorMsg' => __("Please enter a valid IP address to block.", 'wordfence')); } if ($IP == wfUtils::getIP()) { return array('err' => 1, 'errorMsg' => __("You can't block your own IP address.", 'wordfence')); } $forcedWhitelistEntry = false; if (wfBlock::isWhitelisted($IP, $forcedWhitelistEntry)) { $message = sprintf(/* translators: IP address. */ __("The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page.", 'wordfence'), wp_kses($IP, array())); if ($forcedWhitelistEntry) { $message = sprintf(/* translators: IP address. */ __("The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for.", 'wordfence'), wp_kses($IP, array())); } return array('err' => 1, 'errorMsg' => $message); } if (wfConfig::get('neverBlockBG') != 'treatAsOtherCrawlers') { //Either neverBlockVerified or neverBlockUA is selected which means the user doesn't want to block google if (wfCrawl::isVerifiedGoogleCrawler($IP)) { return array('err' => 1, 'errorMsg' => __("The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google.", 'wordfence')); } } wfBlock::createIP($_POST['reason'], $IP, $perm); wfActivityReport::logBlockedIP($IP, null, 'manual'); return array('ok' => 1); } public static function ajax_avatarLookup_callback() { $ids = explode(',', $_POST['ids']); $res = array(); foreach ($ids as $id) { $avatar = get_avatar($id, 16); if ($avatar) { $res[$id] = $avatar; } } return array('ok' => 1, 'avatars' => $res); } public static function ajax_reverseLookup_callback(){ $ips = explode(',', $_POST['ips']); $res = array(); foreach($ips as $ip){ $res[$ip] = wfUtils::reverseLookup($ip); } return array('ok' => 1, 'ips' => $res); } public static function ajax_deleteIssue_callback(){ $wfIssues = new wfIssues(); $issueID = $_POST['id']; $wfIssues->deleteIssue($issueID); wfScanEngine::refreshScanNotification($wfIssues); return array('ok' => 1); } public static function ajax_updateAllIssues_callback(){ $op = $_POST['op']; $i = new wfIssues(); if($op == 'deleteIgnored'){ $i->deleteIgnored(); } else if($op == 'deleteNew'){ $i->deleteNew(); } else if($op == 'ignoreAllNew'){ $i->ignoreAllNew(); } else { return array('errorMsg' => __("An invalid operation was called.", 'wordfence')); } wfScanEngine::refreshScanNotification($i); return array('ok' => 1); } public static function ajax_updateIssueStatus_callback(){ $wfIssues = new wfIssues(); $status = $_POST['status']; $issueID = $_POST['id']; if(! preg_match('/^(?:new|delete|ignoreP|ignoreC)$/', $status)){ return array('errorMsg' => __("An invalid status was specified when trying to update that issue.", 'wordfence')); } $wfIssues->updateIssue($issueID, $status); wfScanEngine::refreshScanNotification($wfIssues); $counts = $wfIssues->getIssueCounts(); return array( 'ok' => 1, 'issueCounts' => $counts, ); } public static function ajax_killScan_callback(){ wordfence::status(1, 'info', __("Scan stop request received.", 'wordfence')); wordfence::status(10, 'info', 'SUM_KILLED:' . __("A request was received to stop the previous scan.", 'wordfence')); wfUtils::clearScanLock(); //Clear the lock now because there may not be a scan running to pick up the kill request and clear the lock wfScanEngine::requestKill(); wfConfig::remove('scanStartAttempt'); wfConfig::set('lastScanFailureType', false); return array( 'ok' => 1, ); } public static function ajax_loadIssues_callback(){ $offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0; $limit = isset($_POST['limit']) ? intval($_POST['limit']) : WORDFENCE_SCAN_ISSUES_PER_PAGE; $ignoredOffset = isset($_POST['ignoredOffset']) ? intval($_POST['ignoredOffset']) : 0; $ignoredLimit = isset($_POST['ignoredLimit']) ? intval($_POST['ignoredLimit']) : WORDFENCE_SCAN_ISSUES_PER_PAGE; $issues = wfIssues::shared()->getIssues($offset, $limit, $ignoredOffset, $ignoredLimit); $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts()); return array( 'issues' => $issues, 'issueCounts' => $issueCounts, ); } public static function ajax_ticker_callback() { $wfdb = new wfDB(); $table_wfStatus = wfDB::networkTable('wfStatus'); $serverTime = $wfdb->querySingle("select unix_timestamp()"); $jsonData = array( 'serverTime' => $serverTime, 'serverMicrotime' => microtime(true), 'msg' => wp_kses_data((string) $wfdb->querySingle("SELECT msg FROM {$table_wfStatus} WHERE level < 3 AND ctime > (UNIX_TIMESTAMP() - 3600) ORDER BY ctime DESC LIMIT 1")), ); $events = array(); if (get_site_option('wordfence_syncAttackDataAttempts') > 10) { self::syncAttackData(false); } $results = self::ajax_loadLiveTraffic_callback(); $events = $results['data']; if (isset($results['sql'])) { $jsonData['sql'] = $results['sql']; } $jsonData['events'] = $events; return $jsonData; } public static function ajax_activityLogUpdate_callback() { global $wpdb; $statusTable = wfDB::networkTable('wfStatus'); $row = $wpdb->get_row("SELECT ctime, msg FROM {$statusTable} WHERE level < 3 AND ctime > (UNIX_TIMESTAMP() - 3600) ORDER BY ctime DESC LIMIT 1", ARRAY_A); $lastMessage = __('Idle', 'wordfence'); $lastScanCompleted = wfConfig::get('lastScanCompleted'); if ($row) { $lastMessage = '[' . strtoupper(wfUtils::formatLocalTime('M d H:i:s', $row['ctime'])) . '] ' . wp_kses_data($row['msg']); } else if ($lastScanCompleted == 'ok') { $scanLastCompletion = (int) wfScanner::shared()->lastScanTime(); if ($scanLastCompletion) { $lastMessage = sprintf(/* translators: Localized date. */ __('Scan completed on %s', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $scanLastCompletion)); } } else if ($lastScanCompleted === false || empty($lastScanCompleted)) { //Do nothing } else { $lastMessage = __('Last scan failed', 'wordfence'); } $issues = wfIssues::shared(); $scanFailed = $issues->hasScanFailed(); $scanner = wfScanner::shared(); $stages = $scanner->stageStatus(); foreach ($stages as $key => &$value) { switch ($value) { case wfScanner::STATUS_PENDING: $value = 'wf-scan-step'; break; case wfScanner::STATUS_RUNNING: case wfScanner::STATUS_RUNNING_WARNING: if ($scanFailed) { $value = 'wf-scan-step'; break; } $value = 'wf-scan-step wf-scan-step-running'; break; case wfScanner::STATUS_COMPLETE_SUCCESS: $value = 'wf-scan-step wf-scan-step-complete-success'; break; case wfScanner::STATUS_COMPLETE_WARNING: $value = 'wf-scan-step wf-scan-step-complete-warning'; break; case wfScanner::STATUS_PREMIUM: $value = 'wf-scan-step wf-scan-step-premium'; break; case wfScanner::STATUS_DISABLED: $value = 'wf-scan-step wf-scan-step-disabled'; break; } } $stats = array( 'wf-scan-results-stats-postscommentsfiles' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0), 'wf-scan-results-stats-themesplugins' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0), 'wf-scan-results-stats-users' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_USERS, 0), 'wf-scan-results-stats-urls' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0), 'wf-scan-results-stats-issues' => $issues->getIssueCount(), ); $lastIssueUpdateTimestamp = wfIssues::shared()->getLastIssueUpdateTimestamp(); $issues = 0; $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts()); if ($lastIssueUpdateTimestamp > $_POST['lastissuetime']) { $issues = wfIssues::shared()->getIssues(0, WORDFENCE_SCAN_ISSUES_PER_PAGE, 0, WORDFENCE_SCAN_ISSUES_PER_PAGE); } $timeLimit = intval(wfConfig::get('scan_maxDuration')); if ($timeLimit < 1) { $timeLimit = WORDFENCE_DEFAULT_MAX_SCAN_TIME; } $scanFailedHTML = ''; switch ($scanFailed) { case wfIssues::SCAN_FAILED_TIMEOUT: $scanFailedSeconds = time() - wfIssues::lastScanStatusUpdate(); $scanFailedTiming = wfUtils::makeTimeAgo($scanFailedSeconds); if ($scanFailedSeconds > $timeLimit) { $scanFailedTiming = sprintf(/* translators: Time until. */ __('more than %s', 'wordfence'), wfUtils::makeTimeAgo($timeLimit)); } $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => sprintf(/* translators: Localized date. */ __('The current scan looks like it has failed. Its last status update was <span id="wf-scan-failed-time-ago">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.', 'wordfence'), $scanFailedTiming) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>', 'buttonTitle' => __('Cancel Scan', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_FORK_FAILED: case wfIssues::SCAN_FAILED_GENERAL: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => __('The previous scan has failed. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>', 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_DURATION_REACHED: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => sprintf(/* translators: Time limit (number). */ __('The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.', 'wordfence'), wfUtils::makeDuration($timeLimit)) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT) . '" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a>', 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_VERSION_CHANGE: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => esc_html__('The previous scan has terminated because we detected an update occurring during the scan.', 'wordfence'), 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_START_TIMEOUT: case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => __('The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>', 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_API_SSL_UNAVAILABLE: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => esc_html__('Scans are not functional because SSL is unavailable.', 'wordfence'), 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_API_CALL_FAILED: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => __('The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>', 'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted', '')), 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; case wfIssues::SCAN_FAILED_API_INVALID_RESPONSE: case wfIssues::SCAN_FAILED_API_ERROR_RESPONSE: $scanFailedHTML = wfView::create('scanner/scan-failed', array( 'messageHTML' => __('The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>', 'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted'), ''), 'buttonTitle' => __('Close', 'wordfence'), ))->render(); break; } wfUtils::doNotCache(); return array( 'ok' => 1, 'lastMessage' => $lastMessage, 'items' => self::getLog()->getStatusEvents($_POST['lastctime']), 'currentScanID' => wfScanner::shared()->lastScanTime(), 'signatureUpdateTime' => wfConfig::get('signatureUpdateTime'), 'scanFailedHTML' => $scanFailedHTML, 'scanStalled' => ($scanFailed == wfIssues::SCAN_FAILED_TIMEOUT || $scanFailed == wfIssues::SCAN_FAILED_START_TIMEOUT ? 1 : 0), 'scanRunning' => wfScanner::shared()->isRunning() ? 1 : 0, 'scanStages' => $stages, 'scanStats' => $stats, 'issues' => $issues, 'issueCounts' => $issueCounts, 'issueUpdateTimestamp'=> $lastIssueUpdateTimestamp, ); } public static function ajax_updateAlertEmail_callback(){ $email = trim($_POST['email']); if(! preg_match('/[^\@]+\@[^\.]+\.[^\.]+/', $email) || in_array(hash('sha256', $email), wfConfig::alertEmailBlacklist())){ return array( 'err' => __("Invalid email address given.", 'wordfence')); } wfConfig::set('alertEmails', $email); return array('ok' => 1, 'email' => $email); } public static function ajax_bulkOperation_callback() { $op = sanitize_text_field($_POST['op']); if ($op == 'del' || $op == 'repair') { $idsRemoved = array(); $filesWorkedOn = 0; $errors = array(); $wfIssues = new wfIssues(); $issueCount = $wfIssues->getIssueCount(); for ($offset = floor($issueCount / 100) * 100; $offset >= 0; $offset -= 100) { $issues = $wfIssues->getIssues($offset, 100, 0, 0); foreach ($issues['new'] as $i) { if ($op == 'del' && @$i['data']['canDelete']) { $file = $i['data']['file']; $localFile = ABSPATH . '/' . $file; $localFile = realpath($localFile); if (strpos($localFile, ABSPATH) !== 0) { continue; } if ($localFile === ABSPATH . 'wp-config.php') { $errors[] = esc_html__('Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted.', 'wordfence'); } else if (@unlink($localFile)) { $wfIssues->updateIssue($i['id'], 'delete'); $idsRemoved[] = $i['id']; $filesWorkedOn++; } else { $err = error_get_last(); $errors[] = esc_html(sprintf(/* translators: 1. File path. 2. Error message. */ __('Could not delete file %1$s. Error was: %2$s', 'wordfence'), wp_kses($file, array()), wp_kses(str_replace(ABSPATH, '{WordPress Root}/', $err['message']), array()))); } } else if ($op == 'repair' && @$i['data']['canFix']) { $file = $i['data']['file']; $localFile = ABSPATH . '/' . $file; $localFile = realpath($localFile); if (strpos($localFile, ABSPATH) !== 0) { continue; } $result = array(); if (isset($i['data']) && is_array($i['data']) && isset($i['data']['file']) && isset($i['data']['cType']) && ( //Basics $i['data']['cType'] == 'core' || //Core file ($i['data']['cType'] == 'plugin' || $i['data']['cType'] == 'theme') && isset($i['data']['cName']) && isset($i['data']['cVersion']) //Plugin or Theme file )) { $result = self::getWPFileContent($i['data']['file'], $i['data']['cType'], isset($i['data']['cName']) ? $i['data']['cName'] : null, isset($i['data']['cVersion']) ? $i['data']['cVersion'] : null); } if (is_array($result) && isset($result['errorMsg'])) { $errors[] = esc_html($result['errorMsg']); continue; } else if (!is_array($result) || !isset($result['fileContent'])) { $errors[] = esc_html(sprintf(/* translators: File path. */ __('We could not retrieve the original file of %s to do a repair.', 'wordfence'), wp_kses($file, array()))); continue; } if (preg_match('/\.\./', $file)) { $errors[] = sprintf(/* translators: File path. */ __('An invalid file %s was specified for repair.', 'wordfence'), wp_kses($file, array())); continue; } $fh = fopen($localFile, 'w'); if (!$fh) { $err = error_get_last(); if (preg_match('/Permission denied/i', $err['message'])) { $errMsg = esc_html(sprintf(/* translators: File path. */ __('You don\'t have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.', 'wordfence'), wp_kses($file, array()))); } else { $errMsg = esc_html(sprintf(/* translators: 1. File path. 2. Error message. */ __('We could not write to %1$s. The error was: %2$s', 'wordfence'), wp_kses($file, array()), $err['message'])); } $errors[] = $errMsg; continue; } flock($fh, LOCK_EX); $bytes = fwrite($fh, $result['fileContent']); flock($fh, LOCK_UN); fclose($fh); if ($bytes < 1) { $errors[] = esc_html(sprintf(/* translators: 1. File path. 2. Number of bytes. */ __('We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server.', 'wordfence'), wp_kses($file, array()), $bytes)); continue; } $filesWorkedOn++; $wfIssues->updateIssue($i['id'], 'delete'); $idsRemoved[] = $i['id']; } } } if ($filesWorkedOn > 0 && count($errors) > 0) { $headMsg = esc_html($op == 'del' ? __('Deleted some files with errors', 'wordfence') : __('Repaired some files with errors', 'wordfence')); $bodyMsg = sprintf(esc_html($op == 'del' ? /* translators: 1. Number of files. 2. Error message. */ __('Deleted %1$d files but we encountered the following errors with other files: %2$s', 'wordfence') : /* translators: 1. Number of files. 2. Error message. */ __('Repaired %1$d files but we encountered the following errors with other files: %2$s', 'wordfence')), $filesWorkedOn, implode('<br>', $errors)); } else if ($filesWorkedOn > 0) { $headMsg = sprintf(esc_html($op == 'del' ? /* translators: Number of files. */ __('Deleted %d files successfully', 'wordfence') : /* translators: Number of files. */ __('Repaired %d files successfully', 'wordfence')), $filesWorkedOn); $bodyMsg = sprintf(esc_html($op == 'del' ? /* translators: Number of files. */ __('Deleted %d files successfully. No errors were encountered.', 'wordfence') : /* translators: Number of files. */ __('Repaired %d files successfully. No errors were encountered.', 'wordfence')), $filesWorkedOn); } else if (count($errors) > 0) { $headMsg = esc_html($op == 'del' ? __('Could not delete files', 'wordfence') : __('Could not repair files', 'wordfence')); $bodyMsg = sprintf(esc_html($op == 'del' ? /* translators: Error message. */ __('We could not delete any of the files you selected. We encountered the following errors: %s', 'wordfence') : /* translators: Error message. */ __('We could not repair any of the files you selected. We encountered the following errors: %s', 'wordfence')), implode('<br>', $errors)); } else { $headMsg = esc_html__('Nothing done', 'wordfence'); $bodyMsg = esc_html($op == 'del' ? __('We didn\'t delete anything and no errors were found.', 'wordfence') : __('We didn\'t repair anything and no errors were found.', 'wordfence')); } wfScanEngine::refreshScanNotification($wfIssues); $counts = $wfIssues->getIssueCounts(); return array('ok' => 1, 'bulkHeading' => $headMsg, 'bulkBody' => $bodyMsg, 'idsRemoved' => $idsRemoved, 'issueCounts' => $counts); } else { return array('errorMsg' => esc_html__('Invalid bulk operation selected', 'wordfence')); } } public static function ajax_deleteFile_callback($issueID = null){ if ($issueID === null) { $issueID = intval($_POST['issueID']); } $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if(! $issue){ return array('errorMsg' => __('Could not delete file because we could not find that issue.', 'wordfence')); } if(! $issue['data']['file']){ return array('errorMsg' => __('Could not delete file because that issue does not appear to be a file related issue.', 'wordfence')); } $file = $issue['data']['file']; $localFile = ABSPATH . '/' . $file; $localFile = realpath($localFile); if(strpos($localFile, ABSPATH) !== 0){ return array('errorMsg' => __('An invalid file was requested for deletion.', 'wordfence')); } if ($localFile === ABSPATH . 'wp-config.php') { return array( 'errorMsg' => __('Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted.', 'wordfence') ); } /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $adminURL = network_admin_url('admin.php?' . http_build_query(array( 'page' => 'WordfenceScan', 'subpage' => 'scan_credentials', 'action' => 'deleteFile', 'issueID' => $issueID, 'nonce' => wp_create_nonce('wp-ajax'), ))); if (!self::requestFilesystemCredentials($adminURL, null, true, false)) { return array( 'ok' => 1, 'needsCredentials' => 1, 'redirect' => $adminURL, ); } if ($wp_filesystem->delete($localFile)) { $wfIssues->updateIssue($issueID, 'delete'); $counts = $wfIssues->getIssueCounts(); wfScanEngine::refreshScanNotification($wfIssues); return array( 'ok' => 1, 'localFile' => $localFile, 'file' => $file, 'issueCounts' => $counts, ); } $err = error_get_last(); return array( 'errorMsg' => sprintf( /* translators: 1. File path. 2. Error message. */ __('Could not delete file %1$s. The error was: %2$s', 'wordfence'), wp_kses($file, array()), wp_kses(str_replace(ABSPATH, '{WordPress Root}/', $err['message']), array()) ) ); } public static function ajax_deleteDatabaseOption_callback(){ /** @var wpdb $wpdb */ global $wpdb; $issueID = intval($_POST['issueID']); $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if (!$issue) { return array('errorMsg' => __("Could not remove the option because we could not find that issue.", 'wordfence')); } if (empty($issue['data']['option_name'])) { return array('errorMsg' => __("Could not remove the option because that issue does not appear to be a database related issue.", 'wordfence')); } $table_options = wfDB::blogTable('options', $issue['data']['site_id']); if ($wpdb->query($wpdb->prepare("DELETE FROM {$table_options} WHERE option_name = %s", $issue['data']['option_name']))) { $wfIssues->updateIssue($issueID, 'delete'); wfScanEngine::refreshScanNotification($wfIssues); return array( 'ok' => 1, 'option_name' => $issue['data']['option_name'], ); } else { return array('errorMsg' => sprintf( /* translators: 1. WordPress option. 2. Error message. */ __('Could not remove the option %1$s. The error was: %2$s', 'wordfence'), esc_html($issue['data']['option_name']), esc_html($wpdb->last_error) )); } } public static function ajax_fixFPD_callback(){ $issues = new wfIssues(); $issue = $issues->getIssueByID($_POST['issueID']); if (!$issue) { return array('cerrorMsg' => __("We could not find that issue in our database.", 'wordfence')); } $htaccess = ABSPATH . '/.htaccess'; $change = "<IfModule mod_php5.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php7.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value display_errors 0\n</IfModule>"; $content = ""; if (file_exists($htaccess)) { $content = file_get_contents($htaccess); } if (@file_put_contents($htaccess, trim($content . "\n" . $change), LOCK_EX) === false) { return array('cerrorMsg' => __("You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.", 'wordfence')); } if (wfScanEngine::testForFullPathDisclosure()) { // Didn't fix it, so revert the changes and return an error file_put_contents($htaccess, $content, LOCK_EX); return array( 'cerrorMsg' => __("Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control.", 'wordfence'), ); } $issues->updateIssue($_POST['issueID'], 'delete'); wfScanEngine::refreshScanNotification($issues); return array('ok' => 1); } public static function ajax_restoreFile_callback($issueID = null){ if ($issueID === null) { $issueID = intval($_POST['issueID']); } $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if(! $issue){ return array('cerrorMsg' => __("We could not find that issue in our database.", 'wordfence')); } /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $adminURL = network_admin_url('admin.php?' . http_build_query(array( 'page' => 'WordfenceScan', 'subpage' => 'scan_credentials', 'action' => 'restoreFile', 'issueID' => $issueID, 'nonce' => wp_create_nonce('wp-ajax'), ))); if (!self::requestFilesystemCredentials($adminURL, null, true, false)) { return array( 'ok' => 1, 'needsCredentials' => true, 'redirect' => $adminURL, ); } $dat = $issue['data']; $result = self::getWPFileContent($dat['file'], $dat['cType'], (isset($dat['cName']) ? $dat['cName'] : ''), (isset($dat['cVersion']) ? $dat['cVersion'] : '')); $file = $dat['file']; if(isset($result['errorMsg']) && $result['errorMsg']){ return $result; } else if(! $result['fileContent']){ return array('errorMsg' => __("We could not get the original file to do a repair.", 'wordfence')); } if(preg_match('/\.\./', $file)){ return array('errorMsg' => __("An invalid file was specified for repair.", 'wordfence')); } $localFile = rtrim(ABSPATH, '/') . '/' . preg_replace('/^[\.\/]+/', '', $file); if ($wp_filesystem->put_contents($localFile, $result['fileContent'])) { $wfIssues->updateIssue($issueID, 'delete'); $counts = $wfIssues->getIssueCounts(); wfScanEngine::refreshScanNotification($wfIssues); return array( 'ok' => 1, 'localFile' => $localFile, 'file' => $file, 'issueCounts' => $counts, ); } return array( 'errorMsg' => __("We could not write to that file. You may not have permission to modify files on your WordPress server.", 'wordfence'), ); } public static function ajax_scan_callback(){ self::status(4, 'info', __("Ajax request received to start scan.", 'wordfence')); $err = wfScanEngine::startScan(); if ($err) { return array('errorMsg' => wp_kses($err, array())); } else { $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts()); return array("ok" => 1, 'issueCounts' => $issueCounts); } } public static function ajax_exportSettings_callback() { $result = wfImportExportController::shared()->export(); return $result; } public static function ajax_importSettings_callback(){ $token = $_POST['token']; return self::importSettings($token); } public static function importSettings($token) { //Documented call for external interfacing. return wfImportExportController::shared()->import($token); } public static function ajax_dismissNotification_callback() { $id = $_POST['id']; $n = wfNotification::getNotificationForID($id); if ($n !== null) { $n->markAsRead(); } return array( 'ok' => 1, ); } public static function ajax_utilityScanForBlacklisted_callback() { if (wfScanner::shared()->isRunning()) { return array('wait' => 2); //Can't run while a scan is running since the URL hoover is currently implemented like a singleton } $pageURL = stripslashes($_POST['url']); $source = stripslashes($_POST['source']); $apiKey = wfConfig::get('apiKey'); $wp_version = wfUtils::getWPVersion(); $h = new wordfenceURLHoover($apiKey, $wp_version); $h->hoover(1, $source); $hooverResults = $h->getBaddies(); if ($h->errorMsg) { $h->cleanup(); return array('wait' => 3, 'errorMsg' => $h->errorMsg); //Unable to contact noc1 to verify } $h->cleanup(); if (sizeof($hooverResults) > 0 && isset($hooverResults[1])) { $hresults = $hooverResults[1]; $count = count($hresults); if ($count > 0) { new wfNotification( null, wfNotification::PRIORITY_HIGH_WARNING, sprintf(/* translators: Number of URLs. */ _n("Page contains %d malware URL: ", "Page contains %d malware URLs: ", $count, 'wordfence') . esc_html($pageURL)), 'wfplugin_malwareurl_' . md5($pageURL), null, array(array('link' => wfUtils::wpAdminURL('admin.php?page=WordfenceScan'), 'label' => __('Run a Scan', 'wordfence')))); return array('bad' => $count); } } return array('ok' => 1); } public static function ajax_dashboardShowMore_callback() { $grouping = $_POST['grouping']; $period = $_POST['period']; $dashboard = new wfDashboard(); if ($grouping == 'ips') { $data = null; if ($period == '24h') { $data = $dashboard->ips24h; } else if ($period == '7d') { $data = $dashboard->ips7d; } else if ($period == '30d') { $data = $dashboard->ips30d; } if ($data !== null) { foreach ($data as &$d) { $d['IP'] = esc_html(wfUtils::inet_ntop($d['IP'])); $d['blockCount'] = esc_html(number_format_i18n($d['blockCount'])); $d['countryFlag'] = esc_attr('wf-flag-' . strtolower($d['countryCode'])); $d['countryName'] = esc_html($d['countryName']); } return array('ok' => 1, 'data' => $data); } } else if ($grouping == 'logins') { $data = null; if ($period == 'success') { $data = $dashboard->loginsSuccess; } else if ($period == 'fail') { $data = $dashboard->loginsFail; } if ($data !== null) { $data = array_slice($data, 0, 100); foreach ($data as &$d) { $d['ip'] = esc_html($d['ip']); $d['name'] = esc_html($d['name']); if (time() - $d['t'] < 86400) { $d['t'] = esc_html(wfUtils::makeTimeAgo(time() - $d['t']) . ' ago'); } else { $d['t'] = esc_html(date_i18n(get_option('date_format') . ' ' . get_option('time_format'), (int) $d['t'])); } } return array('ok' => 1, 'data' => $data); } } return array('error' => __('Unknown dashboard data set.', 'wordfence')); } public static function startScan(){ wfScanEngine::startScan(); } public static function templateRedir(){ if (!empty($_GET['wordfence_lh'])) { self::ajax_lh_callback(); exit; } if (!empty($_GET['wfcentral_admin_redirect'])) { wp_safe_redirect(remove_query_arg('wfcentral_admin_redirect', network_admin_url('admin.php?page=Wordfence' . rawurlencode(ucwords(preg_replace('/\W/', '', $_GET['wfcentral_admin_redirect']))) . '&' . $_SERVER['QUERY_STRING']))); exit; } $wfFunc = !empty($_GET['_wfsf']) && is_string($_GET['_wfsf']) ? $_GET['_wfsf'] : ''; //Logging self::doEarlyAccessLogging(); //End logging if(! ($wfFunc == 'diff' || $wfFunc == 'view' || $wfFunc == 'viewOption' || $wfFunc == 'sysinfo' || $wfFunc == 'IPTraf' || $wfFunc == 'viewActivityLog' || $wfFunc == 'testmem' || $wfFunc == 'testtime' || $wfFunc == 'download' || $wfFunc == 'blockedIPs' || ($wfFunc == 'debugWAF' && WFWAF_DEBUG))){ return; } if(! wfUtils::isAdmin()){ return; } $nonce = $_GET['nonce']; if(! wp_verify_nonce($nonce, 'wp-ajax')){ _e("Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again.", 'wordfence'); exit(0); } if($wfFunc == 'diff'){ self::wfFunc_diff(); } else if($wfFunc == 'view'){ self::wfFunc_view(); } else if($wfFunc == 'viewOption'){ self::wfFunc_viewOption(); } else if($wfFunc == 'sysinfo') { require(dirname(__FILE__) . '/sysinfo.php' ); } else if($wfFunc == 'IPTraf'){ self::wfFunc_IPTraf(); } else if($wfFunc == 'viewActivityLog'){ self::wfFunc_viewActivityLog(); } else if($wfFunc == 'testmem'){ self::wfFunc_testmem(); } else if($wfFunc == 'testtime'){ self::wfFunc_testtime(); } else if($wfFunc == 'download'){ self::wfFunc_download(); } else if($wfFunc == 'blockedIPs'){ self::wfFunc_blockedIPs(); } else if($wfFunc == 'debugWAF' && WFWAF_DEBUG){ self::wfFunc_debugWAF(); } exit(0); } public static function memtest_error_handler($errno, $errstr, $errfile, $errline){ echo "Error received: $errstr\n"; } private static function wfFunc_testtime(){ header('Content-Type: text/plain'); @error_reporting(E_ALL); wfUtils::iniSet('display_errors','On'); set_error_handler('wordfence::memtest_error_handler', E_ALL); echo "Wordfence process duration benchmarking utility version " . WORDFENCE_VERSION . ".\n"; echo "This utility tests how long your WordPress host allows a process to run.\n\n--Starting test--\n"; echo "Starting timed test. This will take at least three minutes. Seconds elapsed are printed below.\nAn error after this line is not unusual. Read it and the elapsed seconds to determine max process running time on your host.\n"; for($i = 1; $i <= 180; $i++){ echo "\n$i:"; for($j = 0; $j < 1000; $j++){ echo '.'; } flush(); sleep(1); } echo "\n--Test complete.--\n\nCongratulations, your web host allows your PHP processes to run at least 3 minutes.\n"; exit(); } private static function wfFunc_testmem(){ header('Content-Type: text/plain'); @error_reporting(E_ALL); wfUtils::iniSet('display_errors','On'); set_error_handler('wordfence::memtest_error_handler', E_ALL); $maxMemory = ini_get('memory_limit'); $last = strtolower(substr($maxMemory, -1)); $maxMemory = (int) $maxMemory; $configuredMax = wfConfig::get('maxMem', 0); if ($configuredMax <= 0) { if ($last == 'g') { $configuredMax = $maxMemory * 1024; } else if ($last == 'm') { $configuredMax = $maxMemory; } else if ($last == 'k') { $configuredMax = $maxMemory / 1024; } $configuredMax = floor($configuredMax); } $stepSize = 5242880; //5 MB echo "Wordfence Memory benchmarking utility version " . WORDFENCE_VERSION . ".\n"; echo "This utility tests if your WordPress host respects the maximum memory configured\nin their php.ini file, or if they are using other methods to limit your access to memory.\n\n--Starting test--\n"; echo "Current maximum memory configured in php.ini: " . ini_get('memory_limit') . "\n"; echo "Current memory usage: " . sprintf('%.2f', memory_get_usage(true) / (1024 * 1024)) . "M\n"; echo "Attempting to set max memory to {$configuredMax}M.\n"; wfUtils::iniSet('memory_limit', ($configuredMax + 5) . 'M'); //Allow a little extra for testing overhead echo "Starting memory benchmark. Seeing an error after this line is not unusual. Read the error carefully\nto determine how much memory your host allows. We have requested {$configuredMax} megabytes.\n"; if (memory_get_usage(true) < 1) { echo "Exiting test because memory_get_usage() returned a negative number\n"; exit(); } if (memory_get_usage(true) > (1024 * 1024 * 1024)) { echo "Exiting because current memory usage is greater than a gigabyte.\n"; exit(); } if (!defined('WP_SANDBOX_SCRAPING')) { define('WP_SANDBOX_SCRAPING', true); } //Disables the WP error handler in somewhat of a hacky way $accumulatedMemory = array_fill(0, ceil($configuredMax / $stepSize), ''); $currentUsage = memory_get_usage(true); $tenMB = 10 * 1024 * 1024; $start = ceil($currentUsage / $tenMB) * $tenMB - $currentUsage; //Start at the closest 10 MB increment to the current usage $configuredMax = $configuredMax * 1048576; //Bytes $testLimit = $configuredMax - memory_get_usage(true); $finalUsage = '0'; $previous = 0; $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111222222222222222222233333333333333334444444444444444444444444555555555555666666666666666666"; $index = 0; while ($start <= $testLimit) { $accumulatedMemory[$index] = str_repeat($chars, ($start - $previous) / 256); $finalUsage = sprintf('%.2f', (memory_get_usage(true) / 1024 / 1024)); echo "Tested up to " . $finalUsage . " megabytes.\n"; if ($start == $testLimit) { break; } $previous = $start; $start = min($start + $stepSize, $testLimit); if (memory_get_usage(true) > $configuredMax) { break; } $index++; } echo "--Test complete.--\n\nYour web host allows you to use at least {$finalUsage} megabytes of memory for each PHP process hosting your WordPress site.\n"; exit(); } public static function wfLogHumanHeader(){ //Final check in case this was added as an action before the request was fully initialized if (self::getLog()->getCurrentRequest()->jsRun || !wfConfig::liveTrafficEnabled()) { return; } self::$hitID = self::getLog()->logHit(); if (self::$hitID) { $URL = home_url('/?wordfence_lh=1&hid=' . wfUtils::encrypt(self::$hitID)); $URL = addslashes(preg_replace('/^https?:/i', '', $URL)); #Load as external script async so we don't slow page down. echo <<<HTML <script type="text/javascript"> (function(url){ if(/(?:Chrome\/26\.0\.1410\.63 Safari\/537\.31|WordfenceTestMonBot)/.test(navigator.userAgent)){ return; } var addEvent = function(evt, handler) { if (window.addEventListener) { document.addEventListener(evt, handler, false); } else if (window.attachEvent) { document.attachEvent('on' + evt, handler); } }; var removeEvent = function(evt, handler) { if (window.removeEventListener) { document.removeEventListener(evt, handler, false); } else if (window.detachEvent) { document.detachEvent('on' + evt, handler); } }; var evts = 'contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop keydown keypress keyup mousedown mousemove mouseout mouseover mouseup mousewheel scroll'.split(' '); var logHuman = function() { if (window.wfLogHumanRan) { return; } window.wfLogHumanRan = true; var wfscr = document.createElement('script'); wfscr.type = 'text/javascript'; wfscr.async = true; wfscr.src = url + '&r=' + Math.random(); (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(wfscr); for (var i = 0; i < evts.length; i++) { removeEvent(evts[i], logHuman); } }; for (var i = 0; i < evts.length; i++) { addEvent(evts[i], logHuman); } })('$URL'); </script> HTML; } } public static function shutdownAction(){ } public static function wfFunc_viewActivityLog(){ require(dirname(__FILE__) . '/viewFullActivityLog.php'); exit(0); } public static function wfFunc_IPTraf(){ $IP = $_GET['IP']; try { $response = self::IPTraf($IP); $reverseLookup = $response['reverseLookup']; $results = $response['results']; require(dirname(__FILE__) . '/IPTraf.php'); exit(0); } catch (InvalidArgumentException $e) { echo $e->getMessage(); exit; } } private static function IPTraf($ip) { if(!wfUtils::isValidIP($ip)){ throw new InvalidArgumentException(__("An invalid IP address was specified.", 'wordfence')); } $reverseLookup = wfUtils::reverseLookup($ip); $wfLog = wfLog::shared(); $results = array_merge( $wfLog->getHits('hits', '404', 0, 10000, $ip), $wfLog->getHits('hits', 'hit', 0, 10000, $ip) ); usort($results, 'wordfence::iptrafsort'); $ids = array(); foreach ($results as $k => $r) { if (isset($ids[$r['id']])) { unset($results[$k]); } else { $ids[$r['id']] = 1; } } $results = array_values($results); for ($i = 0; $i < count($results); $i++){ if(array_key_exists($i + 1, $results)){ $results[$i]['timeSinceLastHit'] = sprintf('%.4f', $results[$i]['ctime'] - $results[$i + 1]['ctime']); } else { $results[$i]['timeSinceLastHit'] = ''; } } return compact('reverseLookup', 'results'); } public static function iptrafsort($b, $a){ if($a['ctime'] == $b['ctime']){ return 0; } return ($a['ctime'] < $b['ctime']) ? -1 : 1; } public static function wfFunc_viewOption() { /** @var wpdb $wpdb */ global $wpdb; $site_id = !empty($_GET['site_id']) ? absint($_GET['site_id']) : get_current_blog_id(); $option_name = !empty($_GET['option']) ? $_GET['option'] : false; $table_options = wfDB::blogTable('options', $site_id); $option_value = $wpdb->get_var($wpdb->prepare("SELECT option_value FROM {$table_options} WHERE option_name = %s", $option_name)); header('Content-type: text/plain'); exit($option_value); } public static function wfFunc_view(){ wfUtils::doNotCache(); if (WORDFENCE_DISABLE_FILE_VIEWER) { _e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence'); exit(); } $localFile = ABSPATH . preg_replace('/^(?:\.\.|[\/]+)/', '', sanitize_text_field($_GET['file'])); if(strpos($localFile, '..') !== false){ _e("Invalid file requested. (Relative paths not allowed)", 'wordfence'); exit(); } if(preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $localFile)){ _e("File contains illegal characters.", 'wordfence'); exit(); } $cont = @file_get_contents($localFile); $isEmpty = false; if(! $cont){ if(file_exists($localFile) && filesize($localFile) === 0){ //There's a remote possibility that very large files on 32 bit systems will return 0 here, but it's about 1 in 2 billion $isEmpty = true; } else { $err = error_get_last(); printf(/* translators: Error message. */ __("We could not open the requested file for reading. The error was: %s", 'wordfence'), $err['message']); exit(0); } } $fileMTime = @filemtime($localFile); $fileMTime = date('l jS \of F Y h:i:s A', $fileMTime); try { if(wfUtils::fileOver2Gigs($localFile)){ $fileSize = __("Greater than 2 Gigs", 'wordfence'); } else { $fileSize = @filesize($localFile); //Checked if over 2 gigs above $fileSize = number_format($fileSize, 0, '', ',') . ' bytes'; } } catch(Exception $e){ $fileSize = __('Unknown file size.', 'wordfence'); } require(dirname(__FILE__) . '/wfViewResult.php'); exit(0); } public static function wfFunc_diff(){ wfUtils::doNotCache(); if (WORDFENCE_DISABLE_FILE_VIEWER) { esc_html_e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence'); exit(); } if(preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $_GET['file'])){ esc_html_e("File contains illegal characters.", 'wordfence'); exit(); } $result = self::getWPFileContent($_GET['file'], $_GET['cType'], $_GET['cName'], $_GET['cVersion']); if( isset( $result['errorMsg'] ) && $result['errorMsg']){ echo wp_kses($result['errorMsg'], array()); exit(0); } else if(! $result['fileContent']){ esc_html_e("We could not get the contents of the original file to do a comparison.", 'wordfence'); exit(0); } $localFile = realpath(ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $_GET['file'])); $localContents = file_get_contents($localFile); if($localContents == $result['fileContent']){ $diffResult = ''; } else { $diff = new Diff( //Treat DOS and Unix files the same preg_split("/(?:\r\n|\n)/", $result['fileContent']), preg_split("/(?:\r\n|\n)/", $localContents), array() ); $renderer = new Diff_Renderer_Html_SideBySide; $diffResult = $diff->Render($renderer); } require(dirname(__FILE__) . '/diffResult.php'); exit(0); } public static function wfFunc_download() { wfUtils::doNotCache(); if (WORDFENCE_DISABLE_FILE_VIEWER) { esc_html_e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence'); exit(); } $localFile = ABSPATH . preg_replace('/^(?:\.\.|[\/]+)/', '', sanitize_text_field($_GET['file'])); if (strpos($localFile, '..') !== false) { esc_html_e("Invalid file requested. (Relative paths not allowed)", 'wordfence'); exit(); } if (preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $localFile)) { esc_html_e("File contains illegal characters.", 'wordfence'); exit(); } if (!file_exists($localFile)) { _e('File does not exist.', 'wordfence'); exit(); } $filename = basename($localFile); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Length: ' . filesize($localFile)); readfile($localFile); exit; } public static function wfFunc_blockedIPs() { $blocks = wfBlock::ipBlocks(true); $output = ''; if (is_array($blocks)) { foreach ($blocks as $entry) { $output .= $entry->ip . "\n"; } } header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . get_bloginfo('name', 'raw') . ' - Blocked IPs.txt"'); header('Content-Length: ' . strlen($output)); echo $output; exit; } /** * */ public static function wfFunc_debugWAF() { $data = array(); if (!empty($_GET['hitid'])) { $data['hit'] = new wfRequestModel($_GET['hitid']); if ($data['hit']->actionData) { $data['hitData'] = (object) wfRequestModel::unserializeActionData($data['hit']->actionData); } echo wfView::create('waf/debug', $data); } } public static function initAction(){ load_plugin_textdomain('wordfence', false, basename(WORDFENCE_PATH) . '/languages'); $firewall = new wfFirewall(); define('WFWAF_OPERATIONAL', $firewall->testConfig()); $currentUserID = get_current_user_id(); $role = wordfence::getCurrentUserRole(); if (!WFWAF_SUBDIRECTORY_INSTALL) { try { $authCookie = wfWAF::getInstance()->parseAuthCookie(); if (is_user_logged_in() && ( !$authCookie || (int) $currentUserID !== (int) $authCookie['userID'] || $role !== $authCookie['role'] ) ) { wfUtils::setcookie(wfWAF::getInstance()->getAuthCookieName(), $currentUserID . '|' . $role . '|' . wfWAF::getInstance()->getAuthCookieValue($currentUserID, $role), time() + 43200, COOKIEPATH, COOKIE_DOMAIN, wfUtils::isFullSSL(), true); } } catch (wfWAFStorageFileException $e) { error_log($e->getMessage()); } catch (wfWAFStorageEngineMySQLiException $e) { error_log($e->getMessage()); } } if (wfConfig::get('other_hideWPVersion')) { global $wp_version; global $wp_styles; if (!($wp_styles instanceof WP_Styles)) { $wp_styles = new WP_Styles(); } if ($wp_styles->default_version === $wp_version) { $wp_styles->default_version = wp_hash($wp_styles->default_version); } foreach ($wp_styles->registered as $key => $val) { if ($wp_styles->registered[$key]->ver === $wp_version) { $wp_styles->registered[$key]->ver = wp_hash($wp_styles->registered[$key]->ver); } } global $wp_scripts; if (!($wp_scripts instanceof WP_Scripts)) { $wp_scripts = new WP_Scripts(); } if ($wp_scripts->default_version === $wp_version) { $wp_scripts->default_version = wp_hash($wp_scripts->default_version); } foreach ($wp_scripts->registered as $key => $val) { if ($wp_scripts->registered[$key]->ver === $wp_version) { $wp_scripts->registered[$key]->ver = wp_hash($wp_scripts->registered[$key]->ver); } } } } public static function admin_init(){ if(! wfUtils::isAdmin()){ return; } if (is_admin() && isset($_GET['page'])) { switch ($_GET['page']) { case 'WordfenceBlocking': wp_redirect(network_admin_url('admin.php?page=WordfenceWAF#top#blocking')); die; case 'WordfenceLiveTraffic': wp_redirect(network_admin_url('admin.php?page=WordfenceTools&subpage=livetraffic')); die; } } wfOnboardingController::initialize(); if (wfConfig::get('touppBypassNextCheck')) { wfConfig::set('touppBypassNextCheck', 0); wfConfig::set('touppPromptNeeded', 0); } foreach(array( 'activate', 'scan', 'updateAlertEmail', 'sendActivityLog', 'restoreFile', 'exportSettings', 'importSettings', 'bulkOperation', 'deleteFile', 'deleteDatabaseOption', 'removeExclusion', 'activityLogUpdate', 'ticker', 'loadIssues', 'updateIssueStatus', 'deleteIssue', 'updateAllIssues', 'avatarLookup', 'reverseLookup', 'unlockOutIP', 'unblockRange', 'whois', 'recentTraffic', 'unblockIP', 'blockIP', 'permBlockIP', 'loadStaticPanel', 'updateIPPreview', 'downloadHtaccess', 'downloadLogFile', 'checkHtaccess', 'updateConfig', 'autoUpdateChoice', 'misconfiguredHowGetIPsChoice', 'switchLiveTrafficSecurityOnlyChoice', 'dismissAdminNotice', 'killScan', 'saveCountryBlocking', 'tourClosed', 'downgradeLicense', 'addTwoFactor', 'twoFacActivate', 'twoFacDel', 'loadTwoFactor', 'sendTestEmail', 'email_summary_email_address_debug', 'unblockNetwork', 'sendDiagnostic', 'saveDisclosureState', 'saveWAFConfig', 'updateWAFRules', 'loadLiveTraffic', 'whitelistWAFParamKey', 'disableDirectoryListing', 'fixFPD', 'deleteAdminUser', 'revokeAdminUser', 'hideFileHtaccess', 'saveDebuggingConfig', 'whitelistBulkDelete', 'whitelistBulkEnable', 'whitelistBulkDisable', 'dismissNotification', 'utilityScanForBlacklisted', 'dashboardShowMore', 'saveOptions', 'restoreDefaults', 'enableAllOptionsPage', 'createBlock', 'deleteBlocks', 'makePermanentBlocks', 'getBlocks', 'installAutoPrepend', 'uninstallAutoPrepend', 'installLicense', 'recordTOUPP', 'mailingSignup', 'switchTo2FANew', 'switchTo2FAOld', 'wfcentral_step1', 'wfcentral_step2', 'wfcentral_step3', 'wfcentral_step4', 'wfcentral_step5', 'wfcentral_step6', 'wfcentral_disconnect', 'exportDiagnostics', ) as $func){ add_action('wp_ajax_wordfence_' . $func, 'wordfence::ajaxReceiver'); } wp_register_script('chart-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0'); wp_register_script('wordfence-select2-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION); wp_register_style('wordfence-select2-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION); wp_register_style('wordfence-font-awesome-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-font-awesome.css'), '', WORDFENCE_VERSION); if (isset($_GET['page']) && (preg_match('/^Wordfence/', @$_GET['page']) || ($_GET['page'] == 'WFLS' && wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LOGIN_SECURITY)))) { wp_enqueue_style('wp-pointer'); wp_enqueue_script('wp-pointer'); wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfence-font-awesome-style'); wp_enqueue_style('wordfence-main-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/main.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION); wp_enqueue_style('wordfence-colorbox-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-colorbox.css'), '', WORDFENCE_VERSION); wp_enqueue_script('json2'); wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-menu'); wp_enqueue_script('jquery.wftmpl', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.tmpl.min.js'), array('jquery'), WORDFENCE_VERSION); wp_enqueue_script('jquery.wfcolorbox', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.colorbox-min.js'), array('jquery'), WORDFENCE_VERSION); wp_enqueue_script('jquery.wfdataTables', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.dataTables.min.js'), array('jquery'), WORDFENCE_VERSION); wp_enqueue_script('jquery.qrcode', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.qrcode.min.js'), array('jquery'), WORDFENCE_VERSION); //wp_enqueue_script('jquery.tools', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.tools.min.js'), array('jquery')); wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION); wp_enqueue_script('wordfenceAdminExtjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfglobal.js'), array('jquery'), WORDFENCE_VERSION); wp_enqueue_script('wordfenceAdminjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.js'), array('jquery', 'jquery-ui-core', 'jquery-ui-menu'), WORDFENCE_VERSION); wp_enqueue_script('wordfenceDropdownjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfdropdown.js'), array('jquery'), WORDFENCE_VERSION); self::setupAdminVars(); if (wfConfig::get('touppPromptNeeded')) { add_filter('admin_body_class', 'wordfence::showTOUPPOverlay', 99, 1); } } else { wp_enqueue_style('wp-pointer'); wp_enqueue_script('wp-pointer'); wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION); wp_enqueue_script('wordfenceAdminExtjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfglobal.js'), array('jquery'), WORDFENCE_VERSION); wp_enqueue_style('wordfence-font-awesome-style'); wp_enqueue_style('wordfence-global-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-global.css'), '', WORDFENCE_VERSION); self::setupAdminVars(); } if (is_admin()) { //Back end only wfUtils::refreshCachedHomeURL(); wfUtils::refreshCachedSiteURL(); } //Early WAF configuration actions if ((!WFWAF_AUTO_PREPEND || WFWAF_SUBDIRECTORY_INSTALL) && empty($_GET['wafAction']) && !wfConfig::get('dismissAutoPrependNotice') && !wfOnboardingController::shouldShowAttempt3() && !wfConfig::get('touppPromptNeeded')) { if (is_multisite()) { add_action('network_admin_notices', 'wordfence::wafAutoPrependNotice'); } else { add_action('admin_notices', 'wordfence::wafAutoPrependNotice'); } } if (isset($_GET['page']) && $_GET['page'] == 'WordfenceWAF' && isset($_GET['subpage']) && $_GET['subpage'] == 'waf_options') { if (!WFWAF_AUTO_PREPEND || WFWAF_SUBDIRECTORY_INSTALL) { //Not yet installed if (isset($_GET['action']) && $_GET['action'] == 'configureAutoPrepend') { check_admin_referer('wfWAFAutoPrepend', 'wfnonce'); if (isset($_GET['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_GET['serverConfiguration'])) { $helper = new wfWAFAutoPrependHelper($_GET['serverConfiguration']); if (isset($_GET['downloadBackup'])) { $helper->downloadBackups(isset($_GET['backupIndex']) ? absint($_GET['backupIndex']) : 0); } } } } else { //Already installed if (isset($_GET['action']) && $_GET['action'] == 'removeAutoPrepend') { check_admin_referer('wfWAFRemoveAutoPrepend', 'wfnonce'); if (isset($_GET['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_GET['serverConfiguration'])) { $helper = new wfWAFAutoPrependHelper($_GET['serverConfiguration']); if (isset($_GET['downloadBackup'])) { $helper->downloadBackups(isset($_GET['backupIndex']) ? absint($_GET['backupIndex']) : 0); } } } } } } private static function setupAdminVars(){ $updateInt = max(absint(wfConfig::getInt('actUpdateInterval', 2)), 2) * 1000; //ms wp_localize_script('wordfenceAdminExtjs', 'WordfenceAdminVars', array( 'ajaxURL' => admin_url('admin-ajax.php'), 'firstNonce' => wp_create_nonce('wp-ajax'), 'siteBaseURL' => wfUtils::getSiteBaseURL(), 'debugOn' => wfConfig::get('debugOn', 0), 'actUpdateInterval' => $updateInt, 'cacheType' => wfConfig::get('cacheType'), 'liveTrafficEnabled' => wfConfig::liveTrafficEnabled(), 'scanIssuesPerPage' => WORDFENCE_SCAN_ISSUES_PER_PAGE, 'allowsPausing' => wfConfig::get('liveActivityPauseEnabled'), 'scanRunning' => wfScanner::shared()->isRunning() ? '1' : '0', 'modalTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render(), 'tokenInvalidTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wf-token-invalid-modal-reload', 'label' => __('Reload', 'wordfence'), 'link' => '#')))->render(), 'modalHTMLTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '{{html message}}', 'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render(), 'alertEmailBlacklist' => wfConfig::alertEmailBlacklist(), 'supportURLs' => array( 'scan-result-repair-modified-files' => esc_url_raw(wfSupportController::supportURL(wfSupportController::ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES)), ), )); self::setupI18nJSStrings(); } private static function setupI18nJSStrings() { static $called; if ($called) { return; } $called = true; wp_localize_script('wfi18njs', 'WordfenceI18nStrings', array( '${totalIPs} addresses in this network' => __('${totalIPs} addresses in this network', 'wordfence'), '%s in POST body: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in POST body: %s', 'wordfence'), '%s in cookie: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in cookie: %s', 'wordfence'), '%s in file: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in file: %s', 'wordfence'), '%s in query string: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in query string: %s', 'wordfence'), '%s is not valid hostname' => /* translators: Domain name. */ __('%s is not valid hostname', 'wordfence'), '.htaccess Updated' => __('.htaccess Updated', 'wordfence'), '.htaccess change' => __('.htaccess change', 'wordfence'), '404 Not Found' => __('404 Not Found', 'wordfence'), 'Activity Log Sent' => __('Activity Log Sent', 'wordfence'), 'Add action to allowlist' => __('Add action to allowlist', 'wordfence'), 'Add code to .htaccess' => __('Add code to .htaccess', 'wordfence'), 'All Hits' => __('All Hits', 'wordfence'), 'All capabilties of admin user %s were successfully revoked.' => /* translators: WordPress username. */ __('All capabilties of admin user %s were successfully revoked.', 'wordfence'), 'An error occurred' => __('An error occurred', 'wordfence'), 'An error occurred when adding the request to the allowlist.' => __('An error occurred when adding the request to the allowlist.', 'wordfence'), 'Are you sure you want to allowlist this action?' => __('Are you sure you want to allowlist this action?', 'wordfence'), 'Authentication Code' => __('Authentication Code', 'wordfence'), 'Background Request Blocked' => __('Background Request Blocked', 'wordfence'), 'Block This Network' => __('Block This Network', 'wordfence'), 'Blocked' => __('Blocked', 'wordfence'), 'Blocked By Firewall' => __('Blocked By Firewall', 'wordfence'), 'Blocked WAF' => __('Blocked WAF', 'wordfence'), 'Blocked by Wordfence' => __('Blocked by Wordfence', 'wordfence'), 'Blocked by Wordfence plugin settings' => __('Blocked by Wordfence plugin settings', 'wordfence'), 'Blocked by the Wordfence Application Firewall and plugin settings' => __('Blocked by the Wordfence Application Firewall and plugin settings', 'wordfence'), 'Blocked by the Wordfence Security Network' => __('Blocked by the Wordfence Security Network', 'wordfence'), 'Blocked by the Wordfence Web Application Firewall' => __('Blocked by the Wordfence Web Application Firewall', 'wordfence'), 'Bot' => __('Bot', 'wordfence'), 'Cancel Changes' => __('Cancel Changes', 'wordfence'), 'Cellphone Sign-In Recovery Codes' => __('Cellphone Sign-In Recovery Codes', 'wordfence'), 'Cellphone Sign-in activated for user.' => __('Cellphone Sign-in activated for user.', 'wordfence'), 'Click here to download a backup copy of this file now' => __('Click here to download a backup copy of this file now', 'wordfence'), 'Click here to download a backup copy of your .htaccess file now' => __('Click here to download a backup copy of your .htaccess file now', 'wordfence'), 'Click to fix .htaccess' => __('Click to fix .htaccess', 'wordfence'), 'Close' => __('Close', 'wordfence'), 'Crawlers' => __('Crawlers', 'wordfence'), 'Diagnostic report has been sent successfully.' => __('Diagnostic report has been sent successfully.', 'wordfence'), 'Directory Listing Disabled' => __('Directory Listing Disabled', 'wordfence'), 'Directory listing has been disabled on your server.' => __('Directory listing has been disabled on your server.', 'wordfence'), 'Disabled' => __('Disabled', 'wordfence'), 'Dismiss' => __('Dismiss', 'wordfence'), 'Don\'t ask again' => __('Don\'t ask again', 'wordfence'), 'Download' => __('Download', 'wordfence'), 'Download Backup File' => __('Download Backup File', 'wordfence'), 'Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:' => __('Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:', 'wordfence'), 'Email Diagnostic Report' => __('Email Diagnostic Report', 'wordfence'), 'Email Wordfence Activity Log' => __('Email Wordfence Activity Log', 'wordfence'), 'Enter a valid IP or domain' => __('Enter a valid IP or domain', 'wordfence'), 'Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.' => __('Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.', 'wordfence'), 'Error' => __('Error', 'wordfence'), 'Error Enabling All Options Page' => __('Error Enabling All Options Page', 'wordfence'), 'Error Restoring Defaults' => __('Error Restoring Defaults', 'wordfence'), 'Error Saving Option' => __('Error Saving Option', 'wordfence'), 'Error Saving Options' => __('Error Saving Options', 'wordfence'), 'Failed Login' => __('Failed Login', 'wordfence'), 'Failed Login: Invalid Username' => __('Failed Login: Invalid Username', 'wordfence'), 'Failed Login: Valid Username' => __('Failed Login: Valid Username', 'wordfence'), 'File hidden successfully' => __('File hidden successfully', 'wordfence'), 'File restored OK' => __('File restored OK', 'wordfence'), 'Filter Traffic' => __('Filter Traffic', 'wordfence'), 'Firewall Response' => __('Firewall Response', 'wordfence'), 'Full Path Disclosure' => __('Full Path Disclosure', 'wordfence'), 'Google Bot' => __('Google Bot', 'wordfence'), 'Google Crawlers' => __('Google Crawlers', 'wordfence'), 'HTTP Response Code' => __('HTTP Response Code', 'wordfence'), 'Human' => __('Human', 'wordfence'), 'Humans' => __('Humans', 'wordfence'), 'IP' => __('IP', 'wordfence'), 'Key:' => __('Key:', 'wordfence'), 'Last Updated: %s' => /* translators: Localized date. */ __('Last Updated: %s', 'wordfence'), 'Learn more about repairing modified files.' => __('Learn more about repairing modified files.', 'wordfence'), 'Loading...' => __('Loading...', 'wordfence'), 'Locked Out' => __('Locked Out', 'wordfence'), 'Locked out from logging in' => __('Locked out from logging in', 'wordfence'), 'Logged In' => __('Logged In', 'wordfence'), 'Logins' => __('Logins', 'wordfence'), 'Logins and Logouts' => __('Logins and Logouts', 'wordfence'), 'Look up IP or Domain' => __('Look up IP or Domain', 'wordfence'), 'Manual block by administrator' => __('Manual block by administrator', 'wordfence'), 'Next Update Check: %s' => /* translators: Localized date. */ __('Next Update Check: %s', 'wordfence'), 'No activity to report yet. Please complete your first scan.' => __('No activity to report yet. Please complete your first scan.', 'wordfence'), 'No issues have been ignored.' => __('No issues have been ignored.', 'wordfence'), 'No new issues have been found.' => __('No new issues have been found.', 'wordfence'), 'No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.' => __('No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.', 'wordfence'), 'No rules were updated. Please verify your website can reach the Wordfence servers.' => __('No rules were updated. Please verify your website can reach the Wordfence servers.', 'wordfence'), 'No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.' => __('No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.', 'wordfence'), 'Note: Status will update when changes are saved' => __('Note: Status will update when changes are saved', 'wordfence'), 'OK' => __('OK', 'wordfence'), 'Pages Not Found' => __('Pages Not Found', 'wordfence'), 'Paid Members Only' => __('Paid Members Only', 'wordfence'), 'Please enter a valid IP address or domain name for your whois lookup.' => __('Please enter a valid IP address or domain name for your whois lookup.', 'wordfence'), 'Please enter a valid email address.' => __('Please enter a valid email address.', 'wordfence'), 'Please include your support ticket number or forum username.' => __('Please include your support ticket number or forum username.', 'wordfence'), 'Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:' => __('Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:', 'wordfence'), 'Please specify a reason' => __('Please specify a reason', 'wordfence'), 'Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.' => __('Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.', 'wordfence'), 'Please specify either an IP address range, Hostname or a web browser pattern to match.' => __('Please specify either an IP address range, Hostname or a web browser pattern to match.', 'wordfence'), 'Recent Activity' => __('Recent Activity', 'wordfence'), 'Recovery Codes' => __('Recovery Codes', 'wordfence'), 'Redirected' => __('Redirected', 'wordfence'), 'Redirected by Country Blocking bypass URL' => __('Redirected by Country Blocking bypass URL', 'wordfence'), 'Referer' => __('Referer', 'wordfence'), 'Registered Users' => __('Registered Users', 'wordfence'), 'Restore Defaults' => __('Restore Defaults', 'wordfence'), 'Rule Update Failed' => __('Rule Update Failed', 'wordfence'), 'Rules Updated' => __('Rules Updated', 'wordfence'), 'Save Changes' => __('Save Changes', 'wordfence'), 'Scan Complete.' => __('Scan Complete.', 'wordfence'), 'Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.' => __('Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.', 'wordfence'), 'Security Event' => __('Security Event', 'wordfence'), 'Send' => __('Send', 'wordfence'), 'Sorry, but no data for that IP or domain was found.' => __('Sorry, but no data for that IP or domain was found.', 'wordfence'), 'Specify a valid IP range' => __('Specify a valid IP range', 'wordfence'), 'Specify a valid hostname' => __('Specify a valid hostname', 'wordfence'), 'Specify an IP range, Hostname or Browser pattern' => __('Specify an IP range, Hostname or Browser pattern', 'wordfence'), 'Success deleting file' => __('Success deleting file', 'wordfence'), 'Success removing option' => __('Success removing option', 'wordfence'), 'Success restoring file' => __('Success restoring file', 'wordfence'), 'Success updating option' => __('Success updating option', 'wordfence'), 'Successfully deleted admin' => __('Successfully deleted admin', 'wordfence'), 'Successfully revoked admin' => __('Successfully revoked admin', 'wordfence'), 'Test Email Sent' => __('Test Email Sent', 'wordfence'), 'The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.' => __('The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.', 'wordfence'), 'The Full Path disclosure issue has been fixed' => __('The Full Path disclosure issue has been fixed', 'wordfence'), 'The admin user %s was successfully deleted.' => /* translators: WordPress username. */ __('The admin user %s was successfully deleted.', 'wordfence'), 'The file %s was successfully deleted.' => /* translators: File path. */ __('The file %s was successfully deleted.', 'wordfence'), 'The file %s was successfully hidden from public view.' => /* translators: File path. */ __('The file %s was successfully hidden from public view.', 'wordfence'), 'The file %s was successfully restored.' => /* translators: File path. */ __('The file %s was successfully restored.', 'wordfence'), 'The option %s was successfully removed.' => /* translators: WordPress option. */ __('The option %s was successfully removed.', 'wordfence'), 'The request has been allowlisted. Please try it again.' => __('The request has been allowlisted. Please try it again.', 'wordfence'), 'There was an error while sending the email.' => __('There was an error while sending the email.', 'wordfence'), 'This will be shown only once. Keep these codes somewhere safe.' => __('This will be shown only once. Keep these codes somewhere safe.', 'wordfence'), 'Throttled' => __('Throttled', 'wordfence'), 'Two Factor Status' => __('Two Factor Status', 'wordfence'), 'Type' => __('Type', 'wordfence'), 'Type: %s' => /* translators: HTTP client type. */ __('Type: %s', 'wordfence'), 'URL' => __('URL', 'wordfence'), 'Unable to automatically hide file' => __('Unable to automatically hide file', 'wordfence'), 'Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'), 'Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'), 'User Agent' => __('User Agent', 'wordfence'), 'User ID' => __('User ID', 'wordfence'), 'Username' => __('Username', 'wordfence'), 'WHOIS LOOKUP' => __('WHOIS LOOKUP', 'wordfence'), 'We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.' => __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.', 'wordfence'), 'We can\'t modify your .htaccess file for you because: %s' => /* translators: Error message. */ __('We can\'t modify your .htaccess file for you because: %s', 'wordfence'), 'We encountered a problem' => __('We encountered a problem', 'wordfence'), 'Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.' => /* translators: URL. */ __('Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.', 'wordfence'), 'Wordfence is working...' => __('Wordfence is working...', 'wordfence'), 'You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\' rel=\'noopener noreferrer\' href=\'http://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.' => __('You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\' rel=\'noopener noreferrer\' href=\'http://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.', 'wordfence'), 'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.', 'wordfence'), 'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>', 'wordfence'), 'You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.' => __('You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.', 'wordfence'), 'You have unsaved changes to your options. If you leave this page, those changes will be lost.' => __('You have unsaved changes to your options. If you leave this page, those changes will be lost.', 'wordfence'), 'Your .htaccess has been updated successfully. Please verify your site is functioning normally.' => __('Your .htaccess has been updated successfully. Please verify your site is functioning normally.', 'wordfence'), 'Your Wordfence activity log was sent to %s' => /* translators: Email address. */ __('Your Wordfence activity log was sent to %s', 'wordfence'), 'Your rules have been updated successfully.' => __('Your rules have been updated successfully.', 'wordfence'), 'Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>' => __('Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>', 'wordfence'), 'Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.' => /* translators: wp_mail() return value. */ __('Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.', 'wordfence'), 'blocked by firewall' => __('blocked by firewall', 'wordfence'), 'blocked by firewall for %s' => /* translators: Reason for firewall action. */ __('blocked by firewall for %s', 'wordfence'), 'blocked by real-time IP blocklist' => __('blocked by real-time IP blocklist', 'wordfence'), 'blocked by the Wordfence Security Network' => __('blocked by the Wordfence Security Network', 'wordfence'), 'blocked for %s' => /* translators: Reason for firewall action. */ __('blocked for %s', 'wordfence'), 'locked out from logging in' => __('locked out from logging in', 'wordfence'), )); } public static function showTOUPPOverlay($classList) { return trim($classList . ' wf-toupp-required'); } public static function activation_warning(){ $activationError = get_option('wf_plugin_act_error', ''); if(strlen($activationError) > 400){ $activationError = substr($activationError, 0, 400) . '...[output truncated]'; } if($activationError){ echo '<div id="wordfenceConfigWarning" class="updated fade"><p><strong>' . __('Wordfence generated an error on activation. The output we received during activation was:', 'wordfence') . '</strong> ' . wp_kses($activationError, array()) . '</p></div>'; } delete_option('wf_plugin_act_error'); } public static function noKeyError(){ echo '<div id="wordfenceConfigWarning" class="fade error"><p>' . sprintf('<strong>%s</strong> ', __('Wordfence could not register with the Wordfence scanning servers when it activated.', 'wordfence')) . __('You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can\'t connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges.', 'wordfence') . '</p></div>'; } public static function wafConfigInaccessibleNotice() { if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } $wafMenuURL = add_query_arg(array( 'waf-nonce' => wp_create_nonce('wafconfigrebuild'), ), $wafMenuURL); echo '<div id="wafConfigInaccessibleNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall cannot run.', 'wordfence') . '</strong> ' . sprintf( /* translators: 1. WordPress admin panel URL. 2. Support URL. */ __('The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href="%1$s">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'), $wafMenuURL, wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG) ) . '</p></div>'; } public static function wafConfigNeedsUpdate_mod_php() { if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1'); } $wafMenuURL = add_query_arg(array( 'waf-nonce' => wp_create_nonce('wafconfigfixmodphp'), ), $wafMenuURL); echo '<div id="wafConfigNeedsUpdateNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' . sprintf( /* translators: 1. WordPress admin panel URL. 2. Support URL. */ __('It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a>. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'), $wafMenuURL, wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX) ) . '</p></div>'; } public static function wafConfigNeedsFixed_mod_php() { if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1'); } $wafMenuURL = add_query_arg(array( 'waf-nonce' => wp_create_nonce('wafconfigfixmodphp'), ), $wafMenuURL); echo '<div id="wafConfigNeedsFixedNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' . sprintf( /* translators: 1. WordPress admin panel URL. 2. Support URL. */ __('It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a> or use the "Optimize the Wordfence Firewall" button on the Firewall Options page. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'), $wafMenuURL, wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX) ) . '</p></div>'; } public static function wafReadOnlyNotice() { echo '<div id="wordfenceWAFReadOnlyNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall is in read-only mode.', 'wordfence') . '</strong> ' . sprintf('PHP is currently running as a command line user and to avoid file permission issues, the WAF is running in read-only mode. It will automatically resume normal operation when run normally by a web server. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%s"></a>', wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_READ_ONLY_WARNING)) . '</p></div>'; } public static function misconfiguredHowGetIPsNotice() { $url = network_admin_url('admin.php?page=Wordfence&subpage=global_options'); $existing = wfConfig::get('howGetIPs', ''); $recommendation = wfConfig::get('detectProxyRecommendation', ''); $existingMsg = ''; if ($existing == 'REMOTE_ADDR') { $existingMsg = __('This site is currently using PHP\'s built in REMOTE_ADDR.', 'wordfence'); } else if ($existing == 'HTTP_X_FORWARDED_FOR') { $existingMsg = __('This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header.', 'wordfence'); } else if ($existing == 'HTTP_X_REAL_IP') { $existingMsg = __('This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header.', 'wordfence'); } else if ($existing == 'HTTP_CF_CONNECTING_IP') { $existingMsg = __('This site is currently using the Cloudflare "CF-Connecting-IP" HTTP header, which should only be used when the site is behind Cloudflare.', 'wordfence'); } $recommendationMsg = ''; if ($recommendation == 'REMOTE_ADDR') { $recommendationMsg = __('For maximum security use PHP\'s built in REMOTE_ADDR.', 'wordfence'); } else if ($recommendation == 'HTTP_X_FORWARDED_FOR') { $recommendationMsg = __('This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs.', 'wordfence'); } else if ($recommendation == 'HTTP_X_REAL_IP') { $recommendationMsg = __('This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs.', 'wordfence'); } else if ($recommendation == 'HTTP_CF_CONNECTING_IP') { $recommendationMsg = __('This site appears to be behind Cloudflare, so using the Cloudflare "CF-Connecting-IP" HTTP header will resolve to the correct IPs.', 'wordfence'); } echo '<div id="wordfenceMisconfiguredHowGetIPsNotice" class="fade error"><p><strong>' . __('Your \'How does Wordfence get IPs\' setting is misconfigured.', 'wordfence') . '</strong> ' . $existingMsg . ' ' . $recommendationMsg . ' <a href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'yes\'); return false;">' . __('Click here to use the recommended setting', 'wordfence') . '</a> ' . __('or', 'wordfence') . ' <a href="' . $url . '">' . __('visit the options page', 'wordfence') . '</a> ' . __('to manually update it.', 'wordfence') . '</p><p> <a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'no\'); return false;">' . __('Dismiss', 'wordfence') . '</a> <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS) . '"></a></p></div>'; } public static function autoUpdateNotice(){ echo '<div id="wordfenceAutoUpdateChoice" class="fade error"><p><strong>' . __('Do you want Wordfence to stay up-to-date automatically?', 'wordfence') . '</strong>   <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'yes\'); return false;">'. __('Yes, enable auto-update.', 'wordfence') . '</a>  |  <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'no\'); return false;">' . __('No thanks.', 'wordfence') . '</a></p></div>'; } public static function admin_menus(){ if(! wfUtils::isAdmin()){ return; } $warningAdded = false; if(get_option('wf_plugin_act_error', false)){ if(wfUtils::isAdminPageMU()){ add_action('network_admin_notices', 'wordfence::activation_warning'); } else { add_action('admin_notices', 'wordfence::activation_warning'); } $warningAdded = true; } if(! wfConfig::get('apiKey')){ if(wfUtils::isAdminPageMU()){ add_action('network_admin_notices', 'wordfence::noKeyError'); } else { add_action('admin_notices', 'wordfence::noKeyError'); } $warningAdded = true; } $firewall = new wfFirewall(); if (!empty($_GET['page']) && preg_match('/^Wordfence/i', $_GET['page']) && !$firewall->testConfig()) { $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::wafConfigInaccessibleNotice'); } else { add_action('admin_notices', 'wordfence::wafConfigInaccessibleNotice'); } } if (!$warningAdded && !WFWAF_SUBDIRECTORY_INSTALL && !wfWAFAutoPrependHelper::verifyHtaccessMod_php()) { if (WFWAF_AUTO_PREPEND) { //Active, running PHP 5 only mod_php block $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::wafConfigNeedsUpdate_mod_php'); } else { add_action('admin_notices', 'wordfence::wafConfigNeedsUpdate_mod_php'); } } else if (PHP_MAJOR_VERSION > 5) { //Inactive, probably deactivated by updating from PHP 5 -> 7 due to no PHP 7 mod_php block $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::wafConfigNeedsFixed_mod_php'); } else { add_action('admin_notices', 'wordfence::wafConfigNeedsFixed_mod_php'); } } } if (wfOnboardingController::shouldShowAttempt3() || wfConfig::get('touppPromptNeeded')) { //Both top banners $warningAdded = true; } //Check WAF rules status $firewall = new wfFirewall(); if ($firewall->firewallMode() != wfFirewall::FIREWALL_MODE_DISABLED) { try { $lastChecked = (int) wfWAF::getInstance()->getStorageEngine()->getConfig('lastRuleUpdateCheck', null, 'transient'); $lastUpdated = (int) wfWAF::getInstance()->getStorageEngine()->getConfig('rulesLastUpdated', null, 'transient'); $threshold = time() - (86400 * (wfConfig::get('isPaid') ? 2.5 : 9)); //Refresh rate + 2 days if ($lastChecked > 0 && $lastUpdated > 0 && $lastChecked < $threshold) { $nextUpdate = PHP_INT_MAX; $cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf'); if (is_array($cron)) { /** @var wfWAFCronEvent $event */ foreach ($cron as $index => $event) { if ($event instanceof wfWAFCronFetchRulesEvent) { $event->setWaf(wfWAF::getInstance()); if (!$event->isInPast()) { $nextUpdate = min($nextUpdate, $event->getFireTime()); } } } } $message = sprintf( /* translators: Localized date. */ __('The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then.', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $lastChecked) ); if (!$firewall->isSubDirectoryInstallation()) { if ($nextUpdate < PHP_INT_MAX) { $message .= ' ' . sprintf( /* translators: 1. Localized date. 2. WordPress admin panel URL. */ __('You may wait for the next automatic attempt at %1$s or try to <a href="%2$s">Manually Update</a> by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $nextUpdate), esc_url(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#wf-option-wafRules')) ); } else { $message .= ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('You may wait for the next automatic attempt or try to <a href="%s">Manually Update</a> by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'), esc_url(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-rules-next-update'))); } } else { if ($nextUpdate < PHP_INT_MAX) { $message .= ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $nextUpdate)); } else { $message .= ' ' . __('You may wait for the next automatic attempt or log into the parent site to manually update by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'); } } wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, $message, 'waf-rules-failed'); } else { wfAdminNoticeQueue::removeAdminNotice(false, 'waf-rules-failed'); } } catch (wfWAFStorageFileException $e) { error_log($e->getMessage()); } } else { wfAdminNoticeQueue::removeAdminNotice(false, 'waf-rules-failed'); } if (wfAdminNoticeQueue::enqueueAdminNotices()) { $warningAdded = true; } $existing = wfConfig::get('howGetIPs', ''); $recommendation = wfConfig::get('detectProxyRecommendation', ''); $canDisplayMisconfiguredHowGetIPs = true; if (empty($existing) || empty($recommendation) || $recommendation == 'UNKNOWN' || $recommendation == 'DEFERRED' || $existing == $recommendation) { $canDisplayMisconfiguredHowGetIPs = false; } if (!$warningAdded && $canDisplayMisconfiguredHowGetIPs && !wfUtils::truthyToBoolean(wfConfig::get('misconfiguredHowGetIPsChoice' . WORDFENCE_VERSION)) && !(defined('WORDFENCE_DISABLE_MISCONFIGURED_HOWGETIPS') && WORDFENCE_DISABLE_MISCONFIGURED_HOWGETIPS)) { $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::misconfiguredHowGetIPsNotice'); } else { add_action('admin_notices', 'wordfence::misconfiguredHowGetIPsNotice'); } } if (!$warningAdded && method_exists(wfWAF::getInstance(), 'isReadOnly') && wfWAF::getInstance()->isReadOnly()) { $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::wafReadOnlyNotice'); } else { add_action('admin_notices', 'wordfence::wafReadOnlyNotice'); } } if(! $warningAdded){ if (!wfConfig::get('autoUpdate') && !wfConfig::get('autoUpdateChoice')) { $warningAdded = true; if (wfUtils::isAdminPageMU()) { add_action('network_admin_notices', 'wordfence::autoUpdateNotice'); } else { add_action('admin_notices', 'wordfence::autoUpdateNotice'); } } } if (!empty($_GET['page']) && $_GET['page'] === 'WordfenceWAF' && !empty($_GET['wafconfigrebuild']) && !WFWAF_SUBDIRECTORY_INSTALL) { check_admin_referer('wafconfigrebuild', 'waf-nonce'); wfWAF::getInstance()->uninstall(); if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF'); } wp_redirect($wafMenuURL); exit; } if (!empty($_GET['page']) && $_GET['page'] === 'WordfenceWAF' && !empty($_GET['wafconfigfixmodphp']) && !WFWAF_SUBDIRECTORY_INSTALL) { check_admin_referer('wafconfigfixmodphp', 'waf-nonce'); wfWAFAutoPrependHelper::fixHtaccessMod_php(); if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF'); } wp_redirect($wafMenuURL); exit; } if (version_compare(PHP_VERSION, '8.0', '>=') && !get_user_option('wordfence_php8_nag')) { wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_INFO, wp_kses(__(<<<HTML PHP 8 includes significant changes from PHP 7, which may cause unexpected bugs in plugins, themes, and WordPress itself. Wordfence is not yet officially supported on PHP 8, but will be supported in the near future. <a href="https://www.wordfence.com/blog/2020/11/php-8-what-wordpress-users-need-to-know/">Read More</a> HTML , 'wordfence'), 'post') , 'php8', array(get_current_user_id())); update_user_option(get_current_user_id(), 'wordfence_php8_nag', 1); } $notificationCount = count(wfNotification::notifications()); $updatingNotifications = get_site_transient('wordfence_updating_notifications'); $hidden = ($notificationCount == 0 || $updatingNotifications ? ' wf-hidden' : ''); $formattedCount = number_format_i18n($notificationCount); $dashboardExtra = " <span class='update-plugins wf-menu-badge wf-notification-count-container{$hidden}' title='{$notificationCount}'><span class='update-count wf-notification-count-value'>{$formattedCount}</span></span>"; add_menu_page('Wordfence', "Wordfence{$dashboardExtra}", 'activate_plugins', 'Wordfence', 'wordfence::menu_dashboard', wfUtils::getBaseURL() . 'images/wordfence-logo.svg'); } //These are split to allow our module plugins to insert their menu item(s) at any point in the hierarchy public static function admin_menus_20() { add_submenu_page("Wordfence", __("Wordfence Dashboard", 'wordfence'), __("Dashboard", 'wordfence'), "activate_plugins", "Wordfence", 'wordfence::menu_dashboard'); } public static function admin_menus_30() { add_submenu_page("Wordfence", __("Firewall", 'wordfence'), __("Firewall", 'wordfence'), "activate_plugins", "WordfenceWAF", 'wordfence::menu_firewall'); if (wfConfig::get('displayTopLevelBlocking')) { add_submenu_page("Wordfence", __("Blocking", 'wordfence'), __("Blocking", 'wordfence'), "activate_plugins", "WordfenceBlocking", 'wordfence::menu_blocking'); } } public static function admin_menus_40() { add_submenu_page("Wordfence", __("Scan", 'wordfence'), __("Scan", 'wordfence'), "activate_plugins", "WordfenceScan", 'wordfence::menu_scan'); } public static function admin_menus_50() { add_submenu_page('Wordfence', __('Tools', 'wordfence'), __('Tools', 'wordfence'), 'activate_plugins', 'WordfenceTools', 'wordfence::menu_tools'); if (wfConfig::get('displayTopLevelLiveTraffic')) { add_submenu_page("Wordfence", __("Live Traffic", 'wordfence'), __("Live Traffic", 'wordfence'), "activate_plugins", "WordfenceLiveTraffic", 'wordfence::menu_tools'); } } public static function admin_menus_60() { if (wfConfig::get('displayTopLevelOptions')) { add_submenu_page("Wordfence", __("All Options", 'wordfence'), __("All Options", 'wordfence'), "activate_plugins", "WordfenceOptions", 'wordfence::menu_options'); } } public static function admin_menus_70() { add_submenu_page('Wordfence', __('Help', 'wordfence'), __('Help', 'wordfence'), 'activate_plugins', 'WordfenceSupport', 'wordfence::menu_support'); } public static function admin_menus_80() { if (wfCentral::isSupported()) { add_submenu_page(null, __('Wordfence Central', 'wordfence'), __('Wordfence Central', 'wordfence'), 'activate_plugins', 'WordfenceCentral', 'wordfence::menu_wordfence_central'); } } public static function admin_menus_90() { if (wfConfig::get('isPaid')) { add_submenu_page("Wordfence", __("Protect More Sites", 'wordfence'), "<strong id=\"wfMenuCallout\" style=\"color: #FCB214;\">" . __("Protect More Sites", 'wordfence') . "</strong>", "activate_plugins", "WordfenceProtectMoreSites", 'wordfence::_menu_noop'); } else { add_submenu_page("Wordfence", __("Upgrade To Premium", 'wordfence'), "<strong id=\"wfMenuCallout\" style=\"color: #FCB214;\">" . __("Upgrade To Premium", 'wordfence') . "</strong>", "activate_plugins", "WordfenceUpgradeToPremium", 'wordfence::_menu_noop'); } add_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10, 3); } public static function _patchWordfenceSubmenuCallout($url, $original_url, $_context){ if (preg_match('/(?:WordfenceUpgradeToPremium)$/i', $url)) { remove_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10); return 'https://www.wordfence.com/zz11/wordfence-signup/'; } else if (preg_match('/(?:WordfenceProtectMoreSites)$/i', $url)) { remove_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10); return 'https://www.wordfence.com/zz10/sign-in/'; } return $url; } public static function _menu_noop() { //Do nothing } public static function _retargetWordfenceSubmenuCallout() { echo <<<JQUERY <script type="text/javascript"> jQuery(document).ready(function($) { $('#wfMenuCallout').closest('a').attr('target', '_blank').attr('rel', 'noopener noreferrer'); }); </script> JQUERY; } public static function admin_bar_menu() { global $wp_admin_bar; if (wfUtils::isAdmin() && wfConfig::get('showAdminBarMenu')) { $title = '<div id="wf-adminbar-icon" class="ab-item"></div>'; $count = count(wfNotification::notifications()); $sinceCount = count(wfNotification::notifications((int) get_user_meta(get_current_user_id(), 'wordfence-notifications', true))); if ($sinceCount > 0) { $counter = '<span id="wf-notification-popover" data-toggle="popover" data-trigger="focus" data-content="' . esc_attr(/* translators: Number of notifications. */ _n('You have %d new Wordfence notification.', 'You have %d new Wordfence notifications.', $sinceCount, 'wordfence')) . '" data-container="body" data-placement="wf-bottom"> </span>'; update_user_meta(get_current_user_id(), 'wordfence-notifications', time()); } else { $counter = ' '; } $badge = '<div class="wp-core-ui wp-ui-notification wf-notification-counter wf-notification-count-container' . ($count == 0 ? ' wf-hidden' : '') . '"><span class="wf-count wf-notification-count-value">' . $count . '</span></div>'; $counter .= $badge; $wp_admin_bar->add_menu( array( 'id' => 'wordfence-menu', 'title' => $title . $counter, 'href' => network_admin_url('admin.php?page=Wordfence'), )); $wp_admin_bar->add_menu( array( 'parent' => 'wordfence-menu', 'id' => 'wordfence-notifications', 'title' => '<div id="wordfence-notifications-display" class="wf-adminbar-submenu-title">' . __('Notifications', 'wordfence') . '</div>' . $badge, 'href' => network_admin_url('admin.php?page=Wordfence'), )); $wp_admin_bar->add_menu( array( 'parent' => 'wordfence-menu', 'id' => 'wordfence-javascripterror', 'title' => '<div id="wordfence-javascripterror-display" class="wf-adminbar-submenu-title">' . __('JavaScript Errors', 'wordfence') . '</div><div class="wf-adminbar-status wf-adminbar-status-good">•</div>', 'href' => 'javascript:void(0)', )); $wp_admin_bar->add_menu( array( 'parent' => 'wordfence-menu', 'id' => 'wordfence-malwareurl', 'title' => '<div id="wordfence-malwareurl-display' . (is_admin() ? '-skip' : '') . '" class="wf-adminbar-submenu-title">' . __('Malware URLs', 'wordfence') . '</div><div class="wf-adminbar-status wf-adminbar-status-neutral">•</div>', 'href' => network_admin_url('admin.php?page=WordfenceScan'), )); } } public static function menu_tools() { wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-select2-js'); $subpage = filter_input(INPUT_GET, 'subpage', FILTER_SANITIZE_STRING); switch ($subpage) { case 'livetraffic': $content = self::_menu_tools_livetraffic(); break; case 'whois': $content = self::_menu_tools_whois(); break; case 'diagnostics': $content = self::_menu_tools_diagnostics(); break; case 'importexport': $content = self::_menu_tools_importexport(); break; // case 'twofactor': default: if (wfCredentialsController::allowLegacy2FA()) { $subpage = 'twofactor'; $content = self::_menu_tools_twofactor(); } else { $subpage = 'livetraffic'; $content = self::_menu_tools_livetraffic(); } } require(dirname(__FILE__) . '/menu_tools.php'); } private static function _menu_tools_livetraffic() { wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); wp_enqueue_script('wordfence-knockout-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/knockout-3.3.0.js'), array(), WORDFENCE_VERSION); wp_enqueue_script('wordfence-live-traffic-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.liveTraffic.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION); ob_start(); require(dirname(__FILE__) . '/menu_tools_livetraffic.php'); $content = ob_get_clean(); return $content; } private static function _menu_tools_whois() { ob_start(); require(dirname(__FILE__) . '/menu_tools_whois.php'); $content = ob_get_clean(); return $content; } private static function _menu_tools_diagnostics() { $emailForm = true; $inEmail = false; ob_start(); require(dirname(__FILE__) . '/menu_tools_diagnostic.php'); $content = ob_get_clean(); return $content; } private static function _menu_tools_importexport() { ob_start(); require(dirname(__FILE__) . '/menu_tools_importExport.php'); $content = ob_get_clean(); return $content; } private static function _menu_tools_twofactor() { ob_start(); require(dirname(__FILE__) . '/menu_tools_twoFactor.php'); $content = ob_get_clean(); return $content; } public static function menu_options() { wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); wp_enqueue_script('wordfence-select2-js'); try { $wafData = self::_getWAFData(); } catch (wfWAFStorageFileConfigException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions. $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH); if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } $wafMenuURL = add_query_arg(array( 'waf-nonce' => wp_create_nonce('wafconfigrebuild'), ), $wafMenuURL); $storageExceptionMessage = $e->getMessage() . ' ' . sprintf(__('<a href="%s">Click here</a> to rebuild the configuration file.', 'wordfence'), esc_url($wafMenuURL)); } catch (wfWAFStorageFileException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions. $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH); $storageExceptionMessage = sprintf(/* translators: File path. */ __('We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it.', 'wordfence'), $logPath); } catch (wfWAFStorageEngineMySQLiException $e) { $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = null; $storageExceptionMessage = __('An error occured when fetching the WAF configuration from the database.', 'wordfence') . ' <pre>' . esc_html($e->getMessage()) . '</pre>'; } require(dirname(__FILE__) . '/menu_options.php'); } public static function menu_blocking() { // Do nothing -- this action is forwarded in admin_init } public static function menu_firewall() { wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); wp_enqueue_script('wordfence-select2-js'); wp_enqueue_script('chart-js'); try { $wafData = self::_getWAFData(); } catch (wfWAFStorageFileConfigException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions. $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH); if (function_exists('network_admin_url') && is_multisite()) { $wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } else { $wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1'); } $wafMenuURL = add_query_arg(array( 'waf-nonce' => wp_create_nonce('wafconfigrebuild'), ), $wafMenuURL); $storageExceptionMessage = $e->getMessage() . ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('<a href="%s">Click here</a> to rebuild the configuration file.', 'wordfence'), esc_url($wafMenuURL)); } catch (wfWAFStorageFileException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions. $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH); $storageExceptionMessage = sprintf(/* translators: File path. */ __('We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it.', 'wordfence'), $logPath); } catch (wfWAFStorageEngineMySQLiException $e) { $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); $logPath = null; $storageExceptionMessage = __('An error occured when fetching the WAF configuration from the database.', 'wordfence') . ' <pre>' . esc_html($e->getMessage()) . '</pre>'; } if (isset($_GET['subpage']) && $_GET['subpage'] == 'waf_options') { require(dirname(__FILE__) . '/menu_firewall_waf_options.php'); } else if (isset($_GET['subpage']) && $_GET['subpage'] == 'blocking_options') { require(dirname(__FILE__) . '/menu_firewall_blocking_options.php'); } else { require(dirname(__FILE__) . '/menu_firewall.php'); } } public static function liveTrafficW3TCWarning() { echo self::cachingWarning("W3 Total Cache"); } public static function liveTrafficSuperCacheWarning(){ echo self::cachingWarning("WP Super Cache"); } public static function cachingWarning($plugin){ return '<div id="wordfenceConfigWarning" class="error fade"><p><strong>' . sprintf(/* translators: Plugin name. */ __('The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic.', 'wordfence'), $plugin) . '</strong> ' . sprintf(/* translators: 1. Plugin name. */ __('If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly.', 'wordfence'), $plugin) . '</p></div>'; } public static function menu_dashboard() { wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-select2-js'); wp_enqueue_script('chart-js'); if (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_EXPIRED || (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_CURRENT && wfConfig::get('keyExpDays') < 30)) { $api = new wfAPI(wfConfig::get('apiKey', ''), wfUtils::getWPVersion()); try { $api->call('check_api_key', array(), array(), false, 2); } catch (Exception $e) { //Do nothing } } if (isset($_GET['subpage']) && $_GET['subpage'] == 'global_options') { require(dirname(__FILE__) . '/menu_dashboard_options.php'); return; } require(dirname(__FILE__) . '/menu_dashboard.php'); } public static function menu_scan() { wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-select2-js'); if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_options') { require(dirname(__FILE__) . '/menu_scanner_options.php'); return; } else if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_credentials') { require(dirname(__FILE__) . '/menu_scanner_credentials.php'); return; } require(dirname(__FILE__) . '/menu_scanner.php'); } public static function menu_support() { wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-select2-js'); require(dirname(__FILE__) . '/menu_support.php'); } public static function menu_wordfence_central() { wfConfig::set('showWfCentralUI', 1); wp_enqueue_style('wordfence-select2-css'); wp_enqueue_script('wordfence-select2-js'); require(dirname(__FILE__) . '/menu_wordfence_central.php'); } public static function fsActionRestoreFileCallback() { $issueID = filter_input(INPUT_GET, 'issueID', FILTER_SANITIZE_NUMBER_INT); $response = self::ajax_restoreFile_callback($issueID); if (!empty($response['ok'])) { $result = sprintf('<p>' . /* translators: File path. */ __('The file <code>%s</code> was restored successfully.', 'wordfence') . '</p>', esc_html(strpos($response['file'], ABSPATH) === 0 ? substr($response['file'], strlen(ABSPATH) + 1) : $response['file'])); } else if (!empty($response['cerrorMessage'])) { $result = sprintf('<div class="wfSummaryErr">%s</div>', esc_html($response['cerrorMessage'])); } else { $result = '<div class="wfSummaryErr">' . __('There was an error restoring the file.', 'wordfence') . '</div>'; } printf(<<<HTML <br> %s <p><a href="%s">%s</a></p> HTML , $result, esc_url(network_admin_url('admin.php?page=WordfenceScan')), __('Return to scan results', 'wordfence') ); wfScanEngine::refreshScanNotification(); } public static function fsActionDeleteFileCallback() { $issueID = filter_input(INPUT_GET, 'issueID', FILTER_SANITIZE_NUMBER_INT); $response = self::ajax_deleteFile_callback($issueID); if (!empty($response['ok'])) { $result = sprintf('<p>' . /* translators: File path. */ __('The file <code>%s</code> was deleted successfully.', 'wordfence') . '</p>', esc_html($response['file'])); } else if (!empty($response['errorMessage'])) { $result = sprintf('<div class="wfSummaryErr">%s</div>', esc_html($response['errorMessage'])); } else { $result = '<div class="wfSummaryErr">' . __('There was an error deleting the file.', 'wordfence') . '</div>'; } printf(<<<HTML <br> %s <p><a href="%s">%s</a></p> HTML , $result, esc_url(network_admin_url('admin.php?page=WordfenceScan')), __('Return to scan results', 'wordfence') ); wfScanEngine::refreshScanNotification(); } public static function status($level /* 1 has highest visibility */, $type /* info|error */, $msg){ if($level > 3 && $level < 10 && (! self::isDebugOn())){ //level 10 and higher is for summary messages return false; } if($type != 'info' && $type != 'error'){ error_log("Invalid status type: $type"); return; } if(self::$printStatus){ echo "STATUS: $level : $type : ".esc_html($msg)."\n"; } else { self::getLog()->addStatus($level, $type, $msg); } } public static function profileUpdateAction($userID, $newDat = false){ if(! $newDat){ return; } if(wfConfig::get('other_pwStrengthOnUpdate')){ $oldDat = get_userdata($userID); if($newDat->user_pass != $oldDat->user_pass){ $wf = new wfScanEngine(); $wf->scanUserPassword($userID); $wf->emailNewIssues(); } } } public static function replaceVersion($url) { return preg_replace_callback("/([&;\?]ver)=(.+?)(&|$)/", "wordfence::replaceVersionCallback", $url); } public static function replaceVersionCallback($matches) { global $wp_version; return $matches[1] . '=' . ($wp_version === $matches[2] ? wp_hash($matches[2]) : $matches[2]) . $matches[3]; } public static function genFilter($gen, $type){ if(wfConfig::get('other_hideWPVersion')){ return ''; } else { return $gen; } } public static function getMyHomeURL(){ return wfUtils::wpAdminURL('admin.php?page=Wordfence'); } public static function getMyOptionsURL(){ return wfUtils::wpAdminURL('admin.php?page=Wordfence&subpage=global_options'); } public static function alert($subject, $alertMsg, $IP) { wfConfig::inc('totalAlertsSent'); $emails = wfConfig::getAlertEmails(); if (sizeof($emails) < 1) { return; } $IPMsg = ""; if ($IP) { $IPMsg = sprintf(/* translators: IP address. */ __("User IP: %s\n", 'wordfence'), $IP); $reverse = wfUtils::reverseLookup($IP); if ($reverse) { $IPMsg .= sprintf(/* translators: Domain name. */ __("User hostname: %s\n", 'wordfence'), $reverse); } $userLoc = wfUtils::getIPGeo($IP); if ($userLoc) { $IPMsg .= __('User location: ', 'wordfence'); if ($userLoc['city']) { $IPMsg .= $userLoc['city'] . ', '; } if ($userLoc['region'] && wfUtils::shouldDisplayRegion($userLoc['countryName'])) { $IPMsg .= $userLoc['region'] . ', '; } $IPMsg .= $userLoc['countryName'] . "\n"; } } $content = wfUtils::tmpl('email_genericAlert.php', array( 'isPaid' => wfConfig::get('isPaid'), 'subject' => $subject, 'blogName' => get_bloginfo('name', 'raw'), 'adminURL' => get_admin_url(), 'alertMsg' => $alertMsg, 'IPMsg' => $IPMsg, 'date' => wfUtils::localHumanDate(), 'myHomeURL' => self::getMyHomeURL(), 'myOptionsURL' => self::getMyOptionsURL() )); $shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url()); $subject = "[Wordfence Alert] $shortSiteURL " . $subject; $sendMax = wfConfig::get('alert_maxHourly', 0); if($sendMax > 0){ $sendArr = wfConfig::get_ser('alertFreqTrack', array()); if(! is_array($sendArr)){ $sendArr = array(); } $minuteTime = floor(time() / 60); $totalSent = 0; for($i = $minuteTime; $i > $minuteTime - 60; $i--){ $totalSent += isset($sendArr[$i]) ? $sendArr[$i] : 0; } if($totalSent >= $sendMax){ return; } $sendArr[$minuteTime] = isset($sendArr[$minuteTime]) ? $sendArr[$minuteTime] + 1 : 1; wfConfig::set_ser('alertFreqTrack', $sendArr); } //Prevent duplicate emails within 1 hour: $hash = md5(implode(',', $emails) . ':' . $subject . ':' . $alertMsg . ':' . $IP); //Hex $lastHash = wfConfig::get('lastEmailHash', false); if($lastHash){ $lastHashDat = explode(':', $lastHash); //[time, hash] if(time() - $lastHashDat[0] < 3600){ if($lastHashDat[1] == $hash){ return; //Don't send because this email is identical to the previous email which was sent within the last hour. } } } wfConfig::set('lastEmailHash', time() . ':' . $hash); foreach ($emails as $email) { $uniqueContent = $content . "\n\n" . sprintf(/* translators: WordPress admin panel URL. */ __('No longer an administrator for this site? Click here to stop receiving security alerts: %s', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))); wp_mail($email, $subject, $uniqueContent); } } public static function getLog(){ if(! self::$wfLog){ $wfLog = wfLog::shared(); self::$wfLog = $wfLog; } return self::$wfLog; } public static function wfSchemaExists(){ global $wpdb; $exists = $wpdb->get_col($wpdb->prepare(<<<SQL SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s SQL , wfDB::networkTable('wfConfig'))); return $exists ? true : false; } public static function isDebugOn(){ if(is_null(self::$debugOn)){ if(wfConfig::get('debugOn')){ self::$debugOn = true; } else { self::$debugOn = false; } } return self::$debugOn; } //PUBLIC API public static function doNotCache(){ //Call this to prevent Wordfence from caching the current page. wfCache::doNotCache(); return true; } public static function whitelistIP($IP){ //IP as a string in dotted quad notation e.g. '10.11.12.13' $IP = trim($IP); $user_range = new wfUserIPRange($IP); if (!$user_range->isValidRange()) { throw new Exception(__("The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]", 'wordfence')); } $whites = wfConfig::get('whitelisted', ''); $arr = explode(',', $whites); $arr2 = array(); foreach($arr as $e){ if($e == $IP){ return false; } $arr2[] = trim($e); } $arr2[] = $IP; wfConfig::set('whitelisted', implode(',', $arr2)); return true; } public static function ajax_email_summary_email_address_debug_callback() { $email = !empty($_REQUEST['email']) ? $_REQUEST['email'] : null; if (!wfUtils::isValidEmail($email)) { return array('err' => __('Invalid email address provided.', 'wordfence')); } $report = new wfActivityReport(); return $report->sendReportViaEmail($email) ? array('ok' => 1, 'result' => __('Test email sent successfully', 'wordfence')) : array('err' => __("Test email failed to send.", 'wordfence')); } public static function addDashboardWidget() { if (wfUtils::isAdmin() && (is_network_admin() || !is_multisite()) && wfConfig::get('email_summary_dashboard_widget_enabled')) { wp_enqueue_style('wordfence-activity-report-widget', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/activity-report-widget.css'), '', WORDFENCE_VERSION); $report_date_range = 'week'; switch (wfConfig::get('email_summary_interval')) { case 'daily': $report_date_range = 'day'; break; case 'monthly': $report_date_range = 'month'; break; } wp_add_dashboard_widget( 'wordfence_activity_report_widget', sprintf(/* translators: Localized date range. */ __('Wordfence activity in the past %s', 'wordfence'), $report_date_range), array('wfActivityReport', 'outputDashboardWidget') ); } } /** * @return bool */ public static function hasGDLimitLoginsMUPlugin() { return defined('GD_SYSTEM_PLUGIN_DIR') && file_exists(GD_SYSTEM_PLUGIN_DIR . 'limit-login-attempts/limit-login-attempts.php') && defined('LIMIT_LOGIN_DIRECT_ADDR'); } /** * @param string $content * @return string */ public static function fixGDLimitLoginsErrors($content) { if (self::$authError) { $content = str_replace(__('<strong>ERROR</strong>: Incorrect username or password.', 'limit-login-attempts') . "<br />\n", '', $content); $content .= '<br />' . self::$authError->get_error_message(); } return $content; } /** * @return array */ public static function ajax_deleteAdminUser_callback() { /** @var wpdb $wpdb */ global $wpdb; $issueID = absint(!empty($_POST['issueID']) ? $_POST['issueID'] : 0); $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if (!$issue) { return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence')); } $data = $issue['data']; if (empty($data['userID'])) { return array('errorMsg' => __("We could not find that user in the database.", 'wordfence')); } $user = new WP_User($data['userID']); if (!$user->exists()) { return array('errorMsg' => __("We could not find that user in the database.", 'wordfence')); } $userLogin = $user->user_login; if (is_multisite() && strcasecmp($user->user_email, get_site_option('admin_email')) === 0) { return array('errorMsg' => __("This user's email is the network admin email. It will need to be changed before deleting this user.", 'wordfence')); } if (is_multisite()) { revoke_super_admin($data['userID']); } wp_delete_user($data['userID']); if (is_multisite()) { $wpdb->delete($wpdb->users, array('ID' => $data['userID'])); } $wfIssues->deleteIssue($issueID); wfScanEngine::refreshScanNotification($wfIssues); return array( 'ok' => 1, 'user_login' => $userLogin, ); } public static function ajax_revokeAdminUser_callback() { $issueID = absint(!empty($_POST['issueID']) ? $_POST['issueID'] : 0); $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if (!$issue) { return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence')); } $data = $issue['data']; if (empty($data['userID'])) { return array('errorMsg' => __("We could not find that user in the database.", 'wordfence')); } $user = new WP_User($data['userID']); $userLogin = $user->user_login; wp_revoke_user($data['userID']); if (is_multisite()) { revoke_super_admin($data['userID']); } $wfIssues->deleteIssue($issueID); wfScanEngine::refreshScanNotification($wfIssues); return array( 'ok' => 1, 'user_login' => $userLogin, ); } /** * */ public static function ajax_disableDirectoryListing_callback() { $issueID = absint($_POST['issueID']); $wfIssues = new wfIssues(); $issue = $wfIssues->getIssueByID($issueID); if (!$issue) { return array( 'err' => 1, 'errorMsg' => __("We could not find that issue in our database.", 'wordfence'), ); } $wfIssues->deleteIssue($issueID); $htaccessPath = wfCache::getHtaccessPath(); if (!$htaccessPath) { return array( 'err' => 1, 'errorMsg' => __("Wordfence could not find your .htaccess file.", 'wordfence'), ); } $fileContents = file_get_contents($htaccessPath); if (file_put_contents($htaccessPath, "# Added by Wordfence " . date('r') . "\nOptions -Indexes\n\n" . $fileContents, LOCK_EX)) { $uploadPaths = wp_upload_dir(); if (!wfScanEngine::isDirectoryListingEnabled($uploadPaths['baseurl'])) { return array( 'ok' => 1, ); } else { // Revert any changes done to .htaccess file_put_contents($htaccessPath, $fileContents, LOCK_EX); return array( 'err' => 1, 'errorMsg' => __("Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server.", 'wordfence'), ); } } return array( 'err' => 1, 'errorMsg' => __("There was an error writing to your .htaccess file.", 'wordfence'), ); } /** * Modify the query to prevent username enumeration. * * @param array $query_vars * @return array */ public static function preventAuthorNScans($query_vars) { if (wfConfig::get('loginSec_disableAuthorScan') && !is_admin() && !empty($query_vars['author']) && (is_array($query_vars['author']) || is_numeric(preg_replace('/[^0-9]/', '', $query_vars['author']))) && ( (isset($_GET['author']) && (is_array($_GET['author']) || is_numeric(preg_replace('/[^0-9]/', '', $_GET['author'])))) || (isset($_POST['author']) && (is_array($_POST['author']) || is_numeric(preg_replace('/[^0-9]/', '', $_POST['author'])))) ) ) { global $wp_query; $wp_query->set_404(); status_header(404); nocache_headers(); $template = get_404_template(); if ($template && file_exists($template)) { include($template); } exit; } return $query_vars; } /** * @param WP_Upgrader $updater * @param array $hook_extra */ public static function hideReadme($updater, $hook_extra = null) { if (wfConfig::get('other_hideWPVersion')) { wfUtils::hideReadme(); } } public static function ajax_saveDisclosureState_callback() { if (isset($_POST['name']) && isset($_POST['state'])) { $name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $_POST['name']); $state = wfUtils::truthyToBoolean($_POST['state']); if (!empty($name)) { $disclosureStates = wfConfig::get_ser('disclosureStates', array()); $disclosureStates[$name] = $state; wfConfig::set_ser('disclosureStates', $disclosureStates); return array('ok' => 1); } } else if (isset($_POST['names']) && isset($_POST['state'])) { $rawNames = $_POST['names']; if (is_array($rawNames)) { $filteredNames = array(); foreach ($rawNames as $name) { $name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $name); if (!empty($name)) { $filteredNames[] = $name; } } $state = wfUtils::truthyToBoolean($_POST['state']); if (!empty($filteredNames)) { $disclosureStates = wfConfig::get_ser('disclosureStates', array()); foreach ($filteredNames as $name) { $disclosureStates[$name] = $state; } wfConfig::set_ser('disclosureStates', $disclosureStates); return array('ok' => 1); } } } return array( 'err' => 1, 'errorMsg' => __("Required parameters not sent.", 'wordfence'), ); } public static function ajax_saveWAFConfig_callback() { if (isset($_POST['wafConfigAction'])) { $waf = wfWAF::getInstance(); if (method_exists($waf, 'isReadOnly') && $waf->isReadOnly()) { return array( 'err' => 1, 'errorMsg' => __("The WAF is currently in read-only mode and will not save any configuration changes.", 'wordfence'), ); } switch ($_POST['wafConfigAction']) { case 'config': if (!empty($_POST['wafStatus']) && in_array($_POST['wafStatus'], array(wfFirewall::FIREWALL_MODE_DISABLED, wfFirewall::FIREWALL_MODE_LEARNING, wfFirewall::FIREWALL_MODE_ENABLED))) { if ($_POST['wafStatus'] == 'learning-mode' && !empty($_POST['learningModeGracePeriodEnabled'])) { $gracePeriodEnd = strtotime(isset($_POST['learningModeGracePeriod']) ? $_POST['learningModeGracePeriod'] : ''); if ($gracePeriodEnd > time()) { wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 1); wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriod', $gracePeriodEnd); } else { return array( 'err' => 1, 'errorMsg' => __("The grace period end time must be in the future.", 'wordfence'), ); } } else { wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 0); wfWAF::getInstance()->getStorageEngine()->unsetConfig('learningModeGracePeriod'); } wfWAF::getInstance()->getStorageEngine()->setConfig('wafStatus', $_POST['wafStatus']); $firewall = new wfFirewall(); $firewall->syncStatus(true); } break; case 'addWhitelist': if (isset($_POST['whitelistedPath']) && isset($_POST['whitelistedParam'])) { $path = stripslashes($_POST['whitelistedPath']); $paramKey = stripslashes($_POST['whitelistedParam']); if (!$path || !$paramKey) { break; } $data = array( 'timestamp' => time(), 'description' => __('Allowlisted via Firewall Options page', 'wordfence'), 'ip' => wfUtils::getIP(), 'disabled' => empty($_POST['whitelistedEnabled']), ); if (function_exists('get_current_user_id')) { $data['userID'] = get_current_user_id(); } wfWAF::getInstance()->whitelistRuleForParam($path, $paramKey, 'all', $data); } break; case 'replaceWhitelist': if ( !empty($_POST['oldWhitelistedPath']) && !empty($_POST['oldWhitelistedParam']) && !empty($_POST['newWhitelistedPath']) && !empty($_POST['newWhitelistedParam']) ) { $oldWhitelistedPath = stripslashes($_POST['oldWhitelistedPath']); $oldWhitelistedParam = stripslashes($_POST['oldWhitelistedParam']); $newWhitelistedPath = stripslashes($_POST['newWhitelistedPath']); $newWhitelistedParam = stripslashes($_POST['newWhitelistedParam']); $savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf'); // These are already base64'd $oldKey = $oldWhitelistedPath . '|' . $oldWhitelistedParam; $newKey = base64_encode($newWhitelistedPath) . '|' . base64_encode($newWhitelistedParam); try { $savedWhitelistedURLParams = wfUtils::arrayReplaceKey($savedWhitelistedURLParams, $oldKey, $newKey); } catch (Exception $e) { error_log("Caught exception from 'wfUtils::arrayReplaceKey' with message: " . $e->getMessage()); } wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf'); } break; case 'deleteWhitelist': if ( isset($_POST['deletedWhitelistedPath']) && is_string($_POST['deletedWhitelistedPath']) && isset($_POST['deletedWhitelistedParam']) && is_string($_POST['deletedWhitelistedParam']) ) { $deletedWhitelistedPath = stripslashes($_POST['deletedWhitelistedPath']); $deletedWhitelistedParam = stripslashes($_POST['deletedWhitelistedParam']); $savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf'); $key = $deletedWhitelistedPath . '|' . $deletedWhitelistedParam; unset($savedWhitelistedURLParams[$key]); wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf'); } break; case 'enableWhitelist': if (isset($_POST['whitelistedPath']) && isset($_POST['whitelistedParam'])) { $path = stripslashes($_POST['whitelistedPath']); $paramKey = stripslashes($_POST['whitelistedParam']); if (!$path || !$paramKey) { break; } $enabled = !empty($_POST['whitelistedEnabled']); $savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf'); $key = $path . '|' . $paramKey; if (array_key_exists($key, $savedWhitelistedURLParams) && is_array($savedWhitelistedURLParams[$key])) { foreach ($savedWhitelistedURLParams[$key] as $ruleID => $data) { $savedWhitelistedURLParams[$key][$ruleID]['disabled'] = !$enabled; } } wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf'); } break; case 'enableRule': $ruleEnabled = !empty($_POST['ruleEnabled']); $ruleID = !empty($_POST['ruleID']) ? (int) $_POST['ruleID'] : false; if ($ruleID) { $disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules'); if ($ruleEnabled) { unset($disabledRules[$ruleID]); } else { $disabledRules[$ruleID] = true; } wfWAF::getInstance()->getStorageEngine()->setConfig('disabledRules', $disabledRules); } break; case 'disableWAFBlacklistBlocking': if (isset($_POST['disableWAFBlacklistBlocking'])) { $disableWAFBlacklistBlocking = (int) $_POST['disableWAFBlacklistBlocking']; wfWAF::getInstance()->getStorageEngine()->setConfig('disableWAFBlacklistBlocking', $disableWAFBlacklistBlocking); if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); } } break; } } return array( 'success' => true, 'data' => self::_getWAFData(), ); } public static function ajax_updateWAFRules_callback() { try { $event = new wfWAFCronFetchRulesEvent(time() - 2); $event->setWaf(wfWAF::getInstance()); $success = $event->fire(); $failureReason = false; if (!$success && method_exists($event, 'getResponse')) { $response = $event->getResponse(); if ($response === false) { $failureReason = wfFirewall::UPDATE_FAILURE_UNREACHABLE; } else { $jsonData = @json_decode($response->getBody(), true); if (isset($jsonData['errorMessage']) && strpos($jsonData['errorMessage'], 'rate limit') !== false) { $failureReason = wfFirewall::UPDATE_FAILURE_RATELIMIT; } else if (isset($jsonData['data']['signature'])) { $failureReason = wfFirewall::UPDATE_FAILURE_FILESYSTEM; } } } return self::_getWAFData($success, $failureReason); } catch (Exception $e) { $wafData = array( 'learningMode' => false, 'rules' => array(), 'whitelistedURLParams' => array(), 'disabledRules' => array(), 'isPaid' => (bool) wfConfig::get('isPaid', 0), ); return $wafData; } } public static function ajax_loadLiveTraffic_callback() { $return = array(); $filters = new wfLiveTrafficQueryFilterCollection(); $query = new wfLiveTrafficQuery(self::getLog()); $query->setFilters($filters); if (array_key_exists('groupby', $_REQUEST)) { $param = $_REQUEST['groupby']; if ($param === 'type') { $param = 'jsRun'; } $query->setGroupBy(new wfLiveTrafficQueryGroupBy($query, $param)); } $query->setLimit(isset($_REQUEST['limit']) ? absint($_REQUEST['limit']) : 20); $query->setOffset(isset($_REQUEST['offset']) ? absint($_REQUEST['offset']) : 0); if (!empty($_REQUEST['since'])) { $query->setStartDate($_REQUEST['since']); } else if (!empty($_REQUEST['startDate'])) { $query->setStartDate(is_numeric($_REQUEST['startDate']) ? $_REQUEST['startDate'] : strtotime($_REQUEST['startDate'])); } if (!empty($_REQUEST['endDate'])) { $query->setEndDate(is_numeric($_REQUEST['endDate']) ? $_REQUEST['endDate'] : strtotime($_REQUEST['endDate'])); } if ( array_key_exists('param', $_REQUEST) && is_array($_REQUEST['param']) && array_key_exists('operator', $_REQUEST) && is_array($_REQUEST['operator']) && array_key_exists('value', $_REQUEST) && is_array($_REQUEST['value']) ) { for ($i = 0; $i < count($_REQUEST['param']); $i++) { if ( array_key_exists($i, $_REQUEST['param']) && array_key_exists($i, $_REQUEST['operator']) && array_key_exists($i, $_REQUEST['value']) ) { $param = $_REQUEST['param'][$i]; $operator = $_REQUEST['operator'][$i]; $value = $_REQUEST['value'][$i]; switch (strtolower($param)) { case 'type': $param = 'jsRun'; $value = strtolower($value) === 'human' ? 1 : 0; break; case 'ip': $ip = $value; if (strpos($ip, '*') !== false) { //If the IP contains a *, treat it as a wildcard for that segment and silently adjust the rule if (preg_match('/^(?:(?:\d{1,3}|\*)(?:\.|$)){2,4}/', $ip)) { //IPv4 $value = array('00', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'FF', 'FF'); $octets = explode('.', $ip); foreach ($octets as $o) { if (strpos($o, '*') !== false) { $value[] = '..'; } else { $value[] = strtoupper(str_pad(dechex($o), 2, '0', STR_PAD_LEFT)); } } $value = '^' . implode('', array_pad($value, 16, '..')) . '$'; $operator = ($operator == '!=' ? 'hnotregexp' : 'hregexp'); } else if (!empty($ip) && preg_match('/^((?:[\da-f*]{1,4}(?::|)){0,8})(::)?((?:[\da-f*]{1,4}(?::|)){0,8})$/i', $ip)) { //IPv6 if ($ip === '::') { $value = '^' . str_repeat('00', 16) . '$'; } else { $colon_count = substr_count($ip, ':'); $dbl_colon_pos = strpos($ip, '::'); if ($dbl_colon_pos !== false) { $ip = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip); $ip = trim($ip, ':'); } $ip_groups = explode(':', $ip); $value = array(); foreach ($ip_groups as $ip_group) { if (strpos($ip_group, '*') !== false) { $value[] = '..'; $value[] = '..'; } else { $ip_group = strtoupper(str_pad($ip_group, 4, '0', STR_PAD_LEFT)); $value[] = substr($ip_group, 0, 2); $value[] = substr($ip_group, -2); } } $value = '^' . implode('', array_pad($value, 16, '..')) . '$'; } $operator = ($operator == '=' ? 'hregexp' : 'hnotregexp'); } else if (preg_match('/^((?:0{1,4}(?::|)){0,5})(::)?ffff:((?:\d{1,3}(?:\.|$)){4})$/i', $ip, $matches)) { //IPv4 mapped IPv6 $value = array('00', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'FF', 'FF'); $octets = explode('.', $matches[3]); foreach ($octets as $o) { if (strpos($o, '*') !== false) { $value[] = '..'; } else { $value[] = strtoupper(str_pad(dechex($o), 2, '0', STR_PAD_LEFT)); } } $value = '^' . implode('', array_pad($value, 16, '.')) . '$'; $operator = ($operator == '=' ? 'hregexp' : 'hnotregexp'); } else { $value = false; } } else { $value = wfUtils::inet_pton($ip); } break; case 'userid': $value = absint($value); break; } if ($operator === 'match' && $param !== 'ip') { $value = str_replace('*', '%', $value); } $filters->addFilter(new wfLiveTrafficQueryFilter($query, $param, $operator, $value)); } } } try { $return['data'] = $query->execute(); /*if (defined('WP_DEBUG') && WP_DEBUG) { $return['sql'] = $query->buildQuery(); }*/ } catch (wfLiveTrafficQueryException $e) { $return['data'] = array(); $return['sql'] = $e->getMessage(); } $return['success'] = true; return $return; } public static function ajax_whitelistWAFParamKey_callback() { if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) { if (isset($_POST['path']) && isset($_POST['paramKey']) && isset($_POST['failedRules'])) { $data = array( 'timestamp' => time(), 'description' => __('Allowlisted via Live Traffic', 'wordfence'), 'source' => 'live-traffic', 'ip' => wfUtils::getIP(), ); if (function_exists('get_current_user_id')) { $data['userID'] = get_current_user_id(); } $waf->whitelistRuleForParam(base64_decode($_POST['path']), base64_decode($_POST['paramKey']), $_POST['failedRules'], $data); return array( 'success' => true, ); } } return false; } public static function ajax_whitelistBulkDelete_callback() { if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) { if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) { $whitelist = (array) $waf->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf'); if (!is_array($whitelist)) { $whitelist = array(); } foreach ($items as $key) { list($path, $paramKey, ) = $key; $whitelistKey = $path . '|' . $paramKey; if (array_key_exists($whitelistKey, $whitelist)) { unset($whitelist[$whitelistKey]); } } $waf->getStorageEngine()->setConfig('whitelistedURLParams', $whitelist, 'livewaf'); return array( 'data' => self::_getWAFData(), 'success' => true, ); } } return false; } public static function ajax_whitelistBulkEnable_callback() { if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) { if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) { self::_whitelistBulkToggle($items, true); return array( 'data' => self::_getWAFData(), 'success' => true, ); } } return false; } public static function ajax_whitelistBulkDisable_callback() { if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) { if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) { self::_whitelistBulkToggle($items, false); return array( 'data' => self::_getWAFData(), 'success' => true, ); } } return false; } private static function _whitelistBulkToggle($items, $enabled) { $waf = wfWAF::getInstance(); $whitelist = (array) $waf->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf'); if (!is_array($whitelist)) { $whitelist = array(); } foreach ($items as $key) { list($path, $paramKey, ) = $key; $whitelistKey = $path . '|' . $paramKey; if (array_key_exists($whitelistKey, $whitelist) && is_array($whitelist[$whitelistKey])) { foreach ($whitelist[$whitelistKey] as $ruleID => $data) { $whitelist[$whitelistKey][$ruleID]['disabled'] = !$enabled; } } } $waf->getStorageEngine()->setConfig('whitelistedURLParams', $whitelist, 'livewaf'); } private static function _getWAFData($updated = null, $failureReason = false) { $data['learningMode'] = wfWAF::getInstance()->isInLearningMode(); $data['rules'] = wfWAF::getInstance()->getRules(); /** @var wfWAFRule $rule */ foreach ($data['rules'] as $ruleID => $rule) { $data['rules'][$ruleID] = $rule->toArray(); } $whitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', array(), 'livewaf'); $data['whitelistedURLParams'] = array(); if (is_array($whitelistedURLParams)) { foreach ($whitelistedURLParams as $urlParamKey => $rules) { list($path, $paramKey) = explode('|', $urlParamKey); $whitelistData = null; foreach ($rules as $ruleID => $whitelistedData) { if ($whitelistData === null) { $whitelistData = $whitelistedData; continue; } if ($ruleID === 'all') { $whitelistData = $whitelistedData; break; } } if (is_array($whitelistData) && array_key_exists('userID', $whitelistData) && function_exists('get_user_by')) { $user = get_user_by('id', $whitelistData['userID']); if ($user) { $whitelistData['username'] = $user->user_login; } } $data['whitelistedURLParams'][] = array( 'path' => $path, 'paramKey' => $paramKey, 'ruleID' => array_keys($rules), 'data' => $whitelistData, ); } } $data['disabledRules'] = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules'); if ($lastUpdated = wfWAF::getInstance()->getStorageEngine()->getConfig('rulesLastUpdated', null, 'transient')) { $data['rulesLastUpdated'] = $lastUpdated; } $data['isPaid'] = (bool) wfConfig::get('isPaid', 0); if ($updated !== null) { $data['updated'] = (bool) $updated; if (!$updated) { $data['failure'] = $failureReason; } } return $data; } public static function ajax_wafStatus_callback() { if (!empty($_REQUEST['nonce']) && hash_equals($_REQUEST['nonce'], wfConfig::get('wafStatusCallbackNonce', ''))) { wfConfig::set('wafStatusCallbackNonce', ''); wfUtils::send_json(array('active' => WFWAF_AUTO_PREPEND, 'subdirectory' => WFWAF_SUBDIRECTORY_INSTALL)); } wfUtils::send_json(false); } public static function ajax_installAutoPrepend_callback() { global $wp_filesystem; $currentAutoPrependFile = ini_get('auto_prepend_file'); $currentAutoPrepend = null; if (isset($_POST['currentAutoPrepend']) && !WF_IS_WP_ENGINE && !WF_IS_PRESSABLE) { $currentAutoPrepend = $_POST['currentAutoPrepend']; } $serverConfiguration = null; if (isset($_POST['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_POST['serverConfiguration'])) { $serverConfiguration = $_POST['serverConfiguration']; } if ($serverConfiguration === null) { return array('errorMsg' => __('A valid server configuration was not provided.', 'wordfence')); } $helper = new wfWAFAutoPrependHelper($serverConfiguration, $currentAutoPrepend === 'override' ? null : $currentAutoPrependFile); ob_start(); $ajaxURL = admin_url('admin-ajax.php'); $allow_relaxed_file_ownership = true; if (false === ($credentials = request_filesystem_credentials($ajaxURL, '', false, ABSPATH, array('version', 'locale', 'action', 'serverConfiguration', 'currentAutoPrepend'), $allow_relaxed_file_ownership))) { $credentialsContent = ob_get_clean(); $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Filesystem Credentials Required', 'wordfence'), 'html' => $credentialsContent, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), 'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete the setup.', 'wordfence'), ))->render(); return array('needsCredentials' => 1, 'html' => $html); } ob_end_clean(); if (!WP_Filesystem($credentials, ABSPATH, $allow_relaxed_file_ownership) && $wp_filesystem->errors->get_error_code()) { $credentialsError = ''; foreach ($wp_filesystem->errors->get_error_messages() as $message) { if (is_wp_error($message)) { if ($message->get_error_data() && is_string($message->get_error_data())) { $message = $message->get_error_message() . ': ' . $message->get_error_data(); } else { $message = $message->get_error_message(); } } $credentialsError .= "<p>$message</p>\n"; } $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Filesystem Permission Error', 'wordfence'), 'html' => $credentialsError, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), 'footerButtonTitle' => __('Cancel', 'wordfence'), ))->render(); return array('credentialsFailed' => 1, 'html' => $html); } try { $helper->performInstallation($wp_filesystem); $nonce = bin2hex(wfWAFUtils::random_bytes(32)); wfConfig::set('wafStatusCallbackNonce', $nonce); $verifyURL = add_query_arg(array('action' => 'wordfence_wafStatus', 'nonce' => $nonce), $ajaxURL); $response = wp_remote_get($verifyURL, array('headers' => array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/))); $active = false; if (!is_wp_error($response)) { $wafStatus = @json_decode(wp_remote_retrieve_body($response), true); if (isset($wafStatus['active']) && isset($wafStatus['subdirectory'])) { $active = $wafStatus['active'] && !$wafStatus['subdirectory']; } } if ($serverConfiguration == 'manual') { $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Manual Installation Instructions', 'wordfence'), 'html' => wfView::create('waf/waf-install-manual')->render(), 'footerButtonTitle' => __('Close', 'wordfence'), ))->render(); } else { $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Installation Successful', 'wordfence'), 'html' => wfView::create('waf/waf-install-success', array('active' => $active))->render(), 'footerButtonTitle' => __('Close', 'wordfence'), ))->render(); } return array('ok' => 1, 'html' => $html); } catch (wfWAFAutoPrependHelperException $e) { $installError = "<p>" . $e->getMessage() . "</p>"; $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Installation Failed', 'wordfence'), 'html' => $installError, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), 'footerButtonTitle' => __('Cancel', 'wordfence'), ))->render(); return array('installationFailed' => 1, 'html' => $html); } } public static function ajax_uninstallAutoPrepend_callback() { global $wp_filesystem; $serverConfiguration = null; if (isset($_POST['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_POST['serverConfiguration'])) { $serverConfiguration = $_POST['serverConfiguration']; } if ($serverConfiguration === null) { return array('errorMsg' => __('A valid server configuration was not provided.', 'wordfence')); } $helper = new wfWAFAutoPrependHelper($serverConfiguration, null); if (isset($_POST['credentials']) && isset($_POST['credentialsSignature'])) { $salt = wp_salt('logged_in'); $expectedSignature = hash_hmac('sha256', $_POST['credentials'], $salt); if (hash_equals($expectedSignature, $_POST['credentialsSignature'])) { $decrypted = wfUtils::decrypt($_POST['credentials']); $credentials = @json_decode($decrypted, true); } } $ajaxURL = admin_url('admin-ajax.php'); if (!isset($credentials)) { $allow_relaxed_file_ownership = true; ob_start(); if (false === ($credentials = request_filesystem_credentials($ajaxURL, '', false, ABSPATH, array('version', 'locale', 'action', 'serverConfiguration', 'iniModified'), $allow_relaxed_file_ownership))) { $credentialsContent = ob_get_clean(); $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Filesystem Credentials Required', 'wordfence'), 'html' => $credentialsContent, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), 'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete uninstallation.', 'wordfence'), ))->render(); return array('needsCredentials' => 1, 'html' => $html); } ob_end_clean(); } if (!WP_Filesystem($credentials, ABSPATH, $allow_relaxed_file_ownership) && $wp_filesystem->errors->get_error_code()) { $credentialsError = ''; foreach ($wp_filesystem->errors->get_error_messages() as $message) { if (is_wp_error($message)) { if ($message->get_error_data() && is_string($message->get_error_data())) { $message = $message->get_error_message() . ': ' . $message->get_error_data(); } else { $message = $message->get_error_message(); } } $credentialsError .= "<p>$message</p>\n"; } $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Filesystem Permission Error', 'wordfence'), 'html' => $credentialsError, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), 'footerButtonTitle' => __('Cancel', 'wordfence'), ))->render(); return array('credentialsFailed' => 1, 'html' => $html); } try { if ((!isset($_POST['iniModified']) || (isset($_POST['iniModified']) && !$_POST['iniModified'])) && !WF_IS_PRESSABLE) { //Uses .user.ini but not yet modified $hasPreviousAutoPrepend = $helper->performIniRemoval($wp_filesystem); $iniTTL = intval(ini_get('user_ini.cache_ttl')); if ($iniTTL == 0) { $iniTTL = 300; //The PHP default } if (!$helper->usesUserIni()) { $iniTTL = 0; //.htaccess } $timeout = max(30, $iniTTL); $timeoutString = wfUtils::makeDuration($timeout); $waitingResponse = '<p>' . __('The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled.', 'wordfence') . '</p>'; if ($hasPreviousAutoPrepend) { $waitingResponse .= '<p>' . __('Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed.', 'wordfence') . '</p>'; } $spinner = wfView::create('common/indeterminate-progress', array('size' => 32))->render(); $waitingResponse .= '<ul class="wf-flex-horizontal"><li>' . $spinner . '</li><li class="wf-padding-add-left">' . sprintf(/* translators: Time until. */ __('Waiting for it to take effect. This may take up to %s.', 'wordfence'), $timeoutString) . '</li></ul>'; $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Waiting for Changes', 'wordfence'), 'html' => $waitingResponse, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), 'footerButtonTitle' => __('Close', 'wordfence'), 'noX' => true, ))->render(); $response = array('uninstallationWaiting' => 1, 'html' => $html, 'timeout' => $timeout, 'serverConfiguration' => $_POST['serverConfiguration']); if (isset($credentials) && is_array($credentials)) { $salt = wp_salt('logged_in'); $json = json_encode($credentials); $encrypted = wfUtils::encrypt($json); $signature = hash_hmac('sha256', $encrypted, $salt); $response['credentials'] = $encrypted; $response['credentialsSignature'] = $signature; } return $response; } else { //.user.ini and .htaccess modified if applicable and waiting period elapsed or otherwise ready to advance to next step if (WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL && !WF_IS_WP_ENGINE && !WF_IS_PRESSABLE) { //.user.ini modified, but the WAF is still enabled $retryAttempted = (isset($_POST['retryAttempted']) && $_POST['retryAttempted']); $userIniError = '<p class="wf-error">'; $userIniError .= __('Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP.', 'wordfence'); if ($retryAttempted) { $userIniError .= ' <strong>' . __('Retrying Failed.', 'wordfence') . '</strong>'; } $userIniError .= ' <a href="#" class="wf-waf-uninstall-try-again">' . __('Try Again', 'wordfence') . '</a>'; $userIniError .= '</p>'; $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Unable to Uninstall', 'wordfence'), 'html' => $userIniError, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), 'footerButtonTitle' => __('Cancel', 'wordfence'), ))->render(); $response = array('uninstallationFailed' => 1, 'html' => $html, 'serverConfiguration' => $_POST['serverConfiguration']); if (isset($credentials) && is_array($credentials)) { $salt = wp_salt('logged_in'); $json = json_encode($credentials); $encrypted = wfUtils::encrypt($json); $signature = hash_hmac('sha256', $encrypted, $salt); $response['credentials'] = $encrypted; $response['credentialsSignature'] = $signature; } return $response; } $helper->performAutoPrependFileRemoval($wp_filesystem); $nonce = bin2hex(wfWAFUtils::random_bytes(32)); wfConfig::set('wafStatusCallbackNonce', $nonce); $verifyURL = add_query_arg(array('action' => 'wordfence_wafStatus', 'nonce' => $nonce), $ajaxURL); $response = wp_remote_get($verifyURL, array('headers' => array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/))); $active = true; $subdirectory = WFWAF_SUBDIRECTORY_INSTALL; if (!is_wp_error($response)) { $wafStatus = @json_decode(wp_remote_retrieve_body($response), true); if (isset($wafStatus['active']) && isset($wafStatus['subdirectory'])) { $active = $wafStatus['active'] && !$wafStatus['subdirectory']; $subdirectory = $wafStatus['subdirectory']; } } $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Uninstallation Complete', 'wordfence'), 'html' => wfView::create('waf/waf-uninstall-success', array('active' => $active, 'subdirectory' => $subdirectory))->render(), 'footerButtonTitle' => __('Close', 'wordfence'), ))->render(); return array('ok' => 1, 'html' => $html); } } catch (wfWAFAutoPrependHelperException $e) { $installError = "<p>" . $e->getMessage() . "</p>"; $html = wfView::create('waf/waf-modal-wrapper', array( 'title' => __('Uninstallation Failed', 'wordfence'), 'html' => $installError, 'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), 'footerButtonTitle' => __('Cancel', 'wordfence'), ))->render(); return array('uninstallationFailed' => 1, 'html' => $html); } } public static function actionUserRegistration($user_id) { if (wfUtils::isAdmin($user_id) && ($request = self::getLog()->getCurrentRequest())) { //self::getLog()->canLogHit = true; $request->action = 'user:adminCreate'; $request->save(); } } public static function actionPasswordReset($user = null, $new_pass = null) { if ($request = self::getLog()->getCurrentRequest()) { //self::getLog()->canLogHit = true; $request->action = 'user:passwordReset'; $request->save(); } } public static function trimWfHits() { $wfdb = new wfDB(); $lastAggregation = wfConfig::get('lastBlockAggregation', 0); $table_wfHits = wfDB::networkTable('wfHits'); $count = $wfdb->querySingle("select count(*) as cnt from {$table_wfHits}"); $liveTrafficMaxRows = absint(wfConfig::get('liveTraf_maxRows', 2000)); if ($count > $liveTrafficMaxRows * 10) { self::_aggregateBlockStats($lastAggregation); $wfdb->truncate($table_wfHits); //So we don't slow down sites that have very large wfHits tables } else if ($count > $liveTrafficMaxRows) { self::_aggregateBlockStats($lastAggregation); $wfdb->queryWrite("delete from {$table_wfHits} order by id asc limit %d", ($count - $liveTrafficMaxRows) + ($liveTrafficMaxRows * .2)); } else if ($lastAggregation < (time() - 86400)) { self::_aggregateBlockStats($lastAggregation); } $maxAge = wfConfig::get('liveTraf_maxAge', 30); if ($maxAge <= 0 || $maxAge > 30) { $maxAge = 30; } $wfdb->queryWrite("DELETE FROM {$table_wfHits} WHERE ctime < %d", time() - ($maxAge * 86400)); } private static function _aggregateBlockStats($since = false) { global $wpdb; if (!wfConfig::get('other_WFNet', true)) { return; } if ($since === false) { $since = wfConfig::get('lastBlockAggregation', 0); } $hitsTable = wfDB::networkTable('wfHits'); $query = $wpdb->prepare("SELECT COUNT(*) AS cnt, CASE WHEN (jsRun = 1 OR userID > 0) THEN 1 ELSE 0 END AS isHuman, statusCode FROM {$hitsTable} WHERE ctime > %d GROUP BY isHuman, statusCode", $since); $rows = $wpdb->get_results($query, ARRAY_A); if (count($rows)) { try { $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); $api->call('aggregate_stats', array(), array('stats' => json_encode($rows))); } catch (Exception $e) { // Do nothing } } wfConfig::set('lastBlockAggregation', time()); } private static function scheduleSendAttackData($timeToSend = null) { if ($timeToSend === null) { $timeToSend = time() + (60 * 5); } $notMainSite = is_multisite() && !is_main_site(); if ($notMainSite) { global $current_site; switch_to_blog($current_site->blog_id); } if (!wp_next_scheduled('wordfence_processAttackData')) { wp_schedule_single_event($timeToSend, 'wordfence_processAttackData'); } if ($notMainSite) { restore_current_blog(); } } /** * */ public static function processAttackData() { global $wpdb; $table_wfHits = wfDB::networkTable('wfHits'); if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $waf = wfWAF::getInstance(); if ($waf->getStorageEngine()->getConfig('attackDataKey', false) === false) { $waf->getStorageEngine()->setConfig('attackDataKey', mt_rand(0, 0xfff)); } //Send alert email if needed if (wfConfig::get('wafAlertOnAttacks')) { $alertInterval = wfConfig::get('wafAlertInterval', 0); $cutoffTime = max(time() - $alertInterval, wfConfig::get('wafAlertLastSendTime')); $wafAlertWhitelist = wfConfig::get('wafAlertWhitelist', ''); $wafAlertWhitelist = preg_split("/[,\r\n]+/", $wafAlertWhitelist); foreach ($wafAlertWhitelist as $index => &$entry) { $entry = trim($entry); if (empty($entry) || (!preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $entry) && !preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $entry))) { unset($wafAlertWhitelist[$index]); continue; } $packed = @wfUtils::inet_pton($entry); if ($packed === false) { unset($wafAlertWhitelist[$index]); continue; } $entry = bin2hex($packed); } $wafAlertWhitelist = array_filter($wafAlertWhitelist); $attackData = $wpdb->get_results($wpdb->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM {$table_wfHits} WHERE action = 'blocked:waf' " . (count($wafAlertWhitelist) ? "AND HEX(IP) NOT IN (" . implode(", ", array_fill(0, count($wafAlertWhitelist), '%s')) . ")" : "") . "AND attackLogTime > %f ORDER BY attackLogTime DESC LIMIT 10", array_merge($wafAlertWhitelist, array(sprintf('%.6f', $cutoffTime))))); $attackCount = $wpdb->get_var('SELECT FOUND_ROWS()'); $threshold = (int) wfConfig::get('wafAlertThreshold'); if ($threshold < 1) { $threshold = 100; } if ($attackCount >= $threshold) { $durationMessage = wfUtils::makeDuration($alertInterval); $message = sprintf( /* translators: 1. Number of attacks/blocks. 2. Time since. */ __('The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:', 'wordfence'), $attackCount, $durationMessage ); $attackTable = array(); $dateMax = $ipMax = $countryMax = 0; foreach ($attackData as $row) { $actionData = json_decode($row->actionData, true); if (!is_array($actionData) || !isset($actionData['paramKey']) || !isset($actionData['paramValue'])) { continue; } if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') { $row->longDescription = __("Blocked because the IP is blocklisted", 'wordfence'); } else { $row->longDescription = sprintf(/* translators: Reason for firewall action. */ __("Blocked for %s", 'wordfence'), $row->actionDescription); } $paramKey = base64_decode($actionData['paramKey']); $paramValue = base64_decode($actionData['paramValue']); if (strlen($paramValue) > 100) { $paramValue = substr($paramValue, 0, 100) . '...'; } if (preg_match('/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i', $paramKey, $matches)) { switch ($matches[1]) { case 'request.queryString': $row->longDescription = sprintf( /* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */ __('Blocked for %1$s in query string: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.body': $row->longDescription = sprintf( /* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */ __('Blocked for %1$s in POST body: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.cookie': $row->longDescription = sprintf( /* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */ __('Blocked for %1$s in cookie: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.fileNames': $row->longDescription = sprintf( /* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */ __('Blocked for %1$s in file: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; } } $date = date_i18n('F j, Y g:ia', floor($row->attackLogTime)); $dateMax = max(strlen($date), $dateMax); $ip = wfUtils::inet_ntop($row->IP); $ipMax = max(strlen($ip), $ipMax); $country = wfUtils::countryCode2Name(wfUtils::IP2Country($ip)); $country = (empty($country) ? 'Unknown' : $country); $countryMax = max(strlen($country), $countryMax); $attackTable[] = array('date' => $date, 'IP' => $ip, 'country' => $country, 'message' => $row->longDescription); } foreach ($attackTable as $row) { $date = str_pad($row['date'], $dateMax + 2); $ip = str_pad($row['IP'] . " ({$row['country']})", $ipMax + $countryMax + 8); $attackMessage = $row['message']; $message .= $date . $ip . $attackMessage . "\n"; } $alertCallback = array(new wfIncreasedAttackRateAlert($message), 'send'); do_action('wordfence_security_event', 'increasedAttackRate', array( 'attackCount' => $attackCount, 'attackTable' => $attackTable, 'duration' => $alertInterval, 'ip' => wfUtils::getIP(), ), $alertCallback); wfConfig::set('wafAlertLastSendTime', time()); } } if (wfConfig::get('other_WFNet', true)) { $response = wp_remote_get(sprintf(WFWAF_API_URL_SEC . "waf-rules/%d.txt", $waf->getStorageEngine()->getConfig('attackDataKey')), array('headers' => array('Referer' => false))); if (!is_wp_error($response)) { $okToSendBody = wp_remote_retrieve_body($response); if ($okToSendBody === 'ok') { //Send attack data $limit = 500; $lastSendTime = wfConfig::get('lastAttackDataSendTime'); $attackData = $wpdb->get_results($wpdb->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM {$table_wfHits} WHERE action in ('blocked:waf', 'learned:waf', 'logged:waf', 'blocked:waf-always') AND attackLogTime > %f LIMIT %d", sprintf('%.6f', $lastSendTime), $limit)); $totalRows = $wpdb->get_var('SELECT FOUND_ROWS()'); if ($attackData) { // Build JSON to send $dataToSend = array(); $attackDataToUpdate = array(); foreach ($attackData as $attackDataRow) { $actionData = (array) wfRequestModel::unserializeActionData($attackDataRow->actionData); $dataToSend[] = array( $attackDataRow->attackLogTime, $attackDataRow->ctime, wfUtils::inet_ntop($attackDataRow->IP), (array_key_exists('learningMode', $actionData) ? $actionData['learningMode'] : 0), (array_key_exists('paramKey', $actionData) ? base64_encode($actionData['paramKey']) : false), (array_key_exists('paramValue', $actionData) ? base64_encode($actionData['paramValue']) : false), (array_key_exists('failedRules', $actionData) ? $actionData['failedRules'] : ''), strpos($attackDataRow->URL, 'https') === 0 ? 1 : 0, (array_key_exists('fullRequest', $actionData) ? $actionData['fullRequest'] : ''), ); if (array_key_exists('fullRequest', $actionData)) { unset($actionData['fullRequest']); $attackDataToUpdate[$attackDataRow->id] = array( 'actionData' => wfRequestModel::serializeActionData($actionData), ); } if ($attackDataRow->attackLogTime > $lastSendTime) { $lastSendTime = $attackDataRow->attackLogTime; } } $homeurl = wfUtils::wpHomeURL(); $siteurl = wfUtils::wpSiteURL(); $installType = wfUtils::wafInstallationType(); $response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array( 'action' => 'send_waf_attack_data', 'k' => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'), 's' => $siteurl, 'h' => $homeurl, 't' => microtime(true), 'c' => $installType, 'lang' => get_site_option('WPLANG'), ), null, '&'), array( 'body' => json_encode($dataToSend), 'headers' => array( 'Content-Type' => 'application/json', 'Referer' => false, ), 'timeout' => 30, )); if (!is_wp_error($response) && ($body = wp_remote_retrieve_body($response))) { $jsonData = json_decode($body, true); if (is_array($jsonData) && array_key_exists('success', $jsonData)) { // Successfully sent data, remove the full request from the table to reduce storage size foreach ($attackDataToUpdate as $hitID => $dataToUpdate) { $wpdb->update($table_wfHits, $dataToUpdate, array( 'id' => $hitID, )); } wfConfig::set('lastAttackDataSendTime', $lastSendTime); if ($totalRows > $limit) { self::scheduleSendAttackData(); } if (array_key_exists('data', $jsonData) && array_key_exists('watchedIPList', $jsonData['data'])) { $waf->getStorageEngine()->setConfig('watchedIPs', $jsonData['data']['watchedIPList'], 'transient'); } } } } //Send false positives $lastSendTime = wfConfig::get('lastFalsePositiveSendTime'); $whitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', array(), 'livewaf'); if (count($whitelistedURLParams)) { $data = array(); $mostRecentWhitelisting = $lastSendTime; foreach ($whitelistedURLParams as $urlParamKey => $rules) { list($path, $paramKey) = explode('|', $urlParamKey); $ruleData = array(); foreach ($rules as $ruleID => $whitelistedData) { if ($whitelistedData['timestamp'] > $lastSendTime && (!isset($whitelistedData['disabled']) || !$whitelistedData['disabled'])) { if (isset($whitelistedData['source'])) { $source = $whitelistedData['source']; } else if ($whitelistedData['description'] == 'Allowlisted via false positive dialog') { $source = 'false-positive'; } else if ($whitelistedData['description'] == 'Allowlisted via Live Traffic') { $source = 'live-traffic'; } else if ($whitelistedData['description'] == 'Allowlisted while in Learning Mode.') { $source = 'learning-mode'; } else { //A user-entered description or Whitelisted via Firewall Options page $source = 'waf-options'; } $ruleData[] = array( $ruleID, $whitelistedData['timestamp'], $source, $whitelistedData['description'], $whitelistedData['ip'], isset($whitelistedData['userID']) ? $whitelistedData['userID'] : 0, ); if ($whitelistedData['timestamp'] > $mostRecentWhitelisting) { $mostRecentWhitelisting = $whitelistedData['timestamp']; } } } if (count($ruleData)) { $data[] = array( base64_decode($path), base64_decode($paramKey), $ruleData, ); } } if (count($data)) { $homeurl = wfUtils::wpHomeURL(); $siteurl = wfUtils::wpSiteURL(); $installType = wfUtils::wafInstallationType(); $response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array( 'action' => 'send_waf_false_positives', 'k' => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'), 's' => $siteurl, 'h' => $homeurl, 't' => microtime(true), 'c' => $installType, 'lang' => get_site_option('WPLANG'), ), null, '&'), array( 'body' => json_encode($data), 'headers' => array( 'Content-Type' => 'application/json', 'Referer' => false, ), 'timeout' => 30, )); if (!is_wp_error($response) && ($body = wp_remote_retrieve_body($response))) { $jsonData = json_decode($body, true); if (is_array($jsonData) && array_key_exists('success', $jsonData)) { wfConfig::set('lastFalsePositiveSendTime', $mostRecentWhitelisting); } } } } } else if (is_string($okToSendBody) && preg_match('/next check in: ([0-9]+)/', $okToSendBody, $matches)) { self::scheduleSendAttackData(time() + $matches[1]); } } else { // Could be that the server is down, so hold off on sending data for a little while self::scheduleSendAttackData(time() + 7200); } } else if (!wfConfig::get('other_WFNet', true)) { wfConfig::set('lastAttackDataSendTime', time()); wfConfig::set('lastFalsePositiveSendTime', time()); } self::trimWfHits(); } public static function syncAttackData($exit = true) { global $wpdb; if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); } $log = self::getLog(); $waf = wfWAF::getInstance(); $table_wfHits = wfDB::networkTable('wfHits'); if ($waf->getStorageEngine() instanceof wfWAFStorageMySQL) { $lastAttackMicroseconds = floatval($waf->getStorageEngine()->getConfig('lastAttackDataTruncateTime')); } else { $lastAttackMicroseconds = $wpdb->get_var("SELECT MAX(attackLogTime) FROM {$table_wfHits}"); } if ($waf->getStorageEngine()->hasNewerAttackData($lastAttackMicroseconds)) { $attackData = $waf->getStorageEngine()->getNewestAttackDataArray($lastAttackMicroseconds); if ($attackData) { foreach ($attackData as $request) { if (count($request) !== 9 && count($request) !== 10 /* with metadata */ && count($request) !== 11) { continue; } list($logTimeMicroseconds, $requestTime, $ip, $learningMode, $paramKey, $paramValue, $failedRules, $ssl, $requestString) = $request; $metadata = null; $recordID = null; if (array_key_exists(9, $request)) { $metadata = $request[9]; } if (array_key_exists(10, $request)) { $recordID = $request[10]; } // Skip old entries and hits in learning mode, since they'll get picked up anyways. if ($logTimeMicroseconds <= $lastAttackMicroseconds || $learningMode) { continue; } $statusCode = 403; $hit = new wfRequestModel(); if (is_numeric($recordID)) { $hit->id = $recordID; } $hit->attackLogTime = $logTimeMicroseconds; $hit->ctime = $requestTime; $hit->IP = wfUtils::inet_pton($ip); if (preg_match('/user\-agent:(.*?)\n/i', $requestString, $matches)) { $hit->UA = trim($matches[1]); $hit->isGoogle = wfCrawl::isGoogleCrawler($hit->UA); } if (preg_match('/Referer:(.*?)\n/i', $requestString, $matches)) { $hit->referer = trim($matches[1]); } if (preg_match('/^[a-z]+\s+(.*?)\s+/i', $requestString, $uriMatches) && preg_match('/Host:(.*?)\n/i', $requestString, $hostMatches)) { $hit->URL = 'http' . ($ssl ? 's' : '') . '://' . trim($hostMatches[1]) . trim($uriMatches[1]); } $hit->jsRun = (int) wfLog::isHumanRequest($ip, $hit->UA); $isHuman = !!$hit->jsRun; if (preg_match('/cookie:(.*?)\n/i', $requestString, $matches)) { $authCookieName = $waf->getAuthCookieName(); $hasLoginCookie = strpos($matches[1], $authCookieName) !== false; if ($hasLoginCookie && preg_match('/' . preg_quote($authCookieName) . '=(.*?);/', $matches[1], $cookieMatches)) { $authCookie = rawurldecode($cookieMatches[1]); $decodedAuthCookie = $waf->parseAuthCookie($authCookie); if ($decodedAuthCookie !== false) { $hit->userID = $decodedAuthCookie['userID']; $isHuman = true; } } } $path = '/'; if (preg_match('/^[A-Z]+ (.*?) HTTP\\/1\\.1/', $requestString, $matches)) { if (($pos = strpos($matches[1], '?')) !== false) { $path = substr($matches[1], 0, $pos); } else { $path = $matches[1]; } } $metadata = ($metadata != null ? (array) $metadata : array()); if (isset($metadata['finalAction']) && $metadata['finalAction']) { // The request was blocked/redirected because of its IP based on the plugin's blocking settings. WAF blocks should be reported but not shown in live traffic with that as a reason. $action = $metadata['finalAction']['action']; $actionDescription = $action; if (class_exists('wfWAFIPBlocksController')) { if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) { wfActivityReport::logBlockedIP($ip, null, 'advanced'); } else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) { /* Handled below */ } else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) { $actionDescription .= ' (' . wfConfig::get('cbl_redirURL') . ')'; wfConfig::inc('totalCountryBlocked'); wfActivityReport::logBlockedIP($ip, null, 'country'); } else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) { wfConfig::inc('totalCountryBlocked'); wfActivityReport::logBlockedIP($ip, null, 'country'); } else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_WFSN) { wordfence::wfsnReportBlockedAttempt($ip, 'login'); wfActivityReport::logBlockedIP($ip, null, 'brute'); } else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_BADPOST') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_BADPOST) { wfActivityReport::logBlockedIP($ip, null, 'badpost'); } else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_BANNEDURL') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_BANNEDURL) { wfActivityReport::logBlockedIP($ip, null, 'bannedurl'); } else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_FAKEGOOGLE') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_FAKEGOOGLE) { wfActivityReport::logBlockedIP($ip, null, 'fakegoogle'); } else if ((defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FORGOTPASSWD') && strpos($action, wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FORGOTPASSWD) === 0) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FAILURES') && strpos($action, wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FAILURES) === 0)) { wfActivityReport::logBlockedIP($ip, null, 'brute'); } else if ((defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEGLOBAL') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEGLOBAL) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLESCAN') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLESCAN) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLER') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLER) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLERNOTFOUND') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLERNOTFOUND) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMAN') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMAN) || (defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMANNOTFOUND') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMANNOTFOUND) ) { wfConfig::inc('totalIPsThrottled'); wfActivityReport::logBlockedIP($ip, null, 'throttle'); } else { //Manual block wfActivityReport::logBlockedIP($ip, null, 'manual'); } if (isset($metadata['finalAction']['id']) && $action != wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) { $id = $metadata['finalAction']['id']; $block = new wfBlock($id); $block->recordBlock(1, (int) $requestTime); } } if (strlen($actionDescription) == 0) { $actionDescription = 'Blocked by Wordfence'; } if (empty($failedRules)) { // Just a plugin block $statusCode = 503; $hit->action = 'blocked:wordfence'; if (class_exists('wfWAFIPBlocksController')) { if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) { $statusCode = 302; $hit->action = 'cbl:redirect'; } else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_WFSN) { $hit->action = 'blocked:wfsnrepeat'; wordfence::wfsnReportBlockedAttempt($ip, 'waf'); } else if (isset($metadata['finalAction']['lockout'])) { $hit->action = 'lockedOut'; } else if (isset($metadata['finalAction']['block'])) { //Do nothing } } $hit->actionDescription = $actionDescription; } else if (preg_match('/\blogged\b/i', $failedRules)) { $statusCode = 200; $hit->action = 'logged:waf'; } else { // Blocked by the WAF but would've been blocked anyway by the plugin settings so that message takes priority $hit->action = 'blocked:waf-always'; $hit->actionDescription = $actionDescription; } } else { if (preg_match('/\blogged\b/i', $failedRules)) { $statusCode = 200; $hit->action = 'logged:waf'; } else { $hit->action = 'blocked:waf'; $type = null; if ($failedRules == 'blocked') { $type = 'blacklist'; } else if (is_numeric($failedRules)) { $type = 'waf'; } wfActivityReport::logBlockedIP($hit->IP, null, $type); } } /** @var wfWAFRule $rule */ $ruleIDs = explode('|', $failedRules); $actionData = array( 'learningMode' => $learningMode, 'failedRules' => $failedRules, 'paramKey' => $paramKey, 'paramValue' => $paramValue, 'path' => $path, ); if ($ruleIDs && $ruleIDs[0]) { $rule = $waf->getRule($ruleIDs[0]); if ($rule) { if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = $rule->getDescription(); } $actionData['category'] = $rule->getCategory(); $actionData['ssl'] = $ssl; $actionData['fullRequest'] = base64_encode($requestString); } else if ($ruleIDs[0] == 'logged' && isset($ruleIDs[1]) && ($rule = $waf->getRule($ruleIDs[1]))) { if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = $rule->getDescription(); } $actionData['category'] = $rule->getCategory(); $actionData['ssl'] = $ssl; $actionData['fullRequest'] = base64_encode($requestString); } else if ($ruleIDs[0] == 'logged') { if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = 'Watched IP Traffic: ' . $ip; } $actionData['category'] = 'logged'; $actionData['ssl'] = $ssl; $actionData['fullRequest'] = base64_encode($requestString); } else if ($ruleIDs[0] == 'blocked') { $actionData['category'] = 'blocked'; $actionData['ssl'] = $ssl; $actionData['fullRequest'] = base64_encode($requestString); } } $hit->actionData = wfRequestModel::serializeActionData($actionData); $hit->statusCode = $statusCode; $hit->save(); self::scheduleSendAttackData(); } } $waf->getStorageEngine()->truncateAttackData(); } update_site_option('wordfence_syncingAttackData', 0); update_site_option('wordfence_syncAttackDataAttempts', 0); update_site_option('wordfence_lastSyncAttackData', time()); if ($exit) { exit; } } public static function addSyncAttackDataAjax() { $URL = home_url('/?wordfence_syncAttackData=' . microtime(true)); $URL = esc_url(preg_replace('/^https?:/i', '', $URL)); // Load as external script async so we don't slow page down. echo "<script type=\"text/javascript\" src=\"$URL\" async></script>"; } /** * This is the only hook I see to tie into WP's core update process. * Since we hide the readme.html to prevent the WordPress version from being discovered, it breaks the upgrade * process because it cannot copy the previous readme.html. * * @param string $string * @return string */ public static function restoreReadmeForUpgrade($string) { static $didRun; if (!isset($didRun)) { $didRun = true; wfUtils::showReadme(); register_shutdown_function('wfUtils::hideReadme'); } return $string; } public static function wafAutoPrependNotice() { $url = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'); echo '<div class="update-nag" id="wf-extended-protection-notice">' . __('To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:', 'wordfence') . '  <a class="wf-btn wf-btn-default wf-btn-sm" href="' . esc_url($url) . '">' . __('Click here to configure', 'wordfence') . '</a> <a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.setOption(\'dismissAutoPrependNotice\', 1); jQuery(\'#wf-extended-protection-notice\').fadeOut(); return false;">' . __('Dismiss', 'wordfence') . '</a> <br> <em style="font-size: 85%;">' . sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)) . '</em> </div>'; } public static function wafAutoPrependVerify() { if (WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL) { echo '<div class="updated is-dismissible"><p>' . __('Nice work! The firewall is now optimized.', 'wordfence') . '</p></div>'; } else { echo '<div class="notice notice-error"><p>' . __('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence') . '</p></div>'; } } public static function wafAutoPrependRemoved() { if (!WFWAF_AUTO_PREPEND) { echo '<div class="updated is-dismissible"><p>' . __('Uninstallation was successful!', 'wordfence') . '</p></div>'; } else if (WFWAF_SUBDIRECTORY_INSTALL) { echo '<div class="notice notice-warning"><p>' . __('Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation.', 'wordfence') . '</p></div>'; } else { echo '<div class="notice notice-error"><p>' . __('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence') . '</p></div>'; } } public static function wafUpdateSuccessful() { echo '<div class="updated is-dismissible"><p>' . __('The update was successful!', 'wordfence') . '</p></div>'; } public static function getWAFBootstrapPath() { if (WF_IS_PRESSABLE) { return WP_CONTENT_DIR . '/wordfence-waf.php'; } return ABSPATH . 'wordfence-waf.php'; } public static function getWAFBootstrapContent($currentAutoPrependedFile = null) { $currentAutoPrepend = ''; if ($currentAutoPrependedFile && is_file($currentAutoPrependedFile) && !WFWAF_SUBDIRECTORY_INSTALL) { $currentAutoPrepend = sprintf(' // This file was the current value of auto_prepend_file during the Wordfence WAF installation (%2$s) if (file_exists(%1$s)) { include_once %1$s; }', var_export($currentAutoPrependedFile, true), date('r')); } return sprintf('<?php // Before removing this file, please verify the PHP ini setting `auto_prepend_file` does not point to this. %3$s if (file_exists(%1$s)) { define("WFWAF_LOG_PATH", %2$s); include_once %1$s; } ?>', var_export(WORDFENCE_PATH . 'waf/bootstrap.php', true), var_export(WFWAF_SUBDIRECTORY_INSTALL ? WP_CONTENT_DIR . '/wflogs/' : WFWAF_LOG_PATH, true), $currentAutoPrepend); } public static function checkAndCreateBootstrap() { $bootstrapPath = self::getWAFBootstrapPath(); if (!file_exists($bootstrapPath) || !filesize($bootstrapPath)) { @file_put_contents($bootstrapPath, self::getWAFBootstrapContent(), LOCK_EX); clearstatcache(); } return file_exists($bootstrapPath) && filesize($bootstrapPath); } /** * @return bool|string */ private static function getCurrentUserRole() { if (current_user_can('administrator') || is_super_admin()) { return 'administrator'; } $roles = array('editor', 'author', 'contributor', 'subscriber'); foreach ($roles as $role) { if (current_user_can($role)) { return $role; } } return false; } public static function licenseStatusChanged() { $event = new wfWAFCronFetchRulesEvent(time() - 2); $event->setWaf(wfWAF::getInstance()); $event->fire(); //Update the WAF cron $cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf'); if (is_array($cron)) { /** @var wfWAFCronEvent $event */ foreach ($cron as $index => $event) { $event->setWaf(wfWAF::getInstance()); if (!$event->isInPast()) { $newEvent = $event->reschedule(); if ($newEvent instanceof wfWAFCronEvent && $newEvent !== $event) { $cron[$index] = $newEvent; } else { unset($cron[$index]); } } } } wfWAF::getInstance()->getStorageEngine()->setConfig('cron', $cron, 'livewaf'); } /** * @param string $adminURL * @param string $homePath * @param bool $relaxedFileOwnership * @param bool $output Whether or not to output the credentials collection form. If false, this function only returns the status. * @return bool Returns true if the path is writable, otherwise false. */ public static function requestFilesystemCredentials($adminURL, $homePath = null, $relaxedFileOwnership = true, $output = true) { if ($homePath === null) { $homePath = get_home_path(); } if (!$output) { ob_start(); } if (false === ($credentials = request_filesystem_credentials($adminURL, '', false, $homePath, array('version', 'locale'), $relaxedFileOwnership))) { if (!$output) { ob_end_clean(); } return false; } if (!WP_Filesystem($credentials, $homePath, $relaxedFileOwnership)) { // Failed to connect, Error and request again request_filesystem_credentials($adminURL, '', true, ABSPATH, array('version', 'locale'), $relaxedFileOwnership); if (!$output) { ob_end_clean(); } return false; } global $wp_filesystem; if ($wp_filesystem->errors->get_error_code()) { if (!$output) { ob_end_clean(); } return false; } if (!$output) { ob_end_clean(); } return true; } public static function initRestAPI() { if (wfCentral::isSupported()) { $auth = new wfRESTAuthenticationController(); $auth->registerRoutes(); $config = new wfRESTConfigController(); $config->registerRoutes(); $scan = new wfRESTScanController(); $scan->registerRoutes(); } } public static function ajax_wfcentral_step1_callback() { // Step 1: Makes GET request to `/central/api/site/access-token` endpoint authenticated with the auth grant supplied by the user. // - Receives site GUID, public key, short lived JWT. $authGrant = isset($_REQUEST['auth-grant']) ? $_REQUEST['auth-grant'] : null; if (!$authGrant) { return array( 'err' => 1, 'errorMsg' => __("Auth grant is invalid.", 'wordfence'), ); } $request = new wfCentralAPIRequest('/site/access-token', 'GET', $authGrant); $response = $request->execute(); if ($response->isError()) { return $response->returnErrorArray(); } $body = $response->getJSONBody(); if (!is_array($body) || !isset($body['data']['attributes'])) { return array( 'err' => 1, 'errorMsg' => sprintf(/* translators: Error message. */ __("Invalid response from Wordfence Central: %s"), $response->getBody()), ); } if (!array_key_exists('id', $body['data'])) { return array( 'err' => 1, 'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response."), 'id'), ); } $data = $body['data']['attributes']; $expected = array( 'public-key', 'access-token', ); foreach ($expected as $key) { if (!array_key_exists($key, $data)) { return array( 'err' => 1, 'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response."), $key), ); } } wfConfig::set('wordfenceCentralSiteID', $body['data']['id']); wfConfig::set('wordfenceCentralPK', pack("H*", $data['public-key'])); wfConfig::set('wordfenceCentralAccessToken', $data['access-token']); wfConfig::set('wordfenceCentralCurrentStep', 2); wfConfig::set('wordfenceCentralDisconnected', false); wfConfig::set('wordfenceCentralDisconnectTime', null); wfConfig::set('wordfenceCentralDisconnectEmail', null); return array( 'success' => 1, ); } public static function ajax_wfcentral_step2_callback() { // Step 2: Makes POST request to `/central/api/wf/site/<guid>` endpoint passing in the new public key. // Uses JWT from auth grant endpoint as auth. require_once(WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload-fast.php'); $accessToken = wfConfig::get('wordfenceCentralAccessToken'); if (!$accessToken) { return array( 'err' => 1, 'errorMsg' => __("Access token not found.", 'wordfence'), ); } $keypair = ParagonIE_Sodium_Compat::crypto_sign_keypair(); $publicKey = ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair); $secretKey = ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair); wfConfig::set('wordfenceCentralSecretKey', $secretKey); $request = new wfCentralAPIRequest('/site/' . wfConfig::get('wordfenceCentralSiteID'), 'POST', $accessToken, array( 'data' => array( 'attributes' => array( 'public-key' => ParagonIE_Sodium_Compat::bin2hex($publicKey), ), ), )); $response = $request->execute(); if ($response->isError()) { return $response->returnErrorArray(); } wfConfig::set('wordfenceCentralCurrentStep', 3); return array( 'success' => 1, ); } public static function ajax_wfcentral_step3_callback() { // Step 3: Makes GET request to `/central/api/wf/site/<guid>` endpoint signed using Wordfence plugin private key. // - Expects 200 response with site data. try { $request = new wfCentralAuthenticatedAPIRequest('/site/' . wfConfig::get('wordfenceCentralSiteID')); $response = $request->execute(); if ($response->isError()) { return $response->returnErrorArray(); } $body = $response->getJSONBody(); if (!is_array($body) || !isset($body['data']['attributes'])) { return array( 'error' => 1, 'errorMsg' => __('Invalid response from Wordfence Central.', 'wordfence'), ); } wfConfig::set('wordfenceCentralSiteData', json_encode($body['data']['attributes'])); wfConfig::set('wordfenceCentralCurrentStep', 4); return array( 'success' => 1, ); } catch (wfCentralAPIException $e) { return array( 'error' => 1, 'errorMsg' => $e->getMessage(), ); } } public static function ajax_wfcentral_step4_callback() { // Step 4: Poll for PUT request at `/wp-json/wp/v2/wordfence-auth-grant/` endpoint signed using Wordfence Central private key with short lived JWT. // - Expects verifiable signature of incoming request from Wordfence Central. // - Stores auth grant JWT. $wfCentralAuthGrant = wfConfig::get('wordfenceCentralUserSiteAuthGrant'); if ($wfCentralAuthGrant) { wfConfig::set('wordfenceCentralCurrentStep', 5); return array( 'success' => 1, ); } return array( 'success' => 0, ); } public static function ajax_wfcentral_step5_callback() { // Step 5: Makes POST request to `/central/api/site/<guid>/access-token` endpoint signed using Wordfence plugin private key with auth grant JWT. // - Expects 200 response with access token. $wfCentralAuthGrant = wfConfig::get('wordfenceCentralUserSiteAuthGrant'); if (!$wfCentralAuthGrant) { return array( 'error' => 1, 'errorMsg' => __('Auth grant not found.', 'wordfence'), ); } try { $request = new wfCentralAuthenticatedAPIRequest( sprintf('/site/%s/access-token', wfConfig::get('wordfenceCentralSiteID')), 'POST', array( 'data' => array( 'attributes' => array( 'auth-grant' => $wfCentralAuthGrant, ), ), )); $response = $request->execute(); if ($response->isError()) { return $response->returnErrorArray(); } $body = $response->getJSONBody(); if (!is_array($body) || !isset($body['access-token'])) { return array( 'error' => 1, 'errorMsg' => __('Invalid response from Wordfence Central.', 'wordfence'), ); } wfConfig::set('wordfenceCentralUserSiteAccessToken', $body['access-token']); wfConfig::set('wordfenceCentralCurrentStep', 6); return array( 'success' => 1, 'access-token' => $body['access-token'], 'redirect-url' => sprintf(WORDFENCE_CENTRAL_URL_SEC . '/sites/%s?access-token=%s', rawurlencode(wfConfig::get('wordfenceCentralSiteID')), rawurlencode($body['access-token'])), ); } catch (wfCentralAPIException $e) { return array( 'error' => 1, 'errorMsg' => $e->getMessage(), ); } } public static function ajax_wfcentral_step6_callback() { $wfCentralUserSiteAccessToken = wfConfig::get('wordfenceCentralUserSiteAccessToken'); if (!$wfCentralUserSiteAccessToken) { return array( 'error' => 1, 'errorMsg' => __('Access token not found.', 'wordfence'), ); } $status = wfConfig::get('scanStageStatuses'); wfCentral::updateScanStatus($status); wfConfig::set('wordfenceCentralConnectTime', time()); wfConfig::set('wordfenceCentralConnectEmail', wp_get_current_user()->user_email); return array( 'success' => 1, 'access-token' => $wfCentralUserSiteAccessToken, 'redirect-url' => sprintf(WORDFENCE_CENTRAL_URL_SEC . '/sites/%s?access-token=%s', rawurlencode(wfConfig::get('wordfenceCentralSiteID')), rawurlencode($wfCentralUserSiteAccessToken)), ); } public static function ajax_wfcentral_disconnect_callback() { try { $request = new wfCentralAuthenticatedAPIRequest( sprintf('/site/%s', wfConfig::get('wordfenceCentralSiteID')), 'DELETE'); $response = $request->execute(); } catch (wfCentralAPIException $e) { } wfRESTConfigController::disconnectConfig(); return array( 'success' => 1, ); } public static function queueCentralConfigurationSync() { static $hasRun; if ($hasRun) { return; } $hasRun = true; add_action('shutdown', 'wfCentral::requestConfigurationSync'); } } class wfWAFAutoPrependHelper { private $serverConfig; /** * @var string */ private $currentAutoPrependedFile; public static function helper($serverConfig = null, $currentAutoPrependedFile = null) { return new wfWAFAutoPrependHelper($serverConfig, $currentAutoPrependedFile); } public static function isValidServerConfig($serverConfig) { $validValues = array( "apache-mod_php", "apache-suphp", "cgi", "litespeed", "nginx", "iis", 'manual', ); return in_array($serverConfig, $validValues); } /** * Verifies the .htaccess block for mod_php if present, returning true if no changes need to happen, false * if something needs to update. * * @return bool */ public static function verifyHtaccessMod_php() { if (WFWAF_AUTO_PREPEND && PHP_MAJOR_VERSION > 5) { return true; } $serverInfo = wfWebServerInfo::createFromEnvironment(); if (!$serverInfo->isApacheModPHP()) { return true; } $htaccessPath = get_home_path() . '.htaccess'; if (file_exists($htaccessPath)) { $htaccessContent = file_get_contents($htaccessPath); $regex = '/# Wordfence WAF.*?# END Wordfence WAF/is'; if (preg_match($regex, $htaccessContent, $matches)) { $wafBlock = $matches[0]; $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock); $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock); $hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock); if ($hasPHP5 && (!$hasPHP7 || !$hasPHP8)) { //Check if PHP 5 is configured, but not 7 or 8. return false; } } } return true; } /** * Updates the mod_php block of the .htaccess if needed to include PHP 7. Returns whether or not this was performed successfully. * * @return bool */ public static function fixHtaccessMod_php() { $htaccessPath = get_home_path() . '.htaccess'; if (file_exists($htaccessPath)) { $htaccessContent = file_get_contents($htaccessPath); $regex = '/# Wordfence WAF.*?# END Wordfence WAF/is'; if (preg_match($regex, $htaccessContent, $matches, PREG_OFFSET_CAPTURE)) { $wafBlock = $matches[0][0]; $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'(.*?)\'\s*<\/IfModule>/is', $wafBlock, $php5Matches, PREG_OFFSET_CAPTURE); $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock, $php7Matches, PREG_OFFSET_CAPTURE); $hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock); if ($hasPHP5 && !$hasPHP7) { $beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]); $afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock)); $beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]); $afterMod_php = substr($wafBlock, $php5Matches[0][1] + strlen($php5Matches[0][0])); $updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . sprintf("<IfModule mod_php7.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock; return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false; } if ($hasPHP5 && $hasPHP7 && !$hasPHP8) { $beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]); $afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock)); $beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]); $afterMod_php = substr($wafBlock, $php7Matches[0][1] + strlen($php7Matches[0][0])); $updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . $php7Matches[0][0] . "\n" . sprintf("<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock; return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false; } } } return false; } /** * @param string|null $serverConfig * @param string|null $currentAutoPrependedFile */ public function __construct($serverConfig = null, $currentAutoPrependedFile = null) { $this->serverConfig = $serverConfig; $this->currentAutoPrependedFile = $currentAutoPrependedFile; } public function getFilesNeededForBackup() { $backups = array(); $htaccess = $this->getHtaccessPath(); switch ($this->getServerConfig()) { case 'apache-mod_php': case 'apache-suphp': case 'litespeed': case 'cgi': if (file_exists($htaccess)) { $backups[] = $htaccess; } break; } if ($userIni = ini_get('user_ini.filename')) { $userIniPath = $this->getUserIniPath(); switch ($this->getServerConfig()) { case 'cgi': case 'apache-suphp': case 'nginx': case 'litespeed': case 'iis': if (file_exists($userIniPath)) { $backups[] = $userIniPath; } break; } } return $backups; } public function downloadBackups($index = 0) { $backups = $this->getFilesNeededForBackup(); if ($backups && array_key_exists($index, $backups)) { $url = site_url(); $url = preg_replace('/^https?:\/\//i', '', $url); $url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url); $url = preg_replace('/^_+/', '', $url); $url = preg_replace('/_+$/', '', $url); header('Content-Type: application/octet-stream'); $backupFileName = ltrim(basename($backups[$index]), '.'); header('Content-Disposition: attachment; filename="' . $backupFileName . '_Backup_for_' . $url . '.txt"'); readfile($backups[$index]); die(); } } /** * @return mixed */ public function getServerConfig() { return $this->serverConfig; } /** * @param mixed $serverConfig */ public function setServerConfig($serverConfig) { $this->serverConfig = $serverConfig; } /** * @param WP_Filesystem_Base $wp_filesystem * @throws wfWAFAutoPrependHelperException */ public function performInstallation($wp_filesystem) { $bootstrapPath = wordfence::getWAFBootstrapPath(); if (!$wp_filesystem->put_contents($bootstrapPath, wordfence::getWAFBootstrapContent($this->currentAutoPrependedFile))) { throw new wfWAFAutoPrependHelperException(__('We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It\'s possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence')); } $serverConfig = $this->getServerConfig(); $htaccessPath = $this->getHtaccessPath(); $homePath = dirname($htaccessPath); $userIniPath = $this->getUserIniPath(); $userIni = ini_get('user_ini.filename'); $userIniHtaccessDirectives = ''; if ($userIni) { $userIniHtaccessDirectives = sprintf('<Files "%s"> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> ', addcslashes($userIni, '"')); } // .htaccess configuration switch ($serverConfig) { case 'apache-mod_php': $autoPrependDirective = sprintf("# Wordfence WAF <IfModule mod_php5.c> php_value auto_prepend_file '%1\$s' </IfModule> <IfModule mod_php7.c> php_value auto_prepend_file '%1\$s' </IfModule> <IfModule mod_php.c> php_value auto_prepend_file '%1\$s' </IfModule> $userIniHtaccessDirectives # END Wordfence WAF ", addcslashes($bootstrapPath, "'")); break; case 'litespeed': $escapedBootstrapPath = addcslashes($bootstrapPath, "'"); $autoPrependDirective = sprintf("# Wordfence WAF <IfModule LiteSpeed> php_value auto_prepend_file '%s' </IfModule> <IfModule lsapi_module> php_value auto_prepend_file '%s' </IfModule> $userIniHtaccessDirectives # END Wordfence WAF ", $escapedBootstrapPath, $escapedBootstrapPath); break; case 'apache-suphp': $autoPrependDirective = sprintf("# Wordfence WAF $userIniHtaccessDirectives # END Wordfence WAF ", addcslashes($homePath, "'")); break; case 'cgi': if ($userIniHtaccessDirectives) { $autoPrependDirective = sprintf("# Wordfence WAF $userIniHtaccessDirectives # END Wordfence WAF ", addcslashes($homePath, "'")); } break; } if (!empty($autoPrependDirective)) { // Modify .htaccess $htaccessContent = $wp_filesystem->get_contents($htaccessPath); if ($htaccessContent) { $regex = '/# Wordfence WAF.*?# END Wordfence WAF/is'; if (preg_match($regex, $htaccessContent, $matches)) { $htaccessContent = preg_replace($regex, $autoPrependDirective, $htaccessContent); } else { $htaccessContent .= "\n\n" . $autoPrependDirective; } } else { $htaccessContent = $autoPrependDirective; } if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) { throw new wfWAFAutoPrependHelperException(__('We were unable to make changes to the .htaccess file. It\'s possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation.', 'wordfence')); } if ($serverConfig == 'litespeed') { // sleep(2); $wp_filesystem->touch($htaccessPath); } } if ($userIni) { // .user.ini configuration switch ($serverConfig) { case 'cgi': case 'nginx': case 'apache-suphp': case 'litespeed': case 'iis': $autoPrependIni = sprintf("; Wordfence WAF auto_prepend_file = '%s' ; END Wordfence WAF ", addcslashes($bootstrapPath, "'")); break; } if (!empty($autoPrependIni)) { // Modify .user.ini $userIniContent = $wp_filesystem->get_contents($userIniPath); if (is_string($userIniContent)) { $userIniContent = str_replace('auto_prepend_file', ';auto_prepend_file', $userIniContent); $regex = '/; Wordfence WAF.*?; END Wordfence WAF/is'; if (preg_match($regex, $userIniContent, $matches)) { $userIniContent = preg_replace($regex, $autoPrependIni, $userIniContent); } else { $userIniContent .= "\n\n" . $autoPrependIni; } } else { $userIniContent = $autoPrependIni; } if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) { throw new wfWAFAutoPrependHelperException(sprintf(/* translators: File path. */ __('We were unable to make changes to the %1$s file. It\'s possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence'), basename($userIniPath))); } } } } /** * @param WP_Filesystem_Base $wp_filesystem * @throws wfWAFAutoPrependHelperException * * @return bool Whether or not the .user.ini still has a commented-out auto_prepend_file setting */ public function performIniRemoval($wp_filesystem) { $serverConfig = $this->getServerConfig(); $htaccessPath = $this->getHtaccessPath(); $userIniPath = $this->getUserIniPath(); $userIni = ini_get('user_ini.filename'); // Modify .htaccess $htaccessContent = $wp_filesystem->get_contents($htaccessPath); if (is_string($htaccessContent)) { $htaccessContent = preg_replace('/# Wordfence WAF.*?# END Wordfence WAF/is', '', $htaccessContent); } else { $htaccessContent = ''; } if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) { throw new wfWAFAutoPrependHelperException(__('We were unable to make changes to the .htaccess file. It\'s possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation.', 'wordfence')); } if ($serverConfig == 'litespeed') { // sleep(2); $wp_filesystem->touch($htaccessPath); } if ($userIni) { // Modify .user.ini $userIniContent = $wp_filesystem->get_contents($userIniPath); if (is_string($userIniContent)) { $userIniContent = preg_replace('/; Wordfence WAF.*?; END Wordfence WAF/is', '', $userIniContent); $userIniContent = str_replace('auto_prepend_file', ';auto_prepend_file', $userIniContent); } else { $userIniContent = ''; } if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) { throw new wfWAFAutoPrependHelperException(sprintf(/* translators: File path. */ __('We were unable to make changes to the %1$s file. It\'s possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence'), basename($userIniPath))); } return strpos($userIniContent, 'auto_prepend_file') !== false; } return false; } /** * @param WP_Filesystem_Base $wp_filesystem * @throws wfWAFAutoPrependHelperException */ public function performAutoPrependFileRemoval($wp_filesystem) { $bootstrapPath = wordfence::getWAFBootstrapPath(); if (!$wp_filesystem->delete($bootstrapPath)) { throw new wfWAFAutoPrependHelperException(__('We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It\'s possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal.', 'wordfence')); } } public function getHtaccessPath() { return get_home_path() . '.htaccess'; } public function getUserIniPath() { $userIni = ini_get('user_ini.filename'); if ($userIni) { return get_home_path() . $userIni; } return false; } public function usesUserIni() { $userIni = ini_get('user_ini.filename'); if (!$userIni) { return false; } switch ($this->getServerConfig()) { case 'cgi': case 'apache-suphp': case 'nginx': case 'litespeed': case 'iis': return true; } return false; } public function uninstall() { /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $htaccessPath = $this->getHtaccessPath(); $userIniPath = $this->getUserIniPath(); $adminURL = admin_url('/'); $allow_relaxed_file_ownership = true; $homePath = dirname($htaccessPath); ob_start(); if (false === ($credentials = request_filesystem_credentials($adminURL, '', false, $homePath, array('version', 'locale'), $allow_relaxed_file_ownership)) ) { ob_end_clean(); return false; } if (!WP_Filesystem($credentials, $homePath, $allow_relaxed_file_ownership)) { // Failed to connect, Error and request again request_filesystem_credentials($adminURL, '', true, ABSPATH, array('version', 'locale'), $allow_relaxed_file_ownership); ob_end_clean(); return false; } if ($wp_filesystem->errors->get_error_code()) { ob_end_clean(); return false; } ob_end_clean(); if ($wp_filesystem->is_file($htaccessPath)) { $htaccessContent = $wp_filesystem->get_contents($htaccessPath); $regex = '/# Wordfence WAF.*?# END Wordfence WAF/is'; if (preg_match($regex, $htaccessContent, $matches)) { $htaccessContent = preg_replace($regex, '', $htaccessContent); if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) { return false; } } } if ($wp_filesystem->is_file($userIniPath)) { $userIniContent = $wp_filesystem->get_contents($userIniPath); $regex = '/; Wordfence WAF.*?; END Wordfence WAF/is'; if (preg_match($regex, $userIniContent, $matches)) { $userIniContent = preg_replace($regex, '', $userIniContent); if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) { return false; } } } $bootstrapPath = wordfence::getWAFBootstrapPath(); if ($wp_filesystem->is_file($bootstrapPath)) { $wp_filesystem->delete($bootstrapPath); } return true; } } class wfWAFAutoPrependHelperException extends Exception { } ��������������������������������������������lib/IPTraf.php��������������������������������������������������������������������������������������0000644�����������������00000002246�15233113245�0007153 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel='stylesheet' id='wordfence-main-style-css' href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/iptraf.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' /> </head> <body> <h1><?php echo esc_html(sprintf( /* translators: IP address. */ __('Wordfence: All recent hits for IP address %s', 'wordfence'), wp_kses($IP, array()) . (($reverseLookup) ? '[' . wp_kses($reverseLookup, array()) . ']' : ''))) ?></h1> <div class="footer"><?php echo wp_kses(sprintf( /* translators: 1. year (2011). 2. year (2020) */ __('© %d to %d Wordfence — Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?></div> </body> </html>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/viewFullActivityLog.php�������������������������������������������������������������������������0000644�����������������00000002730�15233113245�0012000 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel='stylesheet' id='wordfence-main-style-css' href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/fullLog.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' /> <style type="text/css"> </style> </head> <body> <h1><?php esc_html_e('Wordfence Full Activity Log', 'wordfence') ?></h1> <?php $db = new wfDB(); global $wpdb; $debugOn = wfConfig::get('debugOn', 0); $table = wfDB::networkTable('wfStatus'); $offset = 0; $timeOffset = 3600 * get_option('gmt_offset'); $q = $db->querySelect("SELECT ctime, level, type, msg FROM {$table} ORDER BY ctime DESC LIMIT %d, 100", $offset); while (is_array($q) && count($q) > 0) { foreach($q as $r){ if($r['level'] < 4 || $debugOn){ echo '<div' . ($r['type'] == 'error' ? ' class="error"' : '') . '>[' . date('M d H:i:s', $r['ctime'] + $timeOffset) . ':' . $r['ctime'] . ':' . $r['level'] . ':' . $r['type'] . '] ' . esc_html($r['msg']) . "</div>\n"; } } $offset += count($q); $q = $db->querySelect("SELECT ctime, level, type, msg FROM {$table} ORDER BY ctime DESC LIMIT %d, 100", $offset); } ?> </body> </html> <?php exit(0); ?> ����������������������������������������lib/wfLog.php���������������������������������������������������������������������������������������0000644�����������������00000157233�15233113245�0007113 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wfDB.php'); require_once(dirname(__FILE__) . '/wfUtils.php'); require_once(dirname(__FILE__) . '/wfBrowscap.php'); class wfLog { public $canLogHit = true; private $effectiveUserID = 0; private $hitsTable = ''; private $apiKey = ''; private $wp_version = ''; private $db = false; private $googlePattern = '/\.(?:googlebot\.com|google\.[a-z]{2,3}|google\.[a-z]{2}\.[a-z]{2}|1e100\.net)$/i'; private static $gbSafeCache = array(); /** * @var wfRequestModel */ private $currentRequest; public static function shared() { static $_shared = null; if ($_shared === null) { $_shared = new wfLog(wfConfig::get('apiKey'), wfUtils::getWPVersion()); } return $_shared; } /** * Returns whether or not we have a cached record identifying the visitor as human. This is used both by certain * rate limiting features and by Live Traffic. * * @param bool|string $IP * @param bool|string $UA * @return bool */ public static function isHumanRequest($IP = false, $UA = false) { global $wpdb; if ($IP === false) { $IP = wfUtils::getIP(); } if ($UA === false) { $UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''); } $table = wfDB::networkTable('wfLiveTrafficHuman'); if ($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table} WHERE IP = %s AND identifier = %s AND expiration >= UNIX_TIMESTAMP()", wfUtils::inet_pton($IP), hash('sha256', $UA, true)))) { return true; } return false; } /** * Creates a cache record for the requester to tag it as human. * * @param bool|string $IP * @param bool|string $UA * @return bool */ public static function cacheHumanRequester($IP = false, $UA = false) { global $wpdb; if ($IP === false) { $IP = wfUtils::getIP(); } if ($UA === false) { $UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''); } $table = wfDB::networkTable('wfLiveTrafficHuman'); if ($wpdb->get_var($wpdb->prepare("INSERT IGNORE INTO {$table} (IP, identifier, expiration) VALUES (%s, %s, UNIX_TIMESTAMP() + 86400)", wfUtils::inet_pton($IP), hash('sha256', $UA, true)))) { return true; } } /** * Prunes any expired records from the human cache. */ public static function trimHumanCache() { global $wpdb; $table = wfDB::networkTable('wfLiveTrafficHuman'); $wpdb->query("DELETE FROM {$table} WHERE `expiration` < UNIX_TIMESTAMP()"); } public function __construct($apiKey, $wp_version){ $this->apiKey = $apiKey; $this->wp_version = $wp_version; $this->hitsTable = wfDB::networkTable('wfHits'); $this->loginsTable = wfDB::networkTable('wfLogins'); $this->blocksTable = wfBlock::blocksTable(); $this->lockOutTable = wfDB::networkTable('wfLockedOut'); $this->throttleTable = wfDB::networkTable('wfThrottleLog'); $this->statusTable = wfDB::networkTable('wfStatus'); $this->ipRangesTable = wfDB::networkTable('wfBlocksAdv'); add_filter('determine_current_user', array($this, '_userIDDetermined'), 99, 1); } public function _userIDDetermined($userID) { //Needed because the REST API will clear the authenticated user if it fails a nonce check on the request $this->effectiveUserID = (int) $userID; return $userID; } public function initLogRequest() { if ($this->currentRequest === null) { $this->currentRequest = new wfRequestModel(); $this->currentRequest->ctime = sprintf('%.6f', microtime(true)); $this->currentRequest->statusCode = 200; $this->currentRequest->isGoogle = (wfCrawl::isGoogleCrawler() ? 1 : 0); $this->currentRequest->IP = wfUtils::inet_pton(wfUtils::getIP()); $this->currentRequest->userID = $this->getCurrentUserID(); $this->currentRequest->URL = wfUtils::getRequestedURL(); $this->currentRequest->referer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); $this->currentRequest->UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''); $this->currentRequest->jsRun = 0; add_action('wp_loaded', array($this, 'actionSetRequestJSEnabled')); add_action('init', array($this, 'actionSetRequestOnInit'), 9999); if (function_exists('register_shutdown_function')) { register_shutdown_function(array($this, 'logHit')); } } } public function actionSetRequestJSEnabled() { if (get_current_user_id() > 0) { $this->currentRequest->jsRun = true; return; } $IP = wfUtils::getIP(); $UA = $this->currentRequest->UA; $this->currentRequest->jsRun = wfLog::isHumanRequest($IP, $UA); } /** * CloudFlare's plugin changes $_SERVER['REMOTE_ADDR'] on init. */ public function actionSetRequestOnInit() { $this->currentRequest->IP = wfUtils::inet_pton(wfUtils::getIP()); $this->currentRequest->userID = $this->getCurrentUserID(); } /** * @return wfRequestModel */ public function getCurrentRequest() { return $this->currentRequest; } public function logLogin($action, $fail, $username){ if(! $username){ return; } $user = get_user_by('login', $username); $userID = 0; if($user){ $userID = $user->ID; if(! $userID){ return; } } else { $user = get_user_by('email', $username); if ($user) { $userID = $user->ID; if (!$userID) { return; } } } // change the action flag here if the user does not exist. if ($action == 'loginFailValidUsername' && $userID == 0) { $action = 'loginFailInvalidUsername'; } $hitID = 0; if ($this->currentRequest !== null) { $this->currentRequest->userID = $userID; $this->currentRequest->action = $action; $this->currentRequest->save(); $hitID = $this->currentRequest->getPrimaryKey(); } //Else userID stays 0 but we do log this even though the user doesn't exist. $this->getDB()->queryWrite("insert into " . $this->loginsTable . " (hitID, ctime, fail, action, username, userID, IP, UA) values (%d, %f, %d, '%s', '%s', %s, %s, '%s')", $hitID, sprintf('%.6f', microtime(true)), $fail, $action, $username, $userID, wfUtils::inet_pton(wfUtils::getIP()), (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '') ); } private function getCurrentUserID(){ if (!function_exists('get_current_user_id') || !defined('AUTH_COOKIE')) { //If pluggable.php is loaded early by some other plugin on a multisite installation, it leads to an error because AUTH_COOKIE is undefined and WP doesn't check for it first return 0; } $id = get_current_user_id(); return $id ? $id : 0; } public function logLeechAndBlock($type) { //404 or hit if (!wfRateLimit::mightRateLimit($type)) { return; } wfRateLimit::countHit($type, wfUtils::getIP()); if (wfRateLimit::globalRateLimit()->shouldEnforce($type)) { $this->takeBlockingAction('maxGlobalRequests', __("Exceeded the maximum global requests per minute for crawlers or humans.", 'wordfence')); } else if (wfRateLimit::crawlerViewsRateLimit()->shouldEnforce($type)) { $this->takeBlockingAction('maxRequestsCrawlers', __("Exceeded the maximum number of requests per minute for crawlers.", 'wordfence')); //may not exit } else if (wfRateLimit::crawler404sRateLimit()->shouldEnforce($type)) { $this->takeBlockingAction('max404Crawlers', __("Exceeded the maximum number of page not found errors per minute for a crawler.", 'wordfence')); } else if (wfRateLimit::humanViewsRateLimit()->shouldEnforce($type)) { $this->takeBlockingAction('maxRequestsHumans', __("Exceeded the maximum number of page requests per minute for humans.", 'wordfence')); } else if (wfRateLimit::human404sRateLimit()->shouldEnforce($type)) { $this->takeBlockingAction('max404Humans', __("Exceeded the maximum number of page not found errors per minute for humans.", 'wordfence')); } } public function tagRequestForBlock($reason, $wfsn = false) { if ($this->currentRequest !== null) { $this->currentRequest->statusCode = 403; $this->currentRequest->action = 'blocked:' . ($wfsn ? 'wfsn' : 'wordfence'); $this->currentRequest->actionDescription = $reason; } } public function tagRequestForLockout($reason) { if ($this->currentRequest !== null) { $this->currentRequest->statusCode = 503; $this->currentRequest->action = 'lockedOut'; $this->currentRequest->actionDescription = $reason; } } /** * @return bool|int */ public function logHit() { $liveTrafficEnabled = wfConfig::liveTrafficEnabled(); $action = $this->currentRequest->action; $logHitOK = $this->logHitOK(); if (!$logHitOK) { return false; } if (!$liveTrafficEnabled && !$action) { return false; } if ($this->currentRequest !== null) { if ($this->currentRequest->save()) { return $this->currentRequest->getPrimaryKey(); } } return false; } public function getHits($hitType /* 'hits' or 'logins' */, $type, $afterTime, $limit = 50, $IP = false){ global $wpdb; $IPSQL = ""; if($IP){ $IPSQL = " and IP=%s "; $sqlArgs = array($afterTime, wfUtils::inet_pton($IP), $limit); } else { $sqlArgs = array($afterTime, $limit); } if($hitType == 'hits'){ $securityOnly = !wfConfig::liveTrafficEnabled(); $delayedHumanBotFiltering = false; if($type == 'hit'){ $typeSQL = " "; } else if($type == 'crawler'){ if ($securityOnly) { $typeSQL = " "; $delayedHumanBotFiltering = true; } else { $now = time(); $typeSQL = " and jsRun = 0 and {$now} - ctime > 30 "; } } else if($type == 'gCrawler'){ $typeSQL = " and isGoogle = 1 "; } else if($type == '404'){ $typeSQL = " and statusCode = 404 "; } else if($type == 'human'){ if ($securityOnly) { $typeSQL = " "; $delayedHumanBotFiltering = true; } else { $typeSQL = " and jsRun = 1 "; } } else if($type == 'ruser'){ $typeSQL = " and userID > 0 "; } else { wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __("Invalid log type to wfLog: %s", 'wordfence'), $type)); return false; } array_unshift($sqlArgs, "select h.*, u.display_name from {$this->hitsTable} h LEFT JOIN {$wpdb->users} u on h.userID = u.ID where ctime > %f $IPSQL $typeSQL order by ctime desc limit %d"); $results = call_user_func_array(array($this->getDB(), 'querySelect'), $sqlArgs); if ($delayedHumanBotFiltering) { $browscap = wfBrowscap::shared(); foreach ($results as $index => $res) { if ($res['UA']) { $b = $browscap->getBrowser($res['UA']); if ($b && $b['Parent'] != 'DefaultProperties') { $jsRun = wfUtils::truthyToBoolean($res['jsRun']); if (!wfConfig::liveTrafficEnabled() && !$jsRun) { $jsRun = !(isset($b['Crawler']) && $b['Crawler']); } if ($type == 'crawler' && $jsRun || $type == 'human' && !$jsRun) { unset($results[$index]); } } } } } } else if($hitType == 'logins'){ array_unshift($sqlArgs, "select l.*, u.display_name from {$this->loginsTable} l LEFT JOIN {$wpdb->users} u on l.userID = u.ID where ctime > %f $IPSQL order by ctime desc limit %d"); $results = call_user_func_array(array($this->getDB(), 'querySelect'), $sqlArgs ); } else { wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __("getHits got invalid hitType: %s", 'wordfence'), $hitType)); return false; } $this->processGetHitsResults($type, $results); return $results; } /** * @param string $type * @param array $results * @throws Exception */ public function processGetHitsResults($type, &$results) { $serverTime = $this->getDB()->querySingle("select unix_timestamp()"); $this->resolveIPs($results); $ourURL = parse_url(site_url()); $ourHost = strtolower($ourURL['host']); $ourHost = preg_replace('/^www\./i', '', $ourHost); $browscap = wfBrowscap::shared(); $patternBlocks = wfBlock::patternBlocks(true); foreach($results as &$res){ $res['type'] = $type; $res['IP'] = wfUtils::inet_ntop($res['IP']); $res['timeAgo'] = wfUtils::makeTimeAgo($serverTime - $res['ctime']); $res['blocked'] = false; $res['rangeBlocked'] = false; $res['ipRangeID'] = -1; $ipBlock = wfBlock::findIPBlock($res['IP']); if ($ipBlock !== false) { $res['blocked'] = true; $res['blockID'] = $ipBlock->id; } foreach ($patternBlocks as $b) { if (empty($b->ipRange)) { continue; } $range = new wfUserIPRange($b->ipRange); if ($range->isIPInRange($res['IP'])) { $res['rangeBlocked'] = true; $res['ipRangeID'] = $b->id; break; } } $res['extReferer'] = false; if(isset( $res['referer'] ) && $res['referer']){ if(wfUtils::hasXSS($res['referer'] )){ //filtering out XSS $res['referer'] = ''; } } if( isset( $res['referer'] ) && $res['referer']){ $refURL = parse_url($res['referer']); if(is_array($refURL) && isset($refURL['host']) && $refURL['host']){ $refHost = strtolower(preg_replace('/^www\./i', '', $refURL['host'])); if($refHost != $ourHost){ $res['extReferer'] = true; //now extract search terms $q = false; if(preg_match('/(?:google|bing|alltheweb|aol|ask)\./i', $refURL['host'])){ $q = 'q'; } else if(stristr($refURL['host'], 'yahoo.')){ $q = 'p'; } else if(stristr($refURL['host'], 'baidu.')){ $q = 'wd'; } if($q){ $queryVars = array(); if( isset( $refURL['query'] ) ) { parse_str($refURL['query'], $queryVars); if(isset($queryVars[$q])){ $res['searchTerms'] = urlencode($queryVars[$q]); } } } } } if($res['extReferer']){ if ( isset( $referringPage ) && stristr( $referringPage['host'], 'google.' ) ) { parse_str( $referringPage['query'], $queryVars ); // echo $queryVars['q']; // This is the search term used } } } $res['browser'] = false; if($res['UA']){ $b = $browscap->getBrowser($res['UA']); if($b && $b['Parent'] != 'DefaultProperties'){ $res['browser'] = array( 'browser' => !empty($b['Browser']) ? $b['Browser'] : "", 'version' => !empty($b['Version']) ? $b['Version'] : "", 'platform' => !empty($b['Platform']) ? $b['Platform'] : "", 'isMobile' => !empty($b['isMobileDevice']) ? $b['isMobileDevice'] : "", 'isCrawler' => !empty($b['Crawler']) ? $b['Crawler'] : "", ); if (isset($res['jsRun']) && !wfConfig::liveTrafficEnabled() && !wfUtils::truthyToBoolean($res['jsRun'])) { $res['jsRun'] = !(isset($b['Crawler']) && $b['Crawler']) ? '1' : '0'; } } else { $IP = wfUtils::getIP(); $res['browser'] = array( 'isCrawler' => !wfLog::isHumanRequest($IP, $res['UA']) ? 'true' : '' ); } } if($res['userID']){ $ud = get_userdata($res['userID']); if($ud){ $res['user'] = array( 'editLink' => wfUtils::editUserLink($res['userID']), 'display_name' => $res['display_name'], 'ID' => $res['userID'] ); } } else { $res['user'] = false; } } } public function resolveIPs(&$results){ if(sizeof($results) < 1){ return; } $IPs = array(); foreach($results as &$res){ if($res['IP']){ //Can also be zero in case of non IP events $IPs[] = $res['IP']; } } $IPLocs = wfUtils::getIPsGeo($IPs); //Creates an array with IP as key and data as value foreach($results as &$res){ $ip_printable = wfUtils::inet_ntop($res['IP']); if(isset($IPLocs[$ip_printable])){ $res['loc'] = $IPLocs[$ip_printable]; } else { $res['loc'] = false; } } } public function logHitOK(){ if (!$this->canLogHit) { return false; } if (is_admin()) { return false; } //Don't log admin pageviews if (isset($_SERVER['HTTP_USER_AGENT'])) { if (preg_match('/WordPress\/' . $this->wp_version . '/i', $_SERVER['HTTP_USER_AGENT'])) { return false; } //Ignore regular requests generated by WP UA. } $userID = get_current_user_id(); if (!$userID) { $userID = $this->effectiveUserID; } if ($userID) { $user = new WP_User($userID); if ($user && $user->exists()) { if (wfConfig::get('liveTraf_ignorePublishers') && ($user->has_cap('publish_posts') || $user->has_cap('publish_pages'))) { return false; } if (wfConfig::get('liveTraf_ignoreUsers')) { $ignored = explode(',', wfConfig::get('liveTraf_ignoreUsers')); foreach ($ignored as $entry) { if($user->user_login == $entry){ return false; } } } } } if(wfConfig::get('liveTraf_ignoreIPs')){ $IPs = explode(',', wfConfig::get('liveTraf_ignoreIPs')); $IP = wfUtils::getIP(); foreach($IPs as $ignoreIP){ if($ignoreIP == $IP){ return false; } } } if( isset($_SERVER['HTTP_USER_AGENT']) && wfConfig::get('liveTraf_ignoreUA') ){ if($_SERVER['HTTP_USER_AGENT'] == wfConfig::get('liveTraf_ignoreUA')){ return false; } } return true; } private function getDB(){ if(! $this->db){ $this->db = new wfDB(); } return $this->db; } public function firewallBadIPs() { $IP = wfUtils::getIP(); if (wfBlock::isWhitelisted($IP)) { return; } //Range and UA pattern blocking $patternBlocks = wfBlock::patternBlocks(true); $userAgent = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $referrer = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; foreach ($patternBlocks as $b) { if ($b->matchRequest($IP, $userAgent, $referrer) !== wfBlock::MATCH_NONE) { $b->recordBlock(); wfActivityReport::logBlockedIP($IP, null, 'advanced'); $this->currentRequest->actionDescription = __('UA/Referrer/IP Range not allowed', 'wordfence'); $this->do503(3600, __("Advanced blocking in effect.", 'wordfence')); //exits } } // Country blocking $countryBlocks = wfBlock::countryBlocks(true); foreach ($countryBlocks as $b) { $match = $b->matchRequest($IP, false, false); if ($match === wfBlock::MATCH_COUNTRY_REDIR_BYPASS) { $bypassRedirDest = wfConfig::get('cbl_bypassRedirDest', ''); $this->initLogRequest(); $this->getCurrentRequest()->actionDescription = __('redirected to bypass URL', 'wordfence'); $this->getCurrentRequest()->statusCode = 302; $this->currentRequest->action = 'cbl:redirect'; $this->logHit(); wfUtils::doNotCache(); wp_redirect($bypassRedirDest, 302); exit(); } else if ($match === wfBlock::MATCH_COUNTRY_REDIR) { $b->recordBlock(); wfConfig::inc('totalCountryBlocked'); $this->initLogRequest(); $this->getCurrentRequest()->actionDescription = sprintf(/* translators: URL */ __('blocked access via country blocking and redirected to URL (%s)', 'wordfence'), wfConfig::get('cbl_redirURL')); $this->getCurrentRequest()->statusCode = 503; if (!$this->getCurrentRequest()->action) { $this->currentRequest->action = 'blocked:wordfence'; } $this->logHit(); wfActivityReport::logBlockedIP($IP, null, 'country'); wfUtils::doNotCache(); wp_redirect(wfConfig::get('cbl_redirURL'), 302); exit(); } else if ($match !== wfBlock::MATCH_NONE) { $b->recordBlock(); $this->currentRequest->actionDescription = __('blocked access via country blocking', 'wordfence'); wfConfig::inc('totalCountryBlocked'); wfActivityReport::logBlockedIP($IP, null, 'country'); $this->do503(3600, __('Access from your area has been temporarily limited for security reasons', 'wordfence')); } } //Specific IP blocks $ipBlock = wfBlock::findIPBlock($IP); if ($ipBlock !== false) { $ipBlock->recordBlock(); $secsToGo = max(0, $ipBlock->expiration - time()); if (wfConfig::get('other_WFNet') && self::isAuthRequest()) { //It's an auth request and this IP has been blocked $this->getCurrentRequest()->action = 'blocked:wfsnrepeat'; wordfence::wfsnReportBlockedAttempt($IP, 'login'); } $reason = $ipBlock->reason; if ($ipBlock->type == wfBlock::TYPE_IP_MANUAL || $ipBlock->type == wfBlock::TYPE_IP_AUTOMATIC_PERMANENT) { $reason = __('Manual block by administrator', 'wordfence'); } $this->do503($secsToGo, $reason); //exits } } private function takeBlockingAction($configVar, $reason) { if ($this->googleSafetyCheckOK()) { $action = wfConfig::get($configVar . '_action'); if (!$action) { return; } $IP = wfUtils::getIP(); $secsToGo = 0; if ($action == 'block') { //Rate limited - block temporarily $secsToGo = wfBlock::blockDuration(); wfBlock::createRateBlock($reason, $IP, $secsToGo); wfActivityReport::logBlockedIP($IP, null, 'throttle'); $this->tagRequestForBlock($reason); $alertCallback = array(new wfBlockAlert($IP, $reason, $secsToGo), 'send'); do_action('wordfence_security_event', 'block', array( 'ip' => $IP, 'reason' => $reason, 'duration' => $secsToGo, ), $alertCallback); wordfence::status(2, 'info', sprintf(/* translators: 1. IP address. 2. Description of firewall action. */ __('Blocking IP %1$s. %2$s', 'wordfence'), $IP, $reason)); } else if ($action == 'throttle') { //Rate limited - throttle $secsToGo = wfBlock::rateLimitThrottleDuration(); wfBlock::createRateThrottle($reason, $IP, $secsToGo); wfActivityReport::logBlockedIP($IP, null, 'throttle'); do_action('wordfence_security_event', 'throttle', array( 'ip' => $IP, 'reason' => $reason, 'duration' => $secsToGo, )); wordfence::status(2, 'info', sprintf(/* translators: 1. IP address. 2. Description of firewall action. */ __('Throttling IP %1$s. %2$s', 'wordfence'), $IP, $reason)); wfConfig::inc('totalIPsThrottled'); } $this->do503($secsToGo, $reason, false); } return; } /** * Test if the current request is for wp-login.php or xmlrpc.php * * @return boolean */ private static function isAuthRequest() { if ((strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false)) { return true; } return false; } public function do503($secsToGo, $reason, $sendEventToCentral = true){ $this->initLogRequest(); if ($sendEventToCentral) { do_action('wordfence_security_event', 'block', array( 'ip' => wfUtils::inet_ntop($this->currentRequest->IP), 'reason' => $this->currentRequest->actionDescription ? $this->currentRequest->actionDescription : $reason, 'duration' => $secsToGo, )); } $this->currentRequest->statusCode = 503; if (!$this->currentRequest->action) { $this->currentRequest->action = 'blocked:wordfence'; } if (!$this->currentRequest->actionDescription) { $this->currentRequest->actionDescription = "blocked: " . $reason; } $this->logHit(); wfConfig::inc('total503s'); wfUtils::doNotCache(); header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); if($secsToGo){ header('Retry-After: ' . $secsToGo); } $customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))); require_once(dirname(__FILE__) . '/wf503.php'); exit(); } private function redirect($URL){ wfUtils::doNotCache(); wp_redirect($URL, 302); exit(); } private function googleSafetyCheckOK(){ //returns true if OK to block. Returns false if we must not block. $cacheKey = md5( (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '') . ' ' . wfUtils::getIP()); //Cache so we can call this multiple times in one request if(! isset(self::$gbSafeCache[$cacheKey])){ $nb = wfConfig::get('neverBlockBG'); if($nb == 'treatAsOtherCrawlers'){ self::$gbSafeCache[$cacheKey] = true; //OK to block because we're treating google like everyone else } else if($nb == 'neverBlockUA' || $nb == 'neverBlockVerified'){ if(wfCrawl::isGoogleCrawler()){ //Check the UA using regex if($nb == 'neverBlockVerified'){ if(wfCrawl::isVerifiedGoogleCrawler(wfUtils::getIP())){ //UA check passed, now verify using PTR if configured to self::$gbSafeCache[$cacheKey] = false; //This is a verified Google crawler, so no we can't block it } else { self::$gbSafeCache[$cacheKey] = true; //This is a crawler claiming to be Google but it did not verify } } else { //neverBlockUA self::$gbSafeCache[$cacheKey] = false; //User configured us to only do a UA check and this claims to be google so don't block } } else { self::$gbSafeCache[$cacheKey] = true; //This isn't a Google UA, so it's OK to block } } else { //error_log("Wordfence error: neverBlockBG option is not set."); self::$gbSafeCache[$cacheKey] = false; //Oops the config option is not set. This should never happen because it's set on install. So we return false to indicate it's not OK to block just for safety. } } if(! isset(self::$gbSafeCache[$cacheKey])){ //error_log("Wordfence assertion fail in googleSafetyCheckOK: cached value is not set."); return false; //for safety } return self::$gbSafeCache[$cacheKey]; //return cached value } public function addStatus($level, $type, $msg){ //$msg = '[' . sprintf('%.2f', memory_get_usage(true) / (1024 * 1024)) . '] ' . $msg; $this->getDB()->queryWrite("insert into " . $this->statusTable . " (ctime, level, type, msg) values (%s, %d, '%s', '%s')", sprintf('%.6f', microtime(true)), $level, $type, $msg); } public function getStatusEvents($lastCtime){ if($lastCtime < 1){ $lastCtime = $this->getDB()->querySingle("select ctime from " . $this->statusTable . " order by ctime desc limit 1000,1"); if(! $lastCtime){ $lastCtime = 0; } } $results = $this->getDB()->querySelect("select ctime, level, type, msg from " . $this->statusTable . " where ctime > %f order by ctime asc", $lastCtime); $timeOffset = 3600 * get_option('gmt_offset'); foreach($results as &$rec){ //$rec['timeAgo'] = wfUtils::makeTimeAgo(time() - $rec['ctime']); $rec['date'] = date('M d H:i:s', $rec['ctime'] + $timeOffset); $rec['msg'] = wp_kses_data( (string) $rec['msg']); } return $results; } public function getSummaryEvents(){ $results = $this->getDB()->querySelect("select ctime, level, type, msg from " . $this->statusTable . " where level = 10 order by ctime desc limit 100"); $timeOffset = 3600 * get_option('gmt_offset'); foreach($results as &$rec){ $rec['date'] = date('M d H:i:s', $rec['ctime'] + $timeOffset); if(strpos($rec['msg'], 'SUM_PREP:') === 0){ break; } } return array_reverse($results); } /** * @return string */ public function getGooglePattern() { return $this->googlePattern; } } /** * */ class wfUserIPRange { /** * @var string|null */ private $ip_string; /** * @param string|null $ip_string */ public function __construct($ip_string = null) { $this->setIPString($ip_string); } /** * Check if the supplied IP address is within the user supplied range. * * @param string $ip * @return bool */ public function isIPInRange($ip) { $ip_string = $this->getIPString(); if (strpos($ip_string, '/') !== false) { //CIDR range -- 127.0.0.1/24 return wfUtils::subnetContainsIP($ip_string, $ip); } else if (strpos($ip_string, '[') !== false) //Bracketed range -- 127.0.0.[1-100] { // IPv4 range if (strpos($ip_string, '.') !== false && strpos($ip, '.') !== false) { // IPv4-mapped-IPv6 if (preg_match('/:ffff:([^:]+)$/i', $ip_string, $matches)) { $ip_string = $matches[1]; } if (preg_match('/:ffff:([^:]+)$/i', $ip, $matches)) { $ip = $matches[1]; } // Range check if (preg_match('/\[\d+\-\d+\]/', $ip_string)) { $IPparts = explode('.', $ip); $whiteParts = explode('.', $ip_string); $mismatch = false; if (count($whiteParts) != 4 || count($IPparts) != 4) { return false; } for ($i = 0; $i <= 3; $i++) { if (preg_match('/^\[(\d+)\-(\d+)\]$/', $whiteParts[$i], $m)) { if ($IPparts[$i] < $m[1] || $IPparts[$i] > $m[2]) { $mismatch = true; } } else if ($whiteParts[$i] != $IPparts[$i]) { $mismatch = true; } } if ($mismatch === false) { return true; // Is whitelisted because we did not get a mismatch } } else if ($ip_string == $ip) { return true; } // IPv6 range } else if (strpos($ip_string, ':') !== false && strpos($ip, ':') !== false) { $ip = strtolower(wfUtils::expandIPv6Address($ip)); $ip_string = strtolower(self::expandIPv6Range($ip_string)); if (preg_match('/\[[a-f0-9]+\-[a-f0-9]+\]/i', $ip_string)) { $IPparts = explode(':', $ip); $whiteParts = explode(':', $ip_string); $mismatch = false; if (count($whiteParts) != 8 || count($IPparts) != 8) { return false; } for ($i = 0; $i <= 7; $i++) { if (preg_match('/^\[([a-f0-9]+)\-([a-f0-9]+)\]$/i', $whiteParts[$i], $m)) { $ip_group = hexdec($IPparts[$i]); $range_group_from = hexdec($m[1]); $range_group_to = hexdec($m[2]); if ($ip_group < $range_group_from || $ip_group > $range_group_to) { $mismatch = true; break; } } else if ($whiteParts[$i] != $IPparts[$i]) { $mismatch = true; break; } } if ($mismatch === false) { return true; // Is whitelisted because we did not get a mismatch } } else if ($ip_string == $ip) { return true; } } } else if (strpos($ip_string, '-') !== false) { //Linear range -- 127.0.0.1 - 127.0.1.100 list($ip1, $ip2) = explode('-', $ip_string); $ip1N = wfUtils::inet_pton($ip1); $ip2N = wfUtils::inet_pton($ip2); $ipN = wfUtils::inet_pton($ip); return (strcmp($ip1N, $ipN) <= 0 && strcmp($ip2N, $ipN) >= 0); } else { //Treat as a literal IP $ip1 = @wfUtils::inet_pton($ip_string); $ip2 = @wfUtils::inet_pton($ip); if ($ip1 !== false && $ip1 == $ip2) { return true; } } return false; } /** * Expand a compressed printable range representation of an IPv6 address. * * @todo Hook up exceptions for better error handling. * @todo Allow IPv4 mapped IPv6 addresses (::ffff:192.168.1.1). * @param string $ip_range * @return string */ public static function expandIPv6Range($ip_range) { $colon_count = substr_count($ip_range, ':'); $dbl_colon_count = substr_count($ip_range, '::'); if ($dbl_colon_count > 1) { return false; } $dbl_colon_pos = strpos($ip_range, '::'); if ($dbl_colon_pos !== false) { $ip_range = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip_range) - 2) ? 9 : 8) - $colon_count) . ':', $ip_range); $ip_range = trim($ip_range, ':'); } $colon_count = substr_count($ip_range, ':'); if ($colon_count != 7) { return false; } $groups = explode(':', $ip_range); $expanded = ''; foreach ($groups as $group) { if (preg_match('/\[([a-f0-9]{1,4})\-([a-f0-9]{1,4})\]/i', $group, $matches)) { $expanded .= sprintf('[%s-%s]', str_pad(strtolower($matches[1]), 4, '0', STR_PAD_LEFT), str_pad(strtolower($matches[2]), 4, '0', STR_PAD_LEFT)) . ':'; } else if (preg_match('/[a-f0-9]{1,4}/i', $group)) { $expanded .= str_pad(strtolower($group), 4, '0', STR_PAD_LEFT) . ':'; } else { return false; } } return trim($expanded, ':'); } /** * @return bool */ public function isValidRange() { return $this->isValidCIDRRange() || $this->isValidBracketedRange() || $this->isValidLinearRange() || wfUtils::isValidIP($this->getIPString()); } public function isValidCIDRRange() { //e.g., 192.0.2.1/24 $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\/\.]/i', $ip_string)) { return false; } return wfUtils::isValidCIDRRange($ip_string); } public function isValidBracketedRange() { //e.g., 192.0.2.[1-10] $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\.\[\]\-]/i', $ip_string)) { return false; } if (strpos($ip_string, '.') !== false) { //IPv4 if (preg_match_all('/(\d+)/', $ip_string, $matches) > 0) { foreach ($matches[1] as $match) { $group = (int) $match; if ($group > 255 || $group < 0) { return false; } } } $group_regex = '([0-9]{1,3}|\[[0-9]{1,3}\-[0-9]{1,3}\])'; return preg_match('/^' . str_repeat("{$group_regex}\\.", 3) . $group_regex . '$/i', $ip_string) > 0; } //IPv6 if (strpos($ip_string, '::') !== false) { $ip_string = self::expandIPv6Range($ip_string); } if (!$ip_string) { return false; } $group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])'; return preg_match('/^' . str_repeat("$group_regex:", 7) . $group_regex . '$/i', $ip_string) > 0; } public function isValidLinearRange() { //e.g., 192.0.2.1-192.0.2.100 $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; } list($ip1, $ip2) = explode("-", $ip_string); $ip1N = @wfUtils::inet_pton($ip1); $ip2N = @wfUtils::inet_pton($ip2); if ($ip1N === false || !wfUtils::isValidIP($ip1) || $ip2N === false || !wfUtils::isValidIP($ip2)) { return false; } return strcmp($ip1N, $ip2N) <= 0; } public function isMixedRange() { //e.g., 192.0.2.1-2001:db8::ffff $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; } list($ip1, $ip2) = explode("-", $ip_string); $ipv4Count = 0; $ipv4Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0; $ipv4Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0; $ipv6Count = 0; $ipv6Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0; $ipv6Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0; if ($ipv4Count != 2 && $ipv6Count != 2) { return true; } return false; } protected function _sanitizeIPRange($ip_string) { $ip_string = preg_replace('/\s/', '', $ip_string); //Strip whitespace $ip_string = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $ip_string); //Non-hyphen dashes to hyphen $ip_string = strtolower($ip_string); if (preg_match('/^\d+-\d+$/', $ip_string)) { //v5 32 bit int style format list($start, $end) = explode('-', $ip_string); $start = long2ip($start); $end = long2ip($end); $ip_string = "{$start}-{$end}"; } return $ip_string; } /** * @return string|null */ public function getIPString() { return $this->ip_string; } /** * @param string|null $ip_string */ public function setIPString($ip_string) { $this->ip_string = $this->_sanitizeIPRange($ip_string); } } /** * The function of this class is to detect admin users created via direct access to the database (in other words, not * through WordPress). */ class wfAdminUserMonitor { protected $currentAdminList = array(); public function isEnabled() { $options = wfScanner::shared()->scanOptions(); $enabled = $options['scansEnabled_suspiciousAdminUsers']; if ($enabled && is_multisite()) { if (!function_exists('wp_is_large_network')) { require_once(ABSPATH . WPINC . '/ms-functions.php'); } $enabled = !wp_is_large_network('sites') && !wp_is_large_network('users'); } return $enabled; } /** * */ public function createInitialList() { $admins = $this->getCurrentAdmins(); $adminUserList = array(); foreach ($admins as $id => $user) { $adminUserList[$id] = 1; } wfConfig::set_ser('adminUserList', $adminUserList); } /** * @param int $userID */ public function grantSuperAdmin($userID = null) { if ($userID) { $this->addAdmin($userID); } } /** * @param int $userID */ public function revokeSuperAdmin($userID = null) { if ($userID) { $this->removeAdmin($userID); } } /** * @param int $ID * @param mixed $role * @param mixed $old_roles */ public function updateToUserRole($ID = null, $role = null, $old_roles = null) { $admins = $this->getLoggedAdmins(); if ($role !== 'administrator' && array_key_exists($ID, $admins)) { $this->removeAdmin($ID); } else if ($role === 'administrator') { $this->addAdmin($ID); } } /** * @return array|bool */ public function checkNewAdmins() { $loggedAdmins = $this->getLoggedAdmins(); $admins = $this->getCurrentAdmins(); $suspiciousAdmins = array(); foreach ($admins as $adminID => $v) { if (!array_key_exists($adminID, $loggedAdmins)) { $suspiciousAdmins[] = $adminID; } } return $suspiciousAdmins ? $suspiciousAdmins : false; } /** * Checks if the supplied user ID is suspicious. * * @param int $userID * @return bool */ public function isAdminUserLogged($userID) { $loggedAdmins = $this->getLoggedAdmins(); return array_key_exists($userID, $loggedAdmins); } /** * @param bool $forceReload * @return array */ public function getCurrentAdmins($forceReload = false) { if (empty($this->currentAdminList) || $forceReload) { require_once(ABSPATH . WPINC . '/user.php'); if (is_multisite()) { if (function_exists("get_sites")) { $sites = get_sites(array( 'network_id' => null, )); } else { $sites = wp_get_sites(array( 'network_id' => null, )); } } else { $sites = array(array( 'blog_id' => get_current_blog_id(), )); } // not very efficient, but the WordPress API doesn't provide a good way to do this. $this->currentAdminList = array(); foreach ($sites as $siteRow) { $siteRowArray = (array) $siteRow; $user_query = new WP_User_Query(array( 'blog_id' => $siteRowArray['blog_id'], 'role' => 'administrator', )); $users = $user_query->get_results(); if (is_array($users)) { /** @var WP_User $user */ foreach ($users as $user) { $this->currentAdminList[$user->ID] = $user; } } } // Add any super admins that aren't also admins on a network $superAdmins = get_super_admins(); foreach ($superAdmins as $userLogin) { $user = get_user_by('login', $userLogin); if ($user) { $this->currentAdminList[$user->ID] = $user; } } } return $this->currentAdminList; } public function getLoggedAdmins() { $loggedAdmins = wfConfig::get_ser('adminUserList', false); if (!is_array($loggedAdmins)) { $this->createInitialList(); $loggedAdmins = wfConfig::get_ser('adminUserList', false); } if (!is_array($loggedAdmins)) { $loggedAdmins = array(); } return $loggedAdmins; } /** * @param int $userID */ public function addAdmin($userID) { $loggedAdmins = $this->getLoggedAdmins(); if (!array_key_exists($userID, $loggedAdmins)) { $loggedAdmins[$userID] = 1; wfConfig::set_ser('adminUserList', $loggedAdmins); } } /** * @param int $userID */ public function removeAdmin($userID) { $loggedAdmins = $this->getLoggedAdmins(); if (array_key_exists($userID, $loggedAdmins) && !array_key_exists($userID, $this->getCurrentAdmins())) { unset($loggedAdmins[$userID]); wfConfig::set_ser('adminUserList', $loggedAdmins); } } } /** * Represents a request record * * @property int $id * @property float $attackLogTime * @property float $ctime * @property string $IP * @property bool $jsRun * @property int $statusCode * @property bool $isGoogle * @property int $userID * @property string $URL * @property string $referer * @property string $UA * @property string $action * @property string $actionDescription * @property string $actionData */ class wfRequestModel extends wfModel { private static $actionDataEncodedParams = array( 'paramKey', 'paramValue', 'path', ); /** * @param $actionData * @return mixed|string|void */ public static function serializeActionData($actionData) { if (is_array($actionData)) { foreach (self::$actionDataEncodedParams as $key) { if (array_key_exists($key, $actionData)) { $actionData[$key] = base64_encode($actionData[$key]); } } } return json_encode($actionData); } /** * @param $actionDataJSON * @return mixed|string|void */ public static function unserializeActionData($actionDataJSON) { $actionData = json_decode($actionDataJSON, true); if (is_array($actionData)) { foreach (self::$actionDataEncodedParams as $key) { if (array_key_exists($key, $actionData)) { $actionData[$key] = base64_decode($actionData[$key]); } } } return $actionData; } private $columns = array( 'id', 'attackLogTime', 'ctime', 'IP', 'jsRun', 'statusCode', 'isGoogle', 'userID', 'URL', 'referer', 'UA', 'action', 'actionDescription', 'actionData', ); public function getIDColumn() { return 'id'; } public function getTable() { return wfDB::networkTable('wfHits'); } public function hasColumn($column) { return in_array($column, $this->columns); } public function save() { $sapi = @php_sapi_name(); if ($sapi == "cli") { return false; } return parent::save(); } } class wfLiveTrafficQuery { protected $validParams = array( 'id' => 'h.id', 'ctime' => 'h.ctime', 'ip' => 'h.ip', 'jsrun' => 'h.jsrun', 'statuscode' => 'h.statuscode', 'isgoogle' => 'h.isgoogle', 'userid' => 'h.userid', 'url' => 'h.url', 'referer' => 'h.referer', 'ua' => 'h.ua', 'action' => 'h.action', 'actiondescription' => 'h.actiondescription', 'actiondata' => 'h.actiondata', // wfLogins 'user_login' => 'u.user_login', 'username' => 'l.username', ); /** @var wfLiveTrafficQueryFilterCollection */ private $filters = array(); /** @var wfLiveTrafficQueryGroupBy */ private $groupBy; /** * @var float|null */ private $startDate; /** * @var float|null */ private $endDate; /** * @var int */ private $limit; /** * @var int */ private $offset; private $tableName; /** @var wfLog */ private $wfLog; /** * wfLiveTrafficQuery constructor. * * @param wfLog $wfLog * @param wfLiveTrafficQueryFilterCollection $filters * @param wfLiveTrafficQueryGroupBy $groupBy * @param float $startDate * @param float $endDate * @param int $limit * @param int $offset */ public function __construct($wfLog, $filters = null, $groupBy = null, $startDate = null, $endDate = null, $limit = 20, $offset = 0) { $this->wfLog = $wfLog; $this->filters = $filters; $this->groupBy = $groupBy; $this->startDate = $startDate; $this->endDate = $endDate; $this->limit = $limit; $this->offset = $offset; } /** * @return array|null|object */ public function execute() { global $wpdb; $delayedHumanBotFiltering = false; $humanOnly = false; $sql = $this->buildQuery($delayedHumanBotFiltering, $humanOnly); $results = $wpdb->get_results($sql, ARRAY_A); if ($delayedHumanBotFiltering) { $browscap = wfBrowscap::shared(); foreach ($results as $index => $res) { if ($res['UA']) { $b = $browscap->getBrowser($res['UA']); $jsRun = wfUtils::truthyToBoolean($res['jsRun']); if ($b && $b['Parent'] != 'DefaultProperties') { $jsRun = wfUtils::truthyToBoolean($res['jsRun']); if (!wfConfig::liveTrafficEnabled() && !$jsRun) { $jsRun = !(isset($b['Crawler']) && $b['Crawler']); } } if (!$humanOnly && $jsRun || $humanOnly && !$jsRun) { unset($results[$index]); } } } } $this->getWFLog()->processGetHitsResults('', $results); $verifyCrawlers = false; if ($this->filters !== null && count($this->filters->getFilters()) > 0) { $filters = $this->filters->getFilters(); foreach ($filters as $f) { if (strtolower($f->getParam()) == "isgoogle") { $verifyCrawlers = true; break; } } } foreach ($results as $key => &$row) { if ($row['isGoogle'] && $verifyCrawlers) { if (!wfCrawl::isVerifiedGoogleCrawler($row['IP'], $row['UA'])) { unset($results[$key]); //foreach copies $results and iterates on the copy, so it is safe to mutate $results within the loop continue; } } $row['actionData'] = (array) json_decode($row['actionData'], true); } return array_values($results); } /** * @param mixed $delayedHumanBotFiltering Whether or not human/bot filtering should be applied in PHP rather than SQL. * @param mixed $humanOnly When using delayed filtering, whether to show only humans or only bots. * * @return string * @throws wfLiveTrafficQueryException */ public function buildQuery(&$delayedHumanBotFiltering, &$humanOnly) { global $wpdb; $filters = $this->getFilters(); $groupBy = $this->getGroupBy(); $startDate = $this->getStartDate(); $endDate = $this->getEndDate(); $limit = absint($this->getLimit()); $offset = absint($this->getOffset()); $wheres = array("h.action != 'logged:waf'", "h.action != 'scan:detectproxy'"); if ($startDate) { $wheres[] = $wpdb->prepare('h.ctime > %f', $startDate); } if ($endDate) { $wheres[] = $wpdb->prepare('h.ctime < %f', $endDate); } if ($filters instanceof wfLiveTrafficQueryFilterCollection) { if (!wfConfig::liveTrafficEnabled()) { $individualFilters = $filters->getFilters(); foreach ($individualFilters as $index => $f) { if ($f->getParam() == 'jsRun' && $delayedHumanBotFiltering !== null && $humanOnly !== null) { $humanOnly = wfUtils::truthyToBoolean($f->getValue()); if ($f->getOperator() == '!=') { $humanOnly = !$humanOnly; } $delayedHumanBotFiltering = true; unset($individualFilters[$index]); } } $filters->setFilters($individualFilters); } $filtersSQL = $filters->toSQL(); if ($filtersSQL) { $wheres[] = $filtersSQL; } } $orderBy = 'ORDER BY h.ctime DESC'; $select = ', l.username'; $groupBySQL = ''; if ($groupBy && $groupBy->validate()) { $groupBySQL = "GROUP BY {$groupBy->getParam()}"; $orderBy = 'ORDER BY hitCount DESC'; $select .= ', COUNT(h.id) as hitCount, MAX(h.ctime) AS lastHit, u.user_login AS username'; if ($groupBy->getParam() == 'user_login') { $wheres[] = 'user_login IS NOT NULL'; } else if ($groupBy->getParam() == 'action') { $wheres[] = '(statusCode = 403 OR statusCode = 503)'; } } $where = join(' AND ', $wheres); if ($where) { $where = 'WHERE ' . $where; } if (!$limit || $limit > 1000) { $limit = 20; } $limitSQL = $wpdb->prepare('LIMIT %d, %d', $offset, $limit); $table_wfLogins = wfDB::networkTable('wfLogins'); $sql = <<<SQL SELECT h.*, u.display_name{$select} FROM {$this->getTableName()} h LEFT JOIN {$wpdb->users} u on h.userID = u.ID LEFT JOIN {$table_wfLogins} l on h.id = l.hitID $where $groupBySQL $orderBy $limitSQL SQL; return $sql; } /** * @param $param * @return bool */ public function isValidParam($param) { return array_key_exists(strtolower($param), $this->validParams); } /** * @param $getParam * @return bool|string */ public function getColumnFromParam($getParam) { $getParam = strtolower($getParam); if (array_key_exists($getParam, $this->validParams)) { return $this->validParams[$getParam]; } return false; } /** * @return wfLiveTrafficQueryFilterCollection */ public function getFilters() { return $this->filters; } /** * @param wfLiveTrafficQueryFilterCollection $filters */ public function setFilters($filters) { $this->filters = $filters; } /** * @return float|null */ public function getStartDate() { return $this->startDate; } /** * @param float|null $startDate */ public function setStartDate($startDate) { $this->startDate = $startDate; } /** * @return float|null */ public function getEndDate() { return $this->endDate; } /** * @param float|null $endDate */ public function setEndDate($endDate) { $this->endDate = $endDate; } /** * @return wfLiveTrafficQueryGroupBy */ public function getGroupBy() { return $this->groupBy; } /** * @param wfLiveTrafficQueryGroupBy $groupBy */ public function setGroupBy($groupBy) { $this->groupBy = $groupBy; } /** * @return int */ public function getLimit() { return $this->limit; } /** * @param int $limit */ public function setLimit($limit) { $this->limit = $limit; } /** * @return int */ public function getOffset() { return $this->offset; } /** * @param int $offset */ public function setOffset($offset) { $this->offset = $offset; } /** * @return string */ public function getTableName() { if ($this->tableName === null) { $this->tableName = wfDB::networkTable('wfHits'); } return $this->tableName; } /** * @param string $tableName */ public function setTableName($tableName) { $this->tableName = $tableName; } /** * @return wfLog */ public function getWFLog() { return $this->wfLog; } /** * @param wfLog $wfLog */ public function setWFLog($wfLog) { $this->wfLog = $wfLog; } } class wfLiveTrafficQueryFilterCollection { private $filters = array(); /** * wfLiveTrafficQueryFilterCollection constructor. * * @param array $filters */ public function __construct($filters = array()) { $this->filters = $filters; } public function toSQL() { $params = array(); $sql = ''; $filters = $this->getFilters(); if ($filters) { /** @var wfLiveTrafficQueryFilter $filter */ foreach ($filters as $filter) { $params[$filter->getParam()][] = $filter; } } foreach ($params as $param => $filters) { // $sql .= '('; $filtersSQL = ''; foreach ($filters as $filter) { $filterSQL = $filter->toSQL(); if ($filterSQL) { $filtersSQL .= $filterSQL . ' OR '; } } if ($filtersSQL) { $sql .= '(' . substr($filtersSQL, 0, -4) . ') AND '; } } if ($sql) { $sql = substr($sql, 0, -5); } return $sql; } public function addFilter($filter) { $this->filters[] = $filter; } /** * @return array */ public function getFilters() { return $this->filters; } /** * @param array $filters */ public function setFilters($filters) { $this->filters = $filters; } } class wfLiveTrafficQueryFilter { private $param; private $operator; private $value; protected $validOperators = array( '=', '!=', 'contains', 'match', 'hregexp', 'hnotregexp', ); /** * @var wfLiveTrafficQuery */ private $query; /** * wfLiveTrafficQueryFilter constructor. * * @param wfLiveTrafficQuery $query * @param string $param * @param string $operator * @param string $value */ public function __construct($query, $param, $operator, $value) { $this->query = $query; $this->param = $param; $this->operator = $operator; $this->value = $value; } /** * @return string|void */ public function toSQL() { $sql = ''; if ($this->validate()) { /** @var wpdb $wpdb */ global $wpdb; $operator = $this->getOperator(); $param = $this->getQuery()->getColumnFromParam($this->getParam()); if (!$param) { return $sql; } $value = $this->getValue(); switch ($operator) { case 'contains': $like = addcslashes($value, '_%\\'); $sql = $wpdb->prepare("$param LIKE %s", "%$like%"); break; case 'match': $sql = $wpdb->prepare("$param LIKE %s", $value); break; case 'hregexp': $sql = $wpdb->prepare("HEX($param) REGEXP %s", $value); break; case 'hnotregexp': $sql = $wpdb->prepare("HEX($param) NOT REGEXP %s", $value); break; default: $sql = $wpdb->prepare("$param $operator %s", $value); break; } } return $sql; } /** * @return bool */ public function validate() { $valid = $this->isValidParam($this->getParam()) && $this->isValidOperator($this->getOperator()); if (defined('WP_DEBUG') && WP_DEBUG) { if (!$valid) { throw new wfLiveTrafficQueryException("Invalid param/operator [{$this->getParam()}]/[{$this->getOperator()}] passed to " . get_class($this)); } return true; } return $valid; } /** * @param string $param * @return bool */ public function isValidParam($param) { return $this->getQuery() && $this->getQuery()->isValidParam($param); } /** * @param string $operator * @return bool */ public function isValidOperator($operator) { return in_array($operator, $this->validOperators); } /** * @return mixed */ public function getParam() { return $this->param; } /** * @param mixed $param */ public function setParam($param) { $this->param = $param; } /** * @return mixed */ public function getOperator() { return $this->operator; } /** * @param mixed $operator */ public function setOperator($operator) { $this->operator = $operator; } /** * @return mixed */ public function getValue() { return $this->value; } /** * @param mixed $value */ public function setValue($value) { $this->value = $value; } /** * @return wfLiveTrafficQuery */ public function getQuery() { return $this->query; } /** * @param wfLiveTrafficQuery $query */ public function setQuery($query) { $this->query = $query; } } class wfLiveTrafficQueryGroupBy { private $param; /** * @var wfLiveTrafficQuery */ private $query; /** * wfLiveTrafficQueryGroupBy constructor. * * @param wfLiveTrafficQuery $query * @param string $param */ public function __construct($query, $param) { $this->query = $query; $this->param = $param; } /** * @return bool * @throws wfLiveTrafficQueryException */ public function validate() { $valid = $this->isValidParam($this->getParam()); if (defined('WP_DEBUG') && WP_DEBUG) { if (!$valid) { throw new wfLiveTrafficQueryException("Invalid param [{$this->getParam()}] passed to " . get_class($this)); } return true; } return $valid; } /** * @param string $param * @return bool */ public function isValidParam($param) { return $this->getQuery() && $this->getQuery()->isValidParam($param); } /** * @return wfLiveTrafficQuery */ public function getQuery() { return $this->query; } /** * @param wfLiveTrafficQuery $query */ public function setQuery($query) { $this->query = $query; } /** * @return mixed */ public function getParam() { return $this->param; } /** * @param mixed $param */ public function setParam($param) { $this->param = $param; } } class wfLiveTrafficQueryException extends Exception { } class wfErrorLogHandler { public static function getErrorLogs($deepSearch = false) { static $errorLogs = null; if ($errorLogs === null) { $searchPaths = array(ABSPATH, ABSPATH . 'wp-admin', ABSPATH . 'wp-content'); $homePath = get_home_path(); if (!in_array($homePath, $searchPaths)) { $searchPaths[] = $homePath; } $errorLogPath = ini_get('error_log'); if (!empty($errorLogPath) && !in_array($errorLogPath, $searchPaths)) { $searchPaths[] = $errorLogPath; } $errorLogs = array(); foreach ($searchPaths as $s) { $errorLogs = array_merge($errorLogs, self::_scanForLogs($s, $deepSearch)); } } return $errorLogs; } private static function _scanForLogs($path, $deepSearch = false) { static $processedFolders = array(); //Protection for endless loops caused by symlinks if (is_file($path)) { $file = basename($path); if (preg_match('#(?:^php_errorlog$|error_log(\-\d+)?$|\.log$)#i', $file)) { return array($path => is_readable($path)); } return array(); } $path = untrailingslashit($path); $contents = @scandir($path); if (!is_array($contents)) { return array(); } $processedFolders[$path] = true; $errorLogs = array(); foreach ($contents as $name) { if ($name == '.' || $name == '..') { continue; } $testPath = $path . DIRECTORY_SEPARATOR . $name; if (!array_key_exists($testPath, $processedFolders)) { if ((is_dir($testPath) && $deepSearch) || !is_dir($testPath)) { $errorLogs = array_merge($errorLogs, self::_scanForLogs($testPath, $deepSearch)); } } } return $errorLogs; } public static function outputErrorLog($path) { $errorLogs = self::getErrorLogs(); if (!isset($errorLogs[$path])) { //Only allow error logs we've identified global $wp_query; $wp_query->set_404(); status_header(404); nocache_headers(); $template = get_404_template(); if ($template && file_exists($template)) { include($template); } exit; } $fh = @fopen($path, 'r'); if (!$fh) { status_header(503); nocache_headers(); echo "503 Service Unavailable"; exit; } $headersOutputted = false; while (!feof($fh)) { $data = fread($fh, 1 * 1024 * 1024); //read 1 megs max per chunk if ($data === false) { //Handle the error where the file was reported readable but we can't actually read it status_header(503); nocache_headers(); echo "503 Service Unavailable"; exit; } if (!$headersOutputted) { header('Content-Type: text/plain'); header('Content-Disposition: attachment; filename="' . basename($path)); $headersOutputted = true; } echo $data; } exit; } }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wordfenceHash.php�������������������������������������������������������������������������������0000644�����������������00000117532�15233113245�0010613 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wordfenceClass.php'); class wordfenceHash { private $engine = false; private $db = false; private $startTime = false; //Begin serialized vars public $striplen = 0; public $totalFiles = 0; public $totalDirs = 0; public $totalData = 0; //To do a sanity check, don't use 'du' because it gets sparse files wrong and reports blocks used on disk. Use : find . -type f -ls | awk '{total += $7} END {print total}' public $stoppedOnFile = false; private $coreEnabled = false; private $pluginsEnabled = false; private $themesEnabled = false; private $malwareEnabled = false; private $coreUnknownEnabled = false; private $knownFiles = false; private $malwareData = ""; private $coreHashesData = ''; private $haveIssues = array(); private $status = array(); private $possibleMalware = array(); private $path = false; private $only = false; private $totalForks = 0; private $alertedOnUnknownWordPressVersion = false; private $foldersEntered = array(); private $foldersProcessed = array(); private $suspectedFiles = array(); private $indexed = false; private $indexSize = 0; private $currentIndex = 0; private $coalescingIssues = array(); /** * @param string $striplen * @param string $path * @param array $only * @param array $themes * @param array $plugins * @param wfScanEngine $engine * @throws Exception */ public function __construct($striplen, $path, $only, $themes, $plugins, $engine, $malwarePrefixesHash, $coreHashesHash, $scanMode) { $this->striplen = $striplen; $this->path = $path; $this->only = $only; $this->engine = $engine; $this->startTime = microtime(true); $options = $this->engine->scanController()->scanOptions(); if ($options['scansEnabled_core']) { $this->coreEnabled = true; } if ($options['scansEnabled_plugins']) { $this->pluginsEnabled = true; } if ($options['scansEnabled_themes']) { $this->themesEnabled = true; } if ($options['scansEnabled_malware']) { $this->malwareEnabled = true; } if ($options['scansEnabled_coreUnknown']) { $this->coreUnknownEnabled = true; } $this->db = new wfDB(); //Doing a delete for now. Later we can optimize this to only scan modified files. //$this->db->queryWrite("update " . wfDB::networkTable('wfFileMods') . " set oldMD5 = newMD5"); $this->db->truncate(wfDB::networkTable('wfFileMods')); $this->db->truncate(wfDB::networkTable('wfKnownFileList')); $this->db->truncate(wfDB::networkTable('wfPendingIssues')); $fetchCoreHashesStatus = wfIssues::statusStart(__("Fetching core, theme and plugin file signatures from Wordfence", 'wordfence')); try { $this->knownFiles = $this->engine->getKnownFilesLoader()->getKnownFiles(); } catch (wfScanKnownFilesException $e) { wfIssues::statusEndErr(); throw $e; } wfIssues::statusEnd($fetchCoreHashesStatus, wfIssues::STATUS_SUCCESS); if ($this->malwareEnabled) { $malwarePrefixStatus = wfIssues::statusStart(__("Fetching list of known malware files from Wordfence", 'wordfence')); $stored = wfConfig::get_ser('malwarePrefixes', array(), false); if (is_array($stored) && isset($stored['hash']) && $stored['hash'] == $malwarePrefixesHash && isset($stored['prefixes']) && wfWAFUtils::strlen($stored['prefixes']) % 4 == 0) { wordfence::status(4, 'info', __("Using cached malware prefixes", 'wordfence')); } else { wordfence::status(4, 'info', __("Fetching fresh malware prefixes", 'wordfence')); $malwareData = $engine->api->getStaticURL('/malwarePrefixes.bin'); if (!$malwareData) { wfIssues::statusEndErr(); throw new Exception(__("Could not fetch malware signatures from Wordfence servers.", 'wordfence')); } if (wfWAFUtils::strlen($malwareData) % 4 != 0) { wfIssues::statusEndErr(); throw new Exception(__("Malware data received from Wordfence servers was not valid.", 'wordfence')); } $stored = array('hash' => $malwarePrefixesHash, 'prefixes' => $malwareData); wfConfig::set_ser('malwarePrefixes', $stored, true, wfConfig::DONT_AUTOLOAD); } $this->malwareData = $stored['prefixes']; wfIssues::statusEnd($malwarePrefixStatus, wfIssues::STATUS_SUCCESS); } if ($this->coreUnknownEnabled) { $coreHashesStatus = wfIssues::statusStart(__("Fetching list of known core files from Wordfence", 'wordfence')); $stored = wfConfig::get_ser('coreHashes', array(), false); if (is_array($stored) && isset($stored['hash']) && $stored['hash'] == $coreHashesHash && isset($stored['hashes']) && wfWAFUtils::strlen($stored['hashes']) > 0 && wfWAFUtils::strlen($stored['hashes']) % 32 == 0) { wordfence::status(4, 'info', __("Using cached core hashes", 'wordfence')); } else { wordfence::status(4, 'info', __("Fetching fresh core hashes", 'wordfence')); $coreHashesData = $engine->api->getStaticURL('/coreHashes.bin'); if (!$coreHashesData) { wfIssues::statusEndErr(); throw new Exception(__("Could not fetch core hashes from Wordfence servers.", 'wordfence')); } if (wfWAFUtils::strlen($coreHashesData) % 32 != 0) { wfIssues::statusEndErr(); throw new Exception(__("Core hashes data received from Wordfence servers was not valid.", 'wordfence')); } $stored = array('hash' => $coreHashesHash, 'hashes' => $coreHashesData); wfConfig::set_ser('coreHashes', $stored, true, wfConfig::DONT_AUTOLOAD); } $this->coreHashesData = $stored['hashes']; wfIssues::statusEnd($coreHashesStatus, wfIssues::STATUS_SUCCESS); } if($this->path[strlen($this->path) - 1] != '/'){ $this->path .= '/'; } if(! is_readable($path)){ throw new Exception(sprintf(__("Could not read directory %s to do scan.", 'wordfence'), $this->path)); } $this->haveIssues = array( 'core' => wfIssues::STATUS_SECURE, 'coreUnknown' => wfIssues::STATUS_SECURE, 'themes' => wfIssues::STATUS_SECURE, 'plugins' => wfIssues::STATUS_SECURE, 'malware' => wfIssues::STATUS_SECURE, ); if($this->coreEnabled){ $this->status['core'] = wfIssues::statusStart(__("Comparing core WordPress files against originals in repository", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping core scan", 'wordfence')); } if($this->themesEnabled){ $this->status['themes'] = wfIssues::statusStart(__("Comparing open source themes against WordPress.org originals", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping theme scan", 'wordfence')); } if($this->pluginsEnabled){ $this->status['plugins'] = wfIssues::statusStart(__("Comparing plugins against WordPress.org originals", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping plugin scan", 'wordfence')); } if($this->malwareEnabled){ $this->status['malware'] = wfIssues::statusStart(__("Scanning for known malware files", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_MALWARE_SCAN); } else { wfIssues::statusDisabled(__("Skipping malware scan", 'wordfence')); } if($this->coreUnknownEnabled){ $this->status['coreUnknown'] = wfIssues::statusStart(__("Scanning for unknown files in wp-admin and wp-includes", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping unknown core file scan", 'wordfence')); } if ($options['scansEnabled_fileContents']) { $this->engine->scanController()->startStage(wfScanner::STAGE_MALWARE_SCAN); } if ($options['scansEnabled_fileContentsGSB']) { $this->engine->scanController()->startStage(wfScanner::STAGE_CONTENT_SAFETY); } if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion && empty($this->knownFiles['core'])) { require(ABSPATH . 'wp-includes/version.php'); /* @var string $wp_version */ $this->alertedOnUnknownWordPressVersion = true; $added = $this->engine->addIssue( 'coreUnknown', wfIssues::SEVERITY_MEDIUM, 'coreUnknown' . $wp_version, 'coreUnknown' . $wp_version, sprintf(/* translators: WordPress version. */ __('Unknown WordPress core version: %s', 'wordfence'), $wp_version), __("The core files scan will not be run because this version of WordPress is not currently indexed by Wordfence. This may be due to using a prerelease version or because the servers are still indexing a new release. If you are using an official WordPress release, this issue will automatically dismiss once the version is indexed and another scan is run.", 'wordfence'), array() ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_PROBLEM; } else if ($this->haveIssues['coreUnknown'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_IGNORED; } } } public function __sleep(){ return array('striplen', 'totalFiles', 'totalDirs', 'totalData', 'stoppedOnFile', 'coreEnabled', 'pluginsEnabled', 'themesEnabled', 'malwareEnabled', 'coreUnknownEnabled', 'knownFiles', 'haveIssues', 'status', 'possibleMalware', 'path', 'only', 'totalForks', 'alertedOnUnknownWordPressVersion', 'foldersProcessed', 'suspectedFiles', 'indexed', 'indexSize', 'currentIndex', 'foldersEntered', 'coalescingIssues'); } public function __wakeup(){ $this->db = new wfDB(); $this->startTime = microtime(true); $this->totalForks++; $stored = wfConfig::get_ser('malwarePrefixes', array(), false); if (!isset($stored['prefixes'])) { $stored['prefixes'] = ''; } $this->malwareData = $stored['prefixes']; $stored = wfConfig::get_ser('coreHashes', array(), false); if (!isset($stored['hashes'])) { $stored['hashes'] = ''; } $this->coreHashesData = $stored['hashes']; } public function getSuspectedFiles() { return array_keys($this->suspectedFiles); } public function run($engine){ //base path and 'only' is a list of files and dirs in the base that are the only ones that should be processed. Everything else in base is ignored. If only is empty then everything is processed. if($this->totalForks > 1000){ throw new Exception(sprintf(/* translators: File path. */ __("Wordfence file scanner detected a possible infinite loop. Exiting on file: %s", 'wordfence'), $this->stoppedOnFile)); } $this->engine = $engine; wordfence::status(4, 'info', __("Indexing files for scanning", 'wordfence')); if (!$this->indexed) { $start = microtime(true); $indexedFiles = array(); if (count($this->only) > 0) { $files = $this->only; //These are absolute paths } else { //This code path generally should not get hit $rawFiles = scandir($this->path); $files = array(); foreach ($rawFiles as $file) { if ($file == '.' || $file == '..') { continue; } $fullFile = rtrim($this->path, '/') . '/' . $file; $files[] = $fullFile; } } foreach ($files as $file) { $this->_dirIndex($file, $indexedFiles); } $this->_serviceIndexQueue($indexedFiles, true); $this->indexed = true; unset($this->foldersEntered); $this->foldersEntered = array(); unset($this->foldersProcessed); $this->foldersProcessed = array(); $end = microtime(true); wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("Index time: %s", 'wordfence'), ($end - $start))); } $this->_checkForTimeout(''); wordfence::status(4, 'info', __("Beginning file hashing", 'wordfence')); while ($file = $this->_nextFile()) { $this->processFile($file); $this->_checkForTimeout($file); } wordfence::status(4, 'info', __("Processing pending issues", 'wordfence')); $this->_processPendingIssues(); wordfence::status(2, 'info', sprintf(/* translators: 1. Number of files. 2. Data in bytes. */ __('Analyzed %1$d files containing %2$s of data.', 'wordfence'), $this->totalFiles, wfUtils::formatBytes($this->totalData))); if($this->coreEnabled){ wfIssues::statusEnd($this->status['core'], $this->haveIssues['core']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['core']); } if($this->themesEnabled){ wfIssues::statusEnd($this->status['themes'], $this->haveIssues['themes']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['themes']); } if($this->pluginsEnabled){ wfIssues::statusEnd($this->status['plugins'], $this->haveIssues['plugins']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['plugins']); } if($this->coreUnknownEnabled){ wfIssues::statusEnd($this->status['coreUnknown'], $this->haveIssues['coreUnknown']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['coreUnknown']); } if(sizeof($this->possibleMalware) > 0){ $malwareResp = $engine->api->binCall('check_possible_malware', json_encode($this->possibleMalware)); if($malwareResp['code'] != 200){ wfIssues::statusEndErr(); throw new Exception(__("Invalid response from Wordfence API during check_possible_malware", 'wordfence')); } $malwareList = json_decode($malwareResp['data'], true); if(is_array($malwareList) && sizeof($malwareList) > 0){ for($i = 0; $i < sizeof($malwareList); $i++){ $file = $malwareList[$i][0]; $md5 = $malwareList[$i][1]; $name = $malwareList[$i][2]; $added = $this->engine->addIssue( 'file', wfIssues::SEVERITY_CRITICAL, $this->path . $file, $md5, sprintf(/* translators: File path. */ __('This file is suspected malware: %s', 'wordfence'), $file), sprintf(/* translators: Malware name/title. */ __("This file's signature matches a known malware file. The title of the malware is '%s'. Immediately inspect this file using the 'View' option below and consider deleting it from your server.", 'wordfence'), $name), array( 'file' => $file, 'cType' => 'unknown', 'canDiff' => false, 'canFix' => false, 'canDelete' => true ) ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['malware'] = wfIssues::STATUS_PROBLEM; } else if ($this->haveIssues['malware'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['malware'] = wfIssues::STATUS_IGNORED; } } } } if($this->malwareEnabled){ wfIssues::statusEnd($this->status['malware'], $this->haveIssues['malware']); $this->engine->scanController()->completeStage(wfScanner::STAGE_MALWARE_SCAN, $this->haveIssues['malware']); } unset($this->knownFiles); $this->knownFiles = false; } private function _dirIndex($path, &$indexedFiles) { if (substr($path, -3, 3) == '/..' || substr($path, -2, 2) == '/.') { return; } if (!is_readable($path)) { return; } //Applies to files and dirs if (!$this->_shouldProcessPath($path)) { return; } if (is_dir($path)) { $realPath = realpath($path); if (!$this->stoppedOnFile && isset($this->foldersEntered[$realPath])) { //Not resuming and already entered this path return; } $this->foldersEntered[$realPath] = 1; $this->totalDirs++; if ($path[strlen($path) - 1] != '/') { $path .= '/'; } $cont = scandir($path); for ($i = 0; $i < sizeof($cont); $i++) { if ($cont[$i] == '.' || $cont[$i] == '..') { continue; } $file = $path . $cont[$i]; if (is_file($file)) { $relativeFile = substr($file, $this->striplen); if ($this->stoppedOnFile && $relativeFile != $this->stoppedOnFile) { continue; } if (preg_match('/\.suspected$/i', $relativeFile)) { //Already iterating over all files in the search areas so generate this list here wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Found .suspected file: %s", 'wordfence'), $relativeFile)); $this->suspectedFiles[$relativeFile] = 1; } $this->_checkForTimeout($file, $indexedFiles); if ($this->_shouldHashFile($file)) { $resolvedFile = realpath($file); if ($resolvedFile) { $indexedFiles[] = substr($resolvedFile, $this->striplen); } } else { wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping unneeded hash: %s", 'wordfence'), $file)); } $this->_serviceIndexQueue($indexedFiles); } else if (is_dir($file)) { $this->_dirIndex($file, $indexedFiles); } } $this->foldersProcessed[$realPath] = 1; unset($this->foldersEntered[$realPath]); } else { if (is_file($path)) { $relativeFile = substr($path, $this->striplen); if ($this->stoppedOnFile && $relativeFile != $this->stoppedOnFile) { return; } if (preg_match('/\.suspected$/i', $relativeFile)) { //Already iterating over all files in the search areas so generate this list here wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Found .suspected file: %s", 'wordfence'), $relativeFile)); $this->suspectedFiles[$relativeFile] = 1; } $this->_checkForTimeout($path, $indexedFiles); if ($this->_shouldHashFile($path)) { $indexedFiles[] = substr($path, $this->striplen); } else { wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping unneeded hash: %s", 'wordfence'), $path)); } $this->_serviceIndexQueue($indexedFiles); } } } private function _serviceIndexQueue(&$indexedFiles, $final = false) { $payload = array(); if (count($indexedFiles) > 500) { $payload = array_splice($indexedFiles, 0, 500); } else if ($final) { $payload = $indexedFiles; $indexedFiles = array(); } $payload = array_filter($payload); //Strip empty strings -- these are symlinks to files outside of the site root (ABSPATH) if (count($payload) > 0) { global $wpdb; $table_wfKnownFileList = wfDB::networkTable('wfKnownFileList'); $query = substr("INSERT INTO {$table_wfKnownFileList} (path) VALUES " . str_repeat("('%s'), ", count($payload)), 0, -2); $wpdb->query($wpdb->prepare($query, $payload)); $this->indexSize += count($payload); wordfence::status(2, 'info', sprintf(/* translators: Number of files. */ __("%d files indexed", 'wordfence'), $this->indexSize)); } } private function _nextFile($advanceCursor = true) { static $files = array(); if (count($files) == 0) { global $wpdb; $table_wfKnownFileList = wfDB::networkTable('wfKnownFileList'); $files = $wpdb->get_col($wpdb->prepare("SELECT path FROM {$table_wfKnownFileList} WHERE id > %d ORDER BY id ASC LIMIT 500", $this->currentIndex)); } $file = null; if ($advanceCursor) { $file = array_shift($files); $this->currentIndex++; } else if (count($files) > 0) { $file = $files[0]; } if ($file === null) { return null; } return ABSPATH . $file; } private function _checkForTimeout($path, $indexQueue = false) { $file = substr($path, $this->striplen); if ((!$this->stoppedOnFile) && $this->engine->shouldFork()) { //max X seconds but don't allow fork if we're looking for the file we stopped on. Search mode is VERY fast. if ($indexQueue !== false) { $this->_serviceIndexQueue($indexQueue, true); $this->stoppedOnFile = $file; wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Forking during indexing: %s", 'wordfence'), $path)); } else { wordfence::status(4, 'info', sprintf(/* translators: PHP max execution time. */ __("Calling fork() from wordfenceHash with maxExecTime: %s", 'wordfence'), $this->engine->maxExecTime)); } $this->engine->fork(); //exits } if ($this->stoppedOnFile && $file != $this->stoppedOnFile && $indexQueue !== false) { return; } else if ($this->stoppedOnFile && $file == $this->stoppedOnFile) { $this->stoppedOnFile = false; //Continue indexing } } private function _shouldProcessPath($path) { $file = substr($path, $this->striplen); $excludePatterns = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_USER); if ($excludePatterns) { foreach ($excludePatterns as $pattern) { if (preg_match($pattern, $file)) { return false; } } } $realPath = realpath($path); if ($realPath === '/') { return false; } if (isset($this->foldersProcessed[$realPath])) { return false; } return true; } private function processFile($realFile) { $file = substr($realFile, $this->striplen); if (wfUtils::fileTooBig($realFile)) { wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping file larger than max size: %s", 'wordfence'), $realFile)); return; } if (function_exists('memory_get_usage')) { wordfence::status(4, 'info', sprintf(/* translators: 1. File path. 2. Memory in bytes. */ __('Scanning: %1$s (Mem:%2$s)', 'wordfence'), $realFile, sprintf('%.1fM', memory_get_usage(true) / (1024 * 1024)))); } else { wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Scanning: %s", 'wordfence'), $realFile)); } wfUtils::beginProcessingFile($file); $wfHash = self::hashFile($realFile); $this->engine->scanController()->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_FILES); if ($wfHash) { $md5 = strtoupper($wfHash[0]); $shac = strtoupper($wfHash[1]); $knownFile = 0; if($this->malwareEnabled && $this->isMalwarePrefix($md5)){ $this->possibleMalware[] = array($file, $md5); } $knownFileExclude = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_KNOWN_FILES); $allowKnownFileScan = true; if ($knownFileExclude) { foreach ($knownFileExclude as $pattern) { if (preg_match($pattern, $realFile)) { $allowKnownFileScan = false; } } } if ($allowKnownFileScan) { if (isset($this->knownFiles['core'][$file])) { if (strtoupper($this->knownFiles['core'][$file]) == $shac) { $knownFile = 1; } else { if ($this->coreEnabled) { $localFile = ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $file); $fileContents = @file_get_contents($localFile); if ($fileContents && (!preg_match('/<\?' . 'php[\r\n\s\t]*\/\/[\r\n\s\t]*Silence is golden\.[\r\n\s\t]*(?:\?>)?[\r\n\s\t]*$/s', $fileContents))) { $this->engine->addPendingIssue( 'knownfile', wfIssues::SEVERITY_HIGH, 'coreModified' . $file, 'coreModified' . $file . $md5, sprintf(/* translators: File path. */ __('WordPress core file modified: %s', 'wordfence'), $file), __("This WordPress core file has been modified and differs from the original file distributed with this version of WordPress.", 'wordfence'), array( 'file' => $file, 'cType' => 'core', 'canDiff' => true, 'canFix' => true, 'canDelete' => false, 'haveIssues' => 'core' ) ); } } } } else if (isset($this->knownFiles['plugins'][$file])) { if (in_array($shac, $this->knownFiles['plugins'][$file])) { $knownFile = 1; } else { if ($this->pluginsEnabled) { $options = $this->engine->scanController()->scanOptions(); $shouldGenerateIssue = true; if (!$options['scansEnabled_highSense'] && preg_match('~/readme\.(?:txt|md)$~i', $file)) { //Don't generate issues for changed readme files unless high sensitivity is on $shouldGenerateIssue = false; } if ($shouldGenerateIssue) { $itemName = $this->knownFiles['plugins'][$file][0]; $itemVersion = $this->knownFiles['plugins'][$file][1]; $cKey = $this->knownFiles['plugins'][$file][2]; $this->engine->addPendingIssue( 'knownfile', wfIssues::SEVERITY_MEDIUM, 'modifiedplugin' . $file, 'modifiedplugin' . $file . $md5, sprintf(/* translators: File path. */ __('Modified plugin file: %s', 'wordfence'), $file), sprintf( /* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */ __('This file belongs to plugin "%1$s" version "%2$s" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don\'t manage their code correctly. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), $itemName, $itemVersion, wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_PLUGIN) ), array( 'file' => $file, 'cType' => 'plugin', 'canDiff' => true, 'canFix' => true, 'canDelete' => false, 'cName' => $itemName, 'cVersion' => $itemVersion, 'cKey' => $cKey, 'haveIssues' => 'plugins' ) ); } } } } else if (isset($this->knownFiles['themes'][$file])) { if (in_array($shac, $this->knownFiles['themes'][$file])) { $knownFile = 1; } else { if ($this->themesEnabled) { $options = $this->engine->scanController()->scanOptions(); $shouldGenerateIssue = true; if (!$options['scansEnabled_highSense'] && preg_match('~/readme\.(?:txt|md)$~i', $file)) { //Don't generate issues for changed readme files unless high sensitivity is on $shouldGenerateIssue = false; } if ($shouldGenerateIssue) { $itemName = $this->knownFiles['themes'][$file][0]; $itemVersion = $this->knownFiles['themes'][$file][1]; $cKey = $this->knownFiles['themes'][$file][2]; $this->engine->addPendingIssue( 'knownfile', wfIssues::SEVERITY_MEDIUM, 'modifiedtheme' . $file, 'modifiedtheme' . $file . $md5, sprintf(/* translators: File path. */ __('Modified theme file: %s', 'wordfence'), $file), sprintf( /* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */ __('This file belongs to theme "%1$s" version "%2$s" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), $itemName, $itemVersion, wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_THEME) ), array( 'file' => $file, 'cType' => 'theme', 'canDiff' => true, 'canFix' => true, 'canDelete' => false, 'cName' => $itemName, 'cVersion' => $itemVersion, 'cKey' => $cKey, 'haveIssues' => 'themes' ) ); } } } } else if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion) { //Check for unknown files in system directories $restrictedWordPressFolders = array(ABSPATH . 'wp-admin/', ABSPATH . WPINC . '/'); $added = false; foreach ($restrictedWordPressFolders as $path) { if (strpos($realFile, $path) === 0) { if ($this->isPreviousCoreFile($shac)) { $added = $this->engine->addIssue( 'knownfile', wfIssues::SEVERITY_LOW, 'coreUnknown' . $file, 'coreUnknown' . $file . $md5, sprintf(/* translators: File path. */ __('Old WordPress core file not removed during update: %s', 'wordfence'), $file), __('This file is in a WordPress core location but is from an older version of WordPress and not used with your current version. Hosting or permissions issues can cause these files to get left behind when WordPress is updated and they should be removed if possible.', 'wordfence'), array( 'file' => $file, 'cType' => 'core', 'canDiff' => false, 'canFix' => false, 'canDelete' => true, ) ); } else if (preg_match('#/php\.ini$#', $file)) { $this->engine->addPendingIssue( 'knownfile', wfIssues::SEVERITY_HIGH, 'coreUnknown' . $file, 'coreUnknown' . $file . $md5, sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $file), __('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker.', 'wordfence'), array( 'file' => $file, 'cType' => 'core', 'canDiff' => false, 'canFix' => false, 'canDelete' => true, 'coalesce' => 'php.ini', 'learnMore' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE), 'haveIssues' => 'coreUnknown', ) ); } else { $added = $this->engine->addIssue( 'knownfile', wfIssues::SEVERITY_HIGH, 'coreUnknown' . $file, 'coreUnknown' . $file . $md5, sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $file), sprintf(/* translators: Support URL. */ __('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE)), array( 'file' => $file, 'cType' => 'core', 'canDiff' => false, 'canFix' => false, 'canDelete' => true, ) ); } } } if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_PROBLEM; } else if ($this->haveIssues['coreUnknown'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_IGNORED; } } } // knownFile means that the file is both part of core or a known plugin or theme AND that we recognize the file's hash. // we could split this into files whose path we recognize and file's whose path we recognize AND who have a valid sig. // But because we want to scan files whose sig we don't recognize, regardless of known path or not, we only need one "knownFile" field. $fileModsTable = wfDB::networkTable('wfFileMods'); $this->db->queryWrite("INSERT INTO {$fileModsTable} (filename, filenameMD5, knownFile, oldMD5, newMD5, SHAC) VALUES ('%s', UNHEX(MD5('%s')), %d, '', UNHEX('%s'), UNHEX('%s')) ON DUPLICATE KEY UPDATE newMD5 = UNHEX('%s'), SHAC = UNHEX('%s'), knownFile = %d", $file, $file, $knownFile, $md5, $shac, $md5, $shac, $knownFile); $this->totalFiles++; $this->totalData += @filesize($realFile); //We already checked if file overflows int in the fileTooBig routine above if($this->totalFiles % 100 === 0){ wordfence::status(2, 'info', sprintf( /* translators: 1. Number of files. 2. Data in bytes. */ __('Analyzed %1$d files containing %2$s of data so far', 'wordfence'), $this->totalFiles, wfUtils::formatBytes($this->totalData) )); } } else { //wordfence::status(2, 'error', "Could not gen hash for file (probably because we don't have permission to access the file): $realFile"); } wfUtils::endProcessingFile(); } private function _processPendingIssues() { $fileModsTable = wfDB::networkTable('wfFileMods'); $count = $this->engine->getPendingIssueCount(); $offset = 0; while ($offset < $count) { $issues = $this->engine->getPendingIssues($offset); if (count($issues) == 0) { break; } //Do a bulk check of is_safe_file $hashesToCheck = array(); foreach ($issues as &$i) { $shac = $this->db->querySingle("SELECT HEX(SHAC) FROM {$fileModsTable} WHERE filename = '%s' AND isSafeFile = '?'", $i['data']['file']); $shac = strtoupper($shac); $i['shac'] = null; if ($shac !== null) { $shac = strtoupper($shac); $i['shac'] = $shac; $hashesToCheck[] = $shac; } } $safeFiles = array(); if (count($hashesToCheck) > 0) { $safeFiles = $this->isSafeFile($hashesToCheck); } //Migrate non-safe file issues to official issues and begin coalescing tagged issues foreach ($issues as &$i) { if (!in_array($i['shac'], $safeFiles)) { $haveIssuesType = $i['data']['haveIssues']; if (isset($i['data']['coalesce'])) { $key = $i['data']['coalesce']; if (!isset($this->coalescingIssues[$key])) { $this->coalescingIssues[$key] = array('count' => 0, 'issue' => $i); } $this->coalescingIssues[$key]['count']++; } else { $added = $this->engine->addIssue( $i['type'], $i['severity'], $i['ignoreP'], $i['ignoreC'], $i['shortMsg'], $i['longMsg'], $i['data'], true //Prevent ignoreP and ignoreC from being hashed again ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_PROBLEM; } else if ($this->haveIssues[$haveIssuesType] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_IGNORED; } } $this->db->queryWrite("UPDATE {$fileModsTable} SET isSafeFile = '0' WHERE SHAC = UNHEX('%s')", $i['shac']); } else { $this->db->queryWrite("UPDATE {$fileModsTable} SET isSafeFile = '1' WHERE SHAC = UNHEX('%s')", $i['shac']); } } $offset += count($issues); $this->engine->checkForKill(); } //Insert the coalesced issues (currently just multiple php.ini in system directories) foreach ($this->coalescingIssues as $c) { $count = $c['count']; $i = $c['issue']; $haveIssuesType = $i['data']['haveIssues']; $added = $this->engine->addIssue( $i['type'], $i['severity'], $i['ignoreP'], $i['ignoreC'], $i['shortMsg'] . ($count > 1 ? ' ' . sprintf(/* translators: Number of scan results. */ __('(+ %d more)', 'wordfence'), $count - 1) : ''), $i['longMsg'] . ($count > 1 ? ' ' . ($count > 2 ? sprintf(/* translators: Number of files. */ __('%d more similar files were found.', 'wordfence'), $count - 1) : __('1 more similar file was found.', 'wordfence')) : '') . (isset($i['data']['learnMore']) ? ' ' . sprintf(__('<a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), esc_attr($i['data']['learnMore'])) : ''), $i['data'], true //Prevent ignoreP and ignoreC from being hashed again ); if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_PROBLEM; } else if ($this->haveIssues[$haveIssuesType] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_IGNORED; } } } public static function hashFile($file) { $fp = @fopen($file, "rb"); if (!$fp) { return false; } $md5Context = hash_init('md5'); $sha256Context = hash_init('sha256'); while (!feof($fp)) { $data = fread($fp, 65536); if ($data === false) { return false; } hash_update($md5Context, $data); hash_update($sha256Context, str_replace(array("\n","\r","\t"," "),"", $data)); } $md5 = hash_final($md5Context, false); $shac = hash_final($sha256Context, false); return array($md5, $shac); } private function _shouldHashFile($fullPath) { $file = substr($fullPath, $this->striplen); //Core File, return true if ((isset($this->knownFiles['core']) && isset($this->knownFiles['core'][$file])) || (isset($this->knownFiles['plugins']) && isset($this->knownFiles['plugins'][$file])) || (isset($this->knownFiles['themes']) && isset($this->knownFiles['themes'][$file]))) { return true; } //Excluded file, return false $excludePatterns = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_USER | wordfenceScanner::EXCLUSION_PATTERNS_MALWARE); if ($excludePatterns) { foreach ($excludePatterns as $pattern) { if (preg_match($pattern, $file)) { return false; } } } //Unknown file in a core location if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion) { $restrictedWordPressFolders = array(ABSPATH . 'wp-admin/', ABSPATH . WPINC . '/'); foreach ($restrictedWordPressFolders as $path) { if (strpos($fullPath, $path) === 0) { return true; } } } //Determine treatment $fileExt = ''; if (preg_match('/\.([a-zA-Z\d\-]{1,7})$/', $file, $matches)) { $fileExt = strtolower($matches[1]); } $isPHP = false; if (preg_match('/\.(?:php(?:\d+)?|phtml)(\.|$)/i', $file)) { $isPHP = true; } $isHTML = false; if (preg_match('/\.(?:html?)(\.|$)/i', $file)) { $isHTML = true; } $isJS = false; if (preg_match('/\.(?:js|svg)(\.|$)/i', $file)) { $isJS = true; } $options = $this->engine->scanController()->scanOptions(); //If scan images is disabled, only allow .js through if (!$isPHP && preg_match('/^(?:jpg|jpeg|mp3|avi|m4v|mov|mp4|gif|png|tiff?|svg|sql|js|tbz2?|bz2?|xz|zip|tgz|gz|tar|log|err\d+)$/', $fileExt)) { if (!$options['scansEnabled_scanImages'] && !$isJS) { return false; } } //If high sensitivity is disabled, don't allow .sql if (strtolower($fileExt) == 'sql') { if (!$options['scansEnabled_highSense']) { return false; } } //Treating as binary, return true $treatAsBinary = ($isPHP || $isHTML || $options['scansEnabled_scanImages']); if ($treatAsBinary) { return true; } //Will be malware scanned, return true if ($isJS) { return true; } return false; } private function isMalwarePrefix($hexMD5){ $hasPrefix = $this->_binaryListContains($this->malwareData, wfUtils::hex2bin($hexMD5), 4); return $hasPrefix !== false; } private function isPreviousCoreFile($hexContentsSHAC) { $hasPrefix = $this->_binaryListContains($this->coreHashesData, wfUtils::hex2bin($hexContentsSHAC), 32); return $hasPrefix !== false; } /** * @param $binaryList The binary list to search, sorted as a binary string. * @param $needle The binary needle to search for. * @param int $size The byte size of each item in the list. * @return bool|int false if not found, otherwise the index in the list */ private function _binaryListContains($binaryList, $needle, $size /* bytes */) { $p = substr($needle, 0, $size); $count = ceil(wfWAFUtils::strlen($binaryList) / $size); $low = 0; $high = $count - 1; while ($low <= $high) { $mid = (int) (($high + $low) / 2); $val = wfWAFUtils::substr($binaryList, $mid * $size, $size); $cmp = strcmp($val, $p); if ($cmp < 0) { $low = $mid + 1; } else if ($cmp > 0) { $high = $mid - 1; } else { return $mid; } } return false; } /** * Queries the is_safe_file endpoint. If provided an array, it does a bulk check and returns an array containing the * hashes that were marked as safe. If provided a string, it returns a boolean to indicate the safeness of the file. * * @param string|array $shac * @return array|bool */ private function isSafeFile($shac) { if (is_array($shac)) { $result = $this->engine->api->call('is_safe_file', array(), array('multipleSHAC' => json_encode($shac))); if (isset($result['isSafe'])) { return $result['isSafe']; } return array(); } $result = $this->engine->api->call('is_safe_file', array(), array('shac' => strtoupper($shac))); if(isset($result['isSafe']) && $result['isSafe'] == 1){ return true; } return false; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfCache.php�������������������������������������������������������������������������������������0000644�����������������00000014170�15233113245�0007365 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php class wfCache { private static $cacheStats = array(); private static $cacheClearedThisRequest = false; private static $lastRecursiveDeleteError = false; public static function removeCaching() { $cacheType = wfConfig::get('cacheType', false); if ($cacheType === 'disabled') { return; } if ($cacheType == 'falcon') { self::addHtaccessCode('remove'); self::updateBlockedIPs('remove'); } wfConfig::set('cacheType', 'disabled'); $cacheDir = WP_CONTENT_DIR . '/wfcache/'; if (file_exists($cacheDir . '.htaccess')) { unlink($cacheDir . '.htaccess'); } self::clearPageCacheSafe(); } public static function clearPageCacheSafe(){ if(self::$cacheClearedThisRequest){ return; } self::$cacheClearedThisRequest = true; self::clearPageCache(); } public static function clearPageCache(){ //If a clear is in progress this does nothing. self::$cacheStats = array( 'dirsDeleted' => 0, 'filesDeleted' => 0, 'totalData' => 0, 'totalErrors' => 0, 'error' => '', ); $cacheDir = WP_CONTENT_DIR . '/wfcache/'; if (!file_exists($cacheDir)) { return self::$cacheStats; } $cacheClearLock = WP_CONTENT_DIR . '/wfcache/clear.lock'; if(! is_file($cacheClearLock)){ if(! touch($cacheClearLock)){ self::$cacheStats['error'] = "Could not create a lock file $cacheClearLock to clear the cache."; self::$cacheStats['totalErrors']++; return self::$cacheStats; } } $fp = fopen($cacheClearLock, 'w'); if(! $fp){ self::$cacheStats['error'] = "Could not open the lock file $cacheClearLock to clear the cache. Please make sure the directory is writable by your web server."; self::$cacheStats['totalErrors']++; return self::$cacheStats; } if(flock($fp, LOCK_EX | LOCK_NB)){ //non blocking exclusive flock attempt. If we get a lock then it continues and returns true. If we don't lock, then return false, don't block and don't clear the cache. // This logic means that if a cache clear is currently in progress we don't try to clear the cache. // This prevents web server children from being queued up waiting to be able to also clear the cache. self::$lastRecursiveDeleteError = false; self::recursiveDelete(WP_CONTENT_DIR . '/wfcache/'); if(self::$lastRecursiveDeleteError){ self::$cacheStats['error'] = self::$lastRecursiveDeleteError; self::$cacheStats['totalErrors']++; } flock($fp, LOCK_UN); @unlink($cacheClearLock); @rmdir($cacheDir); } fclose($fp); return self::$cacheStats; } private static function recursiveDelete($dir) { $files = array_diff(scandir($dir), array('.','..')); foreach ($files as $file) { if(is_dir($dir . '/' . $file)){ if(! self::recursiveDelete($dir . '/' . $file)){ return false; } } else { if($file == 'clear.lock'){ continue; } //Don't delete our lock file $size = filesize($dir . '/' . $file); if($size){ self::$cacheStats['totalData'] += round($size / 1024); } if(strpos($dir, 'wfcache/') === false){ self::$lastRecursiveDeleteError = "Not deleting file in directory $dir because it appears to be in the wrong path."; self::$cacheStats['totalErrors']++; return false; //Safety check that we're in a subdir of the cache } if(@unlink($dir . '/' . $file)){ self::$cacheStats['filesDeleted']++; } else { self::$lastRecursiveDeleteError = "Could not delete file " . $dir . "/" . $file . " : " . wfUtils::getLastError(); self::$cacheStats['totalErrors']++; return false; } } } if($dir != WP_CONTENT_DIR . '/wfcache/'){ if(strpos($dir, 'wfcache/') === false){ self::$lastRecursiveDeleteError = "Not deleting directory $dir because it appears to be in the wrong path."; self::$cacheStats['totalErrors']++; return false; //Safety check that we're in a subdir of the cache } if(@rmdir($dir)){ self::$cacheStats['dirsDeleted']++; } else { self::$lastRecursiveDeleteError = "Could not delete directory $dir : " . wfUtils::getLastError(); self::$cacheStats['totalErrors']++; return false; } return true; } else { return true; } } public static function addHtaccessCode($action){ if($action != 'remove'){ die("Error: addHtaccessCode must be called with 'remove' as param"); } $htaccessPath = self::getHtaccessPath(); if(! $htaccessPath){ return "Wordfence could not find your .htaccess file."; } $fh = @fopen($htaccessPath, 'r+'); if(! $fh){ $err = error_get_last(); return $err['message']; } flock($fh, LOCK_EX); fseek($fh, 0, SEEK_SET); //start of file clearstatcache(); $contents = fread($fh, filesize($htaccessPath)); if(! $contents){ fclose($fh); return "Could not read from $htaccessPath"; } $contents = preg_replace('/#WFCACHECODE.*WFCACHECODE[\r\s\n\t]*/s', '', $contents); ftruncate($fh, 0); fflush($fh); fseek($fh, 0, SEEK_SET); fwrite($fh, $contents); flock($fh, LOCK_UN); fclose($fh); return false; } /** * @param $action * @return bool|string|void */ public static function updateBlockedIPs($action){ //'add' or 'remove' $htaccessPath = self::getHtaccessPath(); if(! $htaccessPath){ return "Wordfence could not find your .htaccess file."; } if($action == 'remove'){ $fh = @fopen($htaccessPath, 'r+'); if(! $fh){ $err = error_get_last(); return $err['message']; } flock($fh, LOCK_EX); fseek($fh, 0, SEEK_SET); //start of file clearstatcache(); $contents = @fread($fh, filesize($htaccessPath)); if(! $contents){ fclose($fh); return "Could not read from $htaccessPath"; } $contents = preg_replace('/#WFIPBLOCKS.*WFIPBLOCKS[\r\s\n\t]*/s', '', $contents); ftruncate($fh, 0); fflush($fh); fseek($fh, 0, SEEK_SET); @fwrite($fh, $contents); flock($fh, LOCK_UN); fclose($fh); return false; } return false; } public static function getHtaccessPath(){ if (!function_exists('get_home_path')) { include_once(ABSPATH . 'wp-admin/includes/file.php'); } $homePath = get_home_path(); $htaccessFile = $homePath.'.htaccess'; return $htaccessFile; } public static function doNotCache(){ if(! defined('WFDONOTCACHE')){ define('WFDONOTCACHE', true); } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/sysinfo.php�������������������������������������������������������������������������������������0000644�����������������00000002440�15233113245�0007514 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head> <title><?php esc_html_e('Wordfence System Info', 'wordfence') ?> ?ver=' type='text/css' media='all' /> /s', '', $out); $out = preg_replace('/]+>/', '', $out); $out = preg_replace('/<\/a>/', '', $out); $out = preg_replace('/[^<]*<\/title>/','', $out); echo $out; ?> <div class="diffFooter"><?php echo wp_kses(sprintf(__('© %d to %d Wordfence — Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?></div> </body> </html>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfDirectoryIterator.php�������������������������������������������������������������������������0000644�����������������00000003621�15233113245�0012037 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php abstract class wfDirectoryIterator { abstract public function file($file); /** * @var string */ private $directory; /** * @var int */ private $directory_limit; private $directories_entered = array(); private $directories_processed = array(); /** * @var callback */ private $callback; /** * @var int */ private $max_iterations; private $iterations; /** * @param string $directory * @param int $max_files_per_directory * @param int $max_iterations */ public function __construct($directory = ABSPATH, $max_files_per_directory = 20000, $max_iterations = 1000000) { $this->directory = $directory; $this->directory_limit = $max_files_per_directory; $this->max_iterations = $max_iterations; } public function run() { $this->iterations = 0; $this->scan($this->directory); } protected function scan($dir) { $dir = rtrim($dir, DIRECTORY_SEPARATOR); $handle = opendir($dir); $file_count = 0; while ($file = readdir($handle)) { if ($file == '.' || $file == '..') { continue; } $file_path = $dir . '/' . $file; $real_path = realpath($file_path); if (isset($this->directories_processed[$real_path]) || isset($this->directories_entered[$real_path])) { //Already processed or being processed, possibly a recursive symlink continue; } else if (is_dir($file_path)) { $this->directories_entered[$real_path] = 1; if ($this->scan($file_path) === false) { closedir($handle); return false; } $this->directories_processed[$real_path] = 1; unset($this->directories_entered[$real_path]); } else { if ($this->file($file_path) === false) { closedir($handle); return false; } } if (++$file_count >= $this->directory_limit) { break; } if (++$this->iterations >= $this->max_iterations) { closedir($handle); return false; } } closedir($handle); return true; } } ���������������������������������������������������������������������������������������������������������������lib/wfCrawl.php�������������������������������������������������������������������������������������0000644�����������������00000014736�15233113245�0007442 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wfUtils.php'); class wfCrawl { const GOOGLE_BOT_VERIFIED = 'verified'; const GOOGLE_BOT_FAKE = 'fakeBot'; const GOOGLE_BOT_UNDETERMINED = 'undetermined'; public static function isCrawler($UA){ $browscap = new wfBrowscap(); $b = $browscap->getBrowser($UA); if (!$b || $b['Parent'] == 'DefaultProperties') { $IP = wfUtils::getIP(); return !wfLog::isHumanRequest($IP, $UA); } else if (isset($b['Crawler']) && $b['Crawler']) { return true; } return false; } public static function verifyCrawlerPTR($hostPattern, $IP){ $table = wfDB::networkTable('wfCrawlers'); $db = new wfDB(); $IPn = wfUtils::inet_pton($IP); $status = $db->querySingle("select status from $table where IP=%s and patternSig=UNHEX(MD5('%s')) and lastUpdate > unix_timestamp() - %d", $IPn, $hostPattern, WORDFENCE_CRAWLER_VERIFY_CACHE_TIME); if($status){ if($status == 'verified'){ return true; } else { return false; } } $host = wfUtils::reverseLookup($IP); if(! $host){ $db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values (%s, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $IPn, $hostPattern, 'noPTR', '', 'noPTR', ''); return false; } if(preg_match($hostPattern, $host)){ $resultIPs = wfUtils::resolveDomainName($host); $addrsMatch = false; foreach($resultIPs as $resultIP){ if($resultIP == $IP){ $addrsMatch = true; break; } } if($addrsMatch){ $db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values (%s, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $IPn, $hostPattern, 'verified', $host, 'verified', $host); return true; } else { $db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values (%s, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $IPn, $hostPattern, 'fwdFail', $host, 'fwdFail', $host); return false; } } else { $db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values (%s, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $IPn, $hostPattern, 'badPTR', $host, 'badPTR', $host); return false; } } public static function isGooglebot($userAgent = null){ if ($userAgent === null) { $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; } return (bool) preg_match('/Googlebot\/\d\.\d/', $userAgent); } public static function isGoogleCrawler($userAgent = null){ if ($userAgent === null) { $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; } foreach (self::$googPat as $pat) { if (preg_match($pat . 'i', $userAgent)) { return true; } } return false; } private static $googPat = array( '@^Mozilla/5\\.0 \\(.*Google Keyword Tool.*\\)$@', '@^Mozilla/5\\.0 \\(.*Feedfetcher\\-Google.*\\)$@', '@^Feedfetcher\\-Google\\-iGoogleGadgets.*$@', '@^searchbot admin\\@google\\.com$@', '@^Google\\-Site\\-Verification.*$@', '@^Google OpenSocial agent.*$@', '@^.*Googlebot\\-Mobile/2\\..*$@', '@^AdsBot\\-Google\\-Mobile.*$@', '@^google \\(.*Enterprise.*\\)$@', '@^Mediapartners\\-Google.*$@', '@^GoogleFriendConnect.*$@', '@^googlebot\\-urlconsole$@', '@^.*Google Web Preview.*$@', '@^Feedfetcher\\-Google.*$@', '@^AppEngine\\-Google.*$@', '@^Googlebot\\-Video.*$@', '@^Googlebot\\-Image.*$@', '@^Google\\-Sitemaps.*$@', '@^Googlebot/Test.*$@', '@^Googlebot\\-News.*$@', '@^.*Googlebot/2\\.1.*$@', '@^AdsBot\\-Google.*$@', '@^Google$@' ); /** * Has correct user agent and PTR record points to .googlebot.com domain. * * @param string|null $ip * @param string|null $ua * @return bool */ public static function isVerifiedGoogleCrawler($ip = null, $ua = null) { static $verified; if (!isset($verified)) { $verified = array(); } if ($ip === null) { $ip = wfUtils::getIP(); } if ($ip === null || $ip === false) { //Likely a CLI execution return false; } if (array_key_exists($ip, $verified)) { return $verified[$ip]; } if (self::isGoogleCrawler($ua)) { if (self::verifyCrawlerPTR(wordfence::getLog()->getGooglePattern(), $ip)) { $verified[$ip] = true; return $verified[$ip]; } $noc1Status = self::verifyGooglebotViaNOC1($ip); if ($noc1Status == self::GOOGLE_BOT_VERIFIED) { $verified[$ip] = true; return $verified[$ip]; } else if ($noc1Status == self::GOOGLE_BOT_FAKE) { $verified[$ip] = false; return $verified[$ip]; } return true; //We were unable to successfully validate Googlebot status so default to being permissive } $verified[$ip] = false; return $verified[$ip]; } /** * Attempts to verify whether an IP claiming to be Googlebot is actually Googlebot. * * @param string|null $ip * @return string */ public static function verifyGooglebotViaNOC1($ip = null) { $table = wfDB::networkTable('wfCrawlers'); if ($ip === null) { $ip = wfUtils::getIP(); } $db = new wfDB(); $IPn = wfUtils::inet_pton($ip); $patternSig = 'googlenoc1'; $status = $db->querySingle("select status from $table where IP=%s and patternSig=UNHEX(MD5('%s')) and lastUpdate > unix_timestamp() - %d", $IPn, $patternSig, WORDFENCE_CRAWLER_VERIFY_CACHE_TIME); if ($status === 'verified') { return self::GOOGLE_BOT_VERIFIED; } else if ($status === 'fakeBot') { return self::GOOGLE_BOT_FAKE; } $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $data = $api->call('verify_googlebot', array( 'ip' => $ip, )); if (is_array($data) && !empty($data['verified'])) { // Cache results $db->queryWrite("INSERT INTO {$table} (IP, patternSig, status, lastUpdate) VALUES ('%s', UNHEX(MD5('%s')), '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE status = VALUES(status), lastUpdate = VALUES(lastUpdate)", $IPn, $patternSig, 'verified'); return self::GOOGLE_BOT_VERIFIED; } else { $db->queryWrite("INSERT INTO {$table} (IP, patternSig, status, lastUpdate) VALUES ('%s', UNHEX(MD5('%s')), '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE status = VALUES(status), lastUpdate = VALUES(lastUpdate)", $IPn, $patternSig, 'fakeBot'); self::GOOGLE_BOT_FAKE; } } catch (Exception $e) { // Do nothing, bail } return self::GOOGLE_BOT_UNDETERMINED; } } ����������������������������������lib/compat.php��������������������������������������������������������������������������������������0000644�����������������00000000651�15233113245�0007307 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } if (!function_exists('str_getcsv')) { function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = null, $eol = null) { $temp = fopen("php://memory", "rw"); fwrite($temp, $input); fseek($temp, 0); $r = array(); while (($data = fgetcsv($temp, 0, $delimiter, $enclosure, $escape)) !== false) { $r[] = $data; } fclose($temp); return $r; } }���������������������������������������������������������������������������������������lib/menu_tools_twoFactor.php������������������������������������������������������������������������0000644�����������������00000046717�15233113245�0012255 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } $helpLink = wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_TWO_FACTOR); if (function_exists('network_admin_url') && is_multisite()) { $lsModuleURL = network_admin_url('admin.php?page=WFLS'); } else { $lsModuleURL = admin_url('admin.php?page=WFLS'); } echo wfView::create('common/section-title', array( 'title' => __('Two-Factor Authentication', 'wordfence'), 'helpLink' => $helpLink, 'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Two-Factor Authentication</span>', 'wordfence'), array('span'=>array('class'=>array()))), ))->render(); ?> <script type="application/javascript"> (function($) { $(function() { document.title = "<?php esc_attr_e('Two-Factor Authentication', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName; }); })(jQuery); </script> <div id="wordfenceMode_twoFactor"></div> <div id="wf-tools-two-factor"> <?php if (wfCredentialsController::useLegacy2FA()): ?> <div class="wf-row"> <div class="wf-col-xs-12"> <div id="wordfenceTwoFactorLegacy"> <p><strong><?php esc_html_e('2FA Mode: Legacy', 'wordfence') ?>.</strong> <?php esc_html_e('Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module.', 'wordfence'); ?></p> <p><a id="wf-migrate2fanew-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#"><?php esc_html_e('Switch to New 2FA', 'wordfence'); ?></a></p> </div> </div> </div> <?php if (!wfConfig::get('isPaid')): ?> <div class="wf-premium-callout wf-add-bottom"> <h3><?php esc_html_e("Take Login Security to the next level with Two-Factor Authentication", 'wordfence') ?></h3> <p><?php echo wp_kses(__('Used by banks, government agencies, and military worldwide, two-factor authentication is one of the most secure forms of remote system authentication available. With it enabled, an attacker needs to know your username, password, <em>and</em> have control of your phone to log into your site. Upgrade to Premium now to enable this powerful feature.', 'wordfence'), array('em'=>array())) ?></p> <p class="wf-nowrap"> <img id="wf-two-factor-img1" src="<?php echo wfUtils::getBaseURL() . 'images/2fa1.svg' ?>" alt=""> <img id="wf-two-factor-img2" src="<?php echo wfUtils::getBaseURL() . 'images/2fa2.svg' ?>" alt=""> </p> <p class="center"> <a class="wf-btn wf-btn-primary wf-btn-callout" href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence') ?></a> </p> </div> <?php else: ?> <div class="wf-row"> <div class="wf-col-xs-12 wf-flex-row"> <div class="wf-flex-row-1"> <p><?php echo wp_kses(__('With Two-Factor Authentication enabled, an attacker needs to know your username, password <em>and</em> have control of your phone to log in to your site. We recommend you enable Two-Factor Authentication for all Administrator level accounts.', 'wordfence'), array('em'=>array())) ?></p> </div> <div class="wf-flex-row-0 wf-padding-add-left"> <?php echo wfView::create('options/block-controls', array( 'suppressLogo' => true, 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_TWO_FACTOR, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Two-Factor Authentication settings? This will undo any custom changes you have made to the options on this page. If you have configured any users to use two-factor authentication, they will not be changed.', 'wordfence'), ))->render(); ?> </div> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <div class="wf-block wf-active"> <?php if (!wfConfig::get('loginSecurityEnabled')): ?> <ul class="wf-block-banner"> <li><?php echo wp_kses(__('<strong>Note:</strong> Two-Factor Authentication is disabled when the option "Enable Brute Force Protection" is off.', 'wordfence'), array('strong'=>array())); ?></li> <li><a href="#" class="wf-btn wf-btn-default" id="wf-2fa-enable"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li> </ul> <?php endif; ?> <div class="wf-block-header"> <div class="wf-block-header-content"> <div class="wf-block-title"> <strong><?php esc_html_e('Enable Two-Factor Authentication', 'wordfence') ?></strong> </div> </div> </div> <div class="wf-block-content"> <ul class="wf-block-list"> <li> <ul class="wf-form-field"> <li style="width: 450px;" class="wf-option-text"> <input placeholder="<?php echo esc_attr(__('Enter username to enable Two-Factor Authentication for', 'wordfence')) ?>" type="text" id="wfUsername" class="wf-form-control" value=""> </li> </ul> </li> <li> <ul class="wf-form-field"> <li> <input class="wf-option-radio" type="radio" name="wf2faMode" id="wf2faMode-authenticator" value="authenticator" checked> <label for="wf2faMode-authenticator">  </label> </li> <li class="wf-option-title"><?php esc_html_e('Use authenticator app', 'wordfence') ?></li> </ul> </li> <li> <ul class="wf-form-field"> <li> <input class="wf-option-radio" type="radio" name="wf2faMode" id="wf2faMode-phone" value="phone"> <label for="wf2faMode-phone">  </label> </li> <li class="wf-option-title"><?php esc_html_e('Send code to a phone number:', 'wordfence') ?>  </li> <li class="wf-option-text"> <input class="wf-form-control" type="text" value="" id="wfPhone" placeholder="<?php echo esc_attr(__('+1 (000) 000 0000', 'wordfence')) ?>"> </li> </ul> </li> <li> <p> <input type="button" class="wf-btn wf-btn-primary pull-right" value="Enable User" onclick="WFAD.addTwoFactor(jQuery('#wfUsername').val(), jQuery('#wfPhone').val(), jQuery('input[name=wf2faMode]:checked').val());"> </p> </li> </ul> </div> </div> </div> </div> <div class="wf-row"> <div class="wf-col-xs-12"> <h2><?php esc_html_e('Two-Factor Authentication Users', 'wordfence') ?></h2> <div id="wfTwoFacUsers"></div> </div> </div> <?php echo wfView::create('tools/options-group-2fa', array( 'stateKey' => 'wf-2fa-options', ))->render(); ?> <script type="text/javascript"> jQuery('.twoFactorOption').on('click', function() { WFAD.updateConfig(jQuery(this).attr('name'), jQuery(this).is(':checked') ? 1 : 0, function() { }); }); jQuery('input[name=wf2faMode]').on('change', function() { var selectedMode = jQuery('input[name=wf2faMode]:checked').val(); jQuery('#wfPhone').prop('disabled', selectedMode != 'phone'); }).triggerHandler('change'); (function($) { $(function() { $('#wf-2fa-enable').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.setOption('loginSecurityEnabled', 1, function() { window.location.reload(true); }); }); }); })(jQuery); </script> <script type="text/x-jquery-template" id="wfTwoFacUserTmpl"> <table class="wf-striped-table wf-table-twofactor"> <thead> <tr> <th><?php esc_html_e('User', 'wordfence') ?></th> <th><?php esc_html_e('Mode', 'wordfence') ?></th> <th><?php esc_html_e('Status', 'wordfence') ?></th> <th class="wf-center"><?php esc_html_e('Delete', 'wordfence') ?></th> </tr> </thead> <tbody> {{each(idx, user) users}} <tr id="twoFactorUser-${user.userID}"> <td style="white-space: nowrap;">${user.username}</td> {{if user.mode == 'phone'}} <td style="white-space: nowrap;"><?php echo esc_html(sprintf(/* translators: Phone number. */ __('Phone (%s)', 'wordfence'), '${user.phone}')) ?></td> {{else}} <td style="white-space: nowrap;"><?php esc_html_e('Authenticator', 'wordfence') ?></td> {{/if}} <td style="white-space: nowrap;"> {{if user.status == 'activated'}} <span style="color: #0A0;"><?php esc_html_e('Cellphone Sign-in Enabled', 'wordfence') ?></span> {{else}} <div class="wf-form-inline"> <div class="wf-form-group"> <label class="wf-plain wf-hidden-xs" style="margin: 0;" for="wfActivate-${user.userID}"><?php esc_html_e('Enter activation code:', 'wordfence') ?></label> <input class="wf-form-control" type="text" id="wfActivate-${user.userID}" size="6" placeholder="<?php esc_attr_e('Code', 'wordfence') ?>"> </div> <input class="wf-btn wf-btn-default" type="button" value="<?php esc_attr_e('Activate', 'wordfence') ?>" onclick="WFAD.twoFacActivate('${user.userID}', jQuery('#wfActivate-${user.userID}').val());"> </div> {{/if}} </td> <td style="white-space: nowrap; text-align: center;" class="wf-twofactor-delete"> <a href="#" onclick="WFAD.delTwoFac('${user.userID}'); return false;"><i class="wf-ion-ios-trash-outline"></i></a> </td> </tr> {{/each}} {{if (users.length == 0)}} <tr id="twoFactorUser-none"> <td colspan="4"><?php esc_html_e('No users currently have cellphone sign-in enabled.', 'wordfence') ?></td> </tr> {{/if}} </tbody> </table> </script> <?php endif; ?> <?php else: ?> <div class="wf-row"> <div class="wf-col-xs-12"> <div id="wordfenceTwoFactorModern"> <p><strong><?php esc_html_e('2FA Mode: Normal', 'wordfence') ?>.</strong> <?php esc_html_e('Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app.', 'wordfence') ?></p> <p><?php esc_html_e('If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version.', 'wordfence'); ?></p> <p><a id="wf-migrate2faold-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#"><?php esc_html_e('Revert to Legacy 2FA', 'wordfence'); ?></a></p> </div> </div> </div> <?php endif; ?> </div> <script type="text/x-jquery-template" id="wfTmpl_migrate2FANew"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Migrate or switch to new two-factor authentication?', 'wordfence'), 'message' => __('Use the buttons below to migrate to the new two-factor authentication system or switch without migration. Migration will copy all existing authenticator-based user activations over to the new system while switching will use only users already set up in the new system. Existing SMS-based two-factor authentication activations must be disabled prior to migration.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2fanew-prompt-confirm', 'label' => __('Migrate', 'wordfence'), 'link' => '#'), 'secondaryButtons' => array(array('id' => 'wf-migrate2fanew-prompt-switch', 'label' => __('Switch', 'wordfence'), 'link' => '#'), array('id' => 'wf-migrate2fanew-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#')), 'progressIndicator' => 'wf-migrate2fanew-progress', ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_migrate2FANewComplete"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('New Two-Factor Authentication Active', 'wordfence'), 'message' => __('Your site is now using the new login security module and two-factor authentication. Before logging out, we recommend testing your login in a different browser or a private/incognito window. If any plugins or your theme cause conflicts with logging in, you can revert to the old 2FA method.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2fanewcomplete-prompt-navigate', 'label' => __('Go To New 2FA', 'wordfence'), 'link' => $lsModuleURL), 'secondaryButtons' => array(array('id' => 'wf-migrate2fanewcomplete-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#')), ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_migrate2FASMSActive"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Migration Cannot Proceed', 'wordfence'), 'message' => __('One or more users with two-factor authentication active are using SMS, which is unsupported in the new login security module. Please either deactivate two-factor authentication for those users or change them to use an authenticator app prior to migration.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2fasmsactive-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'), ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_migrate2FANewFail"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Migration Failed', 'wordfence'), 'message' => __('Automatic migration of the 2FA-enabled accounts failed. Please verify that your server is reachable via the internet and try again.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2fanewfail-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'), ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_migrate2FAOld"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Revert back to legacy two-factor authentication?', 'wordfence'), 'message' => __('All two-factor authentication settings and users\' codes will revert to your older settings. If any users had set up two-factor authentication after the update, they will no longer have 2FA enabled until you switch to the new version again.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2faold-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'), 'secondaryButtons' => array(array('id' => 'wf-migrate2faold-prompt-switch', 'label' => __('Revert', 'wordfence'), 'link' => '#')), 'progressIndicator' => 'wf-migrate2faold-progress', ))->render(); ?> </script> <script type="text/x-jquery-template" id="wfTmpl_migrate2FAOldComplete"> <?php echo wfView::create('common/modal-prompt', array( 'title' => __('Legacy Two-Factor Authentication Active', 'wordfence'), 'message' => __('Your site is now using the legacy two-factor authentication system.', 'wordfence'), 'primaryButton' => array('id' => 'wf-migrate2faoldcomplete-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'), ))->render(); ?> </script> <script type="application/javascript"> (function($) { $(function() { $('#wf-migrate2fanew-start').on('click', function(e) { e.preventDefault(); e.stopPropagation(); var prompt = $('#wfTmpl_migrate2FANew').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2fanew-prompt-cancel').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.colorboxClose(); }); $('#wf-migrate2fanew-prompt-switch').on('click', function(e) { e.preventDefault(); e.stopPropagation(); $('#wf-migrate2fanew-progress').show(); $('#wf-migrate2fanew-prompt-cancel, #wf-migrate2fanew-prompt-confirm').addClass('wf-disabled'); WFAD.ajax('wordfence_switchTo2FANew', {migrate: false}, function(res) { var prompt = $('#wfTmpl_migrate2FANewComplete').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxClose(); setTimeout(function() { WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2fanewcomplete-prompt-close').on('click', function(e) { e.preventDefault(); e.stopPropagation(); window.location.reload(); WFAD.colorboxClose(); }); }}); }, 500); }); }); $('#wf-migrate2fanew-prompt-confirm').on('click', function(e) { e.preventDefault(); e.stopPropagation(); $('#wf-migrate2fanew-progress').show(); $('#wf-migrate2fanew-prompt-cancel, #wf-migrate2fanew-prompt-confirm').addClass('wf-disabled'); WFAD.ajax('wordfence_switchTo2FANew', {migrate: true}, function(res) { if (res.ok) { var prompt = $('#wfTmpl_migrate2FANewComplete').tmpl(res); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxClose(); setTimeout(function() { WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2fanewcomplete-prompt-close').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.colorboxClose(); }); }}); }, 500); } else if (res.smsActive) { var prompt = $('#wfTmpl_migrate2FASMSActive').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxClose(); setTimeout(function() { WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2fasmsactive-prompt-close').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.colorboxClose(); }); }}); }, 500); } else { var prompt = $('#wfTmpl_migrate2FANewFail').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxClose(); setTimeout(function() { WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2fanewfail-prompt-close').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.colorboxClose(); }); }}); }, 500); } }); }); }}); }); $('#wf-migrate2faold-start').on('click', function(e) { e.preventDefault(); e.stopPropagation(); var prompt = $('#wfTmpl_migrate2FAOld').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2faold-prompt-cancel').on('click', function(e) { e.preventDefault(); e.stopPropagation(); WFAD.colorboxClose(); }); $('#wf-migrate2faold-prompt-switch').on('click', function(e) { e.preventDefault(); e.stopPropagation(); $('#wf-migrate2faold-progress').show(); $('#wf-migrate2faold-prompt-cancel, #wf-migrate2faold-prompt-switch').addClass('wf-disabled'); WFAD.ajax('wordfence_switchTo2FAOld', {migrate: false}, function(res) { var prompt = $('#wfTmpl_migrate2FAOldComplete').tmpl(); var promptHTML = $("<div />").append(prompt).html(); WFAD.colorboxClose(); setTimeout(function() { WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() { $('#wf-migrate2faoldcomplete-prompt-close').on('click', function(e) { e.preventDefault(); e.stopPropagation(); window.location.reload(); WFAD.colorboxClose(); }); }}); }, 500); }); }); }}); }); }); })(jQuery); </script>�������������������������������������������������lib/wfAPI.php���������������������������������������������������������������������������������������0000644�����������������00000024043�15233113245�0006773 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php require_once(dirname(__FILE__) . '/wordfenceConstants.php'); require_once(dirname(__FILE__) . '/wordfenceClass.php'); class wfAPI { const KEY_TYPE_FREE = 'free'; const KEY_TYPE_PAID_CURRENT = 'paid-current'; const KEY_TYPE_PAID_EXPIRED = 'paid-expired'; const KEY_TYPE_PAID_DELETED = 'paid-deleted'; public $lastHTTPStatus = ''; public $lastCurlErrorNo = ''; private $curlContent = 0; private $APIKey = ''; private $wordpressVersion = ''; public function __construct($apiKey, $wordpressVersion) { $this->APIKey = $apiKey; $this->wordpressVersion = $wordpressVersion; } public function getStaticURL($url) { // In the form '/something.bin' without quotes return $this->getURL(rtrim($this->getAPIURL(), '/') . '/' . ltrim($url, '/')); } public function call($action, $getParams = array(), $postParams = array(), $forceSSL = false, $timeout = 900) { $apiURL = $this->getAPIURL(); //Sanity check. Developer should call wfAPI::SSLEnabled() to check if SSL is enabled before forcing SSL and return a user friendly msg if it's not. if ($forceSSL && (!preg_match('/^https:/i', $apiURL))) { //User's should never see this message unless we aren't calling SSLEnabled() to check if SSL is enabled before using call() with forceSSL throw new wfAPICallSSLUnavailableException(__("SSL is not supported by your web server and is required to use this function. Please ask your hosting provider or site admin to install cURL with openSSL to use this feature.", 'wordfence')); } $json = $this->getURL(rtrim($apiURL, '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&' . self::buildQuery( array_merge( array('action' => $action), $getParams )), $postParams, $timeout); if (!$json) { throw new wfAPICallInvalidResponseException(sprintf(/* translators: API call/action/endpoint. */__("We received an empty data response from the Wordfence scanning servers when calling the '%s' function.", 'wordfence'), $action)); } $dat = json_decode($json, true); if (isset($dat['_isPaidKey'])) { wfConfig::set('keyExpDays', $dat['_keyExpDays']); if ($dat['_keyExpDays'] > -1) { wfConfig::set('isPaid', 1); } else if ($dat['_keyExpDays'] < 0) { wfConfig::set('isPaid', ''); } if (!isset($dat['errorMsg'])) { if ($dat['_keyExpDays'] > -1) { wfConfig::set('keyType', self::KEY_TYPE_PAID_CURRENT); } else if ($dat['_keyExpDays'] < 0) { wfConfig::set('keyType', self::KEY_TYPE_PAID_EXPIRED); } if (isset($dat['_autoRenew'])) { wfConfig::set('premiumAutoRenew', wfUtils::truthyToInt($dat['_autoRenew'])); } else { wfConfig::remove('premiumAutoRenew'); } if (isset($dat['_nextRenewAttempt'])) { wfConfig::set('premiumNextRenew', time() + $dat['_nextRenewAttempt'] * 86400); } else { wfConfig::remove('premiumNextRenew'); } if (isset($dat['_paymentExpiring'])) { wfConfig::set('premiumPaymentExpiring', wfUtils::truthyToInt($dat['_paymentExpiring'])); } else { wfConfig::remove('premiumPaymentExpiring'); } if (isset($dat['_paymentExpired'])) { wfConfig::set('premiumPaymentExpired', wfUtils::truthyToInt($dat['_paymentExpired'])); } else { wfConfig::remove('premiumPaymentExpired'); } if (isset($dat['_paymentMissing'])) { wfConfig::set('premiumPaymentMissing', wfUtils::truthyToInt($dat['_paymentMissing'])); } else { wfConfig::remove('premiumPaymentMissing'); } if (isset($dat['_paymentHold'])) { wfConfig::set('premiumPaymentHold', wfUtils::truthyToInt($dat['_paymentHold'])); } else { wfConfig::remove('premiumPaymentHold'); } } } $hasKeyConflict = false; if (isset($dat['_hasKeyConflict'])) { $hasKeyConflict = ($dat['_hasKeyConflict'] == 1); if ($hasKeyConflict) { new wfNotification(null, wfNotification::PRIORITY_HIGH_CRITICAL, '<a href="' . wfUtils::wpAdminURL('admin.php?page=Wordfence&subpage=global_options') . '">' . esc_html__('The Wordfence license you\'re using does not match this site\'s address. Premium features are disabled.', 'wordfence') . '</a>', 'wfplugin_keyconflict', null, array(array('link' => 'https://www.wordfence.com/manage-wordfence-api-keys/', 'label' => 'Manage Keys'))); wfConfig::set('hasKeyConflict', 1); } } $keyNoLongerValid = false; if (isset($dat['_keyNoLongerValid'])) { $keyNoLongerValid = ($dat['_keyNoLongerValid'] == 1); if ($keyNoLongerValid) { wfConfig::set('keyType', self::KEY_TYPE_PAID_DELETED); wfConfig::set('isPaid', ''); } } if (!$hasKeyConflict) { wfConfig::remove('hasKeyConflict'); $n = wfNotification::getNotificationForCategory('wfplugin_keyconflict'); if ($n !== null) { wordfence::status(1, 'info', 'Idle'); $n->markAsRead(); } } if (isset($dat['_touppChanged'])) { wfConfig::set('touppPromptNeeded', wfUtils::truthyToBoolean($dat['_touppChanged'])); } if (!is_array($dat)) { throw new wfAPICallInvalidResponseException(sprintf(/* translators: API call/action/endpoint. */ __("We received a data structure that is not the expected array when contacting the Wordfence scanning servers and calling the '%s' function.", 'wordfence'), $action)); } if (is_array($dat) && isset($dat['errorMsg'])) { throw new wfAPICallErrorResponseException($dat['errorMsg']); } return $dat; } protected function getURL($url, $postParams = array(), $timeout = 900) { wordfence::status(4, 'info', sprintf(/* translators: API version. */ __("Calling Wordfence API v%s:", 'wordfence'), WORDFENCE_API_VERSION) . $url); if (!function_exists('wp_remote_post')) { require_once(ABSPATH . WPINC . 'http.php'); } $ssl_verify = (bool) wfConfig::get('ssl_verify'); $args = array( 'timeout' => $timeout, 'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'), 'body' => $postParams, 'sslverify' => $ssl_verify, 'headers' => array('Referer' => false), ); if (!$ssl_verify) { // Some versions of cURL will complain that SSL verification is disabled but the CA bundle was supplied. $args['sslcertificates'] = false; } $response = wp_remote_post($url, $args); $this->lastHTTPStatus = (int) wp_remote_retrieve_response_code($response); if (is_wp_error($response)) { $error_message = $response->get_error_message(); if ($error_message) { $apiExceptionMessage = sprintf(/* translators: Error message. */ __('There was an error connecting to the Wordfence scanning servers: %s', 'wordfence'), $error_message); } else { $apiExceptionMessage = __('There was an unknown error connecting to the Wordfence scanning servers.', 'wordfence'); } throw new wfAPICallFailedException($apiExceptionMessage); } $dateHeader = @$response['headers']['date']; if (!empty($dateHeader) && (time() - wfConfig::get('timeoffset_wf_updated', 0) > 3600)) { if (function_exists('date_create_from_format')) { $dt = DateTime::createFromFormat('D, j M Y G:i:s O', $dateHeader); $timestamp = $dt->getTimestamp(); } else { $timestamp = strtotime($dateHeader); } $offset = $timestamp - time(); wfConfig::set('timeoffset_wf', $offset); wfConfig::set('timeoffset_wf_updated', time()); } if (!empty($response['response']['code'])) { $this->lastHTTPStatus = (int) $response['response']['code']; } if (200 != $this->lastHTTPStatus) { throw new wfAPICallFailedException(sprintf(/* translators: HTTP status code. */__("The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]"), $this->lastHTTPStatus)); } $content = wp_remote_retrieve_body($response); return $content; } public function binCall($func, $postData) { $url = rtrim($this->getAPIURL(), '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&action=' . $func; $data = $this->getURL($url, $postData); if (preg_match('/\{.*errorMsg/', $data)) { $jdat = @json_decode($data, true); if (is_array($jdat) && $jdat['errorMsg']) { throw new Exception($jdat['errorMsg']); } } return array('code' => $this->lastHTTPStatus, 'data' => $data); } public function makeAPIQueryString() { $cv = null; $cs = null; if (function_exists('curl_version')) { $curl = curl_version(); $cv = $curl['version']; $cs = $curl['ssl_version']; } $values = array( 'wp' => $this->wordpressVersion, 'wf' => WORDFENCE_VERSION, 'ms' => (is_multisite() ? get_blog_count() : false), 'h' => wfUtils::wpHomeURL(), 'sslv' => function_exists('openssl_verify') && defined('OPENSSL_VERSION_NUMBER') ? OPENSSL_VERSION_NUMBER : null, 'pv' => phpversion(), 'pt' => php_sapi_name(), 'cv' => $cv, 'cs' => $cs, 'sv' => (isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : null), 'dv' => wfConfig::get('dbVersion', null), 'lang' => get_site_option('WPLANG'), ); return self::buildQuery(array( 'k' => $this->APIKey, 's' => wfUtils::base64url_encode(json_encode($values)), 'betaFeed' => (int) wfConfig::get('betaThreatDefenseFeed'), )); } private function buildQuery($data) { if (version_compare(phpversion(), '5.1.2', '>=')) { return http_build_query($data, '', '&'); //arg_separator parameter was only added in PHP 5.1.2. We do this because some PHP.ini's have arg_separator.output set to '&' } else { return http_build_query($data); } } private function getAPIURL() { return self::SSLEnabled() ? WORDFENCE_API_URL_SEC : WORDFENCE_API_URL_NONSEC; } public static function SSLEnabled() { if (!function_exists('wp_http_supports')) { require_once(ABSPATH . WPINC . 'http.php'); } return wp_http_supports(array('ssl')); } public function getTextImageURL($text) { $apiURL = $this->getAPIURL(); return rtrim($apiURL, '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&' . self::buildQuery(array('action' => 'image', 'txt' => base64_encode($text))); } } class wfAPICallSSLUnavailableException extends Exception { } class wfAPICallFailedException extends Exception { } class wfAPICallInvalidResponseException extends Exception { } class wfAPICallErrorResponseException extends Exception { }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfBrowscapCache.php�����������������������������������������������������������������������������0000644�����������������00001001522�15233113245�0011064 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php $source_version='6000030'; $cache_version='2.0b'; $properties=array( 'browser_name', 'browser_name_regex', 'browser_name_pattern', 'Parent', 'Comment', 'Browser', 'Version', 'Platform', 'isMobileDevice', 'isTablet', 'Device_Type' ); $browsers=array( 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3118;}', 'a:1:{i:3;i:3112;}', 'a:1:{i:3;i:3110;}', 'a:2:{i:3;i:3117;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3114;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3064;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3096;}', 'a:2:{i:3;i:3175;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3281;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3280;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3275;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3114;}', 'a:3:{i:3;i:3274;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3283;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3117;}', 'a:3:{i:3;i:3175;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3064;}', 'a:1:{i:3;i:3096;}', 'a:2:{i:3;i:3247;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3226;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3248;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3223;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3231;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3229;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3242;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3269;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3235;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3252;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3251;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3237;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3254;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3270;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3285;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3279;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3277;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3282;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3276;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3278;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3096;}', 'a:1:{i:3;i:3242;}', 'a:1:{i:3;i:3269;}', 'a:1:{i:3;i:3270;}', 'a:1:{i:3;i:3223;}', 'a:1:{i:3;i:3248;}', 'a:1:{i:3;i:3247;}', 'a:1:{i:3;i:3251;}', 'a:1:{i:3;i:3254;}', 'a:1:{i:3;i:3252;}', 'a:1:{i:3;i:3237;}', 'a:1:{i:3;i:3226;}', 'a:1:{i:3;i:3231;}', 'a:1:{i:3;i:3235;}', 'a:1:{i:3;i:3229;}', 'a:1:{i:3;i:3096;}', 'a:1:{i:3;i:3279;}', 'a:1:{i:3;i:3277;}', 'a:1:{i:3;i:3282;}', 'a:1:{i:3;i:3276;}', 'a:1:{i:3;i:3278;}', 'a:1:{i:3;i:3285;}', 'a:2:{i:3;i:3293;i:10;s:12:"Mobile Phone";}', 'a:4:{i:3;i:3121;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:4:{i:3;i:3122;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:4:{i:3;i:3124;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:4:{i:3;i:3127;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:4:{i:3;i:3126;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3095;i:6;s:3:"5.2";}', 'a:1:{i:3;i:3096;}', 'a:3:{i:3;i:3096;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3095;}', 'a:1:{i:3;i:3254;}', 'a:1:{i:3;i:3231;}', 'a:1:{i:3;i:3237;}', 'a:1:{i:3;i:3293;}', 'a:1:{i:3;i:3270;}', 'a:1:{i:3;i:3248;}', 'a:1:{i:3;i:3235;}', 'a:1:{i:3;i:3223;}', 'a:1:{i:3;i:3242;}', 'a:1:{i:3;i:3226;}', 'a:1:{i:3;i:3229;}', 'a:1:{i:3;i:3252;}', 'a:1:{i:3;i:3251;}', 'a:1:{i:3;i:3269;}', 'a:1:{i:3;i:3247;}', 'a:3:{i:3;i:3096;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3278;}', 'a:1:{i:3;i:3276;}', 'a:1:{i:3;i:3282;}', 'a:1:{i:3;i:3277;}', 'a:1:{i:3;i:3279;}', 'a:1:{i:3;i:3285;}', 'a:1:{i:3;i:3096;}', 'a:1:{i:3;i:3096;}', 'a:4:{i:3;i:3092;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3077;}', 'a:1:{i:3;i:3096;}', 'a:2:{i:3;i:3104;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3108;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3106;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3127;}', 'a:1:{i:3;i:3126;}', 'a:1:{i:3;i:3122;}', 'a:1:{i:3;i:3121;}', 'a:1:{i:3;i:3077;}', 'a:1:{i:3;i:3124;}', 'a:1:{i:3;i:3293;}', 'a:3:{i:3;i:3231;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3229;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3115;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3270;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3242;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3113;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3248;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3252;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3235;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3223;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3254;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3237;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3247;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3226;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3116;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3269;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3251;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3111;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3102;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:1:{i:3;i:3077;}', 'a:2:{i:3;i:3078;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3088;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3085;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3080;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3098;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3089;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3101;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3079;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3076;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3278;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3279;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3106;}', 'a:2:{i:3;i:3081;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3094;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3108;}', 'a:3:{i:3;i:3285;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3276;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3282;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3277;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3104;}', 'a:2:{i:3;i:3091;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3090;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3074;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3097;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3082;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3072;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3083;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3070;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3086;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3069;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3100;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3071;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3084;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3122;}', 'a:1:{i:3;i:3126;}', 'a:1:{i:3;i:3121;}', 'a:1:{i:3;i:3123;}', 'a:1:{i:3;i:3127;}', 'a:1:{i:3;i:3124;}', 'a:1:{i:3;i:3111;}', 'a:1:{i:3;i:3115;}', 'a:1:{i:3;i:3113;}', 'a:1:{i:3;i:3116;}', 'a:2:{i:3;i:3027;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3123;}', 'a:1:{i:3;i:3072;}', 'a:1:{i:3;i:3086;}', 'a:1:{i:3;i:3069;}', 'a:1:{i:3;i:3090;}', 'a:1:{i:3;i:3084;}', 'a:1:{i:3;i:3071;}', 'a:1:{i:3;i:3082;}', 'a:1:{i:3;i:3070;}', 'a:1:{i:3;i:3088;}', 'a:1:{i:3;i:3098;}', 'a:1:{i:3;i:3089;}', 'a:1:{i:3;i:3078;}', 'a:1:{i:3;i:3081;}', 'a:1:{i:3;i:3101;}', 'a:1:{i:3;i:3085;}', 'a:1:{i:3;i:3076;}', 'a:1:{i:3;i:3080;}', 'a:1:{i:3;i:3079;}', 'a:1:{i:3;i:3083;}', 'a:1:{i:3;i:3097;}', 'a:1:{i:3;i:3074;}', 'a:1:{i:3;i:3094;}', 'a:1:{i:3;i:3100;}', 'a:1:{i:3;i:3091;}', 'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3293;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3235;}', 'a:1:{i:3;i:3231;}', 'a:1:{i:3;i:3229;}', 'a:1:{i:3;i:3223;}', 'a:1:{i:3;i:3226;}', 'a:1:{i:3;i:3237;}', 'a:1:{i:3;i:3251;}', 'a:1:{i:3;i:3252;}', 'a:1:{i:3;i:3248;}', 'a:1:{i:3;i:3254;}', 'a:1:{i:3;i:3270;}', 'a:1:{i:3;i:3247;}', 'a:1:{i:3;i:3269;}', 'a:1:{i:3;i:3242;}', 'a:1:{i:3;i:3085;}', 'a:1:{i:3;i:3083;}', 'a:1:{i:3;i:3088;}', 'a:1:{i:3;i:3071;}', 'a:1:{i:3;i:3069;}', 'a:1:{i:3;i:3076;}', 'a:1:{i:3;i:3094;}', 'a:1:{i:3;i:3086;}', 'a:1:{i:3;i:3027;}', 'a:1:{i:3;i:3079;}', 'a:1:{i:3;i:3070;}', 'a:1:{i:3;i:3082;}', 'a:1:{i:3;i:3101;}', 'a:1:{i:3;i:3074;}', 'a:1:{i:3;i:3078;}', 'a:1:{i:3;i:3123;}', 'a:1:{i:3;i:3091;}', 'a:1:{i:3;i:3084;}', 'a:1:{i:3;i:3090;}', 'a:1:{i:3;i:3080;}', 'a:1:{i:3;i:3097;}', 'a:1:{i:3;i:3089;}', 'a:1:{i:3;i:3100;}', 'a:1:{i:3;i:3081;}', 'a:1:{i:3;i:3072;}', 'a:1:{i:3;i:3098;}', 'a:1:{i:3;i:3278;}', 'a:1:{i:3;i:3276;}', 'a:1:{i:3;i:3279;}', 'a:1:{i:3;i:3106;}', 'a:1:{i:3;i:3108;}', 'a:1:{i:3;i:3285;}', 'a:1:{i:3;i:3104;}', 'a:1:{i:3;i:3277;}', 'a:1:{i:3;i:3282;}', 'a:1:{i:3;i:3033;}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3113;}', 'a:1:{i:3;i:3115;}', 'a:1:{i:3;i:3111;}', 'a:1:{i:3;i:3116;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:1:{i:3;i:3036;}', 'a:1:{i:3;i:3095;}', 'a:1:{i:3;i:3031;}', 'a:1:{i:3;i:3051;}', 'a:1:{i:3;i:3063;}', 'a:1:{i:3;i:3050;}', 'a:1:{i:3;i:3060;}', 'a:1:{i:3;i:3054;}', 'a:1:{i:3;i:3053;}', 'a:1:{i:3;i:3055;}', 'a:1:{i:3;i:3067;}', 'a:1:{i:3;i:3038;}', 'a:1:{i:3;i:3066;}', 'a:1:{i:3;i:3037;}', 'a:1:{i:3;i:3056;}', 'a:1:{i:3;i:3061;}', 'a:1:{i:3;i:3049;}', 'a:1:{i:3;i:3039;}', 'a:1:{i:3;i:3052;}', 'a:1:{i:3;i:3062;}', 'a:1:{i:3;i:3040;}', 'a:1:{i:3;i:3057;}', 'a:1:{i:3;i:3059;}', 'a:1:{i:3;i:3041;}', 'a:1:{i:3;i:3042;}', 'a:1:{i:3;i:3043;}', 'a:1:{i:3;i:3047;}', 'a:1:{i:3;i:3046;}', 'a:1:{i:3;i:3045;}', 'a:1:{i:3;i:3058;}', 'a:1:{i:3;i:3048;}', 'a:1:{i:3;i:3044;}', 'a:2:{i:3;i:3102;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3293;}', 'a:3:{i:3;i:3130;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3110;}', 'a:1:{i:3;i:3112;}', 'a:1:{i:3;i:3118;}', 'a:1:{i:3;i:3124;}', 'a:1:{i:3;i:3127;}', 'a:1:{i:3;i:3121;}', 'a:1:{i:3;i:3122;}', 'a:1:{i:3;i:3126;}', 'a:1:{i:3;i:3027;}', 'a:3:{i:3;i:3106;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3033;}', 'a:3:{i:3;i:3108;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3104;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3077;}', 'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2918;}', 'a:3:{i:3;i:3111;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3115;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3116;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3113;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3123;}', 'a:3:{i:3;i:3074;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3094;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3091;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3100;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3097;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3088;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3101;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3098;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3083;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3082;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3071;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3069;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3086;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3089;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3078;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3076;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3072;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3084;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3079;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3085;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3080;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3081;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3090;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3070;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3139;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3142;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3140;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3136;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3143;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3148;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3146;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3145;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3151;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3135;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3134;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3153;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3150;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3133;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3281;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3147;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3138;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3283;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3141;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3132;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3152;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3137;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3280;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3157;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3158;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3154;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3274;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3149;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3156;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3155;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3275;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3159;i:10;s:9:"TV Device";}', 'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3284;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3280;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3092;}', 'a:2:{i:3;i:3130;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3275;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3274;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3283;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3281;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3081;}', 'a:1:{i:3;i:3079;}', 'a:1:{i:3;i:3085;}', 'a:1:{i:3;i:3100;}', 'a:1:{i:3;i:3094;}', 'a:1:{i:3;i:3072;}', 'a:1:{i:3;i:3074;}', 'a:1:{i:3;i:3090;}', 'a:1:{i:3;i:3084;}', 'a:1:{i:3;i:3097;}', 'a:1:{i:3;i:3080;}', 'a:1:{i:3;i:3076;}', 'a:1:{i:3;i:3078;}', 'a:3:{i:3;i:3027;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3082;}', 'a:1:{i:3;i:3086;}', 'a:1:{i:3;i:3070;}', 'a:1:{i:3;i:3069;}', 'a:1:{i:3;i:3083;}', 'a:1:{i:3;i:3088;}', 'a:1:{i:3;i:3089;}', 'a:1:{i:3;i:3091;}', 'a:1:{i:3;i:3098;}', 'a:1:{i:3;i:3101;}', 'a:1:{i:3;i:3071;}', 'a:1:{i:3;i:3108;}', 'a:1:{i:3;i:3106;}', 'a:1:{i:3;i:3104;}', 'a:3:{i:3;i:3033;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:3008;}', 'a:1:{i:3;i:2994;}', 'a:1:{i:3;i:2995;}', 'a:1:{i:3;i:2993;}', 'a:1:{i:3;i:2996;}', 'a:1:{i:3;i:3011;}', 'a:1:{i:3;i:3002;}', 'a:1:{i:3;i:3009;}', 'a:1:{i:3;i:3004;}', 'a:1:{i:3;i:3005;}', 'a:1:{i:3;i:3003;}', 'a:1:{i:3;i:3006;}', 'a:1:{i:3;i:3007;}', 'a:1:{i:3;i:3015;}', 'a:1:{i:3;i:3020;}', 'a:1:{i:3;i:2992;}', 'a:1:{i:3;i:3016;}', 'a:1:{i:3;i:3013;}', 'a:1:{i:3;i:3010;}', 'a:1:{i:3;i:2998;}', 'a:1:{i:3;i:3014;}', 'a:1:{i:3;i:3012;}', 'a:1:{i:3;i:3023;}', 'a:1:{i:3;i:3022;}', 'a:1:{i:3;i:3019;}', 'a:1:{i:3;i:3017;}', 'a:1:{i:3;i:3018;}', 'a:1:{i:3;i:3000;}', 'a:1:{i:3;i:2997;}', 'a:2:{i:3;i:3284;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3266;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3265;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3250;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3262;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3267;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3261;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3258;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3246;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3253;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3228;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3243;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3234;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3273;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3255;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3236;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3225;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3241;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3240;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3245;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3272;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3233;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3230;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3227;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3224;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3268;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3239;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3264;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3271;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3238;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:3046;}', 'a:1:{i:3;i:3115;}', 'a:1:{i:3;i:3047;}', 'a:1:{i:3;i:3048;}', 'a:1:{i:3;i:3113;}', 'a:1:{i:3;i:3061;}', 'a:1:{i:3;i:3067;}', 'a:1:{i:3;i:3050;}', 'a:1:{i:3;i:3049;}', 'a:1:{i:3;i:3054;}', 'a:1:{i:3;i:3060;}', 'a:1:{i:3;i:3116;}', 'a:1:{i:3;i:3066;}', 'a:1:{i:3;i:3044;}', 'a:1:{i:3;i:3063;}', 'a:1:{i:3;i:3045;}', 'a:1:{i:3;i:3058;}', 'a:1:{i:3;i:3057;}', 'a:1:{i:3;i:3042;}', 'a:1:{i:3;i:3051;}', 'a:1:{i:3;i:3043;}', 'a:1:{i:3;i:3111;}', 'a:1:{i:3;i:3059;}', 'a:1:{i:3;i:3055;}', 'a:1:{i:3;i:3038;}', 'a:1:{i:3;i:3052;}', 'a:1:{i:3;i:3041;}', 'a:1:{i:3;i:3056;}', 'a:1:{i:3;i:3039;}', 'a:1:{i:3;i:3040;}', 'a:1:{i:3;i:3053;}', 'a:1:{i:3;i:3062;}', 'a:1:{i:3;i:3037;}', 'a:2:{i:3;i:3175;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3233;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3230;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3233;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3230;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3238;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3233;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3238;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3273;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3273;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3238;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3230;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3273;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3272;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3272;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3233;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3272;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3238;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3264;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3236;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3262;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3225;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3225;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3236;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3236;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3241;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3241;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3264;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3240;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3240;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3245;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3245;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3264;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3245;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3264;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3240;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3225;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3264;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3230;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3267;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3241;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3268;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3268;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3268;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3228;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3228;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3267;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3267;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3228;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3268;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3253;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3246;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3246;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3246;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3246;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3246;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3253;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3253;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3253;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3253;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3239;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3261;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3239;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3266;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3266;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3234;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3234;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3266;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3238;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3234;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3234;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3239;i:7;s:6:"Win8.1";}', 'a:1:{i:3;i:3021;}', 'a:2:{i:3;i:3261;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3267;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3261;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3239;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3239;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3265;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3265;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3265;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3262;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3262;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3243;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3243;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3255;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3243;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3224;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3258;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3258;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3227;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3255;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3255;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3250;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3250;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3271;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3250;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3271;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3227;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3224;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3271;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3224;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3227;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3258;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3175;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3077;}', 'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3228;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3265;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3027;}', 'a:3:{i:3;i:3233;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3268;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3267;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3240;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3255;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3272;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3227;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3236;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3266;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3224;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3273;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3258;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3271;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3225;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3243;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3234;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3261;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3241;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3262;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3250;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3245;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3230;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:2906;}', 'a:1:{i:3;i:3125;}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:3001;}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:3:{i:3;i:3238;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3271;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3230;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3262;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3021;}', 'a:3:{i:3;i:3245;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3234;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3239;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3241;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3266;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3228;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3268;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3265;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3233;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3261;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3227;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3267;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3250;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3243;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3001;}', 'a:3:{i:3;i:3246;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3273;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3255;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3224;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3272;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3253;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3258;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3240;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3225;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3264;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3236;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3001;}', 'a:1:{i:3;i:3001;}', 'a:2:{i:3;i:3196;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3201;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3198;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3204;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3206;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3201;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3204;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3203;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3208;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3215;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3219;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3207;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3195;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3195;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3210;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3214;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3207;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3215;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3219;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3198;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3211;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3211;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3206;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3216;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3199;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3205;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3199;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3210;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3222;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3197;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3212;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3203;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3209;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3208;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3216;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3213;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3212;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3209;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3196;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3213;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3222;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3148;}', 'a:1:{i:3;i:3154;}', 'a:1:{i:3;i:3155;}', 'a:1:{i:3;i:3143;}', 'a:1:{i:3;i:3149;}', 'a:1:{i:3;i:3150;}', 'a:1:{i:3;i:3153;}', 'a:1:{i:3;i:3147;}', 'a:1:{i:3;i:3158;}', 'a:1:{i:3;i:3157;}', 'a:1:{i:3;i:3152;}', 'a:1:{i:3;i:3146;}', 'a:1:{i:3;i:3159;}', 'a:1:{i:3;i:3156;}', 'a:1:{i:3;i:3001;}', 'a:1:{i:3;i:3151;}', 'a:1:{i:3;i:3145;}', 'a:1:{i:3;i:3132;}', 'a:1:{i:3;i:3135;}', 'a:1:{i:3;i:3139;}', 'a:1:{i:3;i:3136;}', 'a:1:{i:3;i:3142;}', 'a:1:{i:3;i:3140;}', 'a:1:{i:3;i:3133;}', 'a:1:{i:3;i:3134;}', 'a:1:{i:3;i:3138;}', 'a:1:{i:3;i:3141;}', 'a:1:{i:3;i:3137;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:3011;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2996;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3015;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3022;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2993;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3020;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3002;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3009;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3008;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3023;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2995;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2994;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3018;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3010;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2998;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3000;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2997;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2992;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3016;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3017;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3007;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3012;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3014;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3019;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3013;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3003;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3005;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3006;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3004;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3228;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3224;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3239;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3255;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3271;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3227;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3267;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3261;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3266;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3225;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3238;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3233;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3241;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3246;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3273;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3230;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3236;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3264;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3265;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3268;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3240;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3234;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3245;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3087;}', 'a:2:{i:3;i:3243;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3250;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3253;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3272;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3075;}', 'a:2:{i:3;i:3258;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3262;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3110;}', 'a:1:{i:3;i:3118;}', 'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3112;}', 'a:1:{i:3;i:3087;}', 'a:1:{i:3;i:3077;}', 'a:1:{i:3;i:3075;}', 'a:3:{i:3;i:3033;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3221;}', 'a:1:{i:3;i:3202;}', 'a:1:{i:3;i:3220;}', 'a:1:{i:3;i:3218;}', 'a:1:{i:3;i:3200;}', 'a:1:{i:3;i:3217;}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3087;}', 'a:1:{i:3;i:3099;}', 'a:1:{i:3;i:3096;}', 'a:1:{i:3;i:3073;}', 'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3075;}', 'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3290;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3260;}', 'a:2:{i:3;i:3131;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3244;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3259;}', 'a:2:{i:3;i:3130;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3263;}', 'a:1:{i:3;i:3249;}', 'a:1:{i:3;i:3232;}', 'a:1:{i:3;i:3077;}', 'a:2:{i:3;i:3131;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3131;i:7;s:4:"Win8";}', 'a:1:{i:3;i:3256;}', 'a:2:{i:3;i:3257;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3131;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3253;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3272;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3234;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3236;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3240;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3238;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3255;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3243;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3241;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3262;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3268;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3273;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3245;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3258;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3228;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3225;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3261;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3227;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3267;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3266;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3246;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3224;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3265;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3264;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3271;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3233;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3239;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3250;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3230;i:7;s:5:"Linux";}', 'a:3:{i:3;i:3290;i:7;s:7:"Xbox OS";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3128;}', 'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:3093;i:7;s:7:"Xbox OS";i:10;s:9:"TV Device";}', 'a:1:{i:3;i:3144;}', 'a:2:{i:3;i:3207;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3199;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3215;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3209;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3204;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3198;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3197;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3196;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3195;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3212;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3222;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3214;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3216;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3203;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3213;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3201;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3211;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3206;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3219;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3205;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3208;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3210;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3077;}', 'a:1:{i:3;i:2991;}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:3021;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:2:{i:3;i:3130;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:2906;}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:2:{i:3;i:3198;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3216;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3197;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3211;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3205;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3195;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3222;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3210;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3214;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3201;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3204;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3199;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3212;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3215;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3213;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3208;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3196;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3207;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3209;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3203;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3219;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3206;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:1:{i:3;i:3087;}', 'a:1:{i:3;i:3077;}', 'a:2:{i:3;i:3093;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3077;}', 'a:2:{i:3;i:3130;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:1:{i:3;i:3202;}', 'a:1:{i:3;i:3200;}', 'a:1:{i:3;i:3220;}', 'a:1:{i:3;i:3221;}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3168;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3183;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3193;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3163;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3173;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3178;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3181;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3184;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3162;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3194;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:1:{i:3;i:3260;}', 'a:1:{i:3;i:3232;}', 'a:1:{i:3;i:3259;}', 'a:1:{i:3;i:3263;}', 'a:1:{i:3;i:3249;}', 'a:2:{i:3;i:3257;i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:3256;}', 'a:2:{i:3;i:3244;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3131;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2904;}', 'a:3:{i:3;i:3290;i:7;s:8:"Xbox 360";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3289;i:7;s:8:"Xbox 360";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.1";i:6;s:3:"1.1";i:7;s:6:"MacOSX";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.2";i:6;s:3:"1.2";i:7;s:6:"MacOSX";}', 'a:1:{i:3;i:2906;}', 'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.0";i:6;s:3:"1.0";i:7;s:6:"MacOSX";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3129;i:7;s:4:"Win7";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:2:{i:3;i:3130;i:7;s:6:"MacOSX";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win7";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win8";}', 'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3144;}', 'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3130;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:2:{i:3;i:3289;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3288;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3288;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3289;i:7;s:4:"Win7";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:1:{i:3;i:3144;}', 'a:1:{i:3;i:3144;}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3130;i:7;s:5:"Linux";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3093;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:4:"Win7";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:4:"Win7";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win32";}', 'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:4:"Win8";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3109;i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3288;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3288;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3093;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3289;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3289;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3109;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3109;i:7;s:5:"Win10";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3102;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3289;i:7;s:4:"Win7";}', 'a:1:{i:3;i:3173;}', 'a:1:{i:3;i:3166;}', 'a:1:{i:3;i:3193;}', 'a:1:{i:3;i:3174;}', 'a:1:{i:3;i:3162;}', 'a:1:{i:3;i:3180;}', 'a:1:{i:3;i:3177;}', 'a:1:{i:3;i:3183;}', 'a:1:{i:3;i:3164;}', 'a:1:{i:3;i:3181;}', 'a:1:{i:3;i:3188;}', 'a:1:{i:3;i:3161;}', 'a:1:{i:3;i:3178;}', 'a:1:{i:3;i:3179;}', 'a:1:{i:3;i:3189;}', 'a:1:{i:3;i:3168;}', 'a:1:{i:3;i:3194;}', 'a:1:{i:3;i:3172;}', 'a:1:{i:3;i:3165;}', 'a:1:{i:3;i:3182;}', 'a:1:{i:3;i:3187;}', 'a:1:{i:3;i:3192;}', 'a:1:{i:3;i:3171;}', 'a:1:{i:3;i:3163;}', 'a:1:{i:3;i:3185;}', 'a:1:{i:3;i:3169;}', 'a:1:{i:3;i:3170;}', 'a:1:{i:3;i:3176;}', 'a:1:{i:3;i:3186;}', 'a:1:{i:3;i:3160;}', 'a:1:{i:3;i:3184;}', 'a:1:{i:3;i:3191;}', 'a:1:{i:3;i:3190;}', 'a:1:{i:3;i:3167;}', 'a:2:{i:3;i:3287;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3093;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3288;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3288;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3289;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3289;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win8";}', 'a:3:{i:3;i:2951;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2951;}', 'a:1:{i:3;i:2941;}', 'a:1:{i:3;i:2940;}', 'a:3:{i:3;i:2930;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2957;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:3:{i:3;i:2939;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2964;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2930;}', 'a:1:{i:3;i:2955;}', 'a:1:{i:3;i:2959;}', 'a:3:{i:3;i:2959;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2940;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2942;}', 'a:1:{i:3;i:2954;}', 'a:3:{i:3;i:2942;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2956;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2968;}', 'a:1:{i:3;i:2939;}', 'a:3:{i:3;i:2941;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2954;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2932;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2935;}', 'a:3:{i:3;i:2935;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2937;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2936;}', 'a:3:{i:3;i:2925;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2925;}', 'a:3:{i:3;i:2921;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2937;}', 'a:1:{i:3;i:2926;}', 'a:3:{i:3;i:2926;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2936;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2946;}', 'a:3:{i:3;i:2948;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2948;}', 'a:3:{i:3;i:2950;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2950;}', 'a:1:{i:3;i:2947;}', 'a:3:{i:3;i:2947;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2946;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2945;}', 'a:3:{i:3;i:2945;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2921;}', 'a:3:{i:3;i:2922;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2958;}', 'a:2:{i:3;i:3129;i:7;s:4:"Win8";}', 'a:1:{i:3;i:2934;}', 'a:3:{i:3;i:2934;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2932;}', 'a:3:{i:3;i:2952;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2931;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}', 'a:1:{i:3;i:2952;}', 'a:2:{i:3;i:3129;i:7;s:4:"Win7";}', 'a:1:{i:3;i:2933;}', 'a:1:{i:3;i:2927;}', 'a:3:{i:3;i:2927;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2964;}', 'a:1:{i:3;i:2922;}', 'a:1:{i:3;i:2956;}', 'a:3:{i:3;i:2928;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2933;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}', 'a:1:{i:3;i:2928;}', 'a:1:{i:3;i:2931;}', 'a:3:{i:3;i:2938;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2929;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2944;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2969;}', 'a:1:{i:3;i:2967;}', 'a:1:{i:3;i:2973;}', 'a:1:{i:3;i:2976;}', 'a:3:{i:3;i:2973;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2929;}', 'a:3:{i:3;i:2962;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2967;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2968;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2943;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2923;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2972;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2965;}', 'a:3:{i:3;i:2978;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2963;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2974;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2977;}', 'a:1:{i:3;i:2963;}', 'a:1:{i:3;i:2943;}', 'a:3:{i:3;i:2975;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2975;}', 'a:1:{i:3;i:2978;}', 'a:1:{i:3;i:2919;}', 'a:3:{i:3;i:2965;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2944;}', 'a:3:{i:3;i:2976;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2974;}', 'a:1:{i:3;i:2971;}', 'a:3:{i:3;i:2977;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2971;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2969;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2972;}', 'a:1:{i:3;i:2957;}', 'a:3:{i:3;i:2970;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2924;}', 'a:3:{i:3;i:2958;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2961;}', 'a:1:{i:3;i:2970;}', 'a:3:{i:3;i:2924;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2923;}', 'a:1:{i:3;i:2938;}', 'a:3:{i:3;i:2919;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:3:{i:3;i:2955;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2949;}', 'a:3:{i:3;i:2949;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2961;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2962;}', 'a:1:{i:3;i:3129;}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:1:{i:3;i:3021;}', 'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:2988;}', 'a:3:{i:3;i:2982;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2990;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2983;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2984;}', 'a:3:{i:3;i:2987;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2990;}', 'a:1:{i:3;i:2987;}', 'a:1:{i:3;i:2999;}', 'a:3:{i:3;i:2984;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2983;}', 'a:3:{i:3;i:2988;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:3:{i:3;i:2999;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2981;}', 'a:3:{i:3;i:2986;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2982;}', 'a:3:{i:3;i:2985;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2985;}', 'a:3:{i:3;i:2989;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2986;}', 'a:3:{i:3;i:2981;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2989;}', 'a:2:{i:3;i:3109;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3102;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3289;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3129;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3129;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3287;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3129;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3129;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}', 'a:1:{i:3;i:2904;}', 'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3093;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3093;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3290;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3021;}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:1:{i:3;i:2904;}', 'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3290;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3105;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3105;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3289;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3289;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3288;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3288;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3102;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}', 'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3102;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3162;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3164;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3174;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3194;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3173;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3190;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3192;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3166;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3169;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3161;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3170;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3165;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3180;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3184;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3187;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3177;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3167;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3182;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3191;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3183;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3186;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3189;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3185;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3163;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3181;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3171;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3178;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3193;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3168;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3193;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}', 'a:2:{i:3;i:3179;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3176;i:7;s:4:"Win7";}', 'a:2:{i:3;i:3188;i:7;s:4:"Win8";}', 'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win10";}', 'a:2:{i:3;i:3174;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3173;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3183;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3189;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3167;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3191;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3162;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3186;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3174;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3181;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3169;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3181;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3184;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3185;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3183;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3191;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3192;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3166;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3177;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3163;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3185;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3169;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3192;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3163;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3160;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3176;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3184;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3177;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3172;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3173;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3194;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3164;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3188;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3171;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3170;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3178;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3182;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3182;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3176;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3179;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3160;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3165;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3187;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3165;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3178;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3186;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3187;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3172;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3190;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3190;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3180;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3161;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3194;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3189;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3164;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3162;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3179;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3180;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3168;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3161;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3188;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3193;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3193;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3170;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3168;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3167;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3171;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3166;i:7;s:5:"Linux";}', 'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3021;}', 'a:2:{i:3;i:3129;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3129;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3129;i:7;s:5:"Linux";}', 'a:2:{i:3;i:3129;i:7;s:5:"Linux";}', 'a:1:{i:3;i:3021;}', 'a:2:{i:3;i:3193;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3172;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3182;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3179;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3176;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3189;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3186;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3164;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3178;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3171;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3181;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3191;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3187;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3188;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3167;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3168;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3161;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3184;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3173;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3194;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3192;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3170;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3169;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3166;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3185;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3162;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3180;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3165;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3190;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3183;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3174;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3177;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3163;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3160;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}', 'a:2:{i:3;i:3102;i:7;s:5:"Win32";}', 'a:2:{i:3;i:3129;i:7;s:5:"Win32";}', 'a:1:{i:3;i:3248;}', 'a:1:{i:3;i:3229;}', 'a:1:{i:3;i:3223;}', 'a:1:{i:3;i:3254;}', 'a:1:{i:3;i:3231;}', 'a:1:{i:3;i:3242;}', 'a:1:{i:3;i:3252;}', 'a:1:{i:3;i:3235;}', 'a:1:{i:3;i:3237;}', 'a:1:{i:3;i:3226;}', 'a:1:{i:3;i:3247;}', 'a:1:{i:3;i:3251;}', 'a:1:{i:3;i:3269;}', 'a:1:{i:3;i:3270;}', 'a:1:{i:3;i:3278;}', 'a:1:{i:3;i:3285;}', 'a:1:{i:3;i:3276;}', 'a:1:{i:3;i:3277;}', 'a:1:{i:3;i:3282;}', 'a:1:{i:3;i:3279;}', 'a:7:{i:3;i:3119;i:4;s:15:"Firefox Generic";i:5;s:7:"Firefox";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3293;}', 'a:6:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:1:{i:3;i:3033;}', 'a:1:{i:3;i:3029;}', 'a:1:{i:3;i:3030;}', 'a:1:{i:3;i:3028;}', 'a:1:{i:3;i:3026;}', 'a:1:{i:3;i:3034;}', 'a:5:{i:3;i:3119;i:4;s:14:"Safari Generic";i:5;s:6:"Safari";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:1:{i:3;i:3105;}', 'a:1:{i:3;i:3105;}', 'a:1:{i:3;i:3032;}', 'a:1:{i:3;i:3035;}', 'a:6:{i:3;i:3119;i:4;s:24:"Edge Generic for Android";i:5;s:4:"Edge";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 47.0";i:5;s:7:"Firefox";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.1";i:5;s:6:"Safari";i:6;s:3:"7.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 53.0";i:5;s:7:"Firefox";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 54.0";i:5;s:7:"Firefox";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 11.0";i:5;s:7:"Firefox";i:6;s:4:"11.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 10.0";i:5;s:7:"Firefox";i:6;s:4:"10.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 51.0";i:5;s:7:"Firefox";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 52.0";i:5;s:7:"Firefox";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 55.0";i:5;s:7:"Firefox";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 56.0";i:5;s:7:"Firefox";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 12.0";i:5;s:7:"Firefox";i:6;s:4:"12.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 62.0";i:5;s:7:"Firefox";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 61.0";i:5;s:7:"Firefox";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 59.0";i:5;s:7:"Firefox";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 57.0";i:5;s:7:"Firefox";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 58.0";i:5;s:7:"Firefox";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 50.1";i:5;s:7:"Firefox";i:6;s:4:"50.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 50.0";i:5;s:7:"Firefox";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 25.0";i:5;s:7:"Firefox";i:6;s:4:"25.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 20.0";i:5;s:7:"Firefox";i:6;s:4:"20.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 24.0";i:5;s:7:"Firefox";i:6;s:4:"24.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 21.0";i:5;s:7:"Firefox";i:6;s:4:"21.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 22.0";i:5;s:7:"Firefox";i:6;s:4:"22.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 23.0";i:5;s:7:"Firefox";i:6;s:4:"23.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 26.0";i:5;s:7:"Firefox";i:6;s:4:"26.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 27.0";i:5;s:7:"Firefox";i:6;s:4:"27.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 48.0";i:5;s:7:"Firefox";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 49.0";i:5;s:7:"Firefox";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 31.0";i:5;s:7:"Firefox";i:6;s:4:"31.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 30.0";i:5;s:7:"Firefox";i:6;s:4:"30.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 28.0";i:5;s:7:"Firefox";i:6;s:4:"28.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 29.0";i:5;s:7:"Firefox";i:6;s:4:"29.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 63.0";i:5;s:7:"Firefox";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 60.0";i:5;s:7:"Firefox";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.1";i:5;s:6:"Safari";i:6;s:3:"6.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 36.0";i:5;s:7:"Firefox";i:6;s:4:"36.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 18.0";i:5;s:7:"Firefox";i:6;s:4:"18.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 37.0";i:5;s:7:"Firefox";i:6;s:4:"37.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 17.0";i:5;s:7:"Firefox";i:6;s:4:"17.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 39.0";i:5;s:7:"Firefox";i:6;s:4:"39.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 38.0";i:5;s:7:"Firefox";i:6;s:4:"38.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.2";i:5;s:6:"Safari";i:6;s:3:"6.2";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 35.0";i:5;s:7:"Firefox";i:6;s:4:"35.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 33.0";i:5;s:7:"Firefox";i:6;s:4:"33.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:12:"Firefox 46.0";i:5;s:7:"Firefox";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 32.0";i:5;s:7:"Firefox";i:6;s:4:"32.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 33.1";i:5;s:7:"Firefox";i:6;s:4:"33.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 34.0";i:5;s:7:"Firefox";i:6;s:4:"34.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 19.0";i:5;s:7:"Firefox";i:6;s:4:"19.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 16.0";i:5;s:7:"Firefox";i:6;s:4:"16.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 40.0";i:5;s:7:"Firefox";i:6;s:4:"40.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 43.0";i:5;s:7:"Firefox";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 41.0";i:5;s:7:"Firefox";i:6;s:4:"41.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 42.0";i:5;s:7:"Firefox";i:6;s:4:"42.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 14.0";i:5;s:7:"Firefox";i:6;s:4:"14.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 44.0";i:5;s:7:"Firefox";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 13.0";i:5;s:7:"Firefox";i:6;s:4:"13.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 45.0";i:5;s:7:"Firefox";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:12:"Firefox 15.0";i:5;s:7:"Firefox";i:6;s:4:"15.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:1:{i:3;i:3287;}', 'a:1:{i:3;i:3287;}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 5.0";i:5;s:7:"Firefox";i:6;s:3:"5.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 8.0";i:5;s:7:"Firefox";i:6;s:3:"8.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 1.1";i:5;s:7:"Firefox";i:6;s:3:"1.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 1.0";i:5;s:7:"Firefox";i:6;s:3:"1.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 4.0";i:5;s:7:"Firefox";i:6;s:3:"4.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.3";i:5;s:7:"Firefox";i:6;s:3:"2.3";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 6.0";i:5;s:7:"Firefox";i:6;s:3:"6.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.0";i:5;s:7:"Firefox";i:6;s:3:"2.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.1";i:5;s:7:"Firefox";i:6;s:3:"2.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 9.0";i:5;s:7:"Firefox";i:6;s:3:"9.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:6:{i:3;i:3119;i:4;s:23:"Android Browser Generic";i:5;s:7:"Android";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:8:{i:3;i:3119;i:4;s:11:"Firefox 7.0";i:5;s:7:"Firefox";i:6;s:3:"7.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:23:"Android WebView Generic";i:5;s:15:"Android WebView";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 45.0";i:5;s:6:"Chrome";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 44.0";i:5;s:6:"Chrome";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 43.0";i:5;s:6:"Chrome";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 46.0";i:5;s:6:"Chrome";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 47.0";i:5;s:6:"Chrome";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 49.0";i:5;s:6:"Chrome";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 48.0";i:5;s:6:"Chrome";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:23:"Mobile Safari UIWebView";i:5;s:23:"Mobile Safari UIWebView";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:3290;}', 'a:1:{i:3;i:3290;}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.1";i:5;s:6:"Safari";i:6;s:3:"9.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:9:"Edge 41.0";i:5;s:4:"Edge";i:6;s:4:"41.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:21:"Mobile Safari Generic";i:5;s:6:"Safari";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:9:"Edge 42.0";i:5;s:4:"Edge";i:6;s:4:"42.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 67.0";i:5;s:15:"Android WebView";i:6;s:4:"67.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 66.0";i:5;s:15:"Android WebView";i:6;s:4:"66.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 53.0";i:5;s:15:"Android WebView";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 55.0";i:5;s:15:"Android WebView";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 56.0";i:5;s:15:"Android WebView";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 57.0";i:5;s:15:"Android WebView";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 52.0";i:5;s:15:"Android WebView";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 51.0";i:5;s:15:"Android WebView";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 47.0";i:5;s:15:"Android WebView";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 48.0";i:5;s:15:"Android WebView";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 49.0";i:5;s:15:"Android WebView";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 50.0";i:5;s:15:"Android WebView";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 71.0";i:5;s:15:"Android WebView";i:6;s:4:"71.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 70.0";i:5;s:15:"Android WebView";i:6;s:4:"70.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 62.0";i:5;s:15:"Android WebView";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 63.0";i:5;s:15:"Android WebView";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 64.0";i:5;s:15:"Android WebView";i:6;s:4:"64.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 65.0";i:5;s:15:"Android WebView";i:6;s:4:"65.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 61.0";i:5;s:15:"Android WebView";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 68.0";i:5;s:15:"Android WebView";i:6;s:4:"68.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 58.0";i:5;s:15:"Android WebView";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 59.0";i:5;s:15:"Android WebView";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 60.0";i:5;s:15:"Android WebView";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 69.0";i:5;s:15:"Android WebView";i:6;s:4:"69.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 46.0";i:5;s:15:"Android WebView";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 54.0";i:5;s:15:"Android WebView";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 45.0";i:5;s:15:"Android WebView";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:20:"Edge Generic for iOS";i:5;s:4:"Edge";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:4:{i:3;i:3119;i:4;s:6:"Safari";i:5;s:6:"Safari";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 44.0";i:5;s:15:"Android WebView";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 43.0";i:5;s:15:"Android WebView";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:1:{i:3;i:2913;}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.3";i:5;s:7:"Android";i:6;s:3:"4.3";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 49.0";i:5;s:6:"Chrome";i:6;s:4:"49.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.2";i:5;s:7:"Android";i:6;s:3:"4.2";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.0";i:5;s:7:"Android";i:6;s:3:"4.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.1";i:5;s:7:"Android";i:6;s:3:"4.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:19:"Edge Mobile Generic";i:5;s:11:"Edge Mobile";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:5:{i:3;i:3119;i:4;s:7:"IE 10.0";i:5;s:2:"IE";i:6;s:4:"10.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 48.0";i:5;s:6:"Chrome";i:6;s:4:"48.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 5.1";i:5;s:7:"Android";i:6;s:3:"5.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 5.0";i:5;s:7:"Android";i:6;s:3:"5.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.4";i:5;s:7:"Android";i:6;s:3:"4.4";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 12.0";i:5;s:6:"Safari";i:6;s:4:"12.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:6:"IE 6.0";i:5;s:2:"IE";i:6;s:3:"6.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:7:"IE 10.0";i:5;s:2:"IE";i:6;s:4:"10.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.5";i:5;s:4:"Sraf";i:6;s:3:"3.5";i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.0";i:5;s:4:"Sraf";i:6;s:3:"3.0";i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:9:"Edge 42.0";i:5;s:4:"Edge";i:6;s:4:"42.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:9:"Edge 41.0";i:5;s:4:"Edge";i:6;s:4:"41.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.9";i:5;s:4:"Sraf";i:6;s:3:"3.9";i:7;s:5:"Linux";i:10;s:9:"TV Device";}', 'a:7:{i:4;s:17:"DefaultProperties";i:5;s:17:"DefaultProperties";i:6;s:3:"0.0";i:7;s:7:"unknown";i:8;s:5:"false";i:9;s:5:"false";i:10;s:7:"unknown";}', 'a:6:{i:3;i:3119;i:4;s:6:"IE 6.0";i:5;s:2:"IE";i:6;s:3:"6.0";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 15.0";i:5;s:11:"Edge Mobile";i:6;s:4:"15.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 17.0";i:5;s:11:"Edge Mobile";i:6;s:4:"17.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 12.0";i:5;s:11:"Edge Mobile";i:6;s:4:"12.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 13.0";i:5;s:11:"Edge Mobile";i:6;s:4:"13.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"YOLO Browser 1.0";i:5;s:12:"YOLO Browser";i:6;s:3:"1.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 16.0";i:5;s:11:"Edge Mobile";i:6;s:4:"16.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 14.0";i:5;s:11:"Edge Mobile";i:6;s:4:"14.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:5:{i:3;i:3119;i:4;s:15:"Headless Chrome";i:5;s:15:"Headless Chrome";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:4:{i:3;i:3119;i:4;s:15:"Firefox Generic";i:5;s:7:"Firefox";i:10;s:7:"Desktop";}', 'a:4:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:10;s:7:"Desktop";}', 'a:4:{i:3;i:3119;i:4;s:14:"Safari Generic";i:5;s:6:"Safari";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 69.0";i:5;s:8:"Chromium";i:6;s:4:"69.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 71.0";i:5;s:8:"Chromium";i:6;s:4:"71.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 66.0";i:5;s:8:"Chromium";i:6;s:4:"66.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 65.0";i:5;s:8:"Chromium";i:6;s:4:"65.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 64.0";i:5;s:8:"Chromium";i:6;s:4:"64.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 67.0";i:5;s:8:"Chromium";i:6;s:4:"67.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 70.0";i:5;s:8:"Chromium";i:6;s:4:"70.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 61.0";i:5;s:8:"Chromium";i:6;s:4:"61.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 63.0";i:5;s:8:"Chromium";i:6;s:4:"63.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 68.0";i:5;s:8:"Chromium";i:6;s:4:"68.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 62.0";i:5;s:8:"Chromium";i:6;s:4:"62.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 60.0";i:5;s:8:"Chromium";i:6;s:4:"60.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:13:"IEMobile 11.0";i:5;s:8:"IEMobile";i:6;s:4:"11.0";i:7;s:11:"WinPhone8.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 57.0";i:5;s:8:"Chromium";i:6;s:4:"57.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 56.0";i:5;s:8:"Chromium";i:6;s:4:"56.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 46.0";i:5;s:8:"Chromium";i:6;s:4:"46.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 59.0";i:5;s:8:"Chromium";i:6;s:4:"59.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 48.0";i:5;s:8:"Chromium";i:6;s:4:"48.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 47.0";i:5;s:8:"Chromium";i:6;s:4:"47.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 58.0";i:5;s:8:"Chromium";i:6;s:4:"58.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 55.0";i:5;s:8:"Chromium";i:6;s:4:"55.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 45.0";i:5;s:8:"Chromium";i:6;s:4:"45.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 50.0";i:5;s:8:"Chromium";i:6;s:4:"50.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 49.0";i:5;s:8:"Chromium";i:6;s:4:"49.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 53.0";i:5;s:8:"Chromium";i:6;s:4:"53.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 52.0";i:5;s:8:"Chromium";i:6;s:4:"52.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 51.0";i:5;s:8:"Chromium";i:6;s:4:"51.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:13:"Chromium 54.0";i:5;s:8:"Chromium";i:6;s:4:"54.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 41.0";i:5;s:7:"Firefox";i:6;s:4:"41.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 31.0";i:5;s:7:"Firefox";i:6;s:4:"31.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 63.0";i:5;s:7:"Firefox";i:6;s:4:"63.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 54.0";i:5;s:7:"Firefox";i:6;s:4:"54.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 33.0";i:5;s:7:"Firefox";i:6;s:4:"33.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 45.0";i:5;s:7:"Firefox";i:6;s:4:"45.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 51.0";i:5;s:7:"Firefox";i:6;s:4:"51.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 38.0";i:5;s:7:"Firefox";i:6;s:4:"38.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 55.0";i:5;s:7:"Firefox";i:6;s:4:"55.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 43.0";i:5;s:7:"Firefox";i:6;s:4:"43.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 44.0";i:5;s:7:"Firefox";i:6;s:4:"44.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 37.0";i:5;s:7:"Firefox";i:6;s:4:"37.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 34.0";i:5;s:7:"Firefox";i:6;s:4:"34.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 60.0";i:5;s:7:"Firefox";i:6;s:4:"60.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 50.0";i:5;s:7:"Firefox";i:6;s:4:"50.0";i:10;s:7:"Desktop";}', 'a:4:{i:3;i:3119;i:4;s:12:"Edge Generic";i:5;s:4:"Edge";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 42.0";i:5;s:7:"Firefox";i:6;s:4:"42.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 30.0";i:5;s:7:"Firefox";i:6;s:4:"30.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 57.0";i:5;s:7:"Firefox";i:6;s:4:"57.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 49.0";i:5;s:7:"Firefox";i:6;s:4:"49.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 61.0";i:5;s:7:"Firefox";i:6;s:4:"61.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 56.0";i:5;s:7:"Firefox";i:6;s:4:"56.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 47.0";i:5;s:7:"Firefox";i:6;s:4:"47.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 58.0";i:5;s:7:"Firefox";i:6;s:4:"58.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 53.0";i:5;s:7:"Firefox";i:6;s:4:"53.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 36.0";i:5;s:7:"Firefox";i:6;s:4:"36.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 40.0";i:5;s:7:"Firefox";i:6;s:4:"40.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 52.0";i:5;s:7:"Firefox";i:6;s:4:"52.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 48.0";i:5;s:7:"Firefox";i:6;s:4:"48.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 32.0";i:5;s:7:"Firefox";i:6;s:4:"32.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 39.0";i:5;s:7:"Firefox";i:6;s:4:"39.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 35.0";i:5;s:7:"Firefox";i:6;s:4:"35.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 46.0";i:5;s:7:"Firefox";i:6;s:4:"46.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 62.0";i:5;s:7:"Firefox";i:6;s:4:"62.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:12:"Firefox 59.0";i:5;s:7:"Firefox";i:6;s:4:"59.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.1";i:5;s:6:"Safari";i:6;s:4:"10.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 12.0";i:5;s:6:"Safari";i:6;s:4:"12.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.1";i:5;s:6:"Safari";i:6;s:4:"11.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.2";i:5;s:6:"Safari";i:6;s:4:"10.2";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.01";i:5;s:5:"Coast";i:6;s:4:"3.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 39.0";i:5;s:5:"Opera";i:6;s:4:"39.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 37.0";i:5;s:5:"Opera";i:6;s:4:"37.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.01";i:5;s:5:"Coast";i:6;s:4:"4.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 38.0";i:5;s:5:"Opera";i:6;s:4:"38.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 55.0";i:5;s:5:"Opera";i:6;s:4:"55.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.02";i:5;s:5:"Coast";i:6;s:4:"3.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 36.0";i:5;s:5:"Opera";i:6;s:4:"36.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.21";i:5;s:5:"Coast";i:6;s:4:"3.21";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 35.0";i:5;s:5:"Opera";i:6;s:4:"35.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 34.0";i:5;s:5:"Opera";i:6;s:4:"34.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.02";i:5;s:5:"Coast";i:6;s:4:"4.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 46.0";i:5;s:5:"Opera";i:6;s:4:"46.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.21";i:5;s:5:"Coast";i:6;s:4:"4.21";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 30.0";i:5;s:5:"Opera";i:6;s:4:"30.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 29.0";i:5;s:5:"Opera";i:6;s:4:"29.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 47.0";i:5;s:5:"Opera";i:6;s:4:"47.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 45.0";i:5;s:5:"Opera";i:6;s:4:"45.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.03";i:5;s:5:"Coast";i:6;s:4:"5.03";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 42.0";i:5;s:5:"Opera";i:6;s:4:"42.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 48.0";i:5;s:5:"Opera";i:6;s:4:"48.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 28.0";i:5;s:5:"Opera";i:6;s:4:"28.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.30";i:5;s:5:"Coast";i:6;s:4:"4.30";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.51";i:5;s:5:"Coast";i:6;s:4:"4.51";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 43.0";i:5;s:5:"Opera";i:6;s:4:"43.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.01";i:5;s:5:"Coast";i:6;s:4:"5.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.02";i:5;s:5:"Coast";i:6;s:4:"5.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 27.0";i:5;s:5:"Opera";i:6;s:4:"27.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.31";i:5;s:5:"Coast";i:6;s:4:"4.31";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 44.0";i:5;s:5:"Opera";i:6;s:4:"44.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.1";i:5;s:6:"Safari";i:6;s:3:"9.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Safari 7.1";i:5;s:6:"Safari";i:6;s:3:"7.1";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 41.0";i:5;s:5:"Opera";i:6;s:4:"41.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.2";i:5;s:6:"Safari";i:6;s:3:"6.2";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 54.0";i:5;s:5:"Opera";i:6;s:4:"54.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 51.0";i:5;s:5:"Opera";i:6;s:4:"51.0";i:10;s:7:"Desktop";}', 'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.1";i:5;s:6:"Safari";i:6;s:3:"6.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 31.0";i:5;s:5:"Opera";i:6;s:4:"31.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 53.0";i:5;s:5:"Opera";i:6;s:4:"53.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 52.0";i:5;s:5:"Opera";i:6;s:4:"52.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 33.0";i:5;s:5:"Opera";i:6;s:4:"33.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 32.0";i:5;s:5:"Opera";i:6;s:4:"32.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.03";i:5;s:5:"Coast";i:6;s:4:"4.03";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.04";i:5;s:5:"Coast";i:6;s:4:"5.04";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 40.0";i:5;s:5:"Opera";i:6;s:4:"40.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 49.0";i:5;s:5:"Opera";i:6;s:4:"49.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:10:"Opera 50.0";i:5;s:5:"Opera";i:6;s:4:"50.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 15.0";i:5;s:4:"Edge";i:6;s:4:"15.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 13.0";i:5;s:4:"Edge";i:6;s:4:"13.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 3.0";i:5;s:5:"Coast";i:6;s:3:"3.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.1";i:5;s:5:"Coast";i:6;s:3:"4.1";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 3.1";i:5;s:5:"Coast";i:6;s:3:"3.1";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.5";i:5;s:5:"Coast";i:6;s:3:"4.5";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 14.0";i:5;s:4:"Edge";i:6;s:4:"14.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 16.0";i:5;s:4:"Edge";i:6;s:4:"16.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.0";i:5;s:5:"Coast";i:6;s:3:"4.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 17.0";i:5;s:4:"Edge";i:6;s:4:"17.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:9:"Edge 12.0";i:5;s:4:"Edge";i:6;s:4:"12.0";i:10;s:7:"Desktop";}', 'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.4";i:5;s:5:"Coast";i:6;s:3:"4.4";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}', 'a:5:{i:3;i:3119;i:4;s:7:"IE 7.0b";i:5;s:2:"IE";i:6;s:4:"7.0b";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:6:"IE 8.0";i:5;s:2:"IE";i:6;s:3:"8.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:6:"IE 9.0";i:5;s:2:"IE";i:6;s:3:"9.0";i:10;s:7:"Desktop";}', 'a:5:{i:3;i:3119;i:4;s:6:"IE 7.0";i:5;s:2:"IE";i:6;s:3:"7.0";i:10;s:7:"Desktop";}', 'a:1:{i:3;i:3021;}', 'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}', 'a:6:{i:3;i:3119;i:4;s:5:"Coast";i:5;s:5:"Coast";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}', 'a:3:{i:3;i:3119;i:4;s:15:"Default Browser";i:5;s:15:"Default Browser";}' ); $userAgents=array( 3144=>'IEMobile 11.0', 3118=>'Seraphic Sraf 3.9', 3112=>'Seraphic Sraf 3.0', 3110=>'Seraphic Sraf 3.5', 3117=>'Edge 41.0 for iOS', 3114=>'Edge 42.0 for iOS', 3064=>'Edge Generic for iOS', 3096=>'Android Browser 5.0', 3175=>'Edge Generic', 3281=>'Edge 16.0', 3280=>'Edge 14.0', 3275=>'Edge 13.0', 3274=>'Edge 15.0', 3283=>'Edge 17.0', 3247=>'Coast 4.30', 3226=>'Coast 4.01', 3248=>'Coast 4.51', 3223=>'Coast 3.01', 3231=>'Coast 3.21', 3229=>'Coast 3.02', 3242=>'Coast 5.03', 3269=>'Coast 4.03', 3235=>'Coast 4.02', 3252=>'Coast 5.02', 3251=>'Coast 5.01', 3237=>'Coast 4.21', 3254=>'Coast 4.31', 3270=>'Coast 5.04', 3077=>'Android Browser 4.0', 3285=>'Coast 4.4', 3279=>'Coast 4.5', 3277=>'Coast 4.1', 3282=>'Coast 4.0', 3276=>'Coast 3.0', 3278=>'Coast 3.1', 3293=>'Coast', 3121=>'Edge Mobile 15.0', 3122=>'Edge Mobile 17.0', 3124=>'Edge Mobile 13.0', 3127=>'Edge Mobile 14.0', 3126=>'Edge Mobile 16.0', 3095=>'Android Browser 5.1', 3092=>'Edge Mobile Generic', 3104=>'Mobile Safari 12.0', 3108=>'Mobile Safari 10.0', 3106=>'Mobile Safari 11.0', 3102=>'IE 11.0 for Desktop', 3115=>'Mobile Safari 7.0', 3113=>'Mobile Safari 8.0', 3116=>'Mobile Safari 6.0', 3111=>'Mobile Safari 9.0', 3078=>'Chrome 61.0 for iOS', 3088=>'Chrome 65.0 for iOS', 3085=>'Chrome 58.0 for iOS', 3080=>'Chrome 60.0 for iOS', 3098=>'Chrome 63.0 for iOS', 3089=>'Chrome 62.0 for iOS', 3101=>'Chrome 64.0 for iOS', 3079=>'Chrome 57.0 for iOS', 3076=>'Chrome 56.0 for iOS', 3081=>'Chrome 59.0 for iOS', 3094=>'Chrome 48.0 for iOS', 3091=>'Chrome 51.0 for iOS', 3090=>'Chrome 52.0 for iOS', 3074=>'Chrome 49.0 for iOS', 3097=>'Chrome 54.0 for iOS', 3082=>'Chrome 67.0 for iOS', 3072=>'Chrome 55.0 for iOS', 3083=>'Chrome 66.0 for iOS', 3070=>'Chrome 69.0 for iOS', 3086=>'Chrome 68.0 for iOS', 3069=>'Chrome 70.0 for iOS', 3100=>'Chrome 50.0 for iOS', 3071=>'Chrome 71.0 for iOS', 3084=>'Chrome 53.0 for iOS', 3123=>'Edge Mobile 12.0', 3027=>'Chrome Generic for iOS', 3033=>'Mobile Safari Generic', 3288=>'IE 8.0', 3036=>'Edge 42.0 for Android', 3031=>'Edge 41.0 for Android', 3051=>'Android WebView 62.0', 3063=>'Android WebView 45.0', 3050=>'Android WebView 70.0', 3060=>'Android WebView 69.0', 3054=>'Android WebView 65.0', 3053=>'Android WebView 64.0', 3055=>'Android WebView 61.0', 3067=>'Android WebView 43.0', 3038=>'Android WebView 66.0', 3066=>'Android WebView 44.0', 3037=>'Android WebView 67.0', 3056=>'Android WebView 68.0', 3061=>'Android WebView 46.0', 3049=>'Android WebView 71.0', 3039=>'Android WebView 53.0', 3052=>'Android WebView 63.0', 3062=>'Android WebView 54.0', 3040=>'Android WebView 55.0', 3057=>'Android WebView 58.0', 3059=>'Android WebView 60.0', 3041=>'Android WebView 56.0', 3042=>'Android WebView 57.0', 3043=>'Android WebView 52.0', 3047=>'Android WebView 49.0', 3046=>'Android WebView 48.0', 3045=>'Android WebView 47.0', 3058=>'Android WebView 59.0', 3048=>'Android WebView 50.0', 3044=>'Android WebView 51.0', 3219=>'Chrome 61.0', 3213=>'Chrome 70.0', 3205=>'Chrome 60.0', 3206=>'Chrome 65.0', 3203=>'Chrome 63.0', 3197=>'Chrome 67.0', 3222=>'Chrome 64.0', 3214=>'Chrome 68.0', 3195=>'Chrome 62.0', 3196=>'Chrome 66.0', 3216=>'Chrome 69.0', 3201=>'Chrome 52.0', 3209=>'Chrome 55.0', 3208=>'Chrome 57.0', 3198=>'Chrome 71.0', 3199=>'Chrome 54.0', 3215=>'Chrome 53.0', 3211=>'Chrome 50.0', 3212=>'Chrome 51.0', 3207=>'Chrome 58.0', 3210=>'Chrome 56.0', 3204=>'Chrome 59.0', 3130=>'Chrome Generic', 2918=>'Edge Generic for Android', 3139=>'Chromium 61.0', 3142=>'Chromium 62.0', 3140=>'Chromium 63.0', 3136=>'Chromium 64.0', 3143=>'Chromium 60.0', 3148=>'Chromium 59.0', 3146=>'Chromium 56.0', 3145=>'Chromium 57.0', 3151=>'Chromium 58.0', 3135=>'Chromium 65.0', 3134=>'Chromium 66.0', 3153=>'Chromium 45.0', 3150=>'Chromium 47.0', 3133=>'Chromium 71.0', 3147=>'Chromium 46.0', 3138=>'Chromium 70.0', 3141=>'Chromium 68.0', 3132=>'Chromium 69.0', 3152=>'Chromium 55.0', 3137=>'Chromium 67.0', 3157=>'Chromium 52.0', 3158=>'Chromium 51.0', 3154=>'Chromium 50.0', 3149=>'Chromium 48.0', 3156=>'Chromium 53.0', 3155=>'Chromium 49.0', 3159=>'Chromium 54.0', 3284=>'Edge 12.0', 3021=>'Mobile Safari UIWebView', 3008=>'Chrome 49.0 for Android', 2994=>'Chrome 52.0 for Android', 2995=>'Chrome 51.0 for Android', 2993=>'Chrome 53.0 for Android', 2996=>'Chrome 54.0 for Android', 3011=>'Chrome 55.0 for Android', 3002=>'Chrome 50.0 for Android', 3009=>'Chrome 48.0 for Android', 3004=>'Chrome 44.0 for Android', 3005=>'Chrome 43.0 for Android', 3003=>'Chrome 45.0 for Android', 3006=>'Chrome 46.0 for Android', 3007=>'Chrome 47.0 for Android', 3015=>'Chrome 56.0 for Android', 3020=>'Chrome 57.0 for Android', 2992=>'Chrome 66.0 for Android', 3016=>'Chrome 65.0 for Android', 3013=>'Chrome 67.0 for Android', 3010=>'Chrome 68.0 for Android', 2998=>'Chrome 69.0 for Android', 3014=>'Chrome 64.0 for Android', 3012=>'Chrome 63.0 for Android', 3023=>'Chrome 59.0 for Android', 3022=>'Chrome 58.0 for Android', 3019=>'Chrome 60.0 for Android', 3017=>'Chrome 61.0 for Android', 3018=>'Chrome 62.0 for Android', 3000=>'Chrome 70.0 for Android', 2997=>'Chrome 71.0 for Android', 3266=>'Opera 52.0', 3265=>'Opera 53.0', 3250=>'Opera 43.0', 3262=>'Opera 51.0', 3267=>'Opera 33.0', 3261=>'Opera 54.0', 3258=>'Opera 41.0', 3246=>'Opera 28.0', 3253=>'Opera 27.0', 3228=>'Opera 55.0', 3243=>'Opera 42.0', 3234=>'Opera 34.0', 3273=>'Opera 50.0', 3255=>'Opera 44.0', 3236=>'Opera 46.0', 3225=>'Opera 37.0', 3241=>'Opera 45.0', 3240=>'Opera 47.0', 3245=>'Opera 48.0', 3272=>'Opera 49.0', 3233=>'Opera 35.0', 3230=>'Opera 36.0', 3227=>'Opera 38.0', 3224=>'Opera 39.0', 3268=>'Opera 32.0', 3239=>'Opera 29.0', 3264=>'Opera 31.0', 3271=>'Opera 40.0', 3238=>'Opera 30.0', 3290=>'IE 7.0', 2906=>'Chrome Generic for Android', 3125=>'YOLO Browser 1.0', 3001=>'Android WebView Generic', 3087=>'Android Browser 4.1', 3075=>'Android Browser 4.2', 2913=>'Safari Generic for Darwin', 3221=>'Safari 10.2', 3202=>'Safari 10.1', 3220=>'Safari 11.0', 3218=>'Safari 11.1', 3200=>'Safari 10.0', 3217=>'Safari 12.0', 3099=>'Android Browser 4.4', 3073=>'Android Browser 4.3', 3260=>'Safari 7.0', 3131=>'Safari Generic', 3244=>'Safari 8.0', 3259=>'Safari 6.2', 3263=>'Safari 6.1', 3249=>'Safari 9.0', 3232=>'Safari 6.0', 3256=>'Safari 9.1', 3257=>'Safari 7.1', 3128=>'Headless Chrome', 3093=>'IE 10.0 for Desktop', 2991=>'Android Browser Generic', 3109=>'IE 11.0 for Tablet', 3186=>'Firefox 40.0', 3172=>'Firefox 34.0', 3177=>'Firefox 30.0', 3171=>'Firefox 37.0', 3190=>'Firefox 39.0', 3189=>'Firefox 32.0', 3164=>'Firefox 33.0', 3178=>'Firefox 57.0', 3167=>'Firefox 38.0', 3163=>'Firefox 54.0', 3183=>'Firefox 58.0', 3185=>'Firefox 36.0', 3161=>'Firefox 31.0', 3168=>'Firefox 55.0', 3191=>'Firefox 35.0', 3174=>'Firefox 50.0', 3180=>'Firefox 61.0', 3193=>'Firefox 62.0', 3173=>'Firefox 60.0', 3179=>'Firefox 49.0', 3194=>'Firefox 59.0', 3181=>'Firefox 56.0', 3187=>'Firefox 52.0', 3184=>'Firefox 53.0', 3162=>'Firefox 63.0', 3166=>'Firefox 51.0', 3165=>'Firefox 45.0', 3170=>'Firefox 44.0', 3192=>'Firefox 46.0', 3169=>'Firefox 43.0', 3160=>'Firefox 41.0', 3176=>'Firefox 42.0', 3188=>'Firefox 48.0', 3182=>'Firefox 47.0', 2904=>'Firefox Generic for Android', 3289=>'IE 9.0', 3065=>'Safari Generic Older', 3129=>'Firefox Generic', 3287=>'IE 7.0b', 2951=>'Firefox 63.0 for Android', 2941=>'Firefox 22.0 for Android', 2940=>'Firefox 21.0 for Android', 2930=>'Firefox 62.0 for Android', 2957=>'Firefox 17.0 for Android', 2939=>'Firefox 24.0 for Android', 2964=>'Firefox 32.0 for Android', 2955=>'Firefox 18.0 for Android', 2959=>'Firefox 38.0 for Android', 2942=>'Firefox 23.0 for Android', 2954=>'Firefox 36.0 for Android', 2956=>'Firefox 37.0 for Android', 2968=>'Firefox 19.0 for Android', 2932=>'Firefox 59.0 for Android', 2935=>'Firefox 50.1 for Android', 2937=>'Firefox 25.0 for Android', 2936=>'Firefox 50.0 for Android', 2925=>'Firefox 51.0 for Android', 2921=>'Firefox 53.0 for Android', 2926=>'Firefox 52.0 for Android', 2946=>'Firefox 49.0 for Android', 2948=>'Firefox 30.0 for Android', 2950=>'Firefox 29.0 for Android', 2947=>'Firefox 31.0 for Android', 2945=>'Firefox 48.0 for Android', 2922=>'Firefox 54.0 for Android', 2958=>'Firefox 39.0 for Android', 2934=>'Firefox 58.0 for Android', 2952=>'Firefox 60.0 for Android', 2931=>'Firefox 61.0 for Android', 2933=>'Firefox 57.0 for Android', 2927=>'Firefox 55.0 for Android', 2928=>'Firefox 56.0 for Android', 2938=>'Firefox 20.0 for Android', 2929=>'Firefox 12.0 for Android', 2944=>'Firefox 27.0 for Android', 2969=>'Firefox 16.0 for Android', 2967=>'Firefox 34.0 for Android', 2973=>'Firefox 42.0 for Android', 2976=>'Firefox 13.0 for Android', 2962=>'Firefox 33.0 for Android', 2943=>'Firefox 26.0 for Android', 2923=>'Firefox 11.0 for Android', 2972=>'Firefox 41.0 for Android', 2965=>'Firefox 33.1 for Android', 2978=>'Firefox 15.0 for Android', 2963=>'Firefox 46.0 for Android', 2974=>'Firefox 14.0 for Android', 2977=>'Firefox 45.0 for Android', 2975=>'Firefox 44.0 for Android', 2919=>'Firefox 47.0 for Android', 2971=>'Firefox 43.0 for Android', 2970=>'Firefox 40.0 for Android', 2924=>'Firefox 10.0 for Android', 2961=>'Firefox 35.0 for Android', 2949=>'Firefox 28.0 for Android', 2988=>'Firefox 2.0 for Android', 2982=>'Firefox 8.0 for Android', 2990=>'Firefox 9.0 for Android', 2983=>'Firefox 1.1 for Android', 2984=>'Firefox 1.0 for Android', 2987=>'Firefox 6.0 for Android', 2999=>'Firefox 7.0 for Android', 2981=>'Firefox 5.0 for Android', 2986=>'Firefox 2.3 for Android', 2985=>'Firefox 4.0 for Android', 2989=>'Firefox 2.1 for Android', 3105=>'IE 6.0 for Desktop', 3119=>'DefaultProperties', 3029=>'Safari 8.0 for Darwin', 3030=>'Safari 9.1 for Darwin', 3028=>'Safari 10.0 for Darwin', 3026=>'Safari 11.0 for Darwin', 3034=>'Safari 9.0 for Darwin', 3032=>'Safari 6.0 for Darwin', 3035=>'Safari 7.0 for Darwin' ); $patterns=array( '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0\) like Android .*; compatible\) like iPhone OS .* Mac OS X WebKit/537\.36 \(.*khtml.*like.*gecko.*\) Chrome.*Safari.*$@'=>'a:2:{s:2:"@7";i:0;s:2:"@8";i:1;}', '@^Mozilla/5\.0 \(Linux; Linux mips\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/.* Safari/.*\) SRAF/3\.(\d).* \(\+TRICKMODE; NEXUS; Nexus_AN01.*$@'=>'a:3:{s:2:"@9";i:2;s:2:"@0";i:3;s:2:"@5";i:4;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/4(\d)\..* Mobile/.* Safari/.*$@'=>'a:2:{s:2:"@1";i:5;s:2:"@2";i:6;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/.* Mobile/.* Safari/.*$@'=>7, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_SensationXL_Beats_X315e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>8, '@^Mozilla/5\.0 \(.*Windows.* Anonymisiert durch AlMiSoft Browser\-.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>9, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Win64. x64.* Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@6";i:10;s:2:"@4";i:11;s:2:"@3";i:12;s:2:"@5";i:14;s:2:"@7";i:15;}', '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/4(\d)\..* Mobile/.* Safari/.*$@'=>'a:2:{s:2:"@2";i:13;s:2:"@1";i:16;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Win64. x64.* Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>17, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/.* Mobile/.* Safari/.*$@'=>18, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_IncredibleS_S710e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>19, '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|3|0";i:20;s:6:"@4|0|1";i:21;s:6:"@4|5|1";i:22;s:6:"@3|0|1";i:23;s:6:"@3|2|1";i:24;s:6:"@3|0|2";i:25;s:6:"@5|0|3";i:26;s:6:"@4|0|3";i:27;s:6:"@4|0|2";i:28;s:6:"@5|0|2";i:29;s:6:"@5|0|1";i:30;s:6:"@4|2|1";i:31;s:6:"@4|3|1";i:32;s:6:"@5|0|4";i:33;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P510e Build/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>34, '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@4|4";i:35;s:4:"@4|5";i:36;s:4:"@4|1";i:37;s:4:"@4|0";i:38;s:4:"@3|0";i:39;s:4:"@3|1";i:40;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Sensation_Z710e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>41, '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@5|0|3";i:42;s:6:"@4|0|3";i:43;s:6:"@5|0|4";i:44;s:6:"@3|0|1";i:45;s:6:"@4|5|1";i:46;s:6:"@4|3|0";i:47;s:6:"@5|0|1";i:48;s:6:"@4|3|1";i:49;s:6:"@5|0|2";i:50;s:6:"@4|2|1";i:51;s:6:"@4|0|1";i:52;s:6:"@3|2|1";i:53;s:6:"@4|0|2";i:54;s:6:"@3|0|2";i:55;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_DesireHD_A9191; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>56, '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@4|5";i:57;s:4:"@4|1";i:58;s:4:"@4|0";i:59;s:4:"@3|0";i:60;s:4:"@3|1";i:61;s:4:"@4|4";i:62;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>63, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@5";i:64;s:2:"@7";i:65;s:2:"@3";i:66;s:2:"@4";i:67;s:2:"@6";i:68;}', '@^Mozilla/5\.(\d) \(Macintosh; .*Mac OS X.*; HTC_EVO3D_X515m; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.(\d).*Safari.*$@'=>'a:3:{s:4:"@2|2";i:69;s:4:"@0|0";i:70;s:4:"@0|1";i:72;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P510e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>71, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|3|1";i:73;s:6:"@3|2|1";i:74;s:6:"@4|2|1";i:75;s:6:"@5|0|4";i:77;s:6:"@4|5|1";i:78;s:6:"@4|0|2";i:79;s:6:"@3|0|1";i:80;s:6:"@5|0|3";i:81;s:6:"@4|0|1";i:82;s:6:"@3|0|2";i:83;s:6:"@5|0|2";i:84;s:6:"@5|0|1";i:85;s:6:"@4|0|3";i:86;s:6:"@4|3|0";i:87;}', '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>76, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P512; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>88, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:89;s:4:"@3|0";i:90;s:4:"@4|0";i:91;s:4:"@4|1";i:92;s:4:"@4|5";i:93;s:4:"@4|4";i:94;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Runnymede; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>95, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Sensation; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>96, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>97, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/WildfireS/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>98, '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/Sensation/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>99, '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@2";i:100;s:2:"@0";i:101;s:2:"@1";i:102;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>103, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Lumia 930\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@4";i:104;s:2:"@6";i:105;s:2:"@7";i:106;s:2:"@5";i:107;s:2:"@3";i:109;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/DesireHD/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>108, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>110, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@3|2|1";i:111;s:6:"@3|0|2";i:112;s:6:"@5|0|4";i:114;s:6:"@5|0|3";i:115;s:6:"@4|5|1";i:117;s:6:"@5|0|2";i:118;s:6:"@4|0|2";i:119;s:6:"@3|0|1";i:120;s:6:"@4|3|1";i:121;s:6:"@4|2|1";i:122;s:6:"@4|3|0";i:123;s:6:"@4|0|1";i:124;s:6:"@4|0|3";i:126;s:6:"@5|0|1";i:127;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@7";i:113;s:2:"@8";i:116;s:2:"@6";i:125;s:2:"@9";i:128;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>'a:3:{s:2:"@4";i:129;s:2:"@1";i:130;s:2:"@3";i:131;}', '@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/DesireS/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>132, '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@6|1";i:133;s:4:"@6|5";i:134;s:4:"@5|8";i:135;s:4:"@6|0";i:136;s:4:"@6|3";i:137;s:4:"@6|2";i:138;s:4:"@6|4";i:139;s:4:"@5|7";i:140;s:4:"@5|6";i:141;s:4:"@5|9";i:145;s:4:"@4|8";i:146;s:4:"@5|1";i:153;s:4:"@5|2";i:154;s:4:"@4|9";i:155;s:4:"@5|4";i:156;s:4:"@6|7";i:157;s:4:"@5|5";i:158;s:4:"@6|6";i:159;s:4:"@6|9";i:160;s:4:"@6|8";i:161;s:4:"@7|0";i:162;s:4:"@5|0";i:163;s:4:"@7|1";i:164;s:4:"@5|3";i:165;}', '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:142;s:4:"@4|5";i:143;s:4:"@4|4";i:148;s:4:"@3|0";i:149;s:4:"@4|0";i:150;s:4:"@4|1";i:151;}', '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:144;s:2:"@0";i:147;s:2:"@2";i:152;}', '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*RM\-1010\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@7";i:166;s:2:"@6";i:167;s:2:"@5";i:168;s:2:"@4";i:170;s:2:"@3";i:171;}', '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Lumia 930\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>169, '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@9";i:172;s:2:"@7";i:173;s:2:"@8";i:174;s:2:"@6";i:175;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>176, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*RM\-1104.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>177, '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|5";i:178;s:4:"@6|8";i:179;s:4:"@7|0";i:180;s:4:"@5|2";i:181;s:4:"@5|3";i:182;s:4:"@7|1";i:183;s:4:"@6|7";i:184;s:4:"@6|9";i:185;s:4:"@6|5";i:186;s:4:"@6|3";i:187;s:4:"@6|2";i:188;s:4:"@6|1";i:189;s:4:"@5|9";i:190;s:4:"@6|4";i:191;s:4:"@5|8";i:192;s:4:"@5|6";i:193;s:4:"@6|0";i:194;s:4:"@5|7";i:195;s:4:"@6|6";i:196;s:4:"@5|4";i:197;s:4:"@4|9";i:198;s:4:"@4|8";i:199;s:4:"@5|0";i:200;s:4:"@5|1";i:201;}', '@^Mozilla/5\.0.*\(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>202, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>203, '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|0|2";i:204;s:6:"@3|2|1";i:205;s:6:"@3|0|2";i:206;s:6:"@3|0|1";i:207;s:6:"@4|0|1";i:208;s:6:"@4|2|1";i:209;s:6:"@5|0|1";i:210;s:6:"@5|0|2";i:211;s:6:"@4|5|1";i:212;s:6:"@4|3|1";i:213;s:6:"@5|0|4";i:214;s:6:"@4|3|0";i:215;s:6:"@4|0|3";i:216;s:6:"@5|0|3";i:217;}', '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|8";i:218;s:4:"@6|6";i:219;s:4:"@6|5";i:220;s:4:"@7|1";i:221;s:4:"@7|0";i:222;s:4:"@5|6";i:223;s:4:"@4|8";i:224;s:4:"@6|8";i:225;s:4:"@5|7";i:227;s:4:"@6|9";i:228;s:4:"@6|7";i:229;s:4:"@6|4";i:230;s:4:"@4|9";i:231;s:4:"@6|1";i:232;s:4:"@5|1";i:234;s:4:"@5|3";i:235;s:4:"@5|2";i:236;s:4:"@6|0";i:237;s:4:"@5|4";i:238;s:4:"@6|2";i:239;s:4:"@5|0";i:240;s:4:"@5|9";i:241;s:4:"@5|5";i:242;s:4:"@6|3";i:243;}', '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>226, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*id336.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>233, '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:244;s:4:"@3|0";i:245;s:4:"@4|5";i:246;s:4:"@4|4";i:249;s:4:"@4|1";i:251;s:4:"@4|0";i:252;}', '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:247;s:2:"@0";i:248;s:2:"@2";i:250;}', '@^Mozilla/5\.0.*\(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>253, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows NT 6\.(\d).*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>'a:2:{s:2:"@0";i:254;s:2:"@1";i:255;}', '@^.*Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0; Microsoft; Lumia 950 XL Dual SIM.*$@'=>256, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@8";i:257;s:2:"@7";i:258;s:2:"@9";i:259;s:2:"@6";i:260;}', '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0; Microsoft; Lumia 950 XL Dual SIM.*$@'=>261, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*WOW64.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>262, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Mobile Safari/.* EdgA/4(\d)\..*$@'=>'a:2:{s:2:"@2";i:263;s:2:"@1";i:265;}', '@^Mozilla/5\.0 \(.*Linux.*Android.* Build/.* applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.1.* Mobile Safari.*$@'=>264, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome/(\d)(\d)\.0.*Mobile.*Safari.*$@'=>'a:29:{s:4:"@6|2";i:266;s:4:"@4|5";i:267;s:4:"@7|0";i:268;s:4:"@6|9";i:269;s:4:"@6|5";i:270;s:4:"@6|4";i:271;s:4:"@6|1";i:272;s:4:"@4|3";i:273;s:4:"@6|6";i:274;s:4:"@4|4";i:275;s:4:"@6|7";i:276;s:4:"@6|8";i:277;s:4:"@4|6";i:278;s:4:"@7|1";i:279;s:4:"@5|3";i:280;s:4:"@6|3";i:281;s:4:"@5|4";i:282;s:4:"@5|5";i:283;s:4:"@5|8";i:284;s:4:"@6|0";i:285;s:4:"@5|6";i:286;s:4:"@5|7";i:287;s:4:"@5|2";i:288;s:4:"@4|9";i:289;s:4:"@4|8";i:290;s:4:"@4|7";i:291;s:4:"@5|9";i:292;s:4:"@5|0";i:293;s:4:"@5|1";i:294;}', '@^Mozilla/5\.0 \(.*Windows.*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>295, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Anonymisiert durch.*$@'=>'a:22:{s:4:"@6|1";i:296;s:4:"@7|0";i:297;s:4:"@6|0";i:298;s:4:"@6|5";i:299;s:4:"@6|3";i:300;s:4:"@6|7";i:301;s:4:"@6|4";i:302;s:4:"@6|8";i:303;s:4:"@6|2";i:304;s:4:"@6|6";i:305;s:4:"@6|9";i:306;s:4:"@5|2";i:307;s:4:"@5|5";i:308;s:4:"@5|7";i:309;s:4:"@7|1";i:310;s:4:"@5|4";i:311;s:4:"@5|3";i:312;s:4:"@5|0";i:313;s:4:"@5|1";i:314;s:4:"@5|8";i:315;s:4:"@5|6";i:316;s:4:"@5|9";i:317;}', '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>318, '@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.* Large Screen Safari/.* GoogleTV/.*$@'=>319, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*x64.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>320, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Anonymisiert durch.*$@'=>'a:88:{s:6:"@4|6|7";i:321;s:6:"@3|6|6";i:322;s:6:"@3|7|0";i:323;s:6:"@3|6|7";i:324;s:6:"@1|6|7";i:325;s:6:"@4|6|6";i:326;s:6:"@4|7|0";i:327;s:6:"@1|6|8";i:328;s:6:"@2|6|7";i:329;s:6:"@3|6|8";i:330;s:6:"@2|7|1";i:331;s:6:"@2|6|9";i:332;s:6:"@3|6|9";i:333;s:6:"@4|6|9";i:334;s:6:"@3|7|1";i:335;s:6:"@1|6|9";i:336;s:6:"@1|7|1";i:337;s:6:"@4|7|1";i:338;s:6:"@2|7|0";i:339;s:6:"@1|7|0";i:340;s:6:"@4|6|8";i:341;s:6:"@2|6|8";i:342;s:6:"@2|5|9";i:343;s:6:"@1|5|5";i:344;s:6:"@2|5|5";i:345;s:6:"@3|5|5";i:346;s:6:"@4|5|4";i:347;s:6:"@3|5|4";i:348;s:6:"@1|5|4";i:349;s:6:"@2|5|4";i:350;s:6:"@4|5|5";i:351;s:6:"@1|5|6";i:352;s:6:"@2|5|7";i:353;s:6:"@3|5|7";i:354;s:6:"@1|5|7";i:355;s:6:"@4|5|6";i:356;s:6:"@2|5|6";i:357;s:6:"@3|5|6";i:358;s:6:"@4|5|3";i:359;s:6:"@3|5|3";i:360;s:6:"@1|5|1";i:361;s:6:"@2|5|1";i:362;s:6:"@4|5|0";i:363;s:6:"@3|5|0";i:364;s:6:"@1|5|0";i:365;s:6:"@2|5|0";i:366;s:6:"@3|5|1";i:367;s:6:"@4|5|1";i:368;s:6:"@1|5|3";i:369;s:6:"@2|5|3";i:370;s:6:"@4|5|2";i:371;s:6:"@3|5|2";i:372;s:6:"@1|5|2";i:373;s:6:"@2|5|2";i:374;s:6:"@4|5|7";i:375;s:6:"@1|5|8";i:376;s:6:"@4|6|3";i:377;s:6:"@1|6|4";i:378;s:6:"@3|6|3";i:379;s:6:"@2|6|3";i:380;s:6:"@4|6|2";i:381;s:6:"@1|6|3";i:382;s:6:"@2|6|4";i:383;s:6:"@3|6|4";i:384;s:6:"@4|6|5";i:385;s:6:"@1|6|6";i:386;s:6:"@3|6|5";i:387;s:6:"@2|6|5";i:388;s:6:"@4|6|4";i:389;s:6:"@1|6|5";i:390;s:6:"@3|6|2";i:391;s:6:"@2|6|2";i:392;s:6:"@3|5|9";i:393;s:6:"@4|5|9";i:394;s:6:"@1|5|9";i:395;s:6:"@4|5|8";i:396;s:6:"@2|5|8";i:397;s:6:"@3|5|8";i:398;s:6:"@1|6|0";i:399;s:6:"@2|6|0";i:400;s:6:"@3|6|1";i:401;s:6:"@1|6|2";i:402;s:6:"@2|6|1";i:403;s:6:"@1|6|1";i:404;s:6:"@3|6|0";i:405;s:6:"@4|6|0";i:406;s:6:"@2|6|6";i:407;s:6:"@4|6|1";i:408;}', '@^Mozilla/5\.0 \(Linux; Linux mips\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/.* Safari/.*\) SRAF/3\.(\d).*$@'=>'a:3:{s:2:"@5";i:409;s:2:"@0";i:410;s:2:"@9";i:411;}', '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@3";i:412;s:2:"@4";i:413;s:2:"@5";i:414;s:2:"@7";i:415;s:2:"@6";i:416;}', '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>417, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:418;s:2:"@0";i:420;s:2:"@2";i:421;}', '@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>419, '@^Mozilla/5\.0 \(Linux.*; Android Eclair.*Build/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.*Safari.*$@'=>422, '@^Mozilla/5\.0 \(.*Linux.*Velocitymicro/T408.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Version/4\.0.*Safari/.*$@'=>423, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Mobile Safari/.* EdgA/.*$@'=>424, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@9";i:425;s:2:"@7";i:426;s:2:"@6";i:427;s:2:"@8";i:428;}', '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; Microsoft;Lumia 535 Dual SIM.*$@'=>429, '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>430, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@4|9";i:431;s:4:"@4|8";i:432;s:4:"@5|1";i:433;s:4:"@5|0";i:434;s:4:"@5|4";i:435;s:4:"@6|5";i:436;s:4:"@6|4";i:437;s:4:"@6|3";i:438;s:4:"@6|6";i:439;s:4:"@6|7";i:440;s:4:"@7|1";i:441;s:4:"@7|0";i:442;s:4:"@6|8";i:443;s:4:"@6|2";i:444;s:4:"@6|1";i:445;s:4:"@5|6";i:446;s:4:"@5|5";i:447;s:4:"@5|3";i:448;s:4:"@5|7";i:449;s:4:"@5|8";i:450;s:4:"@6|0";i:451;s:4:"@5|9";i:452;s:4:"@5|2";i:453;s:4:"@6|9";i:454;}', '@^Mozilla/5\.0.*\(iPhone.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>455, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.* anonymized by.*$@'=>'a:22:{s:4:"@5|0";i:456;s:4:"@6|9";i:457;s:4:"@5|1";i:458;s:4:"@6|0";i:459;s:4:"@7|0";i:460;s:4:"@6|3";i:461;s:4:"@7|1";i:462;s:4:"@6|1";i:463;s:4:"@6|5";i:464;s:4:"@5|2";i:465;s:4:"@5|3";i:466;s:4:"@5|7";i:467;s:4:"@5|8";i:468;s:4:"@6|6";i:469;s:4:"@5|9";i:470;s:4:"@5|6";i:471;s:4:"@6|7";i:472;s:4:"@6|8";i:473;s:4:"@5|4";i:474;s:4:"@5|5";i:475;s:4:"@6|4";i:476;s:4:"@6|2";i:477;}', '@^Mozilla/5\.0 \(SMART\-TV.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chromium/(\d)(\d)\..*Chrome/.*Safari/.*$@'=>'a:27:{s:4:"@6|1";i:478;s:4:"@6|2";i:479;s:4:"@6|3";i:480;s:4:"@6|4";i:481;s:4:"@6|0";i:482;s:4:"@5|9";i:483;s:4:"@5|6";i:484;s:4:"@5|7";i:485;s:4:"@5|8";i:486;s:4:"@6|5";i:487;s:4:"@6|6";i:488;s:4:"@4|5";i:489;s:4:"@4|7";i:490;s:4:"@7|1";i:491;s:4:"@4|6";i:493;s:4:"@7|0";i:494;s:4:"@6|8";i:496;s:4:"@6|9";i:497;s:4:"@5|5";i:498;s:4:"@6|7";i:499;s:4:"@5|2";i:501;s:4:"@5|1";i:502;s:4:"@5|0";i:503;s:4:"@4|8";i:505;s:4:"@5|3";i:506;s:4:"@4|9";i:507;s:4:"@5|4";i:510;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@6";i:492;s:2:"@7";i:495;s:2:"@4";i:500;s:2:"@5";i:504;s:2:"@3";i:509;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>508, '@^Mozilla/5\.0.*\(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>511, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>512, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.* anonymized by.*$@'=>'a:88:{s:6:"@3|6|8";i:513;s:6:"@3|5|2";i:514;s:6:"@2|5|2";i:515;s:6:"@1|5|2";i:516;s:6:"@4|5|2";i:517;s:6:"@1|5|3";i:518;s:6:"@3|5|3";i:519;s:6:"@4|5|3";i:520;s:6:"@2|5|3";i:521;s:6:"@4|5|1";i:522;s:6:"@4|6|8";i:523;s:6:"@3|5|9";i:524;s:6:"@3|5|1";i:525;s:6:"@3|5|0";i:526;s:6:"@4|5|0";i:527;s:6:"@2|5|0";i:528;s:6:"@4|5|8";i:529;s:6:"@1|6|0";i:530;s:6:"@1|5|0";i:531;s:6:"@1|5|1";i:532;s:6:"@2|5|1";i:533;s:6:"@2|6|9";i:534;s:6:"@1|6|9";i:535;s:6:"@2|5|8";i:536;s:6:"@4|5|9";i:537;s:6:"@4|6|9";i:538;s:6:"@3|6|9";i:539;s:6:"@2|6|8";i:540;s:6:"@2|5|4";i:541;s:6:"@2|6|6";i:542;s:6:"@1|6|7";i:543;s:6:"@2|6|7";i:544;s:6:"@1|5|8";i:545;s:6:"@4|6|7";i:546;s:6:"@3|6|7";i:547;s:6:"@4|5|6";i:548;s:6:"@3|6|6";i:549;s:6:"@4|5|7";i:550;s:6:"@3|5|7";i:551;s:6:"@2|5|7";i:552;s:6:"@4|6|6";i:553;s:6:"@1|5|7";i:554;s:6:"@1|6|6";i:555;s:6:"@3|6|0";i:556;s:6:"@1|5|5";i:557;s:6:"@3|5|8";i:558;s:6:"@4|5|4";i:559;s:6:"@3|5|4";i:560;s:6:"@1|5|4";i:561;s:6:"@1|5|9";i:562;s:6:"@2|5|5";i:563;s:6:"@3|5|5";i:564;s:6:"@2|5|6";i:565;s:6:"@3|5|6";i:566;s:6:"@1|5|6";i:567;s:6:"@2|5|9";i:568;s:6:"@4|5|5";i:569;s:6:"@1|6|8";i:570;s:6:"@4|6|1";i:571;s:6:"@2|7|1";i:572;s:6:"@2|6|0";i:573;s:6:"@3|7|1";i:574;s:6:"@1|7|1";i:575;s:6:"@4|6|2";i:576;s:6:"@4|6|4";i:577;s:6:"@3|6|2";i:578;s:6:"@4|7|1";i:579;s:6:"@1|6|3";i:580;s:6:"@1|6|4";i:581;s:6:"@4|6|0";i:582;s:6:"@2|6|4";i:583;s:6:"@4|6|3";i:584;s:6:"@3|6|4";i:585;s:6:"@2|6|3";i:586;s:6:"@3|6|3";i:587;s:6:"@1|6|2";i:588;s:6:"@2|6|2";i:589;s:6:"@3|6|1";i:590;s:6:"@2|7|0";i:591;s:6:"@4|7|0";i:592;s:6:"@3|7|0";i:593;s:6:"@4|6|5";i:594;s:6:"@3|6|5";i:595;s:6:"@1|6|5";i:596;s:6:"@1|6|1";i:597;s:6:"@1|7|0";i:598;s:6:"@2|6|5";i:599;s:6:"@2|6|1";i:600;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>601, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>'a:5:{s:2:"@3";i:602;s:2:"@4";i:604;s:2:"@1";i:606;s:2:"@2";i:611;s:2:"@0";i:612;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@4";i:603;s:2:"@3";i:607;s:2:"@5";i:608;s:2:"@7";i:609;s:2:"@6";i:610;}', '@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>605, '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>613, '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|9";i:614;s:4:"@5|7";i:615;s:4:"@5|8";i:616;s:4:"@5|0";i:617;s:4:"@4|8";i:618;s:4:"@5|5";i:619;s:4:"@4|9";i:620;s:4:"@5|2";i:621;s:4:"@5|3";i:622;s:4:"@5|4";i:623;s:4:"@6|0";i:624;s:4:"@5|6";i:625;s:4:"@6|1";i:626;s:4:"@6|7";i:628;s:4:"@6|8";i:629;s:4:"@6|9";i:630;s:4:"@7|0";i:631;s:4:"@6|6";i:632;s:4:"@6|5";i:633;s:4:"@6|2";i:634;s:4:"@5|1";i:635;s:4:"@6|3";i:636;s:4:"@6|4";i:637;s:4:"@7|1";i:638;}', '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>627, '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@0";i:639;s:2:"@1";i:640;s:2:"@2";i:641;}', '@^Mozilla/5\.0.*\(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>642, '@^Mozilla/5\.0.*\(iPod.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>643, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Mobile Safari/.*$@'=>'a:29:{s:4:"@4|9";i:644;s:4:"@5|2";i:645;s:4:"@5|1";i:646;s:4:"@5|3";i:647;s:4:"@5|4";i:648;s:4:"@5|5";i:649;s:4:"@5|0";i:650;s:4:"@4|8";i:651;s:4:"@4|4";i:652;s:4:"@4|3";i:653;s:4:"@4|5";i:654;s:4:"@4|6";i:655;s:4:"@4|7";i:656;s:4:"@5|6";i:657;s:4:"@5|7";i:658;s:4:"@6|6";i:659;s:4:"@6|5";i:660;s:4:"@6|7";i:661;s:4:"@6|8";i:662;s:4:"@6|9";i:663;s:4:"@6|4";i:664;s:4:"@6|3";i:665;s:4:"@5|9";i:666;s:4:"@5|8";i:667;s:4:"@6|0";i:668;s:4:"@6|1";i:669;s:4:"@6|2";i:670;s:4:"@7|0";i:671;s:4:"@7|1";i:672;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>673, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@5|2";i:674;s:4:"@5|3";i:675;s:4:"@4|3";i:676;s:4:"@5|1";i:677;s:4:"@3|3";i:678;s:4:"@5|4";i:679;s:4:"@4|1";i:680;s:4:"@2|8";i:681;s:4:"@2|7";i:682;s:4:"@5|5";i:683;s:4:"@4|2";i:684;s:4:"@3|4";i:685;s:4:"@5|0";i:686;s:4:"@4|4";i:687;s:4:"@4|6";i:688;s:4:"@3|7";i:689;s:4:"@4|5";i:690;s:4:"@4|7";i:691;s:4:"@4|8";i:692;s:4:"@4|9";i:693;s:4:"@3|5";i:694;s:4:"@3|6";i:695;s:4:"@3|8";i:696;s:4:"@3|9";i:697;s:4:"@3|2";i:698;s:4:"@2|9";i:699;s:4:"@3|1";i:700;s:4:"@4|0";i:701;s:4:"@3|0";i:702;}', '@^Mozilla/5\.0.*\(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>703, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome/(\d)(\d)\.0.*Safari.*$@'=>'a:29:{s:4:"@4|8";i:704;s:4:"@4|9";i:706;s:4:"@5|0";i:707;s:4:"@4|6";i:709;s:4:"@4|3";i:710;s:4:"@7|0";i:711;s:4:"@7|1";i:712;s:4:"@6|5";i:713;s:4:"@6|9";i:714;s:4:"@4|4";i:716;s:4:"@5|1";i:717;s:4:"@4|5";i:718;s:4:"@4|7";i:719;s:4:"@5|9";i:720;s:4:"@5|8";i:721;s:4:"@5|7";i:722;s:4:"@6|2";i:723;s:4:"@5|2";i:724;s:4:"@6|0";i:726;s:4:"@6|1";i:727;s:4:"@6|6";i:728;s:4:"@6|3";i:729;s:4:"@5|6";i:730;s:4:"@6|8";i:731;s:4:"@5|3";i:732;s:4:"@5|5";i:733;s:4:"@6|4";i:734;s:4:"@5|4";i:735;s:4:"@6|7";i:736;}', '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@7";i:705;s:2:"@8";i:708;s:2:"@6";i:715;s:2:"@9";i:725;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>737, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:102:{s:6:"@2|3|5";i:738;s:6:"@0|3|6";i:739;s:6:"@1|3|5";i:740;s:6:"@1|3|6";i:741;s:6:"@4|3|0";i:742;s:6:"@3|3|5";i:743;s:6:"@2|3|0";i:744;s:6:"@2|5|0";i:745;s:6:"@3|5|0";i:746;s:6:"@1|3|0";i:747;s:6:"@2|3|6";i:748;s:6:"@1|5|0";i:749;s:6:"@3|4|9";i:750;s:6:"@1|4|9";i:751;s:6:"@0|3|5";i:752;s:6:"@2|4|9";i:753;s:6:"@3|3|0";i:754;s:6:"@3|3|1";i:755;s:6:"@3|4|6";i:756;s:6:"@2|5|1";i:757;s:6:"@3|3|7";i:758;s:6:"@2|3|7";i:759;s:6:"@2|4|6";i:760;s:6:"@1|4|6";i:761;s:6:"@2|4|5";i:762;s:6:"@3|4|5";i:763;s:6:"@4|3|1";i:764;s:6:"@1|4|7";i:765;s:6:"@2|4|7";i:766;s:6:"@2|4|8";i:767;s:6:"@3|4|8";i:768;s:6:"@0|3|1";i:769;s:6:"@1|4|8";i:770;s:6:"@1|3|1";i:771;s:6:"@3|4|7";i:772;s:6:"@1|3|7";i:773;s:6:"@2|3|1";i:774;s:6:"@3|3|6";i:775;s:6:"@3|3|3";i:776;s:6:"@1|4|5";i:777;s:6:"@3|3|2";i:778;s:6:"@2|3|2";i:779;s:6:"@1|3|2";i:780;s:6:"@3|5|5";i:781;s:6:"@2|5|5";i:782;s:6:"@1|3|3";i:783;s:6:"@0|3|3";i:784;s:6:"@1|5|5";i:785;s:6:"@0|3|2";i:786;s:6:"@0|2|7";i:787;s:6:"@1|2|8";i:788;s:6:"@2|2|8";i:789;s:6:"@3|2|8";i:790;s:6:"@4|2|8";i:791;s:6:"@0|2|8";i:792;s:6:"@4|2|7";i:793;s:6:"@1|2|7";i:794;s:6:"@2|2|7";i:795;s:6:"@3|2|7";i:796;s:6:"@0|2|9";i:797;s:6:"@3|5|4";i:798;s:6:"@4|2|9";i:799;s:6:"@2|5|2";i:800;s:6:"@3|5|2";i:801;s:6:"@0|3|4";i:802;s:6:"@1|3|4";i:803;s:6:"@1|5|2";i:804;s:6:"@0|3|0";i:805;s:6:"@3|3|4";i:806;s:6:"@2|3|4";i:807;s:6:"@3|2|9";i:808;s:6:"@1|5|4";i:810;s:6:"@2|3|3";i:811;s:6:"@2|5|4";i:812;s:6:"@1|2|9";i:813;s:6:"@2|2|9";i:814;s:6:"@1|5|3";i:815;s:6:"@2|5|3";i:816;s:6:"@3|5|3";i:817;s:6:"@3|5|1";i:818;s:6:"@1|5|1";i:819;s:6:"@2|4|2";i:820;s:6:"@3|4|2";i:821;s:6:"@3|4|4";i:822;s:6:"@1|4|2";i:823;s:6:"@2|3|9";i:824;s:6:"@2|4|1";i:825;s:6:"@3|4|1";i:826;s:6:"@1|3|8";i:827;s:6:"@2|4|4";i:828;s:6:"@1|4|4";i:829;s:6:"@2|4|3";i:830;s:6:"@3|4|3";i:831;s:6:"@3|4|0";i:832;s:6:"@1|4|3";i:833;s:6:"@2|4|0";i:834;s:6:"@3|3|8";i:835;s:6:"@1|3|9";i:836;s:6:"@1|4|0";i:837;s:6:"@3|3|9";i:838;s:6:"@2|3|8";i:839;s:6:"@1|4|1";i:840;}', '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>809, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>841, '@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>842, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/4\.0.*Mobile.*Safari.*$@'=>843, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows NT 6\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>844, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>'a:5:{s:2:"@1";i:845;s:2:"@4";i:846;s:2:"@3";i:847;s:2:"@2";i:848;s:2:"@0";i:849;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*HbbTV/.*$@'=>'a:24:{s:4:"@5|5";i:850;s:4:"@5|3";i:851;s:4:"@3|5";i:853;s:4:"@3|2";i:854;s:4:"@3|3";i:855;s:4:"@4|7";i:856;s:4:"@4|4";i:857;s:4:"@4|9";i:858;s:4:"@3|8";i:859;s:4:"@4|6";i:860;s:4:"@5|2";i:861;s:4:"@3|9";i:862;s:4:"@5|0";i:863;s:4:"@4|1";i:864;s:4:"@4|0";i:865;s:4:"@3|7";i:866;s:4:"@4|2";i:867;s:4:"@3|4";i:868;s:4:"@5|4";i:869;s:4:"@4|5";i:870;s:4:"@5|1";i:871;s:4:"@4|3";i:872;s:4:"@4|8";i:873;s:4:"@3|6";i:874;}', '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>852, '@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>875, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Chrome/.*Mobile Safari/.*$@'=>876, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*YoloBrowser/1\.0.*Safari.*$@'=>877, '@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>878, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khmtl.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>879, '@^ELEMENT10 1 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>880, '@^Tablet\-PC\-4 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>881, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@5|5";i:882;s:4:"@6|0";i:883;s:4:"@6|9";i:884;s:4:"@5|0";i:885;s:4:"@5|6";i:886;s:4:"@6|7";i:887;s:4:"@6|4";i:888;s:4:"@5|1";i:889;s:4:"@6|5";i:890;s:4:"@7|0";i:891;s:4:"@5|9";i:892;s:4:"@6|3";i:893;s:4:"@5|3";i:894;s:4:"@5|8";i:895;s:4:"@7|1";i:896;s:4:"@6|2";i:897;s:4:"@6|6";i:898;s:4:"@6|1";i:899;s:4:"@5|2";i:900;s:4:"@5|7";i:901;s:4:"@6|8";i:902;s:4:"@5|4";i:903;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*OMI/.*$@'=>'a:29:{s:4:"@3|0";i:904;s:4:"@4|0";i:905;s:4:"@3|6";i:906;s:4:"@5|1";i:907;s:4:"@4|8";i:909;s:4:"@3|4";i:910;s:4:"@2|9";i:911;s:4:"@4|5";i:912;s:4:"@5|2";i:913;s:4:"@5|5";i:914;s:4:"@3|2";i:915;s:4:"@5|3";i:916;s:4:"@3|5";i:917;s:4:"@5|4";i:918;s:4:"@3|8";i:919;s:4:"@3|3";i:920;s:4:"@4|3";i:921;s:4:"@4|2";i:922;s:4:"@2|8";i:924;s:4:"@5|0";i:925;s:4:"@4|4";i:926;s:4:"@3|9";i:927;s:4:"@4|9";i:928;s:4:"@2|7";i:929;s:4:"@4|1";i:930;s:4:"@4|7";i:931;s:4:"@3|7";i:932;s:4:"@3|1";i:933;s:4:"@4|6";i:934;}', '@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>908, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*kthml.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>923, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari.*Chrome.*$@'=>935, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>936, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:88:{s:6:"@4|6|6";i:937;s:6:"@2|7|1";i:938;s:6:"@4|5|2";i:939;s:6:"@3|7|1";i:940;s:6:"@1|7|1";i:941;s:6:"@1|6|1";i:942;s:6:"@2|6|2";i:943;s:6:"@2|5|2";i:944;s:6:"@3|6|3";i:945;s:6:"@2|5|9";i:946;s:6:"@3|5|9";i:947;s:6:"@4|5|9";i:948;s:6:"@2|6|5";i:949;s:6:"@1|6|5";i:950;s:6:"@3|5|2";i:951;s:6:"@2|5|6";i:952;s:6:"@1|5|2";i:953;s:6:"@1|5|9";i:954;s:6:"@4|6|3";i:955;s:6:"@4|6|8";i:956;s:6:"@1|6|7";i:957;s:6:"@4|5|7";i:958;s:6:"@3|6|1";i:959;s:6:"@4|5|3";i:960;s:6:"@3|5|8";i:961;s:6:"@4|6|1";i:962;s:6:"@2|6|7";i:963;s:6:"@1|5|8";i:964;s:6:"@2|5|8";i:965;s:6:"@1|6|2";i:966;s:6:"@3|5|7";i:967;s:6:"@3|5|3";i:968;s:6:"@4|6|2";i:969;s:6:"@3|6|8";i:970;s:6:"@3|5|6";i:971;s:6:"@1|5|6";i:972;s:6:"@2|6|8";i:973;s:6:"@1|6|8";i:974;s:6:"@4|5|8";i:975;s:6:"@2|5|3";i:976;s:6:"@1|5|3";i:977;s:6:"@2|6|1";i:978;s:6:"@4|7|1";i:979;s:6:"@1|6|6";i:980;s:6:"@1|6|0";i:981;s:6:"@2|5|0";i:982;s:6:"@1|5|0";i:983;s:6:"@2|6|9";i:984;s:6:"@3|5|0";i:985;s:6:"@4|5|0";i:986;s:6:"@3|6|2";i:987;s:6:"@2|6|4";i:988;s:6:"@4|6|5";i:989;s:6:"@3|6|6";i:990;s:6:"@3|6|9";i:991;s:6:"@4|6|9";i:992;s:6:"@2|6|0";i:993;s:6:"@3|5|5";i:994;s:6:"@1|5|4";i:995;s:6:"@2|5|5";i:996;s:6:"@2|5|4";i:997;s:6:"@3|5|4";i:998;s:6:"@4|6|0";i:999;s:6:"@3|6|0";i:1000;s:6:"@4|5|4";i:1001;s:6:"@4|5|6";i:1002;s:6:"@1|7|0";i:1003;s:6:"@4|6|4";i:1004;s:6:"@4|6|7";i:1005;s:6:"@4|5|1";i:1006;s:6:"@3|5|1";i:1007;s:6:"@1|5|7";i:1008;s:6:"@1|6|3";i:1009;s:6:"@2|6|3";i:1010;s:6:"@1|5|5";i:1011;s:6:"@3|6|5";i:1012;s:6:"@2|5|7";i:1013;s:6:"@1|6|9";i:1014;s:6:"@2|5|1";i:1015;s:6:"@3|7|0";i:1016;s:6:"@2|7|0";i:1017;s:6:"@3|6|4";i:1018;s:6:"@1|5|1";i:1019;s:6:"@4|5|5";i:1020;s:6:"@2|6|6";i:1021;s:6:"@3|6|7";i:1022;s:6:"@4|7|0";i:1023;s:6:"@1|6|4";i:1024;}', '@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>1025, '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/(\d)(\d)\..*Chrome/.*Safari/.*$@'=>'a:27:{s:4:"@5|9";i:1026;s:4:"@5|0";i:1027;s:4:"@4|9";i:1028;s:4:"@6|0";i:1029;s:4:"@4|8";i:1030;s:4:"@4|7";i:1031;s:4:"@4|5";i:1032;s:4:"@4|6";i:1033;s:4:"@5|1";i:1034;s:4:"@5|2";i:1035;s:4:"@5|5";i:1036;s:4:"@5|6";i:1037;s:4:"@5|4";i:1038;s:4:"@5|3";i:1039;s:4:"@5|8";i:1041;s:4:"@5|7";i:1042;s:4:"@6|9";i:1043;s:4:"@6|5";i:1044;s:4:"@6|1";i:1045;s:4:"@6|4";i:1046;s:4:"@6|2";i:1047;s:4:"@6|3";i:1048;s:4:"@7|1";i:1049;s:4:"@6|6";i:1050;s:4:"@7|0";i:1051;s:4:"@6|8";i:1052;s:4:"@6|7";i:1053;}', '@^.*Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*khtml.*like.*gecko.*\) Version/.*Chrome.*Safari.*$@'=>1040, '@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; Lumia 1(\d)20.*$@'=>'a:4:{s:4:"@8|5";i:1054;s:4:"@7|5";i:1055;s:4:"@7|3";i:1056;s:4:"@8|3";i:1057;}', '@^TERRA_101 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1058, '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; Microsoft; RM\-1(\d)(\d)(\d).*$@'=>'a:5:{s:6:"@0|7|4";i:1059;s:6:"@0|8|9";i:1060;s:6:"@0|3|1";i:1061;s:6:"@0|9|0";i:1062;s:6:"@1|1|3";i:1063;}', '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:29:{s:4:"@5|5";i:1064;s:4:"@5|4";i:1065;s:4:"@5|6";i:1066;s:4:"@5|8";i:1067;s:4:"@5|3";i:1068;s:4:"@5|7";i:1069;s:4:"@5|0";i:1070;s:4:"@4|8";i:1071;s:4:"@4|9";i:1072;s:4:"@5|9";i:1073;s:4:"@5|1";i:1074;s:4:"@5|2";i:1075;s:4:"@6|2";i:1076;s:4:"@6|8";i:1077;s:4:"@6|9";i:1078;s:4:"@7|0";i:1079;s:4:"@7|1";i:1080;s:4:"@6|6";i:1081;s:4:"@6|5";i:1082;s:4:"@6|1";i:1083;s:4:"@4|7";i:1084;s:4:"@6|3";i:1085;s:4:"@6|4";i:1086;s:4:"@6|0";i:1087;s:4:"@6|7";i:1088;s:4:"@4|5";i:1089;s:4:"@4|3";i:1090;s:4:"@4|6";i:1091;s:4:"@4|4";i:1092;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@5|5";i:1093;s:4:"@3|9";i:1094;s:4:"@2|9";i:1095;s:4:"@4|4";i:1096;s:4:"@4|0";i:1097;s:4:"@3|8";i:1098;s:4:"@3|3";i:1099;s:4:"@5|4";i:1100;s:4:"@5|2";i:1101;s:4:"@3|7";i:1102;s:4:"@3|0";i:1103;s:4:"@3|5";i:1104;s:4:"@4|5";i:1105;s:4:"@2|8";i:1106;s:4:"@5|0";i:1107;s:4:"@3|6";i:1108;s:4:"@4|6";i:1109;s:4:"@3|1";i:1110;s:4:"@5|3";i:1111;s:4:"@3|2";i:1112;s:4:"@4|7";i:1113;s:4:"@3|4";i:1114;s:4:"@4|8";i:1115;s:4:"@4|2";i:1117;s:4:"@4|3";i:1118;s:4:"@2|7";i:1119;s:4:"@4|9";i:1120;s:4:"@4|1";i:1122;s:4:"@5|1";i:1123;}', '@^.*Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.(\d).*Safari.*$@'=>'a:2:{s:2:"@1";i:1116;s:2:"@2";i:1121;}', '@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; Lumia (\d)(\d)(\d).*$@'=>'a:16:{s:8:"@7|9|2|5";i:1124;s:8:"@7|6|3|0";i:1125;s:8:"@7|5|2|0";i:1126;s:8:"@7|6|2|5";i:1127;s:8:"@7|6|3|5";i:1128;s:8:"@7|7|2|0";i:1129;s:8:"@7|8|2|0";i:1130;s:8:"@7|9|2|0";i:1131;s:8:"@8|9|2|5";i:1132;s:8:"@8|9|2|0";i:1133;s:8:"@8|5|2|0";i:1134;s:8:"@8|8|2|0";i:1135;s:8:"@8|7|2|0";i:1136;s:8:"@8|6|3|0";i:1137;s:8:"@8|6|3|5";i:1138;s:8:"@8|6|2|5";i:1139;}', '@^TBDC1093 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1140, '@^Mozilla/5\.0 \(Linux;.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* SRAF/3\.(\d).*$@'=>'a:3:{s:2:"@5";i:1141;s:2:"@9";i:1142;s:2:"@0";i:1144;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*ASTON;XenaHd Twin Connect.*$@'=>1143, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.(\d).*Safari.*$@'=>'a:2:{s:2:"@1";i:1145;s:2:"@2";i:1147;}', '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khmtl.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1146, '@^Mozilla/5\.0.*\(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>1148, '@^TBD1083 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1149, '@^TBDG773 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1150, '@^DINO762 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1151, '@^TBDB863 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1152, '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0; NOKIA; Lumia (\d)(\d)(\d).*$@'=>'a:24:{s:8:"@7|7|3|0";i:1153;s:8:"@7|6|3|5";i:1154;s:8:"@8|6|2|5";i:1155;s:8:"@7|8|2|0";i:1156;s:8:"@7|9|2|5";i:1157;s:8:"@7|9|3|0";i:1158;s:8:"@7|9|2|8";i:1159;s:8:"@7|6|3|0";i:1160;s:8:"@7|6|2|5";i:1161;s:8:"@8|6|3|5";i:1162;s:8:"@8|9|2|0";i:1163;s:8:"@8|7|3|0";i:1164;s:8:"@7|5|2|0";i:1165;s:8:"@8|6|3|0";i:1166;s:8:"@7|6|2|0";i:1167;s:8:"@7|5|3|0";i:1168;s:8:"@8|8|2|0";i:1169;s:8:"@7|9|2|0";i:1170;s:8:"@8|9|2|5";i:1171;s:8:"@8|9|2|8";i:1172;s:8:"@8|6|2|0";i:1173;s:8:"@8|5|3|0";i:1174;s:8:"@8|5|2|0";i:1175;s:8:"@8|9|3|0";i:1176;}', '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*kthml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1177, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/1(\d)\.(\d).* Safari/.*$@'=>'a:6:{s:4:"@0|2";i:1178;s:4:"@0|1";i:1179;s:4:"@1|0";i:1180;s:4:"@1|1";i:1181;s:4:"@0|0";i:1182;s:4:"@2|0";i:1183;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1184, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.(\d).*Safari.*$@'=>'a:6:{s:4:"@4|1";i:1185;s:4:"@4|4";i:1186;s:4:"@5|0";i:1187;s:4:"@4|3";i:1188;s:4:"@4|0";i:1189;s:4:"@4|2";i:1190;}', '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>1191, '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>1192, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/(\d)\.(\d).* Safari/.*$@'=>'a:8:{s:4:"@7|0";i:1193;s:4:"@8|0";i:1195;s:4:"@6|2";i:1196;s:4:"@6|1";i:1198;s:4:"@9|0";i:1199;s:4:"@6|0";i:1200;s:4:"@9|1";i:1204;s:4:"@7|1";i:1205;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>'a:4:{s:2:"@3";i:1194;s:2:"@0";i:1202;s:2:"@2";i:1203;s:2:"@1";i:1206;}', '@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>1197, '@^Mozilla/5\.0\(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1201, '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@2|7";i:1207;s:4:"@4|9";i:1208;s:4:"@3|4";i:1209;s:4:"@4|6";i:1210;s:4:"@4|7";i:1211;s:4:"@3|0";i:1213;s:4:"@4|4";i:1214;s:4:"@4|2";i:1215;s:4:"@4|5";i:1216;s:4:"@5|1";i:1217;s:4:"@3|2";i:1218;s:4:"@5|0";i:1219;s:4:"@4|8";i:1220;s:4:"@4|1";i:1221;s:4:"@5|5";i:1222;s:4:"@3|7";i:1223;s:4:"@5|4";i:1224;s:4:"@3|8";i:1225;s:4:"@3|3";i:1226;s:4:"@5|2";i:1227;s:4:"@2|8";i:1228;s:4:"@3|9";i:1229;s:4:"@5|3";i:1230;s:4:"@3|1";i:1231;s:4:"@4|0";i:1232;s:4:"@3|5";i:1233;s:4:"@2|9";i:1234;s:4:"@4|3";i:1235;s:4:"@3|6";i:1240;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>'a:5:{s:2:"@4";i:1212;s:2:"@1";i:1236;s:2:"@0";i:1237;s:2:"@2";i:1238;s:2:"@3";i:1239;}', '@^Mozilla/4\.0 \(compatible; MSIE 7\.0.*; .*Windows NT 6\.2.*Trident/3\.1; Xbox; Xbox One.*$@'=>1241, '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) HeadlessChrome.* Safari/.*$@'=>1242, '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Chrome/.*Safari/.*$@'=>1243, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows NT 6\.2.*Trident/6\.0.*Xbox; Xbox One.*\).*$@'=>1244, '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; NOKIA; RM\-994.*$@'=>1245, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@5|8";i:1246;s:4:"@5|4";i:1247;s:4:"@5|3";i:1248;s:4:"@5|5";i:1249;s:4:"@5|9";i:1250;s:4:"@7|1";i:1251;s:4:"@6|7";i:1252;s:4:"@6|6";i:1253;s:4:"@6|2";i:1254;s:4:"@5|1";i:1255;s:4:"@6|4";i:1256;s:4:"@6|8";i:1257;s:4:"@6|9";i:1258;s:4:"@6|3";i:1259;s:4:"@7|0";i:1260;s:4:"@5|2";i:1261;s:4:"@5|0";i:1262;s:4:"@6|5";i:1263;s:4:"@6|1";i:1264;s:4:"@6|0";i:1265;s:4:"@5|7";i:1266;s:4:"@5|6";i:1267;}', '@^Mozilla/5\.0\(.*Linux.*Android.*\)applewebkit.*\(.*khtml.*like.*gecko.*\)Version/4\.0.*Safari.*$@'=>1268, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari.*$@'=>1269, '@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>1270, '@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>1271, '@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; 909.*$@'=>'a:2:{s:2:"@8";i:1272;s:2:"@7";i:1273;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.* Safari/.*$@'=>1274, '@^.* Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1275, '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0; NOKIA; 909.*$@'=>'a:2:{s:2:"@7";i:1276;s:2:"@8";i:1277;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@7|1";i:1278;s:4:"@6|9";i:1279;s:4:"@6|7";i:1280;s:4:"@5|0";i:1281;s:4:"@6|0";i:1282;s:4:"@6|2";i:1283;s:4:"@6|4";i:1284;s:4:"@5|6";i:1285;s:4:"@6|8";i:1286;s:4:"@5|2";i:1287;s:4:"@5|9";i:1288;s:4:"@5|4";i:1289;s:4:"@5|1";i:1290;s:4:"@5|3";i:1291;s:4:"@7|0";i:1292;s:4:"@5|7";i:1293;s:4:"@6|6";i:1294;s:4:"@5|8";i:1295;s:4:"@5|5";i:1296;s:4:"@6|3";i:1297;s:4:"@6|1";i:1298;s:4:"@6|5";i:1299;}', '@^Mozilla/5\.0 Slackware.* \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.*$@'=>1300, '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Version/4\.(\d).*Safari/.*$@'=>'a:2:{s:2:"@1";i:1301;s:2:"@0";i:1302;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; Windows 95; Anonymisiert.*Trident/6\.0.*\).*$@'=>1303, '@^Mozilla/5\.0 ArchLinux \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.*$@'=>1304, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>1305, '@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/4\.0.*$@'=>1306, '@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1307, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@7";i:1308;s:2:"@8";i:1309;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/1(\d)\.(\d).*$@'=>'a:4:{s:4:"@0|1";i:1310;s:4:"@0|0";i:1311;s:4:"@1|0";i:1312;s:4:"@0|2";i:1313;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1314, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|7|8";i:1315;s:6:"@4|8|7";i:1316;s:6:"@4|7|7";i:1317;s:6:"@4|9|7";i:1318;s:6:"@5|9|7";i:1322;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:4:{s:4:"@3|8";i:1319;s:4:"@3|7";i:1320;s:4:"@4|8";i:1321;s:4:"@4|7";i:1323;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:(\d)(\d).*\) Gecko.* Firefox/(\d)(\d).*anonymized by .*$@'=>'a:102:{s:10:"@1|4|0|4|0";i:1324;s:10:"@2|3|4|3|4";i:1325;s:10:"@2|3|0|3|0";i:1326;s:10:"@2|3|7|3|7";i:1327;s:10:"@1|3|9|3|9";i:1328;s:10:"@1|3|2|3|2";i:1329;s:10:"@1|3|4|3|4";i:1330;s:10:"@0|3|4|3|4";i:1331;s:10:"@0|4|0|4|0";i:1332;s:10:"@1|3|3|3|3";i:1333;s:10:"@2|5|7|5|7";i:1334;s:10:"@0|3|3|3|3";i:1335;s:10:"@0|3|8|3|8";i:1336;s:10:"@2|3|2|3|2";i:1337;s:10:"@2|3|9|3|9";i:1338;s:10:"@0|3|0|3|0";i:1339;s:10:"@2|3|3|3|3";i:1340;s:10:"@2|5|4|5|4";i:1341;s:10:"@2|3|8|3|8";i:1342;s:10:"@1|3|8|3|8";i:1343;s:10:"@2|5|8|5|8";i:1344;s:10:"@0|3|6|3|6";i:1345;s:10:"@1|3|6|3|6";i:1346;s:10:"@2|3|6|3|6";i:1347;s:10:"@0|3|1|3|1";i:1348;s:10:"@0|5|5|5|5";i:1349;s:10:"@0|5|8|5|8";i:1350;s:10:"@1|5|8|5|8";i:1351;s:10:"@1|3|1|3|1";i:1352;s:10:"@1|3|7|3|7";i:1353;s:10:"@0|3|5|3|5";i:1354;s:10:"@0|3|2|3|2";i:1355;s:10:"@0|3|7|3|7";i:1356;s:10:"@1|3|5|3|5";i:1357;s:10:"@2|3|5|3|5";i:1358;s:10:"@2|3|1|3|1";i:1359;s:10:"@1|3|0|3|0";i:1360;s:10:"@0|3|9|3|9";i:1361;s:10:"@1|5|7|5|7";i:1362;s:10:"@1|5|0|5|0";i:1363;s:10:"@2|4|0|4|0";i:1364;s:10:"@1|6|1|6|1";i:1365;s:10:"@1|5|5|5|5";i:1366;s:10:"@0|6|2|6|2";i:1367;s:10:"@2|5|0|5|0";i:1368;s:10:"@1|6|2|6|2";i:1369;s:10:"@0|5|4|5|4";i:1370;s:10:"@0|5|0|5|0";i:1371;s:10:"@0|6|0|6|0";i:1372;s:10:"@1|4|9|4|9";i:1373;s:10:"@2|5|9|5|9";i:1374;s:10:"@1|6|0|6|0";i:1375;s:10:"@2|4|9|4|9";i:1376;s:10:"@0|6|1|6|1";i:1377;s:10:"@2|6|0|6|0";i:1378;s:10:"@0|5|7|5|7";i:1379;s:10:"@2|6|2|6|2";i:1380;s:10:"@0|5|6|5|6";i:1381;s:10:"@1|5|2|5|2";i:1382;s:10:"@1|5|6|5|6";i:1383;s:10:"@2|5|2|5|2";i:1384;s:10:"@0|5|3|5|3";i:1385;s:10:"@1|5|3|5|3";i:1386;s:10:"@2|5|5|5|5";i:1387;s:10:"@0|5|2|5|2";i:1388;s:10:"@2|5|3|5|3";i:1389;s:10:"@1|6|3|6|3";i:1390;s:10:"@0|5|1|5|1";i:1391;s:10:"@0|6|3|6|3";i:1392;s:10:"@2|6|3|6|3";i:1393;s:10:"@1|5|1|5|1";i:1394;s:10:"@2|5|6|5|6";i:1395;s:10:"@2|5|1|5|1";i:1396;s:10:"@0|4|9|4|9";i:1397;s:10:"@2|6|1|6|1";i:1398;s:10:"@0|4|5|4|5";i:1399;s:10:"@2|4|4|4|4";i:1400;s:10:"@1|4|4|4|4";i:1401;s:10:"@1|4|5|4|5";i:1402;s:10:"@2|4|5|4|5";i:1403;s:10:"@1|4|6|4|6";i:1404;s:10:"@0|4|6|4|6";i:1405;s:10:"@2|4|3|4|3";i:1406;s:10:"@1|4|3|4|3";i:1407;s:10:"@2|4|1|4|1";i:1408;s:10:"@1|4|1|4|1";i:1409;s:10:"@0|4|1|4|1";i:1410;s:10:"@0|4|2|4|2";i:1411;s:10:"@1|4|2|4|2";i:1412;s:10:"@0|4|3|4|3";i:1413;s:10:"@2|4|2|4|2";i:1414;s:10:"@2|4|6|4|6";i:1415;s:10:"@0|4|4|4|4";i:1416;s:10:"@2|4|8|4|8";i:1417;s:10:"@0|4|7|4|7";i:1418;s:10:"@0|5|9|5|9";i:1419;s:10:"@0|4|8|4|8";i:1420;s:10:"@1|4|8|4|8";i:1421;s:10:"@1|4|7|4|7";i:1422;s:10:"@1|5|9|5|9";i:1423;s:10:"@1|5|4|5|4";i:1424;s:10:"@2|4|7|4|7";i:1425;}', '@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Sabayon Chrome/.*$@'=>1426, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/(\d)\.(\d).*$@'=>'a:8:{s:4:"@7|0";i:1427;s:4:"@6|0";i:1428;s:4:"@6|2";i:1429;s:4:"@6|1";i:1430;s:4:"@9|0";i:1431;s:4:"@7|1";i:1432;s:4:"@9|1";i:1433;s:4:"@8|0";i:1434;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>'a:5:{s:2:"@1";i:1435;s:2:"@4";i:1436;s:2:"@2";i:1437;s:2:"@0";i:1438;s:2:"@3";i:1439;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>1440, '@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1441, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:10:{s:8:"@4|7|3|8";i:1442;s:8:"@4|7|4|8";i:1443;s:8:"@4|9|3|7";i:1444;s:8:"@4|8|3|7";i:1445;s:8:"@4|7|3|7";i:1446;s:8:"@4|7|4|7";i:1447;s:8:"@4|8|4|7";i:1448;s:8:"@5|9|4|7";i:1449;s:8:"@5|9|3|7";i:1450;s:8:"@4|9|4|7";i:1451;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1452;s:2:"@7";i:1453;}', '@^Mozilla/5\.0 \(.*Android.*Mobile.*\).*Gecko.*Firefox/.* anonymized by Abelssoft.*$@'=>1454, '@^Mozilla/5\.0 \(.*Android.*Tablet.*\).*Gecko.*Firefox/.* anonymized by Abelssoft.*$@'=>1455, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.1.*Trident/(\d)\.(\d); Xbox.*$@'=>'a:2:{s:8:"@4|7|3|1";i:1456;s:8:"@5|9|5|0";i:1457;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|9|7";i:1458;s:6:"@4|7|8";i:1459;s:6:"@5|9|7";i:1460;s:6:"@4|8|7";i:1461;s:6:"@4|7|7";i:1462;}', '@^Mozilla/5\.0 \(X11; \) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Safari/.*$@'=>1463, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Safari/(\d)(\d)(\d).*$@'=>'a:9:{s:6:"@1|6|2";i:1464;s:6:"@4|1|2";i:1465;s:6:"@4|1|9";i:1466;s:6:"@1|5|8";i:1467;s:6:"@4|1|7";i:1468;s:6:"@3|1|2";i:1469;s:6:"@1|4|6";i:1470;s:6:"@1|0|0";i:1471;s:6:"@1|2|5";i:1472;}', '@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*CrMo/.*$@'=>1473, '@^Mozilla/5\.0 \(.*Windows NT 6\.0.*; rv\:(\d)(\d).*\) Gecko.* Firefox anonymized by .*$@'=>'a:23:{s:4:"@5|2";i:1474;s:4:"@3|8";i:1475;s:4:"@3|7";i:1476;s:4:"@3|9";i:1477;s:4:"@3|3";i:1478;s:4:"@5|0";i:1479;s:4:"@3|5";i:1480;s:4:"@3|4";i:1481;s:4:"@3|6";i:1482;s:4:"@5|1";i:1483;s:4:"@4|6";i:1484;s:4:"@4|7";i:1485;s:4:"@4|8";i:1486;s:4:"@4|9";i:1487;s:4:"@4|5";i:1488;s:4:"@3|2";i:1489;s:4:"@4|2";i:1490;s:4:"@4|3";i:1491;s:4:"@4|4";i:1492;s:4:"@4|1";i:1493;s:4:"@4|0";i:1494;s:4:"@3|0";i:1495;s:4:"@3|1";i:1496;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1497;s:2:"@7";i:1498;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Safari/85.*$@'=>1499, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|8|7";i:1500;s:6:"@5|9|7";i:1501;s:6:"@4|9|7";i:1502;s:6:"@4|7|8";i:1503;s:6:"@4|7|7";i:1504;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:.*\) Gecko.* Firefox/.*anonymized by .*$@'=>'a:2:{s:2:"@0";i:1505;s:2:"@1";i:1506;}', '@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; .*$@'=>'a:2:{s:2:"@8";i:1507;s:2:"@7";i:1508;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/8\.0.*\).*$@'=>1509, '@^Mozilla/5\.0 \(.*Windows NT 6\.0.*; rv\:.*\) Gecko.* Firefox anonymized by .*$@'=>1510, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*$@'=>1511, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*; Trident/6\.0; .*Windows NT 6\.1.*$@'=>1512, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/8\.0.*\).*$@'=>'a:3:{s:2:"@3";i:1513;s:2:"@1";i:1515;s:2:"@4";i:1518;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/8\.0.*\).*$@'=>'a:5:{s:4:"@5|7";i:1514;s:4:"@4|8";i:1516;s:4:"@4|9";i:1517;s:4:"@4|7";i:1519;s:4:"@5|9";i:1520;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1521, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/7\.0.*$@'=>1522, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*\).*$@'=>'a:23:{s:8:"@4|9|3|8";i:1523;s:8:"@5|9|1|8";i:1524;s:8:"@5|9|3|8";i:1525;s:8:"@4|8|4|8";i:1526;s:8:"@4|8|1|8";i:1527;s:8:"@4|7|1|5";i:1528;s:8:"@5|9|4|8";i:1529;s:8:"@4|9|4|8";i:1530;s:8:"@4|8|3|8";i:1531;s:8:"@5|7|4|8";i:1532;s:8:"@5|7|0|5";i:1533;s:8:"@4|7|3|8";i:1534;s:8:"@4|7|4|8";i:1535;s:8:"@4|8|1|5";i:1536;s:8:"@4|9|1|8";i:1537;s:8:"@4|8|0|5";i:1538;s:8:"@5|7|1|5";i:1539;s:8:"@5|8|1|5";i:1540;s:8:"@4|7|0|5";i:1541;s:8:"@5|7|3|8";i:1542;s:8:"@5|7|1|8";i:1543;s:8:"@4|7|1|8";i:1544;s:8:"@5|8|0|5";i:1545;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/(\d)(\d)\.0.* Anonymisiert.*$@'=>'a:38:{s:6:"@1|4|6";i:1546;s:6:"@1|5|9";i:1547;s:6:"@1|4|0";i:1548;s:6:"@1|3|0";i:1549;s:6:"@1|4|3";i:1550;s:6:"@1|3|2";i:1551;s:6:"@1|5|2";i:1552;s:6:"@2|5|2";i:1553;s:6:"@1|5|8";i:1554;s:6:"@1|4|2";i:1555;s:6:"@1|4|1";i:1556;s:6:"@1|4|5";i:1557;s:6:"@1|3|9";i:1558;s:6:"@1|5|7";i:1559;s:6:"@1|5|6";i:1560;s:6:"@1|5|1";i:1561;s:6:"@1|4|8";i:1562;s:6:"@1|3|6";i:1564;s:6:"@1|6|1";i:1565;s:6:"@1|4|7";i:1566;s:6:"@1|6|2";i:1567;s:6:"@1|5|4";i:1568;s:6:"@2|5|1";i:1569;s:6:"@1|3|4";i:1570;s:6:"@1|3|5";i:1571;s:6:"@2|4|9";i:1572;s:6:"@1|4|9";i:1574;s:6:"@1|6|3";i:1575;s:6:"@1|3|3";i:1576;s:6:"@1|3|1";i:1577;s:6:"@1|6|0";i:1579;s:6:"@1|5|5";i:1580;s:6:"@1|4|4";i:1581;s:6:"@1|5|3";i:1582;s:6:"@1|3|7";i:1583;s:6:"@2|5|0";i:1584;s:6:"@1|3|8";i:1585;s:6:"@1|5|0";i:1586;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1563;s:2:"@7";i:1573;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/8\.0.*\).*$@'=>1578, '@^Mozilla/5\.0 \(.*Windows.*; rv\:(\d)(\d).*\) Gecko.* Firefox/(\d)(\d).*anonymized by .*$@'=>'a:34:{s:8:"@4|9|4|9";i:1587;s:8:"@4|8|4|8";i:1588;s:8:"@6|2|6|2";i:1589;s:8:"@4|4|4|4";i:1590;s:8:"@5|0|5|0";i:1591;s:8:"@4|6|4|6";i:1592;s:8:"@5|8|5|8";i:1593;s:8:"@6|3|6|3";i:1594;s:8:"@6|0|6|0";i:1595;s:8:"@6|1|6|1";i:1596;s:8:"@4|5|4|5";i:1597;s:8:"@5|1|5|1";i:1598;s:8:"@4|7|4|7";i:1599;s:8:"@5|9|5|9";i:1600;s:8:"@3|0|3|0";i:1601;s:8:"@3|9|3|9";i:1602;s:8:"@3|3|3|3";i:1603;s:8:"@4|3|4|3";i:1604;s:8:"@3|4|3|4";i:1605;s:8:"@5|6|5|6";i:1606;s:8:"@5|5|5|5";i:1607;s:8:"@5|2|5|2";i:1608;s:8:"@5|4|5|4";i:1609;s:8:"@3|1|3|1";i:1610;s:8:"@3|7|3|7";i:1611;s:8:"@3|8|3|8";i:1612;s:8:"@3|2|3|2";i:1613;s:8:"@5|3|5|3";i:1614;s:8:"@3|6|3|6";i:1615;s:8:"@4|2|4|2";i:1616;s:8:"@3|5|3|5";i:1617;s:8:"@4|0|4|0";i:1618;s:8:"@4|1|4|1";i:1619;s:8:"@5|7|5|7";i:1620;}', '@^.*Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0.*$@'=>1621, '@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari.*$@'=>1622, '@^Mozilla/(\d)\.0 \(.*Windows.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>'a:2:{s:2:"@4";i:1623;s:2:"@5";i:1624;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/7\.0.*$@'=>'a:6:{s:4:"@5|8";i:1625;s:4:"@4|7";i:1626;s:4:"@4|9";i:1627;s:4:"@5|7";i:1630;s:4:"@4|8";i:1632;s:4:"@5|9";i:1633;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/7\.0.*$@'=>'a:3:{s:2:"@3";i:1628;s:2:"@1";i:1629;s:2:"@4";i:1631;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*$@'=>'a:8:{s:8:"@5|9|1|5";i:1634;s:8:"@5|9|0|5";i:1635;s:8:"@4|8|1|4";i:1637;s:8:"@4|8|0|4";i:1638;s:8:"@5|8|0|4";i:1639;s:8:"@4|9|0|5";i:1641;s:8:"@5|8|1|4";i:1642;s:8:"@4|9|1|5";i:1643;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows NT 6\.(\d).*Trident/6\.0.*\).*$@'=>'a:2:{s:2:"@1";i:1636;s:2:"@2";i:1640;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|8|7";i:1644;s:6:"@4|9|7";i:1646;s:6:"@5|9|7";i:1647;s:6:"@4|7|7";i:1651;s:6:"@4|7|8";i:1657;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@5|7|8";i:1645;s:6:"@4|8|8";i:1648;s:6:"@4|7|8";i:1649;s:6:"@4|7|5";i:1650;s:6:"@4|9|8";i:1652;s:6:"@4|8|5";i:1653;s:6:"@5|8|5";i:1654;s:6:"@5|7|5";i:1655;s:6:"@5|9|8";i:1656;}', '@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0.*$@'=>'a:2:{s:2:"@7";i:1658;s:2:"@8";i:1659;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*$@'=>'a:22:{s:8:"@5|7|1|4";i:1660;s:8:"@4|7|0|4";i:1661;s:8:"@4|7|1|4";i:1662;s:8:"@4|8|3|7";i:1663;s:8:"@5|9|3|7";i:1664;s:8:"@5|9|4|7";i:1665;s:8:"@5|8|3|7";i:1666;s:8:"@5|9|1|7";i:1667;s:8:"@4|9|4|7";i:1668;s:8:"@4|9|1|7";i:1669;s:8:"@4|9|3|7";i:1670;s:8:"@5|8|4|7";i:1671;s:8:"@4|8|1|7";i:1672;s:8:"@5|7|0|4";i:1673;s:8:"@4|7|1|7";i:1674;s:8:"@4|7|3|7";i:1675;s:8:"@5|7|4|7";i:1676;s:8:"@5|7|3|7";i:1677;s:8:"@4|8|4|7";i:1678;s:8:"@5|7|1|7";i:1679;s:8:"@4|7|4|7";i:1680;s:8:"@5|8|1|7";i:1681;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/7\.0.*$@'=>1682, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/8\.0.*\).*$@'=>1683, '@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1684, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows NT 6\.(\d).*Trident/6\.0.*\).*$@'=>'a:12:{s:6:"@5|8|2";i:1685;s:6:"@4|8|1";i:1686;s:6:"@5|8|1";i:1690;s:6:"@4|8|2";i:1691;s:6:"@4|7|1";i:1692;s:6:"@5|7|1";i:1693;s:6:"@5|7|2";i:1696;s:6:"@4|7|2";i:1697;s:6:"@4|9|2";i:1698;s:6:"@4|9|1";i:1700;s:6:"@5|9|1";i:1701;s:6:"@5|9|2";i:1704;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@5|7|7";i:1687;s:6:"@4|7|4";i:1688;s:6:"@5|9|7";i:1689;s:6:"@4|9|7";i:1694;s:6:"@5|8|7";i:1695;s:6:"@4|8|7";i:1699;s:6:"@5|7|4";i:1702;s:6:"@4|7|7";i:1703;}', '@^Mozilla/5\.0 \(.*Windows.*; rv\:(\d)(\d).*\) Gecko.* Firefox anonymized by .*$@'=>'a:34:{s:4:"@4|6";i:1705;s:4:"@4|5";i:1707;s:4:"@3|9";i:1708;s:4:"@3|8";i:1711;s:4:"@4|1";i:1712;s:4:"@4|0";i:1713;s:4:"@4|2";i:1714;s:4:"@4|4";i:1715;s:4:"@4|3";i:1717;s:4:"@3|7";i:1718;s:4:"@5|0";i:1719;s:4:"@5|1";i:1720;s:4:"@5|2";i:1721;s:4:"@5|3";i:1723;s:4:"@3|1";i:1724;s:4:"@5|6";i:1725;s:4:"@5|7";i:1726;s:4:"@4|8";i:1727;s:4:"@3|2";i:1728;s:4:"@3|3";i:1729;s:4:"@5|5";i:1730;s:4:"@3|0";i:1731;s:4:"@5|8";i:1732;s:4:"@6|1";i:1733;s:4:"@6|2";i:1734;s:4:"@6|3";i:1735;s:4:"@6|0";i:1736;s:4:"@4|9";i:1737;s:4:"@5|9";i:1738;s:4:"@5|4";i:1739;s:4:"@4|7";i:1740;s:4:"@3|5";i:1741;s:4:"@3|6";i:1743;s:4:"@3|4";i:1745;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@4|9|8";i:1706;s:6:"@5|9|8";i:1709;s:6:"@4|8|8";i:1710;s:6:"@4|7|8";i:1716;s:6:"@5|7|8";i:1722;s:6:"@4|7|5";i:1742;s:6:"@4|8|5";i:1744;s:6:"@5|7|5";i:1746;s:6:"@5|8|5";i:1747;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) HbbTV.*$@'=>1748, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/7\.0.*$@'=>1749, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*WOW64.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@4|9";i:1750;s:4:"@5|9";i:1751;s:4:"@5|8";i:1752;s:4:"@4|8";i:1753;s:4:"@5|7";i:1754;s:4:"@4|7";i:1755;}', '@^Mozilla/5\.0 \(.*Windows.*; rv\:.*\) Gecko.* Firefox/.*anonymized by .*$@'=>1756, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@5|8|7";i:1757;s:6:"@4|9|7";i:1758;s:6:"@5|7|4";i:1759;s:6:"@4|7|4";i:1760;s:6:"@5|9|7";i:1761;s:6:"@4|8|7";i:1762;s:6:"@4|7|7";i:1763;s:6:"@5|7|7";i:1764;}', '@^Mozilla/5\.0 \(.*Windows.*; rv\:.*\) Gecko.* Firefox anonymized by .*$@'=>1765, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*; Trident/6\.0; .*Windows.*$@'=>1766, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/8\.0.*\).*$@'=>1767, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*x64.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@5|9";i:1768;s:4:"@4|8";i:1769;s:4:"@4|9";i:1770;s:4:"@4|7";i:1771;s:4:"@5|7";i:1772;s:4:"@5|8";i:1773;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@5|8|5";i:1774;s:6:"@5|7|8";i:1775;s:6:"@4|9|8";i:1776;s:6:"@5|7|5";i:1777;s:6:"@4|7|5";i:1778;s:6:"@4|8|8";i:1780;s:6:"@4|8|5";i:1781;s:6:"@4|7|8";i:1782;s:6:"@5|9|8";i:1783;}', '@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*THOMSON; Thomson THS845.*$@'=>1779, '@^Mozilla/5\.0 \(.*Windows.*\) Gecko.* Firefox/(\d)(\d)\.0.* Anonymisiert.*$@'=>'a:34:{s:4:"@5|2";i:1784;s:4:"@5|8";i:1785;s:4:"@5|7";i:1786;s:4:"@5|5";i:1787;s:4:"@4|4";i:1788;s:4:"@5|0";i:1789;s:4:"@3|0";i:1790;s:4:"@4|9";i:1791;s:4:"@4|3";i:1793;s:4:"@3|3";i:1794;s:4:"@4|6";i:1795;s:4:"@4|8";i:1796;s:4:"@3|2";i:1797;s:4:"@4|5";i:1798;s:4:"@5|6";i:1799;s:4:"@3|6";i:1800;s:4:"@3|1";i:1802;s:4:"@3|7";i:1803;s:4:"@4|0";i:1805;s:4:"@3|5";i:1806;s:4:"@3|8";i:1807;s:4:"@6|3";i:1809;s:4:"@4|7";i:1810;s:4:"@3|4";i:1811;s:4:"@6|1";i:1813;s:4:"@3|9";i:1814;s:4:"@4|2";i:1816;s:4:"@5|4";i:1817;s:4:"@4|1";i:1818;s:4:"@5|1";i:1819;s:4:"@6|0";i:1820;s:4:"@5|3";i:1821;s:4:"@5|9";i:1822;s:4:"@6|2";i:1823;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:1\.9\.(\d).*\) Gecko.* Firefox .*$@'=>'a:6:{s:4:"@2|2";i:1792;s:4:"@0|2";i:1801;s:4:"@1|2";i:1804;s:4:"@1|1";i:1808;s:4:"@0|1";i:1812;s:4:"@2|1";i:1815;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>1824, '@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/7\.0.*$@'=>1825, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows.*Trident/(\d)\.0.*$@'=>'a:4:{s:6:"@5|8|4";i:1826;s:6:"@4|8|4";i:1827;s:6:"@5|9|5";i:1829;s:6:"@4|9|5";i:1830;}', '@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows.*Trident/6\.0.*\).*$@'=>1828, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>'a:2:{s:2:"@3";i:1831;s:2:"@4";i:1832;}', '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@4|8|7";i:1833;s:6:"@5|9|7";i:1834;s:6:"@5|7|7";i:1835;s:6:"@4|9|7";i:1836;s:6:"@4|7|4";i:1837;s:6:"@5|8|7";i:1838;s:6:"@4|7|7";i:1839;s:6:"@5|7|4";i:1840;}', '@^Mozilla/5\.0; TOB.* \(.*Windows NT 10\.0.*Trident/7\.0.*rv\:11\.0.*$@'=>1841, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@4|8";i:1842;s:4:"@5|8";i:1843;s:4:"@4|9";i:1844;s:4:"@4|7";i:1845;s:4:"@5|7";i:1846;s:4:"@5|9";i:1847;}', '@^Mozilla/5\.0; TOB.* \(.*Windows NT 6\.(\d).*Trident/7\.0.*rv\:11\.0.*$@'=>'a:3:{s:2:"@4";i:1848;s:2:"@3";i:1849;s:2:"@1";i:1850;}', '@^Mozilla/5\.0 \(.*MSIE 9\.0.*; .*Windows NT 6\.(\d).*Trident/5\.0.*\).*$@'=>'a:2:{s:2:"@0";i:1851;s:2:"@1";i:1852;}', '@^Mozilla/5\.0 \(masking\-agent; rv\:.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@6|0";i:1853;s:4:"@5|1";i:1854;s:4:"@6|2";i:1855;s:4:"@5|0";i:1856;s:4:"@6|3";i:1857;s:4:"@6|1";i:1858;s:4:"@3|0";i:1859;s:4:"@5|8";i:1860;s:4:"@3|3";i:1861;s:4:"@5|6";i:1862;s:4:"@4|8";i:1863;s:4:"@3|1";i:1864;s:4:"@5|7";i:1865;s:4:"@4|9";i:1866;s:4:"@3|2";i:1867;s:4:"@5|5";i:1868;s:4:"@5|9";i:1869;s:4:"@3|4";i:1870;s:4:"@4|5";i:1871;s:4:"@4|7";i:1872;s:4:"@5|2";i:1873;s:4:"@4|6";i:1874;s:4:"@3|7";i:1875;s:4:"@5|4";i:1876;s:4:"@3|6";i:1877;s:4:"@4|3";i:1878;s:4:"@4|4";i:1879;s:4:"@4|2";i:1880;s:4:"@4|0";i:1881;s:4:"@4|1";i:1882;s:4:"@5|3";i:1883;s:4:"@3|5";i:1884;s:4:"@3|9";i:1885;s:4:"@3|8";i:1886;}', '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0b.*; .*Windows NT 6\.0.*$@'=>1887, '@^Mozilla/5\.0 \(.*Windows.*\) Gecko.* Firefox/.* Anonymisiert.*$@'=>1888, '@^Mozilla/(\d)\.0 \(compatible; MSIE 10\.0.*; .*Windows NT 6\.(\d).*$@'=>'a:4:{s:4:"@4|1";i:1889;s:4:"@4|2";i:1890;s:4:"@5|2";i:1891;s:4:"@5|1";i:1892;}', '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows NT 6\.0.*$@'=>1893, '@^Mozilla/5\.0 \(Windows 95; Anonymisiert.*; Trident/7\.0.*$@'=>1894, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.(\d).*$@'=>'a:9:{s:6:"@5|7|0";i:1895;s:6:"@5|8|0";i:1896;s:6:"@5|8|1";i:1897;s:6:"@4|8|1";i:1898;s:6:"@4|8|0";i:1899;s:6:"@5|9|0";i:1900;s:6:"@4|9|1";i:1901;s:6:"@5|9|1";i:1902;s:6:"@4|9|0";i:1903;}', '@^Mozilla/(\d)\.0 \(.*Windows NT 10\.0.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@4|6|0";i:1904;s:6:"@5|3|7";i:1905;s:6:"@5|5|0";i:1906;s:6:"@5|5|9";i:1907;s:6:"@4|3|3";i:1908;s:6:"@4|3|7";i:1909;s:6:"@5|5|8";i:1910;s:6:"@5|4|9";i:1911;s:6:"@5|5|2";i:1912;s:6:"@5|6|0";i:1913;s:6:"@4|5|9";i:1914;s:6:"@4|5|2";i:1915;s:6:"@4|4|2";i:1916;s:6:"@4|3|4";i:1917;s:6:"@5|6|1";i:1918;s:6:"@4|6|1";i:1919;s:6:"@4|4|1";i:1920;s:6:"@4|4|0";i:1921;s:6:"@5|3|3";i:1922;s:6:"@5|4|0";i:1923;s:6:"@5|3|9";i:1924;s:6:"@4|3|9";i:1925;s:6:"@4|3|8";i:1926;s:6:"@4|5|8";i:1927;s:6:"@4|5|0";i:1928;s:6:"@5|3|8";i:1929;s:6:"@4|6|2";i:1930;s:6:"@5|4|1";i:1931;s:6:"@5|3|4";i:1932;s:6:"@5|4|2";i:1933;s:6:"@5|5|1";i:1934;s:6:"@5|3|5";i:1935;s:6:"@4|4|6";i:1936;s:6:"@4|3|1";i:1937;s:6:"@5|4|5";i:1938;s:6:"@4|5|5";i:1939;s:6:"@5|5|5";i:1940;s:6:"@5|5|4";i:1941;s:6:"@5|3|1";i:1942;s:6:"@5|4|7";i:1943;s:6:"@4|4|7";i:1944;s:6:"@4|3|2";i:1945;s:6:"@4|5|3";i:1946;s:6:"@5|3|2";i:1947;s:6:"@5|3|6";i:1948;s:6:"@4|3|6";i:1949;s:6:"@4|4|5";i:1950;s:6:"@4|5|4";i:1951;s:6:"@4|5|7";i:1952;s:6:"@4|3|0";i:1953;s:6:"@5|4|8";i:1954;s:6:"@5|5|7";i:1955;s:6:"@5|5|3";i:1956;s:6:"@5|4|3";i:1957;s:6:"@4|3|5";i:1958;s:6:"@5|3|0";i:1959;s:6:"@4|5|1";i:1960;s:6:"@4|4|8";i:1961;s:6:"@5|4|4";i:1962;s:6:"@4|4|4";i:1963;s:6:"@5|4|6";i:1964;s:6:"@5|5|6";i:1965;s:6:"@4|5|6";i:1966;s:6:"@4|4|3";i:1967;s:6:"@4|4|9";i:1968;s:6:"@5|6|3";i:1969;s:6:"@4|6|3";i:1970;s:6:"@5|6|2";i:1971;}', '@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>1972, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) Gecko.*/.*Mozilla/5\.0.*$@'=>1973, '@^Mozilla/(\d)\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:318:{s:8:"@5|1|4|0";i:1974;s:8:"@5|0|4|0";i:1975;s:8:"@4|4|4|0";i:1976;s:8:"@4|3|4|0";i:1977;s:8:"@5|2|4|0";i:1978;s:8:"@5|3|4|0";i:1979;s:8:"@5|2|5|2";i:1980;s:8:"@5|2|3|6";i:1981;s:8:"@5|3|5|2";i:1982;s:8:"@5|4|5|2";i:1983;s:8:"@4|2|4|0";i:1984;s:8:"@4|1|4|0";i:1985;s:8:"@5|1|5|3";i:1986;s:8:"@5|2|5|3";i:1987;s:8:"@5|3|5|3";i:1988;s:8:"@5|4|5|3";i:1989;s:8:"@5|4|3|9";i:1990;s:8:"@4|4|5|3";i:1991;s:8:"@4|0|4|0";i:1992;s:8:"@4|1|5|3";i:1993;s:8:"@4|2|5|3";i:1994;s:8:"@4|3|5|3";i:1995;s:8:"@5|1|5|2";i:1996;s:8:"@5|0|5|2";i:1997;s:8:"@5|4|4|1";i:1998;s:8:"@5|3|4|1";i:1999;s:8:"@5|2|4|1";i:2000;s:8:"@5|1|4|1";i:2001;s:8:"@4|0|4|2";i:2002;s:8:"@5|1|3|6";i:2003;s:8:"@4|4|4|2";i:2004;s:8:"@4|3|4|2";i:2005;s:8:"@4|2|4|2";i:2006;s:8:"@4|1|4|2";i:2007;s:8:"@5|0|4|1";i:2008;s:8:"@4|4|4|1";i:2009;s:8:"@4|2|5|2";i:2010;s:8:"@4|3|5|2";i:2011;s:8:"@4|4|5|2";i:2012;s:8:"@4|0|4|1";i:2013;s:8:"@4|1|5|2";i:2014;s:8:"@4|0|5|2";i:2015;s:8:"@4|3|4|1";i:2016;s:8:"@4|2|4|1";i:2017;s:8:"@4|1|4|1";i:2018;s:8:"@5|3|3|9";i:2019;s:8:"@5|1|3|9";i:2020;s:8:"@5|1|3|7";i:2021;s:8:"@5|0|3|7";i:2022;s:8:"@4|1|5|5";i:2023;s:8:"@4|2|5|5";i:2024;s:8:"@5|2|3|7";i:2025;s:8:"@5|3|3|7";i:2026;s:8:"@4|2|3|8";i:2027;s:8:"@4|1|3|8";i:2028;s:8:"@4|0|3|8";i:2029;s:8:"@5|4|3|7";i:2030;s:8:"@4|3|5|5";i:2031;s:8:"@4|4|5|5";i:2032;s:8:"@5|4|5|5";i:2033;s:8:"@4|2|3|7";i:2034;s:8:"@4|1|3|7";i:2035;s:8:"@4|0|3|7";i:2036;s:8:"@5|3|5|5";i:2037;s:8:"@5|2|5|5";i:2038;s:8:"@5|3|3|6";i:2039;s:8:"@4|4|3|7";i:2040;s:8:"@4|3|3|7";i:2041;s:8:"@5|1|5|5";i:2042;s:8:"@4|3|3|8";i:2043;s:8:"@4|4|3|8";i:2044;s:8:"@4|1|3|9";i:2045;s:8:"@4|0|3|9";i:2046;s:8:"@5|4|3|8";i:2047;s:8:"@4|1|5|4";i:2048;s:8:"@4|2|3|9";i:2049;s:8:"@4|3|3|9";i:2050;s:8:"@5|4|3|6";i:2051;s:8:"@5|0|3|9";i:2052;s:8:"@5|4|5|1";i:2053;s:8:"@4|4|3|9";i:2054;s:8:"@4|2|5|4";i:2055;s:8:"@4|3|5|4";i:2056;s:8:"@5|3|5|4";i:2057;s:8:"@5|4|5|4";i:2058;s:8:"@5|1|3|8";i:2059;s:8:"@5|0|3|8";i:2060;s:8:"@5|2|5|4";i:2061;s:8:"@5|1|5|4";i:2062;s:8:"@4|4|5|4";i:2063;s:8:"@5|3|3|8";i:2064;s:8:"@5|2|3|8";i:2065;s:8:"@5|2|3|9";i:2066;s:8:"@5|1|5|1";i:2067;s:8:"@4|0|4|6";i:2068;s:8:"@5|4|4|5";i:2069;s:8:"@4|0|4|9";i:2070;s:8:"@4|1|4|9";i:2071;s:8:"@4|1|4|6";i:2072;s:8:"@4|2|4|6";i:2073;s:8:"@5|1|4|6";i:2074;s:8:"@5|0|4|6";i:2075;s:8:"@4|4|4|6";i:2076;s:8:"@4|3|4|6";i:2077;s:8:"@4|2|4|9";i:2078;s:8:"@4|3|4|9";i:2079;s:8:"@5|3|4|9";i:2080;s:8:"@5|4|4|9";i:2081;s:8:"@5|1|4|5";i:2082;s:8:"@5|0|4|5";i:2083;s:8:"@5|2|4|9";i:2084;s:8:"@5|1|4|9";i:2085;s:8:"@4|4|4|9";i:2086;s:8:"@5|3|4|5";i:2087;s:8:"@5|2|4|5";i:2088;s:8:"@5|0|4|9";i:2089;s:8:"@5|2|4|6";i:2090;s:8:"@5|3|4|6";i:2091;s:8:"@4|3|4|8";i:2092;s:8:"@4|2|4|8";i:2093;s:8:"@4|1|4|8";i:2094;s:8:"@4|0|4|8";i:2095;s:8:"@4|4|4|8";i:2096;s:8:"@5|0|4|8";i:2097;s:8:"@5|4|4|8";i:2098;s:8:"@5|3|4|8";i:2099;s:8:"@5|2|4|8";i:2100;s:8:"@5|1|4|8";i:2101;s:8:"@5|1|6|2";i:2102;s:8:"@5|4|4|7";i:2103;s:8:"@4|2|4|7";i:2104;s:8:"@4|1|4|7";i:2105;s:8:"@4|0|4|7";i:2106;s:8:"@5|4|4|6";i:2107;s:8:"@4|3|4|7";i:2108;s:8:"@4|4|4|7";i:2109;s:8:"@5|3|4|7";i:2110;s:8:"@5|2|4|7";i:2111;s:8:"@5|1|4|7";i:2112;s:8:"@5|0|4|7";i:2113;s:8:"@4|4|4|5";i:2114;s:8:"@4|3|4|5";i:2115;s:8:"@4|2|4|3";i:2116;s:8:"@4|1|4|3";i:2117;s:8:"@4|0|4|3";i:2118;s:8:"@5|4|4|2";i:2119;s:8:"@4|3|4|3";i:2120;s:8:"@4|4|4|3";i:2121;s:8:"@5|3|4|3";i:2122;s:8:"@5|2|4|3";i:2123;s:8:"@5|1|4|3";i:2124;s:8:"@5|0|4|3";i:2125;s:8:"@5|3|4|2";i:2126;s:8:"@5|2|4|2";i:2127;s:8:"@5|0|4|2";i:2128;s:8:"@5|0|5|1";i:2129;s:8:"@5|0|3|6";i:2130;s:8:"@5|2|5|1";i:2131;s:8:"@4|4|5|1";i:2132;s:8:"@4|3|5|1";i:2133;s:8:"@5|1|4|2";i:2134;s:8:"@4|0|5|1";i:2135;s:8:"@4|1|5|1";i:2136;s:8:"@4|2|5|1";i:2137;s:8:"@5|4|4|3";i:2138;s:8:"@5|4|5|0";i:2139;s:8:"@5|1|4|4";i:2140;s:8:"@5|0|4|4";i:2141;s:8:"@4|4|4|4";i:2142;s:8:"@4|3|4|4";i:2143;s:8:"@5|2|4|4";i:2144;s:8:"@5|3|4|4";i:2145;s:8:"@4|2|4|5";i:2146;s:8:"@4|1|4|5";i:2147;s:8:"@4|0|4|5";i:2148;s:8:"@5|4|4|4";i:2149;s:8:"@4|2|4|4";i:2150;s:8:"@4|1|4|4";i:2151;s:8:"@5|0|5|0";i:2152;s:8:"@5|1|5|0";i:2153;s:8:"@5|2|5|0";i:2154;s:8:"@5|3|5|0";i:2155;s:8:"@4|4|5|0";i:2156;s:8:"@4|3|5|0";i:2157;s:8:"@4|0|4|4";i:2158;s:8:"@4|0|5|0";i:2159;s:8:"@4|1|5|0";i:2160;s:8:"@4|2|5|0";i:2161;s:8:"@5|3|5|1";i:2162;s:8:"@5|4|4|0";i:2163;s:8:"@4|1|3|2";i:2164;s:8:"@4|1|5|9";i:2165;s:8:"@4|2|5|9";i:2166;s:8:"@4|3|5|9";i:2167;s:8:"@4|2|3|2";i:2168;s:8:"@4|3|3|2";i:2169;s:8:"@5|2|6|3";i:2170;s:8:"@5|1|6|3";i:2171;s:8:"@4|4|3|2";i:2172;s:8:"@4|4|5|9";i:2173;s:8:"@4|0|3|2";i:2174;s:8:"@5|3|3|1";i:2175;s:8:"@5|2|3|1";i:2176;s:8:"@5|1|3|1";i:2177;s:8:"@5|4|3|1";i:2178;s:8:"@5|4|5|9";i:2179;s:8:"@5|1|5|9";i:2180;s:8:"@5|2|5|9";i:2181;s:8:"@5|3|5|9";i:2182;s:8:"@5|3|6|3";i:2183;s:8:"@5|0|3|2";i:2184;s:8:"@4|2|5|8";i:2185;s:8:"@4|3|5|8";i:2186;s:8:"@4|4|5|8";i:2187;s:8:"@4|1|3|3";i:2188;s:8:"@4|1|5|8";i:2189;s:8:"@4|2|3|3";i:2190;s:8:"@5|0|3|3";i:2191;s:8:"@4|4|3|3";i:2192;s:8:"@4|3|3|3";i:2193;s:8:"@5|1|5|8";i:2194;s:8:"@5|2|5|8";i:2195;s:8:"@5|3|3|2";i:2196;s:8:"@5|2|3|2";i:2197;s:8:"@5|1|3|2";i:2198;s:8:"@5|4|3|2";i:2199;s:8:"@4|0|3|3";i:2200;s:8:"@5|3|5|8";i:2201;s:8:"@5|4|5|8";i:2202;s:8:"@5|4|6|3";i:2203;s:8:"@5|0|3|1";i:2204;s:8:"@4|3|6|3";i:2205;s:8:"@4|2|6|1";i:2206;s:8:"@4|3|6|1";i:2207;s:8:"@4|4|6|1";i:2208;s:8:"@5|1|6|1";i:2209;s:8:"@4|1|6|1";i:2210;s:8:"@4|0|3|0";i:2211;s:8:"@4|3|3|0";i:2212;s:8:"@4|2|3|0";i:2213;s:8:"@4|1|3|0";i:2214;s:8:"@5|2|6|1";i:2215;s:8:"@5|3|6|1";i:2216;s:8:"@4|3|6|2";i:2217;s:8:"@4|4|6|2";i:2218;s:8:"@5|2|6|2";i:2219;s:8:"@4|2|6|2";i:2220;s:8:"@4|1|6|2";i:2221;s:8:"@5|4|6|1";i:2222;s:8:"@5|4|6|2";i:2223;s:8:"@5|3|6|2";i:2224;s:8:"@4|4|3|0";i:2225;s:8:"@5|0|3|0";i:2226;s:8:"@4|1|3|1";i:2227;s:8:"@4|0|3|1";i:2228;s:8:"@4|1|6|0";i:2229;s:8:"@4|2|6|0";i:2230;s:8:"@4|2|3|1";i:2231;s:8:"@4|3|3|1";i:2232;s:8:"@4|4|3|1";i:2233;s:8:"@4|2|6|3";i:2234;s:8:"@4|1|6|3";i:2235;s:8:"@4|3|6|0";i:2236;s:8:"@4|4|6|0";i:2237;s:8:"@5|3|3|0";i:2238;s:8:"@5|2|3|0";i:2239;s:8:"@5|1|3|0";i:2240;s:8:"@5|4|3|0";i:2241;s:8:"@5|4|6|0";i:2242;s:8:"@5|1|6|0";i:2243;s:8:"@5|2|6|0";i:2244;s:8:"@5|3|6|0";i:2245;s:8:"@5|1|3|3";i:2246;s:8:"@4|4|6|3";i:2247;s:8:"@4|3|5|6";i:2248;s:8:"@4|3|3|5";i:2249;s:8:"@5|2|5|7";i:2250;s:8:"@5|1|5|7";i:2251;s:8:"@4|2|3|5";i:2252;s:8:"@4|4|3|5";i:2253;s:8:"@5|3|5|7";i:2254;s:8:"@4|4|3|4";i:2255;s:8:"@5|4|5|7";i:2256;s:8:"@5|2|3|4";i:2257;s:8:"@4|4|5|6";i:2258;s:8:"@4|2|5|6";i:2259;s:8:"@4|1|3|5";i:2260;s:8:"@4|3|5|7";i:2261;s:8:"@4|2|5|7";i:2262;s:8:"@4|1|5|7";i:2263;s:8:"@5|1|3|4";i:2264;s:8:"@4|4|5|7";i:2265;s:8:"@5|3|3|4";i:2266;s:8:"@5|0|3|4";i:2267;s:8:"@4|0|3|5";i:2268;s:8:"@4|1|5|6";i:2269;s:8:"@5|4|3|4";i:2270;s:8:"@4|3|3|4";i:2271;s:8:"@5|0|3|5";i:2272;s:8:"@5|4|3|3";i:2273;s:8:"@5|3|3|5";i:2274;s:8:"@5|3|5|6";i:2275;s:8:"@4|1|3|6";i:2276;s:8:"@5|2|5|6";i:2277;s:8:"@5|3|3|3";i:2278;s:8:"@4|2|3|6";i:2279;s:8:"@5|4|3|5";i:2280;s:8:"@4|3|3|6";i:2281;s:8:"@4|4|3|6";i:2282;s:8:"@5|2|3|3";i:2283;s:8:"@5|1|5|6";i:2284;s:8:"@5|4|5|6";i:2285;s:8:"@4|2|3|4";i:2286;s:8:"@4|0|3|6";i:2287;s:8:"@4|0|3|4";i:2288;s:8:"@5|1|3|5";i:2289;s:8:"@4|1|3|4";i:2290;s:8:"@5|2|3|5";i:2291;}', '@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/(\d)(\d)\.(\d).*$@'=>'a:56:{s:6:"@6|3|0";i:2292;s:6:"@2|2|0";i:2294;s:6:"@2|1|0";i:2295;s:6:"@6|2|0";i:2296;s:6:"@1|8|0";i:2302;s:6:"@3|8|0";i:2303;s:6:"@2|3|0";i:2306;s:6:"@3|6|0";i:2307;s:6:"@1|9|0";i:2310;s:6:"@2|4|0";i:2311;s:6:"@5|9|0";i:2314;s:6:"@5|0|1";i:2316;s:6:"@5|1|0";i:2319;s:6:"@5|3|0";i:2321;s:6:"@2|5|0";i:2322;s:6:"@5|2|0";i:2324;s:6:"@5|0|0";i:2325;s:6:"@3|0|0";i:2328;s:6:"@2|9|0";i:2330;s:6:"@3|1|0";i:2331;s:6:"@4|9|0";i:2333;s:6:"@4|8|0";i:2335;s:6:"@5|4|0";i:2337;s:6:"@3|9|0";i:2338;s:6:"@5|8|0";i:2341;s:6:"@6|0|0";i:2343;s:6:"@6|1|0";i:2344;s:6:"@5|5|0";i:2350;s:6:"@3|2|0";i:2351;s:6:"@3|7|0";i:2353;s:6:"@5|6|0";i:2354;s:6:"@5|7|0";i:2355;s:6:"@1|6|0";i:2362;s:6:"@3|4|0";i:2363;s:6:"@4|2|0";i:2364;s:6:"@1|3|0";i:2365;s:6:"@1|2|0";i:2367;s:6:"@3|3|1";i:2374;s:6:"@4|6|0";i:2376;s:6:"@4|5|0";i:2378;s:6:"@2|6|0";i:2380;s:6:"@4|4|0";i:2382;s:6:"@1|5|0";i:2383;s:6:"@2|7|0";i:2386;s:6:"@1|4|0";i:2388;s:6:"@4|3|0";i:2389;s:6:"@4|1|0";i:2393;s:6:"@1|7|0";i:2394;s:6:"@1|0|0";i:2396;s:6:"@3|5|0";i:2398;s:6:"@4|0|0";i:2399;s:6:"@1|1|0";i:2401;s:6:"@2|0|0";i:2402;s:6:"@4|7|0";i:2403;s:6:"@2|8|0";i:2405;s:6:"@3|3|0";i:2408;}', '@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/(\d)(\d)\.(\d).*$@'=>'a:56:{s:6:"@6|3|0";i:2293;s:6:"@1|7|0";i:2297;s:6:"@2|4|0";i:2299;s:6:"@3|2|0";i:2300;s:6:"@6|2|0";i:2301;s:6:"@3|8|0";i:2304;s:6:"@2|1|0";i:2305;s:6:"@2|3|0";i:2308;s:6:"@3|7|0";i:2309;s:6:"@2|2|0";i:2312;s:6:"@3|6|0";i:2313;s:6:"@5|0|1";i:2315;s:6:"@2|5|0";i:2317;s:6:"@5|0|0";i:2318;s:6:"@5|1|0";i:2320;s:6:"@5|2|0";i:2323;s:6:"@4|9|0";i:2326;s:6:"@3|0|0";i:2327;s:6:"@2|9|0";i:2329;s:6:"@3|1|0";i:2332;s:6:"@4|8|0";i:2334;s:6:"@5|3|0";i:2336;s:6:"@5|8|0";i:2340;s:6:"@5|9|0";i:2342;s:6:"@6|0|0";i:2346;s:6:"@5|7|0";i:2348;s:6:"@5|5|0";i:2349;s:6:"@5|4|0";i:2352;s:6:"@5|6|0";i:2357;s:6:"@6|1|0";i:2358;s:6:"@2|0|0";i:2359;s:6:"@1|2|0";i:2360;s:6:"@2|7|0";i:2361;s:6:"@4|2|0";i:2366;s:6:"@3|3|0";i:2368;s:6:"@3|4|0";i:2369;s:6:"@1|9|0";i:2370;s:6:"@2|6|0";i:2371;s:6:"@1|1|0";i:2372;s:6:"@4|1|0";i:2373;s:6:"@1|5|0";i:2375;s:6:"@1|4|0";i:2377;s:6:"@4|6|0";i:2379;s:6:"@4|4|0";i:2381;s:6:"@4|7|0";i:2384;s:6:"@3|3|1";i:2385;s:6:"@1|3|0";i:2387;s:6:"@4|5|0";i:2390;s:6:"@4|3|0";i:2391;s:6:"@1|6|0";i:2392;s:6:"@4|0|0";i:2395;s:6:"@3|9|0";i:2397;s:6:"@1|0|0";i:2400;s:6:"@1|8|0";i:2404;s:6:"@2|8|0";i:2406;s:6:"@3|5|0";i:2407;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.*/.*Mozilla/5\.0.*$@'=>'a:5:{s:2:"@4";i:2298;s:2:"@2";i:2339;s:2:"@3";i:2345;s:2:"@1";i:2347;s:2:"@0";i:2356;}', '@^Mozilla/5\.0 \(masking\-agent; rv\:.*\) Gecko.* Firefox/.*$@'=>2409, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/7\.0.*rv\:11\.0.*$@'=>2410, '@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2411, '@^Mozilla/5\.0 \(iPad.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2412, '@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/(\d)\.(\d).*$@'=>'a:11:{s:4:"@2|0";i:2413;s:4:"@1|0";i:2417;s:4:"@9|0";i:2419;s:4:"@6|0";i:2420;s:4:"@7|0";i:2421;s:4:"@1|1";i:2423;s:4:"@5|0";i:2426;s:4:"@8|0";i:2428;s:4:"@4|0";i:2430;s:4:"@2|3";i:2432;s:4:"@2|1";i:2434;}', '@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/(\d)\.(\d).*$@'=>'a:11:{s:4:"@8|0";i:2414;s:4:"@9|0";i:2415;s:4:"@1|1";i:2416;s:4:"@6|0";i:2418;s:4:"@1|0";i:2422;s:4:"@2|0";i:2424;s:4:"@7|0";i:2425;s:4:"@2|3";i:2427;s:4:"@4|0";i:2429;s:4:"@2|1";i:2431;s:4:"@5|0";i:2433;}', '@^Mozilla/5\.0 \(.*Windows.*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>2435, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/7\.0.*rv\:11\.0.*$@'=>'a:3:{s:2:"@3";i:2436;s:2:"@4";i:2437;s:2:"@1";i:2438;}', '@^Mozilla/(\d)\.0 \(.*Windows NT 10\.0.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@5";i:2439;s:2:"@4";i:2440;}', '@^Mozilla/5\.0; TOB.* \(.*Windows.*Trident/7\.0.*rv\:11\.0.*$@'=>2441, '@^Mozilla/5\.0 \(.*MSIE 9\.0.*; .*Windows.*Trident/5\.0.*\).*$@'=>2442, '@^Mozilla/(\d)\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/.*$@'=>'a:10:{s:4:"@4|1";i:2443;s:4:"@4|0";i:2444;s:4:"@5|3";i:2445;s:4:"@4|3";i:2446;s:4:"@4|4";i:2447;s:4:"@5|4";i:2448;s:4:"@4|2";i:2449;s:4:"@5|1";i:2451;s:4:"@5|2";i:2452;s:4:"@5|0";i:2453;}', '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0b.*; .*Windows.*$@'=>2450, '@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/.*$@'=>2454, '@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/.*$@'=>2455, '@^Mozilla/(\d)\.0 \(compatible; MSIE 10\.0.*; .*Windows.*$@'=>'a:2:{s:2:"@5";i:2456;s:2:"@4";i:2457;}', '@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows.*$@'=>2458, '@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2459, '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*; Trident/8\.0.*\).*$@'=>2460, '@^Mozilla/5\.0 \(.*Android.*Tablet.*\).*Gecko.*Firefox/.*$@'=>2461, '@^Mozilla/5\.0 \(.*Android.*Mobile.*\).*Gecko.*Firefox/.*$@'=>2462, '@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows.*$@'=>'a:7:{s:4:"@5|7";i:2463;s:4:"@4|6";i:2464;s:4:"@5|6";i:2465;s:4:"@5|9";i:2466;s:4:"@4|9";i:2467;s:4:"@5|8";i:2468;s:4:"@4|8";i:2469;}', '@^Mozilla/(\d)\.0 \(.*Mac OS X.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@5|6|0";i:2470;s:6:"@5|3|3";i:2471;s:6:"@5|4|0";i:2472;s:6:"@4|5|8";i:2473;s:6:"@4|4|0";i:2474;s:6:"@4|5|3";i:2475;s:6:"@4|3|4";i:2476;s:6:"@5|5|3";i:2477;s:6:"@4|4|1";i:2478;s:6:"@5|5|8";i:2479;s:6:"@5|4|1";i:2482;s:6:"@4|5|2";i:2483;s:6:"@4|3|3";i:2484;s:6:"@5|5|2";i:2485;s:6:"@5|3|9";i:2487;s:6:"@5|5|7";i:2488;s:6:"@5|5|6";i:2489;s:6:"@4|5|5";i:2490;s:6:"@5|3|7";i:2491;s:6:"@5|5|5";i:2492;s:6:"@4|5|6";i:2493;s:6:"@4|3|7";i:2494;s:6:"@4|3|6";i:2495;s:6:"@4|3|8";i:2496;s:6:"@5|3|5";i:2497;s:6:"@4|5|4";i:2498;s:6:"@4|3|9";i:2499;s:6:"@5|3|4";i:2500;s:6:"@4|5|7";i:2501;s:6:"@5|5|4";i:2502;s:6:"@5|3|8";i:2503;s:6:"@4|3|5";i:2504;s:6:"@5|3|2";i:2505;s:6:"@4|4|2";i:2506;s:6:"@4|3|0";i:2507;s:6:"@5|4|9";i:2508;s:6:"@4|6|1";i:2509;s:6:"@5|4|5";i:2510;s:6:"@5|3|0";i:2511;s:6:"@5|3|6";i:2512;s:6:"@4|4|5";i:2513;s:6:"@4|4|9";i:2514;s:6:"@4|4|6";i:2515;s:6:"@4|4|8";i:2516;s:6:"@4|6|2";i:2517;s:6:"@5|4|8";i:2518;s:6:"@5|4|7";i:2519;s:6:"@4|4|7";i:2520;s:6:"@5|6|1";i:2521;s:6:"@5|4|6";i:2522;s:6:"@5|4|4";i:2523;s:6:"@4|3|1";i:2524;s:6:"@5|5|9";i:2525;s:6:"@4|5|1";i:2526;s:6:"@4|3|2";i:2527;s:6:"@5|5|1";i:2528;s:6:"@4|5|9";i:2529;s:6:"@5|6|3";i:2530;s:6:"@5|4|2";i:2531;s:6:"@4|4|3";i:2532;s:6:"@5|4|3";i:2533;s:6:"@4|6|0";i:2534;s:6:"@4|5|0";i:2535;s:6:"@4|4|4";i:2536;s:6:"@5|5|0";i:2537;s:6:"@5|3|1";i:2538;s:6:"@4|6|3";i:2539;s:6:"@5|6|2";i:2540;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; Trident/8\.0.*\).*$@'=>'a:3:{s:2:"@3";i:2480;s:2:"@4";i:2481;s:2:"@1";i:2486;}', '@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@4|5";i:2541;s:4:"@3|9";i:2542;s:4:"@3|4";i:2543;s:4:"@4|0";i:2544;s:4:"@3|5";i:2545;s:4:"@3|8";i:2546;s:4:"@3|7";i:2547;s:4:"@3|6";i:2548;s:4:"@4|1";i:2549;s:4:"@3|3";i:2550;s:4:"@3|1";i:2551;s:4:"@3|0";i:2552;s:4:"@4|6";i:2553;s:4:"@4|4";i:2554;s:4:"@4|3";i:2555;s:4:"@4|2";i:2556;s:4:"@3|2";i:2557;s:4:"@4|7";i:2558;s:4:"@4|8";i:2559;s:4:"@5|7";i:2560;s:4:"@5|9";i:2561;s:4:"@5|8";i:2562;s:4:"@5|1";i:2563;s:4:"@5|6";i:2564;s:4:"@6|1";i:2565;s:4:"@6|3";i:2566;s:4:"@5|0";i:2567;s:4:"@5|4";i:2568;s:4:"@5|2";i:2569;s:4:"@6|0";i:2570;s:4:"@5|3";i:2571;s:4:"@6|2";i:2572;s:4:"@5|5";i:2573;s:4:"@4|9";i:2574;}', '@^Mozilla/5\.0 \(iPhone.*CPU.*OS.* like Mac OS X.*\).*$@'=>2575, '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; Trident/7\.0.*$@'=>'a:2:{s:2:"@3";i:2576;s:2:"@1";i:2577;}', '@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:159:{s:6:"@3|4|9";i:2578;s:6:"@1|3|3";i:2579;s:6:"@3|6|3";i:2580;s:6:"@4|5|9";i:2581;s:6:"@0|5|0";i:2582;s:6:"@4|3|9";i:2583;s:6:"@4|4|9";i:2584;s:6:"@1|6|3";i:2585;s:6:"@2|6|3";i:2586;s:6:"@1|5|0";i:2587;s:6:"@1|3|0";i:2588;s:6:"@4|5|3";i:2589;s:6:"@3|3|3";i:2590;s:6:"@0|4|7";i:2591;s:6:"@2|3|3";i:2592;s:6:"@0|3|0";i:2593;s:6:"@2|5|0";i:2594;s:6:"@3|5|0";i:2595;s:6:"@4|5|0";i:2596;s:6:"@3|6|0";i:2597;s:6:"@2|3|2";i:2598;s:6:"@3|5|9";i:2599;s:6:"@2|5|9";i:2600;s:6:"@1|6|0";i:2601;s:6:"@0|3|9";i:2602;s:6:"@1|3|9";i:2603;s:6:"@1|5|9";i:2604;s:6:"@1|6|2";i:2605;s:6:"@3|5|2";i:2606;s:6:"@1|3|4";i:2607;s:6:"@2|3|4";i:2608;s:6:"@2|6|0";i:2609;s:6:"@2|3|9";i:2610;s:6:"@1|4|6";i:2611;s:6:"@3|3|4";i:2612;s:6:"@0|4|6";i:2613;s:6:"@2|4|6";i:2614;s:6:"@3|4|6";i:2615;s:6:"@3|3|9";i:2616;s:6:"@4|4|6";i:2617;s:6:"@4|4|2";i:2618;s:6:"@0|3|4";i:2619;s:6:"@1|4|5";i:2620;s:6:"@3|5|1";i:2621;s:6:"@4|5|1";i:2622;s:6:"@2|4|1";i:2623;s:6:"@0|3|1";i:2624;s:6:"@1|4|1";i:2625;s:6:"@2|5|1";i:2626;s:6:"@0|4|4";i:2627;s:6:"@0|4|1";i:2628;s:6:"@0|5|1";i:2629;s:6:"@1|5|1";i:2630;s:6:"@3|4|1";i:2631;s:6:"@1|3|1";i:2632;s:6:"@2|4|3";i:2633;s:6:"@1|4|3";i:2634;s:6:"@0|4|3";i:2635;s:6:"@4|4|1";i:2636;s:6:"@3|4|3";i:2637;s:6:"@4|4|3";i:2638;s:6:"@2|3|1";i:2639;s:6:"@3|3|1";i:2640;s:6:"@3|5|4";i:2641;s:6:"@4|3|1";i:2642;s:6:"@1|4|4";i:2643;s:6:"@2|4|4";i:2644;s:6:"@3|3|0";i:2645;s:6:"@4|6|0";i:2646;s:6:"@4|3|0";i:2647;s:6:"@4|6|3";i:2648;s:6:"@2|5|4";i:2649;s:6:"@0|4|5";i:2650;s:6:"@4|4|5";i:2651;s:6:"@3|4|5";i:2652;s:6:"@2|4|5";i:2653;s:6:"@1|4|7";i:2654;s:6:"@3|5|3";i:2655;s:6:"@2|5|3";i:2656;s:6:"@2|6|1";i:2657;s:6:"@1|6|1";i:2658;s:6:"@4|4|4";i:2659;s:6:"@3|4|4";i:2660;s:6:"@3|6|1";i:2661;s:6:"@4|6|1";i:2662;s:6:"@1|5|3";i:2663;s:6:"@2|5|2";i:2664;s:6:"@1|5|2";i:2665;s:6:"@0|5|2";i:2666;s:6:"@2|3|0";i:2667;s:6:"@0|3|3";i:2668;s:6:"@0|3|8";i:2669;s:6:"@1|3|8";i:2670;s:6:"@2|3|8";i:2671;s:6:"@3|3|8";i:2672;s:6:"@2|4|7";i:2673;s:6:"@0|3|5";i:2674;s:6:"@4|3|5";i:2675;s:6:"@3|3|5";i:2676;s:6:"@2|3|5";i:2677;s:6:"@1|3|5";i:2678;s:6:"@4|3|8";i:2679;s:6:"@0|4|0";i:2680;s:6:"@1|5|8";i:2681;s:6:"@4|5|4";i:2682;s:6:"@2|5|8";i:2683;s:6:"@4|4|8";i:2684;s:6:"@4|4|0";i:2685;s:6:"@4|5|2";i:2686;s:6:"@1|4|0";i:2687;s:6:"@2|4|0";i:2688;s:6:"@3|4|0";i:2689;s:6:"@1|5|6";i:2690;s:6:"@3|3|2";i:2691;s:6:"@0|3|6";i:2692;s:6:"@1|3|2";i:2693;s:6:"@1|5|7";i:2694;s:6:"@0|3|2";i:2695;s:6:"@1|3|6";i:2696;s:6:"@2|3|6";i:2697;s:6:"@4|3|6";i:2698;s:6:"@1|5|4";i:2699;s:6:"@3|3|6";i:2700;s:6:"@4|5|6";i:2701;s:6:"@3|5|6";i:2702;s:6:"@3|3|7";i:2703;s:6:"@4|3|7";i:2704;s:6:"@2|5|6";i:2705;s:6:"@4|5|7";i:2706;s:6:"@2|3|7";i:2707;s:6:"@1|3|7";i:2708;s:6:"@2|5|7";i:2709;s:6:"@3|5|7";i:2710;s:6:"@0|3|7";i:2711;s:6:"@3|4|8";i:2712;s:6:"@4|3|2";i:2713;s:6:"@3|5|5";i:2714;s:6:"@2|5|5";i:2715;s:6:"@4|5|5";i:2716;s:6:"@1|4|9";i:2717;s:6:"@3|5|8";i:2718;s:6:"@4|5|8";i:2719;s:6:"@4|3|4";i:2720;s:6:"@4|6|2";i:2721;s:6:"@2|4|2";i:2722;s:6:"@1|5|5";i:2723;s:6:"@4|3|3";i:2724;s:6:"@0|4|9";i:2725;s:6:"@0|4|2";i:2726;s:6:"@2|6|2";i:2727;s:6:"@0|4|8";i:2728;s:6:"@2|4|9";i:2729;s:6:"@1|4|8";i:2730;s:6:"@3|6|2";i:2731;s:6:"@3|4|2";i:2732;s:6:"@1|4|2";i:2733;s:6:"@2|4|8";i:2734;s:6:"@3|4|7";i:2735;s:6:"@4|4|7";i:2736;}', '@^Mozilla/(\d)\.0 \(.*Linux.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@5|5|0";i:2737;s:6:"@5|6|0";i:2738;s:6:"@4|5|8";i:2739;s:6:"@4|3|2";i:2740;s:6:"@5|3|8";i:2741;s:6:"@4|3|5";i:2742;s:6:"@4|6|3";i:2743;s:6:"@5|4|0";i:2744;s:6:"@4|5|0";i:2745;s:6:"@4|5|6";i:2746;s:6:"@5|4|3";i:2747;s:6:"@5|5|6";i:2749;s:6:"@5|5|3";i:2750;s:6:"@4|3|6";i:2751;s:6:"@5|5|8";i:2752;s:6:"@5|3|5";i:2753;s:6:"@5|4|6";i:2754;s:6:"@4|5|1";i:2755;s:6:"@5|3|0";i:2756;s:6:"@4|5|4";i:2757;s:6:"@5|3|6";i:2758;s:6:"@4|4|3";i:2759;s:6:"@4|4|6";i:2760;s:6:"@5|5|4";i:2761;s:6:"@4|4|1";i:2762;s:6:"@4|4|2";i:2763;s:6:"@4|5|3";i:2764;s:6:"@4|3|0";i:2765;s:6:"@4|3|4";i:2766;s:6:"@4|6|0";i:2767;s:6:"@5|5|9";i:2768;s:6:"@5|3|3";i:2769;s:6:"@4|4|8";i:2770;s:6:"@5|3|7";i:2771;s:6:"@5|4|4";i:2772;s:6:"@4|5|7";i:2773;s:6:"@4|4|7";i:2774;s:6:"@5|4|7";i:2775;s:6:"@5|4|2";i:2776;s:6:"@4|4|9";i:2777;s:6:"@5|4|1";i:2778;s:6:"@4|4|5";i:2779;s:6:"@5|5|2";i:2780;s:6:"@5|4|5";i:2781;s:6:"@5|5|7";i:2782;s:6:"@4|4|0";i:2783;s:6:"@4|5|2";i:2784;s:6:"@5|3|4";i:2785;s:6:"@5|3|9";i:2786;s:6:"@4|3|9";i:2787;s:6:"@5|6|1";i:2788;s:6:"@5|3|1";i:2789;s:6:"@4|5|9";i:2790;s:6:"@5|3|2";i:2791;s:6:"@4|3|3";i:2792;s:6:"@5|6|3";i:2793;s:6:"@5|4|9";i:2794;s:6:"@4|6|1";i:2795;s:6:"@5|5|5";i:2796;s:6:"@4|3|1";i:2797;s:6:"@5|4|8";i:2798;s:6:"@5|6|2";i:2799;s:6:"@4|6|2";i:2800;s:6:"@4|4|4";i:2801;s:6:"@4|5|5";i:2802;s:6:"@4|3|8";i:2803;s:6:"@4|3|7";i:2804;s:6:"@5|5|1";i:2805;}', '@^Mozilla/5\.0 \(.*Windows.*Trident/7\.0.*rv\:11\.0.*$@'=>2748, '@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*$@'=>2806, '@^Mozilla/5\.0 \(iPod.*CPU.*OS.* like Mac OS X.*\).*$@'=>2807, '@^Mozilla/(\d)\.0 \(.*Mac OS X.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@4";i:2808;s:2:"@5";i:2809;}', '@^Mozilla/5\.0 \(.*Windows.*; Trident/8\.0.*\).*$@'=>2810, '@^Mozilla/(\d)\.0 \(.*Linux.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@4";i:2811;s:2:"@5";i:2812;}', '@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*$@'=>2813, '@^Firefox/(\d)(\d)\.0.*anonymized by Abelssoft.*$@'=>'a:34:{s:4:"@6|2";i:2814;s:4:"@3|4";i:2815;s:4:"@4|7";i:2816;s:4:"@4|9";i:2817;s:4:"@4|2";i:2818;s:4:"@3|2";i:2819;s:4:"@4|0";i:2820;s:4:"@3|3";i:2821;s:4:"@5|7";i:2822;s:4:"@3|7";i:2823;s:4:"@5|6";i:2824;s:4:"@3|5";i:2825;s:4:"@5|2";i:2826;s:4:"@4|8";i:2827;s:4:"@3|8";i:2828;s:4:"@5|5";i:2829;s:4:"@3|1";i:2830;s:4:"@5|3";i:2831;s:4:"@6|0";i:2832;s:4:"@5|9";i:2833;s:4:"@4|6";i:2834;s:4:"@4|4";i:2835;s:4:"@4|3";i:2836;s:4:"@5|1";i:2837;s:4:"@3|6";i:2838;s:4:"@6|3";i:2839;s:4:"@6|1";i:2840;s:4:"@4|5";i:2841;s:4:"@3|9";i:2842;s:4:"@5|8";i:2843;s:4:"@5|0";i:2844;s:4:"@3|0";i:2845;s:4:"@5|4";i:2846;s:4:"@4|1";i:2847;}', '@^Mozilla/5\.0 \(.*Mac OS X.*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@5|4";i:2848;s:4:"@5|9";i:2849;s:4:"@3|3";i:2850;s:4:"@5|3";i:2851;s:4:"@4|0";i:2852;s:4:"@4|1";i:2853;s:4:"@4|5";i:2854;s:4:"@3|9";i:2855;s:4:"@6|3";i:2856;s:4:"@6|2";i:2857;s:4:"@4|7";i:2858;s:4:"@4|6";i:2859;s:4:"@3|2";i:2860;s:4:"@4|4";i:2861;s:4:"@3|0";i:2862;s:4:"@5|0";i:2863;s:4:"@4|9";i:2864;s:4:"@5|5";i:2865;s:4:"@3|7";i:2866;s:4:"@5|7";i:2867;s:4:"@3|6";i:2868;s:4:"@5|6";i:2869;s:4:"@3|5";i:2870;s:4:"@4|8";i:2871;s:4:"@5|8";i:2872;s:4:"@3|8";i:2873;s:4:"@6|1";i:2874;s:4:"@3|4";i:2875;s:4:"@3|1";i:2876;s:4:"@4|3";i:2877;s:4:"@6|0";i:2878;s:4:"@4|2";i:2879;s:4:"@5|2";i:2880;s:4:"@5|1";i:2881;}', '@^Mozilla/5\.0 \(.*Windows.*; Trident/7\.0.*$@'=>2882, '@^Firefox/.*anonymized by Abelssoft.*$@'=>2883, '@^Opera%20Coast/(\d)\.(\d)(\d).* CFNetwork/.*$@'=>'a:14:{s:6:"@4|5|1";i:2884;s:6:"@3|0|2";i:2885;s:6:"@3|0|1";i:2886;s:6:"@4|3|1";i:2887;s:6:"@3|2|1";i:2888;s:6:"@5|0|3";i:2889;s:6:"@5|0|2";i:2890;s:6:"@4|0|2";i:2891;s:6:"@4|2|1";i:2892;s:6:"@4|0|1";i:2893;s:6:"@4|3|0";i:2894;s:6:"@5|0|1";i:2895;s:6:"@4|0|3";i:2896;s:6:"@5|0|4";i:2897;}', '@^Opera%20Coast/(\d)\.(\d).* CFNetwork/.*$@'=>'a:6:{s:4:"@3|1";i:2898;s:4:"@4|4";i:2899;s:4:"@3|0";i:2900;s:4:"@4|1";i:2901;s:4:"@4|0";i:2902;s:4:"@4|5";i:2903;}', '@^Opera%20Coast/.* CFNetwork/.*$@'=>2905, '@^MobileSafari/.* CFNetwork/.*$@'=>2907, '@^Safari/10600\..* CFNetwork/.*$@'=>2908, '@^Safari/1(\d)6..\..* CFNetwork/.*$@'=>'a:4:{s:2:"@1";i:2909;s:2:"@2";i:2910;s:2:"@3";i:2911;s:2:"@0";i:2912;}', '@^Mozilla/(\d)\.0 \(.*MSIE 6\.0.*\).*$@'=>'a:2:{s:2:"@5";i:2914;s:2:"@4";i:2915;}', '@^Safari/(\d)5..\..* CFNetwork/.*$@'=>'a:2:{s:2:"@8";i:2916;s:2:"@9";i:2917;}', '@^Mozilla/(\d)\.0 \(.*MSIE 7\.0b.*$@'=>'a:2:{s:2:"@4";i:2979;s:2:"@5";i:2980;}', '@^Mozilla/(\d)\.0 \(.*MSIE 7\.0.*$@'=>'a:2:{s:2:"@5";i:3024;s:2:"@4";i:3025;}', '@^Safari/.* CFNetwork/.*$@'=>3068, '@^.*iPhone.*$@'=>3286, '@^.*iPod.*$@'=>3291, '@^.*iPad.*$@'=>3292, '@^.*$@'=>3294 ); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wfMD5BloomFilter.php����������������������������������������������������������������������������0000644�����������������00000012317�15233113245�0011107 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php /* Copyright (c) 2012, Da Xue All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY DA XUE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DA XUE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* https://github.com/dsx724/php-bloom-filter */ // Modified for PHP 5.2 compatibility and to support serialization. class wfMD5BloomFilter { private static function merge($bf1,$bf2,$bfout,$union = false){ if ($bf1->m != $bf2->m) throw new Exception('Unable to merge due to vector difference.'); if ($bf1->k != $bf2->k) throw new Exception('Unable to merge due to hash count difference.'); $length = strlen($bfout->bit_array); if ($union){ $bfout->bit_array = $bf1->bit_array | $bf2->bit_array; $bfout->n = $bf1->n + $bf2->n; } else { $bfout->bit_array = $bf1->bit_array & $bf2->bit_array; $bfout->n = abs($bf1->n - $bf2->n); } } public static function createFromProbability($n, $p){ if ($p <= 0 || $p >= 1) throw new Exception('Invalid false positive rate requested.'); if ($n <= 0) throw new Exception('Invalid capacity requested.'); $k = floor(log(1/$p,2)); $m = pow(2,ceil(log(-$n*log($p)/pow(log(2),2),2))); //approximate estimator method return new self($m,$k); } public static function getUnion($bf1,$bf2){ $bf = new self($bf1->m,$bf1->k,$bf1->hash); self::merge($bf1,$bf2,$bf,true); return $bf; } public static function getIntersection($bf1,$bf2){ $bf = new self($bf1->m,$bf1->k,$bf1->hash); self::merge($bf1,$bf2,$bf,false); return $bf; } private $n = 0; // # of entries private $m; // # of bits in array private $k; // # of hash functions private $k2; private $mask; private $bit_array; // data structure public function __construct($m, $k){ if ($m < 8) throw new Exception('The bit array length must be at least 8 bits.'); if (($m & ($m - 1)) !== 0) throw new Exception('The bit array length must be power of 2.'); if ($m > 65536) throw new Exception('The maximum data structure size is 8KB.'); if ($k > 8) throw new Exception('The maximum bits to set is 8.'); $this->m = $m; $this->k = $k; $this->k2 = $k * 2; $address_bits = (int)log($m,2); $this->mask = (1 << $address_bits) - 8; $this->bit_array = (binary)(str_repeat("\0",$this->getArraySize(true))); } public function __sleep() { return array('n', 'm', 'k', 'k2', 'mask', 'bit_array'); } public function calculateProbability($n = 0){ return pow(1-pow(1-1/$this->m,$this->k*($n ? $n : $this->n)),$this->k); } public function calculateCapacity($p){ return floor($this->m*log(2)/log($p,1-pow(1-1/$this->m,$this->m*log(2)))); } public function getElementCount(){ return $this->n; } public function getArraySize($bytes = false){ return $this->m >> ($bytes ? 3 : 0); } public function getHashCount(){ return $this->k; } public function getInfo($p = null){ $units = array('','K','M','G','T','P','E','Z','Y'); $M = $this->getArraySize(true); $magnitude = intval(floor(log($M,1024))); $unit = $units[$magnitude]; $M /= pow(1024,$magnitude); return 'Allocated '.$this->getArraySize().' bits ('.$M.' '.$unit.'Bytes)'.PHP_EOL. 'Using '.$this->getHashCount(). ' (16b) hashes'.PHP_EOL. 'Contains '.$this->getElementCount().' elements'.PHP_EOL. (isset($p) ? 'Capacity of '.number_format($this->calculateCapacity($p)).' (p='.$p.')'.PHP_EOL : ''); } public function add($key){ $hash = md5($key,true); for ($index = 0; $index < $this->k2; $index++){ $hash_sub = (ord($hash[$index++]) << 8) | ord($hash[$index]); $word = ($hash_sub & $this->mask) >> 3; $this->bit_array[$word] = $this->bit_array[$word] | chr(1 << ($hash_sub & 7)); } $this->n++; } public function contains($key){ $hash = md5($key,true); for ($index = 0; $index < $this->k2; $index++){ $hash_sub = (ord($hash[$index++]) << 8) | ord($hash[$index]); if ((ord($this->bit_array[($hash_sub & $this->mask) >> 3]) & (1 << ($hash_sub & 7))) === 0) return false; } return true; } public function unionWith($bf){ self::merge($this,$bf,$this,true); } public function intersectWith($bf){ self::merge($this,$bf,$this,false); } }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/live_activity.php�������������������������������������������������������������������������������0000644�����������������00000001067�15233113245�0010701 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <div class="wf-live-activity" data-mode="auto"> <div class="wf-live-activity-inner"> <div class="wf-live-activity-content"> <div class="wf-live-activity-title"><?php esc_html_e('Wordfence Live Activity:', 'wordfence') ?></div> <div class="wf-live-activity-message"></div> </div> <?php if (wfConfig::get('liveActivityPauseEnabled')): ?> <div class="wf-live-activity-state"><p><?php esc_html_e('Live Updates Paused — Click inside window to resume') ?></p></div> <?php endif; ?> </div> </div>�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/.htaccess���������������������������������������������������������������������������������������0000644�����������������00000000542�15233113245�0007110 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} \.php$ RewriteRule .* - [F,L,NC] </IfModule> <IfModule !mod_rewrite.c> <FilesMatch "\.php$"> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </FilesMatch> </IfModule>��������������������������������������������������������������������������������������������������������������������������������������������������������������lib/wf503.php���������������������������������������������������������������������������������������0000644�����������������00000021531�15233113245�0006670 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?> <!DOCTYPE html> <html> <head> <title><?php esc_html_e('Your access to this site has been limited', 'wordfence'); ?>



:
:
\s*/i', '', $contents); $contents = preg_replace('/^\s*/i', '', $contents); $contents = preg_replace('/

Documentation', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>

array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>.
.

lib/menu_dashboard.php000064400000065727152331132450011016 0ustar00 render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
__('Wordfence Dashboard', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD), 'helpLabelHTML' => wp_kses(__('Learn more about the Dashboard', 'wordfence'), array('span'=>array('class'=>array()))), 'showIcon' => true, ))->render(); ?>
  • $firewall, 'scanner' => $scanner, 'dashboard' => $d, ))->render(); ?>
    • 'waf-coverage', 'percentage' => $firewall->overallStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Firewall', 'wordfence'), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('WAF Currently in Learning Mode', 'wordfence') : __('Protection from known and emerging threats', 'wordfence')), 'link' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD), 'linkLabel' => __('Manage Firewall', 'wordfence'), 'statusTitle' => __('Firewall Status', 'wordfence'), 'statusList' => $firewall->statusList(), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'), ))->render(); ?>
    • 'wf-scanner-type', 'percentage' => $scanner->scanTypeStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Scan', 'wordfence'), 'subtitle' => __('Detection of security issues', 'wordfence'), 'link' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD), 'linkLabel' => __('Manage Scan', 'wordfence'), 'statusTitle' => __('Scan Status', 'wordfence'), 'statusList' => $scanner->scanTypeStatusList(), 'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'), ))->render(); ?>
    • 'wf-premium-alert', 'title' => __('Premium License Conflict', 'wordfence'), 'subtitle' => __('License already in use', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1manageConflict/manage-wordfence-api-keys/', 'linkLabel' => __('Reset License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => __('Premium Protection Disabled', 'wordfence'), 'subtitle' => __('License is expired', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1renewExpired/manage-wordfence-api-keys/', 'linkLabel' => __('Renew License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => __('Premium Protection Disabled', 'wordfence'), 'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()))), 'link' => null, 'linkLabel' => null ))->render(); ?>

        

      'wf-premium-alert', 'title' => __('Premium License Expiring', 'wordfence'), 'subtitle' => __('Auto-renew is disabled', 'wordfence'), 'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Renew License', 'wordfence'), 'linkNewWindow' => true, ))->render(); ?> 'wf-premium-alert', 'title' => $title, 'subtitle' => $subtitle, 'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Update Payment Method', 'wordfence'), 'linkNewWindow' => true, ))->render(); } else { $days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400); if ($days == 0) { $subtitle = __('License renews today', 'wordfence'); } else if ($days == 1) { $subtitle = __('License renews in 1 day', 'wordfence'); } else { $subtitle = sprintf(__('License renews in %d days', 'wordfence'), $days); } echo wfView::create('dashboard/status-renewing', array( 'id' => 'wf-premium-alert', 'title' => __('Premium License Expiring', 'wordfence'), 'subtitle' => $subtitle, 'link' => 'https://www.wordfence.com/gnl1reviewExpiring/manage-wordfence-api-keys/', 'linkLabel' => __('Review Payment Method', 'wordfence'), 'linkNewWindow' => true, ))->render(); } ?>
    • 'wf-dashboard-option-tools', 'img' => 'tools.svg', 'title' => __('Tools', 'wordfence'), 'subtitle' => __('Live Traffic, Whois Lookup, Import/Export, and Diagnostics', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceTools'), ))->render(); ?>
    • 'wf-dashboard-option-support', 'img' => 'support.svg', 'title' => __('Help', 'wordfence'), 'subtitle' => __('Find the documentation and help you need', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceSupport'), ))->render(); ?>
    • 'wf-dashboard-option-options', 'img' => 'options.svg', 'title' => __('Global Options', 'wordfence'), 'subtitle' => __('Manage global options for Wordfence such as alerts, premium status, and more', 'wordfence'), 'link' => network_admin_url('admin.php?page=Wordfence&subpage=global_options'), ))->render(); ?>
lib/wfCredentialsController.php000064400000012170152331132450012661 0ustar00exists()) { return true; } } } } return false; } public static function hasNew2FARecords() { if (version_compare(phpversion(), '5.3', '>=') && class_exists('\WordfenceLS\Controller_DB')) { global $wpdb; $table = WFLSPHP52Compatability::secrets_table(); return !!intval($wpdb->get_var("SELECT COUNT(*) FROM `{$table}`")); } return false; } /** * Queries the API and returns whether or not the password exists in the breach database. * * @param string $login * @param string $password * @return bool */ public static function isLeakedPassword($login, $password) { $sha1 = strtoupper(hash('sha1', $password)); $prefix = substr($sha1, 0, 5); $ssl_verify = (bool) wfConfig::get('ssl_verify'); $args = array( 'timeout' => 5, 'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'), 'sslverify' => $ssl_verify, 'headers' => array('Referer' => false), ); if (!$ssl_verify) { // Some versions of cURL will complain that SSL verification is disabled but the CA bundle was supplied. $args['sslcertificates'] = false; } $response = wp_remote_get(sprintf(WORDFENCE_BREACH_URL_BASE_SEC . "%s.txt", $prefix), $args); if (!is_wp_error($response)) { $data = wp_remote_retrieve_body($response); $lines = explode("\n", $data); foreach ($lines as $l) { $components = explode(":", $l); $teshSHA1 = $prefix . strtoupper($components[0]); if (hash_equals($sha1, $teshSHA1)) { return true; } } } return false; } /** * Returns the transient key for the given user. * * @param WP_User $user * @return string */ protected static function _cachedCredentialStatusKey($user) { $key = 'wfcredentialstatus_' . $user->ID; return $key; } /** * Returns the cached credential status for the given user: self::UNCACHED, self::NOT_LEAKED, or self::LEAKED. * * @param WP_User $user * @return string */ public static function cachedCredentialStatus($user) { $key = self::_cachedCredentialStatusKey($user); $value = get_transient($key); if ($value === false) { return self::UNCACHED; } $status = substr($value, 0, 1); if (strlen($value) > 1) { if (!hash_equals(substr($value, 1), hash('sha256', $user->user_pass))) { //Different hash but our clear function wasn't called so treat it as uncached return self::UNCACHED; } } if ($status) { return self::LEAKED; } return self::NOT_LEAKED; } /** * Stores a cached leak value for the given user. * * @param WP_User $user * @param bool $isLeaked */ public static function setCachedCredentialStatus($user, $isLeaked) { $key = self::_cachedCredentialStatusKey($user); set_transient($key, ($isLeaked ? '1' : '0') . hash('sha256', $user->user_pass), 3600); } /** * Clears the cache for the given user. * * @param WP_User $user */ public static function clearCachedCredentialStatus($user) { $key = self::_cachedCredentialStatusKey($user); delete_transient($key); } /** * Returns whether or not we've seen a successful login from $ip for the given user. * * @param WP_User $user * @param string $ip * @return bool */ public static function hasPreviousLoginFromIP($user, $ip) { global $wpdb; $table_wfLogins = wfDB::networkTable('wfLogins'); $id = property_exists($user, 'ID') ? $user->ID : 0; if ($id == 0) { return false; } $result = $wpdb->get_row($wpdb->prepare("SELECT id FROM {$table_wfLogins} WHERE action = 'loginOK' AND userID = %d AND IP = %s LIMIT 0,1", $id, wfUtils::inet_pton($ip)), ARRAY_A); if (is_array($result)) { return true; } $lastAdminLogin = wfConfig::get_ser('lastAdminLogin'); if (is_array($lastAdminLogin) && isset($lastAdminLogin['userID']) && isset($lastAdminLogin['IP'])) { if ($lastAdminLogin['userID'] == $id && wfUtils::inet_pton($lastAdminLogin['IP']) == wfUtils::inet_pton($ip)) { return true; } return false; } //Final check -- if the IP recorded at plugin activation matches, let it through. This is __only__ checked when we don't have any other record of an admin login. $activatingIP = wfConfig::get('activatingIP'); if (wfUtils::isValidIP($activatingIP)) { if (wfUtils::inet_pton($activatingIP) == wfUtils::inet_pton($ip)) { return true; } } return false; } }lib/wfPersistenceController.php000064400000001436152331132450012713 0ustar00_disclosureStates = wfConfig::get_ser('disclosureStates', array()); } /** * Returns whether the options block is in an active state. * * @param $key * @return bool */ public function isActive($key) { if (!isset($this->_disclosureStates[$key])) { return false; } return !!$this->_disclosureStates[$key]; } /** * Returns whether the options block has been set. * * @param $key * @return bool */ public function isConfigured($key) { return isset($this->_disclosureStates[$key]); } }lib/dashboard/widget_content_countries.php000064400000001547152331132450015070 0ustar00 binary ip, 'countryCode' => string, 'blockCount' => int, 'unixday' => int, 'totalIPs' => int, 'totalBlockCount' => int, 'countryName' => string) ?>
lib/dashboard/widget_content_ips.php000064400000001652152331132450013645 0ustar00 binary ip, 'countryCode' => string, 'blockCount' => int, 'unixday' => int, 'countryName' => string) ?>
lib/dashboard/widget_content_logins.php000064400000001563152331132450014346 0ustar00 timestamp, 'name' => username, 'ip' => IP address) ?>
lib/dashboard/widget_ips.php000064400000014571152331132450012117 0ustar00
learningModeStatus() !== false): ?>
    ips24h) == 0): ?>

    ips24h, 0, min($limit, count($d->ips24h)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?> ips24h) > $limit && $initial): ?>
    ips7d) == 0): ?>

    ips7d, 0, min($limit, count($d->ips7d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?> ips7d) > $limit && $initial): ?>
    ips30d) == 0): ?>

    ips30d, 0, min($limit, count($d->ips30d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?> ips30d) > $limit && $initial): ?>
lib/dashboard/widget_localattacks.php000064400000010742152331132450013765 0ustar00
learningModeStatus() !== false): ?>
  • localBlocks as $row) { if ($row['24h'] > 0 || $row['7d'] > 0 || $row['30d'] > 0) { $hasSome = true; break; } } if (!$hasSome): ?>

    0, '7d' => 0, '30d' => 0); foreach ($d->localBlocks as $row): ?> __('Today', 'wordfence'), '7d' => __('Week', 'wordfence'), '30d' => __('Month', 'wordfence')); foreach ($keys as $k => $title): ?> localBlocks as $row): ?> > localBlocks as $row): ?> >
    Block Type', 'wordfence'), array('span'=>array('class'=>array()))); ?> >

lib/dashboard/widget_notifications.php000064400000016006152331132450014170 0ustar00
notifications)); ?>
    notifications as $n): ?>
  • html; ?>
    links as $l): ?>
  • notifications) == 0): ?>

wordfenceCentralConnected) { echo esc_html(sprintf( /* translators: 1. Email address. 2. Localized date. */ __('Connected by %1$s on %2$s', 'wordfence'), $d->wordfenceCentralConnectEmail, date_i18n(get_option('date_format'), $d->wordfenceCentralConnectTime))); } elseif ($d->wordfenceCentralDisconnected) { echo esc_html(sprintf( /* translators: 1. Email address. 2. Localized date. */ __('Disconnected by %1$s on %2$s', 'wordfence'), $d->wordfenceCentralDisconnectEmail, date_i18n(get_option('date_format'), $d->wordfenceCentralDisconnectTime))); } elseif (wfCentral::isPartialConnection()) { _e('It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.', 'wordfence'); } else { _e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence'); } ?>

lib/dashboard/widget_logins.php000064400000011207152331132450012610 0ustar00
    loginsSuccess) == 0): ?>

    loginsSuccess, 0, min(10, count($d->loginsSuccess)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?> loginsSuccess) > 10): ?>
    loginsFail) == 0): ?>

    loginsFail, 0, min(10, count($d->loginsFail)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?> loginsFail) > 10): ?>
lib/dashboard/widget_countries.php000064400000007145152331132450013336 0ustar00
learningModeStatus() !== false): ?>
  • countriesNetwork) && count($d->countriesNetwork) > 0): ?>
    countriesLocal) || count($d->countriesLocal) == 0): ?>

    countriesLocal, 0, min(10, count($d->countriesLocal)), true); include(dirname(__FILE__) . '/widget_content_countries.php'); ?>
    countriesNetwork) || count($d->countriesNetwork) == 0): ?>

    countriesNetwork, 0, min(10, count($d->countriesNetwork)), true); include(dirname(__FILE__) . '/widget_content_countries.php'); ?>
lib/dashboard/widget_networkattacks.php000064400000017131152331132450014363 0ustar00
  • networkBlock24h === null): ?>

lastGenerated))); ?>

lib/menu_scanner_options.php000064400000021045152331132450012254 0ustar00scanOptions(); $backPage = new wfPage(wfPage::PAGE_SCAN); if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) { $backPage = new wfPage($_GET['source']); } ?>
$backPage->url(), 'backLabelHTML' => wp_kses(sprintf(__('Back to %s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))), 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_SCANNER, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Scan settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'), ))->render(); ?>
render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
__('Scan Options and Scheduling', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN), 'helpLabelHTML' => wp_kses(__('Learn more about Scanning', 'wordfence'), array('span'=>array('classes'=>array()))), 'showIcon' => true, ))->render(); ?>
  • 'wf-scanner-type', 'percentage' => $scanner->scanTypeStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Scan Type: ', 'wordfence') . wfScanner::displayScanType($scanner->scanType()), 'subtitle' => wfScanner::displayScanTypeDetail($scanner->scanType()), 'link' => $optionsURL, 'linkLabel' => null, 'statusTitle' => __('Scan Status', 'wordfence'), 'statusList' => $scanner->scanTypeStatusList(), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_OVERALL), ))->render(); ?>
  • 'wf-scanner-malware-type', 'percentage' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? 1.0 : 0.7, 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Malware Signatures: ', 'wordfence') . ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')), 'subtitle' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Signatures updated in real-time', 'wordfence') : __('Signature updates delayed by 30 days', 'wordfence')), 'link' => 'https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/', 'linkLabel' => null, 'statusTitle' => __('Malware Signatures Status', 'wordfence'), 'statusList' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? array() : array(array( 'percentage' => 0.30, 'title' => __('Enable Premium Scan Signatures.', 'wordfence'), )), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_MALWARE), ))->render(); ?>
  • 'wf-scanner-reputation', 'percentage' => $scanner->reputationStatus(), 'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */), 'title' => __('Reputation Checks', 'wordfence'), 'subtitle' => __('Check spam & spamvertising blocklists', 'wordfence'), 'link' => $optionsURL . '#wf-scanner-options-general', 'linkLabel' => null, 'statusTitle' => __('Reputation Check Status', 'wordfence'), 'statusList' => $scanner->reputationStatusList(), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_REPUTATION), ))->render(); ?>
$scanner, 'stateKey' => 'wf-scanner-options-schedule', ))->render(); echo wfView::create('scanner/options-group-basic', array( 'scanner' => $scanner, 'stateKey' => 'wf-scanner-options-basic', 'collapseable' => false, ))->render(); echo wfView::create('scanner/options-group-general', array( 'scanner' => $scanner, 'stateKey' => 'wf-scanner-options-general', ))->render(); echo wfView::create('scanner/options-group-performance', array( 'scanner' => $scanner, 'stateKey' => 'wf-scanner-options-performance', ))->render(); echo wfView::create('scanner/options-group-advanced', array( 'scanner' => $scanner, 'stateKey' => 'wf-scanner-options-custom', ))->render(); ?>
lib/email_newIssues.php000064400000020734152331132450011164 0ustar00 scanOptions(); ?>

0) { printf( /* translators: 1. URL to the site's homepage. 2. Number of scan results. */ _n('Wordfence found the following new issues on "%1$s" (%2$d existing issue was also found again).', 'Wordfence found the following new issues on "%1$s" (%2$d existing issues were also found again).', count($previousIssues), 'wordfence'), esc_html(get_bloginfo('name', 'raw')), count($previousIssues) ); } else { echo esc_html(sprintf( /* translators: 1. URL to the site's homepage. */ __('Wordfence found the following new issues on "%1$s".', 'wordfence'), get_bloginfo('name', 'raw') )); } ?>


%2$s or read more about scan options to improve scan speed here: %4$s', 'wordfence'), esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan&subpage=scan_options#wf-scanner-options-performance')), esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan&subpage=scan_options')), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT), esc_html(wfSupportController::supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT))), array('a'=>array('href'=>array()))); ?>
__('Critical Problems:', 'wordfence'), wfIssues::SEVERITY_HIGH => __('High Severity Problems:', 'wordfence'), wfIssues::SEVERITY_MEDIUM => __('Medium Severity Problems:', 'wordfence'), wfIssues::SEVERITY_LOW => __('Low Severity Problems:', 'wordfence'), ); ?> $severityLabel): if ($severityLevel < $level) { continue; } $hasIssuesAtSeverity = false; foreach($issues as $i){ if($i['severity'] == $severityLevel){ ?>

*

' . esc_html__('Plugin contains an unpatched security vulnerability.', 'wordfence') . ''; if (isset($i['tmplData']['vulnerabilityLink'])) { echo ' ' . esc_html__('Vulnerability Information', 'wordfence') . ''; } echo '

'; } } if ($i['type'] == 'coreUnknown') { echo '

' . esc_html__('The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed.', 'wordfence') . '

'; } else if ($i['type'] == 'wafStatus') { echo '

' . esc_html__('Firewall issues may be caused by file permission changes or other technical problems.', 'wordfence') . ' ' . esc_html__('More Details and Instructions', 'wordfence') . '

'; } else if ($i['type'] == 'skippedPaths') { echo '

' . esc_html__('Scanning additional paths is optional and is not always necessary.', 'wordfence') . ' ' . esc_html__('Learn More', 'wordfence') . '

'; } $showWPParagraph = !empty($i['tmplData']['vulnerable']) || isset($i['tmplData']['wpURL']); if ($showWPParagraph) { echo '

'; } if (!empty($i['tmplData']['vulnerable'])) { echo '' . esc_html__('Update includes security-related fixes.', 'wordfence') . ''; if (isset($i['tmplData']['vulnerabilityLink'])) { echo ' ' . esc_html__('Vulnerability Information', 'wordfence') . ''; } } if (isset($i['tmplData']['wpURL'])) { echo $i['tmplData']['wpURL'] . '/#developers'; } if ($showWPParagraph) { echo '

'; } ?> getTextImageURL($i['tmplData']['badURL']), 'https'); ?>

<?php esc_html_e('The malicious URL matched', 'wordfence') ?>

0) { $sentences[] = sprintf(/* translators: Number of scan results */ _n('%d issue was omitted from this email due to length limits.', '%d issues were omitted from this email due to length limits.', $issuesNotShown, 'wordfence'), $issuesNotShown); $sentences[] = esc_html__('View every issue:', 'wordfence') . sprintf(' %s', esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan')), esc_html(wfUtils::wpAdminURL('admin.php?page=WordfenceScan'))); } if (count($sentences)) { printf('

%s

', implode(' ', $sentences)); } ?>


https://www.wordfence.com/zz2/wordfence-signup/

lib/wfCentralAPI.php000064400000033341152331132450010305 0ustar00endpoint = $endpoint; $this->method = $method; $this->token = $token; $this->body = $body; $this->args = $args; } public function execute() { $args = array( 'timeout' => 10, ); $args = wp_parse_args($this->getArgs(), $args); $args['method'] = $this->getMethod(); if (empty($args['headers'])) { $args['headers'] = array(); } $token = $this->getToken(); if ($token) { $args['headers']['Authorization'] = 'Bearer ' . $token; } if ($this->getBody()) { $args['headers']['Content-Type'] = 'application/json'; $args['body'] = json_encode($this->getBody()); } $http = _wp_http_get_object(); $response = $http->request(WORDFENCE_CENTRAL_API_URL_SEC . $this->getEndpoint(), $args); if (!is_wp_error($response)) { $body = wp_remote_retrieve_body($response); $statusCode = wp_remote_retrieve_response_code($response); // Check if site has been disconnected on Central's end, but the plugin is still trying to connect. if ($statusCode === 404 && strpos($body, 'Site has been disconnected') !== false) { // Increment attempt count. $centralDisconnectCount = get_site_transient('wordfenceCentralDisconnectCount'); set_site_transient('wordfenceCentralDisconnectCount', ++$centralDisconnectCount, 86400); // Once threshold is hit, disconnect Central. if ($centralDisconnectCount > 3) { wfRESTConfigController::disconnectConfig(); } } } return new wfCentralAPIResponse($response); } /** * @return string */ public function getEndpoint() { return $this->endpoint; } /** * @param string $endpoint */ public function setEndpoint($endpoint) { $this->endpoint = $endpoint; } /** * @return string */ public function getMethod() { return $this->method; } /** * @param string $method */ public function setMethod($method) { $this->method = $method; } /** * @return null */ public function getToken() { return $this->token; } /** * @param null $token */ public function setToken($token) { $this->token = $token; } /** * @return array */ public function getBody() { return $this->body; } /** * @param array $body */ public function setBody($body) { $this->body = $body; } /** * @return array */ public function getArgs() { return $this->args; } /** * @param array $args */ public function setArgs($args) { $this->args = $args; } } class wfCentralAPIResponse { public static function parseErrorJSON($json) { $data = json_decode($json, true); if (is_array($data) && array_key_exists('message', $data)) { return $data['message']; } return $json; } /** * @var array|null */ private $response; /** * @param array $response */ public function __construct($response = null) { $this->response = $response; } public function getStatusCode() { return wp_remote_retrieve_response_code($this->getResponse()); } public function getBody() { return wp_remote_retrieve_body($this->getResponse()); } public function getJSONBody() { return json_decode($this->getBody(), true); } public function isError() { if (is_wp_error($this->getResponse())) { return true; } $statusCode = $this->getStatusCode(); return !($statusCode >= 200 && $statusCode < 300); } public function returnErrorArray() { return array( 'err' => 1, 'errorMsg' => sprintf( /* translators: 1. HTTP status code. 2. Error message. */ __('HTTP %1$d received from Wordfence Central: %2$s', 'wordfence'), $this->getStatusCode(), $this->parseErrorJSON($this->getBody())), ); } /** * @return array|null */ public function getResponse() { return $this->response; } /** * @param array|null $response */ public function setResponse($response) { $this->response = $response; } } class wfCentralAuthenticatedAPIRequest extends wfCentralAPIRequest { private $retries = 3; /** * @param string $endpoint * @param string $method * @param array $body * @param array $args */ public function __construct($endpoint, $method = 'GET', $body = array(), $args = array()) { parent::__construct($endpoint, $method, null, $body, $args); } /** * @return mixed|null * @throws wfCentralAPIException */ public function getToken() { $token = parent::getToken(); if ($token) { return $token; } $token = get_transient('wordfenceCentralJWT' . wfConfig::get('wordfenceCentralSiteID')); if ($token) { return $token; } for ($i = 0; $i < $this->retries; $i++) { try { $token = $this->fetchToken(); break; } catch (wfCentralAPIException $e) { continue; } } if (empty($token)) { if (isset($e)) { throw $e; } else { throw new wfCentralAPIException(__('Unable to authenticate with Wordfence Central.', 'wordfence')); } } $tokenContents = wfJWT::extractTokenContents($token); if (!empty($tokenContents['body']['exp'])) { set_transient('wordfenceCentralJWT' . wfConfig::get('wordfenceCentralSiteID'), $token, $tokenContents['body']['exp'] - time()); } return $token; } public function fetchToken() { require_once(WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload-fast.php'); $defaultArgs = array( 'timeout' => 6, ); $siteID = wfConfig::get('wordfenceCentralSiteID'); if (!$siteID) { throw new wfCentralAPIException(__('Wordfence Central site ID has not been created yet.', 'wordfence')); } $secretKey = wfConfig::get('wordfenceCentralSecretKey'); if (!$secretKey) { throw new wfCentralAPIException(__('Wordfence Central secret key has not been created yet.', 'wordfence')); } // Pull down nonce. $request = new wfCentralAPIRequest(sprintf('/site/%s/login', $siteID), 'GET', null, array(), $defaultArgs); $nonceResponse = $request->execute(); if ($nonceResponse->isError()) { $errorArray = $nonceResponse->returnErrorArray(); throw new wfCentralAPIException($errorArray['errorMsg']); } $body = $nonceResponse->getJSONBody(); if (!is_array($body) || !isset($body['nonce'])) { throw new wfCentralAPIException(__('Invalid response received from Wordfence Central when fetching nonce.', 'wordfence')); } $nonce = $body['nonce']; // Sign nonce to pull down JWT. $data = $nonce . '|' . $siteID; $signature = ParagonIE_Sodium_Compat::crypto_sign_detached($data, $secretKey); $request = new wfCentralAPIRequest(sprintf('/site/%s/login', $siteID), 'POST', null, array( 'data' => $data, 'signature' => ParagonIE_Sodium_Compat::bin2hex($signature), ), $defaultArgs); $authResponse = $request->execute(); if ($authResponse->isError()) { $errorArray = $authResponse->returnErrorArray(); throw new wfCentralAPIException($errorArray['errorMsg']); } $body = $authResponse->getJSONBody(); if (!is_array($body)) { throw new wfCentralAPIException(__('Invalid response received from Wordfence Central when fetching token.', 'wordfence')); } if (!isset($body['jwt'])) { // Possible authentication error. throw new wfCentralAPIException(__('Unable to authenticate with Wordfence Central.', 'wordfence')); } return $body['jwt']; } } class wfCentralAPIException extends Exception { } class wfCentral { /** * @return bool */ public static function isSupported() { return function_exists('register_rest_route') && version_compare(phpversion(), '5.3', '>='); } /** * @return bool */ public static function isConnected() { return self::isSupported() && ((bool) self::_isConnected()); } /** * @return bool */ public static function isPartialConnection() { return !self::_isConnected() && wfConfig::get('wordfenceCentralSiteID'); } public static function _isConnected($forceUpdate = false) { static $isConnected; if (!isset($isConnected) || $forceUpdate) { $isConnected = wfConfig::get('wordfenceCentralConnected', false); } return $isConnected; } /** * @param array $issue * @return bool|wfCentralAPIResponse */ public static function sendIssue($issue) { return self::sendIssues(array($issue)); } /** * @param $issues * @return bool|wfCentralAPIResponse */ public static function sendIssues($issues) { $data = array(); foreach ($issues as $issue) { $issueData = array( 'type' => 'issue', 'attributes' => $issue, ); if (array_key_exists('id', $issueData)) { $issueData['id'] = $issue['id']; } $data[] = $issueData; } $siteID = wfConfig::get('wordfenceCentralSiteID'); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'POST', array( 'data' => $data, )); try { $response = $request->execute(); return $response; } catch (wfCentralAPIException $e) { error_log($e); } return false; } /** * @param int $issueID * @return bool|wfCentralAPIResponse */ public static function deleteIssue($issueID) { return self::deleteIssues(array($issueID)); } /** * @param $issues * @return bool|wfCentralAPIResponse */ public static function deleteIssues($issues) { $siteID = wfConfig::get('wordfenceCentralSiteID'); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array( 'data' => array( 'type' => 'issue-list', 'attributes' => array( 'ids' => $issues, ) ), )); try { $response = $request->execute(); return $response; } catch (wfCentralAPIException $e) { error_log($e); } return false; } /** * @return bool|wfCentralAPIResponse */ public static function deleteNewIssues() { $siteID = wfConfig::get('wordfenceCentralSiteID'); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array( 'data' => array( 'type' => 'issue-list', 'attributes' => array( 'status' => 'new', ) ), )); try { $response = $request->execute(); return $response; } catch (wfCentralAPIException $e) { error_log($e); } return false; } /** * @param array $types Array of issue types to delete * @param string $status Issue status to delete * @return bool|wfCentralAPIResponse */ public static function deleteIssueTypes($types, $status = 'new') { $siteID = wfConfig::get('wordfenceCentralSiteID'); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array( 'data' => array( 'type' => 'issue-list', 'attributes' => array( 'types' => $types, 'status' => $status, ) ), )); try { $response = $request->execute(); return $response; } catch (wfCentralAPIException $e) { error_log($e); } return false; } public static function requestConfigurationSync() { if (! wfCentral::isConnected() || !self::$syncConfig) { return; } $endpoint = '/site/'.wfConfig::get('wordfenceCentralSiteID').'/config'; $args = array('timeout' => 0.01, 'blocking' => false); $request = new wfCentralAuthenticatedAPIRequest($endpoint, 'POST', array(), $args); try { $request->execute(); } catch (Exception $e) { // We can safely ignore an error here for now. } } protected static $syncConfig = true; public static function preventConfigurationSync() { self::$syncConfig = false; } /** * @param $scan * @param $running * @return bool|wfCentralAPIResponse */ public static function updateScanStatus($scan = null) { if ($scan === null) { $scan = wfConfig::get_ser('scanStageStatuses'); if (!is_array($scan)) { $scan = array(); } } $siteID = wfConfig::get('wordfenceCentralSiteID'); $running = wfScanner::shared()->isRunning(); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/scan', 'PATCH', array( 'data' => array( 'type' => 'scan', 'attributes' => array( 'running' => $running, 'scan' => $scan, 'scan-summary' => wfConfig::get('wf_summaryItems'), ), ), )); try { $response = $request->execute(); return $response; } catch (wfCentralAPIException $e) { error_log($e); } return false; } /** * @param string $event * @param array $data * @param callable|null $alertCallback */ public static function sendSecurityEvent($event, $data = array(), $alertCallback = null) { $alerted = false; if (!self::pluginAlertingDisabled() && is_callable($alertCallback)) { call_user_func($alertCallback); $alerted = true; } $siteID = wfConfig::get('wordfenceCentralSiteID'); $request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/security-events', 'POST', array( 'data' => array( array( 'type' => 'security-event', 'attributes' => array( 'type' => $event, 'data' => $data, 'event_time' => microtime(true), ), ), ), )); try { // Attempt to send the security event to Central. $response = $request->execute(); } catch (wfCentralAPIException $e) { // If we didn't alert previously, notify the user now in the event Central is down. if (!$alerted && is_callable($alertCallback)) { call_user_func($alertCallback); } } } /** * @param $event * @param array $data * @param callable|null $alertCallback */ public static function sendAlertCallback($event, $data = array(), $alertCallback = null) { if (is_callable($alertCallback)) { call_user_func($alertCallback); } } public static function pluginAlertingDisabled() { if (!self::isConnected()) { return false; } return wfConfig::get('wordfenceCentralPluginAlertingDisabled', false); } } lib/menu_firewall_waf_options.php000064400000026133152331132450013270 0ustar00countriesNetwork); $firewall = new wfFirewall(); $config = $waf->getStorageEngine(); $wafURL = wfPage::pageURL(wfPage::PAGE_FIREWALL); $wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'); $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend'); /** @var array $wafData */ $backPage = new wfPage(wfPage::PAGE_FIREWALL); if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) { $backPage = new wfPage($_GET['source']); } ?>
$backPage->url(), 'backLabelHTML' => wp_kses(sprintf(__('Back to %s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))), 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_FIREWALL, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'), ))->render(); ?>
render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>

__('Firewall Options', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF), 'helpLabelHTML' => wp_kses(__('Learn more about the Firewall', 'wordfence'), array('span'=>array('class'=>array()))), 'showIcon' => true, ))->render(); ?>
  • 'waf-coverage', 'percentage' => $firewall->wafStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Web Application Firewall', 'wordfence'), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : __('Stops Complex Attacks', 'wordfence')), 'link' => $optionsURL, 'linkLabel' => null, 'statusTitle' => __('Web Application Firewall Status', 'wordfence'), 'statusList' => $firewall->wafStatusList(), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_OVERALL), ))->render(); ?>
  • 'waf-rules', 'percentage' => $firewall->ruleStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Firewall Rules: ', 'wordfence') . ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Rules updated in real-time', 'wordfence') : __('Rule updates delayed by 30 days', 'wordfence'))), 'link' => 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/', 'linkLabel' => null, 'linkNewWindow' => true, 'statusTitle' => __('Firewall Rules Status', 'wordfence'), 'statusList' => $firewall->wafStatusList('rules'), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_RULES), ))->render(); ?>
  • 'waf-blacklist', 'percentage' => $firewall->blacklistStatus(), 'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')), 'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'), 'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-advanced') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'), 'linkLabel' => null, 'linkNewWindow' => !($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED), 'statusTitle' => __('Blocklist Status', 'wordfence'), 'statusList' => $firewall->wafStatusList('blacklist'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BLACKLIST), ))->render(); ?>
  • 'waf-brute', 'percentage' => $firewall->bruteForceStatus(), 'title' => __('Brute Force Protection', 'wordfence') . ($firewall->bruteForceStatus() == 0 ? __(': Disabled', 'wordfence') : ''), 'subtitle' => __('Stops Password Guessing Attacks', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce'), 'linkLabel' => null, 'statusTitle' => __('Brute Force Protection Status', 'wordfence'), 'statusList' => $firewall->bruteForceStatusList(), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BRUTE_FORCE), ))->render(); ?>
$firewall, 'waf' => $waf, 'stateKey' => 'waf-options-basic', 'collapseable' => false, ))->render(); ?> $firewall, 'waf' => $waf, 'stateKey' => 'waf-options-advanced', ))->render(); ?> $firewall, 'waf' => $waf, 'stateKey' => 'waf-options-bruteforce', ))->render(); ?> $firewall, 'waf' => $waf, 'stateKey' => 'waf-options-ratelimiting', ))->render(); ?> $firewall, 'waf' => $waf, 'stateKey' => 'waf-options-whitelisted', ))->render(); ?>
lib/wfAdminNoticeQueue.php000064400000011602152331132450011556 0ustar00 $n) { $usersMatches = false; if (isset($n['users'])) { $usersMatches = wfUtils::sets_equal($n['users'], $users); } else if ($users === false) { $usersMatches = true; } $categoryMatches = false; if ($category !== false && isset($n['category']) && $n['category'] == $category) { $categoryMatches = true; } if ($usersMatches && $categoryMatches) { unset($notices[$id]); } } $id = wfUtils::uuid(); $notices[$id] = array( 'severity' => $severity, 'messageHTML' => $messageHTML, ); if ($category !== false) { $notices[$id]['category'] = $category; } if ($users !== false) { $notices[$id]['users'] = $users; } self::_setNotices($notices); } /** * Removes an admin notice using one of three possible search methods: * * 1. If $id matches. $category and $users are ignored * 2. If $category matches. $users must be false for this. * 3. If $category matches and the notice's user IDs matches $users. * * @param bool|int $id * @param bool|string $category * @param bool|int[] $users */ public static function removeAdminNotice($id = false, $category = false, $users = false) { if ($id === false && $category === false && $users === false) { return; } else if ($id !== false) { $category = false; $users = false; } $notices = self::_notices(); $found = false; foreach ($notices as $nid => $n) { if ($id == $nid) { //ID match unset($notices[$nid]); $found=true; break; } else if ($id !== false) { continue; } if ($category !== false && isset($n['category']) && $category == $n['category']) { if ($users !== false) { if (isset($n['users']) && wfUtils::sets_equal($users, $n['users'])) { unset($notices[$nid]); $found=true; } } else { unset($notices[$nid]); $found=true; } } } if($found) self::_setNotices($notices); } public static function hasNotice($category = false, $users = false) { $notices = self::_notices(); foreach ($notices as $nid => $n) { $categoryMatches = false; if (($category === false && !isset($n['category'])) || ($category !== false && isset($n['category']) && $category == $n['category'])) { $categoryMatches = true; } $usersMatches = false; if (($users === false && !isset($n['users'])) || ($users !== false && isset($n['users']) && wfUtils::sets_equal($users, $n['users']))) { $usersMatches = true; } if ($categoryMatches && $usersMatches) { return true; } } return false; } public static function enqueueAdminNotices() { $user = wp_get_current_user(); if ($user->ID == 0) { return false; } $networkAdmin = is_multisite() && is_network_admin(); $notices = self::_notices(); $added = false; foreach ($notices as $nid => $n) { if (isset($n['users']) && array_search($user->ID, $n['users']) === false) { continue; } $notice = new wfAdminNotice($nid, $n['severity'], $n['messageHTML']); if ($networkAdmin) { add_action('network_admin_notices', array($notice, 'displayNotice')); } else { add_action('admin_notices', array($notice, 'displayNotice')); } $added = true; } return $added; } } class wfAdminNotice { const SEVERITY_CRITICAL = 'critical'; const SEVERITY_WARNING = 'warning'; const SEVERITY_INFO = 'info'; private $_id; private $_severity; private $_messageHTML; public function __construct($id, $severity, $messageHTML) { $this->_id = $id; $this->_severity = $severity; $this->_messageHTML = $messageHTML; } public function displayNotice() { $severityClass = 'notice-info'; if ($this->_severity == self::SEVERITY_CRITICAL) { $severityClass = 'notice-error'; } else if ($this->_severity == self::SEVERITY_WARNING) { $severityClass = 'notice-warning'; } echo '

' . $this->_messageHTML . '

' . esc_html__('Dismiss', 'wordfence') . '

'; } }lib/wfActivityReport.php000064400000050404152331132450011352 0ustar00db = $wpdb; $this->limit = $limit; } /** * Schedule the activity report cron job. */ public static function scheduleCronJob() { self::clearCronJobs(); if (!wfConfig::get('email_summary_enabled', 1)) { return; } if (is_main_site()) { list(, $end_time) = wfActivityReport::getReportDateRange(); wp_schedule_single_event($end_time, 'wordfence_email_activity_report'); } } /** * Remove the activity report cron job. */ public static function disableCronJob() { self::clearCronJobs(); } public static function clearCronJobs() { wp_clear_scheduled_hook('wordfence_email_activity_report'); } /** * Send out the report and reschedule the next report's cron job. */ public static function executeCronJob() { if (!wfConfig::get('email_summary_enabled', 1)) { return; } $emails = wfConfig::getAlertEmails(); if (count($emails)) { $report = new self(); $report->sendReportViaEmail($emails); } self::scheduleCronJob(); } /** * Output a compact version of the email for the WP dashboard. */ public static function outputDashboardWidget() { $report = new self(5); echo $report->toWidgetView(); } /** * @return array */ public static function getReportDateRange() { $interval = wfConfig::get('email_summary_interval', 'weekly'); $offset = get_option('gmt_offset'); return self::_getReportDateRange($interval, $offset); } /** * Testable code. * * @param string $interval * @param int $offset * @param null $time * @return array */ public static function _getReportDateRange($interval = 'weekly', $offset = 0, $time = null) { if ($time === null) { $time = time(); } $day = (int) gmdate('w', $time); $month = (int) gmdate("n", $time); $day_of_month = (int) gmdate("j", $time); $year = (int) gmdate("Y", $time); $start_time = 0; $end_time = 0; switch ($interval) { // Send a report 4pm every day case 'daily': $start_time = gmmktime(16, 0, 0, $month, $day_of_month, $year) + (-$offset * 60 * 60); $end_time = $start_time + 86400; break; // Send a report 4pm every Monday case 'weekly': $start_time = gmmktime(16, 0, 0, $month, $day_of_month - $day + 1, $year) + (-$offset * 60 * 60); $end_time = $start_time + (86400 * 7); break; // Send a report at 4pm the first of every month case 'monthly': $start_time = gmmktime(16, 0, 0, $month, 1, $year) + (-$offset * 60 * 60); $end_time = gmmktime(16, 0, 0, $month + 1, 1, $year) + (-$offset * 60 * 60); break; } return array($start_time, $end_time); } /** * @return int */ public static function getReportDateFrom() { $interval = wfConfig::get('email_summary_interval', 'weekly'); return self::_getReportDateFrom($interval); } /** * @param string $interval * @param null $time * @return int */ public static function _getReportDateFrom($interval = 'weekly', $time = null) { if ($time === null) { $time = time(); } // weekly $from = $time - (86400 * 7); switch ($interval) { case 'daily': $from = $time - 86400; break; // Send a report at 4pm the first of every month case 'monthly': $from = strtotime('-1 month', $time); break; } return $from; } /** * @return array */ public function getFullReport() { $start_time = microtime(true); $remainder = 0; $recent_firewall_activity = $this->getRecentFirewallActivity($this->limit, $remainder); return array( 'top_ips_blocked' => $this->getTopIPsBlocked($this->limit), 'top_countries_blocked' => $this->getTopCountriesBlocked($this->limit), 'top_failed_logins' => $this->getTopFailedLogins($this->limit), 'recent_firewall_activity' => $recent_firewall_activity, 'omitted_firewall_activity'=> $remainder, 'recently_modified_files' => $this->getRecentFilesModified($this->limit), 'updates_needed' => $this->getUpdatesNeeded(), 'microseconds' => microtime(true) - $start_time, ); } /** * @return array */ public function getWidgetReport() { $start_time = microtime(true); return array( 'top_ips_blocked' => $this->getTopIPsBlocked($this->limit), 'top_countries_blocked' => $this->getTopCountriesBlocked($this->limit), 'top_failed_logins' => $this->getTopFailedLogins($this->limit), 'updates_needed' => $this->getUpdatesNeeded(), 'microseconds' => microtime(true) - $start_time, ); } public function getBlockedCount($maxAgeDays = null, $grouping = null) { $maxAgeDays = (int) $maxAgeDays; if ($maxAgeDays <= 0) { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)'; switch (wfConfig::get('email_summary_interval', 'weekly')) { case 'daily': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)'; break; case 'monthly': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)'; break; } } else { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)'; } //Possible values for blockType: throttle, manual, brute, fakegoogle, badpost, country, advanced, blacklist, waf $groupingWHERE = ''; switch ($grouping) { case self::BLOCK_TYPE_COMPLEX: $groupingWHERE = ' AND blockType IN ("fakegoogle", "badpost", "country", "advanced", "waf")'; break; case self::BLOCK_TYPE_BRUTE_FORCE: $groupingWHERE = ' AND blockType IN ("throttle", "brute")'; break; case self::BLOCK_TYPE_BLACKLIST: $groupingWHERE = ' AND blockType IN ("blacklist", "manual")'; break; } $table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog'); $count = $this->db->get_var(<<= {$interval}{$groupingWHERE} SQL ); return $count; } /** * @param int $limit * @return mixed */ public function getTopIPsBlocked($limit = 10, $maxAgeDays = null) { $maxAgeDays = (int) $maxAgeDays; if ($maxAgeDays <= 0) { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)'; switch (wfConfig::get('email_summary_interval', 'weekly')) { case 'daily': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)'; break; case 'monthly': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)'; break; } } else { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)'; } $table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog'); $results = $this->db->get_results($this->db->prepare(<<= {$interval} GROUP BY IP ORDER BY blockCount DESC LIMIT %d SQL , $limit)); if ($results) { foreach ($results as &$row) { $row->countryName = $this->getCountryNameByCode($row->countryCode); } } return $results; } /** * @param int $limit * @return array */ public function getTopCountriesBlocked($limit = 10, $maxAgeDays = null) { $maxAgeDays = (int) $maxAgeDays; if ($maxAgeDays <= 0) { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)'; switch (wfConfig::get('email_summary_interval', 'weekly')) { case 'daily': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)'; break; case 'monthly': $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)'; break; } } else { $interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)'; } $table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog'); $results = $this->db->get_results($this->db->prepare(<<= {$interval} GROUP BY IP) t GROUP BY countryCode ORDER BY totalBlockCount DESC LIMIT %d SQL , $limit)); if ($results) { foreach ($results as &$row) { $row->countryName = $this->getCountryNameByCode($row->countryCode); } } return $results; } /** * @param int $limit * @return mixed */ public function getTopFailedLogins($limit = 10) { $interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day))'; switch (wfConfig::get('email_summary_interval', 'weekly')) { case 'daily': $interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day))'; break; case 'monthly': $interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month))'; break; } $table_wfLogins = wfDB::networkTable('wfLogins'); $failedLogins = $this->db->get_results($this->db->prepare(<< $interval GROUP BY wfl.username ORDER BY fail_count DESC LIMIT %d SQL , $limit)); foreach ($failedLogins as &$login) { $exists = $this->db->get_var($this->db->prepare(<<db->users} WHERE user_login = '%s' OR user_email = '%s' SQL , $login->username, $login->username)); $login->is_valid_user = $exists; } return $failedLogins; } /** * Returns any updates needs or false if everything is up to date. * * @return array|bool */ public function getUpdatesNeeded($useCachedValued = true) { $update_check = new wfUpdateCheck(); $needs_update = $update_check->checkAllUpdates($useCachedValued) ->needsAnyUpdates(); if ($needs_update) { return array( 'core' => $update_check->getCoreUpdateVersion(), 'plugins' => $update_check->getPluginUpdates(), 'themes' => $update_check->getThemeUpdates(), ); } return false; } /** * Returns list of firewall activity up to $limit number of entries. * * @param int $limit Max events to return in results * @param int $remainder * @return array */ public function getRecentFirewallActivity($limit, &$remainder) { $dateRange = wfActivityReport::getReportDateRange(); $recent_firewall_activity = new wfRecentFirewallActivity(null, max(604800, $dateRange[1] - $dateRange[0])); $recent_firewall_activity->run(); return $recent_firewall_activity->mostRecentActivity($limit, $remainder); } /** * Returns list of files modified within given timeframe. * * @todo Add option to configure the regex used to filter files allowed in this list. * @todo Add option to exclude directories (such as cache directories). * * @param string $directory Search for files within this directory * @param int $time_range One week * @param int $limit Max files to return in results * @param int $directory_limit Hard limit for number of files to search within a directory. * @return array */ public function getRecentFilesModified($limit = 300, $directory = ABSPATH, $time_range = 604800, $directory_limit = 20000) { $recently_modified = new wfRecentlyModifiedFiles($directory); $recently_modified->run(); return $recently_modified->mostRecentFiles($limit); } /** * Remove entries older than a month in the IP log. */ public function rotateIPLog() { $table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog'); $this->db->query(<<query($wpdb->prepare(<<getFullReport() + array( 'limit' => $this->getLimit(), )); } /** * @return wfActivityReportView */ public function toWidgetView() { return new wfActivityReportView('reports/activity-report', $this->getWidgetReport() + array( 'limit' => $this->getLimit(), )); } /** * @return wfActivityReportView */ public function toEmailView() { return new wfActivityReportView('reports/activity-report-email-inline', $this->getFullReport()); } /** * @param $email_addresses string|array * @return bool */ public function sendReportViaEmail($email_addresses) { $shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url()); $content = $this->toEmailView()->__toString(); $success = true; if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); } foreach ($email_addresses as $email) { $uniqueContent = str_replace('', sprintf(/* translators: URL to the WordPress admin panel. */ __('No longer an administrator for this site? Click here to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content); if (!wp_mail($email, sprintf(/* translators: 1. Site URL. 2. Localized date. */ __('Wordfence activity for %1$s on %2$s', 'wordfence'), date_i18n(get_option('date_format')), $shortSiteURL), $uniqueContent, 'Content-Type: text/html')) { $success = false; } } return $success; } /** * @return string * @throws wfViewNotFoundException */ public function render() { return $this->toView() ->render(); } /** * @return string */ public function __toString() { return $this->toView() ->__toString(); } /** * @return int */ public function getLimit() { return $this->limit; } /** * @param int $limit */ public function setLimit($limit) { $this->limit = $limit; } } class wfRecentFirewallActivity { private $activity = array(); private $max_fetch = 2000; private $time_range = 604800; public function __construct($max_fetch = null, $time_range = null) { if ($max_fetch !== null) { $this->max_fetch = $max_fetch; } if ($time_range !== null) { $this->time_range = $time_range; } } public function run() { global $wpdb; $table_wfHits = wfDB::networkTable('wfHits'); $results = $wpdb->get_results($wpdb->prepare(<< (UNIX_TIMESTAMP() - %d) ORDER BY attackLogTime DESC LIMIT %d SQL , $this->time_range, $this->max_fetch)); if ($results) { foreach ($results as &$row) { $actionData = json_decode($row->actionData, true); if (!is_array($actionData) || !isset($actionData['paramKey']) || !isset($actionData['paramValue'])) { continue; } if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') { $row->longDescription = __("Blocked because the IP is blocklisted", 'wordfence'); } else { $row->longDescription = sprintf(__("Blocked for %s", 'wordfence'), $row->actionDescription); } $paramKey = base64_decode($actionData['paramKey']); $paramValue = base64_decode($actionData['paramValue']); if (strlen($paramValue) > 100) { $paramValue = substr($paramValue, 0, 100) . '...'; } if (preg_match('/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i', $paramKey, $matches)) { switch ($matches[1]) { case 'request.queryString': $row->longDescription = sprintf(__('Blocked for %1$s in query string: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.body': $row->longDescription = sprintf(__('Blocked for %1$s in POST body: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.cookie': $row->longDescription = sprintf(__('Blocked for %1$s in cookie: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; case 'request.fileNames': $row->longDescription = sprintf(__('Blocked for %1$s in file: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue); break; } } } } $this->activity = $results; } public function mostRecentActivity($limit, &$remainder = null) { if ($remainder !== null) { $remainder = count($this->activity) - $limit; } return array_slice($this->activity, 0, $limit); } } class wfRecentlyModifiedFiles extends wfDirectoryIterator { /** * @var int */ private $time_range = 604800; /** * @var array */ private $files = array(); private $excluded_directories; /** * @param string $directory * @param int $max_files_per_directory * @param int $max_iterations * @param int $time_range */ public function __construct($directory = ABSPATH, $max_files_per_directory = 20000, $max_iterations = 250000, $time_range = 604800) { parent::__construct($directory, $max_files_per_directory, $max_iterations); $this->time_range = $time_range; $excluded_directories = explode("\n", wfUtils::cleanupOneEntryPerLine(wfConfig::get('email_summary_excluded_directories', ''))); $this->excluded_directories = array(); foreach ($excluded_directories as $index => $path) { if (($dir = realpath(ABSPATH . $path)) !== false) { $this->excluded_directories[$dir] = 1; } } } /** * @param $dir * @return bool */ protected function scan($dir) { if (!array_key_exists(realpath($dir), $this->excluded_directories)) { return parent::scan($dir); } return true; } /** * @param string $file */ public function file($file) { $mtime = filemtime($file); if (time() - $mtime < $this->time_range) { $this->files[] = array($file, $mtime); } } /** * @param int $limit * @return array */ public function mostRecentFiles($limit = 300) { usort($this->files, array( $this, '_sortMostRecentFiles', )); return array_slice($this->files, 0, $limit); } /** * Sort in descending order. * * @param $a * @param $b * @return int */ private function _sortMostRecentFiles($a, $b) { if ($a[1] > $b[1]) { return -1; } if ($a[1] < $b[1]) { return 1; } return 0; } /** * @return mixed */ public function getFiles() { return $this->files; } } class wfActivityReportView extends wfView { /** * @param $file * @return string */ public function displayFile($file) { $realPath = realpath($file); if (stripos($realPath, ABSPATH) === 0) { return substr($realPath, strlen(ABSPATH)); } return $realPath; } /** * @param null $unix_time * @return string */ public function modTime($unix_time = null) { if ($unix_time === null) { $unix_time = time(); } return wfUtils::formatLocalTime('F j, Y g:ia', $unix_time); } public function attackTime($unix_time = null) { if ($unix_time === null) { $unix_time = time(); } return wfUtils::formatLocalTime('F j, Y', $unix_time) . "
" . wfUtils::formatLocalTime('g:ia', $unix_time); } public function displayIP($binaryIP) { $readableIP = wfUtils::inet_ntop($binaryIP); $country = wfUtils::countryCode2Name(wfUtils::IP2Country($readableIP)); return "{$readableIP} (" . ($country ? $country : __('Unknown', 'wordfence')) . ")"; } } }lib/menu_tools_importExport.php000064400000002343152331132450013004 0ustar00

Learn more about importing and exporting options', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_IMPORT_EXPORT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>

'global-options-import', 'collapseable' => false, ))->render(); ?>
lib/email_genericAlert.php000064400000002616152331132450011602 0ustar00 -- lib/rest-api/wfRESTBaseController.php000064400000004056152331132450013524 0ustar00isTokenValid($request); if ($validToken && !is_wp_error($validToken) && $this->tokenData['body']['sub'] === wfConfig::get('wordfenceCentralSiteID') ) { return true; } if (is_wp_error($validToken)) { return $validToken; } return new WP_Error('rest_forbidden_context', __('Token is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } /** * @param WP_REST_Request $request * @return WP_Error|bool */ public function verifyTokenPremium($request) { $validToken = $this->isTokenValid($request); if ($validToken && !is_wp_error($validToken) && $this->tokenData['body']['sub'] === 'wordfence-central-premium' ) { return true; } if (is_wp_error($validToken)) { return $validToken; } return new WP_Error('rest_forbidden_context', __('Token is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } /** * @param WP_REST_Request $request * @return bool|WP_Error */ public function isTokenValid($request) { $authHeader = $request->get_header('Authorization'); if (!$authHeader) { $authHeader = $request->get_header('X-Authorization'); } if (stripos($authHeader, 'bearer ') !== 0) { return new WP_Error('rest_forbidden_context', __('Authorization header format is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $token = trim(substr($authHeader, 7)); $jwt = new wfJWT(); try { $this->tokenData = $jwt->decode($token); } catch (wfJWTException $e) { return new WP_Error('rest_forbidden_context', $e->getMessage(), array('status' => rest_authorization_required_code())); } catch (Exception $e) { return new WP_Error('rest_forbidden_context', __('Token is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } return true; } }lib/rest-api/wfRESTConfigController.php000064400000032006152331132450014053 0ustar00query('DELETE FROM ' . wfDB::networkTable('wfConfig') . " WHERE name LIKE 'wordfenceCentral%'"); wfConfig::set('wordfenceCentralDisconnected', true); wfConfig::set('wordfenceCentralDisconnectTime', time()); wfConfig::set('wordfenceCentralDisconnectEmail', $adminEmail); return !!$result; } public function registerRoutes() { register_rest_route('wordfence/v1', '/config', array( 'methods' => WP_REST_Server::READABLE, 'callback' => array($this, 'getConfig'), 'permission_callback' => array($this, 'verifyToken'), 'fields' => array( 'description' => __('Specific config options to return.', 'wordfence'), 'type' => 'array', 'required' => false, ), )); register_rest_route('wordfence/v1', '/config', array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array($this, 'setConfig'), 'permission_callback' => array($this, 'verifyToken'), 'fields' => array( 'description' => __('Specific config options to set.', 'wordfence'), 'type' => 'array', 'required' => true, ), )); register_rest_route('wordfence/v1', '/disconnect', array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array($this, 'disconnect'), 'permission_callback' => array($this, 'verifyToken'), )); register_rest_route('wordfence/v1', '/premium-connect', array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array($this, 'premiumConnect'), 'permission_callback' => array($this, 'verifyTokenPremium'), )); } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function getConfig($request) { $fields = (array) $request['fields']; $config = array(); $firewall = new wfFirewall(); $wafFields = array( 'autoPrepend' => $firewall->protectionMode() === wfFirewall::PROTECTION_MODE_EXTENDED, 'avoid_php_input' => wfWAF::getInstance()->getStorageEngine()->getConfig('avoid_php_input', false) ? 1 : 0, 'disabledRules' => array_keys((array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules')), 'ruleCount' => count((array) wfWAF::getInstance()->getRules()), 'disableWAFBlacklistBlocking' => wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking'), 'enabled' => $firewall->wafStatus() !== wfFirewall::FIREWALL_MODE_DISABLED, 'firewallMode' => $firewall->firewallMode(), 'learningModeGracePeriod' => wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriod'), 'learningModeGracePeriodEnabled' => wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriodEnabled'), 'subdirectoryInstall' => $firewall->isSubDirectoryInstallation(), 'wafStatus' => $firewall->wafStatus(), ); $lsFields = array( Controller_Settings::OPTION_XMLRPC_ENABLED => Controller_Settings::shared()->get(Controller_Settings::OPTION_XMLRPC_ENABLED), Controller_Settings::OPTION_2FA_WHITELISTED => Controller_Settings::shared()->get(Controller_Settings::OPTION_2FA_WHITELISTED), Controller_Settings::OPTION_IP_SOURCE => Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_SOURCE), Controller_Settings::OPTION_IP_TRUSTED_PROXIES => Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_TRUSTED_PROXIES), Controller_Settings::OPTION_REQUIRE_2FA_ADMIN => Controller_Settings::shared()->get(Controller_Settings::OPTION_REQUIRE_2FA_ADMIN), Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED => Controller_Settings::shared()->get(Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED), Controller_Settings::OPTION_GLOBAL_NOTICES => Controller_Settings::shared()->get(Controller_Settings::OPTION_GLOBAL_NOTICES), Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED => Controller_Settings::shared()->get(Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED), Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION => Controller_Settings::shared()->get(Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION), Controller_Settings::OPTION_ALLOW_XML_RPC => Controller_Settings::shared()->get(Controller_Settings::OPTION_ALLOW_XML_RPC), Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA => Controller_Settings::shared()->get(Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA), Controller_Settings::OPTION_RECAPTCHA_THRESHOLD => Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_THRESHOLD), Controller_Settings::OPTION_LAST_SECRET_REFRESH => Controller_Settings::shared()->get(Controller_Settings::OPTION_LAST_SECRET_REFRESH), ); // Convert the database strings to typed values. foreach ($lsFields as $lsField => $value) { $lsFields[$lsField] = Controller_Settings::shared()->clean($lsField, $value); } if (!$fields) { foreach (wfConfig::$defaultConfig as $group => $groupOptions) { foreach ($groupOptions as $field => $values) { $fields[] = $field; } } foreach ($wafFields as $wafField => $value) { $fields[] = 'waf.' . $wafField; } foreach ($lsFields as $lsField => $value) { $fields[] = 'wfls_settings_' . $lsField; } } foreach ($fields as $field) { if (strpos($field, 'waf.') === 0) { $wafField = substr($field, 4); if (array_key_exists($wafField, $wafFields)) { $config['waf'][$wafField] = $wafFields[$wafField]; } continue; } if (strpos($field, 'wfls_settings_') === 0) { $lsField = substr($field, 14); if (array_key_exists($lsField, $lsFields)) { $config['wfls_settings_' . $lsField] = $lsFields[$lsField]; } continue; } if (array_key_exists($field, wfConfig::$defaultConfig['checkboxes'])) { $config[$field] = (bool) wfConfig::get($field); } else if (array_key_exists($field, wfConfig::$defaultConfig['otherParams']) || array_key_exists($field, wfConfig::$defaultConfig['defaultsOnly'])) { $configConfig = !empty(wfConfig::$defaultConfig['otherParams'][$field]) ? wfConfig::$defaultConfig['otherParams'][$field] : wfConfig::$defaultConfig['defaultsOnly'][$field]; if (!empty($configConfig['validation']['type'])) { switch ($configConfig['validation']['type']) { case wfConfig::TYPE_INT: $config[$field] = wfConfig::getInt($field); break; case wfConfig::TYPE_DOUBLE: case wfConfig::TYPE_FLOAT: $config[$field] = floatval(wfConfig::get($field)); break; case wfConfig::TYPE_BOOL: $config[$field] = (bool) wfConfig::get($field); break; case wfConfig::TYPE_ARRAY: $config[$field] = wfConfig::get_ser($field); break; case wfConfig::TYPE_STRING: default: $config[$field] = wfConfig::get($field); break; } } else { $config[$field] = wfConfig::get($field); } } else if (in_array($field, wfConfig::$serializedOptions)) { $config[$field] = wfConfig::get_ser($field); } } $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); parse_str($api->makeAPIQueryString(), $qs); $systemInfo = json_decode(wfUtils::base64url_decode($qs['s']), true); $systemInfo['output_buffering'] = ini_get('output_buffering'); $systemInfo['ip'] = wfUtils::getIPAndServerVariable(); $systemInfo['detected_ips'] = wfUtils::getAllServerVariableIPs(); $systemInfo['admin_url'] = network_admin_url(); $response = rest_ensure_response(array( 'config' => $config, 'info' => $systemInfo, )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function setConfig($request) { wfCentral::preventConfigurationSync(); $fields = $request['fields']; if (is_array($fields) && $fields) { $loginSecurityConfig = array(); foreach ($fields as $key => $value) { if (strpos($key, 'wfls_settings_') === 0) { $lsField = substr($key, 14); $loginSecurityConfig[$lsField] = $value; } } if ($loginSecurityConfig) { $errors = Controller_Settings::shared()->validate_multiple($loginSecurityConfig); if ($errors !== true) { if (count($errors) == 1) { return new WP_Error('rest_set_config_error', sprintf( /* translators: Error message. */ __('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']), array('status' => 422)); } else if (count($errors) > 1) { $compoundMessage = array(); foreach ($errors as $e) { $compoundMessage[] = $e['error']; } return new WP_Error('rest_set_config_error', sprintf( /* translators: Error message. */ __('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)), array('status' => 422)); } return new WP_Error('rest_set_config_error', __('Errors occurred while saving the configuration.', 'wordfence'), array('status' => 422)); } try { Controller_Settings::shared()->set_multiple($loginSecurityConfig); foreach ($fields as $key => $value) { if (strpos($key, 'wfls_settings_') === 0) { unset($fields[$key]); } } } catch (Exception $e) { return new WP_Error('rest_save_config_error', sprintf( /* translators: Error message. */ __('A server error occurred while saving the configuration: %s', 'wordfence'), $e->getMessage()), array('status' => 500)); } } $errors = wfConfig::validate($fields); if ($errors !== true) { if (count($errors) == 1) { return new WP_Error('rest_set_config_error', sprintf( /* translators: Error message. */ __('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']), array('status' => 422)); } else if (count($errors) > 1) { $compoundMessage = array(); foreach ($errors as $e) { $compoundMessage[] = $e['error']; } return new WP_Error('rest_set_config_error', sprintf( /* translators: Error message. */ __('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)), array('status' => 422)); } return new WP_Error('rest_set_config_error', __('Errors occurred while saving the configuration.', 'wordfence'), array('status' => 422)); } try { wfConfig::save($fields); return rest_ensure_response(array( 'success' => true, )); } catch (Exception $e) { return new WP_Error('rest_save_config_error', sprintf( /* translators: Error message. */ __('A server error occurred while saving the configuration: %s', 'wordfence'), $e->getMessage()), array('status' => 500)); } } return new WP_Error('rest_save_config_error', __("Validation error: 'fields' parameter is empty or not an array.", 'wordfence'), array('status' => 422)); } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function disconnect($request) { self::disconnectConfig(); return rest_ensure_response(array( 'success' => true, )); } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function premiumConnect($request) { require_once(WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload-fast.php'); // Store values sent by Central. $wordfenceCentralPK = $request['public-key']; $wordfenceCentralSiteData = $request['site-data']; $wordfenceCentralSiteID = $request['site-id']; $keypair = ParagonIE_Sodium_Compat::crypto_sign_keypair(); $publicKey = ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair); $secretKey = ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair); wfConfig::set('wordfenceCentralSecretKey', $secretKey); wfConfig::set('wordfenceCentralConnected', 1); wfConfig::set('wordfenceCentralCurrentStep', 6); wfConfig::set('wordfenceCentralPK', pack("H*", $wordfenceCentralPK)); wfConfig::set('wordfenceCentralSiteData', json_encode($wordfenceCentralSiteData)); wfConfig::set('wordfenceCentralSiteID', $wordfenceCentralSiteID); wfConfig::set('wordfenceCentralConnectTime', time()); wfConfig::set('wordfenceCentralConnectEmail', !empty($this->tokenData['adminEmail']) ? $this->tokenData['adminEmail'] : null); // Return values created by Wordfence. return rest_ensure_response(array( 'success' => true, 'public-key' => ParagonIE_Sodium_Compat::bin2hex($publicKey), )); } }lib/rest-api/wfRESTAuthenticationController.php000064400000013702152331132450015627 0ustar00 WP_REST_Server::READABLE, 'callback' => array($this, 'nonce'), 'permission_callback' => '__return_true', )); register_rest_route('wordfence/v1', '/authenticate', array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'authenticate'), 'permission_callback' => '__return_true', )); register_rest_route('wordfence/v1', '/authenticate-premium', array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'authenticatePremium'), 'permission_callback' => '__return_true', )); } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function nonce($request) { $response = rest_ensure_response(array( 'nonce' => self::generateNonce(), 'admin_url' => network_admin_url(), )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function authenticate($request) { require_once(WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload-fast.php'); $siteID = wfConfig::get('wordfenceCentralSiteID'); if (!$siteID) { return new WP_Error('rest_forbidden_context', __('Site is not connected to Wordfence Central.', 'wordfence'), array('status' => rest_authorization_required_code())); } // verify signature. $data = $request->get_param('data'); $dataChunks = explode('|', $data, 2); if (count($dataChunks) !== 2) { return new WP_Error('rest_forbidden_context', __('Data is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } if (!preg_match('/[0-9a-f]{64}/i', $dataChunks[0])) { return new WP_Error('rest_forbidden_context', __('Nonce format is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } if (!preg_match('/[0-9a-f\-]{36}/i', $dataChunks[1])) { return new WP_Error('rest_forbidden_context', __('Site ID is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } if (!hash_equals($siteID, $dataChunks[1])) { return new WP_Error('rest_forbidden_context', __('Site ID is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $signature = $request->get_param('signature'); $nonce1 = self::generateNonce(); $nonce2 = self::generateNonce(-1); $verfiedNonce = hash_equals($nonce1, $dataChunks[0]) || hash_equals($nonce2, $dataChunks[0]); if (!$verfiedNonce) { return new WP_Error('rest_forbidden_context', __('Nonce is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $signature = pack('H*', $signature); if (!ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $data, wfConfig::get('wordfenceCentralPK'))) { return new WP_Error('rest_forbidden_context', __('Signature is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $response = rest_ensure_response(array( 'token' => (string) self::generateToken(), )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function authenticatePremium($request) { require_once(WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload-fast.php'); // verify signature. $data = $request->get_param('data'); $dataChunks = explode('|', $data, 2); if (count($dataChunks) !== 2) { return new WP_Error('rest_forbidden_context', __('Data is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } if (!preg_match('/[0-9a-f]{64}/i', $dataChunks[0])) { return new WP_Error('rest_forbidden_context', __('Nonce format is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } if (!is_email($dataChunks[1])) { return new WP_Error('rest_forbidden_context', __('Email address is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $adminEmail = $dataChunks[1]; $signature = $request->get_param('signature'); $nonce1 = self::generateNonce(); $nonce2 = self::generateNonce(-1); $verfiedNonce = hash_equals($nonce1, $dataChunks[0]) || hash_equals($nonce2, $dataChunks[0]); if (!$verfiedNonce) { return new WP_Error('rest_forbidden_context', __('Nonce is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $signature = pack('H*', $signature); if (!ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $data, WORDFENCE_CENTRAL_PUBLIC_KEY)) { return new WP_Error('rest_forbidden_context', __('Signature is invalid.', 'wordfence'), array('status' => rest_authorization_required_code())); } $user_query = new WP_User_Query(array( 'role' => 'administrator', 'search' => $adminEmail, 'search_columns' => array('user_email') )); $users = $user_query->get_results(); if (is_array($users) && count($users) === 1) { $jwt = new wfJWT('wordfence-central-premium'); $jwt->addClaims(array('email' => $adminEmail)); $response = rest_ensure_response(array( 'token' => (string) $jwt, )); return $response; } return new WP_Error('rest_forbidden_context', __('Admin user with this email address not found.', 'wordfence'), array('status' => rest_authorization_required_code())); } }lib/rest-api/wfRESTScanController.php000064400000012106152331132450013531 0ustar00 WP_REST_Server::READABLE, 'callback' => array($this, 'getIssuesList'), 'permission_callback' => array($this, 'verifyToken'), 'group' => array( 'description' => __('Scan result group or all results.', 'wordfence'), 'type' => 'string', 'required' => false, ), 'offset' => array( 'description' => __('Offset of scan results to return.', 'wordfence'), 'type' => 'int', 'required' => false, ), 'limit' => array( 'description' => __('Number of scan results to return.', 'wordfence'), 'type' => 'int', 'required' => false, ), )); register_rest_route('wordfence/v1', '/scan', array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'startScan'), 'permission_callback' => array($this, 'verifyToken'), )); register_rest_route('wordfence/v1', '/scan', array( 'methods' => WP_REST_Server::DELETABLE, 'callback' => array($this, 'stopScan'), 'permission_callback' => array($this, 'verifyToken'), )); register_rest_route('wordfence/v1', '/scan/issue', array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array($this, 'updateIssue'), 'permission_callback' => array($this, 'verifyToken'), )); } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function getIssuesList($request) { $group = $request['group'] ? $request['group'] : 'all'; $offset = absint($request['offset']); $limit = absint($request['limit']); if ($limit === 0) { $limit = 100; } switch ($group) { case 'pending': $count = wfIssues::shared()->getPendingIssueCount(); $issues = wfIssues::shared()->getPendingIssues($offset, $limit); break; default: // Return all issues. $count = wfIssues::shared()->getIssueCount(); $issues = wfIssues::shared()->getIssues($offset, $limit); break; } $response = rest_ensure_response(array( 'count' => $count, 'last-scan-time' => wfConfig::get('scanTime'), 'issues' => $issues, )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function startScan($request) { wordfence::status(1, 'info', sprintf(/* translators: Localized date. */ __('Wordfence scan starting at %s from Wordfence Central', 'wordfence'), date('l jS \of F Y h:i:s A', current_time('timestamp')))); try { wfScanEngine::startScan(); } catch (wfScanEngineTestCallbackFailedException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED); wfUtils::clearScanLock(); $response = rest_ensure_response(array( 'success' => false, 'error-code' => $e->getCode(), 'error' => $e->getMessage(), )); return $response; } catch (Exception $e) { if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL); $response = rest_ensure_response(array( 'success' => false, 'error-code' => $e->getCode(), 'error' => $e->getMessage(), )); return $response; } } $response = rest_ensure_response(array( 'success' => true, )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function stopScan($request) { wordfence::status(1, 'info', __('Scan stop request received from Wordfence Central.', 'wordfence')); wordfence::status(10, 'info', __('SUM_KILLED:A request was received to stop the previous scan from Wordfence Central.', 'wordfence')); wfUtils::clearScanLock(); //Clear the lock now because there may not be a scan running to pick up the kill request and clear the lock wfScanEngine::requestKill(); wfConfig::remove('scanStartAttempt'); wfConfig::set('lastScanFailureType', false); $response = rest_ensure_response(array( 'success' => true, )); return $response; } /** * @param WP_REST_Request $request * @return mixed|WP_REST_Response */ public function updateIssue($request) { $issue = $request['issue']; $id = is_array($issue) && array_key_exists('id', $issue) ? $issue['id'] : null; $status = is_array($issue) && array_key_exists('status', $issue) ? $issue['status'] : null; if ($id) { $wfdb = new wfDB(); $wfdb->queryWrite("update " . wfDB::networkTable('wfIssues') . " set status='%s' where id=%d", $status, $id); $response = rest_ensure_response(array( 'success' => true, )); return $response; } $response = rest_ensure_response(array( 'success' => false, 'error' => 'Issue not found.', )); return $response; } }lib/IPTrafList.php000064400000005307152331132450010010 0ustar00 $v) { ?> ' . esc_html__('Seconds since last hit:', 'wordfence') . ''; } ?>
' . $v['timeSinceLastHit'] . '
Type: ' . esc_html('Page not found', 'wordfence') . ''; } else if ($v['type'] == 'hit') { esc_html_e('Normal request', 'wordfence'); } ?>
lib/wfViewResult.php000064400000002652152331132450010475 0ustar00 ?ver=' type='text/css' media='all' />

Wordfence.com for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))); ?>
lib/wfHelperString.php000064400000003141152331132450010764 0ustar00 $colLengths[$col]) { $colLengths[$col] = $len; } } } } $hr = str_repeat('-', array_sum($colLengths) + (count($colLengths) * 3) + 1); $output = $hr . "\n"; for ($row = 0; $row < count($table); $row++) { $colHeight = 0; for ($col = 0; $col < count($table[$row]); $col++) { $height = substr_count($table[$row][$col], "\n"); if ($height > $colHeight) { $colHeight = $height; } } for ($colRow = 0; $colRow <= $colHeight; $colRow++) { for ($col = 0; $col < count($table[$row]); $col++) { $colRows = explode("\n", $table[$row][$col]); $output .= '| ' . str_pad(isset($colRows[$colRow]) ? $colRows[$colRow] : '', $colLengths[$col], ' ', STR_PAD_RIGHT) . ' '; } $output .= "|\n"; } if ($row === 0) { $output .= $hr . "\n"; } } return trim($output . (count($table) > 1 ? $hr : '')); } }lib/wfStyle.php000064400000000435152331132450007461 0ustar00 * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the Chris Boulton nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package Diff * @author Chris Boulton * @copyright (c) 2009 Chris Boulton * @license New BSD License http://www.opensource.org/licenses/bsd-license.php * @version 1.1 * @link http://github.com/chrisboulton/php-diff */ class Diff_SequenceMatcher { /** * @var string|array Either a string or an array containing a callback function to determine if a line is "junk" or not. */ private $junkCallback = null; /** * @var array The first sequence to compare against. */ private $a = null; /** * @var array The second sequence. */ private $b = null; /** * @var array Array of characters that are considered junk from the second sequence. Characters are the array key. */ private $junkDict = array(); /** * @var array Array of indices that do not contain junk elements. */ private $b2j = array(); private $options = array(); private $defaultOptions = array( 'ignoreNewLines' => false, 'ignoreWhitespace' => false, 'ignoreCase' => false ); /** * The constructor. With the sequences being passed, they'll be set for the * sequence matcher and it will perform a basic cleanup & calculate junk * elements. * * @param string|array $a A string or array containing the lines to compare against. * @param string|array $b A string or array containing the lines to compare. * @param string|array $junkCallback Either an array or string that references a callback function (if there is one) to determine 'junk' characters. */ public function __construct($a, $b, $junkCallback=null, $options=array()) { $this->a = null; $this->b = null; $this->junkCallback = $junkCallback; $this->setOptions($options); $this->setSequences($a, $b); } public function setOptions($options) { $this->options = array_merge($this->defaultOptions, $options); } /** * Set the first and second sequences to use with the sequence matcher. * * @param string|array $a A string or array containing the lines to compare against. * @param string|array $b A string or array containing the lines to compare. */ public function setSequences($a, $b) { $this->setSeq1($a); $this->setSeq2($b); } /** * Set the first sequence ($a) and reset any internal caches to indicate that * when calling the calculation methods, we need to recalculate them. * * @param string|array $a The sequence to set as the first sequence. */ public function setSeq1($a) { if(!is_array($a)) { $a = str_split($a); } if($a == $this->a) { return; } $this->a= $a; $this->matchingBlocks = null; $this->opCodes = null; } /** * Set the second sequence ($b) and reset any internal caches to indicate that * when calling the calculation methods, we need to recalculate them. * * @param string|array $b The sequence to set as the second sequence. */ public function setSeq2($b) { if(!is_array($b)) { $b = str_split($b); } if($b == $this->b) { return; } $this->b = $b; $this->matchingBlocks = null; $this->opCodes = null; $this->fullBCount = null; $this->chainB(); } /** * Generate the internal arrays containing the list of junk and non-junk * characters for the second ($b) sequence. */ private function chainB() { $length = count ($this->b); $this->b2j = array(); $popularDict = array(); for($i = 0; $i < $length; ++$i) { $char = $this->b[$i]; if(isset($this->b2j[$char])) { if($length >= 200 && count($this->b2j[$char]) * 100 > $length) { $popularDict[$char] = 1; unset($this->b2j[$char]); } else { $this->b2j[$char][] = $i; } } else { $this->b2j[$char] = array( $i ); } } // Remove leftovers foreach(array_keys($popularDict) as $char) { unset($this->b2j[$char]); } $this->junkDict = array(); if(is_callable($this->junkCallback)) { foreach(array_keys($popularDict) as $char) { if(call_user_func($this->junkCallback, $char)) { $this->junkDict[$char] = 1; unset($popularDict[$char]); } } foreach(array_keys($this->b2j) as $char) { if(call_user_func($this->junkCallback, $char)) { $this->junkDict[$char] = 1; unset($this->b2j[$char]); } } } } /** * Checks if a particular character is in the junk dictionary * for the list of junk characters. * * @return boolean $b True if the character is considered junk. False if not. */ private function isBJunk($b) { if(isset($this->juncDict[$b])) { return true; } return false; } /** * Find the longest matching block in the two sequences, as defined by the * lower and upper constraints for each sequence. (for the first sequence, * $alo - $ahi and for the second sequence, $blo - $bhi) * * Essentially, of all of the maximal matching blocks, return the one that * startest earliest in $a, and all of those maximal matching blocks that * start earliest in $a, return the one that starts earliest in $b. * * If the junk callback is defined, do the above but with the restriction * that the junk element appears in the block. Extend it as far as possible * by matching only junk elements in both $a and $b. * * @param int $alo The lower constraint for the first sequence. * @param int $ahi The upper constraint for the first sequence. * @param int $blo The lower constraint for the second sequence. * @param int $bhi The upper constraint for the second sequence. * @return array Array containing the longest match that includes the starting position in $a, start in $b and the length/size. */ public function findLongestMatch($alo, $ahi, $blo, $bhi) { $a = $this->a; $b = $this->b; $bestI = $alo; $bestJ = $blo; $bestSize = 0; $j2Len = array(); $nothing = array(); for($i = $alo; $i < $ahi; ++$i) { $newJ2Len = array(); $jDict = $this->arrayGetDefault($this->b2j, $a[$i], $nothing); foreach($jDict as $jKey => $j) { if($j < $blo) { continue; } else if($j >= $bhi) { break; } $k = $this->arrayGetDefault($j2Len, $j -1, 0) + 1; $newJ2Len[$j] = $k; if($k > $bestSize) { $bestI = $i - $k + 1; $bestJ = $j - $k + 1; $bestSize = $k; } } $j2Len = $newJ2Len; } while($bestI > $alo && $bestJ > $blo && !$this->isBJunk($b[$bestJ - 1]) && !$this->linesAreDifferent($bestI - 1, $bestJ - 1)) { --$bestI; --$bestJ; ++$bestSize; } while($bestI + $bestSize < $ahi && ($bestJ + $bestSize) < $bhi && !$this->isBJunk($b[$bestJ + $bestSize]) && !$this->linesAreDifferent($bestI + $bestSize, $bestJ + $bestSize)) { ++$bestSize; } while($bestI > $alo && $bestJ > $blo && $this->isBJunk($b[$bestJ - 1]) && !$this->isLineDifferent($bestI - 1, $bestJ - 1)) { --$bestI; --$bestJ; ++$bestSize; } while($bestI + $bestSize < $ahi && $bestJ + $bestSize < $bhi && $this->isBJunk($b[$bestJ + $bestSize]) && !$this->linesAreDifferent($bestI + $bestSize, $bestJ + $bestSize)) { ++$bestSize; } return array( $bestI, $bestJ, $bestSize ); } /** * Check if the two lines at the given indexes are different or not. * * @param int $aIndex Line number to check against in a. * @param int $bIndex Line number to check against in b. * @return boolean True if the lines are different and false if not. */ public function linesAreDifferent($aIndex, $bIndex) { $lineA = $this->a[$aIndex]; $lineB = $this->b[$bIndex]; if($this->options['ignoreWhitespace']) { $replace = array("\t", ' '); $lineA = str_replace($replace, '', $lineA); $lineB = str_replace($replace, '', $lineB); } if($this->options['ignoreCase']) { $lineA = strtolower($lineA); $lineB = strtolower($lineB); } if($lineA != $lineB) { return true; } return false; } /** * Return a nested set of arrays for all of the matching sub-sequences * in the strings $a and $b. * * Each block contains the lower constraint of the block in $a, the lower * constraint of the block in $b and finally the number of lines that the * block continues for. * * @return array Nested array of the matching blocks, as described by the function. */ public function getMatchingBlocks() { if(!empty($this->matchingBlocks)) { return $this->matchingBlocks; } $aLength = count($this->a); $bLength = count($this->b); $queue = array( array( 0, $aLength, 0, $bLength ) ); $matchingBlocks = array(); while(!empty($queue)) { list($alo, $ahi, $blo, $bhi) = array_pop($queue); $x = $this->findLongestMatch($alo, $ahi, $blo, $bhi); list($i, $j, $k) = $x; if($k) { $matchingBlocks[] = $x; if($alo < $i && $blo < $j) { $queue[] = array( $alo, $i, $blo, $j ); } if($i + $k < $ahi && $j + $k < $bhi) { $queue[] = array( $i + $k, $ahi, $j + $k, $bhi ); } } } usort($matchingBlocks, array($this, 'tupleSort')); $i1 = 0; $j1 = 0; $k1 = 0; $nonAdjacent = array(); foreach($matchingBlocks as $block) { list($i2, $j2, $k2) = $block; if($i1 + $k1 == $i2 && $j1 + $k1 == $j2) { $k1 += $k2; } else { if($k1) { $nonAdjacent[] = array( $i1, $j1, $k1 ); } $i1 = $i2; $j1 = $j2; $k1 = $k2; } } if($k1) { $nonAdjacent[] = array( $i1, $j1, $k1 ); } $nonAdjacent[] = array( $aLength, $bLength, 0 ); $this->matchingBlocks = $nonAdjacent; return $this->matchingBlocks; } /** * Return a list of all of the opcodes for the differences between the * two strings. * * The nested array returned contains an array describing the opcode * which includes: * 0 - The type of tag (as described below) for the opcode. * 1 - The beginning line in the first sequence. * 2 - The end line in the first sequence. * 3 - The beginning line in the second sequence. * 4 - The end line in the second sequence. * * The different types of tags include: * replace - The string from $i1 to $i2 in $a should be replaced by * the string in $b from $j1 to $j2. * delete - The string in $a from $i1 to $j2 should be deleted. * insert - The string in $b from $j1 to $j2 should be inserted at * $i1 in $a. * equal - The two strings with the specified ranges are equal. * * @return array Array of the opcodes describing the differences between the strings. */ public function getOpCodes() { if(!empty($this->opCodes)) { return $this->opCodes; } $i = 0; $j = 0; $this->opCodes = array(); $blocks = $this->getMatchingBlocks(); foreach($blocks as $block) { list($ai, $bj, $size) = $block; $tag = ''; if($i < $ai && $j < $bj) { $tag = 'replace'; } else if($i < $ai) { $tag = 'delete'; } else if($j < $bj) { $tag = 'insert'; } if($tag) { $this->opCodes[] = array( $tag, $i, $ai, $j, $bj ); } $i = $ai + $size; $j = $bj + $size; if($size) { $this->opCodes[] = array( 'equal', $ai, $i, $bj, $j ); } } return $this->opCodes; } /** * Return a series of nested arrays containing different groups of generated * opcodes for the differences between the strings with up to $context lines * of surrounding content. * * Essentially what happens here is any big equal blocks of strings are stripped * out, the smaller subsets of changes are then arranged in to their groups. * This means that the sequence matcher and diffs do not need to include the full * content of the different files but can still provide context as to where the * changes are. * * @param int $context The number of lines of context to provide around the groups. * @return array Nested array of all of the grouped opcodes. */ public function getGroupedOpcodes($context=3) { $opCodes = $this->getOpCodes(); if(empty($opCodes)) { $opCodes = array( array( 'equal', 0, 1, 0, 1 ) ); } if($opCodes[0][0] == 'equal') { $opCodes[0] = array( $opCodes[0][0], max($opCodes[0][1], $opCodes[0][2] - $context), $opCodes[0][2], max($opCodes[0][3], $opCodes[0][4] - $context), $opCodes[0][4] ); } $lastItem = count($opCodes) - 1; if($opCodes[$lastItem][0] == 'equal') { list($tag, $i1, $i2, $j1, $j2) = $opCodes[$lastItem]; $opCodes[$lastItem] = array( $tag, $i1, min($i2, $i1 + $context), $j1, min($j2, $j1 + $context) ); } $maxRange = $context * 2; $groups = array(); $group = array(); foreach($opCodes as $code) { list($tag, $i1, $i2, $j1, $j2) = $code; if($tag == 'equal' && $i2 - $i1 > $maxRange) { $group[] = array( $tag, $i1, min($i2, $i1 + $context), $j1, min($j2, $j1 + $context) ); $groups[] = $group; $group = array(); $i1 = max($i1, $i2 - $context); $j1 = max($j1, $j2 - $context); } $group[] = array( $tag, $i1, $i2, $j1, $j2 ); } if(!empty($group) && !(count($group) == 1 && $group[0][0] == 'equal')) { $groups[] = $group; } return $groups; } /** * Return a measure of the similarity between the two sequences. * This will be a float value between 0 and 1. * * Out of all of the ratio calculation functions, this is the most * expensive to call if getMatchingBlocks or getOpCodes is yet to be * called. The other calculation methods (quickRatio and realquickRatio) * can be used to perform quicker calculations but may be less accurate. * * The ratio is calculated as (2 * number of matches) / total number of * elements in both sequences. * * @return float The calculated ratio. */ public function Ratio() { $matches = array_reduce($this->getMatchingBlocks(), array($this, 'ratioReduce'), 0); return $this->calculateRatio($matches, count ($this->a) + count ($this->b)); } /** * Helper function to calculate the number of matches for Ratio(). * * @param int $sum The running total for the number of matches. * @param array $triple Array containing the matching block triple to add to the running total. * @return int The new running total for the number of matches. */ private function ratioReduce($sum, $triple) { return $sum + ($triple[count($triple) - 1]); } /** * Helper function for calculating the ratio to measure similarity for the strings. * The ratio is defined as being 2 * (number of matches / total length) * * @param int $matches The number of matches in the two strings. * @param int $length The length of the two strings. * @return float The calculated ratio. */ private function calculateRatio($matches, $length=0) { if($length) { return 2 * ($matches / $length); } else { return 1; } } /** * Helper function that provides the ability to return the value for a key * in an array of it exists, or if it doesn't then return a default value. * Essentially cleaner than doing a series of if(isset()) {} else {} calls. * * @param array $array The array to search. * @param string $key The key to check that exists. * @param mixed $default The value to return as the default value if the key doesn't exist. * @return mixed The value from the array if the key exists or otherwise the default. */ private function arrayGetDefault($array, $key, $default) { if(isset($array[$key])) { return $array[$key]; } else { return $default; } } /** * Sort an array by the nested arrays it contains. Helper function for getMatchingBlocks * * @param array $a First array to compare. * @param array $b Second array to compare. * @return int -1, 0 or 1, as expected by the usort function. */ private function tupleSort($a, $b) { $max = max(count($a), count($b)); for($i = 0; $i < $max; ++$i) { if($a[$i] < $b[$i]) { return -1; } else if($a[$i] > $b[$i]) { return 1; } } if(count($a) == $count($b)) { return 0; } else if(count($a) < count($b)) { return -1; } else { return 1; } } } lib/Diff/Renderer/Abstract.php000064400000005752152331132450012214 0ustar00 * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the Chris Boulton nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package DiffLib * @author Chris Boulton * @copyright (c) 2009 Chris Boulton * @license New BSD License http://www.opensource.org/licenses/bsd-license.php * @version 1.1 * @link http://github.com/chrisboulton/php-diff */ abstract class Diff_Renderer_Abstract { /** * @var object Instance of the diff class that this renderer is generating the rendered diff for. */ public $diff; /** * @var array Array of the default options that apply to this renderer. */ protected $defaultOptions = array(); /** * @var array Array containing the user applied and merged default options for the renderer. */ protected $options = array(); /** * The constructor. Instantiates the rendering engine and if options are passed, * sets the options for the renderer. * * @param array $options Optionally, an array of the options for the renderer. */ public function __construct(array $options = array()) { $this->setOptions($options); } /** * Set the options of the renderer to those supplied in the passed in array. * Options are merged with the default to ensure that there aren't any missing * options. * * @param array $options Array of options to set. */ public function setOptions(array $options) { $this->options = array_merge($this->defaultOptions, $options); } }lib/Diff/Renderer/Html/Array.php000064400000017023152331132450012425 0ustar00 * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the Chris Boulton nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package DiffLib * @author Chris Boulton * @copyright (c) 2009 Chris Boulton * @license New BSD License http://www.opensource.org/licenses/bsd-license.php * @version 1.1 * @link http://github.com/chrisboulton/php-diff */ require_once(dirname(__FILE__) . '/../Abstract.php'); class Diff_Renderer_Html_Array extends Diff_Renderer_Abstract { /** * @var array Array of the default options that apply to this renderer. */ protected $defaultOptions = array( 'tabSize' => 4 ); /** * Render and return an array structure suitable for generating HTML * based differences. Generally called by subclasses that generate a * HTML based diff and return an array of the changes to show in the diff. * * @return array An array of the generated chances, suitable for presentation in HTML. */ public function render() { // As we'll be modifying a & b to include our change markers, // we need to get the contents and store them here. That way // we're not going to destroy the original data $a = $this->diff->getA(); $b = $this->diff->getB(); $changes = array(); $opCodes = $this->diff->getGroupedOpcodes(); foreach($opCodes as $group) { $blocks = array(); $lastTag = null; $lastBlock = 0; foreach($group as $code) { list($tag, $i1, $i2, $j1, $j2) = $code; if($tag == 'replace' && $i2 - $i1 == $j2 - $j1) { for($i = 0; $i < ($i2 - $i1); ++$i) { $fromLine = $a[$i1 + $i]; $toLine = $b[$j1 + $i]; list($start, $end) = $this->getChangeExtent($fromLine, $toLine); if($start != 0 || $end != 0) { $last = $end + strlen($fromLine); $fromLine = substr_replace($fromLine, "\0", $start, 0); $fromLine = substr_replace($fromLine, "\1", $last + 1, 0); $last = $end + strlen($toLine); $toLine = substr_replace($toLine, "\0", $start, 0); $toLine = substr_replace($toLine, "\1", $last + 1, 0); $a[$i1 + $i] = $fromLine; $b[$j1 + $i] = $toLine; } } } if($tag != $lastTag) { $blocks[] = array( 'tag' => $tag, 'base' => array( 'offset' => $i1, 'lines' => array() ), 'changed' => array( 'offset' => $j1, 'lines' => array() ) ); $lastBlock = count($blocks)-1; } $lastTag = $tag; if($tag == 'equal') { $lines = array_slice($a, $i1, ($i2 - $i1)); $blocks[$lastBlock]['base']['lines'] += $this->formatLines($lines); $lines = array_slice($b, $j1, ($j2 - $j1)); $blocks[$lastBlock]['changed']['lines'] += $this->formatLines($lines); } else { if($tag == 'replace' || $tag == 'delete') { $lines = array_slice($a, $i1, ($i2 - $i1)); $lines = $this->formatLines($lines); $lines = str_replace(array("\0", "\1"), array('', ''), $lines); $blocks[$lastBlock]['base']['lines'] += $lines; } if($tag == 'replace' || $tag == 'insert') { $lines = array_slice($b, $j1, ($j2 - $j1)); $lines = $this->formatLines($lines); $lines = str_replace(array("\0", "\1"), array('', ''), $lines); $blocks[$lastBlock]['changed']['lines'] += $lines; } } } $changes[] = $blocks; } return $changes; } /** * Given two strings, determine where the changes in the two strings * begin, and where the changes in the two strings end. * * @param string $fromLine The first string. * @param string $toLine The second string. * @return array Array containing the starting position (0 by default) and the ending position (-1 by default) */ private function getChangeExtent($fromLine, $toLine) { $start = 0; $limit = min(strlen($fromLine), strlen($toLine)); while($start < $limit && $fromLine[$start] == $toLine[$start]) { ++$start; } $end = -1; $limit = $limit - $start; while(-$end <= $limit && substr($fromLine, $end, 1) == substr($toLine, $end, 1)) { --$end; } return array( $start, $end + 1 ); } /** * Format a series of lines suitable for output in a HTML rendered diff. * This involves replacing tab characters with spaces, making the HTML safe * for output, ensuring that double spaces are replaced with   etc. * * @param array $lines Array of lines to format. * @return array Array of the formatted lines. */ private function formatLines($lines) { $lines = array_map(array($this, 'ExpandTabs'), $lines); $lines = array_map(array($this, 'HtmlSafe'), $lines); foreach($lines as &$line) { $line = preg_replace_callback('# ( +)|^ #', array($this, 'fixSpacesCallback'), $line); } return $lines; } /** * Using a callback here instead of the /e modifier in preg_replace (now deprecated). * * @param $matches * @return string */ private function fixSpacesCallback($matches) { $spaces = (isset($matches[1]) ? $matches[1] : ''); return $this->fixSpaces($spaces); } /** * Replace a string containing spaces with a HTML representation using  . * * @param string $spaces The string of spaces. * @return string The HTML representation of the string. */ function fixSpaces($spaces='') { $count = strlen($spaces); if($count == 0) { return ''; } $div = floor($count / 2); $mod = $count % 2; return str_repeat('  ', $div).str_repeat(' ', $mod); } /** * Replace tabs in a single line with a number of spaces as defined by the tabSize option. * * @param string $line The containing tabs to convert. * @return string The line with the tabs converted to spaces. */ private function expandTabs($line) { return str_replace("\t", str_repeat(' ', $this->options['tabSize']), $line); } /** * Make a string containing HTML safe for output on a page. * * @param string $string The string. * @return string The string with the HTML characters replaced by entities. */ private function htmlSafe($string) { return @htmlspecialchars($string, ENT_NOQUOTES, 'UTF-8'); } } lib/Diff/Renderer/Html/SideBySide.php000064400000013660152331132450013336 0ustar00 * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of the Chris Boulton nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package DiffLib * @author Chris Boulton * @copyright (c) 2009 Chris Boulton * @license New BSD License http://www.opensource.org/licenses/bsd-license.php * @version 1.1 * @link http://github.com/chrisboulton/php-diff */ require_once(dirname(__FILE__) . '/Array.php'); class Diff_Renderer_Html_SideBySide extends Diff_Renderer_Html_Array { /** * Render a and return diff with changes between the two sequences * displayed side by side. * * @return string The generated side by side diff. */ public function render() { $changes = parent::render(); $html = ''; if(empty($changes)) { return $html; } $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; foreach($changes as $i => $blocks) { if($i > 0) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; } foreach($blocks as $change) { $html .= ''; // Equal changes should be shown on both sides of the diff if($change['tag'] == 'equal') { foreach($change['base']['lines'] as $no => $line) { $fromLine = $change['base']['offset'] + $no + 1; $toLine = $change['changed']['offset'] + $no + 1; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } } // Added lines only on the right side else if($change['tag'] == 'insert') { foreach($change['changed']['lines'] as $no => $line) { $toLine = $change['changed']['offset'] + $no + 1; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } } // Show deleted lines only on the left side else if($change['tag'] == 'delete') { foreach($change['base']['lines'] as $no => $line) { $fromLine = $change['base']['offset'] + $no + 1; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } } // Show modified lines on both sides else if($change['tag'] == 'replace') { if(count($change['base']['lines']) >= count($change['changed']['lines'])) { foreach($change['base']['lines'] as $no => $line) { $fromLine = $change['base']['offset'] + $no + 1; $html .= ''; $html .= ''; $html .= ''; if(!isset($change['changed']['lines'][$no])) { $toLine = ' '; $changedLine = ' '; } else { $toLine = $change['base']['offset'] + $no + 1; $changedLine = ''.$change['changed']['lines'][$no].''; } $html .= ''; $html .= ''; $html .= ''; } } else { foreach($change['changed']['lines'] as $no => $changedLine) { if(!isset($change['base']['lines'][$no])) { $fromLine = ' '; $line = ' '; } else { $fromLine = $change['base']['offset'] + $no + 1; $line = ''.$change['base']['lines'][$no].''; } $html .= ''; $html .= ''; $html .= ''; $toLine = $change['changed']['offset'] + $no + 1; $html .= ''; $html .= ''; $html .= ''; } } } $html .= ''; } } $html .= '
The Original Version of the fileThe Modified Version on your WordPress system
  
'.$fromLine.''.$line.' '.$toLine.''.$line.' 
  '.$toLine.''.$line.' 
'.$fromLine.''.$line.'   
'.$fromLine.''.$line.' '.$toLine.''.$changedLine.'
'.$fromLine.''.$line.' '.$toLine.''.$changedLine.'
'; return $html; } } lib/menu_firewall_waf.php000064400000047446152331132450011527 0ustar00countriesNetwork); $firewall = new wfFirewall(); $config = $waf->getStorageEngine(); $wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'); $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend'); /** @var array $wafData */ ?>
  • $firewall, 'dashboard' => $d, ))->render(); ?>
    • 'waf-coverage', 'percentage' => $firewall->wafStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Web Application Firewall', 'wordfence'), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : __('Stops Complex Attacks', 'wordfence')), 'link' => $optionsURL, 'linkLabel' => __('Manage WAF', 'wordfence'), 'statusTitle' => __('Web Application Firewall Status', 'wordfence'), 'statusList' => $firewall->wafStatusList(), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'), ))->render(); ?>
    • 'waf-rules', 'percentage' => $firewall->ruleStatus(), 'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */), 'title' => __('Firewall Rules: ', 'wordfence') . ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')), 'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Rules updated in real-time', 'wordfence') : __('Rule updates delayed by 30 days', 'wordfence'))), 'link' => ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? $optionsURL . '#waf-options-advanced' : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'), 'linkLabel' => ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Manage Firewall Rules', 'wordfence') : __('Upgrade to Premium', 'wordfence')), 'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM), 'statusTitle' => __('Firewall Rules Status', 'wordfence'), 'statusList' => $firewall->wafStatusList('rules'), 'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''), 'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'), ))->render(); ?>
    • 'waf-blacklist', 'percentage' => $firewall->blacklistStatus(), 'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')), 'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'), 'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'), 'linkLabel' => $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED ? null : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Manage Real-Time IP Blocklist', 'wordfence') : ($firewall->isSubDirectoryInstallation() ? null : __('Enable', 'wordfence'))) : __('Upgrade to Premium', 'wordfence')), 'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM), 'statusTitle' => __('Blocklist Status', 'wordfence'), 'statusList' => $firewall->wafStatusList('blacklist'), 'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'), ))->render(); if ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED): ?>
    • 'waf-brute', 'percentage' => $firewall->bruteForceStatus(), 'title' => __('Brute Force Protection', 'wordfence') . ($firewall->bruteForceStatus() == 0 ? __(': Disabled', 'wordfence') : ''), 'subtitle' => __('Stops Password Guessing Attacks', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce'), 'linkLabel' => __('Manage Brute Force Protection', 'wordfence'), 'statusTitle' => __('Brute Force Protection Status', 'wordfence'), 'statusList' => $firewall->bruteForceStatusList(), 'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'), ))->render(); ?>
    • 'waf-option-rate-limiting', 'img' => 'ratelimiting.svg', 'title' => __('Rate Limiting', 'wordfence'), 'subtitle' => __('Block crawlers that are using too many resources or stealing content', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-ratelimiting'), ))->render(); ?>
    • 'waf-option-blocking', 'img' => 'blocking.svg', 'title' => __('Blocking', 'wordfence'), 'subtitle' => __('Block traffic by country, IP, IP range, user agent, referrer, or hostname', 'wordfence'), 'link' => '#top#blocking', ))->render(); ?>
    • 'waf-option-support', 'img' => 'support.svg', 'title' => __('Help', 'wordfence'), 'subtitle' => __('Find the documentation and help you need', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceSupport'), ))->render(); ?>
    • 'waf-option-all-options', 'img' => 'options.svg', 'title' => __('All Firewall Options', 'wordfence'), 'subtitle' => __('Manage global and advanced firewall options', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'), ))->render(); ?>
lib/wfScan.php000064400000037476152331132450007264 0ustar00/false based * on whether or not the cronkey is expired. * * @param null $expired * @return bool|string */ private static function storedCronKey(&$expired = null) { $currentCronKey = wfConfig::get('currentCronKey', false); if (empty($currentCronKey)) { if ($expired !== null) { $expired = false; } return false; } $savedKey = explode(',',$currentCronKey); if (time() - $savedKey[0] > 86400) { if ($expired !== null) { $expired = $savedKey[0]; } return $savedKey[1]; } if ($expired !== null) { $expired = false; } return $savedKey[1]; } public static function wfScanMain(){ self::$peakMemAtStart = memory_get_peak_usage(true); $db = new wfDB(); if($db->errorMsg){ self::errorExit(sprintf(/* translators: Error message. */ __("Could not connect to database to start scan: %s", 'wordfence'), $db->errorMsg)); } if(! wordfence::wfSchemaExists()){ self::errorExit(__("Looks like the Wordfence database tables have been deleted. You can fix this by de-activating and re-activating the Wordfence plugin from your Plugins menu.", 'wordfence')); } if( isset( $_GET['test'] ) && $_GET['test'] == '1'){ echo "WFCRONTESTOK:" . wfConfig::get('cronTestID'); self::status(4, 'info', __("Cron test received and message printed", 'wordfence')); exit(); } self::status(4, 'info', __("Scan engine received request.", 'wordfence')); /* ----------Starting signature check -------- */ self::status(4, 'info', __("Verifying start request signature.", 'wordfence')); if (!isset($_GET['signature']) || !wfScanEngine::verifyStartSignature($_GET['signature'], isset($_GET['isFork']) ? wfUtils::truthyToBoolean($_GET['isFork']) : false, isset($_GET['scanMode']) ? $_GET['scanMode'] : '', isset($_GET['cronKey']) ? $_GET['cronKey'] : '', isset($_GET['remote']) ? wfUtils::truthyToBoolean($_GET['remote']) : false)) { self::errorExit(__('The signature on the request to start a scan is invalid. Please try again.', 'wordfence')); } /* ----------Starting cronkey check -------- */ self::status(4, 'info', __("Fetching stored cronkey for comparison.", 'wordfence')); $expired = false; $storedCronKey = self::storedCronKey($expired); $displayCronKey_received = (isset($_GET['cronKey']) ? (preg_match('/^[a-f0-9]+$/i', $_GET['cronKey']) && strlen($_GET['cronKey']) == 32 ? $_GET['cronKey'] : __('[invalid]', 'wordfence')) : __('[none]', 'wordfence')); $displayCronKey_stored = (!empty($storedCronKey) && !$expired ? $storedCronKey : __('[none]', 'wordfence')); self::status(4, 'info', sprintf(/* translators: 1. WordPress nonce. 2. WordPress nonce. */ __('Checking cronkey: %1$s (expecting %2$s)', 'wordfence'), $displayCronKey_received, $displayCronKey_stored)); if (empty($_GET['cronKey'])) { self::status(4, 'error', __("Wordfence scan script accessed directly, or WF did not receive a cronkey.", 'wordfence')); echo "If you see this message it means Wordfence is working correctly. You should not access this URL directly. It is part of the Wordfence security plugin and is designed for internal use only."; exit(); } if ($expired) { self::errorExit(sprintf( /* translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp. */ __('The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d'), $expired, $storedCronKey, time())); } //keys only last 60 seconds and are used within milliseconds of creation if (!$storedCronKey) { wordfence::status(4, 'error', __("Wordfence could not find a saved cron key to start the scan so assuming it started and exiting.", 'wordfence')); exit(); } self::status(4, 'info', __("Checking saved cronkey against cronkey param", 'wordfence')); if (!hash_equals($storedCronKey, $_GET['cronKey'])) { self::errorExit( sprintf( /* translators: 1. WordPress nonce (used for debugging). 2. WordPress nonce (used for debugging). 3. WordPress nonce (used for debugging). */ __('Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s', 'wordfence'), $storedCronKey, $_GET['cronKey'], wfConfig::get('currentCronKey', false) ) ); } wfConfig::set('currentCronKey', ''); /* --------- end cronkey check ---------- */ $scanMode = wfScanner::SCAN_TYPE_STANDARD; if (isset($_GET['scanMode']) && wfScanner::isValidScanType($_GET['scanMode'])) { $scanMode = $_GET['scanMode']; } $scanController = new wfScanner($scanMode); wfConfig::remove('scanStartAttempt'); $isFork = ($_GET['isFork'] == '1' ? true : false); if(! $isFork){ self::status(4, 'info', __("Checking if scan is already running", 'wordfence')); if(! wfUtils::getScanLock()){ self::errorExit(__("There is already a scan running.", 'wordfence')); } wfIssues::updateScanStillRunning(); wfConfig::set('wfPeakMemory', 0, wfConfig::DONT_AUTOLOAD); wfConfig::set('wfScanStartVersion', wfUtils::getWPVersion()); wfConfig::set('lowResourceScanWaitStep', false); if ($scanController->useLowResourceScanning()) { self::status(1, 'info', __("Using low resource scanning", 'wordfence')); } } self::status(4, 'info', __("Requesting max memory", 'wordfence')); wfUtils::requestMaxMemory(); self::status(4, 'info', __("Setting up error handling environment", 'wordfence')); set_error_handler('wfScan::error_handler', E_ALL); register_shutdown_function('wfScan::shutdown'); if(! self::$debugMode){ ob_start('wfScan::obHandler'); } @error_reporting(E_ALL); wfUtils::iniSet('display_errors','On'); self::status(4, 'info', __("Setting up scanRunning and starting scan", 'wordfence')); try { if ($isFork) { $scan = wfConfig::get_ser('wfsd_engine', false, false); if ($scan) { self::status(4, 'info', sprintf(/* translators: Error message (used for debugging). */ __("Got a true deserialized value back from 'wfsd_engine' with type: %s", 'wordfence'), gettype($scan))); wfConfig::set('wfsd_engine', '', wfConfig::DONT_AUTOLOAD); } else { self::status(2, 'error', sprintf(/* translators: Error message (used for debugging). */ __("Scan can't continue - stored data not found after a fork. Got type: %s", 'wordfence'), gettype($scan))); wfConfig::set('wfsd_engine', '', wfConfig::DONT_AUTOLOAD); wfConfig::set('lastScanCompleted', __('Scan can\'t continue - stored data not found after a fork.', 'wordfence')); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_FORK_FAILED); wfUtils::clearScanLock(); self::status(2, 'error', "Scan terminated with error: " . __('Scan can\'t continue - stored data not found after a fork.', 'wordfence')); self::status(10, 'info', "SUM_KILLED:" . __('Previous scan terminated with an error. See below.', 'wordfence')); exit(); } } else { $delay = -1; $isScheduled = false; $originalScanStart = wfConfig::get('originalScheduledScanStart', 0); $lastScanStart = wfConfig::get('lastScheduledScanStart', 0); $minimumFrequency = ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? 1800 : 43200); if ($lastScanStart && (time() - $lastScanStart) < $minimumFrequency) { $isScheduled = true; if ($originalScanStart > 0) { $delay = max($lastScanStart - $originalScanStart, 0); } } wfIssues::statusPrep(); //Re-initializes all status counters $scanController->resetStages(); $scanController->resetSummaryItems(); if ($scanMode != wfScanner::SCAN_TYPE_QUICK) { wordfence::status(1, 'info', __("Contacting Wordfence to initiate scan", 'wordfence')); $wp_version = wfUtils::getWPVersion(); $apiKey = wfConfig::get('apiKey'); $api = new wfAPI($apiKey, $wp_version); $response = $api->call('log_scan', array(), array('delay' => $delay, 'scheduled' => (int) $isScheduled, 'mode' => wfConfig::get('schedMode')/*, 'forcedefer' => 1*/)); if ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC && $isScheduled) { if (isset($response['defer'])) { $defer = (int) $response['defer']; wordfence::status(2, 'info', sprintf(/* translators: Time until. */ __("Deferring scheduled scan by %s"), wfUtils::makeDuration($defer))); wfConfig::set('lastScheduledScanStart', 0); wfConfig::set('lastScanCompleted', 'ok'); wfConfig::set('lastScanFailureType', false); wfConfig::set_ser('wfStatusStartMsgs', array()); $scanController->recordLastScanTime(); $i = new wfIssues(); wfScanEngine::refreshScanNotification($i); wfScanner::shared()->scheduleSingleScan(time() + $defer, $originalScanStart); wfUtils::clearScanLock(); exit(); } } $malwarePrefixesHash = (isset($response['malwarePrefixes']) ? $response['malwarePrefixes'] : ''); $coreHashesHash = (isset($response['coreHashes']) ? $response['coreHashes'] : ''); $scan = new wfScanEngine($malwarePrefixesHash, $coreHashesHash, $scanMode); $scan->deleteNewIssues(); } else { wordfence::status(1, 'info', __("Initiating quick scan", 'wordfence')); $scan = new wfScanEngine('', '', $scanMode); } } $scan->go(); } catch (wfScanEngineDurationLimitException $e) { //User error set in wfScanEngine wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(__("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); exit(); } catch (wfScanEngineCoreVersionChangeException $e) { //User error set in wfScanEngine wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( /* translators: 1. Bytes of memory. 2. Bytes of memory. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); $nextScheduledScan = wordfence::getNextScanStartTimestamp(); if ($nextScheduledScan !== false && $nextScheduledScan - time() > 21600 /* 6 hours */) { $nextScheduledScan = time() + 3600; wfScanner::shared()->scheduleSingleScan($nextScheduledScan); } self::status(2, 'error', wordfence::getNextScanStartTime($nextScheduledScan)); exit(); } catch (wfAPICallSSLUnavailableException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_SSL_UNAVAILABLE); wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( /* translators: 1. Bytes of memory. 2. Bytes of memory. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(/* translators: Error message. */__("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); exit(); } catch (wfAPICallFailedException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_CALL_FAILED); wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( /* translators: 1. Bytes of memory. 2. Bytes of memory. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); exit(); } catch (wfAPICallInvalidResponseException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_INVALID_RESPONSE); wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( /* translators: 1. Bytes of memory. 2. Bytes of memory. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); exit(); } catch (wfAPICallErrorResponseException $e) { wfConfig::set('lastScanCompleted', $e->getMessage()); wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_ERROR_RESPONSE); wfUtils::clearScanLock(); $peakMemory = self::logPeakMemory(); self::status(2, 'info', sprintf( /* translators: 1. Bytes of memory. 2. Bytes of memory. */ __('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'), wfUtils::formatBytes($peakMemory - self::$peakMemAtStart), wfUtils::formatBytes($peakMemory) )); self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage())); if (preg_match('/The Wordfence API key you\'re using is already being used by: (\S*?) /', $e->getMessage(), $matches)) { wordfence::alert(__('Wordfence scan failed because of license site URL conflict', 'wordfence'), sprintf( /* translators: Site URL. */ __(<<getMessage())); self::status(10, 'info', "SUM_KILLED:" . __('Previous scan terminated with an error. See below.', 'wordfence')); exit(); } wfUtils::clearScanLock(); } public static function logPeakMemory(){ $oldPeak = wfConfig::get('wfPeakMemory', 0, false); $peak = memory_get_peak_usage(true); if ($peak > $oldPeak) { wfConfig::set('wfPeakMemory', $peak, wfConfig::DONT_AUTOLOAD); return $peak; } return $oldPeak; } public static function obHandler($buf){ if(strlen($buf) > 1000){ $buf = substr($buf, 0, 255); } if(empty($buf) === false && preg_match('/[a-zA-Z0-9]+/', $buf)){ self::status(1, 'error', $buf); } } public static function error_handler($errno, $errstr, $errfile, $errline){ if(self::$errorHandlingOn && error_reporting() > 0){ if(preg_match('/wordfence\//', $errfile)){ $level = 1; //It's one of our files, so level 1 } else { $level = 4; //It's someone elses plugin so only show if debug is enabled } self::status($level, 'error', "$errstr ($errno) File: $errfile Line: $errline"); } return false; } public static function shutdown(){ self::logPeakMemory(); } private static function errorExit($msg){ wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __('Scan Engine Error: %s', 'wordfence'), $msg)); exit(); } private static function status($level, $type, $msg){ wordfence::status($level, $type, $msg); } } lib/wordfenceScanner.php000064400000077015152331132450011322 0ustar00 'wp\-includes\/version\.php', 'include' => self::EXCLUSION_PATTERNS_KNOWN_FILES), //Excluded from the known files scan because non-en_US installations will have extra content that fails the check, still in malware scan array('pattern' => '(?:wp\-includes|wp\-admin)\/(?:[^\/]+\/+)*(?:\.htaccess|\.htpasswd|php_errorlog|error_log|[^\/]+?\.log|\._|\.DS_Store|\.listing|dwsync\.xml)', 'include' => self::EXCLUSION_PATTERNS_KNOWN_FILES), ); /** @var wfScanEngine */ protected $scanEngine; public function __sleep(){ return array('path', 'results', 'errorMsg', 'apiKey', 'wordpressVersion', 'urlHoover', 'totalFilesScanned', 'startTime', 'lastStatusTime', 'patterns', 'scanEngine'); } public function __wakeup(){ } public function __construct($apiKey, $wordpressVersion, $path, $scanEngine) { $this->apiKey = $apiKey; $this->wordpressVersion = $wordpressVersion; $this->api = new wfAPI($this->apiKey, $this->wordpressVersion); if($path[strlen($path) - 1] != '/'){ $path .= '/'; } $this->path = $path; $this->scanEngine = $scanEngine; $this->results = array(); $this->errorMsg = false; //First extract hosts or IPs and their URLs into $this->hostsFound and URL's into $this->urlsFound $options = $this->scanEngine->scanController()->scanOptions(); if ($options['scansEnabled_fileContentsGSB']) { $this->urlHoover = new wordfenceURLHoover($this->apiKey, $this->wordpressVersion); } else { $this->urlHoover = false; } if ($options['scansEnabled_fileContents']) { $this->setupSigs(); } else { $this->patterns = array(); } } /** * Get scan regexes from noc1 and add any user defined regexes, including descriptions, ID's and time added. * @todo add caching to this. * @throws Exception */ protected function setupSigs() { $sigData = $this->api->call('get_patterns', array(), array()); if(! (is_array($sigData) && isset($sigData['rules'])) ){ throw new Exception(__('Wordfence could not get the attack signature patterns from the scanning server.', 'wordfence')); } if (is_array($sigData['rules'])) { $wafPatterns = array(); $wafCommonStringIndexes = array(); foreach ($sigData['rules'] as $key => $signatureRow) { list(, , $pattern) = $signatureRow; if (empty($pattern)) { throw new Exception(__('Wordfence received malformed attack signature patterns from the scanning server.', 'wordfence')); } $logOnly = (isset($signatureRow[5]) && !empty($signatureRow[5])) ? $signatureRow[5] : false; $commonStringIndexes = (isset($signatureRow[8]) && is_array($signatureRow[8])) ? $signatureRow[8] : array(); if (@preg_match('/' . $pattern . '/iS', null) === false) { wordfence::status(1, 'error', __('A regex Wordfence received from its servers is invalid. The pattern is: ', 'wordfence') . esc_html($pattern)); unset($sigData['rules'][$key]); } else if (!$logOnly) { $wafPatterns[] = $pattern; $wafCommonStringIndexes[] = $commonStringIndexes; } } } $userSignatures = wfScanner::shared()->userScanSignatures(); foreach ($userSignatures as $s) { $sigData['rules'][] = $s; } $this->patterns = $sigData; if (isset($this->patterns['signatureUpdateTime'])) { wfConfig::set('signatureUpdateTime', $this->patterns['signatureUpdateTime']); } } /** * Return regular expression to exclude files or false if * there is no pattern * * @param $whichPatterns int Bitmask indicating which patterns to include. * @return array|boolean */ public static function getExcludeFilePattern($whichPatterns = self::EXCLUSION_PATTERNS_USER) { if (isset(self::$excludePatterns[$whichPatterns])) { return self::$excludePatterns[$whichPatterns]; } $exParts = array(); if (($whichPatterns & self::EXCLUSION_PATTERNS_USER) > 0) { $exParts = wfScanner::shared()->userExclusions(); } $exParts = array_filter($exParts); foreach ($exParts as $key => &$exPart) { $exPart = trim($exPart); if ($exPart === '*') { unset($exParts[$key]); continue; } $exPart = preg_quote($exPart, '/'); $exPart = preg_replace('/\\\\\*/', '.*', $exPart); } foreach (self::$builtinExclusions as $pattern) { if (($pattern['include'] & $whichPatterns) > 0) { $exParts[] = $pattern['pattern']; } } $exParts = array_filter($exParts); if (!empty($exParts)) { $chunks = array_chunk($exParts, 100); self::$excludePatterns[$whichPatterns] = array(); foreach ($chunks as $parts) { self::$excludePatterns[$whichPatterns][] = '/(?:' . implode('|', $parts) . ')$/i'; } } else { self::$excludePatterns[$whichPatterns] = false; } return self::$excludePatterns[$whichPatterns]; } /** * @param wfScanEngine $forkObj * @return array */ public function scan($forkObj){ $this->scanEngine = $forkObj; $loader = $this->scanEngine->getKnownFilesLoader(); if(! $this->startTime){ $this->startTime = microtime(true); } if(! $this->lastStatusTime){ $this->lastStatusTime = microtime(true); } //The site's own URL is checked in an earlier scan stage so we exclude it here. $options = $this->scanEngine->scanController()->scanOptions(); $hooverExclusions = array(); if ($options['scansEnabled_fileContentsGSB']) { $hooverExclusions = wordfenceURLHoover::standardExcludedHosts(); } $backtrackLimit = ini_get('pcre.backtrack_limit'); if (is_numeric($backtrackLimit)) { $backtrackLimit = (int) $backtrackLimit; if ($backtrackLimit > 10000000) { ini_set('pcre.backtrack_limit', 1000000); wordfence::status(4, 'info', sprintf(/* translators: PHP ini setting (number). */ __('Backtrack limit is %d, reducing to 1000000', 'wordfence'), $backtrackLimit)); } } else { $backtrackLimit = false; } $lastCount = 'whatever'; $excludePatterns = self::getExcludeFilePattern(self::EXCLUSION_PATTERNS_USER | self::EXCLUSION_PATTERNS_MALWARE); while (true) { $thisCount = wordfenceMalwareScanFile::countRemaining(); if ($thisCount == $lastCount) { //count should always be decreasing. If not, we're in an infinite loop so lets catch it early wordfence::status(4, 'info', __('Detected loop in malware scan, aborting.', 'wordfence')); break; } $lastCount = $thisCount; $files = wordfenceMalwareScanFile::files(); if (count($files) < 1) { wordfence::status(4, 'info', __('No files remaining for malware scan.', 'wordfence')); break; } foreach ($files as $record) { $file = $record->filename; if ($excludePatterns) { foreach ($excludePatterns as $pattern) { if (preg_match($pattern, $file)) { $record->markComplete(); continue 2; } } } if (!file_exists($this->path . $file)) { $record->markComplete(); continue; } $fileSum = $record->newMD5; $fileExt = ''; if(preg_match('/\.([a-zA-Z\d\-]{1,7})$/', $file, $matches)){ $fileExt = strtolower($matches[1]); } $isPHP = false; if(preg_match('/\.(?:php(?:\d+)?|phtml)(\.|$)/i', $file)) { $isPHP = true; } $isHTML = false; if(preg_match('/\.(?:html?)(\.|$)/i', $file)) { $isHTML = true; } $isJS = false; if(preg_match('/\.(?:js|svg)(\.|$)/i', $file)) { $isJS = true; } $dontScanForURLs = false; if (!$options['scansEnabled_highSense'] && (preg_match('/^(?:\.htaccess|wp\-config\.php)$/', $file) || $file === ini_get('user_ini.filename'))) { $dontScanForURLs = true; } $isScanImagesFile = false; if (!$isPHP && preg_match('/^(?:jpg|jpeg|mp3|avi|m4v|mov|mp4|gif|png|tiff?|svg|sql|js|tbz2?|bz2?|xz|zip|tgz|gz|tar|log|err\d+)$/', $fileExt)) { if ($options['scansEnabled_scanImages']) { $isScanImagesFile = true; } else if (!$isJS) { $record->markComplete(); continue; } } $isHighSensitivityFile = false; if (strtolower($fileExt) == 'sql') { if ($options['scansEnabled_highSense']) { $isHighSensitivityFile = true; } else { $record->markComplete(); continue; } } if(wfUtils::fileTooBig($this->path . $file)){ //We can't use filesize on 32 bit systems for files > 2 gigs //We should not need this check because files > 2 gigs are not hashed and therefore won't be received back as unknowns from the API server //But we do it anyway to be safe. wordfence::status(2, 'error', sprintf(/* translators: File path. */ __('Encountered file that is too large: %s - Skipping.', 'wordfence'), $file)); $record->markComplete(); continue; } wfUtils::beginProcessingFile($file); $fsize = @filesize($this->path . $file); //Checked if too big above $fsize = wfUtils::formatBytes($fsize); if (function_exists('memory_get_usage')) { wordfence::status(4, 'info', sprintf( /* translators: 1. File path. 2. File size. 3. Memory in bytes. */ __('Scanning contents: %1$s (Size: %2$s Mem: %3$s)', 'wordfence'), $file, $fsize, wfUtils::formatBytes(memory_get_usage(true)) )); } else { wordfence::status(4, 'info', sprintf( /* translators: 1. File path. 2. File size. */ __('Scanning contents: %1$s (Size: %2$s)', 'wordfence'), $file, $fsize )); } $stime = microtime(true); $fh = @fopen($this->path . $file, 'r'); if (!$fh) { $record->markComplete(); continue; } $totalRead = $record->stoppedOnPosition; if ($totalRead > 0) { if (@fseek($fh, $totalRead, SEEK_SET) !== 0) { $totalRead = 0; } } $dataForFile = $this->dataForFile($file); $first = true; while (!feof($fh)) { $data = fread($fh, 1 * 1024 * 1024); //read 1 megs max per chunk $readSize = wfUtils::strlen($data); $currentPosition = $totalRead; $totalRead += $readSize; if ($readSize < 1) { break; } $extraMsg = ''; if ($isScanImagesFile) { $extraMsg = ' ' . __('This file was detected because you have enabled "Scan images, binary, and other files as if they were executable", which treats non-PHP files as if they were PHP code. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence'); } else if ($isHighSensitivityFile) { $extraMsg = ' ' . __('This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence'); } $treatAsBinary = ($isPHP || $isHTML || $options['scansEnabled_scanImages']); if ($options['scansEnabled_fileContents']) { if ($treatAsBinary && wfUtils::strpos($data, '$allowed'.'Sites') !== false && wfUtils::strpos($data, "define ('VER"."SION', '1.") !== false && wfUtils::strpos($data, "TimThum"."b script created by") !== false) { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => $fileSum, 'shortMsg' => __('File is an old version of TimThumb which is vulnerable.', 'wordfence'), 'longMsg' => __('This file appears to be an old version of the TimThumb script which makes your system vulnerable to attackers. Please upgrade the theme or plugin that uses this or remove it.', 'wordfence') . $extraMsg, 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); break; } else { $allCommonStrings = $this->patterns['commonStrings']; $commonStringsFound = array_fill(0, count($allCommonStrings), null); //Lazily looked up below $regexMatched = false; foreach ($this->patterns['rules'] as $rule) { $stoppedOnSignature = $record->stoppedOnSignature; if (!empty($stoppedOnSignature)) { //Advance until we find the rule we stopped on last time //wordfence::status(4, 'info', "Searching for malware scan resume point (". $stoppedOnSignature . ") at rule " . $rule[0]); if ($stoppedOnSignature == $rule[0]) { $record->updateStoppedOn('', $currentPosition); wordfence::status(4, 'info', sprintf(/* translators: Malware signature rule ID. */ __('Resuming malware scan at rule %s.', 'wordfence'), $rule[0])); } continue; } $type = (isset($rule[4]) && !empty($rule[4])) ? $rule[4] : 'server'; $logOnly = (isset($rule[5]) && !empty($rule[5])) ? $rule[5] : false; $commonStringIndexes = (isset($rule[8]) && is_array($rule[8])) ? $rule[8] : array(); if ($type == 'server' && !$treatAsBinary) { continue; } else if (($type == 'both' || $type == 'browser') && $isJS) { $extraMsg = ''; } else if (($type == 'both' || $type == 'browser') && !$treatAsBinary) { continue; } if (!$first && substr($rule[2], 0, 1) == '^') { //wordfence::status(4, 'info', "Skipping malware signature ({$rule[0]}) because it only applies to the file beginning."); continue; } foreach ($commonStringIndexes as $i) { if ($commonStringsFound[$i] === null) { $s = $allCommonStrings[$i]; $commonStringsFound[$i] = (preg_match('/' . $s . '/i', $data) == 1); } if (!$commonStringsFound[$i]) { //wordfence::status(4, 'info', "Skipping malware signature ({$rule[0]}) due to short circuit."); continue 2; } } /*if (count($commonStringIndexes) > 0) { wordfence::status(4, 'info', "Processing malware signature ({$rule[0]}) because short circuit matched."); }*/ if (preg_match('/(' . $rule[2] . ')/iS', $data, $matches, PREG_OFFSET_CAPTURE)) { $customMessage = isset($rule[9]) ? $rule[9] : __('This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans.', 'wordfence'); $matchString = $matches[1][0]; $matchOffset = $matches[1][1]; $beforeString = wfWAFUtils::substr($data, max(0, $matchOffset - 100), $matchOffset - max(0, $matchOffset - 100)); $afterString = wfWAFUtils::substr($data, $matchOffset + strlen($matchString), 100); if (!$logOnly) { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => $fileSum, 'shortMsg' => sprintf(__('File appears to be malicious or unsafe: %s', 'wordfence'), esc_html($file)), 'longMsg' => $customMessage . ' ' . sprintf(__('The matched text in this file is: %s', 'wordfence'), '' . wfUtils::potentialBinaryStringToHTML((wfUtils::strlen($matchString) > 200 ? wfUtils::substr($matchString, 0, 200) . '...' : $matchString)) . '') . ' ' . '

' . sprintf(/* translators: Scan result type. */ __('The issue type is: %s', 'wordfence'), '' . esc_html($rule[7]) . '') . '
' . sprintf(/* translators: Scan result description. */ __('Description: %s', 'wordfence'), '' . esc_html($rule[3]) . '') . $extraMsg, 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); } $regexMatched = true; $this->scanEngine->recordMetric('malwareSignature', $rule[0], array('file' => substr($file, 0, 255), 'match' => substr($matchString, 0, 65535), 'before' => $beforeString, 'after' => $afterString, 'md5' => $record->newMD5, 'shac' => $record->SHAC), false); break; } if ($forkObj->shouldFork()) { $record->updateStoppedOn($rule[0], $currentPosition); fclose($fh); wordfence::status(4, 'info', sprintf(/* translators: Malware signature rule ID. */ __('Forking during malware scan (%s) to ensure continuity.', 'wordfence'), $rule[0])); $forkObj->fork(); //exits } } if ($regexMatched) { break; } } if ($treatAsBinary && $options['scansEnabled_highSense']) { $badStringFound = false; if (strpos($data, $this->patterns['badstrings'][0]) !== false) { for ($i = 1; $i < sizeof($this->patterns['badstrings']); $i++) { if (wfUtils::strpos($data, $this->patterns['badstrings'][$i]) !== false) { $badStringFound = $this->patterns['badstrings'][$i]; break; } } } if ($badStringFound) { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => $fileSum, 'shortMsg' => __('This file may contain malicious executable code: ', 'wordfence') . esc_html($file), 'longMsg' => sprintf(/* translators: Malware signature matched text. */ __('This file is a PHP executable file and contains the word "eval" (without quotes) and the word "%s" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence'), '' . esc_html($badStringFound) . ''), 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); break; } } } if (!$dontScanForURLs && $options['scansEnabled_fileContentsGSB']) { $found = $this->urlHoover->hoover($file, $data, $hooverExclusions); $this->scanEngine->scanController()->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found); } if ($totalRead > 2 * 1024 * 1024) { break; } $first = false; } fclose($fh); $this->totalFilesScanned++; if(microtime(true) - $this->lastStatusTime > 1){ $this->lastStatusTime = microtime(true); $this->writeScanningStatus(); } $record->markComplete(); $forkObj->forkIfNeeded(); } } $this->writeScanningStatus(); if ($options['scansEnabled_fileContentsGSB']) { wordfence::status(2, 'info', __('Asking Wordfence to check URLs against malware list.', 'wordfence')); $hooverResults = $this->urlHoover->getBaddies(); if($this->urlHoover->errorMsg){ $this->errorMsg = $this->urlHoover->errorMsg; if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); } return false; } $this->urlHoover->cleanup(); foreach($hooverResults as $file => $hresults){ $record = wordfenceMalwareScanFile::fileForPath($file); $dataForFile = $this->dataForFile($file, $this->path . $file); foreach($hresults as $result){ if(preg_match('/wfBrowscapCache\.php$/', $file)){ continue; } if (empty($result['URL'])) { continue; } if ($result['badList'] == 'goog-malware-shavar') { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => md5_file($this->path . $file), 'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file), 'longMsg' => sprintf( /* translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL. */ __('This file contains a suspected malware URL listed on Google\'s list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at Google Safe Browsing diagnostic page.', 'wordfence'), esc_html($this->patterns['word3']), esc_html($result['URL']), urlencode($result['URL']) ), 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'badURL' => $result['URL'], 'gsb' => 'goog-malware-shavar', 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); } else if ($result['badList'] == 'googpub-phish-shavar') { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => md5_file($this->path . $file), 'shortMsg' => __('File contains suspected phishing URL: ', 'wordfence') . esc_html($file), 'longMsg' => __('This file contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: ', 'wordfence') . esc_html($result['URL']), 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'badURL' => $result['URL'], 'gsb' => 'googpub-phish-shavar', 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); } else if ($result['badList'] == 'wordfence-dbl') { $this->addResult(array( 'type' => 'file', 'severity' => wfIssues::SEVERITY_CRITICAL, 'ignoreP' => $this->path . $file, 'ignoreC' => md5_file($this->path . $file), 'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file), 'longMsg' => __('This file contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: ', 'wordfence') . esc_html($result['URL']), 'data' => array_merge(array( 'file' => $file, 'shac' => $record->SHAC, 'badURL' => $result['URL'], 'gsb' => 'wordfence-dbl', 'highSense' => $options['scansEnabled_highSense'], 'betaSigs' => wfConfig::get('betaThreatDefenseFeed'), ), $dataForFile), )); } } } } wfUtils::endProcessingFile(); wordfence::status(4, 'info', __('Finalizing malware scan results', 'wordfence')); $hashesToCheck = array(); foreach ($this->results as $r) { $hashesToCheck[] = $r['data']['shac']; } if (count($hashesToCheck) > 0) { $safeFiles = $this->isSafeFile($hashesToCheck); foreach ($this->results as $index => $value) { if (in_array($value['data']['shac'], $safeFiles)) { unset($this->results[$index]); } } } if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); } return $this->results; } protected function writeScanningStatus() { wordfence::status(2, 'info', sprintf( /* translators: 1. Number of fils. 2. Seconds in millisecond precision. */ __('Scanned contents of %1$d additional files at %2$.2f per second', 'wordfence'), $this->totalFilesScanned, ($this->totalFilesScanned / (microtime(true) - $this->startTime)) )); } protected function addResult($result) { for ($i = 0; $i < sizeof($this->results); $i++) { if ($this->results[$i]['type'] == 'file' && $this->results[$i]['data']['file'] == $result['data']['file']) { if ($this->results[$i]['severity'] > $result['severity']) { $this->results[$i] = $result; //Overwrite with more severe results } return; } } //We don't have a results for this file so append $this->results[] = $result; } /** * Queries the is_safe_file endpoint. If provided an array, it does a bulk check and returns an array containing the * hashes that were marked as safe. If provided a string, it returns a boolean to indicate the safeness of the file. * * @param string|array $shac * @return array|bool */ private function isSafeFile($shac) { if(! $this->api){ $this->api = new wfAPI($this->apiKey, $this->wordpressVersion); } if (is_array($shac)) { $result = $this->api->call('is_safe_file', array(), array('multipleSHAC' => json_encode($shac))); if (isset($result['isSafe'])) { return $result['isSafe']; } return array(); } $result = $this->api->call('is_safe_file', array(), array('shac' => strtoupper($shac))); if(isset($result['isSafe']) && $result['isSafe'] == 1){ return true; } return false; } /** * @param string $file * @return array */ private function dataForFile($file, $fullPath = null) { $loader = $this->scanEngine->getKnownFilesLoader(); $data = array(); if ($isKnownFile = $loader->isKnownFile($file)) { if ($loader->isKnownCoreFile($file)) { $data['cType'] = 'core'; } else if ($loader->isKnownPluginFile($file)) { $data['cType'] = 'plugin'; list($itemName, $itemVersion, $cKey) = $loader->getKnownPluginData($file); $data = array_merge($data, array( 'cName' => $itemName, 'cVersion' => $itemVersion, 'cKey' => $cKey )); } else if ($loader->isKnownThemeFile($file)) { $data['cType'] = 'theme'; list($itemName, $itemVersion, $cKey) = $loader->getKnownThemeData($file); $data = array_merge($data, array( 'cName' => $itemName, 'cVersion' => $itemVersion, 'cKey' => $cKey )); } } $suppressDelete = false; $canRegenerate = false; if ($fullPath !== null) { $bootstrapPath = wordfence::getWAFBootstrapPath(); $htaccessPath = get_home_path() . '.htaccess'; $userIni = ini_get('user_ini.filename'); $userIniPath = false; if ($userIni) { $userIniPath = get_home_path() . $userIni; } if ($fullPath == $htaccessPath) { $suppressDelete = true; } else if ($userIniPath !== false && $fullPath == $userIniPath) { $suppressDelete = true; } else if ($fullPath == $bootstrapPath) { $suppressDelete = true; $canRegenerate = true; } } $localFile = realpath($this->path . $file); $isWPConfig = $localFile === ABSPATH . 'wp-config.php'; $data['canDiff'] = $isKnownFile; $data['canFix'] = $isKnownFile && !$isWPConfig; $data['canDelete'] = !$isKnownFile && !$canRegenerate && !$suppressDelete && !$isWPConfig; $data['canRegenerate'] = $canRegenerate && !$isWPConfig; $data['wpconfig'] = $isWPConfig; return $data; } } /** * Convenience class for interfacing with the wfFileMods table. * * @property string $filename * @property string $filenameMD5 * @property string $newMD5 * @property string $SHAC * @property string $stoppedOnSignature * @property string $stoppedOnPosition * @property string $isSafeFile */ class wordfenceMalwareScanFile { protected $_filename; protected $_filenameMD5; protected $_newMD5; protected $_shac; protected $_stoppedOnSignature; protected $_stoppedOnPosition; protected $_isSafeFile; protected static function getDB() { static $db = null; if ($db === null) { $db = new wfDB(); } return $db; } public static function countRemaining() { $db = self::getDB(); return $db->querySingle("SELECT COUNT(*) FROM " . wfDB::networkTable('wfFileMods') . " WHERE oldMD5 != newMD5 AND knownFile = 0"); } public static function files($limit = 500) { $db = self::getDB(); $result = $db->querySelect("SELECT filename, filenameMD5, HEX(newMD5) AS newMD5, HEX(SHAC) AS SHAC, stoppedOnSignature, stoppedOnPosition, isSafeFile FROM " . wfDB::networkTable('wfFileMods') . " WHERE oldMD5 != newMD5 AND knownFile = 0 limit %d", $limit); $files = array(); foreach ($result as $row) { $files[] = new wordfenceMalwareScanFile($row['filename'], $row['filenameMD5'], $row['newMD5'], $row['SHAC'], $row['stoppedOnSignature'], $row['stoppedOnPosition'], $row['isSafeFile']); } return $files; } public static function fileForPath($file) { $db = self::getDB(); $row = $db->querySingleRec("SELECT filename, filenameMD5, HEX(newMD5) AS newMD5, HEX(SHAC) AS SHAC, stoppedOnSignature, stoppedOnPosition, isSafeFile FROM " . wfDB::networkTable('wfFileMods') . " WHERE filename = '%s'", $file); return new wordfenceMalwareScanFile($row['filename'], $row['filenameMD5'], $row['newMD5'], $row['SHAC'], $row['stoppedOnSignature'], $row['stoppedOnPosition'], $row['isSafeFile']); } public function __construct($filename, $filenameMD5, $newMD5, $shac, $stoppedOnSignature, $stoppedOnPosition, $isSafeFile) { $this->_filename = $filename; $this->_filenameMD5 = $filenameMD5; $this->_newMD5 = $newMD5; $this->_shac = strtoupper($shac); $this->_stoppedOnSignature = $stoppedOnSignature; $this->_stoppedOnPosition = $stoppedOnPosition; $this->_isSafeFile = $isSafeFile; } public function __get($key) { switch ($key) { case 'filename': return $this->_filename; case 'filenameMD5': return $this->_filenameMD5; case 'newMD5': return $this->_newMD5; case 'SHAC': return $this->_shac; case 'stoppedOnSignature': return $this->_stoppedOnSignature; case 'stoppedOnPosition': return $this->_stoppedOnPosition; case 'isSafeFile': return $this->_isSafeFile; } } public function __toString() { return "Record [filename: {$this->filename}, filenameMD5: {$this->filenameMD5}, newMD5: {$this->newMD5}, stoppedOnSignature: {$this->stoppedOnSignature}, stoppedOnPosition: {$this->stoppedOnPosition}]"; } public function markComplete() { $db = self::getDB(); $db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET oldMD5 = newMD5 WHERE filenameMD5 = '%s'", $this->filenameMD5); //A way to mark as scanned so that if we come back from a sleep we don't rescan this one. } public function updateStoppedOn($signature, $position) { $this->_stoppedOnSignature = $signature; $this->_stoppedOnPosition = $position; $db = self::getDB(); $db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET stoppedOnSignature = '%s', stoppedOnPosition = %d WHERE filenameMD5 = '%s'", $this->stoppedOnSignature, $this->stoppedOnPosition, $this->filenameMD5); } public function markSafe() { $db = self::getDB(); $db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET isSafeFile = '1' WHERE filenameMD5 = '%s'", $this->filenameMD5); $this->isSafeFile = '1'; } public function markUnsafe() { $db = self::getDB(); $db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET isSafeFile = '0' WHERE filenameMD5 = '%s'", $this->filenameMD5); $this->isSafeFile = '0'; } } lib/email_unsubscribeRequest.php000064400000001727152331132450013075 0ustar00 %1$s requested an alert unsubscribe link for the website %3$s.', 'wordfence'), esc_html($IP), esc_attr($siteURL), esc_html($siteName)), array('a'=>array('href'=>array()), 'b'=>array())); ?>





Click here to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt), array('a'=>array('href'=>array(), 'target'=>array()))); ?>lib/diffResult.php000064400000005465152331132450010143 0ustar00 ?ver=' type='text/css' media='all' />

"; } else if($cType == 'theme'){ echo esc_html__('Theme File', 'wordfence') . ""; } else if($cType == 'plugin'){ echo esc_html__('Plugin File', 'wordfence') . ""; } else { echo esc_html__('Unknown Type', 'wordfence') . ""; } ?>
" . esc_html__('Theme Name:', 'wordfence') . "" . wp_kses($_GET['cName'], array()) . "
" . esc_html__('Theme Version:', 'wordfence') . "" . wp_kses($_GET['cVersion'], array()) . "
" . esc_html__('Plugin Name:', 'wordfence') . "" . wp_kses($_GET['cName'], array()) . "
" . esc_html__('Plugin Version:', 'wordfence') . "" . wp_kses($_GET['cVersion'], array()) . "
" . esc_html__('There are no differences between the original file and the file in the repository.', 'wordfence'); } ?>
Wordfence.com for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?>
lib/menu_options.php000064400000057570152331132450010557 0ustar00countriesNetwork); $firewall = new wfFirewall(); $scanner = wfScanner::shared(); $config = $waf->getStorageEngine(); $wafURL = wfPage::pageURL(wfPage::PAGE_FIREWALL); $wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'); $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend'); /** @var array $wafData */ $backPage = new wfPage(wfPage::PAGE_FIREWALL); if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) { $backPage = new wfPage($_GET['source']); } ?>
__('License Key', 'wordfence'), 'wf-option-displayTopLevelOptions' => __('Display All Options menu item', 'wordfence'), 'wf-option-displayTopLevelBlocking' => __('Display Blocking menu item', 'wordfence'), 'wf-option-displayTopLevelLiveTraffic' => __('Display Live Traffic menu item', 'wordfence'), 'wf-option-autoUpdate' => __('Update Wordfence automatically when a new version is released?', 'wordfence'), 'wf-option-alertEmails' => __('Where to email alerts', 'wordfence'), 'wf-option-howGetIPs' => __('How does Wordfence get IPs', 'wordfence'), 'wf-option-howGetIPs-trusted-proxies' => __('Trusted Proxies', 'wordfence'), 'wf-option-other-hideWPVersion' => __('Hide WordPress version', 'wordfence'), 'wf-option-disableCodeExecutionUploads' => __('Disable Code Execution for Uploads directory', 'wordfence'), 'wf-option-liveActivityPauseEnabled' => __('Pause live updates when window loses focus', 'wordfence'), 'wf-option-actUpdateInterval' => __('Update interval in seconds', 'wordfence'), 'wf-option-other-bypassLitespeedNoabort' => __('Bypass the LiteSpeed "noabort" check', 'wordfence'), 'wf-option-deleteTablesOnDeact' => __('Delete Wordfence tables and data on deactivation', 'wordfence'), 'wf-option-notification-updatesNeeded' => __('Updates Needed (Plugin, Theme, or Core)', 'wordfence'), 'wf-option-notification-securityAlerts' => __('Security Alerts', 'wordfence'), 'wf-option-notification-promotions' => __('Promotions', 'wordfence'), 'wf-option-notification-blogHighlights' => __('Blog Highlights', 'wordfence'), 'wf-option-notification-productUpdates' => __('Product Updates', 'wordfence'), 'wf-option-notification-scanStatus' => __('Scan Status', 'wordfence'), 'wf-option-alertOn-update' => __('Email me when Wordfence is automatically updated', 'wordfence'), 'wf-option-alertOn-wordfenceDeactivated' => __('Email me if Wordfence is deactivated', 'wordfence'), 'wf-option-alertOn-wafDeactivated' => __('Email me if the Wordfence Web Application Firewall is turned off', 'wordfence'), 'wf-option-alertOn-scanIssues' => __('Alert me with scan results of this severity level or greater', 'wordfence'), 'wf-option-alertOn-block' => __('Alert when an IP address is blocked', 'wordfence'), 'wf-option-alertOn-loginLockout' => __('Alert when someone is locked out from login', 'wordfence'), 'wf-option-alertOn-lostPasswdForm' => __('Alert when the "lost password" form is used for a valid user', 'wordfence'), 'wf-option-alertOn-adminLogin' => __('Alert me when someone with administrator access signs in', 'wordfence'), 'wf-option-alertOn-firstAdminLoginOnly' => __('Only alert me when that administrator signs in from a new device', 'wordfence'), 'wf-option-alertOn-nonAdminLogin' => __('Alert me when a non-admin user signs in', 'wordfence'), 'wf-option-alertOn-firstNonAdminLoginOnly' => __('Only alert me when that user signs in from a new device', 'wordfence'), 'wf-option-wafAlertOnAttacks' => __('Alert me when there\'s a large increase in attacks detected on my site', 'wordfence'), 'wf-option-alert-maxHourly' => __('Maximum email alerts to send per hour', 'wordfence'), 'wf-option-email-summary-enabled' => __('Enable email summary', 'wordfence'), 'wf-option-email-summary-excluded-directories' => __('List of directories to exclude from recently modified file list', 'wordfence'), 'wf-option-email-summary-dashboard-widget-enabled' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'), 'wf-option-wafStatus' => __('Web Application Firewall Status', 'wordfence'), 'wf-option-protectionMode' => __('Web Application Firewall Protection Level', 'wordfence'), 'wf-option-disableWAFBlacklistBlocking' => __('Real-Time IP Blocklist', 'wordfence'), 'wf-option-disableWAFIPBlocking' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'), 'wf-option-whitelisted' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'), 'wf-option-whitelistedServices' => __('Allowlisted services', 'wordfence'), 'wf-option-bannedURLs' => __('Immediately block IPs that access these URLs', 'wordfence'), 'wf-option-wafAlertWhitelist' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'), 'wf-option-wafRules' => __('Web Application Firewall Rules', 'wordfence'), 'wf-option-loginSecurityEnabled' => __('Enable brute force protection', 'wordfence'), 'wf-option-loginSec-maxFailures' => __('Lock out after how many login failures', 'wordfence'), 'wf-option-loginSec-maxForgotPasswd' => __('Lock out after how many forgot password attempts', 'wordfence'), 'wf-option-loginSec-countFailMins' => __('Count failures over what time period', 'wordfence'), 'wf-option-loginSec-lockoutMins' => __('Amount of time a user is locked out', 'wordfence'), 'wf-option-loginSec-lockInvalidUsers' => __('Immediately lock out invalid usernames', 'wordfence'), 'wf-option-loginSec-userBlacklist' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'), 'wf-option-loginSec-strongPasswds-enabled' => __('Enforce strong passwords', 'wordfence'), 'wf-option-loginSec-breachPasswds-enabled' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'), 'wf-option-loginSec-maskLoginErrors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'), 'wf-option-loginSec-blockAdminReg' => __('Prevent users registering "admin" username if it doesn\'t exist', 'wordfence'), 'wf-option-loginSec-disableAuthorScan' => __('Prevent discovery of usernames through "/?author=N" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'), 'wf-option-loginSec-disableApplicationPasswords' => __('Disable WordPress application passwords', 'wordfence'), 'wf-option-other-blockBadPOST' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'), 'wf-option-blockCustomText' => __('Custom text shown on block pages', 'wordfence'), 'wf-option-other-pwStrengthOnUpdate' => __('Check password strength on profile update', 'wordfence'), 'wf-option-other-WFNet' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'), 'wf-option-firewallEnabled' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'), 'wf-option-neverBlockBG' => __('How should we treat Google\'s crawlers', 'wordfence'), 'wf-option-maxGlobalRequests' => __('If anyone\'s requests exceed', 'wordfence'), 'wf-option-maxRequestsCrawlers' => __('If a crawler\'s page views exceed', 'wordfence'), 'wf-option-max404Crawlers' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'), 'wf-option-maxRequestsHumans' => __('If a human\'s page views exceed', 'wordfence'), 'wf-option-max404Humans' => __('If a human\'s pages not found (404s) exceed', 'wordfence'), 'wf-option-blockedTime' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'), 'wf-option-allowed404s' => __('Allowlisted 404 URLs', 'wordfence'), 'wf-option-wafWhitelist' => __('Web Application Firewall Allowlisted URLs', 'wordfence'), 'wf-option-ajaxWatcherDisabled-front' => __('Monitor background requests from an administrator\'s web browser for false positives (Front-end Website)', 'wordfence'), 'wf-option-ajaxWatcherDisabled-admin' => __('Monitor background requests from an administrator\'s web browser for false positives (Admin Panel)', 'wordfence'), 'wf-option-cbl-action' => __('What to do when we block someone visiting from a blocked country', 'wordfence'), 'wf-option-cbl-redirURL' => __('URL to redirect blocked countries to', 'wordfence'), 'wf-option-cbl-loggedInBlocked' => __('Block countries even if they are logged in', 'wordfence'), 'wf-option-cbl-bypassRedirURL' => __('If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking', 'wordfence'), 'wf-option-cbl-bypassViewURL' => __('If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country', 'wordfence'), 'wf-option-scheduledScansEnabled' => __('Schedule Wordfence Scans', 'wordfence'), 'wf-option-scanType' => __('Scan Type', 'wordfence'), 'wf-option-scansEnabled-checkGSB' => __('Check if this website is on a domain blocklist', 'wordfence'), 'wf-option-spamvertizeCheck' => __('Check if this website is being "Spamvertised"', 'wordfence'), 'wf-option-checkSpamIP' => __('Check if this website IP is generating spam', 'wordfence'), 'wf-option-scansEnabled-checkHowGetIPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'), 'wf-option-scansEnabled-checkReadableConfig' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'), 'wf-option-scansEnabled-suspectedFiles' => __('Scan for publicly accessible quarantined files', 'wordfence'), 'wf-option-scansEnabled-core' => __('Scan core files against repository versions for changes', 'wordfence'), 'wf-option-scansEnabled-themes' => __('Scan theme files against repository versions for changes', 'wordfence'), 'wf-option-scansEnabled-plugins' => __('Scan plugin files against repository versions for changes', 'wordfence'), 'wf-option-scansEnabled-coreUnknown' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'), 'wf-option-scansEnabled-malware' => __('Scan for signatures of known malicious files', 'wordfence'), 'wf-option-scansEnabled-fileContents' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'), 'wf-option-scansEnabled-fileContentsGSB' => __('Scan file contents for malicious URLs', 'wordfence'), 'wf-option-scansEnabled-posts' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'), 'wf-option-scansEnabled-comments' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'), 'wf-option-scansEnabled-suspiciousOptions' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'), 'wf-option-scansEnabled-oldVersions' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'), 'wf-option-scansEnabled-suspiciousAdminUsers' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'), 'wf-option-scansEnabled-passwds' => __('Check the strength of passwords', 'wordfence'), 'wf-option-scansEnabled-diskSpace' => __('Monitor disk space', 'wordfence'), 'wf-option-scansEnabled-wafStatus' => __('Monitor Web Application Firewall status', 'wordfence'), 'wf-option-other-scanOutside' => __('Scan files outside your WordPress installation', 'wordfence'), 'wf-option-scansEnabled-scanImages' => __('Scan images, binary, and other files as if they were executable', 'wordfence'), 'wf-option-lowResourceScansEnabled' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'), 'wf-option-scan-maxIssues' => __('Limit the number of issues sent in the scan results email', 'wordfence'), 'wf-option-scan-maxDuration' => __('Time limit that a scan can run in seconds', 'wordfence'), 'wf-option-maxMem' => __('How much memory should Wordfence request when scanning', 'wordfence'), 'wf-option-maxExecutionTime' => __('Maximum execution time for each scan stage', 'wordfence'), 'wf-option-scan-exclude' => __('Exclude files from scan that match these wildcard patterns', 'wordfence'), 'wf-option-scan-include-extra' => __('Additional scan signatures', 'wordfence'), 'wf-option-liveTrafficEnabled' => __('Traffic logging mode (Live Traffic)', 'wordfence'), 'wf-option-liveTraf-ignorePublishers' => __('Don\'t log signed-in users with publishing access', 'wordfence'), 'wf-option-liveTraf-ignoreUsers' => __('List of comma separated usernames to ignore', 'wordfence'), 'wf-option-liveTraf-ignoreIPs' => __('List of comma separated IP addresses to ignore', 'wordfence'), 'wf-option-liveTraf-ignoreUA' => __('Browser user-agent to ignore', 'wordfence'), 'wf-option-liveTraf-maxRows' => __('Amount of Live Traffic data to store (number of rows)', 'wordfence'), 'wf-option-liveTraf-maxAge' => __('Maximum days to keep Live Traffic data', 'wordfence'), 'wf-option-exportOptions' => __('Export this site\'s Wordfence options for import on another site', 'wordfence'), 'wf-option-importOptions' => __('Import Wordfence options from another site using a token', 'wordfence'), ); if (wfCredentialsController::useLegacy2FA()) { $indexOptions['wf-option-loginSec-requireAdminTwoFactor'] = __('Require Cellphone Sign-in for all Administrators', 'wordfence'); $indexOptions['wf-option-loginSec-enableSeparateTwoFactor'] = __('Enable Separate Prompt for Two Factor Code', 'wordfence'); } $indexOptions = array_merge($indexOptions, wfModuleController::shared()->optionIndexes); echo wfView::create('options/block-all-options-controls', array( 'showIcon' => false, 'indexOptions' => $indexOptions, 'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_ALL, 'restoreDefaultsMessage' => __('Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'), ))->render(); ?>
render(); echo wfView::create('onboarding/banner')->render(); } else if (wfConfig::get('touppPromptNeeded')) { echo wfView::create('gdpr/disabled-overlay')->render(); echo wfView::create('gdpr/banner')->render(); } ?>
__('All Options', 'wordfence'), 'stateKeys' => $stateKeys, 'showIcon' => true, ))->render(); ?>

__('Wordfence Global Options', 'wordfence'), 'showIcon' => false, ))->render(); echo wfView::create('dashboard/options-group-license', array( 'stateKey' => 'wf-unified-global-options-license', ))->render(); echo wfView::create('dashboard/options-group-view-customization', array( 'stateKey' => 'wf-unified-global-options-view-customization', ))->render(); echo wfView::create('dashboard/options-group-general', array( 'stateKey' => 'wf-unified-global-options-general', ))->render(); echo wfView::create('dashboard/options-group-dashboard', array( 'stateKey' => 'wf-unified-global-options-dashboard', ))->render(); echo wfView::create('dashboard/options-group-alert', array( 'stateKey' => 'wf-unified-global-options-alert', ))->render(); echo wfView::create('dashboard/options-group-email-summary', array( 'stateKey' => 'wf-unified-global-options-email-summary', ))->render(); ?> __('Firewall Options', 'wordfence'), 'showIcon' => false, ))->render(); echo wfView::create('waf/options-group-basic-firewall', array( 'firewall' => $firewall, 'waf' => $waf, 'stateKey' => 'wf-unified-waf-options-basic', ))->render(); echo wfView::create('waf/options-group-advanced-firewall', array( 'firewall' => $firewall, 'waf' => $waf, 'stateKey' => 'wf-unified-waf-options-advanced', ))->render(); echo wfView::create('waf/options-group-brute-force', array( 'firewall' => $firewall, 'waf' => $waf, 'stateKey' => 'wf-unified-waf-options-bruteforce', ))->render(); echo wfView::create('waf/options-group-rate-limiting', array( 'firewall' => $firewall, 'waf' => $waf, 'stateKey' => 'wf-unified-waf-options-ratelimiting', ))->render(); echo wfView::create('waf/options-group-whitelisted', array( 'firewall' => $firewall, 'waf' => $waf, 'stateKey' => 'wf-unified-waf-options-whitelisted', ))->render(); ?> __('Blocking Options', 'wordfence'), 'showIcon' => false, ))->render(); echo wfView::create('blocking/options-group-advanced-country', array( 'stateKey' => 'wf-unified-blocking-options-country', ))->render(); ?> __('Scan Options', 'wordfence'), 'showIcon' => false, ))->render(); echo wfView::create('scanner/options-group-scan-schedule', array( 'scanner' => $scanner, 'stateKey' => 'wf-unified-scanner-options-schedule', ))->render(); echo wfView::create('scanner/options-group-basic', array( 'scanner' => $scanner, 'stateKey' => 'wf-unified-scanner-options-basic', ))->render(); echo wfView::create('scanner/options-group-general', array( 'scanner' => $scanner, 'stateKey' => 'wf-unified-scanner-options-general', ))->render(); echo wfView::create('scanner/options-group-performance', array( 'scanner' => $scanner, 'stateKey' => 'wf-unified-scanner-options-performance', ))->render(); echo wfView::create('scanner/options-group-advanced', array( 'scanner' => $scanner, 'stateKey' => 'wf-unified-scanner-options-custom', ))->render(); ?> __('Tool Options', 'wordfence'), 'showIcon' => false, ))->render(); if (wfCredentialsController::useLegacy2FA()) { echo wfView::create('tools/options-group-2fa', array( 'stateKey' => 'wf-unified-2fa-options', ))->render(); } echo wfView::create('tools/options-group-live-traffic', array( 'stateKey' => 'wf-unified-live-traffic-options', 'hideShowMenuItem' => true, ))->render(); ?>
optionBlocks; foreach ($moduleOptionBlocks as $b) { echo $b; } ?>
lib/wfVersionCheckController.php000064400000044374152331132450013022 0ustar00checkPHPVersion() == self::VERSION_COMPATIBLE) && ($this->checkOpenSSLVersion() == self::VERSION_COMPATIBLE) && ($this->checkWordPressVersion() == self::VERSION_COMPATIBLE); } /** * Does the same thing as checkVersions but also triggers display of the corresponding warnings. * * @return bool */ public function checkVersionsAndWarn() { //PHP $php = $this->checkPHPVersion(); if ($php == self::VERSION_DEPRECATED) { $this->_alertEmail( 'phpVersionCheckDeprecationEmail_' . self::PHP_DEPRECATING, __('PHP version too old', 'wordfence'), sprintf( /* translators: 1. PHP version. 2. PHP version. */ __('Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), phpversion(), self::PHP_DEPRECATING ) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP)) ); $this->_adminNotice( 'phpVersionCheckDeprecationNotice_' . self::PHP_DEPRECATING, 'phpVersionCheck', wp_kses(sprintf( /* translators: 1. PHP version. 2. PHP version. */ __('WARNING: Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), phpversion(), self::PHP_DEPRECATING ), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' ' . esc_html__('Learn More', 'wordfence') . '' ); } else if ($php == self::VERSION_UNSUPPORTED) { $this->_alertEmail( 'phpVersionCheckUnsupportedEmail_' . self::PHP_MINIMUM, __('PHP version too old', 'wordfence'), sprintf( /* translators: 1. PHP version. 2. PHP version. */ __('Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), phpversion(), self::PHP_DEPRECATING ) . ' ' . sprintf(/* translators: Support URL. */ __('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP)) ); $this->_adminNotice( 'phpVersionCheckUnsupportedNotice_' . self::PHP_MINIMUM, 'phpVersionCheck', wp_kses(sprintf( /* translators: 1. PHP version. 2. PHP version. */ __('WARNING: Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), phpversion(), self::PHP_DEPRECATING ), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' ' . esc_html__('Learn More', 'wordfence') . '' ); } else { wfAdminNoticeQueue::removeAdminNotice(false, 'phpVersionCheck'); } if (wfAdminNoticeQueue::hasNotice('phpVersionCheck')) { return false; } //OpenSSL wfAdminNoticeQueue::removeAdminNotice(false, 'opensslVersionCheck'); /*$openssl = $this->checkOpenSSLVersion(); if ($openssl == self::VERSION_DEPRECATED) { $this->_alertEmail( 'opensslVersionCheckDeprecationEmail_' . self::OPENSSL_DEPRECATING, __('OpenSSL version too old', 'wordfence'), sprintf(__('Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL)) ); $this->_adminNotice( 'opensslVersionCheckDeprecationNotice_' . self::OPENSSL_DEPRECATING, 'opensslVersionCheck', sprintf(__('WARNING: Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' ' . __('Learn More', 'wordfence') . '' ); return false; } else if ($openssl == self::VERSION_UNSUPPORTED) { $this->_alertEmail( 'opensslVersionCheckUnsupportedEmail_' . self::OPENSSL_MINIMUM, __('OpenSSL version too old', 'wordfence'), sprintf(__('Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL)) ); $this->_adminNotice( 'opensslVersionCheckUnsupportedNotice_' . self::OPENSSL_MINIMUM, 'opensslVersionCheck', sprintf(__('WARNING: Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' ' . __('Learn More', 'wordfence') . '' ); return false; } else { wfAdminNoticeQueue::removeAdminNotice(false, 'opensslVersionCheck'); } if (wfAdminNoticeQueue::hasNotice('opensslVersionCheck')) { return false; }*/ //WordPress $wordpress = $this->checkWordPressVersion(); if ($wordpress == self::VERSION_DEPRECATED) { require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */ $this->_alertEmail( 'wordpressVersionCheckDeprecationEmail_' . self::WORDPRESS_DEPRECATING, __('WordPress version too old', 'wordfence'), sprintf( /* translators: 1. WordPress version. 2. WordPress version. */ __('Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING ) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS)) ); $this->_adminNotice( 'wordpressVersionCheckDeprecationNotice_' . self::WORDPRESS_DEPRECATING, 'wordpressVersionCheck', wp_kses(sprintf( /* translators: 1. WordPress version. 2. WordPress version. */ __('WARNING: Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING ), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' ' . esc_html__('Learn More', 'wordfence') . '' ); } else if ($wordpress == self::VERSION_UNSUPPORTED) { require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */ $this->_alertEmail( 'wordpressVersionCheckUnsupportedEmail_' . self::WORDPRESS_MINIMUM, __('WordPress version too old', 'wordfence'), sprintf( /* translators: 1. WordPress version. 2. WordPress version. */ __('Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS)) ); $this->_adminNotice( 'wordpressVersionCheckUnsupportedNotice_' . self::WORDPRESS_MINIMUM, 'wordpressVersionCheck', wp_kses(sprintf( /* translators: 1. WordPress version. 2. WordPress version. */ __('WARNING: Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' ' . esc_html__('Learn More', 'wordfence') . '' ); } else { wfAdminNoticeQueue::removeAdminNotice(false, 'wordpressVersionCheck'); } if (wfAdminNoticeQueue::hasNotice('wordpressVersionCheck')) { return false; } return true; } private function _alertEmail($checkKey, $title, $body) { if (!wfConfig::get($checkKey)) { wordfence::alert($title, $body, wfUtils::getIP()); wfConfig::set($checkKey, true); } } private function _adminNotice($checkKey, $noticeKey, $message) { if (!wfConfig::get($checkKey)) { wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, $message, $noticeKey); wfConfig::set($checkKey, true); } } /** * Returns whether or not the PHP version meets our minimum requirement or is a version being deprecated. * * @return string One of the VERSION_ constants. */ public function checkPHPVersion() { if (version_compare(phpversion(), self::PHP_DEPRECATING, '>=')) { return self::VERSION_COMPATIBLE; } if (self::PHP_DEPRECATING != self::PHP_MINIMUM && version_compare(phpversion(), self::PHP_MINIMUM, '>=')) { return self::VERSION_DEPRECATED; } return self::VERSION_UNSUPPORTED; } /** * Returns whether or not the OpenSSL version meets our minimum requirement or is a version being deprecated. * * @return string One of the VERSION_ constants. */ public function checkOpenSSLVersion() { if (self::openssl_version_compare(self::OPENSSL_DEPRECATING) <= 0) { return self::VERSION_COMPATIBLE; } if (self::OPENSSL_DEPRECATING != self::OPENSSL_MINIMUM && self::openssl_version_compare(self::OPENSSL_MINIMUM) <= 0) { return self::VERSION_DEPRECATED; } return self::VERSION_UNSUPPORTED; } /** * Returns whether or not the WordPress version meets our minimum requirement or is a version being deprecated. * * @return string One of the VERSION_ constants. */ public function checkWordPressVersion() { require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */ if (version_compare($wp_version, self::WORDPRESS_DEPRECATING, '>=')) { return self::VERSION_COMPATIBLE; } if (self::WORDPRESS_DEPRECATING != self::WORDPRESS_MINIMUM && version_compare($wp_version, self::WORDPRESS_MINIMUM, '>=')) { return self::VERSION_DEPRECATED; } return self::VERSION_UNSUPPORTED; } /** * Utility Functions */ /** * Returns whether or not the OpenSSL version is before, after, or equal to the equivalent text version string. * * @param string $compareVersion * @param int $openSSLVersion A version number in the format OpenSSL uses. * @param bool $allowDevBeta If true, dev and beta versions of $compareVersion are treated as equivalent to release versions despite having a lower version number. * @return bool|int Returns -1 if $compareVersion is earlier, 0 if equal, 1 if later, and false if not a valid version string. */ public static function openssl_version_compare($compareVersion, $openSSLVersion = OPENSSL_VERSION_NUMBER, $allowDevBeta = true) { if (preg_match('/^(\d+)\.(\d+)\.(\d+)([a-z]*)((?:-dev|-beta\d\d?)?)/i', $compareVersion, $matches)) { $primary = 0; $major = 0; $minor = 0; $fixLetterIndexes = 0; $patch = self::OPENSSL_RELEASE; if (isset($matches[1])) { $primary = (int) $matches[1]; } if (isset($matches[2])) { $major = (int) $matches[2]; } if (isset($matches[3])) { $minor = (int) $matches[3]; } if (isset($matches[4]) && !empty($matches[4])) { $letters = str_split($matches[4]); foreach ($letters as $l) { $fixLetterIndexes += strpos('abcdefghijklmnopqrstuvwxyz', strtolower($l)) + 1; } } if (isset($matches[5]) && !empty($matches[5])) { if (preg_match('/^-beta(\d+)$/i', $matches[5], $betaMatches)) { $patch = (int) $betaMatches[1]; } else { $patch = self::OPENSSL_DEV; } } $compareOpenSSLVersion = self::openssl_make_number_version($primary, $major, $minor, $fixLetterIndexes, $patch); if ($allowDevBeta) { $compareOpenSSLVersion = $compareOpenSSLVersion >> 4; $openSSLVersion = $openSSLVersion >> 4; } if ($compareOpenSSLVersion < $openSSLVersion) { return -1; } else if ($compareOpenSSLVersion == $openSSLVersion) { return 0; } return 1; } return false; } /** * Builds a number that can be compared to OPENSSL_VERSION_NUMBER from the parameters given. This is a modified * version of the macro in the OpenSSL source. * * @param int $primary The '1' in 1.0.2g. * @param int $major The '0' in 1.0.2g. * @param int $minor The '2' in 1.0.2g. * @param int $fixLetterIndexes The 'g' in 1.0.2g. This can potentially be multiple letters, in which case, all of the indexes are added. * @param int $patch * @return int */ public static function openssl_make_number_version($primary, $major, $minor, $fixLetterIndexes = 0, $patch = 0) { return ((($primary & 0xff) << 28) + (($major & 0xff) << 20) + (($minor & 0xff) << 12) + (($fixLetterIndexes & 0xff) << 4) + $patch); } /** * Builds a text version of the OpenSSL version from a number-formatted one. * * @param int $number * @return string */ public static function openssl_make_text_version($number = OPENSSL_VERSION_NUMBER) { $primary = (($number >> 28) & 0xff); $major = (($number >> 20) & 0xff); $minor = (($number >> 12) & 0xff); $fix = (($number >> 4) & 0xff); $patch = ($number & 0xf); //0 is dev, 1-14 are betas, 15 is release $alphabet = str_split('abcdefghijklmnopqrstuvwxyz'); $fixLetters = ''; while ($fix > 26) { $fixLetters .= 'z'; $fix -= 26; } if (array_key_exists($fix - 1, $alphabet)) { $fixLetters .= $alphabet[$fix - 1]; } $version = "{$primary}.{$major}.{$minor}{$fixLetters}"; if ($patch == self::OPENSSL_DEV) { $version .= '-dev'; } else if ($patch == self::OPENSSL_RELEASE) { //Do nothing } else { $version .= '-beta' . $patch; } return $version; } }lib/wfLockedOut.php000064400000021774152331132450010263 0ustar00 <?php esc_html_e('You are temporarily locked out', 'wordfence'); ?>



\s*/i', '', $contents); $contents = preg_replace('/^\s*/i', '', $contents); $contents = preg_replace('/

Documentation', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>

.
.

lib/wfUtils.php000064400000307165152331132450007473 0ustar00getTimestamp() + $secs)); //Have to do it this way because of PHP 5.2 $then = new DateTime($dtStr, $utc); $diff = $then->diff($now); $years = $diff->y; $months = $diff->m; $days = $diff->d; $hours = $diff->h; $minutes = $diff->i; } else { $years = 0; $months = floor($secs / (86400 * 30)); $days = floor($secs / 86400); $hours = floor($secs / 3600); $minutes = floor($secs / 60); if ($months) { $days -= $months * 30; } else if ($days) { $hours -= $days * 24; } else if ($hours) { $minutes -= $hours * 60; } } if ($years) { return $years . ' ' . _n('year', 'years', $years, 'wordfence') . (is_numeric($months) ? ' ' . $months . ' ' . _n('month', 'months', $months, 'wordfence') : ''); } else if ($months) { return $months . ' ' . _n('month', 'months', $months, 'wordfence') . (is_numeric($days) ? ' ' . $days . ' ' . _n('day', 'days', $days, 'wordfence') : ''); } else if ($days) { return $days . ' ' . _n('day', 'days', $days, 'wordfence') . (is_numeric($hours) ? ' ' . $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence') : ''); } else if ($hours) { return $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence') . (is_numeric($minutes) ? ' ' . $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence') : ''); } else if ($minutes) { return $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence'); } else { if($noSeconds){ return __("less than a minute", 'wordfence'); } else { return sprintf(/* translators: Number of seconds. */ __("%d seconds", 'wordfence'), floor($secs)); } } } public static function makeDuration($secs, $createExact = false) { $components = array(); $months = floor($secs / (86400 * 30)); $secs -= $months * 86400 * 30; $days = floor($secs / 86400); $secs -= $days * 86400; $hours = floor($secs / 3600); $secs -= $hours * 3600; $minutes = floor($secs / 60); $secs -= $minutes * 60; if ($months) { $components[] = $months . ' ' . _n('month', 'months', $months, 'wordfence'); if (!$createExact) { $hours = $minutes = $secs = 0; } } if ($days) { $components[] = $days . ' ' . _n('day', 'days', $days, 'wordfence'); if (!$createExact) { $minutes = $secs = 0; } } if ($hours) { $components[] = $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence'); if (!$createExact) { $secs = 0; } } if ($minutes) { $components[] = $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence'); } if ($secs && $secs >= 1) { $components[] = $secs . ' ' . _n('second', 'seconds', $secs, 'wordfence'); } if (empty($components)) { $components[] = __('less than 1 second', 'wordfence'); } return implode(' ', $components); } public static function pluralize($m1, $m1Singular, $m1Plural, $m2 = false, $m2Singular = false, $m2Plural = false) { $m1Text = _n($m1Singular, $m1Plural, $m1, 'wordfence'); if (is_numeric($m2)) { $m2Text = _n($m2Singular, $m2Plural, $m2, 'wordfence'); return "$m1 $m1Text $m2 $m2Text"; } else { return "$m1 $m1Text"; } } public static function formatBytes($bytes, $precision = 2) { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); // Uncomment one of the following alternatives $bytes /= pow(1024, $pow); // $bytes /= (1 << (10 * $pow)); return round($bytes, $precision) . ' ' . $units[$pow]; } /** * Returns the PHP version formatted for display, stripping off the build information when present. * * @return string */ public static function cleanPHPVersion() { $version = phpversion(); if (preg_match('/^(\d+\.\d+\.\d+)/', $version, $matches)) { return $matches[1]; } return $version; } /** * Check if an IP address is in a network block * * @param string $subnet Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22') * @param string $ip IPv4 or IPv6 address in dot or colon notation * @return boolean */ public static function subnetContainsIP($subnet, $ip) { static $_network_cache = array(); static $_ip_cache = array(); static $_masks = array( 0 => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 1 => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 2 => "\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 3 => "\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 4 => "\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 5 => "\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 6 => "\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 7 => "\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 8 => "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 9 => "\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 10 => "\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 11 => "\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 12 => "\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 13 => "\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 14 => "\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 15 => "\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16 => "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 17 => "\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 18 => "\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 19 => "\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 20 => "\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 21 => "\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 22 => "\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 23 => "\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 24 => "\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 25 => "\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 26 => "\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 27 => "\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 28 => "\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 29 => "\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 30 => "\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 31 => "\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 => "\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 33 => "\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 34 => "\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 35 => "\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 36 => "\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 37 => "\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 38 => "\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 39 => "\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 40 => "\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 41 => "\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 42 => "\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 43 => "\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 44 => "\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 45 => "\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 46 => "\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 47 => "\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 48 => "\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 49 => "\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", 50 => "\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00", 51 => "\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00", 52 => "\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00", 53 => "\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00", 54 => "\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00", 55 => "\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00", 56 => "\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00", 57 => "\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00", 58 => "\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00", 59 => "\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00", 60 => "\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00", 61 => "\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00", 62 => "\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00", 63 => "\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00", 64 => "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00", 65 => "\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00", 66 => "\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00", 67 => "\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00", 68 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00", 69 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00", 70 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00", 71 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00", 72 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00", 73 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00", 74 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00", 75 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00", 76 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00", 77 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00", 78 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00", 79 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00", 80 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00", 81 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00", 82 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00", 83 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00", 84 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00", 85 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00", 86 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00", 87 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00", 88 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00", 89 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00", 90 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00", 91 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00", 92 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00", 93 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00", 94 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00", 95 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00", 96 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00", 97 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00", 98 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00", 99 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00", 100 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00", 101 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00", 102 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00", 103 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00", 104 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00", 105 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00", 106 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00", 107 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00", 108 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00", 109 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00", 110 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00", 111 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00", 112 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00", 113 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00", 114 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00", 115 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00", 116 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00", 117 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00", 118 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00", 119 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00", 120 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00", 121 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80", 122 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0", 123 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0", 124 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0", 125 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8", 126 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc", 127 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe", 128 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", ); /* * The above is generated by: * function gen_mask($prefix, $size = 128) { //Workaround to avoid overflow, split into four pieces $mask_1 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 1 * $size / 4 - $prefix))) - 1); $mask_2 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 2 * $size / 4 - $prefix))) - 1); $mask_3 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 3 * $size / 4 - $prefix))) - 1); $mask_4 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 4 * $size / 4 - $prefix))) - 1); return ($mask_1 ? pack('N', $mask_1) : "\0\0\0\0") . ($mask_2 ? pack('N', $mask_2) : "\0\0\0\0") . ($mask_3 ? pack('N', $mask_3) : "\0\0\0\0") . ($mask_4 ? pack('N', $mask_4) : "\0\0\0\0"); } $masks = array(); for ($i = 0; $i <= 128; $i++) { $mask = gen_mask($i); $chars = str_split($mask); $masks[] = implode('', array_map(function($c) { return '\\x' . bin2hex($c); }, $chars)); } echo 'array(' . "\n"; foreach ($masks as $index => $m) { echo "\t{$index} => \"{$m}\",\n"; } echo ')'; * */ if (isset($_network_cache[$subnet])) { list($bin_network, $prefix, $masked_network) = $_network_cache[$subnet]; $mask = $_masks[$prefix]; } else { list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null); if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { // If no prefix was supplied, 32 is implied for IPv4 if ($prefix === null) { $prefix = 32; } // Validate the IPv4 network prefix if ($prefix < 0 || $prefix > 32) { return false; } // Increase the IPv4 network prefix to work in the IPv6 address space $prefix += 96; } else { // If no prefix was supplied, 128 is implied for IPv6 if ($prefix === null) { $prefix = 128; } // Validate the IPv6 network prefix if ($prefix < 1 || $prefix > 128) { return false; } } $mask = $_masks[$prefix]; $bin_network = self::inet_pton($network); $masked_network = $bin_network & $mask; $_network_cache[$subnet] = array($bin_network, $prefix, $masked_network); } if (isset($_ip_cache[$ip]) && isset($_ip_cache[$ip][$prefix])) { list($bin_ip, $masked_ip) = $_ip_cache[$ip][$prefix]; } else { $bin_ip = self::inet_pton($ip); $masked_ip = $bin_ip & $mask; if (!isset($_ip_cache[$ip])) { $_ip_cache[$ip] = array(); } $_ip_cache[$ip][$prefix] = array($bin_ip, $masked_ip); } return ($masked_ip === $masked_network); } /** * Convert CIDR notation to a wfUserIPRange object * * @param string $cidr * @return wfUserIPRange */ public static function CIDR2wfUserIPRange($cidr) { list($network, $prefix) = array_pad(explode('/', $cidr, 2), 2, null); $ip_range = new wfUserIPRange(); if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { // If no prefix was supplied, 32 is implied for IPv4 if ($prefix === null) { $prefix = 32; } // Validate the IPv4 network prefix if ($prefix < 0 || $prefix > 32) { return $ip_range; } // Increase the IPv4 network prefix to work in the IPv6 address space $prefix += 96; } else { // If no prefix was supplied, 128 is implied for IPv6 if ($prefix === null) { $prefix = 128; } // Validate the IPv6 network prefix if ($prefix < 1 || $prefix > 128) { return $ip_range; } } // Convert human readable address to 128 bit (IPv6) binary string // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions $binary_network = self::inet_pton($network); $binary_mask = wfHelperBin::str2bin(str_pad(str_repeat('1', $prefix), 128, '0', STR_PAD_RIGHT)); // Calculate first and last address $binary_first = $binary_network & $binary_mask; $binary_last = $binary_network | ~ $binary_mask; // Convert binary addresses back to human readable strings $first = self::inet_ntop($binary_first); $last = self::inet_ntop($binary_last); if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { $first = self::expandIPv6Address($first); $last = self::expandIPv6Address($last); } // Split addresses into segments $first_array = preg_split('/[\.\:]/', $first); $last_array = preg_split('/[\.\:]/', $last); // Make sure arrays are the same size. IPv6 '::' could cause problems otherwise. // The strlen filter should leave zeros in place $first_array = array_pad(array_filter($first_array, 'strlen'), count($last_array), '0'); $range_segments = array(); foreach ($first_array as $index => $segment) { if ($segment === $last_array[$index]) { $range_segments[] = str_pad(ltrim($segment, '0'), 1, '0'); } else if ($segment === '' || $last_array[$index] === '') { $range_segments[] = ''; } else { $range_segments[] = "[". str_pad(ltrim($segment, '0'), 1, '0') . "-" . str_pad(ltrim($last_array[$index], '0'), 1, '0') . "]"; } } $delimiter = filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? '.' : ':'; $ip_range->setIPString(implode($delimiter, $range_segments)); return $ip_range; } /** * Return dot notation of IPv4 address. * * @param int $ip * @return string|bool */ public static function inet_ntoa($ip) { $long = 4294967295 - ($ip - 1); return long2ip(-$long); } /** * Return string representation of 32 bit int of the IP address. * * @param string $ip * @return string */ public static function inet_aton($ip) { $ip = preg_replace('/(?<=^|\.)0+([1-9])/', '$1', $ip); return sprintf("%u", ip2long($ip)); } /** * Return dot or colon notation of IPv4 or IPv6 address. * * @param string $ip * @return string|bool */ public static function inet_ntop($ip) { // trim this to the IPv4 equiv if it's in the mapped range if (strlen($ip) == 16 && substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") { $ip = substr($ip, 12, 4); } return self::hasIPv6Support() ? @inet_ntop($ip) : self::_inet_ntop($ip); } /** * Return the packed binary string of an IPv4 or IPv6 address. * * @param string $ip * @return string */ public static function inet_pton($ip) { // convert the 4 char IPv4 to IPv6 mapped version. $pton = str_pad(self::hasIPv6Support() ? @inet_pton($ip) : self::_inet_pton($ip), 16, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00", STR_PAD_LEFT); return $pton; } /** * Added compatibility for hosts that do not have inet_pton. * * @param $ip * @return bool|string */ public static function _inet_pton($ip) { // IPv4 if (preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $ip)) { $octets = explode('.', $ip); $bin = chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]); return $bin; } // IPv6 if (preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $ip)) { if ($ip === '::') { return "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; } $colon_count = substr_count($ip, ':'); $dbl_colon_pos = strpos($ip, '::'); if ($dbl_colon_pos !== false) { $ip = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip); $ip = trim($ip, ':'); } $ip_groups = explode(':', $ip); $ipv6_bin = ''; foreach ($ip_groups as $ip_group) { $ipv6_bin .= pack('H*', str_pad($ip_group, 4, '0', STR_PAD_LEFT)); } return strlen($ipv6_bin) === 16 ? $ipv6_bin : false; } // IPv4 mapped IPv6 if (preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i', $ip, $matches)) { $octets = explode('.', $matches[1]); return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" . chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]); } return false; } /** * Added compatibility for hosts that do not have inet_ntop. * * @param $ip * @return bool|string */ public static function _inet_ntop($ip) { // IPv4 if (strlen($ip) === 4) { return ord($ip[0]) . '.' . ord($ip[1]) . '.' . ord($ip[2]) . '.' . ord($ip[3]); } // IPv6 if (strlen($ip) === 16) { // IPv4 mapped IPv6 if (substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") { return "::ffff:" . ord($ip[12]) . '.' . ord($ip[13]) . '.' . ord($ip[14]) . '.' . ord($ip[15]); } $hex = bin2hex($ip); $groups = str_split($hex, 4); $in_collapse = false; $done_collapse = false; foreach ($groups as $index => $group) { if ($group == '0000' && !$done_collapse) { if ($in_collapse) { $groups[$index] = ''; continue; } $groups[$index] = ':'; $in_collapse = true; continue; } if ($in_collapse) { $done_collapse = true; } $groups[$index] = ltrim($groups[$index], '0'); if (strlen($groups[$index]) === 0) { $groups[$index] = '0'; } } $ip = join(':', array_filter($groups, 'strlen')); $ip = str_replace(':::', '::', $ip); return $ip == ':' ? '::' : $ip; } return false; } /** * Verify PHP was compiled with IPv6 support. * * Some hosts appear to not have inet_ntop, and others appear to have inet_ntop but are unable to process IPv6 addresses. * * @return bool */ public static function hasIPv6Support() { return defined('AF_INET6'); } public static function hasLoginCookie(){ if(isset($_COOKIE)){ if(is_array($_COOKIE)){ foreach($_COOKIE as $key => $val){ if(strpos($key, 'wordpress_logged_in') === 0){ return true; } } } } return false; } public static function getBaseURL(){ return plugins_url('', WORDFENCE_FCPATH) . '/'; } public static function getPluginBaseDir(){ if(function_exists('wp_normalize_path')){ //Older WP versions don't have this func and we had many complaints before this check. if(defined('WP_PLUGIN_DIR')) { return wp_normalize_path(WP_PLUGIN_DIR . '/'); } return wp_normalize_path(WP_CONTENT_DIR . '/plugins/'); } else { if(defined('WP_PLUGIN_DIR')) { return WP_PLUGIN_DIR . '/'; } return WP_CONTENT_DIR . '/plugins/'; } } public static function makeRandomIP(){ return rand(11,230) . '.' . rand(0,255) . '.' . rand(0,255) . '.' . rand(0,255); } /** * Converts a truthy value to a boolean, checking in this order: * - already a boolean * - numeric (0 => false, otherwise true) * - 'false', 'f', 'no', 'n', or 'off' => false * - 'true', 't', 'yes', 'y', or 'on' => true * - empty value => false, otherwise true * * @param $value * @return bool */ public static function truthyToBoolean($value) { if ($value === true || $value === false) { return $value; } if (is_numeric($value)) { return !!$value; } if (preg_match('/^(?:f(?:alse)?|no?|off)$/i', $value)) { return false; } else if (preg_match('/^(?:t(?:rue)?|y(?:es)?|on)$/i', $value)) { return true; } return !empty($value); } /** * Converts a truthy value to 1 or 0. * * @see wfUtils::truthyToBoolean * * @param $value * @return int */ public static function truthyToInt($value) { return self::truthyToBoolean($value) ? 1 : 0; } /** * Returns the whitelist presets, which first grabs the bundled list and then merges the dynamic list into it. * * @return array */ public static function whitelistPresets() { static $_cachedPresets = null; if ($_cachedPresets === null) { include(dirname(__FILE__) . '/wfIPWhitelist.php'); /** @var array $wfIPWhitelist */ $currentPresets = wfConfig::getJSON('whitelistPresets', array()); if (is_array($currentPresets)) { $_cachedPresets = array_merge($wfIPWhitelist, $currentPresets); } else { $_cachedPresets = $wfIPWhitelist; } } return $_cachedPresets; } /** * Returns an array containing all whitelisted service IPs/ranges. The returned array is grouped by service * tag: array('service1' => array('range1', 'range2', range3', ...), ...) * * @return array */ public static function whitelistedServiceIPs() { $result = array(); $whitelistPresets = self::whitelistPresets(); $whitelistedServices = wfConfig::getJSON('whitelistedServices', array()); foreach ($whitelistPresets as $tag => $preset) { if (!isset($preset['n'])) { //Just an array of IPs/ranges $result[$tag] = $preset; continue; } if ((isset($preset['h']) && $preset['h']) || (isset($preset['f']) && $preset['f'])) { //Forced $result[$tag] = $preset['r']; continue; } if ((!isset($whitelistedServices[$tag]) && isset($preset['d']) && $preset['d']) || (isset($whitelistedServices[$tag]) && $whitelistedServices[$tag])) { $result[$tag] = $preset['r']; } } return $result; } /** * Get the list of whitelisted IPs and networks, which is a combination of preset IPs/ranges and user-entered * IPs/ranges. * * @param string $filter Group name to filter whitelist by * @return array */ public static function getIPWhitelist($filter = null) { static $wfIPWhitelist; if (!isset($wfIPWhitelist)) { $wfIPWhitelist = self::whitelistedServiceIPs(); //Append user ranges $wfIPWhitelist['user'] = array(); foreach (array_filter(explode(',', wfConfig::get('whitelisted'))) as $ip) { $wfIPWhitelist['user'][] = new wfUserIPRange($ip); } } $whitelist = array(); foreach ($wfIPWhitelist as $group => $values) { if ($filter === null || $group === $filter) { $whitelist = array_merge($whitelist, $values); } } return $whitelist; } /** * @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1) * @return bool */ public static function isPrivateAddress($addr) { // Run this through the preset list for IPv4 addresses. if (filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) { foreach (self::getIPWhitelist('private') as $a) { if (self::subnetContainsIP($a, $addr)) { return true; } } } return filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) !== false && filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false; } /** * Expects an array of items. The items are either IP's or IP's separated by comma, space or tab. Or an array of IP's. * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found. * * @param array $arr * @return bool|mixed */ private static function getCleanIP($arr){ $privates = array(); //Store private addrs until end as last resort. for($i = 0; $i < count($arr); $i++){ $item = $arr[$i]; if(is_array($item)){ foreach($item as $j){ // try verifying the IP is valid before stripping the port off if (!self::isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if (self::isValidIP($j)) { if (self::isPrivateAddress($j)) { $privates[] = $j; } else { return $j; } } } continue; //This was an array so we can skip to the next item } $skipToNext = false; foreach(array(',', ' ', "\t") as $char){ if(strpos($item, $char) !== false){ $sp = explode($char, $item); $sp = array_reverse($sp); foreach($sp as $j){ $j = trim($j); if (!self::isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if(self::isValidIP($j)){ if(self::isPrivateAddress($j)){ $privates[] = $j; } else { return $j; } } } $skipToNext = true; break; } } if($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything. if (!self::isValidIP($item)) { $item = preg_replace('/:\d+$/', '', $item); //Strip off port } if(self::isValidIP($item)){ if(self::isPrivateAddress($item)){ $privates[] = $item; } else { return $item; } } } if(sizeof($privates) > 0){ return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function. } else { return false; } } /** * Expects an array of items. The items are either IP's or IP's separated by comma, space or tab. Or an array of IP's. * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found. * * @param array $arr * @return bool|mixed */ private static function getCleanIPAndServerVar($arr, $trustedProxies = null) { $privates = array(); //Store private addrs until end as last resort. for($i = 0; $i < count($arr); $i++){ list($item, $var) = $arr[$i]; if(is_array($item)){ foreach($item as $j){ // try verifying the IP is valid before stripping the port off if (!self::isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if (self::isValidIP($j)) { if (self::isIPv6MappedIPv4($j)) { $j = self::inet_ntop(self::inet_pton($j)); } if (self::isPrivateAddress($j)) { $privates[] = array($j, $var); } else { return array($j, $var); } } } continue; //This was an array so we can skip to the next item } $skipToNext = false; if ($trustedProxies === null) { $trustedProxies = explode("\n", wfConfig::get('howGetIPs_trusted_proxies', '')); } foreach(array(',', ' ', "\t") as $char){ if(strpos($item, $char) !== false){ $sp = explode($char, $item); $sp = array_reverse($sp); foreach($sp as $index => $j){ $j = trim($j); if (!self::isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if(self::isValidIP($j)){ if (self::isIPv6MappedIPv4($j)) { $j = self::inet_ntop(self::inet_pton($j)); } foreach ($trustedProxies as $proxy) { if (!empty($proxy)) { if (self::subnetContainsIP($proxy, $j) && $index < count($sp) - 1) { continue 2; } } } if(self::isPrivateAddress($j)){ $privates[] = array($j, $var); } else { return array($j, $var); } } } $skipToNext = true; break; } } if($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything. if (!self::isValidIP($item)) { $item = preg_replace('/:\d+$/', '', $item); //Strip off port } if(self::isValidIP($item)){ if (self::isIPv6MappedIPv4($item)) { $item = self::inet_ntop(self::inet_pton($item)); } if(self::isPrivateAddress($item)){ $privates[] = array($item, $var); } else { return array($item, $var); } } } if(sizeof($privates) > 0){ return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function. } else { return false; } } /** * @param string $ip * @return bool */ public static function isIPv6MappedIPv4($ip) { return preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i', $ip) > 0; } public static function extractHostname($str){ if(preg_match('/https?:\/\/([a-zA-Z0-9\.\-]+)(?:\/|$)/i', $str, $matches)){ return strtolower($matches[1]); } else { return false; } } /** * Returns the known server IPs, ordered by those as the best match for outgoing requests. * * @param bool $refreshCache * @return string[] */ public static function serverIPs($refreshCache = false) { static $cachedServerIPs = null; if (isset($cachedServerIPs) && !$refreshCache) { return $cachedServerIPs; } $serverIPs = array(); $storedIP = wfConfig::get('serverIP'); if (preg_match('/^(\d+);(.+)$/', $storedIP, $matches)) { //Format is 'timestamp;ip' $serverIPs[] = $matches[2]; } if (function_exists('dns_get_record')) { $storedDNS = wfConfig::get('serverDNS'); $usingCache = false; if (preg_match('/^(\d+);(\d+);(.+)$/', $storedDNS, $matches)) { //Format is 'timestamp;ttl;ip' $timestamp = $matches[1]; $ttl = $matches[2]; if ($timestamp + max($ttl, 86400) > time()) { $serverIPs[] = $matches[3]; $usingCache = true; } } if (!$usingCache) { $home = get_home_url(); if (preg_match('/^https?:\/\/([^\/]+)/i', $home, $matches)) { $host = strtolower($matches[1]); $cnameRaw = @dns_get_record($host, DNS_CNAME); $cnames = array(); $cnamesTargets = array(); if ($cnameRaw) { foreach ($cnameRaw as $elem) { if ($elem['host'] == $host) { $cnames[] = $elem; $cnamesTargets[] = $elem['target']; } } } $aRaw = @dns_get_record($host, DNS_A); $a = array(); if ($aRaw) { foreach ($aRaw as $elem) { if ($elem['host'] == $host || in_array($elem['host'], $cnamesTargets)) { $a[] = $elem; } } } $firstA = wfUtils::array_first($a); if ($firstA !== null) { $serverIPs[] = $firstA['ip']; wfConfig::set('serverDNS', time() . ';' . $firstA['ttl'] . ';' . $firstA['ip']); } } } } if (isset($_SERVER['SERVER_ADDR']) && wfUtils::isValidIP($_SERVER['SERVER_ADDR'])) { $serverIPs[] = $_SERVER['SERVER_ADDR']; } $serverIPs = array_unique($serverIPs); $cachedServerIPs = $serverIPs; return $serverIPs; } public static function getIP($refreshCache = false) { static $theIP = null; if (isset($theIP) && !$refreshCache) { return $theIP; } //For debugging. //return '54.232.205.132'; //return self::makeRandomIP(); // if no REMOTE_ADDR, it's probably running from the command line $ip = self::getIPAndServerVariable(); if (is_array($ip)) { list($IP, $variable) = $ip; $theIP = $IP; return $IP; } return false; } public static function getIPForField($field, $trustedProxies = null) { $ip = self::getIPAndServerVariable($field, $trustedProxies); if (is_array($ip)) { list($IP, $variable) = $ip; return $IP; } return false; } public static function getAllServerVariableIPs() { $variables = array('REMOTE_ADDR', 'HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR'); $ips = array(); foreach ($variables as $variable) { $ip = isset($_SERVER[$variable]) ? $_SERVER[$variable] : false; if ($ip && strpos($ip, ',') !== false) { $ips[$variable] = preg_replace('/[\s,]/', '', explode(',', $ip)); } else { $ips[$variable] = $ip; } } return $ips; } public static function getIPAndServerVariable($howGet = null, $trustedProxies = null) { $connectionIP = array_key_exists('REMOTE_ADDR', $_SERVER) ? array($_SERVER['REMOTE_ADDR'], 'REMOTE_ADDR') : array('127.0.0.1', 'REMOTE_ADDR'); if ($howGet === null) { $howGet = wfConfig::get('howGetIPs', false); } if($howGet){ if($howGet == 'REMOTE_ADDR'){ return self::getCleanIPAndServerVar(array($connectionIP), $trustedProxies); } else { $ipsToCheck = array( array((isset($_SERVER[$howGet]) ? $_SERVER[$howGet] : ''), $howGet), $connectionIP, ); return self::getCleanIPAndServerVar($ipsToCheck, $trustedProxies); } } else { $ipsToCheck = array(); $recommendedField = wfConfig::get('detectProxyRecommendation', ''); //Prioritize the result from our proxy check if done if (!empty($recommendedField) && $recommendedField != 'UNKNOWN' && $recommendedField != 'DEFERRED') { if (isset($_SERVER[$recommendedField])) { $ipsToCheck[] = array($_SERVER[$recommendedField], $recommendedField); } } $ipsToCheck[] = $connectionIP; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ipsToCheck[] = array($_SERVER['HTTP_X_FORWARDED_FOR'], 'HTTP_X_FORWARDED_FOR'); } if (isset($_SERVER['HTTP_X_REAL_IP'])) { $ipsToCheck[] = array($_SERVER['HTTP_X_REAL_IP'], 'HTTP_X_REAL_IP'); } return self::getCleanIPAndServerVar($ipsToCheck, $trustedProxies); } return false; //Returns an array with a valid IP and the server variable, or false. } public static function getIPPreview($howGet = null, $trustedProxies = null) { $ip = self::getIPAndServerVariable($howGet, $trustedProxies); if (is_array($ip)) { list($IP, $variable) = $ip; if (isset($_SERVER[$variable]) && strpos($_SERVER[$variable], ',') !== false) { $items = preg_replace('/[\s,]/', '', explode(',', $_SERVER[$variable])); $output = ''; foreach ($items as $i) { if ($IP == $i) { $output .= ', ' . esc_html($i) . ''; } else { $output .= ', ' . esc_html($i); } } return substr($output, 2); } return '' . esc_html($IP) . ''; } return false; } public static function isValidIP($IP){ return filter_var($IP, FILTER_VALIDATE_IP) !== false; } public static function isValidCIDRRange($range) { $components = explode('/', $range); if (count($components) != 2) { return false; } list($ip, $prefix) = $components; if (!self::isValidIP($ip)) { return false; } if (!preg_match('/^\d+$/', $prefix)) { return false; } if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { if ($prefix < 0 || $prefix > 32) { return false; } } else { if ($prefix < 1 || $prefix > 128) { return false; } } return true; } public static function isValidEmail($email, $strict = false) { //We don't default to strict, full validation because poorly-configured servers can crash due to the regex PHP uses in filter_var($email, FILTER_VALIDATE_EMAIL) if ($strict) { return (filter_var($email, FILTER_VALIDATE_EMAIL) !== false); } return preg_match('/^[^@\s]+@[^@\s]+\.[^@\s]+$/i', $email) === 1; } public static function getRequestedURL() { if (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']) { $host = $_SERVER['HTTP_HOST']; } else if (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME']) { $host = $_SERVER['SERVER_NAME']; } else { return null; } $prefix = 'http'; if (is_ssl()) { $prefix = 'https'; } return $prefix . '://' . $host . $_SERVER['REQUEST_URI']; } public static function editUserLink($userID){ return get_admin_url() . 'user-edit.php?user_id=' . $userID; } public static function tmpl($file, $data){ extract($data); ob_start(); include dirname(__FILE__) . DIRECTORY_SEPARATOR . $file; return ob_get_contents() . (ob_end_clean() ? "" : ""); } public static function bigRandomHex(){ return bin2hex(wfWAFUtils::random_bytes(16)); } public static function encrypt($str){ $key = wfConfig::get('encKey'); if(! $key){ wordfence::status(1, 'error', __("Wordfence error: No encryption key found!", 'wordfence')); return false; } $db = new wfDB(); return $db->querySingle("select HEX(AES_ENCRYPT('%s', '%s')) as val", $str, $key); } public static function decrypt($str){ $key = wfConfig::get('encKey'); if(! $key){ wordfence::status(1, 'error', __("Wordfence error: No encryption key found!", 'wordfence')); return false; } $db = new wfDB(); return $db->querySingle("select AES_DECRYPT(UNHEX('%s'), '%s') as val", $str, $key); } public static function lcmem(){ $trace=debug_backtrace(); $caller=array_shift($trace); $mem = memory_get_usage(true); error_log("$mem at " . $caller['file'] . " line " . $caller['line']); } public static function logCaller(){ $trace=debug_backtrace(); $caller=array_shift($trace); $c2 = array_shift($trace); error_log("Caller for " . $caller['file'] . " line " . $caller['line'] . " is " . $c2['file'] . ' line ' . $c2['line']); } public static function getWPVersion($forceRecheck = false){ if ($forceRecheck) { require(ABSPATH . 'wp-includes/version.php'); //defines $wp_version return $wp_version; } if(wordfence::$wordfence_wp_version){ return wordfence::$wordfence_wp_version; } else { global $wp_version; return $wp_version; } } public static function isAdminPageMU(){ if(preg_match('/^[\/a-zA-Z0-9\-\_\s\+\~\!\^\.]*\/wp-admin\/network\//', $_SERVER['REQUEST_URI'])){ return true; } return false; } public static function getSiteBaseURL(){ return rtrim(site_url(), '/') . '/'; } public static function longestLine($data){ $lines = preg_split('/[\r\n]+/', $data); $max = 0; foreach($lines as $line){ $len = strlen($line); if($len > $max){ $max = $len; } } return $max; } public static function longestNospace($data){ $lines = preg_split('/[\r\n\s\t]+/', $data); $max = 0; foreach($lines as $line){ $len = strlen($line); if($len > $max){ $max = $len; } } return $max; } public static function requestMaxMemory(){ if(wfConfig::get('maxMem', false) && (int) wfConfig::get('maxMem') > 0){ $maxMem = (int) wfConfig::get('maxMem'); } else { $maxMem = 256; } if( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < $maxMem ) ){ self::iniSet('memory_limit', $maxMem . 'M'); } } public static function isAdmin($user = false){ if($user){ if(is_multisite()){ if(user_can($user, 'manage_network')){ return true; } } else { if(user_can($user, 'manage_options')){ return true; } } } else { if(is_multisite()){ if(current_user_can('manage_network')){ return true; } } else { if(current_user_can('manage_options')){ return true; } } } return false; } public static function hasTwoFactorEnabled($user = false) { if (!$user) { $user = get_user_by('ID', get_current_user_id()); } if (!$user) { return false; } $twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array()); $hasActivatedTwoFactorUser = false; foreach ($twoFactorUsers as &$t) { if ($t[3] == 'activated') { $userID = $t[0]; if ($userID == $user->ID && wfUtils::isAdmin($user)) { $hasActivatedTwoFactorUser = true; } } } return $hasActivatedTwoFactorUser; } public static function isWindows(){ if(! self::$isWindows){ if(preg_match('/^win/i', PHP_OS)){ self::$isWindows = 'yes'; } else { self::$isWindows = 'no'; } } return self::$isWindows == 'yes' ? true : false; } public static function cleanupOneEntryPerLine($string) { $string = str_replace(",", "\n", $string); // fix old format return implode("\n", array_unique(array_filter(array_map('trim', explode("\n", $string))))); } public static function getScanFileError() { $fileTime = wfConfig::get('scanFileProcessing'); if (!$fileTime) { return; } list($file, $time) = unserialize($fileTime); if ($time+10 < time()) { $add = true; $excludePatterns = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_USER); if ($excludePatterns) { foreach ($excludePatterns as $pattern) { if (preg_match($pattern, $file)) { $add = false; break; } } } if ($add) { $files = wfConfig::get('scan_exclude') . "\n" . $file; wfConfig::set('scan_exclude', self::cleanupOneEntryPerLine($files)); } self::endProcessingFile(); } } public static function beginProcessingFile($file) { wfConfig::set('scanFileProcessing', serialize(array($file, time()))); } public static function endProcessingFile() { wfConfig::set('scanFileProcessing', null); if (wfScanner::shared()->useLowResourceScanning()) { usleep(10000); //10 ms } } public static function getScanLock(){ //Windows does not support non-blocking flock, so we use time. $scanRunning = wfConfig::get('wf_scanRunning'); if($scanRunning && time() - $scanRunning < WORDFENCE_MAX_SCAN_LOCK_TIME){ return false; } wfConfig::set('wf_scanRunning', time()); return true; } public static function clearScanLock(){ global $wpdb; $wfdb = new wfDB(); $wfdb->truncate(wfDB::networkTable('wfHoover')); wfConfig::set('wf_scanRunning', ''); wfIssues::updateScanStillRunning(false); if (wfCentral::isConnected()) { wfCentral::updateScanStatus(); } } public static function getIPGeo($IP){ //Works with int or dotted $locs = self::getIPsGeo(array($IP)); if(isset($locs[$IP])){ return $locs[$IP]; } else { return false; } } public static function getIPsGeo($IPs){ //works with int or dotted. Outputs same format it receives. $IPs = array_unique($IPs); $toResolve = array(); $db = new wfDB(); $locsTable = wfDB::networkTable('wfLocs'); $IPLocs = array(); foreach($IPs as $IP){ $isBinaryIP = !self::isValidIP($IP); if ($isBinaryIP) { $ip_printable = wfUtils::inet_ntop($IP); $ip_bin = $IP; } else { $ip_printable = $IP; $ip_bin = wfUtils::inet_pton($IP); } $row = $db->querySingleRec("select IP, ctime, failed, city, region, countryName, countryCode, lat, lon, unix_timestamp() - ctime as age from " . $locsTable . " where IP=%s", $ip_bin); if($row){ if($row['age'] > WORDFENCE_MAX_IPLOC_AGE){ $db->queryWrite("delete from " . $locsTable . " where IP=%s", $row['IP']); } else { if($row['failed'] == 1){ $IPLocs[$ip_printable] = false; } else { $row['IP'] = self::inet_ntop($row['IP']); $row['region'] = wfUtils::shouldDisplayRegion($row['countryName']) ? $row['region'] : ''; $IPLocs[$ip_printable] = $row; } } } if(! isset($IPLocs[$ip_printable])){ $toResolve[] = $ip_printable; } } if(sizeof($toResolve) > 0){ $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion()); try { $freshIPs = $api->call('resolve_ips', array(), array( 'ips' => implode(',', $toResolve) )); if(is_array($freshIPs)){ foreach($freshIPs as $IP => $value){ $IP_bin = wfUtils::inet_pton($IP); if($value == 'failed'){ $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed) values (%s, unix_timestamp(), 1)", $IP_bin); $IPLocs[$IP] = false; } else if(is_array($value)){ for($i = 0; $i <= 5; $i++){ //Prevent warnings in debug mode about uninitialized values if(! isset($value[$i])){ $value[$i] = ''; } } $db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed, city, region, countryName, countryCode, lat, lon) values (%s, unix_timestamp(), 0, '%s', '%s', '%s', '%s', %s, %s)", $IP_bin, $value[3], //city $value[2], //region $value[1], //countryName $value[0],//countryCode $value[4],//lat $value[5]//lon ); $IPLocs[$IP] = array( 'IP' => $IP, 'city' => $value[3], 'region' => wfUtils::shouldDisplayRegion($value[1]) ? $value[2] : '', 'countryName' => $value[1], 'countryCode' => $value[0], 'lat' => $value[4], 'lon' => $value[5] ); } } } } catch(Exception $e){ wordfence::status(2, 'error', sprintf(/* translators: Error message. */ __("Call to Wordfence API to resolve IPs failed: %s", 'wordfence'), $e->getMessage())); return array(); } } return $IPLocs; } public static function reverseLookup($IP) { static $_memoryCache = array(); if (isset($_memoryCache[$IP])) { return $_memoryCache[$IP]; } $db = new wfDB(); $reverseTable = wfDB::networkTable('wfReverseCache'); $IPn = wfUtils::inet_pton($IP); $host = $db->querySingle("select host from " . $reverseTable . " where IP=%s and unix_timestamp() - lastUpdate < %d", $IPn, WORDFENCE_REVERSE_LOOKUP_CACHE_TIME); if (!$host) { // This function works for IPv4 or IPv6 if (function_exists('gethostbyaddr')) { $host = @gethostbyaddr($IP); } if (!$host) { $ptr = false; if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) { $ptr = implode(".", array_reverse(explode(".", $IP))) . ".in-addr.arpa"; } else if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) { $ptr = implode(".", array_reverse(str_split(bin2hex($IPn)))) . ".ip6.arpa"; } if ($ptr && function_exists('dns_get_record')) { $host = @dns_get_record($ptr, DNS_PTR); if ($host) { $host = $host[0]['target']; } } } $_memoryCache[$IP] = $host; if (!$host) { $host = 'NONE'; } $db->queryWrite("insert into " . $reverseTable . " (IP, host, lastUpdate) values (%s, '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE host='%s', lastUpdate=unix_timestamp()", $IPn, $host, $host); } if ($host == 'NONE') { $_memoryCache[$IP] = ''; return ''; } else { $_memoryCache[$IP] = $host; return $host; } } public static function errorsOff(){ self::$lastErrorReporting = @ini_get('error_reporting'); @error_reporting(0); self::$lastDisplayErrors = @ini_get('display_errors'); self::iniSet('display_errors', 0); if(class_exists('wfScan')){ wfScan::$errorHandlingOn = false; } } public static function errorsOn(){ @error_reporting(self::$lastErrorReporting); self::iniSet('display_errors', self::$lastDisplayErrors); if(class_exists('wfScan')){ wfScan::$errorHandlingOn = true; } } //Note this function may report files that are too big which actually are not too big but are unseekable and throw an error on fseek(). But that's intentional public static function fileTooBig($file){ //Deals with files > 2 gigs on 32 bit systems which are reported with the wrong size due to integer overflow if (!@is_file($file) || !@is_readable($file)) { return false; } //Only apply to readable files wfUtils::errorsOff(); $fh = @fopen($file, 'r'); wfUtils::errorsOn(); if(! $fh){ return false; } $offset = WORDFENCE_MAX_FILE_SIZE_TO_PROCESS + 1; $tooBig = false; try { if(@fseek($fh, $offset, SEEK_SET) === 0){ if(strlen(fread($fh, 1)) === 1){ $tooBig = true; } } //Otherwise we couldn't seek there so it must be smaller fclose($fh); return $tooBig; } catch(Exception $e){ return true; } //If we get an error don't scan this file, report it's too big. } public static function fileOver2Gigs($file){ //Surround calls to this func with try/catch because fseek may throw error. $fh = @fopen($file, 'r'); if(! $fh){ return false; } $offset = 2147483647; $tooBig = false; //My throw an error so surround calls to this func with try/catch if(@fseek($fh, $offset, SEEK_SET) === 0){ if(strlen(fread($fh, 1)) === 1){ $tooBig = true; } } //Otherwise we couldn't seek there so it must be smaller @fclose($fh); return $tooBig; } public static function countryCode2Name($code){ require(dirname(__FILE__) . '/wfBulkCountries.php'); /** @var array $wfBulkCountries */ if(isset($wfBulkCountries[$code])){ return $wfBulkCountries[$code]; } else { return ''; } } public static function shouldDisplayRegion($country) { $countries_to_show_for = array('united states', 'canada', 'australia'); return in_array(strtolower($country), $countries_to_show_for); } public static function extractBareURI($URL){ $URL = preg_replace('/^https?:\/\/[^\/]+/i', '', $URL); //strip of method and host $URL = preg_replace('/\#.*$/', '', $URL); //strip off fragment $URL = preg_replace('/\?.*$/', '', $URL); //strip off query string return $URL; } public static function IP2Country($IP){ if (version_compare(phpversion(), '5.4.0', '<')) { return ''; } if (!class_exists('wfGeoIP2')) { wfUtils::error_clear_last(); require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php'); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); } try { wfUtils::error_clear_last(); $geoip = @wfGeoIP2::shared(); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); wfUtils::error_clear_last(); $code = @$geoip->countryCode($IP); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); return is_string($code) ? $code : ''; } catch (Exception $e) { wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:', $e->getMessage()); } return ''; } public static function geoIPVersion() { if (version_compare(phpversion(), '5.4.0', '<')) { return 0; } if (!class_exists('wfGeoIP2')) { wfUtils::error_clear_last(); require_once(dirname(__FILE__) . '/../models/common/wfGeoIP2.php'); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); } try { wfUtils::error_clear_last(); $geoip = @wfGeoIP2::shared(); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); wfUtils::error_clear_last(); $version = @$geoip->version(); wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:'); return $version; } catch (Exception $e) { wfUtils::check_and_log_last_error('geoip', 'GeoIP Error:', $e->getMessage()); } return 0; } public static function siteURLRelative(){ if(is_multisite()){ $URL = network_site_url(); } else { $URL = site_url(); } $URL = preg_replace('/^https?:\/\/[^\/]+/i', '', $URL); $URL = rtrim($URL, '/') . '/'; return $URL; } public static function localHumanDate(){ return date('l jS \of F Y \a\t h:i:s A', time() + (3600 * get_option('gmt_offset'))); } public static function localHumanDateShort(){ return date('D jS F \@ h:i:sA', time() + (3600 * get_option('gmt_offset'))); } public static function funcEnabled($func){ if(! function_exists($func)){ return false; } $disabled = explode(',', ini_get('disable_functions')); foreach($disabled as $f){ if($func == $f){ return false; } } return true; } public static function iniSet($key, $val){ if(self::funcEnabled('ini_set')){ @ini_set($key, $val); } } public static function doNotCache(){ header("Pragma: no-cache"); header("Cache-Control: no-cache, must-revalidate, private"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); //In the past if(! defined('DONOTCACHEPAGE')){ define('DONOTCACHEPAGE', true); } if(! defined('DONOTCACHEDB')){ define('DONOTCACHEDB', true); } if(! defined('DONOTCDN')){ define('DONOTCDN', true); } if(! defined('DONOTCACHEOBJECT')){ define('DONOTCACHEOBJECT', true); } wfCache::doNotCache(); } public static function isUABlocked($uaPattern){ // takes a pattern using asterisks as wildcards, turns it into regex and checks it against the visitor UA returning true if blocked return fnmatch($uaPattern, !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '', FNM_CASEFOLD); } public static function isRefererBlocked($refPattern){ return fnmatch($refPattern, !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', FNM_CASEFOLD); } public static function error_clear_last() { if (function_exists('error_clear_last')) { error_clear_last(); } else { // set error_get_last() to defined state by forcing an undefined variable error set_error_handler('wfUtils::_resetErrorsHandler', 0); @$undefinedVariable; restore_error_handler(); } } /** * Logs the error given or the last PHP error to our log, rate limiting if needed. * * @param string $limiter_key * @param string $label * @param null|string $error The error to log. If null, it will be the result of error_get_last * @param int $rate Logging will only occur once per $rate seconds. */ public static function check_and_log_last_error($limiter_key, $label, $error = null, $rate = 3600 /* 1 hour */) { if ($error === null) { $error = error_get_last(); if ($error === null) { return; } else if ($error['file'] === __FILE__) { return; } $error = $error['message']; } $rateKey = 'lastError_rate_' . $limiter_key; $previousKey = 'lastError_prev_' . $limiter_key; $previousError = wfConfig::getJSON($previousKey, array(0, false)); if ($previousError[1] != $error) { if (wfConfig::getInt($rateKey) < time() - $rate) { wfConfig::set($rateKey, time()); wfConfig::setJSON($previousKey, array(time(), $error)); wordfence::status(2, 'error', $label . ' ' . $error); } } } public static function last_error($limiter_key) { $previousKey = 'lastError_prev_' . $limiter_key; $previousError = wfConfig::getJSON($previousKey, array(0, false)); if ($previousError[1]) { return wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $previousError[0]) . ': ' . $previousError[1]; } return false; } public static function _resetErrorsHandler($errno, $errstr, $errfile, $errline) { //Do nothing } /** * @param $startIP * @param $endIP * @return array */ public static function rangeToCIDRs($startIP, $endIP){ $start_ip_printable = wfUtils::inet_ntop($startIP); if (filter_var($start_ip_printable, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { return self::rangeToCIDRsIPv4(current(unpack('N', substr($startIP, 12, 4))), current(unpack('N', substr($endIP, 12, 4)))); } $startIPBin = str_pad(wfHelperBin::bin2str($startIP), 128, '0', STR_PAD_LEFT); $endIPBin = str_pad(wfHelperBin::bin2str($endIP), 128, '0', STR_PAD_LEFT); $IPIncBin = $startIPBin; $CIDRs = array(); while (strcmp($IPIncBin, $endIPBin) <= 0) { $longNetwork = 128; $IPNetBin = $IPIncBin; while (($IPIncBin[$longNetwork - 1] == '0') && (strcmp(substr_replace($IPNetBin, '1', $longNetwork - 1, 1), $endIPBin) <= 0)) { $IPNetBin[$longNetwork - 1] = '1'; $longNetwork--; } $CIDRs[] = self::inet_ntop(str_pad(wfHelperBin::str2bin($IPIncBin), 16, "\x00", STR_PAD_LEFT)) . ($longNetwork < 128 ? '/' . $longNetwork : ''); $IPIncBin = str_pad(wfHelperBin::bin2str(wfHelperBin::addbin2bin(chr(1), wfHelperBin::str2bin($IPNetBin))), 128, '0', STR_PAD_LEFT); } return $CIDRs; } public static function rangeToCIDRsIPv4($startIP, $endIP){ $startIPBin = sprintf('%032b', $startIP); $endIPBin = sprintf('%032b', $endIP); $IPIncBin = $startIPBin; $CIDRs = array(); while(strcmp($IPIncBin, $endIPBin) <= 0){ $longNetwork = 32; $IPNetBin = $IPIncBin; while(($IPIncBin[$longNetwork - 1] == '0') && (strcmp(substr_replace($IPNetBin, '1', $longNetwork - 1, 1), $endIPBin) <= 0)){ $IPNetBin[$longNetwork - 1] = '1'; $longNetwork--; } $CIDRs[] = long2ip(bindec($IPIncBin)) . ($longNetwork < 32 ? '/' . $longNetwork : ''); $IPIncBin = sprintf('%032b', bindec($IPNetBin) + 1); } return $CIDRs; } /** * This is a convenience function for sending a JSON response and ensuring that execution stops after sending * since wp_die() can be interrupted. * * @param $response * @param int|null $status_code */ public static function send_json($response, $status_code = null) { wp_send_json($response, $status_code); die(); } public static function setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly){ if(version_compare(PHP_VERSION, '5.2.0') >= 0){ @setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly); } else { @setcookie($name, $value, $expire, $path); } } public static function isNginx(){ $sapi = php_sapi_name(); $serverSoft = $_SERVER['SERVER_SOFTWARE']; if($sapi == 'fpm-fcgi' && stripos($serverSoft, 'nginx') !== false){ return true; } } public static function getLastError(){ $err = error_get_last(); if(is_array($err)){ return $err['message']; } return ''; } public static function hostNotExcludedFromProxy($url){ if(! defined('WP_PROXY_BYPASS_HOSTS')){ return true; //No hosts are excluded } $hosts = explode(',', WP_PROXY_BYPASS_HOSTS); $url = preg_replace('/^https?:\/\//i', '', $url); $url = preg_replace('/\/.*$/', '', $url); $url = strtolower($url); foreach($hosts as $h){ if(strtolower(trim($h)) == $url){ return false; } } return true; } public static function hasXSS($URL){ if(! preg_match('/^https?:\/\/[a-z0-9\.\-]+\/[^\':<>\"\\\]*$/i', $URL)){ return true; } else { return false; } } /** * @param string $host * @return array */ public static function resolveDomainName($host) { // Fallback if this function is not available if (!function_exists('dns_get_record')) { return gethostbynamel($host); } $ips = array_merge((array) @dns_get_record($host, DNS_AAAA), (array) @dns_get_record($host, DNS_A)); $return = array(); foreach ($ips as $record) { if ($record['type'] === 'A') { $return[] = $record['ip']; } if ($record['type'] === 'AAAA') { $return[] = $record['ipv6']; } } return $return; } /** * Expand a compressed printable representation of an IPv6 address. * * @param string $ip * @return string */ public static function expandIPv6Address($ip) { $hex = bin2hex(self::inet_pton($ip)); $ip = substr(preg_replace("/([a-f0-9]{4})/i", "$1:", $hex), 0, -1); return $ip; } public static function set_html_content_type() { return 'text/html'; } public static function htmlEmail($to, $subject, $body) { add_filter( 'wp_mail_content_type', 'wfUtils::set_html_content_type' ); $result = wp_mail($to, $subject, $body); remove_filter( 'wp_mail_content_type', 'wfUtils::set_html_content_type' ); return $result; } /** * @param string $readmePath * @return bool */ public static function hideReadme($readmePath = null) { if ($readmePath === null) { $readmePath = ABSPATH . 'readme.html'; } if (file_exists($readmePath)) { $readmePathInfo = pathinfo($readmePath); require_once(ABSPATH . WPINC . '/pluggable.php'); $hiddenReadmeFile = $readmePathInfo['filename'] . '.' . wp_hash('readme') . '.' . $readmePathInfo['extension']; return @rename($readmePath, $readmePathInfo['dirname'] . '/' . $hiddenReadmeFile); } return false; } /** * @param string $readmePath * @return bool */ public static function showReadme($readmePath = null) { if ($readmePath === null) { $readmePath = ABSPATH . 'readme.html'; } $readmePathInfo = pathinfo($readmePath); require_once(ABSPATH . WPINC . '/pluggable.php'); $hiddenReadmeFile = $readmePathInfo['dirname'] . '/' . $readmePathInfo['filename'] . '.' . wp_hash('readme') . '.' . $readmePathInfo['extension']; if (file_exists($hiddenReadmeFile)) { return @rename($hiddenReadmeFile, $readmePath); } return false; } public static function htaccessAppend($code) { $htaccess = wfCache::getHtaccessPath(); $content = self::htaccess(); if (wfUtils::isNginx() || !is_writable($htaccess)) { return false; } if (strpos($content, $code) === false) { // make sure we write this once file_put_contents($htaccess, $content . "\n" . trim($code), LOCK_EX); } return true; } public static function htaccessPrepend($code) { $htaccess = wfCache::getHtaccessPath(); $content = self::htaccess(); if (wfUtils::isNginx() || !is_writable($htaccess)) { return false; } if (strpos($content, $code) === false) { // make sure we write this once file_put_contents($htaccess, trim($code) . "\n" . $content, LOCK_EX); } return true; } public static function htaccess() { $htaccess = wfCache::getHtaccessPath(); if (is_readable($htaccess) && !wfUtils::isNginx()) { return file_get_contents($htaccess); } return ""; } /** * @param array $array * @param mixed $oldKey * @param mixed $newKey * @return array * @throws Exception */ public static function arrayReplaceKey($array, $oldKey, $newKey) { $keys = array_keys($array); if (($index = array_search($oldKey, $keys)) === false) { throw new Exception(sprintf('Key "%s" does not exist', $oldKey)); } $keys[$index] = $newKey; return array_combine($keys, array_values($array)); } /** * Takes a string that may have characters that will be interpreted as invalid UTF-8 byte sequences and translates them into a string of the equivalent hex sequence. * * @param $string * @param bool $inline * @return string */ public static function potentialBinaryStringToHTML($string, $inline = false, $allowmb4 = false) { $output = ''; if (!defined('ENT_SUBSTITUTE')) { define('ENT_SUBSTITUTE', 0); } $span = ''; if ($inline) { $span = ''; } for ($i = 0; $i < wfUtils::strlen($string); $i++) { $c = $string[$i]; $b = ord($c); if ($b < 0x20) { $output .= $span . '\x' . str_pad(dechex($b), 2, '0', STR_PAD_LEFT) . ''; } else if ($b < 0x80) { $output .= htmlspecialchars($c, ENT_QUOTES, 'ISO-8859-1'); } else { //Assume multi-byte UTF-8 $bytes = 0; $test = $b; while (($test & 0x80) > 0) { $bytes++; $test = (($test << 1) & 0xff); } $brokenUTF8 = ($i + $bytes > wfUtils::strlen($string) || $bytes == 1); if (!$brokenUTF8) { //Make sure we have all the bytes for ($n = 1; $n < $bytes; $n++) { $c2 = $string[$i + $n]; $b2 = ord($c2); if (($b2 & 0xc0) != 0x80) { $brokenUTF8 = true; $bytes = $n; break; } } } if (!$brokenUTF8) { //Ensure the byte sequences are within the accepted ranges: https://tools.ietf.org/html/rfc3629 /* * UTF8-octets = *( UTF8-char ) * UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 * UTF8-1 = %x00-7F * UTF8-2 = %xC2-DF UTF8-tail * UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / * %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) * UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / * %xF4 %x80-8F 2( UTF8-tail ) * UTF8-tail = %x80-BF */ $testString = wfUtils::substr($string, $i, $bytes); $regex = '/^(?:' . '[\xc2-\xdf][\x80-\xbf]' . //UTF8-2 '|' . '\xe0[\xa0-\xbf][\x80-\xbf]' . //UTF8-3 '|' . '[\xe1-\xec][\x80-\xbf]{2}' . '|' . '\xed[\x80-\x9f][\x80-\xbf]' . '|' . '[\xee-\xef][\x80-\xbf]{2}'; if ($allowmb4) { $regex .= '|' . '\xf0[\x90-\xbf][\x80-\xbf]{2}' . //UTF8-4 '|' . '[\xf1-\xf3][\x80-\xbf]{3}' . '|' . '\xf4[\x80-\x8f][\x80-\xbf]{2}'; } $regex .= ')$/'; if (!preg_match($regex, $testString)) { $brokenUTF8 = true; } } if ($brokenUTF8) { $bytes = min($bytes, strlen($string) - $i); for ($n = 0; $n < $bytes; $n++) { $c2 = $string[$i + $n]; $b2 = ord($c2); $output .= $span . '\x' . str_pad(dechex($b2), 2, '0', STR_PAD_LEFT) . ''; } $i += ($bytes - 1); } else { $output .= htmlspecialchars(wfUtils::substr($string, $i, $bytes), ENT_QUOTES | ENT_SUBSTITUTE, 'ISO-8859-1'); $i += ($bytes - 1); } } } return $output; } public static function requestDetectProxyCallback($timeout = 2, $blocking = true, $forceCheck = false) { $currentRecommendation = wfConfig::get('detectProxyRecommendation', ''); if (!$forceCheck) { $detectProxyNextCheck = wfConfig::get('detectProxyNextCheck', false); if ($detectProxyNextCheck !== false && time() < $detectProxyNextCheck) { if (empty($currentRecommendation)) { wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD); } return; //Let it pull the currently-stored value } } try { $waf = wfWAF::getInstance(); if ($waf->getStorageEngine()->getConfig('attackDataKey', false) === false) { $waf->getStorageEngine()->setConfig('attackDataKey', mt_rand(0, 0xfff)); } $response = wp_remote_get(sprintf(WFWAF_API_URL_SEC . "proxy-check/%d.txt", $waf->getStorageEngine()->getConfig('attackDataKey')), array('headers' => array('Referer' => false))); if (!is_wp_error($response)) { $okToSendBody = wp_remote_retrieve_body($response); if (preg_match('/^(ok|wait),\s*(\d+)$/i', $okToSendBody, $matches)) { $command = $matches[1]; $ttl = $matches[2]; if ($command == 'wait') { wfConfig::set('detectProxyNextCheck', time() + $ttl, wfConfig::DONT_AUTOLOAD); if (empty($currentRecommendation) || $currentRecommendation == 'UNKNOWN') { wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD); } return; } wfConfig::set('detectProxyNextCheck', time() + $ttl, wfConfig::DONT_AUTOLOAD); } else { //Unknown response wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD); if (empty($currentRecommendation) || $currentRecommendation == 'UNKNOWN') { wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD); } return; } } } catch (Exception $e) { return; } $nonce = bin2hex(wfWAFUtils::random_bytes(32)); $callback = self::getSiteBaseURL() . '?_wfsf=detectProxy'; wfConfig::set('detectProxyNonce', $nonce, wfConfig::DONT_AUTOLOAD); wfConfig::set('detectProxyRecommendation', '', wfConfig::DONT_AUTOLOAD); $payload = array( 'nonce' => $nonce, 'callback' => $callback, ); $homeurl = wfUtils::wpHomeURL(); $siteurl = wfUtils::wpSiteURL(); try { $response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array( 'action' => 'detect_proxy', 'k' => wfConfig::get('apiKey'), 's' => $siteurl, 'h' => $homeurl, 't' => microtime(true), 'lang' => get_site_option('WPLANG'), ), null, '&'), array( 'body' => json_encode($payload), 'headers' => array( 'Content-Type' => 'application/json', 'Referer' => false, ), 'timeout' => $timeout, 'blocking' => $blocking, )); if (!is_wp_error($response)) { $jsonResponse = wp_remote_retrieve_body($response); $decoded = @json_decode($jsonResponse, true); if (is_array($decoded) && isset($decoded['data']) && is_array($decoded['data']) && isset($decoded['data']['ip']) && wfUtils::isValidIP($decoded['data']['ip'])) { wfConfig::set('serverIP', time() . ';' . $decoded['data']['ip']); } } } catch (Exception $e) { return; } } /** * @return bool Returns false if the payload is invalid, true if it processed the callback (even if the IP wasn't found). */ public static function processDetectProxyCallback() { $nonce = wfConfig::get('detectProxyNonce', ''); $testNonce = (isset($_POST['nonce']) ? $_POST['nonce'] : ''); if (empty($nonce) || empty($testNonce)) { return false; } if (!hash_equals($nonce, $testNonce)) { return false; } $ips = (isset($_POST['ips']) ? $_POST['ips'] : array()); if (empty($ips)) { return false; } $expandedIPs = array(); foreach ($ips as $ip) { $expandedIPs[] = self::inet_pton($ip); } $checks = array('HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR'); foreach ($checks as $key) { if (!isset($_SERVER[$key])) { continue; } $testIP = self::getCleanIPAndServerVar(array(array($_SERVER[$key], $key))); if ($testIP === false) { continue; } $testIP = self::inet_pton($testIP[0]); if (in_array($testIP, $expandedIPs)) { wfConfig::set('detectProxyRecommendation', $key, wfConfig::DONT_AUTOLOAD); wfConfig::set('detectProxyNonce', '', wfConfig::DONT_AUTOLOAD); return true; } } wfConfig::set('detectProxyRecommendation', 'UNKNOWN', wfConfig::DONT_AUTOLOAD); wfConfig::set('detectProxyNonce', '', wfConfig::DONT_AUTOLOAD); return true; } /** * Returns a v4 UUID. * * @return string */ public static function uuid() { return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff), // 16 bits for "time_mid" wfWAFUtils::random_int(0, 0xffff), // 16 bits for "time_hi_and_version", // four most significant bits holds version number 4 wfWAFUtils::random_int(0, 0x0fff) | 0x4000, // 16 bits, 8 bits for "clk_seq_hi_res", // 8 bits for "clk_seq_low", // two most significant bits holds zero and one for variant DCE1.1 wfWAFUtils::random_int(0, 0x3fff) | 0x8000, // 48 bits for "node" wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff) ); } public static function base32_encode($rawString, $rightPadFinalBits = false, $padFinalGroup = false, $padCharacter = '=') //Adapted from https://github.com/ademarre/binary-to-text-php { // Unpack string into an array of bytes $bytes = unpack('C*', $rawString); $byteCount = count($bytes); $encodedString = ''; $byte = array_shift($bytes); $bitsRead = 0; $oldBits = 0; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; $bitsPerCharacter = 5; $charsPerByte = 8 / $bitsPerCharacter; $encodedLength = $byteCount * $charsPerByte; // Generate encoded output; each loop produces one encoded character for ($c = 0; $c < $encodedLength; $c++) { // Get the bits needed for this encoded character if ($bitsRead + $bitsPerCharacter > 8) { // Not enough bits remain in this byte for the current character // Save the remaining bits before getting the next byte $oldBitCount = 8 - $bitsRead; $oldBits = $byte ^ ($byte >> $oldBitCount << $oldBitCount); $newBitCount = $bitsPerCharacter - $oldBitCount; if (!$bytes) { // Last bits; match final character and exit loop if ($rightPadFinalBits) $oldBits <<= $newBitCount; $encodedString .= $chars[$oldBits]; if ($padFinalGroup) { // Array of the lowest common multiples of $bitsPerCharacter and 8, divided by 8 $lcmMap = array(1 => 1, 2 => 1, 3 => 3, 4 => 1, 5 => 5, 6 => 3, 7 => 7, 8 => 1); $bytesPerGroup = $lcmMap[$bitsPerCharacter]; $pads = $bytesPerGroup * $charsPerByte - ceil((strlen($rawString) % $bytesPerGroup) * $charsPerByte); $encodedString .= str_repeat($padCharacter, $pads); } break; } // Get next byte $byte = array_shift($bytes); $bitsRead = 0; } else { $oldBitCount = 0; $newBitCount = $bitsPerCharacter; } // Read only the needed bits from this byte $bits = $byte >> 8 - ($bitsRead + ($newBitCount)); $bits ^= $bits >> $newBitCount << $newBitCount; $bitsRead += $newBitCount; if ($oldBitCount) { // Bits come from seperate bytes, add $oldBits to $bits $bits = ($oldBits << $newBitCount) | $bits; } $encodedString .= $chars[$bits]; } return $encodedString; } private static function _home_url_nofilter($path = '', $scheme = null) { //A version of the native get_home_url and get_option without the filter calls global $pagenow, $wpdb, $blog_id; static $cached_url = null; if ($cached_url !== null) { return $cached_url; } if (defined('WP_HOME') && WORDFENCE_PREFER_WP_HOME_FOR_WPML) { $cached_url = WP_HOME; return $cached_url; } if ( empty( $blog_id ) || !is_multisite() ) { $url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'home' LIMIT 1"); if (empty($url)) { //get_option uses siteurl instead if home is empty $url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'siteurl' LIMIT 1"); } } else if (is_multisite()) { $current_network = get_network(); if ( 'relative' == $scheme ) $url = rtrim($current_network->path, '/'); else $url = 'http://' . rtrim($current_network->domain, '/') . '/' . trim($current_network->path, '/'); } if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) { if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow ) $scheme = 'https'; else $scheme = parse_url( $url, PHP_URL_SCHEME ); } $url = set_url_scheme( $url, $scheme ); if ( $path && is_string( $path ) ) $url .= '/' . ltrim( $path, '/' ); $cached_url = $url; return $url; } public static function refreshCachedHomeURL() { $pullDirectly = class_exists('WPML_URL_Filters'); $homeurl = ''; if ($pullDirectly) { //A version of the native get_home_url without the filter call $homeurl = self::_home_url_nofilter(); } if (function_exists('get_bloginfo') && empty($homeurl)) { if (is_multisite()) { $homeurl = network_home_url(); } else { $homeurl = home_url(); } $homeurl = rtrim($homeurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char. } if (wfConfig::get('wp_home_url') !== $homeurl) { wfConfig::set('wp_home_url', $homeurl); } } public static function wpHomeURL($path = '', $scheme = null) { $homeurl = wfConfig::get('wp_home_url', ''); if (function_exists('get_bloginfo') && empty($homeurl)) { if (is_multisite()) { $homeurl = network_home_url($path, $scheme); } else { $homeurl = home_url($path, $scheme); } $homeurl = rtrim($homeurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char. } else { $homeurl = set_url_scheme($homeurl, $scheme); if ($path && is_string($path)) { $homeurl .= '/' . ltrim($path, '/'); } } return $homeurl; } private static function _site_url_nofilter($path = '', $scheme = null) { //A version of the native get_site_url and get_option without the filter calls global $pagenow, $wpdb, $blog_id; static $cached_url = null; if ($cached_url !== null) { return $cached_url; } if (defined('WP_SITEURL') && WORDFENCE_PREFER_WP_HOME_FOR_WPML) { $cached_url = WP_SITEURL; return $cached_url; } if ( empty( $blog_id ) || !is_multisite() ) { $url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'siteurl' LIMIT 1"); } else if (is_multisite()) { $current_network = get_network(); if ( 'relative' == $scheme ) $url = rtrim($current_network->path, '/'); else $url = 'http://' . rtrim($current_network->domain, '/') . '/' . trim($current_network->path, '/'); } if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) { if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow ) $scheme = 'https'; else $scheme = parse_url( $url, PHP_URL_SCHEME ); } $url = set_url_scheme( $url, $scheme ); if ( $path && is_string( $path ) ) $url .= '/' . ltrim( $path, '/' ); $cached_url = $url; return $url; } public static function refreshCachedSiteURL() { $pullDirectly = class_exists('WPML_URL_Filters'); $siteurl = ''; if ($pullDirectly) { //A version of the native get_home_url without the filter call $siteurl = self::_site_url_nofilter(); } if (function_exists('get_bloginfo') && empty($siteurl)) { if (is_multisite()) { $siteurl = network_site_url(); } else { $siteurl = site_url(); } $siteurl = rtrim($siteurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char. } if (wfConfig::get('wp_site_url') !== $siteurl) { wfConfig::set('wp_site_url', $siteurl); } } /** * Equivalent to network_site_url but uses the cached value for the URL if we have it * to avoid breaking on sites that define it based on the requesting hostname. * * @param string $path * @param null|string $scheme * @return string */ public static function wpSiteURL($path = '', $scheme = null) { $siteurl = wfConfig::get('wp_site_url', ''); if (function_exists('get_bloginfo') && empty($siteurl)) { if (is_multisite()) { $siteurl = network_site_url($path, $scheme); } else { $siteurl = site_url($path, $scheme); } $siteurl = rtrim($siteurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char. } else { $siteurl = set_url_scheme($siteurl, $scheme); if ($path && is_string($path)) { $siteurl .= '/' . ltrim($path, '/'); } } return $siteurl; } /** * Equivalent to network_admin_url but uses the cached value for the URL if we have it * to avoid breaking on sites that define it based on the requesting hostname. * * @param string $path * @param null|string $scheme * @return string */ public static function wpAdminURL($path = '', $scheme = null) { if (!is_multisite()) { $adminURL = self::wpSiteURL('wp-admin/', $scheme); } else { $adminURL = self::wpSiteURL('wp-admin/network/', $scheme); } if ($path && is_string($path)) { $adminURL .= ltrim($path, '/'); } if (!is_multisite()) { return apply_filters('admin_url', $adminURL, $path, null); } return apply_filters('network_admin_url', $adminURL, $path); } public static function wafInstallationType() { $storage = 'file'; if (defined('WFWAF_STORAGE_ENGINE')) { $storage = WFWAF_STORAGE_ENGINE; } try { $status = (defined('WFWAF_ENABLED') && !WFWAF_ENABLED) ? 'disabled' : wfWaf::getInstance()->getStorageEngine()->getConfig('wafStatus'); if (defined('WFWAF_ENABLED') && !WFWAF_ENABLED) { return "{$status}|const|{$storage}"; } else if (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL) { return "{$status}|subdir|{$storage}"; } else if (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND) { return "{$status}|extended|{$storage}"; } return "{$status}|basic|{$storage}"; } catch (Exception $e) { //Do nothing } return 'unknown'; } public static function hex2bin($string) { //Polyfill for PHP < 5.4 if (!is_string($string)) { return false; } if (strlen($string) % 2 == 1) { return false; } return pack('H*', $string); } /** * Returns whether or not the site should be treated as if it's full-time SSL. * * @return bool */ public static function isFullSSL() { return is_ssl() && parse_url(self::wpHomeURL(), PHP_URL_SCHEME) === 'https'; //It's possible for only wp-admin to be SSL so we check the home URL too } /** * Identical to the same functions in wfWAFUtils. * * Set the mbstring internal encoding to a binary safe encoding when func_overload * is enabled. * * When mbstring.func_overload is in use for multi-byte encodings, the results from * strlen() and similar functions respect the utf8 characters, causing binary data * to return incorrect lengths. * * This function overrides the mbstring encoding to a binary-safe encoding, and * resets it to the users expected encoding afterwards through the * `reset_mbstring_encoding` function. * * It is safe to recursively call this function, however each * `mbstring_binary_safe_encoding()` call must be followed up with an equal number * of `reset_mbstring_encoding()` calls. * * @see wfWAFUtils::reset_mbstring_encoding * * @staticvar array $encodings * @staticvar bool $overloaded * * @param bool $reset Optional. Whether to reset the encoding back to a previously-set encoding. * Default false. */ public static function mbstring_binary_safe_encoding($reset = false) { static $encodings = array(); static $overloaded = null; if (is_null($overloaded)) { // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated $overloaded = function_exists('mb_internal_encoding') && (ini_get('mbstring.func_overload') & 2); } if (false === $overloaded) { return; } if (!$reset) { $encoding = mb_internal_encoding(); array_push($encodings, $encoding); mb_internal_encoding('ISO-8859-1'); } if ($reset && $encodings) { $encoding = array_pop($encodings); mb_internal_encoding($encoding); } } /** * Reset the mbstring internal encoding to a users previously set encoding. * * @see wfWAFUtils::mbstring_binary_safe_encoding */ public static function reset_mbstring_encoding() { self::mbstring_binary_safe_encoding(true); } /** * @param callable $function * @param array $args * @return mixed */ protected static function callMBSafeStrFunction($function, $args) { self::mbstring_binary_safe_encoding(); $return = call_user_func_array($function, $args); self::reset_mbstring_encoding(); return $return; } /** * Multibyte safe strlen. * * @param $binary * @return int */ public static function strlen($binary) { $args = func_get_args(); return self::callMBSafeStrFunction('strlen', $args); } /** * @param $haystack * @param $needle * @param int $offset * @return int */ public static function stripos($haystack, $needle, $offset = 0) { $args = func_get_args(); return self::callMBSafeStrFunction('stripos', $args); } /** * @param $string * @return mixed */ public static function strtolower($string) { $args = func_get_args(); return self::callMBSafeStrFunction('strtolower', $args); } /** * @param $string * @param $start * @param $length * @return mixed */ public static function substr($string, $start, $length = null) { if ($length === null) { $length = self::strlen($string); } return self::callMBSafeStrFunction('substr', array( $string, $start, $length )); } /** * @param $haystack * @param $needle * @param int $offset * @return mixed */ public static function strpos($haystack, $needle, $offset = 0) { $args = func_get_args(); return self::callMBSafeStrFunction('strpos', $args); } /** * @param string $haystack * @param string $needle * @param int $offset * @param int $length * @return mixed */ public static function substr_count($haystack, $needle, $offset = 0, $length = null) { if ($length === null) { $length = self::strlen($haystack); } return self::callMBSafeStrFunction('substr_count', array( $haystack, $needle, $offset, $length )); } /** * @param $string * @return mixed */ public static function strtoupper($string) { $args = func_get_args(); return self::callMBSafeStrFunction('strtoupper', $args); } /** * @param string $haystack * @param string $needle * @param int $offset * @return mixed */ public static function strrpos($haystack, $needle, $offset = 0) { $args = func_get_args(); return self::callMBSafeStrFunction('strrpos', $args); } public static function sets_equal($a1, $a2) { if (!is_array($a1) || !is_array($a2)) { return false; } if (count($a1) != count($a2)) { return false; } sort($a1, SORT_NUMERIC); sort($a2, SORT_NUMERIC); return $a1 == $a2; } public static function array_first($array) { if (empty($array)) { return null; } $values = array_values($array); return $values[0]; } public static function array_last($array) { if (empty($array)) { return null; } $values = array_values($array); return $values[count($values) - 1]; } public static function array_strtolower($array) { $result = array(); foreach ($array as $a) { $result[] = strtolower($a); } return $result; } public static function array_column($input = null, $columnKey = null, $indexKey = null) { //Polyfill from https://github.com/ramsey/array_column/blob/master/src/array_column.php $argc = func_num_args(); $params = func_get_args(); if ($argc < 2) { trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING); return null; } if (!is_array($params[0])) { trigger_error( 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given', E_USER_WARNING ); return null; } if (!is_int($params[1]) && !is_float($params[1]) && !is_string($params[1]) && $params[1] !== null && !(is_object($params[1]) && method_exists($params[1], '__toString'))) { trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING); return false; } if (isset($params[2]) && !is_int($params[2]) && !is_float($params[2]) && !is_string($params[2]) && !(is_object($params[2]) && method_exists($params[2], '__toString'))) { trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING); return false; } $paramsInput = $params[0]; $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; $paramsIndexKey = null; if (isset($params[2])) { if (is_float($params[2]) || is_int($params[2])) { $paramsIndexKey = (int) $params[2]; } else { $paramsIndexKey = (string) $params[2]; } } $resultArray = array(); foreach ($paramsInput as $row) { $key = $value = null; $keySet = $valueSet = false; if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) { $keySet = true; $key = (string) $row[$paramsIndexKey]; } if ($paramsColumnKey === null) { $valueSet = true; $value = $row; } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) { $valueSet = true; $value = $row[$paramsColumnKey]; } if ($valueSet) { if ($keySet) { $resultArray[$key] = $value; } else { $resultArray[] = $value; } } } return $resultArray; } /** * Returns the current timestamp, adjusted as needed to get close to what we consider a true timestamp. We use this * because a significant number of servers are using a drastically incorrect time. * * @return int */ public static function normalizedTime($base = false) { if ($base === false) { $base = time(); } $offset = wfConfig::get('timeoffset_ntp', false); if ($offset === false) { $offset = wfConfig::get('timeoffset_wf', false); if ($offset === false) { $offset = 0; } } return $base + $offset; } /** * Returns what we consider a true timestamp, adjusted as needed to match the local server's drift. We use this * because a significant number of servers are using a drastically incorrect time. * * @return int */ public static function denormalizedTime($base) { $offset = wfConfig::get('timeoffset_ntp', false); if ($offset === false) { $offset = wfConfig::get('timeoffset_wf', false); if ($offset === false) { $offset = 0; } } return $base - $offset; } /** * Returns the number of minutes for the time zone offset from UTC. If $timestamp and using a named time zone, * it will be adjusted automatically to match whether or not the server's time zone is in Daylight Savings Time. * * @param bool|int $timestamp Assumed to be in UTC. If false, defaults to the current timestamp. * @return int */ public static function timeZoneMinutes($timestamp = false) { if ($timestamp === false) { $timestamp = time(); } $tz = get_option('timezone_string'); if (!empty($tz)) { $timezone = new DateTimeZone($tz); $dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2 $dt = new DateTime($dtStr, $timezone); return (int) ($timezone->getOffset($dt) / 60); } else { $gmt = get_option('gmt_offset'); if (!empty($gmt)) { return (int) ($gmt * 60); } } return 0; } /** * Formats and returns the given timestamp using the time zone set for the WordPress installation. * * @param string $format See the PHP docs on DateTime for the format options. * @param int|bool $timestamp Assumed to be in UTC. If false, defaults to the current timestamp. * @return string */ public static function formatLocalTime($format, $timestamp = false) { if ($timestamp === false) { $timestamp = time(); } $utc = new DateTimeZone('UTC'); $dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2 $dt = new DateTime($dtStr, $utc); $tz = get_option('timezone_string'); if (!empty($tz)) { $dt->setTimezone(new DateTimeZone($tz)); } else { $gmt = get_option('gmt_offset'); if (!empty($gmt)) { if (PHP_VERSION_ID < 50510) { $dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10 $dt = new DateTime($dtStr, $utc); } else { $direction = ($gmt > 0 ? '+' : '-'); $gmt = abs($gmt); $h = (int) $gmt; $m = ($gmt - $h) * 60; $dt->setTimezone(new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT))); } } } return $dt->format($format); } /** * Parses the given time string and returns its DateTime with the server's configured time zone. * * @param string $timestring * @return DateTime */ public static function parseLocalTime($timestring) { $utc = new DateTimeZone('UTC'); $tz = get_option('timezone_string'); if (!empty($tz)) { $tz = new DateTimeZone($tz); return new DateTime($timestring, $tz); } else { $gmt = get_option('gmt_offset'); if (!empty($gmt)) { if (PHP_VERSION_ID < 50510) { $timestamp = strtotime($timestring); $dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10 return new DateTime($dtStr, $utc); } else { $direction = ($gmt > 0 ? '+' : '-'); $gmt = abs($gmt); $h = (int) $gmt; $m = ($gmt - $h) * 60; $tz = new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT)); return new DateTime($timestring, $tz); } } } return new DateTime($timestring); } /** * Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters * not safe for use in URLs. * * @param string $payload * @return string */ public static function base64url_encode($payload) { $intermediate = base64_encode($payload); $intermediate = rtrim($intermediate, '='); $intermediate = str_replace('+', '-', $intermediate); $intermediate = str_replace('/', '_', $intermediate); return $intermediate; } /** * Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters * substituted by base64url_encode. * * @param string $payload * @return string */ public static function base64url_decode($payload) { $intermediate = str_replace('_', '/', $payload); $intermediate = str_replace('-', '+', $intermediate); $intermediate = base64_decode($intermediate); return $intermediate; } /** * Returns a signed JWT for the given payload. Payload is expected to be an array suitable for JSON-encoding. * * @param array $payload * @param int $maxAge How long the JWT will be considered valid. * @return string */ public static function generateJWT($payload, $maxAge = 604800 /* 7 days */) { $payload['_exp'] = time() + $maxAge; $key = wfConfig::get('longEncKey'); $header = '{"alg":"HS256","typ":"JWT"}'; $body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload)); $signature = hash_hmac('sha256', $body, $key, true); return $body . '.' . self::base64url_encode($signature); } /** * Decodes and returns the payload of a JWT. This also validates the signature. * * @param string $token * @return array|bool The decoded payload or false if the token is invalid or fails validation. */ public static function decodeJWT($token) { $components = explode('.', $token); if (count($components) != 3) { return false; } $key = wfConfig::get('longEncKey'); $body = $components[0] . '.' . $components[1]; $signature = hash_hmac('sha256', $body, $key, true); $testSignature = self::base64url_decode($components[2]); if (!hash_equals($signature, $testSignature)) { return false; } $json = self::base64url_decode($components[1]); $payload = @json_decode($json, true); if (isset($payload['_exp']) && $payload['_exp'] < time()) { return false; } return $payload; } } // GeoIP lib uses these as well if (!function_exists('inet_ntop')) { function inet_ntop($ip) { return wfUtils::_inet_ntop($ip); } } if (!function_exists('inet_pton')) { function inet_pton($ip) { return wfUtils::_inet_pton($ip); } } class wfWebServerInfo { const APACHE = 1; const NGINX = 2; const LITESPEED = 4; const IIS = 8; private $handler; private $software; private $softwareName; /** * */ public static function createFromEnvironment() { $serverInfo = new self; $sapi = php_sapi_name(); if (stripos($_SERVER['SERVER_SOFTWARE'], 'apache') !== false) { $serverInfo->setSoftware(self::APACHE); $serverInfo->setSoftwareName('apache'); } if (stripos($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false || $sapi == 'litespeed') { $serverInfo->setSoftware(self::LITESPEED); $serverInfo->setSoftwareName('litespeed'); } if (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) { $serverInfo->setSoftware(self::NGINX); $serverInfo->setSoftwareName('nginx'); } if (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false) { $serverInfo->setSoftware(self::IIS); $serverInfo->setSoftwareName('iis'); } $serverInfo->setHandler($sapi); return $serverInfo; } /** * @return bool */ public function isApache() { return $this->getSoftware() === self::APACHE; } /** * @return bool */ public function isNGINX() { return $this->getSoftware() === self::NGINX; } /** * @return bool */ public function isLiteSpeed() { return $this->getSoftware() === self::LITESPEED; } /** * @return bool */ public function isIIS() { return $this->getSoftware() === self::IIS; } /** * @return bool */ public function isApacheModPHP() { return $this->isApache() && function_exists('apache_get_modules'); } /** * Not sure if this can be implemented at the PHP level. * @return bool */ public function isApacheSuPHP() { return $this->isApache() && $this->isCGI() && function_exists('posix_getuid') && getmyuid() === posix_getuid(); } /** * @return bool */ public function isCGI() { return !$this->isFastCGI() && stripos($this->getHandler(), 'cgi') !== false; } /** * @return bool */ public function isFastCGI() { return stripos($this->getHandler(), 'fastcgi') !== false || stripos($this->getHandler(), 'fpm-fcgi') !== false; } /** * @return mixed */ public function getHandler() { return $this->handler; } /** * @param mixed $handler */ public function setHandler($handler) { $this->handler = $handler; } /** * @return mixed */ public function getSoftware() { return $this->software; } /** * @param mixed $software */ public function setSoftware($software) { $this->software = $software; } /** * @return mixed */ public function getSoftwareName() { return $this->softwareName; } /** * @param mixed $softwareName */ public function setSoftwareName($softwareName) { $this->softwareName = $softwareName; } } lib/wfBrowscap.php000064400000007757152331132450010157 0ustar00_cacheLoaded) { if (!$this->_loadCache(dirname(__FILE__) . '/wfBrowscapCache.php')) { throw new Exception('Cannot load this cache version - the cache format is not compatible.'); } } $browser = array(); foreach ($this->_patterns as $pattern => $pattern_data) { if (preg_match($pattern . 'i', $user_agent, $matches)) { if (1 == count($matches)) { $key = $pattern_data; $simple_match = true; } else { $pattern_data = unserialize($pattern_data); array_shift($matches); $match_string = self::COMPRESSION_PATTERN_START . implode(self::COMPRESSION_PATTERN_DELIMITER, $matches); if (!isset($pattern_data[$match_string])) { continue; } $key = $pattern_data[$match_string]; $simple_match = false; } $browser = array( $user_agent, trim(strtolower($pattern), self::REGEX_DELIMITER), $this->_pregUnQuote($pattern, $simple_match ? false : $matches) ); $browser = $value = $browser + unserialize($this->_browsers[$key]); while (array_key_exists(3, $value)) { $value = unserialize($this->_browsers[$value[3]]); $browser += $value; } if (!empty($browser[3])) { $browser[3] = $this->_userAgents[$browser[3]]; } break; } } $array = array(); foreach ($browser as $key => $value) { if ($value === 'true') { $value = true; } elseif ($value === 'false') { $value = false; } $array[$this->_properties[$key]] = $value; } return $array; } protected function _loadCache($cache_file){ $cache_version = null; $source_version = null; $browsers = array(); $userAgents = array(); $patterns = array(); $properties = array(); $this->_cacheLoaded = false; require $cache_file; $this->_source_version = $source_version; $this->_browsers = $browsers; $this->_userAgents = $userAgents; $this->_patterns = $patterns; $this->_properties = $properties; $this->_cacheLoaded = true; return true; } protected function _pregUnQuote($pattern, $matches){ $search = array( '\\' . self::REGEX_DELIMITER, '\\.', '\\\\', '\\+', '\\[', '\\^', '\\]', '\\$', '\\(', '\\)', '\\{', '\\}', '\\=', '\\!', '\\<', '\\>', '\\|', '\\:', '\\-', '.*', '.', '\\?' ); $replace = array( self::REGEX_DELIMITER, '\\?', '\\', '+', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', '-', '*', '?', '.' ); $result = substr(str_replace($search, $replace, $pattern), 2, -2); if ($matches) { foreach ($matches as $one_match) { $num_pos = strpos($result, '(\d)'); $result = substr_replace($result, $one_match, $num_pos, 4); } } return $result; } } lib/email_unlockRequest.php000064400000004535152331132450012044 0ustar00 %1$s requested instructions to regain access to the website %3$s.', 'wordfence'), esc_html($IP), esc_attr(wfUtils::getSiteBaseURL()), esc_html($siteName)), array('a'=>array('href'=>array()), 'b'=>array())); ?>




will be valid for 30 minutes from the time they were sent.', 'wordfence'), array('b'=>array())); ?>
  • .
lib/wfArray.php000064400000003411152331132450007434 0ustar00keys = $keys; } public function push($val){ //associative array with keys that match those given to constructor foreach($this->keys as $key){ $this->data .= pack('N', wfUtils::strlen($val[$key])) . $val[$key]; } $this->size++; } public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing $arr = array(); if(wfUtils::strlen($this->data) < 1){ return null; } if($this->shiftPtr == wfUtils::strlen($this->data)){ return null; } foreach($this->keys as $key){ $len = unpack('N', wfUtils::substr($this->data, $this->shiftPtr, 4)); $len = $len[1]; $arr[$key] = wfUtils::substr($this->data, $this->shiftPtr + 4, $len); $this->shiftPtr += 4 + $len; } if($this->shiftPtr == wfUtils::strlen($this->data)){ //garbage collection $this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem $this->shiftPtr = 0; } $this->size--; return $arr; } public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array. //If you don't collect garbage then the data that is shifted is never freed $this->data = wfUtils::substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to. $this->shiftPtr = 0; } public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient. $this->data = ""; $this->shiftPtr = 0; $this->size = 0; } public function size(){ return $this->size; } } lib/noc1.key000064400000003223152331132450006663 0ustar00-----BEGIN CERTIFICATE----- MIIErTCCAxWgAwIBAgIJAOj4d3hU6MEPMA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRIw EAYDVQQKDAlXb3JkZmVuY2UxCzAJBgNVBAsMAklUMRYwFAYDVQQDDA13b3JkZmVu Y2UuY29tMB4XDTE5MDEwOTE5MDQzMloXDTM5MDEwNDE5MDQzMlowbTELMAkGA1UE BhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxEjAQ BgNVBAoMCVdvcmRmZW5jZTELMAkGA1UECwwCSVQxFjAUBgNVBAMMDXdvcmRmZW5j ZS5jb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDBkaEjT0/Gmxi7 tl7qaX2/TiHXdP4SgqQepP/gIgKTdj71oBZzVvZPztlStQEUO1u0m6eZT3BHQPV7 inzsjz5SpCjChjH6se/DwnAJNaU7c2WUWhVATvwSX0gwDYCCbcS2IG0KUllvtWh9 8JOGG46X/51vxwR3wiJoVvziZJIs8A4n9/qYBWxL7IKAl//EGwm4SacrUVJNxAXo h3MaIJ5TlEi1xO8NQ/mUzFOJcKhNq94wcco1sffDoe4ctWxydhlpS5GCW/uGveOX ZLpwiOXVaG1HQx2YoI3Y9RK8y9eXM3IbdKwKSbV7l0TEQBuh20PLk/8DNG4Ba3Gg yFEMzPjQnyp5OzohLdm4WphRHiA631UcX7ZSrDDfET7a+YsYX2EDcnZRmO/KLkuk +yXYXRF/1bfuR5sI8l9nPakKXRlG6KbPHKdP//J0ZKVAJyZOhEXfB+X3zFyowUyh 2hjgSZuwS9DYAidNXq/hSMQLALEnwB9YFdxpxSs3sWdbKkDQGHMCAwEAAaNQME4w HQYDVR0OBBYEFNHk65/wXrYwxPt2wapRH9XU4rRjMB8GA1UdIwQYMBaAFNHk65/w XrYwxPt2wapRH9XU4rRjMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggGB AGU/5CxUCxFrVY9qoTRwsx24Prphu8H9Y/je7G+HoZJPj70Qv+8EuzxTmsAeNgG4 xcLIO1WWgAgsvb6XilEaYGO5GOCHctIMjnbauegcmkM4NMTNfzStu+v1mjV/cw/9 bzEM9Rr1Jc+mQXq8K6zXTaBXo7GU+WqTAadHhbUCWD5afQ9Kq8OCKaM4NBf2guQl PU2HQts8reYn7VeqWz063RLuRAAwf59vZbi3foqTBYSiDHjAykDe4LsvUWtS1y7t Dxyz+YSATCxpnkDWEoad+kKZ1qpgqiewp/tLnDR1LOIDmWu9KongslEHUAmAN/T1 otTWmQOeg/cnT1W/yqapxzpOmvLb28f9shMbGvmQpvle/JNVeoQyM3NF7t1rCbGT aqCI9kjWOoLd7t4svtGyR6IOKUbXqT5U9q1bMXIWH+ty8KmxzsvEBHXmYF6+jYr+ tWlXyhcN+OyPcBDHaNlFtQi+eKzjTUhSVvxJaKo3R6q4j8SVR613aa4AxunY2jdi zQ== -----END CERTIFICATE-----languages/wordfence.mo000064400000000661152331132450011025 0ustar00$,8w9Project-Id-Version: Wordfence Security 7.4.14 Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PO-Revision-Date: 2021-02-11 14:02-0500 X-Generator: Poedit 2.4.2 X-Domain: wordfence Last-Translator: Language-Team: Plural-Forms: nplurals=2; plural=(n != 1); Language: en languages/wordfence.po000064400001254623152331132450011042 0ustar00# Copyright (C) 2021 Wordfence # This file is distributed under the same license as the Wordfence Security plugin. msgid "" msgstr "" "Project-Id-Version: Wordfence Security 7.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2021-03-19T15:54:58+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.4.0\n" "X-Domain: wordfence\n" #. Plugin Name of the plugin msgid "Wordfence Security" msgstr "" #. Plugin URI of the plugin #. Author URI of the plugin msgid "http://www.wordfence.com/" msgstr "" #. Description of the plugin msgid "Wordfence Security - Anti-virus, Firewall and Malware Scan" msgstr "" #. Author of the plugin msgid "Wordfence" msgstr "" #: lib/dashboard/widget_content_countries.php:6 #: lib/dashboard/widget_content_ips.php:7 #: lib/dashboard/widget_ips.php:116 #: views/blocking/blocking-create.php:14 #: views/reports/activity-report-email-inline.php:147 #: views/reports/activity-report-email-inline.php:201 #: views/reports/activity-report.php:17 #: views/reports/activity-report.php:61 msgid "Country" msgstr "" #: lib/dashboard/widget_content_countries.php:7 #: lib/dashboard/widget_content_ips.php:8 #: lib/dashboard/widget_ips.php:117 #: views/blocking/block-list.php:73 #: views/reports/activity-report-email-inline.php:148 #: views/reports/activity-report-email-inline.php:203 #: views/reports/activity-report.php:18 #: views/reports/activity-report.php:63 msgid "Block Count" msgstr "" #: lib/dashboard/widget_content_ips.php:6 #: lib/dashboard/widget_content_logins.php:7 #: lib/dashboard/widget_ips.php:115 #: lib/dashboard/widget_logins.php:96 #: lib/wordfenceClass.php:6101 #: views/reports/activity-report-email-inline.php:146 #: views/reports/activity-report.php:16 #: views/waf/option-whitelist.php:110 #: views/waf/options-group-whitelisted.php:87 #: views/waf/options-group-whitelisted.php:100 msgid "IP" msgstr "" #: lib/dashboard/widget_content_logins.php:6 #: lib/dashboard/widget_logins.php:95 #: lib/wordfenceClass.php:6176 #: views/reports/activity-report-email-inline.php:256 #: views/reports/activity-report.php:106 msgid "Username" msgstr "" #: lib/dashboard/widget_content_logins.php:8 #: lib/dashboard/widget_logins.php:97 msgid "Date" msgstr "" #: lib/dashboard/widget_countries.php:9 msgid "Top Countries by Number of Attacks - Last 7 Days" msgstr "" #: lib/dashboard/widget_countries.php:16 #: lib/dashboard/widget_ips.php:21 #: lib/dashboard/widget_localattacks.php:17 msgid "No Data Available During Learning Mode" msgstr "" #: lib/dashboard/widget_countries.php:25 #: lib/dashboard/widget_networkattacks.php:8 #: lib/wfDiagnostic.php:779 msgid "Wordfence Network" msgstr "" #: lib/dashboard/widget_countries.php:31 #: lib/dashboard/widget_countries.php:38 #: lib/dashboard/widget_ips.php:35 #: lib/dashboard/widget_ips.php:45 #: lib/dashboard/widget_ips.php:55 #: lib/dashboard/widget_localattacks.php:32 msgid "No blocks have been recorded." msgstr "" #: lib/dashboard/widget_ips.php:14 msgid "Top IPs Blocked" msgstr "" #: lib/dashboard/widget_ips.php:28 #: lib/dashboard/widget_networkattacks.php:22 msgid "24 Hours" msgstr "" #: lib/dashboard/widget_ips.php:29 msgid "7 Days" msgstr "" #: lib/dashboard/widget_ips.php:30 #: lib/dashboard/widget_networkattacks.php:24 msgid "30 Days" msgstr "" #: lib/dashboard/widget_ips.php:39 #: lib/dashboard/widget_ips.php:49 #: lib/dashboard/widget_ips.php:59 #: lib/dashboard/widget_logins.php:30 #: lib/dashboard/widget_logins.php:40 msgid "Show more" msgstr "" #. translators: WordPress username. #: lib/dashboard/widget_ips.php:96 #: lib/dashboard/widget_logins.php:77 #: lib/wordfenceClass.php:6047 msgid "An error occurred" msgstr "" #: lib/dashboard/widget_ips.php:96 #: lib/dashboard/widget_logins.php:77 msgid "We encountered an error trying load more data." msgstr "" #: lib/dashboard/widget_localattacks.php:8 msgid "Firewall Summary:" msgstr "" #. translators: The site's domain name. #: lib/dashboard/widget_localattacks.php:10 msgid "Attacks Blocked for %s" msgstr "" #: lib/dashboard/widget_localattacks.php:37 #: views/blocking/blocking-create.php:10 msgid "Block Type" msgstr "" #: lib/dashboard/widget_localattacks.php:44 msgid "Total" msgstr "" #: lib/dashboard/widget_localattacks.php:49 msgid "Today" msgstr "" #: lib/dashboard/widget_localattacks.php:49 msgid "Week" msgstr "" #: lib/dashboard/widget_localattacks.php:49 msgid "Month" msgstr "" #: lib/dashboard/widget_localattacks.php:64 #: lib/menu_firewall_waf.php:52 #: lib/menu_firewall_waf_options.php:158 #: lib/menu_scanner.php:77 #: lib/menu_scanner_options.php:132 msgid "Premium" msgstr "" #: lib/dashboard/widget_localattacks.php:70 msgid "How are these categorized?" msgstr "" #: lib/dashboard/widget_logins.php:9 #: views/reports/activity-report-email-inline.php:257 #: views/reports/activity-report.php:107 msgid "Login Attempts" msgstr "" #: lib/dashboard/widget_logins.php:20 msgid "Successful" msgstr "" #: lib/dashboard/widget_logins.php:21 msgid "Failed" msgstr "" #: lib/dashboard/widget_logins.php:26 msgid "No successful logins have been recorded." msgstr "" #: lib/dashboard/widget_logins.php:36 msgid "No failed logins have been recorded." msgstr "" #: lib/dashboard/widget_networkattacks.php:8 msgid "Total Attacks Blocked:" msgstr "" #: lib/dashboard/widget_networkattacks.php:17 msgid "Blocked attack counts not available yet." msgstr "" #: lib/dashboard/widget_networkattacks.php:33 msgid "Total Attacks" msgstr "" #. translators: Time since. Example: 1 minute, 2 seconds #: lib/dashboard/widget_networkattacks.php:209 msgid "Last Updated: %s ago" msgstr "" #: lib/dashboard/widget_notifications.php:8 #: lib/wordfenceClass.php:6641 msgid "Notifications" msgstr "" #: lib/dashboard/widget_notifications.php:25 msgid "No notifications received" msgstr "" #: lib/dashboard/widget_notifications.php:37 #: lib/menu_wordfence_central.php:64 msgid "Wordfence Central Status" msgstr "" #. translators: 1. Email address. 2. Localized date. #: lib/dashboard/widget_notifications.php:42 msgid "Connected by %1$s on %2$s" msgstr "" #. translators: 1. Email address. 2. Localized date. #: lib/dashboard/widget_notifications.php:46 msgid "Disconnected by %1$s on %2$s" msgstr "" #: lib/dashboard/widget_notifications.php:48 #: lib/menu_wordfence_central.php:107 msgid "It looks like you've tried to connect this site to Wordfence Central, but the installation did not finish." msgstr "" #: lib/dashboard/widget_notifications.php:50 #: lib/menu_wordfence_central.php:58 #: lib/menu_wordfence_central.php:117 msgid "Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier." msgstr "" #: lib/dashboard/widget_notifications.php:58 #: lib/menu_wordfence_central.php:111 #: views/onboarding/banner.php:9 #: views/onboarding/disabled-overlay.php:8 msgid "Resume Installation" msgstr "" #: lib/dashboard/widget_notifications.php:59 #: lib/dashboard/widget_notifications.php:64 #: lib/menu_wordfence_central.php:68 msgid "Disconnect This Site" msgstr "" #: lib/dashboard/widget_notifications.php:66 msgid "Reconnect This Site" msgstr "" #: lib/dashboard/widget_notifications.php:66 msgid "Connect This Site" msgstr "" #: lib/dashboard/widget_notifications.php:69 #: lib/menu_wordfence_central.php:59 msgid "Visit Wordfence Central" msgstr "" #: lib/dashboard/widget_notifications.php:132 msgid "Confirm Disconnect" msgstr "" #: lib/dashboard/widget_notifications.php:133 msgid "Are you sure you want to disconnect your site from Wordfence Central?" msgstr "" #. translators: Support URL. #: lib/dashboard/widget_notifications.php:134 #: lib/menu_scanner.php:217 #: lib/menu_scanner.php:228 #: lib/menu_tools_diagnostic.php:981 #: lib/menu_tools_twoFactor.php:235 #: lib/menu_tools_twoFactor.php:273 #: lib/wordfenceClass.php:7931 #: lib/wordfenceClass.php:7975 #: lib/wordfenceClass.php:8039 #: lib/wordfenceClass.php:8099 #: lib/wordfenceClass.php:8145 #: views/blocking/block-list.php:501 #: views/blocking/blocking-create.php:212 #: views/dashboard/options-group-license.php:150 #: views/options/block-all-options-controls.php:164 #: views/options/block-controls.php:79 msgid "Cancel" msgstr "" #: lib/dashboard/widget_notifications.php:135 msgid "Disconnect" msgstr "" #: lib/diffResult.php:9 msgid "Wordfence: Viewing File Differences" msgstr "" #: lib/diffResult.php:11 msgid "The two panels below show a before and after view of a file on your system that has been modified. The left panel shows the original file before modification. The right panel shows your version of the file that has been modified. Use this view to determine if a file has been modified by an attacker or if this is a change that you or another trusted person made. If you are happy with the modifications you see here, then you should choose to ignore this file the next time Wordfence scans your system." msgstr "" #: lib/diffResult.php:14 #: lib/wfViewResult.php:10 msgid "Filename:" msgstr "" #: lib/diffResult.php:15 msgid "File type:" msgstr "" #: lib/diffResult.php:18 msgid "WordPress Core File" msgstr "" #: lib/diffResult.php:20 msgid "Theme File" msgstr "" #: lib/diffResult.php:21 msgid "Theme Name:" msgstr "" #: lib/diffResult.php:23 msgid "Theme Version:" msgstr "" #: lib/diffResult.php:25 msgid "Plugin File" msgstr "" #: lib/diffResult.php:26 msgid "Plugin Name:" msgstr "" #: lib/diffResult.php:27 msgid "Plugin Version:" msgstr "" #: lib/diffResult.php:29 msgid "Unknown Type" msgstr "" #: lib/diffResult.php:38 msgid "There are no differences between the original file and the file in the repository." msgstr "" #: lib/diffResult.php:44 msgid "© %1$d to %2$d Wordfence — Visit Wordfence.com for help, security updates and more." msgstr "" #. translators: 1. Blog name/title. 2. Date. #: lib/email_genericAlert.php:4 msgid "This email was sent from your website \"%1$s\" by the Wordfence plugin at %2$s" msgstr "" #. translators: URL to the WordPress admin panel. #: lib/email_genericAlert.php:8 msgid "The Wordfence administrative URL for this site is: %s" msgstr "" #: lib/email_genericAlert.php:14 msgid "" "NOTE: You are using the free version of Wordfence. Upgrade today:\n" " - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge\n" " - Real-time IP Blocklist blocks the most malicious IPs from accessing your site\n" " - Country blocking\n" " - IP reputation monitoring\n" " - Schedule scans to run more frequently and at optimal times\n" " - Access to Premium Support\n" " - Discounts for multi-year and multi-license purchases\n" "\n" "Click here to upgrade to Wordfence Premium:\n" "https://www.wordfence.com/zz1/wordfence-signup/" msgstr "" #. translators: URL to the WordPress admin panel. #: lib/email_genericAlert.php:30 msgid "" "To change your alert options for Wordfence, visit:\n" "%s" msgstr "" #. translators: URL to the WordPress admin panel. #: lib/email_genericAlert.php:34 msgid "" "To see current Wordfence alerts, visit:\n" "%s" msgstr "" #. translators: URL to the site's homepage. #: lib/email_newIssues.php:5 msgid "This email was sent from your website \"%s\" by the Wordfence plugin." msgstr "" #. translators: 1. URL to the site's homepage. 2. Number of scan results. #: lib/email_newIssues.php:12 msgid "Wordfence found the following new issues on \"%1$s\" (%2$d existing issue was also found again)." msgid_plural "Wordfence found the following new issues on \"%1$s\" (%2$d existing issues were also found again)." msgstr[0] "" msgstr[1] "" #. translators: 1. URL to the site's homepage. #: lib/email_newIssues.php:22 msgid "Wordfence found the following new issues on \"%1$s\"." msgstr "" #. translators: Localized date. #: lib/email_newIssues.php:32 msgid "Alert generated at %s" msgstr "" #. translators: URL to WordPress admin panel. #: lib/email_newIssues.php:38 msgid "See the details of these scan results on your site at: %s" msgstr "" #: lib/email_newIssues.php:42 msgid "HIGH SENSITIVITY scanning is enabled, it may produce false positives" msgstr "" #: lib/email_newIssues.php:48 #: lib/menu_scanner.php:119 msgid "Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites." msgstr "" #: lib/email_newIssues.php:48 msgid "The Beta option can be turned off at the bottom of the Diagnostics page." msgstr "" #. translators: 1. URL to WordPress admin panel. 2. URL to WordPress admin panel. 3. URL to Wordfence support page. 4. URL to Wordfence support page. #: lib/email_newIssues.php:56 msgid "The scan was terminated early because it reached the time limit for scans. If you would like to allow your scans to run longer, you can customize the limit on the options page: %2$s or read more about scan options to improve scan speed here: %4$s" msgstr "" #: lib/email_newIssues.php:62 msgid "Critical Problems:" msgstr "" #: lib/email_newIssues.php:63 msgid "High Severity Problems:" msgstr "" #: lib/email_newIssues.php:64 msgid "Medium Severity Problems:" msgstr "" #: lib/email_newIssues.php:65 msgid "Low Severity Problems:" msgstr "" #: lib/email_newIssues.php:84 msgid "Plugin contains an unpatched security vulnerability." msgstr "" #: lib/email_newIssues.php:86 #: lib/email_newIssues.php:108 #: views/scanner/issue-wfPluginAbandoned.php:20 #: views/scanner/issue-wfPluginAbandoned.php:37 #: views/scanner/issue-wfPluginRemoved.php:18 #: views/scanner/issue-wfPluginRemoved.php:32 #: views/scanner/issue-wfPluginUpgrade.php:20 #: views/scanner/issue-wfPluginUpgrade.php:37 #: views/scanner/issue-wfPluginVulnerable.php:19 #: views/scanner/issue-wfPluginVulnerable.php:34 #: views/scanner/issue-wfThemeUpgrade.php:19 #: views/scanner/issue-wfThemeUpgrade.php:35 #: views/scanner/issue-wfUpgrade.php:17 #: views/scanner/issue-wfUpgrade.php:31 msgid "Vulnerability Information" msgstr "" #: lib/email_newIssues.php:92 msgid "The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed." msgstr "" #: lib/email_newIssues.php:95 msgid "Firewall issues may be caused by file permission changes or other technical problems." msgstr "" #: lib/email_newIssues.php:95 msgid "More Details and Instructions" msgstr "" #: lib/email_newIssues.php:98 msgid "Scanning additional paths is optional and is not always necessary." msgstr "" #. translators: 1. WordPress version. 2. WordPress version. #: lib/email_newIssues.php:98 #: lib/email_unlockRequest.php:14 #: lib/menu_dashboard.php:118 #: lib/menu_dashboard.php:478 #: lib/menu_dashboard_options.php:162 #: lib/wfVersionCheckController.php:68 #: lib/wfVersionCheckController.php:91 #: lib/wfVersionCheckController.php:167 #: lib/wfVersionCheckController.php:186 #: views/blocking/blocking-status.php:27 #: views/dashboard/options-group-dashboard.php:107 #: views/gdpr/banner.php:55 #: views/onboarding/fresh-install.php:44 #: views/onboarding/modal-final-attempt.php:42 #: views/onboarding/plugin-header.php:66 #: views/scanner/scanner-status.php:55 #: views/tours/login-security.php:30 #: views/tours/login-security.php:62 #: views/waf/firewall-status.php:58 #: views/waf/firewall-status.php:68 #: views/waf/options-group-basic-firewall.php:467 msgid "Learn More" msgstr "" #: lib/email_newIssues.php:106 #: views/scanner/issue-wfPluginUpgrade.php:16 #: views/scanner/issue-wfPluginUpgrade.php:33 #: views/scanner/issue-wfThemeUpgrade.php:16 #: views/scanner/issue-wfThemeUpgrade.php:32 #: views/scanner/issue-wfUpgrade.php:15 #: views/scanner/issue-wfUpgrade.php:29 msgid "Update includes security-related fixes." msgstr "" #: lib/email_newIssues.php:124 msgid "The malicious URL matched" msgstr "" #. translators: Number of scan results #: lib/email_newIssues.php:133 msgid "%d existing issue was found again and is not shown." msgid_plural "%d existing issues were found again and are not shown." msgstr[0] "" msgstr[1] "" #. translators: Number of scan results #: lib/email_newIssues.php:136 msgid "%d issue was omitted from this email due to length limits." msgid_plural "%d issues were omitted from this email due to length limits." msgstr[0] "" msgstr[1] "" #. translators: Number of scan results #: lib/email_newIssues.php:137 msgid "View every issue:" msgstr "" #: lib/email_newIssues.php:146 msgid "NOTE: You are using the free version of Wordfence. Upgrade today:" msgstr "" #: lib/email_newIssues.php:149 msgid "Receive real-time Firewall and Scan engine rule updates for protection as threats emerge" msgstr "" #: lib/email_newIssues.php:150 msgid "Real-time IP Blocklist blocks the most malicious IPs from accessing your site" msgstr "" #: lib/email_newIssues.php:151 msgid "Country blocking" msgstr "" #: lib/email_newIssues.php:152 msgid "IP reputation monitoring" msgstr "" #: lib/email_newIssues.php:153 msgid "Schedule scans to run more frequently and at optimal times" msgstr "" #: lib/email_newIssues.php:154 msgid "Access to Premium Support" msgstr "" #: lib/email_newIssues.php:155 msgid "Discounts for multi-year and multi-license purchases" msgstr "" #: lib/email_newIssues.php:158 msgid "Click here to upgrade to Wordfence Premium:" msgstr "" #. translators: 1. IP address. 2. Site URL. 3. Site name. #: lib/email_unlockRequest.php:4 msgid "Either you or someone else at IP address %1$s requested instructions to regain access to the website %3$s." msgstr "" #. translators: Localized date. #: lib/email_unlockRequest.php:8 #: lib/email_unsubscribeRequest.php:8 msgid "Request was generated at: %s" msgstr "" #: lib/email_unlockRequest.php:10 msgid "If you did not request these instructions then you can safely ignore them." msgstr "" #: lib/email_unlockRequest.php:11 msgid "These instructions will be valid for 30 minutes from the time they were sent." msgstr "" #: lib/email_unlockRequest.php:14 msgid "Click here to unlock your ability to sign-in and to access to the site." msgstr "" #: lib/email_unlockRequest.php:14 msgid "Do this if you simply need to regain access because you were accidentally locked out. If you received an \"Insecure Password\" message before getting locked out, you may also need to reset your password." msgstr "" #: lib/email_unlockRequest.php:17 msgid "Click here to unblock all IP addresses." msgstr "" #: lib/email_unlockRequest.php:17 msgid "Do this if you still can't regain access using the link above. It causes everyone who is blocked or locked out to be able to access your site again." msgstr "" #: lib/email_unlockRequest.php:20 msgid "Click here to unlock all IP addresses and disable the Wordfence Firewall and Wordfence login security for all users" msgstr "" #: lib/email_unlockRequest.php:20 msgid "Do this if you keep getting locked out or blocked and can't access your site. You can re-enable login security and the firewall once you sign-in to the site by visiting the Wordfence Firewall menu, clicking and then turning on the firewall and login security options. If you use country blocking, you will also need to choose which countries to block." msgstr "" #. translators: 1. IP address. 2. Site URL. 3. Site name. #: lib/email_unsubscribeRequest.php:4 msgid "Either you or someone at IP address %1$s requested an alert unsubscribe link for the website %3$s." msgstr "" #: lib/email_unsubscribeRequest.php:10 msgid "If you did not request this, you can safely ignore it." msgstr "" #. translators: URL to WordPress admin panel. #: lib/email_unsubscribeRequest.php:14 msgid "Click here to stop receiving security alerts." msgstr "" #. translators: IP address. #: lib/IPTraf.php:11 msgid "Wordfence: All recent hits for IP address %s" msgstr "" #. translators: 1. year (2011). 2. year (2020) #: lib/IPTraf.php:14 #: lib/sysinfo.php:20 #: lib/wfViewResult.php:25 msgid "© %d to %d Wordfence — Visit Wordfence.com for help, security updates and more." msgstr "" #: lib/IPTrafList.php:13 #: lib/wfLockedOut.php:347 msgid "Time:" msgstr "" #. translators: 1. Time ago, example: 2 hours, 40 seconds. 2. Localized date. 3. Unix timestamp. #: lib/IPTrafList.php:16 msgid "%1$s ago -- %2$s -- %3$s in Unixtime" msgstr "" #: lib/IPTrafList.php:19 msgid "Seconds since last hit:" msgstr "" #: lib/IPTrafList.php:22 #: lib/menu_tools_livetraffic.php:251 msgid "URL:" msgstr "" #: lib/IPTrafList.php:34 msgid "Normal request" msgstr "" #: lib/IPTrafList.php:39 msgid "Referrer:" msgstr "" #: lib/IPTrafList.php:44 msgid "Full Browser ID:" msgstr "" #: lib/IPTrafList.php:49 msgid "User:" msgstr "" #: lib/IPTrafList.php:57 msgid "Location:" msgstr "" #: lib/live_activity.php:5 msgid "Wordfence Live Activity:" msgstr "" #: lib/menu_dashboard.php:24 #: lib/wordfenceClass.php:6543 msgid "Wordfence Dashboard" msgstr "" #: lib/menu_dashboard.php:26 msgid "Learn more about the Dashboard" msgstr "" #: lib/menu_dashboard.php:54 #: lib/menu_dashboard_options.php:98 #: lib/menu_firewall.php:20 #: lib/menu_firewall.php:30 #: lib/wordfenceClass.php:6547 #: models/page/wfPage.php:105 msgid "Firewall" msgstr "" #: lib/menu_dashboard.php:55 #: lib/menu_dashboard_options.php:99 msgid "WAF Currently in Learning Mode" msgstr "" #: lib/menu_dashboard.php:55 #: lib/menu_dashboard_options.php:99 msgid "Protection from known and emerging threats" msgstr "" #: lib/menu_dashboard.php:57 #: lib/menu_dashboard_options.php:101 #: views/waf/firewall-status.php:58 msgid "Manage Firewall" msgstr "" #: lib/menu_dashboard.php:58 #: lib/menu_dashboard_options.php:102 msgid "Firewall Status" msgstr "" #: lib/menu_dashboard.php:61 #: lib/menu_dashboard.php:77 #: lib/menu_dashboard_options.php:105 #: lib/menu_dashboard_options.php:121 msgid "https://www.wordfence.com/help/dashboard/#dashboard-status" msgstr "" #: lib/menu_dashboard.php:71 #: lib/menu_dashboard_options.php:115 #: lib/menu_scanner.php:31 #: lib/menu_scanner.php:305 #: lib/wordfenceClass.php:6554 #: models/page/wfPage.php:113 msgid "Scan" msgstr "" #: lib/menu_dashboard.php:72 #: lib/menu_dashboard_options.php:116 msgid "Detection of security issues" msgstr "" #: lib/menu_dashboard.php:74 #: lib/menu_dashboard_options.php:118 #: lib/menu_scanner.php:64 msgid "Manage Scan" msgstr "" #: lib/menu_dashboard.php:75 #: lib/menu_dashboard_options.php:119 #: lib/menu_options.php:87 #: lib/menu_scanner.php:65 #: lib/menu_scanner_options.php:120 #: views/dashboard/options-group-dashboard.php:97 msgid "Scan Status" msgstr "" #: lib/menu_dashboard.php:86 #: lib/menu_dashboard_options.php:130 msgid "Premium License Conflict" msgstr "" #: lib/menu_dashboard.php:87 #: lib/menu_dashboard_options.php:131 msgid "License already in use" msgstr "" #: lib/menu_dashboard.php:89 #: lib/menu_dashboard_options.php:133 msgid "Reset License" msgstr "" #: lib/menu_dashboard.php:97 #: lib/menu_dashboard.php:108 #: lib/menu_dashboard.php:116 #: lib/menu_dashboard_options.php:141 #: lib/menu_dashboard_options.php:152 #: lib/menu_dashboard_options.php:160 #: views/scanner/scanner-status.php:53 #: views/waf/firewall-status.php:66 msgid "Premium Protection Disabled" msgstr "" #: lib/menu_dashboard.php:98 #: lib/menu_dashboard_options.php:142 msgid "License is expired" msgstr "" #: lib/menu_dashboard.php:100 #: lib/menu_dashboard.php:127 #: lib/menu_dashboard_options.php:144 #: lib/menu_dashboard_options.php:171 msgid "Renew License" msgstr "" #: lib/menu_dashboard.php:109 #: lib/menu_dashboard_options.php:153 msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help." msgstr "" #: lib/menu_dashboard.php:117 #: lib/menu_dashboard_options.php:161 #: views/waf/firewall-status.php:67 msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection." msgstr "" #: lib/menu_dashboard.php:118 #: lib/menu_dashboard_options.php:162 #: lib/menu_firewall_waf.php:55 #: lib/menu_firewall_waf.php:72 #: lib/menu_scanner.php:80 #: lib/menu_support.php:43 #: lib/menu_tools_twoFactor.php:51 #: views/blocking/blocking-create.php:179 #: views/blocking/blocking-status.php:23 #: views/blocking/blocking-status.php:27 #: views/blocking/options-group-advanced-country.php:85 #: views/dashboard/options-group-dashboard.php:107 #: views/dashboard/options-group-license.php:70 #: views/onboarding/fresh-install.php:43 #: views/onboarding/modal-final-attempt.php:41 #: views/onboarding/plugin-header.php:65 #: views/scanner/scanner-status.php:55 #: views/tools/options-group-2fa.php:40 #: views/waf/firewall-status.php:68 #: views/waf/options-group-basic-firewall.php:467 msgid "Upgrade to Premium" msgstr "" #: lib/menu_dashboard.php:124 #: lib/menu_dashboard.php:183 #: lib/menu_dashboard_options.php:168 #: lib/menu_dashboard_options.php:225 msgid "Premium License Expiring" msgstr "" #: lib/menu_dashboard.php:125 #: lib/menu_dashboard_options.php:169 msgid "Auto-renew is disabled" msgstr "" #: lib/menu_dashboard.php:134 #: lib/menu_dashboard_options.php:178 msgid "Payment Method Expiring" msgstr "" #: lib/menu_dashboard.php:137 #: lib/menu_dashboard_options.php:181 msgid "Payment Method Expired" msgstr "" #: lib/menu_dashboard.php:140 #: lib/menu_dashboard_options.php:184 msgid "Payment Method Missing" msgstr "" #: lib/menu_dashboard.php:143 #: lib/menu_dashboard_options.php:187 msgid "Payment Method Invalid" msgstr "" #: lib/menu_dashboard.php:149 #: lib/menu_dashboard.php:172 msgid "License renews today" msgstr "" #: lib/menu_dashboard.php:152 msgid "License renews tomorrow" msgstr "" #. translators: Number of days #: lib/menu_dashboard.php:157 #: lib/menu_dashboard.php:178 msgid "License renews in %d days" msgstr "" #: lib/menu_dashboard.php:165 #: lib/menu_dashboard_options.php:207 msgid "Update Payment Method" msgstr "" #: lib/menu_dashboard.php:175 msgid "License renews in 1 day" msgstr "" #: lib/menu_dashboard.php:186 #: lib/menu_dashboard_options.php:228 msgid "Review Payment Method" msgstr "" #: lib/menu_dashboard.php:194 #: lib/menu_dashboard_options.php:236 msgid "Wordfence Premium Enabled" msgstr "" #: lib/menu_dashboard.php:220 #: lib/wordfenceClass.php:6558 msgid "Tools" msgstr "" #: lib/menu_dashboard.php:221 msgid "Live Traffic, Whois Lookup, Import/Export, and Diagnostics" msgstr "" #: lib/menu_dashboard.php:231 #: lib/menu_firewall_waf.php:157 #: lib/menu_scanner.php:139 #: lib/menu_support.php:19 #: lib/wordfenceClass.php:6571 msgid "Help" msgstr "" #: lib/menu_dashboard.php:232 #: lib/menu_firewall_waf.php:158 #: lib/menu_scanner.php:140 msgid "Find the documentation and help you need" msgstr "" #: lib/menu_dashboard.php:242 #: models/page/wfPage.php:103 msgid "Global Options" msgstr "" #: lib/menu_dashboard.php:243 msgid "Manage global options for Wordfence such as alerts, premium status, and more" msgstr "" #: lib/menu_dashboard.php:294 msgid "This is your Dashboard" msgstr "" #: lib/menu_dashboard.php:295 msgid "The Wordfence Dashboard provides valuable insights into the current state of your site's security. You'll find useful data summarized here as well as important status updates and notifications." msgstr "" #: lib/menu_dashboard.php:302 #: lib/menu_dashboard.php:318 #: lib/menu_dashboard.php:381 #: lib/menu_dashboard.php:398 #: lib/menu_dashboard.php:416 #: lib/menu_firewall_blocking.php:127 #: lib/menu_firewall_blocking.php:143 #: lib/menu_firewall_blocking.php:211 #: lib/menu_firewall_waf.php:255 #: lib/menu_firewall_waf.php:272 #: lib/menu_firewall_waf.php:289 #: lib/menu_scanner.php:313 #: lib/menu_scanner.php:330 #: lib/menu_scanner.php:382 #: views/tours/login-security.php:37 #: views/tours/login-security.php:53 msgid "Next" msgstr "" #: lib/menu_dashboard.php:309 msgid "Easily Monitor Your Wordfence Protection" msgstr "" #: lib/menu_dashboard.php:310 msgid "Each feature contains a status that reminds you what's enabled, disabled or needs attention. The Notifications section will highlight actions you need to take." msgstr "" #: lib/menu_dashboard.php:317 #: lib/menu_dashboard.php:334 #: lib/menu_dashboard.php:397 #: lib/menu_dashboard.php:415 #: lib/menu_dashboard.php:432 #: lib/menu_firewall_blocking.php:142 #: lib/menu_firewall_blocking.php:158 #: lib/menu_firewall_blocking.php:225 #: lib/menu_firewall_waf.php:271 #: lib/menu_firewall_waf.php:288 #: lib/menu_firewall_waf.php:306 #: lib/menu_scanner.php:329 #: lib/menu_scanner.php:345 #: lib/menu_scanner.php:396 #: views/tours/login-security.php:52 #: views/tours/login-security.php:69 msgid "Previous" msgstr "" #: lib/menu_dashboard.php:325 #: lib/menu_dashboard.php:405 msgid "Global Wordfence Options" msgstr "" #: lib/menu_dashboard.php:327 msgid "You'll find this icon throughout the plugin. Clicking it will show you the options and features for each section of Wordfence. From the dashboard, you can find the Global Options for Wordfence such as alerts, automatic updates, and managing your site's Premium License." msgstr "" #: lib/menu_dashboard.php:335 #: lib/menu_dashboard.php:433 #: lib/menu_firewall_blocking.php:159 #: lib/menu_firewall_blocking.php:226 #: lib/menu_firewall_waf.php:307 #: lib/menu_firewall_waf.php:354 #: lib/menu_scanner.php:346 #: lib/menu_scanner.php:397 #: lib/menu_tools_livetraffic.php:577 #: lib/menu_tools_livetraffic.php:608 msgid "Got it" msgstr "" #. translators: Wordfence version. #: lib/menu_dashboard.php:371 msgid "You have successfully updated to Wordfence %s" msgstr "" #: lib/menu_dashboard.php:372 msgid "This update includes a number of significant interface changes. We'd like to walk you through some of them, but you can bypass the tour for a section at any time by closing the dialogs." msgstr "" #: lib/menu_dashboard.php:373 msgid "We welcome your feedback and comments at feedback@wordfence.com. For a deeper dive on all of the changes, click here." msgstr "" #: lib/menu_dashboard.php:388 msgid "Monitor Your Wordfence Protection" msgstr "" #: lib/menu_dashboard.php:389 msgid "Each feature contains a status percentage reminding you at a high level of what's enabled, disabled, or needing your attention. The Notifications section highlights actions you need to take." msgstr "" #: lib/menu_dashboard.php:407 msgid "Manage your Wordfence license, see alerts and automatic plugin updates, and import/export your settings." msgstr "" #: lib/menu_dashboard.php:423 msgid "Updated Navigation" msgstr "" #: lib/menu_dashboard.php:424 msgid "The main navigation no longer includes an Options link. Options are now accessed via the Options link on each feature's main page. Live Traffic is now located in the Tools section, and blocking is found under the Firewall. Shortcuts to add a Blocking link back to the main navigation are available under Blocking options." msgstr "" #: lib/menu_dashboard.php:473 msgid "Recommended Settings Change" msgstr "" #: lib/menu_dashboard.php:474 msgid "Greetings! The default configuration for Wordfence Live Traffic has changed. The new default saves only logins and blocked requests, while this site is currently recording all traffic. Would you like to change to the new default?" msgstr "" #: lib/menu_dashboard.php:474 msgid "Rate limiting based on type of request (human vs crawler) may be less accurate because this prevents loading the extra JavaScript used for that identification." msgstr "" #: lib/menu_dashboard.php:475 msgid "Yes Please" msgstr "" #: lib/menu_dashboard.php:477 #: views/onboarding/fresh-install.php:45 #: views/onboarding/modal-final-attempt.php:43 #: views/onboarding/plugin-header.php:67 msgid "No Thanks" msgstr "" #: lib/menu_dashboard_options.php:11 #: lib/menu_dashboard_options.php:79 #: lib/menu_options.php:272 msgid "Wordfence Global Options" msgstr "" #: lib/menu_dashboard_options.php:48 msgid "Back to Dashboard" msgstr "" #: lib/menu_dashboard_options.php:50 msgid "Are you sure you want to restore the default global settings? This will undo any custom changes you have made to the options on this page. Your configured license key and alert emails will not be changed." msgstr "" #: lib/menu_dashboard_options.php:81 msgid "Learn more about Global Options" msgstr "" #: lib/menu_dashboard_options.php:193 #: lib/menu_dashboard_options.php:214 msgid "today" msgstr "" #: lib/menu_dashboard_options.php:196 msgid "tomorrow" msgstr "" #. translators: Number of days #: lib/menu_dashboard_options.php:199 #: lib/menu_dashboard_options.php:220 msgid "in %d days" msgstr "" #: lib/menu_dashboard_options.php:205 #: lib/menu_dashboard_options.php:226 msgid "License renews %s" msgstr "" #: lib/menu_dashboard_options.php:217 msgid "in 1 day" msgstr "" #: lib/menu_dashboard_options.php:278 #: lib/menu_dashboard_options.php:288 #: lib/menu_options.php:405 #: lib/menu_options.php:415 #: lib/menu_tools_importExport.php:7 #: lib/menu_tools_importExport.php:13 #: models/page/wfPage.php:121 #: views/dashboard/options-group-import.php:22 msgid "Import/Export Options" msgstr "" #: lib/menu_dashboard_options.php:286 msgid "Importing and exporting of options has moved to the Tools page" msgstr "" #: lib/menu_firewall.php:20 #: lib/menu_firewall_waf.php:35 #: lib/menu_firewall_waf_options.php:141 msgid "Web Application Firewall" msgstr "" #: lib/menu_firewall.php:21 #: lib/menu_firewall.php:41 #: lib/menu_firewall_blocking.php:119 #: lib/menu_firewall_waf.php:142 #: lib/wordfenceClass.php:6549 #: models/page/wfPage.php:109 msgid "Blocking" msgstr "" #: lib/menu_firewall.php:33 #: lib/menu_firewall_waf_options.php:124 msgid "Learn more about the Firewall" msgstr "" #: lib/menu_firewall.php:44 #: lib/menu_firewall_blocking_options.php:94 msgid "Learn more about Blocking" msgstr "" #: lib/menu_firewall_blocking.php:25 msgid "Note: Blocking is disabled when the option \"Enable Rate Limiting and Advanced Blocking\" is off." msgstr "" #: lib/menu_firewall_blocking.php:26 #: lib/menu_tools_twoFactor.php:79 msgid "Turn On" msgstr "" #. translators: PHP version. #: lib/menu_firewall_blocking.php:33 msgid "Note: The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP." msgstr "" #: lib/menu_firewall_blocking.php:34 msgid "More Information" msgstr "" #: lib/menu_firewall_blocking.php:40 msgid "Create a Blocking Rule" msgstr "" #: lib/menu_firewall_blocking.php:40 msgid "Edit Blocking Rule" msgstr "" #: lib/menu_firewall_blocking.php:120 msgid "Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers." msgstr "" #: lib/menu_firewall_blocking.php:134 #: lib/menu_firewall_blocking.php:204 msgid "Blocking Builder" msgstr "" #: lib/menu_firewall_blocking.php:135 msgid "All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you'll see it saved as a rule for your site." msgstr "" #: lib/menu_firewall_blocking.php:150 #: lib/menu_firewall_blocking.php:218 msgid "Manage Blocking Rules" msgstr "" #: lib/menu_firewall_blocking.php:151 msgid "Here's where you'll see all the blocking rules you've created. You can also manage them as well as remove or modify them from this table." msgstr "" #: lib/menu_firewall_blocking.php:205 msgid "All of the blocking rules you create are now in one central location. Simply choose the block type and enter the details for the rule you want to create. Premium users have access to advanced country blocking options, found via the Options link." msgstr "" #: lib/menu_firewall_blocking.php:219 msgid "All blocking rules you create will show here. You can manage them as well as remove or modify them from the same location." msgstr "" #: lib/menu_firewall_blocking_options.php:12 #: lib/menu_firewall_blocking_options.php:92 #: lib/menu_options.php:340 #: models/page/wfPage.php:111 #: views/blocking/blocking-status.php:14 msgid "Blocking Options" msgstr "" #. translators: Page title/label. #: lib/menu_firewall_blocking_options.php:51 #: lib/menu_firewall_waf_options.php:78 #: lib/menu_scanner_options.php:66 msgid "Back to %s" msgstr "" #: lib/menu_firewall_blocking_options.php:53 msgid "Are you sure you want to restore the default Blocking settings? This will undo any custom changes you have made to the options on this page. Any existing blocks will be preserved." msgstr "" #: lib/menu_firewall_blocking_options.php:104 msgid "General" msgstr "" #: lib/menu_firewall_blocking_options.php:118 msgid "Display Blocking menu option" msgstr "" #: lib/menu_firewall_waf.php:36 #: lib/menu_firewall_waf.php:53 #: lib/menu_firewall_waf_options.php:142 #: lib/menu_firewall_waf_options.php:159 msgid "Currently in Learning Mode" msgstr "" #: lib/menu_firewall_waf.php:36 #: lib/menu_firewall_waf_options.php:142 msgid "Stops Complex Attacks" msgstr "" #: lib/menu_firewall_waf.php:38 msgid "Manage WAF" msgstr "" #: lib/menu_firewall_waf.php:39 #: lib/menu_firewall_waf_options.php:145 #: lib/menu_options.php:104 #: views/waf/options-group-basic-firewall.php:34 msgid "Web Application Firewall Status" msgstr "" #: lib/menu_firewall_waf.php:42 #: lib/menu_firewall_waf.php:60 #: lib/menu_firewall_waf.php:76 #: lib/menu_firewall_waf.php:108 msgid "https://www.wordfence.com/help/firewall/#firewall-status" msgstr "" #: lib/menu_firewall_waf.php:52 #: lib/menu_firewall_waf_options.php:158 msgid "Firewall Rules: " msgstr "" #: lib/menu_firewall_waf.php:52 #: lib/menu_firewall_waf_options.php:158 #: lib/menu_scanner.php:77 #: lib/menu_scanner_options.php:132 msgid "Community" msgstr "" #: lib/menu_firewall_waf.php:53 #: lib/menu_firewall_waf_options.php:159 msgid "Rules updated in real-time" msgstr "" #: lib/menu_firewall_waf.php:53 #: lib/menu_firewall_waf_options.php:159 msgid "Rule updates delayed by 30 days" msgstr "" #: lib/menu_firewall_waf.php:55 msgid "Manage Firewall Rules" msgstr "" #: lib/menu_firewall_waf.php:57 #: lib/menu_firewall_waf_options.php:163 msgid "Firewall Rules Status" msgstr "" #: lib/menu_firewall_waf.php:69 #: lib/menu_firewall_waf_options.php:175 msgid "Real-Time IP Blocklist: " msgstr "" #: lib/menu_firewall_waf.php:69 #: lib/menu_firewall_waf_options.php:175 #: lib/menu_tools_diagnostic.php:295 #: lib/menu_tools_diagnostic.php:300 #: lib/menu_tools_diagnostic.php:301 #: lib/menu_tools_diagnostic.php:304 #: models/firewall/wfFirewall.php:35 #: views/diagnostics/text.php:154 #: views/diagnostics/text.php:159 #: views/diagnostics/text.php:160 #: views/diagnostics/text.php:163 #: views/scanner/scan-scheduling.php:15 #: views/waf/options-group-basic-firewall.php:477 #: views/waf/options-group-whitelisted.php:81 #: views/waf/options-group-whitelisted.php:94 msgid "Enabled" msgstr "" #: lib/menu_firewall_waf.php:69 #: lib/menu_firewall_waf_options.php:175 #: lib/menu_tools_diagnostic.php:295 #: lib/menu_tools_diagnostic.php:300 #: lib/menu_tools_diagnostic.php:301 #: lib/menu_tools_diagnostic.php:304 #: lib/wordfenceClass.php:6073 #: models/firewall/wfFirewall.php:41 #: views/diagnostics/text.php:154 #: views/diagnostics/text.php:159 #: views/diagnostics/text.php:160 #: views/diagnostics/text.php:163 #: views/scanner/scan-scheduling.php:14 #: views/waf/options-group-basic-firewall.php:48 #: views/waf/options-group-basic-firewall.php:476 msgid "Disabled" msgstr "" #: lib/menu_firewall_waf.php:70 #: lib/menu_firewall_waf_options.php:176 msgid "Blocks requests from known malicious IPs" msgstr "" #: lib/menu_firewall_waf.php:72 msgid "Manage Real-Time IP Blocklist" msgstr "" #: lib/menu_firewall_waf.php:72 #: views/waf/option-whitelist.php:102 msgid "Enable" msgstr "" #: lib/menu_firewall_waf.php:74 #: lib/menu_firewall_waf_options.php:180 msgid "Blocklist Status" msgstr "" #: lib/menu_firewall_waf.php:102 #: lib/menu_firewall_waf.php:279 #: lib/menu_firewall_waf_options.php:191 #: views/waf/options-group-brute-force.php:26 msgid "Brute Force Protection" msgstr "" #: lib/menu_firewall_waf.php:102 #: lib/menu_firewall_waf_options.php:191 msgid ": Disabled" msgstr "" #: lib/menu_firewall_waf.php:103 #: lib/menu_firewall_waf_options.php:192 msgid "Stops Password Guessing Attacks" msgstr "" #: lib/menu_firewall_waf.php:105 msgid "Manage Brute Force Protection" msgstr "" #: lib/menu_firewall_waf.php:106 #: lib/menu_firewall_waf_options.php:195 msgid "Brute Force Protection Status" msgstr "" #: lib/menu_firewall_waf.php:131 #: views/waf/options-group-rate-limiting.php:26 msgid "Rate Limiting" msgstr "" #: lib/menu_firewall_waf.php:132 msgid "Block crawlers that are using too many resources or stealing content" msgstr "" #: lib/menu_firewall_waf.php:143 msgid "Block traffic by country, IP, IP range, user agent, referrer, or hostname" msgstr "" #: lib/menu_firewall_waf.php:168 msgid "All Firewall Options" msgstr "" #: lib/menu_firewall_waf.php:169 msgid "Manage global and advanced firewall options" msgstr "" #: lib/menu_firewall_waf.php:246 msgid "The Wordfence firewall protects your sites from attackers" msgstr "" #: lib/menu_firewall_waf.php:247 msgid "This is where you can monitor the work Wordfence is doing to protect your site and also where you can manage the options to optimize the firewall's configuration." msgstr "" #: lib/menu_firewall_waf.php:262 msgid "Web Application Firewall (WAF)" msgstr "" #: lib/menu_firewall_waf.php:263 msgid "The Wordfence Web Application Firewall blocks known and emerging attacks using firewall rules. When you first install the WAF, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall." msgstr "" #: lib/menu_firewall_waf.php:280 msgid "Wordfence protects your site from password-guessing attacks by locking out attackers and helping you avoid weak passwords." msgstr "" #: lib/menu_firewall_waf.php:296 #: lib/menu_firewall_waf.php:347 #: lib/menu_firewall_waf_options.php:23 #: lib/menu_firewall_waf_options.php:122 #: lib/menu_options.php:303 #: models/page/wfPage.php:107 msgid "Firewall Options" msgstr "" #: lib/menu_firewall_waf.php:298 msgid "Set up the way you want the firewall to protect your site including the web application firewall, brute force protection, rate limiting, and blocking." msgstr "" #: lib/menu_firewall_waf.php:349 msgid "All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, allowlisted URLs, and blocking." msgstr "" #: lib/menu_firewall_waf_options.php:80 msgid "Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten." msgstr "" #: lib/menu_options.php:24 #: lib/menu_options.php:262 #: lib/wordfenceClass.php:6566 msgid "All Options" msgstr "" #: lib/menu_options.php:68 #: views/dashboard/options-group-license.php:35 msgid "License Key" msgstr "" #: lib/menu_options.php:69 msgid "Display All Options menu item" msgstr "" #: lib/menu_options.php:70 msgid "Display Blocking menu item" msgstr "" #: lib/menu_options.php:71 msgid "Display Live Traffic menu item" msgstr "" #: lib/menu_options.php:72 #: views/dashboard/options-group-general.php:44 msgid "Update Wordfence automatically when a new version is released?" msgstr "" #: lib/menu_options.php:73 #: views/dashboard/options-group-general.php:55 msgid "Where to email alerts" msgstr "" #: lib/menu_options.php:74 #: views/dashboard/option-howgetips.php:21 msgid "How does Wordfence get IPs" msgstr "" #: lib/menu_options.php:75 #: lib/menu_tools_diagnostic.php:235 #: views/dashboard/option-howgetips.php:50 #: views/diagnostics/text.php:108 msgid "Trusted Proxies" msgstr "" #: lib/menu_options.php:76 #: views/dashboard/options-group-general.php:73 msgid "Hide WordPress version" msgstr "" #: lib/menu_options.php:77 #: views/dashboard/options-group-general.php:85 msgid "Disable Code Execution for Uploads directory" msgstr "" #: lib/menu_options.php:78 #: views/dashboard/options-group-general.php:97 msgid "Pause live updates when window loses focus" msgstr "" #: lib/menu_options.php:79 #: views/dashboard/options-group-general.php:107 msgid "Update interval in seconds" msgstr "" #: lib/menu_options.php:80 #: views/dashboard/options-group-general.php:120 msgid "Bypass the LiteSpeed \"noabort\" check" msgstr "" #: lib/menu_options.php:81 #: views/dashboard/options-group-general.php:132 msgid "Delete Wordfence tables and data on deactivation" msgstr "" #: lib/menu_options.php:82 #: views/dashboard/options-group-dashboard.php:36 msgid "Updates Needed (Plugin, Theme, or Core)" msgstr "" #: lib/menu_options.php:83 #: views/dashboard/options-group-dashboard.php:48 msgid "Security Alerts" msgstr "" #: lib/menu_options.php:84 #: views/dashboard/options-group-dashboard.php:60 msgid "Promotions" msgstr "" #: lib/menu_options.php:85 #: views/dashboard/options-group-dashboard.php:72 msgid "Blog Highlights" msgstr "" #: lib/menu_options.php:86 #: views/dashboard/options-group-dashboard.php:84 msgid "Product Updates" msgstr "" #: lib/menu_options.php:88 #: views/dashboard/options-group-alert.php:36 msgid "Email me when Wordfence is automatically updated" msgstr "" #: lib/menu_options.php:89 #: views/dashboard/options-group-alert.php:48 msgid "Email me if Wordfence is deactivated" msgstr "" #: lib/menu_options.php:90 #: views/dashboard/options-group-alert.php:59 msgid "Email me if the Wordfence Web Application Firewall is turned off" msgstr "" #: lib/menu_options.php:91 msgid "Alert me with scan results of this severity level or greater" msgstr "" #: lib/menu_options.php:92 #: views/dashboard/options-group-alert.php:90 msgid "Alert when an IP address is blocked" msgstr "" #: lib/menu_options.php:93 #: views/dashboard/options-group-alert.php:101 msgid "Alert when someone is locked out from login" msgstr "" #: lib/menu_options.php:94 #: views/dashboard/options-group-alert.php:123 msgid "Alert when the \"lost password\" form is used for a valid user" msgstr "" #: lib/menu_options.php:95 #: views/dashboard/options-group-alert.php:134 msgid "Alert me when someone with administrator access signs in" msgstr "" #: lib/menu_options.php:96 #: views/dashboard/options-group-alert.php:140 msgid "Only alert me when that administrator signs in from a new device" msgstr "" #: lib/menu_options.php:97 #: views/dashboard/options-group-alert.php:151 msgid "Alert me when a non-admin user signs in" msgstr "" #: lib/menu_options.php:98 #: views/dashboard/options-group-alert.php:157 msgid "Only alert me when that user signs in from a new device" msgstr "" #: lib/menu_options.php:99 #: views/dashboard/options-group-alert.php:168 msgid "Alert me when there's a large increase in attacks detected on my site" msgstr "" #: lib/menu_options.php:100 #: views/dashboard/options-group-alert.php:177 msgid "Maximum email alerts to send per hour" msgstr "" #: lib/menu_options.php:101 #: views/dashboard/options-group-email-summary.php:43 msgid "Enable email summary" msgstr "" #: lib/menu_options.php:102 #: views/dashboard/options-group-email-summary.php:52 msgid "List of directories to exclude from recently modified file list" msgstr "" #: lib/menu_options.php:103 #: views/dashboard/options-group-email-summary.php:63 msgid "Enable activity report widget on the WordPress dashboard" msgstr "" #: lib/menu_options.php:105 msgid "Web Application Firewall Protection Level" msgstr "" #: lib/menu_options.php:106 #: views/waf/options-group-basic-firewall.php:464 msgid "Real-Time IP Blocklist" msgstr "" #: lib/menu_options.php:107 #: views/waf/options-group-advanced-firewall.php:40 msgid "Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)" msgstr "" #: lib/menu_options.php:108 #: views/waf/options-group-advanced-firewall.php:52 msgid "Allowlisted IP addresses that bypass all rules" msgstr "" #: lib/menu_options.php:109 #: views/waf/options-group-advanced-firewall.php:88 msgid "Allowlisted services" msgstr "" #: lib/menu_options.php:110 #: views/waf/options-group-advanced-firewall.php:99 msgid "Immediately block IPs that access these URLs" msgstr "" #: lib/menu_options.php:111 #: views/waf/options-group-advanced-firewall.php:112 msgid "Ignored IP addresses for Wordfence Web Application Firewall alerting" msgstr "" #: lib/menu_options.php:112 msgid "Web Application Firewall Rules" msgstr "" #: lib/menu_options.php:113 #: views/waf/options-group-brute-force.php:38 msgid "Enable brute force protection" msgstr "" #: lib/menu_options.php:114 #: views/waf/options-group-brute-force.php:61 msgid "Lock out after how many login failures" msgstr "" #: lib/menu_options.php:115 #: views/waf/options-group-brute-force.php:77 msgid "Lock out after how many forgot password attempts" msgstr "" #: lib/menu_options.php:116 #: views/waf/options-group-brute-force.php:93 msgid "Count failures over what time period" msgstr "" #: lib/menu_options.php:117 #: views/waf/options-group-brute-force.php:109 msgid "Amount of time a user is locked out" msgstr "" #: lib/menu_options.php:118 #: views/waf/options-group-brute-force.php:121 msgid "Immediately lock out invalid usernames" msgstr "" #: lib/menu_options.php:119 #: views/waf/options-group-brute-force.php:139 msgid "Immediately block the IP of users who try to sign in as these usernames" msgstr "" #: lib/menu_options.php:120 #: views/waf/options-group-brute-force.php:178 msgid "Enforce strong passwords" msgstr "" #: lib/menu_options.php:121 #: views/waf/options-group-brute-force.php:155 msgid "Prevent the use of passwords leaked in data breaches" msgstr "" #: lib/menu_options.php:122 #: views/waf/options-group-brute-force.php:190 msgid "Don't let WordPress reveal valid users in login errors" msgstr "" #: lib/menu_options.php:123 msgid "Prevent users registering \"admin\" username if it doesn't exist" msgstr "" #: lib/menu_options.php:124 msgid "Prevent discovery of usernames through \"/?author=N\" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps" msgstr "" #: lib/menu_options.php:125 #: views/waf/options-group-brute-force.php:226 msgid "Disable WordPress application passwords" msgstr "" #: lib/menu_options.php:126 #: views/waf/options-group-brute-force.php:238 msgid "Block IPs who send POST requests with blank User-Agent and Referer" msgstr "" #: lib/menu_options.php:127 #: views/waf/options-group-brute-force.php:248 msgid "Custom text shown on block pages" msgstr "" #: lib/menu_options.php:128 #: views/waf/options-group-brute-force.php:263 msgid "Check password strength on profile update" msgstr "" #: lib/menu_options.php:129 #: views/waf/options-group-brute-force.php:275 msgid "Participate in the Real-Time Wordfence Security Network" msgstr "" #: lib/menu_options.php:130 #: views/waf/options-group-rate-limiting.php:38 msgid "Enable Rate Limiting and Advanced Blocking" msgstr "" #: lib/menu_options.php:131 #: views/waf/options-group-rate-limiting.php:60 msgid "How should we treat Google's crawlers" msgstr "" #: lib/menu_options.php:132 #: views/waf/options-group-rate-limiting.php:100 msgid "If anyone's requests exceed" msgstr "" #: lib/menu_options.php:133 #: views/waf/options-group-rate-limiting.php:117 msgid "If a crawler's page views exceed" msgstr "" #: lib/menu_options.php:134 #: views/waf/options-group-rate-limiting.php:134 msgid "If a crawler's pages not found (404s) exceed" msgstr "" #: lib/menu_options.php:135 #: views/waf/options-group-rate-limiting.php:151 msgid "If a human's page views exceed" msgstr "" #: lib/menu_options.php:136 #: views/waf/options-group-rate-limiting.php:168 msgid "If a human's pages not found (404s) exceed" msgstr "" #: lib/menu_options.php:137 #: views/waf/options-group-rate-limiting.php:184 msgid "How long is an IP address blocked when it breaks a rule" msgstr "" #: lib/menu_options.php:138 #: views/waf/options-group-rate-limiting.php:194 msgid "Allowlisted 404 URLs" msgstr "" #: lib/menu_options.php:139 msgid "Web Application Firewall Allowlisted URLs" msgstr "" #: lib/menu_options.php:140 msgid "Monitor background requests from an administrator's web browser for false positives (Front-end Website)" msgstr "" #: lib/menu_options.php:141 msgid "Monitor background requests from an administrator's web browser for false positives (Admin Panel)" msgstr "" #: lib/menu_options.php:142 msgid "What to do when we block someone visiting from a blocked country" msgstr "" #: lib/menu_options.php:143 msgid "URL to redirect blocked countries to" msgstr "" #: lib/menu_options.php:144 #: views/blocking/options-group-advanced-country.php:62 msgid "Block countries even if they are logged in" msgstr "" #: lib/menu_options.php:145 msgid "If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking" msgstr "" #: lib/menu_options.php:146 msgid "If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country" msgstr "" #: lib/menu_options.php:147 #: views/scanner/scan-scheduling.php:12 msgid "Schedule Wordfence Scans" msgstr "" #: lib/menu_options.php:148 msgid "Scan Type" msgstr "" #: lib/menu_options.php:149 #: views/scanner/options-group-general.php:32 msgid "Check if this website is on a domain blocklist" msgstr "" #: lib/menu_options.php:150 msgid "Check if this website is being "Spamvertised"" msgstr "" #: lib/menu_options.php:151 #: views/scanner/options-group-general.php:34 msgid "Check if this website IP is generating spam" msgstr "" #: lib/menu_options.php:152 #: views/scanner/options-group-general.php:35 msgid "Scan for misconfigured How does Wordfence get IPs" msgstr "" #: lib/menu_options.php:153 #: views/scanner/options-group-general.php:36 msgid "Scan for publicly accessible configuration, backup, or log files" msgstr "" #: lib/menu_options.php:154 #: views/scanner/options-group-general.php:37 msgid "Scan for publicly accessible quarantined files" msgstr "" #: lib/menu_options.php:155 #: views/scanner/options-group-general.php:38 msgid "Scan core files against repository versions for changes" msgstr "" #: lib/menu_options.php:156 #: views/scanner/options-group-general.php:39 msgid "Scan theme files against repository versions for changes" msgstr "" #: lib/menu_options.php:157 #: views/scanner/options-group-general.php:40 msgid "Scan plugin files against repository versions for changes" msgstr "" #: lib/menu_options.php:158 #: views/scanner/options-group-general.php:41 msgid "Scan wp-admin and wp-includes for files not bundled with WordPress" msgstr "" #: lib/menu_options.php:159 #: views/scanner/options-group-general.php:42 msgid "Scan for signatures of known malicious files" msgstr "" #: lib/menu_options.php:160 #: views/scanner/options-group-general.php:43 msgid "Scan file contents for backdoors, trojans and suspicious code" msgstr "" #: lib/menu_options.php:161 #: views/scanner/options-group-general.php:44 msgid "Scan file contents for malicious URLs" msgstr "" #: lib/menu_options.php:162 #: views/scanner/options-group-general.php:45 msgid "Scan posts for known dangerous URLs and suspicious content" msgstr "" #: lib/menu_options.php:163 #: views/scanner/options-group-general.php:46 msgid "Scan comments for known dangerous URLs and suspicious content" msgstr "" #: lib/menu_options.php:164 #: views/scanner/options-group-general.php:47 msgid "Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content" msgstr "" #: lib/menu_options.php:165 #: views/scanner/options-group-general.php:48 msgid "Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions" msgstr "" #: lib/menu_options.php:166 #: views/scanner/options-group-general.php:49 msgid "Scan for suspicious admin users created outside of WordPress" msgstr "" #: lib/menu_options.php:167 #: views/scanner/options-group-general.php:50 msgid "Check the strength of passwords" msgstr "" #: lib/menu_options.php:168 #: views/scanner/options-group-general.php:51 msgid "Monitor disk space" msgstr "" #: lib/menu_options.php:169 #: views/scanner/options-group-general.php:52 msgid "Monitor Web Application Firewall status" msgstr "" #: lib/menu_options.php:170 #: views/scanner/options-group-general.php:53 msgid "Scan files outside your WordPress installation" msgstr "" #: lib/menu_options.php:171 #: views/scanner/options-group-general.php:54 msgid "Scan images, binary, and other files as if they were executable" msgstr "" #: lib/menu_options.php:172 #: views/scanner/options-group-performance.php:32 msgid "Use low resource scanning (reduces server load by lengthening the scan duration)" msgstr "" #: lib/menu_options.php:173 #: views/scanner/options-group-performance.php:33 msgid "Limit the number of issues sent in the scan results email" msgstr "" #: lib/menu_options.php:174 #: views/scanner/options-group-performance.php:34 msgid "Time limit that a scan can run in seconds" msgstr "" #. translators: Time until. #: lib/menu_options.php:175 #: views/scanner/options-group-performance.php:35 msgid "How much memory should Wordfence request when scanning" msgstr "" #: lib/menu_options.php:176 msgid "Maximum execution time for each scan stage" msgstr "" #: lib/menu_options.php:177 msgid "Exclude files from scan that match these wildcard patterns" msgstr "" #: lib/menu_options.php:178 msgid "Additional scan signatures" msgstr "" #: lib/menu_options.php:179 msgid "Traffic logging mode (Live Traffic)" msgstr "" #: lib/menu_options.php:180 #: views/tools/options-group-live-traffic.php:78 msgid "Don't log signed-in users with publishing access" msgstr "" #: lib/menu_options.php:181 #: views/tools/options-group-live-traffic.php:87 msgid "List of comma separated usernames to ignore" msgstr "" #: lib/menu_options.php:182 #: views/tools/options-group-live-traffic.php:96 msgid "List of comma separated IP addresses to ignore" msgstr "" #: lib/menu_options.php:183 #: views/tools/options-group-live-traffic.php:105 msgid "Browser user-agent to ignore" msgstr "" #: lib/menu_options.php:184 #: views/tools/options-group-live-traffic.php:114 msgid "Amount of Live Traffic data to store (number of rows)" msgstr "" #: lib/menu_options.php:185 msgid "Maximum days to keep Live Traffic data" msgstr "" #: lib/menu_options.php:186 #: views/dashboard/options-group-import.php:31 msgid "Export this site's Wordfence options for import on another site" msgstr "" #: lib/menu_options.php:187 #: views/dashboard/options-group-import.php:44 msgid "Import Wordfence options from another site using a token" msgstr "" #: lib/menu_options.php:191 msgid "Require Cellphone Sign-in for all Administrators" msgstr "" #: lib/menu_options.php:192 msgid "Enable Separate Prompt for Two Factor Code" msgstr "" #: lib/menu_options.php:201 msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten." msgstr "" #: lib/menu_options.php:268 msgid "These options are also available throughout the plugin pages, in the relevant sections. This page is provided for easier setup for experienced Wordfence users." msgstr "" #: lib/menu_options.php:351 #: models/page/wfPage.php:115 msgid "Scan Options" msgstr "" #: lib/menu_options.php:383 msgid "Tool Options" msgstr "" #: lib/menu_options.php:413 msgid "Importing and exporting of options is available on the Tools page" msgstr "" #: lib/menu_scanner.php:10 msgid "Status Updates Paused
Click inside window to resume" msgstr "" #: lib/menu_scanner.php:34 msgid "Learn more about the Scanner" msgstr "" #: lib/menu_scanner.php:61 #: lib/menu_scanner_options.php:116 msgid "Scan Type: " msgstr "" #: lib/menu_scanner.php:67 #: lib/menu_scanner.php:87 #: lib/menu_scanner.php:103 msgid "https://www.wordfence.com/help/scan/#scan-status" msgstr "" #: lib/menu_scanner.php:77 #: lib/menu_scanner_options.php:132 msgid "Malware Signatures: " msgstr "" #: lib/menu_scanner.php:78 #: lib/menu_scanner_options.php:133 msgid "Signatures updated in real-time" msgstr "" #: lib/menu_scanner.php:78 #: lib/menu_scanner_options.php:133 msgid "Signature updates delayed by 30 days" msgstr "" #: lib/menu_scanner.php:80 #: lib/wordfenceClass.php:6582 msgid "Protect More Sites" msgstr "" #: lib/menu_scanner.php:82 #: lib/menu_scanner_options.php:136 msgid "Malware Signatures Status" msgstr "" #: lib/menu_scanner.php:85 #: lib/menu_scanner_options.php:139 #: models/scanner/wfScanner.php:761 msgid "Enable Premium Scan Signatures." msgstr "" #: lib/menu_scanner.php:97 #: lib/menu_scanner_options.php:151 msgid "Reputation Checks" msgstr "" #: lib/menu_scanner.php:98 #: lib/menu_scanner_options.php:152 msgid "Check spam & spamvertising blocklists" msgstr "" #: lib/menu_scanner.php:100 msgid "Manage Options" msgstr "" #: lib/menu_scanner.php:101 #: lib/menu_scanner_options.php:155 msgid "Reputation Check Status" msgstr "" #: lib/menu_scanner.php:120 msgid "Turn Off Beta Signatures" msgstr "" #: lib/menu_scanner.php:150 #: lib/menu_scanner_options.php:97 msgid "Scan Options and Scheduling" msgstr "" #: lib/menu_scanner.php:151 msgid "Manage scan options including scheduling" msgstr "" #: lib/menu_scanner.php:212 msgid "Are you sure you want to delete?" msgstr "" #: lib/menu_scanner.php:213 msgid "WARNING: If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup." msgstr "" #. translators: Support URL. #: lib/menu_scanner.php:216 msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, click here for our help article." msgstr "" #: lib/menu_scanner.php:218 msgid "Delete Files" msgstr "" #: lib/menu_scanner.php:226 msgid "Are you sure you want to repair?" msgstr "" #: lib/menu_scanner.php:227 msgid "Do not repair files on your system unless you're ABSOLUTELY sure you know what you're doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files." msgstr "" #: lib/menu_scanner.php:229 msgid "Repair Files" msgstr "" #. translators: Time limit (number). #. translators: Support URL. #: lib/menu_scanner.php:239 #: lib/menu_tools_twoFactor.php:246 #: lib/menu_tools_twoFactor.php:255 #: lib/menu_tools_twoFactor.php:264 #: lib/menu_tools_twoFactor.php:284 #: lib/wordfenceClass.php:4923 #: lib/wordfenceClass.php:4929 #: lib/wordfenceClass.php:4935 #: lib/wordfenceClass.php:4942 #: lib/wordfenceClass.php:4948 #: lib/wordfenceClass.php:4955 #: lib/wordfenceClass.php:4963 #: lib/wordfenceClass.php:6015 #: lib/wordfenceClass.php:6017 #: lib/wordfenceClass.php:6068 #: lib/wordfenceClass.php:7956 #: lib/wordfenceClass.php:7963 #: lib/wordfenceClass.php:8070 #: lib/wordfenceClass.php:8134 #: views/dashboard/options-group-import.php:147 #: views/dashboard/options-group-import.php:157 #: views/dashboard/options-group-import.php:177 #: views/onboarding/fresh-install.php:99 #: views/onboarding/fresh-install.php:131 #: views/onboarding/fresh-install.php:144 #: views/onboarding/fresh-install.php:155 #: views/onboarding/modal-final-attempt.php:48 #: views/onboarding/plugin-header.php:135 #: views/onboarding/plugin-header.php:167 #: views/onboarding/plugin-header.php:180 msgid "Close" msgstr "" #: lib/menu_scanner.php:306 msgid "A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site's online reputation." msgstr "" #: lib/menu_scanner.php:320 msgid "Manage Scan Settings" msgstr "" #: lib/menu_scanner.php:322 msgid "Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling." msgstr "" #: lib/menu_scanner.php:337 msgid "Start Your First Scan" msgstr "" #: lib/menu_scanner.php:338 msgid "By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like." msgstr "" #: lib/menu_scanner.php:374 msgid "Scan Options & Settings" msgstr "" #: lib/menu_scanner.php:376 msgid "All of your scan options, including scheduling, are now located here." msgstr "" #: lib/menu_scanner.php:389 msgid "Scan Progress and Activity" msgstr "" #: lib/menu_scanner.php:390 msgid "Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings." msgstr "" #: lib/menu_scanner_credentials.php:31 msgid "Back to Scan" msgstr "" #: lib/menu_scanner_credentials.php:51 msgid "File System Credentials Required" msgstr "" #. translators: URL to the WordPress admin panel. #: lib/menu_scanner_credentials.php:68 msgid "Security token has expired. Click here to return to the scan page." msgstr "" #: lib/menu_scanner_options.php:14 msgid "Scanner Options" msgstr "" #: lib/menu_scanner_options.php:68 msgid "Are you sure you want to restore the default Scan settings? This will undo any custom changes you have made to the options on this page." msgstr "" #: lib/menu_scanner_options.php:99 msgid "Learn more about Scanning" msgstr "" #: lib/menu_support.php:31 msgid "Free Support" msgstr "" #: lib/menu_support.php:32 msgid "Support for free customers is available via our forums page on wordpress.org. The majority of requests receive an answer within a few days." msgstr "" #: lib/menu_support.php:33 msgid "Go to Support Forums" msgstr "" #: lib/menu_support.php:37 msgid "Premium Support" msgstr "" #: lib/menu_support.php:38 #: lib/menu_support.php:42 msgid "Our senior support engineers respond to Premium tickets within a few hours on average and have a direct line to our QA and development teams." msgstr "" #: lib/menu_support.php:39 msgid "Go to Premium Support" msgstr "" #: lib/menu_support.php:41 msgid "Upgrade Now to Access Premium Support" msgstr "" #: lib/menu_support.php:59 msgid "GDPR Information" msgstr "" #: lib/menu_support.php:70 msgid "General Data Protection Regulation" msgstr "" #: lib/menu_support.php:71 msgid "The GDPR is a set of rules that provides more control over EU personal data. Defiant has updated its terms of use, privacy policies, and software, as well as made available a data processing agreement to meet GDPR compliance." msgstr "" #: lib/menu_support.php:80 msgid "Data Processing Agreement" msgstr "" #. translators: URL to support page. #: lib/menu_support.php:83 msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, it can be found here." msgstr "" #: lib/menu_support.php:92 msgid "Agreement to New Terms and Privacy Policies" msgstr "" #: lib/menu_support.php:93 msgid "To continue using Defiant products and services including the Wordfence plugin, all customers must review and agree to the updated terms and privacy policies. These changes reflect our commitment to follow data protection best practices and regulations. The Wordfence interface will remain disabled until these terms are agreed to." msgstr "" #: lib/menu_support.php:106 msgid "All Documentation" msgstr "" #: lib/menu_support.php:114 msgid "Top Topics and Questions" msgstr "" #: lib/menu_support.php:162 msgid "Documentation" msgstr "" #: lib/menu_support.php:163 msgid "Documentation about Wordfence may be found on our website by clicking the button below or by clicking the links on any of the plugin's pages." msgstr "" #: lib/menu_support.php:164 msgid "View Documentation" msgstr "" #: lib/menu_support.php:269 #: views/onboarding/fresh-install.php:131 #: views/onboarding/plugin-header.php:167 msgid "Premium License Installed" msgstr "" #: lib/menu_support.php:269 #: views/onboarding/fresh-install.php:131 #: views/onboarding/plugin-header.php:167 msgid "Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default." msgstr "" #: lib/menu_support.php:269 #: views/onboarding/fresh-install.php:30 #: views/onboarding/modal-final-attempt.php:59 #: views/onboarding/plugin-header.php:61 #: views/waf/waf-install.php:106 #: views/waf/waf-modal-wrapper.php:17 #: views/waf/waf-uninstall.php:108 msgid "Continue" msgstr "" #: lib/menu_tools_diagnostic.php:24 #: models/page/wfPage.php:125 msgid "Diagnostics" msgstr "" #: lib/menu_tools_diagnostic.php:34 msgid "This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host's environment." msgstr "" #: lib/menu_tools_diagnostic.php:38 msgid "Thanks for sending your diagnostic page over email" msgstr "" #: lib/menu_tools_diagnostic.php:53 msgid "Send Report by Email" msgstr "" #: lib/menu_tools_diagnostic.php:60 msgid "Email address:" msgstr "" #: lib/menu_tools_diagnostic.php:67 msgid "Ticket Number/Forum Username:" msgstr "" #: lib/menu_tools_diagnostic.php:122 msgid "Additional Detail" msgstr "" #: lib/menu_tools_diagnostic.php:165 msgid "View Additional Detail" msgstr "" #: lib/menu_tools_diagnostic.php:186 #: views/diagnostics/text.php:60 #: views/scanner/issue-checkHowGetIPs.php:8 msgid "IP Detection" msgstr "" #: lib/menu_tools_diagnostic.php:187 #: views/diagnostics/text.php:60 msgid "Methods of detecting a visitor's IP address." msgstr "" #: lib/menu_tools_diagnostic.php:199 #: views/diagnostics/text.php:69 msgid "IPs" msgstr "" #: lib/menu_tools_diagnostic.php:200 #: views/diagnostics/text.php:70 #: views/diagnostics/text.php:189 msgid "Value" msgstr "" #: lib/menu_tools_diagnostic.php:201 #: views/diagnostics/text.php:71 msgid "Used" msgstr "" #. translators: WordPress theme template directory. #. translators: WordPress theme stylesheet directory. #. translators: WordPress custom user table. #. translators: WordPress custom user meta table. #: lib/menu_tools_diagnostic.php:217 #: lib/menu_tools_diagnostic.php:268 #: lib/menu_tools_diagnostic.php:269 #: lib/menu_tools_diagnostic.php:282 #: lib/menu_tools_diagnostic.php:283 #: lib/menu_tools_diagnostic.php:296 #: lib/menu_tools_diagnostic.php:297 #: lib/menu_tools_diagnostic.php:298 #: lib/menu_tools_diagnostic.php:299 #: lib/menu_tools_diagnostic.php:313 #: lib/menu_tools_diagnostic.php:314 #: lib/menu_tools_diagnostic.php:315 #: lib/menu_tools_diagnostic.php:317 #: lib/menu_tools_diagnostic.php:318 #: lib/menu_tools_diagnostic.php:319 #: lib/menu_tools_diagnostic.php:329 #: lib/wfDiagnostic.php:363 #: views/diagnostics/text.php:86 #: views/diagnostics/text.php:127 #: views/diagnostics/text.php:128 #: views/diagnostics/text.php:141 #: views/diagnostics/text.php:142 #: views/diagnostics/text.php:155 #: views/diagnostics/text.php:156 #: views/diagnostics/text.php:157 #: views/diagnostics/text.php:158 #: views/diagnostics/text.php:172 #: views/diagnostics/text.php:173 #: views/diagnostics/text.php:174 #: views/diagnostics/text.php:176 #: views/diagnostics/text.php:177 #: views/diagnostics/text.php:178 #: views/diagnostics/text.php:196 msgid "(not set)" msgstr "" #: lib/menu_tools_diagnostic.php:226 #: views/diagnostics/text.php:96 msgid "In use" msgstr "" #: lib/menu_tools_diagnostic.php:228 #: views/diagnostics/text.php:98 msgid "Configured but not valid" msgstr "" #: lib/menu_tools_diagnostic.php:249 #: views/diagnostics/text.php:117 msgid "WordPress Settings" msgstr "" #: lib/menu_tools_diagnostic.php:250 #: views/diagnostics/text.php:117 msgid "WordPress version and internal settings/constants." msgstr "" #: lib/menu_tools_diagnostic.php:265 #: views/diagnostics/text.php:124 msgid "Return value of is_multisite()" msgstr "" #. translators: WordPress plugins directory. #: lib/menu_tools_diagnostic.php:265 #: lib/menu_tools_diagnostic.php:276 #: lib/menu_tools_diagnostic.php:278 #: lib/menu_tools_diagnostic.php:279 #: lib/menu_tools_diagnostic.php:292 #: lib/menu_tools_diagnostic.php:305 #: lib/menu_tools_diagnostic.php:306 #: lib/menu_tools_diagnostic.php:307 #: lib/menu_tools_diagnostic.php:308 #: lib/menu_tools_diagnostic.php:309 #: lib/menu_tools_diagnostic.php:310 #: lib/menu_tools_diagnostic.php:315 #: lib/menu_tools_diagnostic.php:316 #: lib/menu_tools_diagnostic.php:317 #: lib/menu_tools_diagnostic.php:318 #: lib/menu_tools_diagnostic.php:319 #: lib/menu_tools_diagnostic.php:323 #: lib/menu_tools_livetraffic.php:152 #: lib/wfDiagnostic.php:357 #: lib/wfDiagnostic.php:375 #: views/diagnostics/text.php:124 #: views/diagnostics/text.php:135 #: views/diagnostics/text.php:137 #: views/diagnostics/text.php:138 #: views/diagnostics/text.php:151 #: views/diagnostics/text.php:164 #: views/diagnostics/text.php:165 #: views/diagnostics/text.php:166 #: views/diagnostics/text.php:167 #: views/diagnostics/text.php:168 #: views/diagnostics/text.php:169 #: views/diagnostics/text.php:174 #: views/diagnostics/text.php:175 #: views/diagnostics/text.php:176 #: views/diagnostics/text.php:177 #: views/diagnostics/text.php:178 #: views/diagnostics/text.php:182 #: views/onboarding/fresh-install.php:18 #: views/onboarding/modal-final-attempt.php:25 #: views/onboarding/plugin-header.php:39 #: views/reports/activity-report-email-inline.php:270 #: views/reports/activity-report.php:117 msgid "Yes" msgstr "" #: lib/menu_tools_diagnostic.php:265 #: lib/menu_tools_diagnostic.php:292 #: lib/menu_tools_diagnostic.php:305 #: lib/menu_tools_diagnostic.php:306 #: lib/menu_tools_diagnostic.php:307 #: lib/menu_tools_diagnostic.php:308 #: lib/menu_tools_diagnostic.php:309 #: lib/menu_tools_diagnostic.php:310 #: lib/menu_tools_diagnostic.php:315 #: lib/menu_tools_diagnostic.php:316 #: lib/menu_tools_diagnostic.php:318 #: lib/menu_tools_diagnostic.php:319 #: lib/menu_tools_diagnostic.php:323 #: lib/menu_tools_livetraffic.php:153 #: lib/wfDiagnostic.php:357 #: lib/wfDiagnostic.php:375 #: views/diagnostics/text.php:124 #: views/diagnostics/text.php:151 #: views/diagnostics/text.php:164 #: views/diagnostics/text.php:165 #: views/diagnostics/text.php:166 #: views/diagnostics/text.php:167 #: views/diagnostics/text.php:168 #: views/diagnostics/text.php:169 #: views/diagnostics/text.php:174 #: views/diagnostics/text.php:175 #: views/diagnostics/text.php:177 #: views/diagnostics/text.php:178 #: views/diagnostics/text.php:182 #: views/onboarding/fresh-install.php:19 #: views/onboarding/modal-final-attempt.php:26 #: views/onboarding/plugin-header.php:40 #: views/reports/activity-report-email-inline.php:270 #: views/reports/activity-report.php:117 msgid "No" msgstr "" #: lib/menu_tools_diagnostic.php:266 #: views/diagnostics/text.php:125 msgid "WordPress base path" msgstr "" #: lib/menu_tools_diagnostic.php:267 #: views/diagnostics/text.php:126 msgid "WordPress debug mode" msgstr "" #: lib/menu_tools_diagnostic.php:267 #: lib/menu_tools_diagnostic.php:270 #: lib/menu_tools_diagnostic.php:271 #: lib/wfDiagnostic.php:576 #: views/diagnostics/text.php:126 #: views/diagnostics/text.php:129 #: views/diagnostics/text.php:130 #: views/waf/options-group-brute-force.php:42 #: views/waf/options-group-rate-limiting.php:42 msgid "On" msgstr "" #: lib/menu_tools_diagnostic.php:267 #: lib/menu_tools_diagnostic.php:270 #: lib/menu_tools_diagnostic.php:271 #: lib/wfDiagnostic.php:576 #: views/diagnostics/text.php:126 #: views/diagnostics/text.php:129 #: views/diagnostics/text.php:130 #: views/waf/options-group-brute-force.php:41 #: views/waf/options-group-rate-limiting.php:41 msgid "Off" msgstr "" #: lib/menu_tools_diagnostic.php:268 #: views/diagnostics/text.php:127 msgid "WordPress error logging override" msgstr "" #: lib/menu_tools_diagnostic.php:269 #: views/diagnostics/text.php:128 msgid "WordPress error display override" msgstr "" #: lib/menu_tools_diagnostic.php:270 #: views/diagnostics/text.php:129 msgid "WordPress script debug mode" msgstr "" #: lib/menu_tools_diagnostic.php:271 #: views/diagnostics/text.php:130 msgid "WordPress query debug mode" msgstr "" #: lib/menu_tools_diagnostic.php:272 #: views/diagnostics/text.php:131 msgid "Database character set" msgstr "" #: lib/menu_tools_diagnostic.php:273 #: views/diagnostics/text.php:132 msgid "Database collation" msgstr "" #: lib/menu_tools_diagnostic.php:274 #: views/diagnostics/text.php:133 msgid "Explicitly set site URL" msgstr "" #: lib/menu_tools_diagnostic.php:275 #: views/diagnostics/text.php:134 msgid "Explicitly set blog URL" msgstr "" #: lib/menu_tools_diagnostic.php:276 #: views/diagnostics/text.php:135 msgid "\"wp-content\" folder is in default location" msgstr "" #. translators: WordPress content directory. #. translators: WordPress plugins directory. #. translators: WordPress languages directory. #: lib/menu_tools_diagnostic.php:276 #: lib/menu_tools_diagnostic.php:278 #: lib/menu_tools_diagnostic.php:279 #: views/diagnostics/text.php:135 #: views/diagnostics/text.php:137 #: views/diagnostics/text.php:138 msgid "No: %s" msgstr "" #. translators: WordPress content directory. #: lib/menu_tools_diagnostic.php:277 #: views/diagnostics/text.php:136 msgid "URL to the \"wp-content\" folder" msgstr "" #: lib/menu_tools_diagnostic.php:278 #: views/diagnostics/text.php:137 msgid "\"plugins\" folder is in default location" msgstr "" #. translators: WordPress plugins directory. #: lib/menu_tools_diagnostic.php:279 #: views/diagnostics/text.php:138 msgid "\"languages\" folder is in default location" msgstr "" #. translators: WordPress languages directory. #: lib/menu_tools_diagnostic.php:280 #: views/diagnostics/text.php:139 msgid "Language choice" msgstr "" #: lib/menu_tools_diagnostic.php:281 #: views/diagnostics/text.php:140 msgid "Custom upload folder location" msgstr "" #: lib/menu_tools_diagnostic.php:282 #: views/diagnostics/text.php:141 msgid "Theme template folder override" msgstr "" #. translators: WordPress theme template directory. #. translators: WordPress theme stylesheet directory. #: lib/menu_tools_diagnostic.php:282 #: lib/menu_tools_diagnostic.php:283 #: views/diagnostics/text.php:141 #: views/diagnostics/text.php:142 msgid "Overridden: %s" msgstr "" #. translators: WordPress theme template directory. #: lib/menu_tools_diagnostic.php:283 #: views/diagnostics/text.php:142 msgid "Theme stylesheet folder override" msgstr "" #. translators: WordPress theme stylesheet directory. #: lib/menu_tools_diagnostic.php:284 #: views/diagnostics/text.php:143 msgid "Post editing automatic saving interval" msgstr "" #: lib/menu_tools_diagnostic.php:285 #: views/diagnostics/text.php:144 msgid "Post revisions saved by WordPress" msgstr "" #: lib/menu_tools_diagnostic.php:285 #: views/diagnostics/text.php:144 #: views/waf/options-group-rate-limiting.php:67 msgid "Unlimited" msgstr "" #: lib/menu_tools_diagnostic.php:285 #: lib/menu_tools_diagnostic.php:312 #: lib/wfDiagnostic.php:202 #: lib/wfDiagnostic.php:411 #: views/diagnostics/text.php:144 #: views/diagnostics/text.php:171 #: views/scanner/issue-base.php:116 msgid "None" msgstr "" #: lib/menu_tools_diagnostic.php:286 #: views/diagnostics/text.php:145 msgid "WordPress cookie domain" msgstr "" #: lib/menu_tools_diagnostic.php:287 #: views/diagnostics/text.php:146 msgid "WordPress cookie path" msgstr "" #: lib/menu_tools_diagnostic.php:288 #: views/diagnostics/text.php:147 msgid "WordPress site cookie path" msgstr "" #: lib/menu_tools_diagnostic.php:289 #: views/diagnostics/text.php:148 msgid "WordPress admin cookie path" msgstr "" #: lib/menu_tools_diagnostic.php:290 #: views/diagnostics/text.php:149 msgid "WordPress plugins cookie path" msgstr "" #: lib/menu_tools_diagnostic.php:291 #: views/diagnostics/text.php:150 msgid "URL redirected to if the visitor tries to access a nonexistent blog" msgstr "" #: lib/menu_tools_diagnostic.php:292 #: views/diagnostics/text.php:151 msgid "Concatenate JavaScript files" msgstr "" #: lib/menu_tools_diagnostic.php:293 #: views/diagnostics/text.php:152 msgid "WordPress memory limit" msgstr "" #: lib/menu_tools_diagnostic.php:294 #: views/diagnostics/text.php:153 msgid "Administrative memory limit" msgstr "" #: lib/menu_tools_diagnostic.php:295 #: views/diagnostics/text.php:154 msgid "Built-in caching" msgstr "" #: lib/menu_tools_diagnostic.php:296 #: views/diagnostics/text.php:155 msgid "Custom \"users\" table" msgstr "" #. translators: WordPress custom user table. #. translators: WordPress custom user meta table. #: lib/menu_tools_diagnostic.php:296 #: lib/menu_tools_diagnostic.php:297 #: views/diagnostics/text.php:155 #: views/diagnostics/text.php:156 msgid "Set: %s" msgstr "" #. translators: WordPress custom user table. #: lib/menu_tools_diagnostic.php:297 #: views/diagnostics/text.php:156 msgid "Custom \"usermeta\" table" msgstr "" #. translators: WordPress custom user meta table. #: lib/menu_tools_diagnostic.php:298 #: views/diagnostics/text.php:157 msgid "Overridden permissions for a new folder" msgstr "" #: lib/menu_tools_diagnostic.php:299 #: views/diagnostics/text.php:158 msgid "Overridden permissions for a new file" msgstr "" #: lib/menu_tools_diagnostic.php:300 #: views/diagnostics/text.php:159 msgid "Alternate WP cron" msgstr "" #: lib/menu_tools_diagnostic.php:301 #: views/diagnostics/text.php:160 msgid "WP cron status" msgstr "" #: lib/menu_tools_diagnostic.php:302 #: views/diagnostics/text.php:161 msgid "Cron running frequency lock" msgstr "" #: lib/menu_tools_diagnostic.php:303 #: views/diagnostics/text.php:162 msgid "Interval the trash is automatically emptied at in days" msgstr "" #: lib/menu_tools_diagnostic.php:303 #: lib/wordfenceClass.php:4242 #: views/diagnostics/text.php:162 msgid "Never" msgstr "" #: lib/menu_tools_diagnostic.php:304 #: views/diagnostics/text.php:163 msgid "Automatic database repair" msgstr "" #: lib/menu_tools_diagnostic.php:305 #: views/diagnostics/text.php:164 msgid "Do not upgrade global tables" msgstr "" #: lib/menu_tools_diagnostic.php:306 #: views/diagnostics/text.php:165 msgid "Disallow plugin/theme editing" msgstr "" #: lib/menu_tools_diagnostic.php:307 #: views/diagnostics/text.php:166 msgid "Disallow plugin/theme update and installation" msgstr "" #: lib/menu_tools_diagnostic.php:308 #: views/diagnostics/text.php:167 msgid "Overwrite image edits when restoring the original" msgstr "" #: lib/menu_tools_diagnostic.php:309 #: views/diagnostics/text.php:168 msgid "Force SSL for administrative logins" msgstr "" #: lib/menu_tools_diagnostic.php:310 #: views/diagnostics/text.php:169 msgid "Block external URL requests" msgstr "" #: lib/menu_tools_diagnostic.php:311 #: views/diagnostics/text.php:170 msgid "Allowlisted hosts" msgstr "" #: lib/menu_tools_diagnostic.php:312 #: views/diagnostics/text.php:171 msgid "Automatic WP Core updates" msgstr "" #: lib/menu_tools_diagnostic.php:312 #: views/diagnostics/text.php:171 msgid "Everything" msgstr "" #: lib/menu_tools_diagnostic.php:312 #: views/diagnostics/text.php:171 msgid "Default" msgstr "" #: lib/menu_tools_diagnostic.php:313 #: views/diagnostics/text.php:172 msgid "Hostname for a proxy server" msgstr "" #: lib/menu_tools_diagnostic.php:314 #: views/diagnostics/text.php:173 msgid "Port for a proxy server" msgstr "" #: lib/menu_tools_diagnostic.php:315 #: views/diagnostics/text.php:174 msgid "Multisite enabled" msgstr "" #: lib/menu_tools_diagnostic.php:316 #: views/diagnostics/text.php:175 msgid "Multisite/network ability enabled" msgstr "" #: lib/menu_tools_diagnostic.php:317 #: views/diagnostics/text.php:176 msgid "Multisite enabled, WordPress will load the /wp-content/sunrise.php file" msgstr "" #: lib/menu_tools_diagnostic.php:318 #: views/diagnostics/text.php:177 msgid "Multisite enabled, subdomain installation constant" msgstr "" #: lib/menu_tools_diagnostic.php:319 #: views/diagnostics/text.php:178 msgid "Multisite enabled, Older subdomain installation constant" msgstr "" #: lib/menu_tools_diagnostic.php:320 #: views/diagnostics/text.php:179 msgid "Defines the multisite domain for the current site" msgstr "" #: lib/menu_tools_diagnostic.php:321 #: views/diagnostics/text.php:180 msgid "Defines the multisite path for the current site" msgstr "" #: lib/menu_tools_diagnostic.php:322 #: views/diagnostics/text.php:181 msgid "Defines the multisite database ID for the current site" msgstr "" #: lib/menu_tools_diagnostic.php:323 #: views/diagnostics/text.php:182 msgid "Disable the fatal error handler" msgstr "" #: lib/menu_tools_diagnostic.php:357 #: views/diagnostics/text.php:220 msgid "WordPress Plugins" msgstr "" #: lib/menu_tools_diagnostic.php:358 #: views/diagnostics/text.php:220 msgid "Status of installed plugins." msgstr "" #. translators: Plugin version. #. translators: Theme version. #: lib/menu_tools_diagnostic.php:382 #: lib/menu_tools_diagnostic.php:428 #: lib/menu_tools_diagnostic.php:527 #: views/diagnostics/text.php:238 #: views/diagnostics/text.php:277 #: views/diagnostics/text.php:351 msgid "Version %s" msgstr "" #: lib/menu_tools_diagnostic.php:386 #: views/diagnostics/text.php:242 msgid "Network Activated" msgstr "" #: lib/menu_tools_diagnostic.php:388 #: lib/menu_tools_diagnostic.php:431 #: lib/menu_tools_diagnostic.php:487 #: lib/menu_tools_diagnostic.php:530 #: views/diagnostics/text.php:244 #: views/diagnostics/text.php:282 #: views/diagnostics/text.php:324 #: views/diagnostics/text.php:355 msgid "Active" msgstr "" #: lib/menu_tools_diagnostic.php:390 #: lib/menu_tools_diagnostic.php:489 #: lib/menu_tools_diagnostic.php:532 #: views/diagnostics/text.php:246 #: views/diagnostics/text.php:324 #: views/diagnostics/text.php:357 msgid "Inactive" msgstr "" #: lib/menu_tools_diagnostic.php:402 #: views/diagnostics/text.php:258 msgid "Must-Use WordPress Plugins" msgstr "" #: lib/menu_tools_diagnostic.php:403 #: views/diagnostics/text.php:258 msgid "WordPress \"mu-plugins\" that are always active, including those provided by hosts." msgstr "" #: lib/menu_tools_diagnostic.php:438 #: views/diagnostics/text.php:287 msgid "No MU-Plugins" msgstr "" #: lib/menu_tools_diagnostic.php:450 #: views/diagnostics/text.php:296 msgid "Drop-In WordPress Plugins" msgstr "" #: lib/menu_tools_diagnostic.php:451 #: views/diagnostics/text.php:296 msgid "WordPress \"drop-in\" plugins that are active." msgstr "" #: lib/menu_tools_diagnostic.php:501 #: views/diagnostics/text.php:332 #: views/reports/activity-report-email-inline.php:392 #: views/reports/activity-report.php:191 msgid "Themes" msgstr "" #: lib/menu_tools_diagnostic.php:502 #: views/diagnostics/text.php:332 msgid "Status of installed themes." msgstr "" #: lib/menu_tools_diagnostic.php:540 #: views/diagnostics/text.php:366 msgid "No Themes" msgstr "" #: lib/menu_tools_diagnostic.php:552 #: views/diagnostics/text.php:375 msgid "Cron Jobs" msgstr "" #: lib/menu_tools_diagnostic.php:553 #: views/diagnostics/text.php:375 msgid "List of WordPress cron jobs scheduled by WordPress, plugins, or themes." msgstr "" #: lib/menu_tools_diagnostic.php:573 #: views/diagnostics/text.php:390 msgid "Overdue" msgstr "" #: lib/menu_tools_diagnostic.php:605 #: views/diagnostics/text.php:402 msgid "Database Tables" msgstr "" #: lib/menu_tools_diagnostic.php:606 #: views/diagnostics/text.php:402 msgid "Database table names, sizes, timestamps, and other metadata." msgstr "" #: lib/menu_tools_diagnostic.php:616 msgid "Wordfence Table Check" msgstr "" #: lib/menu_tools_diagnostic.php:619 #: views/diagnostics/text.php:420 msgid "Unable to verify - table count too high" msgstr "" #: lib/menu_tools_diagnostic.php:648 #: views/diagnostics/text.php:453 msgid "All Tables Exist" msgstr "" #. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. #: lib/menu_tools_diagnostic.php:652 msgid "Tables missing (prefix %1$s, %2$s): %3$s" msgstr "" #. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. #. translators: 1. WordPress table prefix. 2. Wordfence tables. #: lib/menu_tools_diagnostic.php:652 #: views/diagnostics/text.php:455 msgid "lowercase" msgstr "" #. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. #. translators: 1. WordPress table prefix. 2. Wordfence tables. #: lib/menu_tools_diagnostic.php:652 #: views/diagnostics/text.php:455 msgid "regular case" msgstr "" #. translators: Row/record count. #: lib/menu_tools_diagnostic.php:698 #: views/diagnostics/text.php:489 msgid "and %d more" msgstr "" #: lib/menu_tools_diagnostic.php:717 #: views/diagnostics/text.php:500 msgid "Log Files" msgstr "" #: lib/menu_tools_diagnostic.php:718 #: views/diagnostics/text.php:500 msgid "PHP error logs generated by your site, if enabled by your host." msgstr "" #: lib/menu_tools_diagnostic.php:730 #: views/diagnostics/text.php:506 #: views/reports/activity-report-email-inline.php:341 #: views/scanner/issue-file.php:8 #: views/scanner/issue-knownfile.php:8 msgid "File" msgstr "" #: lib/menu_tools_diagnostic.php:731 #: lib/menu_tools_diagnostic.php:770 #: lib/wordfenceClass.php:6076 msgid "Download" msgstr "" #: lib/menu_tools_diagnostic.php:739 #: views/diagnostics/text.php:513 msgid "No log files found." msgstr "" #: lib/menu_tools_diagnostic.php:759 #: views/diagnostics/text.php:532 msgid "UTC" msgstr "" #: lib/menu_tools_diagnostic.php:770 msgid "Requires downloading from the server directly" msgstr "" #: lib/menu_tools_diagnostic.php:784 #: views/diagnostics/text.php:553 msgid "Scan Issues" msgstr "" #. translators: Number of scan issues. #: lib/menu_tools_diagnostic.php:789 #: views/diagnostics/text.php:561 msgid "New Issues (%d total)" msgstr "" #: lib/menu_tools_diagnostic.php:810 #: lib/wordfenceClass.php:3947 #: views/diagnostics/text.php:584 msgid "No New Issues" msgstr "" #: lib/menu_tools_diagnostic.php:825 msgid "Other Tests" msgstr "" #: lib/menu_tools_diagnostic.php:826 msgid "System configuration, memory test, send test email from this server." msgstr "" #: lib/menu_tools_diagnostic.php:837 msgid "Click to view your system's configuration in a new window" msgstr "" #: lib/menu_tools_diagnostic.php:843 msgid "Test your WordPress host's available memory" msgstr "" #: lib/menu_tools_diagnostic.php:849 msgid "Send a test email from this WordPress server to an email address:" msgstr "" #: lib/menu_tools_diagnostic.php:851 msgid "Send Test Email" msgstr "" #: lib/menu_tools_diagnostic.php:856 msgid "Send a test activity report email:" msgstr "" #: lib/menu_tools_diagnostic.php:858 msgid "Send Test Activity Report" msgstr "" #: lib/menu_tools_diagnostic.php:863 msgid "Clear all Wordfence Central connection data" msgstr "" #: lib/menu_tools_diagnostic.php:864 msgid "Clear Connection Data" msgstr "" #: lib/menu_tools_diagnostic.php:876 msgid "Debugging Options" msgstr "" #: lib/menu_tools_diagnostic.php:893 msgid "Enable debugging mode (increases database load)" msgstr "" #: lib/menu_tools_diagnostic.php:905 msgid "Start all scans remotely (Try this if your scans aren't starting and your site is publicly accessible)" msgstr "" #: lib/menu_tools_diagnostic.php:917 msgid "Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)" msgstr "" #: lib/menu_tools_diagnostic.php:929 msgid "Disable reading of php://input" msgstr "" #: lib/menu_tools_diagnostic.php:941 msgid "Enable beta threat defense feed" msgstr "" #: lib/menu_tools_diagnostic.php:960 #: lib/wordfenceClass.php:6137 msgid "Restore Defaults" msgstr "" #: lib/menu_tools_diagnostic.php:961 #: lib/wordfenceClass.php:6062 msgid "Cancel Changes" msgstr "" #: lib/menu_tools_diagnostic.php:962 #: lib/wordfenceClass.php:6140 msgid "Save Changes" msgstr "" #: lib/menu_tools_diagnostic.php:979 #: views/options/block-all-options-controls.php:162 #: views/options/block-controls.php:77 msgid "Confirm Restore Defaults" msgstr "" #: lib/menu_tools_diagnostic.php:980 msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page." msgstr "" #: lib/menu_tools_diagnostic.php:982 #: views/options/block-all-options-controls.php:165 #: views/options/block-controls.php:80 msgid "Restore Defaults" msgstr "" #. translators: URL to support page. #: lib/menu_tools_importExport.php:16 msgid "Learn more about importing and exporting options" msgstr "" #: lib/menu_tools_importExport.php:20 msgid "To clone one site's configuration to another, use the import/export tools below." msgstr "" #: lib/menu_tools_livetraffic.php:8 #: lib/menu_tools_livetraffic.php:41 #: lib/menu_tools_livetraffic.php:571 #: lib/menu_tools_livetraffic.php:602 #: lib/wordfenceClass.php:6560 #: models/page/wfPage.php:119 msgid "Live Traffic" msgstr "" #. translators: URL to support page. #: lib/menu_tools_livetraffic.php:44 msgid "Learn more about Live Traffic" msgstr "" #: lib/menu_tools_livetraffic.php:51 msgid "Live Updates Paused" msgstr "" #: lib/menu_tools_livetraffic.php:52 msgid "Click inside window to resume" msgstr "" #: lib/menu_tools_livetraffic.php:57 msgid "Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don't execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing." msgstr "" #: lib/menu_tools_livetraffic.php:73 msgid "Traffic logging mode: Security-related traffic only" msgstr "" #. translators: URL to support page. #: lib/menu_tools_livetraffic.php:77 #: lib/menu_tools_livetraffic.php:86 msgid " (host setting )" msgstr "" #: lib/menu_tools_livetraffic.php:78 msgid "Login and firewall activity will appear below." msgstr "" #: lib/menu_tools_livetraffic.php:82 msgid "Traffic logging mode: All traffic" msgstr "" #: lib/menu_tools_livetraffic.php:87 msgid "Regular traffic and security-related traffic will appear below." msgstr "" #: lib/menu_tools_livetraffic.php:100 #: lib/menu_tools_livetraffic.php:227 #: lib/menu_tools_livetraffic.php:458 #: lib/wordfenceClass.php:6099 msgid "Human" msgstr "" #: lib/menu_tools_livetraffic.php:101 #: lib/menu_tools_livetraffic.php:228 #: lib/menu_tools_livetraffic.php:458 #: lib/wordfenceClass.php:6061 msgid "Bot" msgstr "" #: lib/menu_tools_livetraffic.php:102 msgid "Warning" msgstr "" #: lib/menu_tools_livetraffic.php:103 #: lib/wfDiagnostic.php:746 #: lib/wordfenceClass.php:6053 msgid "Blocked" msgstr "" #: lib/menu_tools_livetraffic.php:117 msgid "Show Advanced Filters" msgstr "" #: lib/menu_tools_livetraffic.php:124 msgid "Expand All Results" msgstr "" #: lib/menu_tools_livetraffic.php:166 msgid "Add Filter" msgstr "" #: lib/menu_tools_livetraffic.php:173 msgid "From:" msgstr "" #: lib/menu_tools_livetraffic.php:176 #: lib/menu_tools_livetraffic.php:183 msgid "Clear" msgstr "" #: lib/menu_tools_livetraffic.php:180 msgid "To:" msgstr "" #: lib/menu_tools_livetraffic.php:187 msgid "Group By:" msgstr "" #: lib/menu_tools_livetraffic.php:212 msgid "An unknown location at IP" msgstr "" #: lib/menu_tools_livetraffic.php:217 #: lib/menu_tools_livetraffic.php:435 msgid "IP:" msgstr "" #: lib/menu_tools_livetraffic.php:226 #: views/scanner/issue-base.php:29 #: views/scanner/issue-base.php:39 msgid "Type:" msgstr "" #: lib/menu_tools_livetraffic.php:233 msgid "Username:" msgstr "" #: lib/menu_tools_livetraffic.php:239 msgid "HTTP Response Code:" msgstr "" #: lib/menu_tools_livetraffic.php:245 msgid "Firewall Response:" msgstr "" #: lib/menu_tools_livetraffic.php:256 msgid "Last Hit:" msgstr "" #. translators: Time ago. #: lib/menu_tools_livetraffic.php:257 msgid "Last hit was %s ago." msgstr "" #: lib/menu_tools_livetraffic.php:263 #: lib/menu_tools_livetraffic.php:442 #: lib/menu_tools_livetraffic.php:465 msgid "Unblock IP" msgstr "" #: lib/menu_tools_livetraffic.php:266 #: lib/menu_tools_livetraffic.php:447 #: lib/menu_tools_livetraffic.php:471 msgid "Unblock range" msgstr "" #: lib/menu_tools_livetraffic.php:269 #: lib/menu_tools_livetraffic.php:453 #: lib/menu_tools_livetraffic.php:477 msgid "Block IP" msgstr "" #. translators: Number of HTTP requests. #: lib/menu_tools_livetraffic.php:275 msgid "%s hits" msgstr "" #: lib/menu_tools_livetraffic.php:286 #: lib/wordfenceClass.php:6168 msgid "Type" msgstr "" #: lib/menu_tools_livetraffic.php:287 msgid "Location" msgstr "" #: lib/menu_tools_livetraffic.php:288 msgid "Page Visited" msgstr "" #: lib/menu_tools_livetraffic.php:289 #: lib/wf503.php:338 #: views/reports/activity-report-email-inline.php:294 msgid "Time" msgstr "" #: lib/menu_tools_livetraffic.php:290 msgid "IP Address" msgstr "" #: lib/menu_tools_livetraffic.php:291 #: lib/wordfenceClass.php:4224 #: views/blocking/blocking-create.php:193 msgid "Hostname" msgstr "" #: lib/menu_tools_livetraffic.php:292 msgid "Response" msgstr "" #: lib/menu_tools_livetraffic.php:293 #: views/scanner/issue-wfPluginAbandoned.php:18 #: views/scanner/issue-wfPluginAbandoned.php:19 #: views/scanner/issue-wfPluginAbandoned.php:20 #: views/scanner/issue-wfPluginRemoved.php:17 #: views/scanner/issue-wfPluginRemoved.php:18 #: views/scanner/issue-wfPluginUpgrade.php:18 #: views/scanner/issue-wfPluginUpgrade.php:19 #: views/scanner/issue-wfPluginUpgrade.php:20 #: views/scanner/issue-wfPluginVulnerable.php:17 #: views/scanner/issue-wfPluginVulnerable.php:18 #: views/scanner/issue-wfPluginVulnerable.php:19 #: views/scanner/issue-wfThemeUpgrade.php:18 #: views/scanner/issue-wfThemeUpgrade.php:19 #: views/scanner/issue-wfUpgrade.php:17 msgid "View" msgstr "" #: lib/menu_tools_livetraffic.php:307 msgid "Unspecified" msgstr "" #: lib/menu_tools_livetraffic.php:341 msgid "Activity Detail" msgstr "" #. translators: 1. User agent. 2. IP address #: lib/menu_tools_livetraffic.php:359 msgid "%1$s at an unknown location at IP %2$s" msgstr "" #. translators: IP address #: lib/menu_tools_livetraffic.php:364 msgid "An unknown location at IP %s" msgstr "" #. translators: 1. User agent. 2. HTTP referer. 3. Server response. #: lib/menu_tools_livetraffic.php:371 msgid "%1$s arrived from %2$s and %3$s" msgstr "" #. translators: 1. User agent. 2. HTTP referer. 3. Server response. #: lib/menu_tools_livetraffic.php:376 msgid "%1$s left %2$s and %3$s" msgstr "" #. translators: User agent. #: lib/menu_tools_livetraffic.php:382 msgid "%s tried to access a non-existent page" msgstr "" #. translators: 1. User agent. 2. URL of page visited. #: lib/menu_tools_livetraffic.php:388 msgid "%1$s visited %2$s" msgstr "" #. translators: 1. User agent. 2. URL of page visited. #: lib/menu_tools_livetraffic.php:393 msgid "%1$s was redirected when visiting %2$s" msgstr "" #. translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago. #: lib/menu_tools_livetraffic.php:398 #: lib/menu_tools_livetraffic.php:403 msgid "%1$s was %2$s at %3$s" msgstr "" #. translators: 1. User agent. 2. WordPress username. #: lib/menu_tools_livetraffic.php:409 msgid "%1$s logged in successfully as \"%2$s\"." msgstr "" #. translators: WordPress username. #: lib/menu_tools_livetraffic.php:412 msgid "%s logged out successfully." msgstr "" #. translators: WordPress username. #: lib/menu_tools_livetraffic.php:415 msgid "%s requested a password reset." msgstr "" #. translators: 1. User agent. 2. WordPress username. #: lib/menu_tools_livetraffic.php:418 msgid "%1$s attempted a failed login as \"%2$s\"." msgstr "" #. translators: 1. User agent. 2. WordPress username. #: lib/menu_tools_livetraffic.php:421 msgid "%1$s attempted a failed login using an invalid username \"%2$s\"." msgstr "" #. translators: WordPress username. #: lib/menu_tools_livetraffic.php:424 msgid "%s changed their password." msgstr "" #: lib/menu_tools_livetraffic.php:458 msgid "Human/Bot:" msgstr "" #: lib/menu_tools_livetraffic.php:481 msgid "Run Whois" msgstr "" #: lib/menu_tools_livetraffic.php:484 msgid "See recent traffic" msgstr "" #: lib/menu_tools_livetraffic.php:484 msgid "Recent" msgstr "" #: lib/menu_tools_livetraffic.php:489 msgid "If this is a false positive, you can exclude this parameter from being filtered by the firewall" msgstr "" #: lib/menu_tools_livetraffic.php:490 msgid "Add Param to Firewall Allowlist" msgstr "" #: lib/menu_tools_livetraffic.php:508 msgid "No requests to report yet." msgstr "" #: lib/menu_tools_livetraffic.php:572 msgid "Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the Expand All Records switch." msgstr "" #: lib/menu_tools_livetraffic.php:603 msgid "Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the Expand All Records switch. New installations will only log security-related traffic by default, though your previous setting has been preserved." msgstr "" #: lib/menu_tools_twoFactor.php:14 #: lib/menu_tools_twoFactor.php:23 #: models/page/wfPage.php:117 msgid "Two-Factor Authentication" msgstr "" #: lib/menu_tools_twoFactor.php:16 msgid "Learn more about Two-Factor Authentication" msgstr "" #: lib/menu_tools_twoFactor.php:35 msgid "2FA Mode: Legacy" msgstr "" #: lib/menu_tools_twoFactor.php:35 msgid "Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module." msgstr "" #: lib/menu_tools_twoFactor.php:36 msgid "Switch to New 2FA" msgstr "" #: lib/menu_tools_twoFactor.php:42 #: views/tools/options-group-2fa.php:31 msgid "Take Login Security to the next level with Two-Factor Authentication" msgstr "" #: lib/menu_tools_twoFactor.php:43 #: views/tools/options-group-2fa.php:32 msgid "Used by banks, government agencies, and military worldwide, two-factor authentication is one of the most secure forms of remote system authentication available. With it enabled, an attacker needs to know your username, password, and have control of your phone to log into your site. Upgrade to Premium now to enable this powerful feature." msgstr "" #: lib/menu_tools_twoFactor.php:59 msgid "With Two-Factor Authentication enabled, an attacker needs to know your username, password and have control of your phone to log in to your site. We recommend you enable Two-Factor Authentication for all Administrator level accounts." msgstr "" #: lib/menu_tools_twoFactor.php:66 msgid "Are you sure you want to restore the default Two-Factor Authentication settings? This will undo any custom changes you have made to the options on this page. If you have configured any users to use two-factor authentication, they will not be changed." msgstr "" #: lib/menu_tools_twoFactor.php:78 msgid "Note: Two-Factor Authentication is disabled when the option \"Enable Brute Force Protection\" is off." msgstr "" #: lib/menu_tools_twoFactor.php:85 msgid "Enable Two-Factor Authentication" msgstr "" #: lib/menu_tools_twoFactor.php:94 msgid "Enter username to enable Two-Factor Authentication for" msgstr "" #: lib/menu_tools_twoFactor.php:104 msgid "Use authenticator app" msgstr "" #: lib/menu_tools_twoFactor.php:113 msgid "Send code to a phone number:" msgstr "" #: lib/menu_tools_twoFactor.php:115 msgid "+1 (000) 000 0000" msgstr "" #: lib/menu_tools_twoFactor.php:134 msgid "Two-Factor Authentication Users" msgstr "" #: lib/menu_tools_twoFactor.php:175 #: views/waf/option-whitelist.php:109 #: views/waf/options-group-whitelisted.php:86 #: views/waf/options-group-whitelisted.php:99 msgid "User" msgstr "" #: lib/menu_tools_twoFactor.php:176 msgid "Mode" msgstr "" #: lib/menu_tools_twoFactor.php:177 #: views/diagnostics/text.php:225 #: views/diagnostics/text.php:263 #: views/diagnostics/text.php:317 #: views/diagnostics/text.php:337 #: views/scanner/issue-base.php:52 #: views/scanner/issue-wafStatus.php:12 #: views/scanner/issue-wafStatus.php:21 msgid "Status" msgstr "" #: lib/menu_tools_twoFactor.php:178 #: views/waf/option-whitelist.php:102 msgid "Delete" msgstr "" #. translators: Phone number. #: lib/menu_tools_twoFactor.php:186 msgid "Phone (%s)" msgstr "" #: lib/menu_tools_twoFactor.php:188 msgid "Authenticator" msgstr "" #: lib/menu_tools_twoFactor.php:192 msgid "Cellphone Sign-in Enabled" msgstr "" #: lib/menu_tools_twoFactor.php:196 msgid "Enter activation code:" msgstr "" #: lib/menu_tools_twoFactor.php:197 msgid "Code" msgstr "" #: lib/menu_tools_twoFactor.php:199 msgid "Activate" msgstr "" #: lib/menu_tools_twoFactor.php:210 msgid "No users currently have cellphone sign-in enabled." msgstr "" #: lib/menu_tools_twoFactor.php:221 msgid "2FA Mode: Normal" msgstr "" #: lib/menu_tools_twoFactor.php:221 msgid "Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app." msgstr "" #: lib/menu_tools_twoFactor.php:222 msgid "If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version." msgstr "" #: lib/menu_tools_twoFactor.php:223 msgid "Revert to Legacy 2FA" msgstr "" #: lib/menu_tools_twoFactor.php:232 msgid "Migrate or switch to new two-factor authentication?" msgstr "" #: lib/menu_tools_twoFactor.php:233 msgid "Use the buttons below to migrate to the new two-factor authentication system or switch without migration. Migration will copy all existing authenticator-based user activations over to the new system while switching will use only users already set up in the new system. Existing SMS-based two-factor authentication activations must be disabled prior to migration." msgstr "" #: lib/menu_tools_twoFactor.php:234 msgid "Migrate" msgstr "" #: lib/menu_tools_twoFactor.php:235 msgid "Switch" msgstr "" #: lib/menu_tools_twoFactor.php:243 msgid "New Two-Factor Authentication Active" msgstr "" #: lib/menu_tools_twoFactor.php:244 msgid "Your site is now using the new login security module and two-factor authentication. Before logging out, we recommend testing your login in a different browser or a private/incognito window. If any plugins or your theme cause conflicts with logging in, you can revert to the old 2FA method." msgstr "" #: lib/menu_tools_twoFactor.php:245 msgid "Go To New 2FA" msgstr "" #: lib/menu_tools_twoFactor.php:253 msgid "Migration Cannot Proceed" msgstr "" #: lib/menu_tools_twoFactor.php:254 msgid "One or more users with two-factor authentication active are using SMS, which is unsupported in the new login security module. Please either deactivate two-factor authentication for those users or change them to use an authenticator app prior to migration." msgstr "" #: lib/menu_tools_twoFactor.php:262 msgid "Migration Failed" msgstr "" #: lib/menu_tools_twoFactor.php:263 msgid "Automatic migration of the 2FA-enabled accounts failed. Please verify that your server is reachable via the internet and try again." msgstr "" #: lib/menu_tools_twoFactor.php:271 msgid "Revert back to legacy two-factor authentication?" msgstr "" #: lib/menu_tools_twoFactor.php:272 msgid "All two-factor authentication settings and users' codes will revert to your older settings. If any users had set up two-factor authentication after the update, they will no longer have 2FA enabled until you switch to the new version again." msgstr "" #: lib/menu_tools_twoFactor.php:274 msgid "Revert" msgstr "" #: lib/menu_tools_twoFactor.php:282 msgid "Legacy Two-Factor Authentication Active" msgstr "" #: lib/menu_tools_twoFactor.php:283 msgid "Your site is now using the legacy two-factor authentication system." msgstr "" #: lib/menu_tools_whois.php:7 #: lib/menu_tools_whois.php:16 #: lib/menu_tools_whois.php:75 #: models/page/wfPage.php:123 msgid "Whois Lookup" msgstr "" #. translators: URL to support page. #: lib/menu_tools_whois.php:19 msgid "Learn more about Whois Lookup" msgstr "" #: lib/menu_tools_whois.php:23 msgid "The whois service gives you a way to look up who owns an IP address or domain name that is visiting your website or is engaging in malicious activity on your website." msgstr "" #: lib/menu_tools_whois.php:36 msgid "How to block a network" msgstr "" #: lib/menu_tools_whois.php:95 #: lib/wordfenceClass.php:6081 msgid "Enter a valid IP or domain" msgstr "" #: lib/menu_tools_whois.php:95 #: lib/wordfenceClass.php:6124 msgid "Please enter a valid IP address or domain name for your whois lookup." msgstr "" #: lib/menu_tools_whois.php:99 #: lib/wordfenceClass.php:6105 msgid "Loading..." msgstr "" #: lib/menu_tools_whois.php:104 #: lib/wordfenceClass.php:6111 msgid "Look up IP or Domain" msgstr "" #: lib/menu_wordfence_central.php:10 msgid "Testing initial communication with Wordfence Central." msgstr "" #: lib/menu_wordfence_central.php:11 msgid "Passing public key to Wordfence Central." msgstr "" #: lib/menu_wordfence_central.php:12 msgid "Testing public key authentication with Wordfence Central." msgstr "" #: lib/menu_wordfence_central.php:13 msgid "Testing that Wordfence Central is able to communicate with this site." msgstr "" #: lib/menu_wordfence_central.php:14 msgid "Retrieving access token using authorization grant." msgstr "" #: lib/menu_wordfence_central.php:15 msgid "Redirecting back to Wordfence Central." msgstr "" #: lib/menu_wordfence_central.php:44 #: lib/menu_wordfence_central.php:57 #: lib/wordfenceClass.php:6576 msgid "Wordfence Central" msgstr "" #. translators: 1. Email address. 2. Localized date. #: lib/menu_wordfence_central.php:67 msgid "Activated - connected by %1$s on %2$s" msgstr "" #: lib/menu_wordfence_central.php:77 msgid "Wordfence Central Installation Process" msgstr "" #: lib/menu_wordfence_central.php:112 msgid "Disconnect Site" msgstr "" #: lib/menu_wordfence_central.php:118 msgid "To connect your site your site to Wordfence Central, use the link below:" msgstr "" #: lib/menu_wordfence_central.php:120 msgid "Connect Site" msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:67 msgid "Site is not connected to Wordfence Central." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:76 #: lib/rest-api/wfRESTAuthenticationController.php:130 msgid "Data is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:81 #: lib/rest-api/wfRESTAuthenticationController.php:135 msgid "Nonce format is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:86 #: lib/rest-api/wfRESTAuthenticationController.php:91 msgid "Site ID is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:102 #: lib/rest-api/wfRESTAuthenticationController.php:153 msgid "Nonce is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:108 #: lib/rest-api/wfRESTAuthenticationController.php:159 msgid "Signature is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:140 msgid "Email address is invalid." msgstr "" #: lib/rest-api/wfRESTAuthenticationController.php:179 msgid "Admin user with this email address not found." msgstr "" #: lib/rest-api/wfRESTBaseController.php:26 #: lib/rest-api/wfRESTBaseController.php:49 #: lib/rest-api/wfRESTBaseController.php:81 msgid "Token is invalid." msgstr "" #: lib/rest-api/wfRESTBaseController.php:64 msgid "Authorization header format is invalid." msgstr "" #: lib/rest-api/wfRESTConfigController.php:32 msgid "Specific config options to return." msgstr "" #: lib/rest-api/wfRESTConfigController.php:42 msgid "Specific config options to set." msgstr "" #. translators: Error message. #: lib/rest-api/wfRESTConfigController.php:215 #: lib/rest-api/wfRESTConfigController.php:258 #: lib/wordfenceClass.php:4508 msgid "An error occurred while saving the configuration: %s" msgstr "" #. translators: Error message. #: lib/rest-api/wfRESTConfigController.php:226 #: lib/rest-api/wfRESTConfigController.php:269 #: lib/wordfenceClass.php:4517 msgid "Errors occurred while saving the configuration: %s" msgstr "" #: lib/rest-api/wfRESTConfigController.php:231 #: lib/rest-api/wfRESTConfigController.php:274 #: lib/wordfenceClass.php:4522 msgid "Errors occurred while saving the configuration." msgstr "" #. translators: Error message. #: lib/rest-api/wfRESTConfigController.php:247 #: lib/rest-api/wfRESTConfigController.php:288 msgid "A server error occurred while saving the configuration: %s" msgstr "" #: lib/rest-api/wfRESTConfigController.php:293 msgid "Validation error: 'fields' parameter is empty or not an array." msgstr "" #: lib/rest-api/wfRESTScanController.php:16 msgid "Scan result group or all results." msgstr "" #: lib/rest-api/wfRESTScanController.php:21 msgid "Offset of scan results to return." msgstr "" #: lib/rest-api/wfRESTScanController.php:26 msgid "Number of scan results to return." msgstr "" #. translators: Localized date. #: lib/rest-api/wfRESTScanController.php:84 msgid "Wordfence scan starting at %s from Wordfence Central" msgstr "" #: lib/rest-api/wfRESTScanController.php:127 msgid "Scan stop request received from Wordfence Central." msgstr "" #: lib/rest-api/wfRESTScanController.php:128 msgid "SUM_KILLED:A request was received to stop the previous scan from Wordfence Central." msgstr "" #: lib/sysinfo.php:5 msgid "Wordfence System Info" msgstr "" #: lib/viewFullActivityLog.php:12 msgid "Wordfence Full Activity Log" msgstr "" #: lib/wf503.php:5 msgid "Your access to this site has been limited" msgstr "" #: lib/wf503.php:321 msgid "Your access to this site has been limited by the site owner" msgstr "" #: lib/wf503.php:322 msgid "Your access to this service has been limited. (HTTP response code 503)" msgstr "" #: lib/wf503.php:323 #: lib/wfLockedOut.php:328 msgid "If you think you have been blocked in error, contact the owner of this site for assistance." msgstr "" #: lib/wf503.php:331 #: lib/wfLockedOut.php:340 msgid "Block Technical Data" msgstr "" #: lib/wf503.php:334 msgid "Block Reason" msgstr "" #: lib/wf503.php:354 #: lib/wfLockedOut.php:363 msgid "About Wordfence" msgstr "" #: lib/wf503.php:355 #: lib/wfLockedOut.php:364 msgid "Wordfence is a security plugin installed on over 3 million WordPress sites. The owner of this site is using Wordfence to manage access to their site." msgstr "" #: lib/wf503.php:356 #: lib/wfLockedOut.php:365 msgid "You can also read the documentation to learn about Wordfence's blocking tools, or visit wordfence.com to learn more about Wordfence." msgstr "" #. translators: Support URL. #: lib/wf503.php:360 #: lib/wfLockedOut.php:369 msgid "Click here to learn more: Documentation" msgstr "" #. translators: Localized date. #: lib/wf503.php:361 #: lib/wfLockedOut.php:370 msgid "Generated by Wordfence at %s" msgstr "" #. translators: Localized date. #: lib/wf503.php:361 #: lib/wfLockedOut.php:370 msgid "Your computer's time:" msgstr "" #. translators: URL to the WordPress admin panel. #: lib/wfActivityReport.php:507 #: lib/wfIssues.php:487 msgid "No longer an administrator for this site? Click here to stop receiving security alerts." msgstr "" #. translators: 1. Site URL. 2. Localized date. #: lib/wfActivityReport.php:508 msgid "Wordfence activity for %1$s on %2$s" msgstr "" #: lib/wfActivityReport.php:584 #: lib/wordfenceClass.php:8298 msgid "Blocked because the IP is blocklisted" msgstr "" #. translators: Reason for firewall action. #: lib/wfActivityReport.php:587 #: lib/wordfenceClass.php:8301 msgid "Blocked for %s" msgstr "" #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. #: lib/wfActivityReport.php:599 #: lib/wordfenceClass.php:8315 msgid "Blocked for %1$s in query string: %2$s = %3$s" msgstr "" #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. #: lib/wfActivityReport.php:602 #: lib/wordfenceClass.php:8320 msgid "Blocked for %1$s in POST body: %2$s = %3$s" msgstr "" #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. #: lib/wfActivityReport.php:605 #: lib/wordfenceClass.php:8325 msgid "Blocked for %1$s in cookie: %2$s = %3$s" msgstr "" #. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. #: lib/wfActivityReport.php:608 #: lib/wordfenceClass.php:8330 msgid "Blocked for %1$s in file: %2$s = %3$s" msgstr "" #: lib/wfActivityReport.php:752 #: lib/wfDiagnostic.php:478 #: models/block/wfBlock.php:95 msgid "Unknown" msgstr "" #: lib/wfAdminNoticeQueue.php:180 #: lib/wordfenceClass.php:6074 #: lib/wordfenceClass.php:6326 #: lib/wordfenceClass.php:8819 msgid "Dismiss" msgstr "" #. translators: IP address. #: lib/wfAlerts.php:29 msgid "Wordfence has blocked IP address %s." msgstr "" #. translators: Description of firewall action. #: lib/wfAlerts.php:30 msgid "The reason is: \"%s\"." msgstr "" #. translators: Time until. #: lib/wfAlerts.php:32 msgid "The duration of the block is %s." msgstr "" #. translators: IP address. #: lib/wfAlerts.php:34 msgid "Blocking IP %s" msgstr "" #. translators: Software version. #: lib/wfAlerts.php:53 msgid "Wordfence Upgraded to version %s" msgstr "" #. translators: Software version. #: lib/wfAlerts.php:53 msgid "Your Wordfence installation has been upgraded to version %s" msgstr "" #: lib/wfAlerts.php:75 msgid "Wordfence WAF Deactivated" msgstr "" #. translators: WP username. #: lib/wfAlerts.php:75 msgid "A user with username \"%s\" deactivated the Wordfence Web Application Firewall on your WordPress site." msgstr "" #: lib/wfAlerts.php:96 msgid "Wordfence Deactivated" msgstr "" #. translators: WP username. #: lib/wfAlerts.php:96 msgid "A user with username \"%s\" deactivated Wordfence on your WordPress site." msgstr "" #: lib/wfAlerts.php:118 msgid "Password recovery attempted" msgstr "" #. translators: Email address. #: lib/wfAlerts.php:118 msgid "Someone tried to recover the password for user with email address: %s" msgstr "" #. translators: 1. IP address. 2. Description of firewall action. #: lib/wfAlerts.php:142 msgid "A user with IP address %1$s has been locked out from signing in or using the password recovery form for the following reason: %2$s." msgstr "" #. translators: Time until. #: lib/wfAlerts.php:144 msgid "The duration of the lockout is %s." msgstr "" #: lib/wfAlerts.php:146 msgid "User locked out from signing in" msgstr "" #: lib/wfAlerts.php:179 msgid "Admin Login" msgstr "" #. translators: WP username. #: lib/wfAlerts.php:179 msgid "A user with username \"%s\" who has administrator access signed in to your WordPress site." msgstr "" #: lib/wfAlerts.php:213 msgid "User login" msgstr "" #. translators: WP username. #: lib/wfAlerts.php:213 msgid "A non-admin user with username \"%s\" signed in to your WordPress site." msgstr "" #: lib/wfAlerts.php:241 msgid "User login blocked for insecure password" msgstr "" #. translators: 1. WP username. 2. Reset password URL. 3. Support URL. #: lib/wfAlerts.php:243 msgid "A user with username \"%1$s\" tried to sign in to your WordPress site. Access was denied because the password being used exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change or reset the password (%2$s) to reactivate this account. Learn More: %3$s" msgstr "" #: lib/wfAlerts.php:260 msgid "Increased Attack Rate" msgstr "" #: lib/wfAPI.php:31 msgid "SSL is not supported by your web server and is required to use this function. Please ask your hosting provider or site admin to install cURL with openSSL to use this feature." msgstr "" #. translators: API call/action/endpoint. #: lib/wfAPI.php:39 msgid "We received an empty data response from the Wordfence scanning servers when calling the '%s' function." msgstr "" #: lib/wfAPI.php:73 msgid "The Wordfence license you're using does not match this site's address. Premium features are disabled." msgstr "" #. translators: API call/action/endpoint. #: lib/wfAPI.php:101 msgid "We received a data structure that is not the expected array when contacting the Wordfence scanning servers and calling the '%s' function." msgstr "" #. translators: API version. #: lib/wfAPI.php:110 msgid "Calling Wordfence API v%s:" msgstr "" #. translators: Error message. #: lib/wfAPI.php:136 msgid "There was an error connecting to the Wordfence scanning servers: %s" msgstr "" #: lib/wfAPI.php:138 msgid "There was an unknown error connecting to the Wordfence scanning servers." msgstr "" #: lib/wfBulkCountries.php:5 msgid "Andorra" msgstr "" #: lib/wfBulkCountries.php:6 msgid "United Arab Emirates" msgstr "" #: lib/wfBulkCountries.php:7 msgid "Afghanistan" msgstr "" #: lib/wfBulkCountries.php:8 msgid "Antigua and Barbuda" msgstr "" #: lib/wfBulkCountries.php:9 msgid "Anguilla" msgstr "" #: lib/wfBulkCountries.php:10 msgid "Albania" msgstr "" #: lib/wfBulkCountries.php:11 msgid "Armenia" msgstr "" #: lib/wfBulkCountries.php:12 msgid "Angola" msgstr "" #: lib/wfBulkCountries.php:13 msgid "Antarctica" msgstr "" #: lib/wfBulkCountries.php:14 msgid "Argentina" msgstr "" #: lib/wfBulkCountries.php:15 msgid "American Samoa" msgstr "" #: lib/wfBulkCountries.php:16 msgid "Austria" msgstr "" #: lib/wfBulkCountries.php:17 msgid "Australia" msgstr "" #: lib/wfBulkCountries.php:18 msgid "Aruba" msgstr "" #: lib/wfBulkCountries.php:19 msgid "Aland Islands" msgstr "" #: lib/wfBulkCountries.php:20 msgid "Azerbaijan" msgstr "" #: lib/wfBulkCountries.php:21 msgid "Bosnia and Herzegovina" msgstr "" #: lib/wfBulkCountries.php:22 msgid "Barbados" msgstr "" #: lib/wfBulkCountries.php:23 msgid "Bangladesh" msgstr "" #: lib/wfBulkCountries.php:24 msgid "Belgium" msgstr "" #: lib/wfBulkCountries.php:25 msgid "Burkina Faso" msgstr "" #: lib/wfBulkCountries.php:26 msgid "Bulgaria" msgstr "" #: lib/wfBulkCountries.php:27 msgid "Bahrain" msgstr "" #: lib/wfBulkCountries.php:28 msgid "Burundi" msgstr "" #: lib/wfBulkCountries.php:29 msgid "Benin" msgstr "" #: lib/wfBulkCountries.php:30 msgid "Saint Bartelemey" msgstr "" #: lib/wfBulkCountries.php:31 msgid "Bermuda" msgstr "" #: lib/wfBulkCountries.php:32 msgid "Brunei Darussalam" msgstr "" #: lib/wfBulkCountries.php:33 msgid "Bolivia" msgstr "" #: lib/wfBulkCountries.php:34 msgid "Bonaire, Saint Eustatius and Saba" msgstr "" #: lib/wfBulkCountries.php:35 msgid "Brazil" msgstr "" #: lib/wfBulkCountries.php:36 msgid "Bahamas" msgstr "" #: lib/wfBulkCountries.php:37 msgid "Bhutan" msgstr "" #: lib/wfBulkCountries.php:38 msgid "Bouvet Island" msgstr "" #: lib/wfBulkCountries.php:39 msgid "Botswana" msgstr "" #: lib/wfBulkCountries.php:40 msgid "Belarus" msgstr "" #: lib/wfBulkCountries.php:41 msgid "Belize" msgstr "" #: lib/wfBulkCountries.php:42 msgid "Canada" msgstr "" #: lib/wfBulkCountries.php:43 msgid "Cocos (Keeling) Islands" msgstr "" #: lib/wfBulkCountries.php:44 msgid "Congo, The Democratic Republic of the" msgstr "" #: lib/wfBulkCountries.php:45 msgid "Central African Republic" msgstr "" #: lib/wfBulkCountries.php:46 msgid "Congo" msgstr "" #: lib/wfBulkCountries.php:47 msgid "Switzerland" msgstr "" #: lib/wfBulkCountries.php:48 msgid "Cote dIvoire" msgstr "" #: lib/wfBulkCountries.php:49 msgid "Cook Islands" msgstr "" #: lib/wfBulkCountries.php:50 msgid "Chile" msgstr "" #: lib/wfBulkCountries.php:51 msgid "Cameroon" msgstr "" #: lib/wfBulkCountries.php:52 msgid "China" msgstr "" #: lib/wfBulkCountries.php:53 msgid "Colombia" msgstr "" #: lib/wfBulkCountries.php:54 msgid "Costa Rica" msgstr "" #: lib/wfBulkCountries.php:55 msgid "Cuba" msgstr "" #: lib/wfBulkCountries.php:56 msgid "Cape Verde" msgstr "" #: lib/wfBulkCountries.php:57 msgid "Curacao" msgstr "" #: lib/wfBulkCountries.php:58 msgid "Christmas Island" msgstr "" #: lib/wfBulkCountries.php:59 msgid "Cyprus" msgstr "" #: lib/wfBulkCountries.php:60 msgid "Czech Republic" msgstr "" #: lib/wfBulkCountries.php:61 msgid "Germany" msgstr "" #: lib/wfBulkCountries.php:62 msgid "Djibouti" msgstr "" #: lib/wfBulkCountries.php:63 msgid "Denmark" msgstr "" #: lib/wfBulkCountries.php:64 msgid "Dominica" msgstr "" #: lib/wfBulkCountries.php:65 msgid "Dominican Republic" msgstr "" #: lib/wfBulkCountries.php:66 msgid "Algeria" msgstr "" #: lib/wfBulkCountries.php:67 msgid "Ecuador" msgstr "" #: lib/wfBulkCountries.php:68 msgid "Estonia" msgstr "" #: lib/wfBulkCountries.php:69 msgid "Egypt" msgstr "" #: lib/wfBulkCountries.php:70 msgid "Western Sahara" msgstr "" #: lib/wfBulkCountries.php:71 msgid "Eritrea" msgstr "" #: lib/wfBulkCountries.php:72 msgid "Spain" msgstr "" #: lib/wfBulkCountries.php:73 msgid "Ethiopia" msgstr "" #: lib/wfBulkCountries.php:74 msgid "Europe" msgstr "" #: lib/wfBulkCountries.php:75 msgid "Finland" msgstr "" #: lib/wfBulkCountries.php:76 msgid "Fiji" msgstr "" #: lib/wfBulkCountries.php:77 msgid "Falkland Islands (Malvinas)" msgstr "" #: lib/wfBulkCountries.php:78 msgid "Micronesia, Federated States of" msgstr "" #: lib/wfBulkCountries.php:79 msgid "Faroe Islands" msgstr "" #: lib/wfBulkCountries.php:80 msgid "France" msgstr "" #: lib/wfBulkCountries.php:81 msgid "Gabon" msgstr "" #: lib/wfBulkCountries.php:82 msgid "United Kingdom" msgstr "" #: lib/wfBulkCountries.php:83 msgid "Grenada" msgstr "" #: lib/wfBulkCountries.php:84 msgid "Georgia" msgstr "" #: lib/wfBulkCountries.php:85 msgid "French Guiana" msgstr "" #: lib/wfBulkCountries.php:86 msgid "Guernsey" msgstr "" #: lib/wfBulkCountries.php:87 msgid "Ghana" msgstr "" #: lib/wfBulkCountries.php:88 msgid "Gibraltar" msgstr "" #: lib/wfBulkCountries.php:89 msgid "Greenland" msgstr "" #: lib/wfBulkCountries.php:90 msgid "Gambia" msgstr "" #: lib/wfBulkCountries.php:91 msgid "Guinea" msgstr "" #: lib/wfBulkCountries.php:92 msgid "Guadeloupe" msgstr "" #: lib/wfBulkCountries.php:93 msgid "Equatorial Guinea" msgstr "" #: lib/wfBulkCountries.php:94 msgid "Greece" msgstr "" #: lib/wfBulkCountries.php:95 msgid "South Georgia and the South Sandwich Islands" msgstr "" #: lib/wfBulkCountries.php:96 msgid "Guatemala" msgstr "" #: lib/wfBulkCountries.php:97 msgid "Guam" msgstr "" #: lib/wfBulkCountries.php:98 msgid "Guinea-Bissau" msgstr "" #: lib/wfBulkCountries.php:99 msgid "Guyana" msgstr "" #: lib/wfBulkCountries.php:100 msgid "Hong Kong" msgstr "" #: lib/wfBulkCountries.php:101 msgid "Heard Island and McDonald Islands" msgstr "" #: lib/wfBulkCountries.php:102 msgid "Honduras" msgstr "" #: lib/wfBulkCountries.php:103 msgid "Croatia" msgstr "" #: lib/wfBulkCountries.php:104 msgid "Haiti" msgstr "" #: lib/wfBulkCountries.php:105 msgid "Hungary" msgstr "" #: lib/wfBulkCountries.php:106 msgid "Indonesia" msgstr "" #: lib/wfBulkCountries.php:107 msgid "Ireland" msgstr "" #: lib/wfBulkCountries.php:108 msgid "Israel" msgstr "" #: lib/wfBulkCountries.php:109 msgid "Isle of Man" msgstr "" #: lib/wfBulkCountries.php:110 msgid "India" msgstr "" #: lib/wfBulkCountries.php:111 msgid "British Indian Ocean Territory" msgstr "" #: lib/wfBulkCountries.php:112 msgid "Iraq" msgstr "" #: lib/wfBulkCountries.php:113 msgid "Iran, Islamic Republic of" msgstr "" #: lib/wfBulkCountries.php:114 msgid "Iceland" msgstr "" #: lib/wfBulkCountries.php:115 msgid "Italy" msgstr "" #: lib/wfBulkCountries.php:116 msgid "Jersey" msgstr "" #: lib/wfBulkCountries.php:117 msgid "Jamaica" msgstr "" #: lib/wfBulkCountries.php:118 msgid "Jordan" msgstr "" #: lib/wfBulkCountries.php:119 msgid "Japan" msgstr "" #: lib/wfBulkCountries.php:120 msgid "Kenya" msgstr "" #: lib/wfBulkCountries.php:121 msgid "Kyrgyzstan" msgstr "" #: lib/wfBulkCountries.php:122 msgid "Cambodia" msgstr "" #: lib/wfBulkCountries.php:123 msgid "Kiribati" msgstr "" #: lib/wfBulkCountries.php:124 msgid "Comoros" msgstr "" #: lib/wfBulkCountries.php:125 msgid "Saint Kitts and Nevis" msgstr "" #: lib/wfBulkCountries.php:126 msgid "North Korea" msgstr "" #: lib/wfBulkCountries.php:127 msgid "South Korea" msgstr "" #: lib/wfBulkCountries.php:128 msgid "Kuwait" msgstr "" #: lib/wfBulkCountries.php:129 msgid "Cayman Islands" msgstr "" #: lib/wfBulkCountries.php:130 msgid "Kazakhstan" msgstr "" #: lib/wfBulkCountries.php:131 msgid "Lao Peoples Democratic Republic" msgstr "" #: lib/wfBulkCountries.php:132 msgid "Lebanon" msgstr "" #: lib/wfBulkCountries.php:133 msgid "Saint Lucia" msgstr "" #: lib/wfBulkCountries.php:134 msgid "Liechtenstein" msgstr "" #: lib/wfBulkCountries.php:135 msgid "Sri Lanka" msgstr "" #: lib/wfBulkCountries.php:136 msgid "Liberia" msgstr "" #: lib/wfBulkCountries.php:137 msgid "Lesotho" msgstr "" #: lib/wfBulkCountries.php:138 msgid "Lithuania" msgstr "" #: lib/wfBulkCountries.php:139 msgid "Luxembourg" msgstr "" #: lib/wfBulkCountries.php:140 msgid "Latvia" msgstr "" #: lib/wfBulkCountries.php:141 msgid "Libyan Arab Jamahiriya" msgstr "" #: lib/wfBulkCountries.php:142 msgid "Morocco" msgstr "" #: lib/wfBulkCountries.php:143 msgid "Monaco" msgstr "" #: lib/wfBulkCountries.php:144 msgid "Moldova, Republic of" msgstr "" #: lib/wfBulkCountries.php:145 msgid "Montenegro" msgstr "" #: lib/wfBulkCountries.php:146 msgid "Saint Martin" msgstr "" #: lib/wfBulkCountries.php:147 msgid "Madagascar" msgstr "" #: lib/wfBulkCountries.php:148 msgid "Marshall Islands" msgstr "" #: lib/wfBulkCountries.php:149 msgid "Macedonia" msgstr "" #: lib/wfBulkCountries.php:150 msgid "Mali" msgstr "" #: lib/wfBulkCountries.php:151 msgid "Myanmar" msgstr "" #: lib/wfBulkCountries.php:152 msgid "Mongolia" msgstr "" #: lib/wfBulkCountries.php:153 msgid "Macao" msgstr "" #: lib/wfBulkCountries.php:154 msgid "Northern Mariana Islands" msgstr "" #: lib/wfBulkCountries.php:155 msgid "Martinique" msgstr "" #: lib/wfBulkCountries.php:156 msgid "Mauritania" msgstr "" #: lib/wfBulkCountries.php:157 msgid "Montserrat" msgstr "" #: lib/wfBulkCountries.php:158 msgid "Malta" msgstr "" #: lib/wfBulkCountries.php:159 msgid "Mauritius" msgstr "" #: lib/wfBulkCountries.php:160 msgid "Maldives" msgstr "" #: lib/wfBulkCountries.php:161 msgid "Malawi" msgstr "" #: lib/wfBulkCountries.php:162 msgid "Mexico" msgstr "" #: lib/wfBulkCountries.php:163 msgid "Malaysia" msgstr "" #: lib/wfBulkCountries.php:164 msgid "Mozambique" msgstr "" #: lib/wfBulkCountries.php:165 msgid "Namibia" msgstr "" #: lib/wfBulkCountries.php:166 msgid "New Caledonia" msgstr "" #: lib/wfBulkCountries.php:167 msgid "Niger" msgstr "" #: lib/wfBulkCountries.php:168 msgid "Norfolk Island" msgstr "" #: lib/wfBulkCountries.php:169 msgid "Nigeria" msgstr "" #: lib/wfBulkCountries.php:170 msgid "Nicaragua" msgstr "" #: lib/wfBulkCountries.php:171 msgid "Netherlands" msgstr "" #: lib/wfBulkCountries.php:172 msgid "Norway" msgstr "" #: lib/wfBulkCountries.php:173 msgid "Nepal" msgstr "" #: lib/wfBulkCountries.php:174 msgid "Nauru" msgstr "" #: lib/wfBulkCountries.php:175 msgid "Niue" msgstr "" #: lib/wfBulkCountries.php:176 msgid "New Zealand" msgstr "" #: lib/wfBulkCountries.php:177 msgid "Oman" msgstr "" #: lib/wfBulkCountries.php:178 msgid "Panama" msgstr "" #: lib/wfBulkCountries.php:179 msgid "Peru" msgstr "" #: lib/wfBulkCountries.php:180 msgid "French Polynesia" msgstr "" #: lib/wfBulkCountries.php:181 msgid "Papua New Guinea" msgstr "" #: lib/wfBulkCountries.php:182 msgid "Philippines" msgstr "" #: lib/wfBulkCountries.php:183 msgid "Pakistan" msgstr "" #: lib/wfBulkCountries.php:184 msgid "Poland" msgstr "" #: lib/wfBulkCountries.php:185 msgid "Saint Pierre and Miquelon" msgstr "" #: lib/wfBulkCountries.php:186 msgid "Pitcairn" msgstr "" #: lib/wfBulkCountries.php:187 msgid "Puerto Rico" msgstr "" #: lib/wfBulkCountries.php:188 msgid "Palestinian Territory" msgstr "" #: lib/wfBulkCountries.php:189 msgid "Portugal" msgstr "" #: lib/wfBulkCountries.php:190 msgid "Palau" msgstr "" #: lib/wfBulkCountries.php:191 msgid "Paraguay" msgstr "" #: lib/wfBulkCountries.php:192 msgid "Qatar" msgstr "" #: lib/wfBulkCountries.php:193 msgid "Reunion" msgstr "" #: lib/wfBulkCountries.php:194 msgid "Romania" msgstr "" #: lib/wfBulkCountries.php:195 msgid "Serbia" msgstr "" #: lib/wfBulkCountries.php:196 msgid "Russian Federation" msgstr "" #: lib/wfBulkCountries.php:197 msgid "Rwanda" msgstr "" #: lib/wfBulkCountries.php:198 msgid "Saudi Arabia" msgstr "" #: lib/wfBulkCountries.php:199 msgid "Solomon Islands" msgstr "" #: lib/wfBulkCountries.php:200 msgid "Seychelles" msgstr "" #: lib/wfBulkCountries.php:201 msgid "Sudan" msgstr "" #: lib/wfBulkCountries.php:202 msgid "Sweden" msgstr "" #: lib/wfBulkCountries.php:203 msgid "Singapore" msgstr "" #: lib/wfBulkCountries.php:204 msgid "Saint Helena" msgstr "" #: lib/wfBulkCountries.php:205 msgid "Slovenia" msgstr "" #: lib/wfBulkCountries.php:206 msgid "Svalbard and Jan Mayen" msgstr "" #: lib/wfBulkCountries.php:207 msgid "Slovakia" msgstr "" #: lib/wfBulkCountries.php:208 msgid "Sierra Leone" msgstr "" #: lib/wfBulkCountries.php:209 msgid "San Marino" msgstr "" #: lib/wfBulkCountries.php:210 msgid "Senegal" msgstr "" #: lib/wfBulkCountries.php:211 msgid "Somalia" msgstr "" #: lib/wfBulkCountries.php:212 msgid "Suriname" msgstr "" #: lib/wfBulkCountries.php:213 msgid "Sao Tome and Principe" msgstr "" #: lib/wfBulkCountries.php:214 msgid "El Salvador" msgstr "" #: lib/wfBulkCountries.php:215 msgid "Sint Maarten" msgstr "" #: lib/wfBulkCountries.php:216 msgid "Syrian Arab Republic" msgstr "" #: lib/wfBulkCountries.php:217 msgid "Swaziland" msgstr "" #: lib/wfBulkCountries.php:218 msgid "Turks and Caicos Islands" msgstr "" #: lib/wfBulkCountries.php:219 msgid "Chad" msgstr "" #: lib/wfBulkCountries.php:220 msgid "French Southern Territories" msgstr "" #: lib/wfBulkCountries.php:221 msgid "Togo" msgstr "" #: lib/wfBulkCountries.php:222 msgid "Thailand" msgstr "" #: lib/wfBulkCountries.php:223 msgid "Tajikistan" msgstr "" #: lib/wfBulkCountries.php:224 msgid "Tokelau" msgstr "" #: lib/wfBulkCountries.php:225 msgid "Timor-Leste" msgstr "" #: lib/wfBulkCountries.php:226 msgid "Turkmenistan" msgstr "" #: lib/wfBulkCountries.php:227 msgid "Tunisia" msgstr "" #: lib/wfBulkCountries.php:228 msgid "Tonga" msgstr "" #: lib/wfBulkCountries.php:229 msgid "Turkey" msgstr "" #: lib/wfBulkCountries.php:230 msgid "Trinidad and Tobago" msgstr "" #: lib/wfBulkCountries.php:231 msgid "Tuvalu" msgstr "" #: lib/wfBulkCountries.php:232 msgid "Taiwan" msgstr "" #: lib/wfBulkCountries.php:233 msgid "Tanzania, United Republic of" msgstr "" #: lib/wfBulkCountries.php:234 msgid "Ukraine" msgstr "" #: lib/wfBulkCountries.php:235 msgid "Uganda" msgstr "" #: lib/wfBulkCountries.php:236 msgid "United States Minor Outlying Islands" msgstr "" #: lib/wfBulkCountries.php:237 msgid "United States" msgstr "" #: lib/wfBulkCountries.php:238 msgid "Uruguay" msgstr "" #: lib/wfBulkCountries.php:239 msgid "Uzbekistan" msgstr "" #: lib/wfBulkCountries.php:240 msgid "Holy See (Vatican City State)" msgstr "" #: lib/wfBulkCountries.php:241 msgid "Saint Vincent and the Grenadines" msgstr "" #: lib/wfBulkCountries.php:242 msgid "Venezuela" msgstr "" #: lib/wfBulkCountries.php:243 msgid "Virgin Islands, British" msgstr "" #: lib/wfBulkCountries.php:244 msgid "Virgin Islands, U.S." msgstr "" #: lib/wfBulkCountries.php:245 msgid "Vietnam" msgstr "" #: lib/wfBulkCountries.php:246 msgid "Vanuatu" msgstr "" #: lib/wfBulkCountries.php:247 msgid "Wallis and Futuna" msgstr "" #: lib/wfBulkCountries.php:248 msgid "Samoa" msgstr "" #: lib/wfBulkCountries.php:249 msgid "Kosovo" msgstr "" #: lib/wfBulkCountries.php:250 msgid "Yemen" msgstr "" #: lib/wfBulkCountries.php:251 msgid "Mayotte" msgstr "" #: lib/wfBulkCountries.php:252 msgid "South Africa" msgstr "" #: lib/wfBulkCountries.php:253 msgid "Zambia" msgstr "" #: lib/wfBulkCountries.php:254 msgid "Zimbabwe" msgstr "" #. translators: 1. HTTP status code. 2. Error message. #: lib/wfCentralAPI.php:201 msgid "HTTP %1$d received from Wordfence Central: %2$s" msgstr "" #: lib/wfCentralAPI.php:263 #: lib/wfCentralAPI.php:319 msgid "Unable to authenticate with Wordfence Central." msgstr "" #: lib/wfCentralAPI.php:282 msgid "Wordfence Central site ID has not been created yet." msgstr "" #: lib/wfCentralAPI.php:286 msgid "Wordfence Central secret key has not been created yet." msgstr "" #: lib/wfCentralAPI.php:298 msgid "Invalid response received from Wordfence Central when fetching nonce." msgstr "" #: lib/wfCentralAPI.php:316 msgid "Invalid response received from Wordfence Central when fetching token." msgstr "" #. translators: 1. Key in key-value store. 2. Value in key-value store. #: lib/wfConfig.php:482 msgid "wfConfig::set() got an array as second param with key: %1$s and value: %2$s" msgstr "" #. translators: Key in key-value store. #: lib/wfConfig.php:627 msgid "Error reassembling value for %s" msgstr "" #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. #: lib/wfConfig.php:721 #: lib/wfConfig.php:730 #: lib/wfConfig.php:737 #: lib/wfConfig.php:747 #: lib/wfConfig.php:754 msgid "Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)" msgstr "" #. translators: Key in key-value store. #: lib/wfConfig.php:766 msgid "Error writing value header for %s" msgstr "" #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. #: lib/wfConfig.php:779 #: lib/wfConfig.php:790 #: lib/wfConfig.php:800 msgid "Error writing value for %1$s (MySQLi error: [%2$s] %3$s)" msgstr "" #. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. #: lib/wfConfig.php:807 msgid "Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)" msgstr "" #. translators: Support URL. #: lib/wfConfig.php:977 msgid "Wordfence Upgrade not run. Please modify your .htaccess" msgstr "" #. translators: Support URL. #: lib/wfConfig.php:977 msgid "" "To preserve the integrity of your website we are not running Wordfence auto-update.\n" "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" "Please go to your website now and make a minor change to your .htaccess to fix this.\n" "You can find out how to make this change at:\n" "%s\n" "\n" "Alternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n" "" msgstr "" #: lib/wfConfig.php:1100 msgid "Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory." msgstr "" #: lib/wfConfig.php:1137 msgid "Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file." msgstr "" #: lib/wfConfig.php:1174 #: lib/wordfenceClass.php:7419 msgid "The grace period end time must be in the future." msgstr "" #: lib/wfConfig.php:1183 msgid "Unknown firewall mode." msgstr "" #: lib/wfConfig.php:1202 msgid "The following emails are invalid: " msgstr "" #. translators: Regular expression. #: lib/wfConfig.php:1215 msgid "\"%s\" is not a valid regular expression." msgstr "" #: lib/wfConfig.php:1234 msgid "Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: " msgstr "" #: lib/wfConfig.php:1253 msgid "The following users you selected to ignore in live traffic reports are not valid on this system: " msgstr "" #: lib/wfConfig.php:1270 msgid "The following IPs you selected to ignore in live traffic reports are not valid: " msgstr "" #: lib/wfConfig.php:1287 msgid "The following IPs/ranges you selected to trust as proxies are not valid: " msgstr "" #: lib/wfConfig.php:1297 msgid "An empty license key was entered." msgstr "" #: lib/wfConfig.php:1300 #: lib/wordfenceClass.php:4393 msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F." msgstr "" #: lib/wfConfig.php:1312 msgid "A wildcard cannot be used to exclude all files from the scan." msgstr "" #: lib/wfConfig.php:1779 #: lib/wfConfig.php:1801 msgid "The Wordfence server's response did not contain the expected elements." msgstr "" #: lib/wfConfig.php:1783 msgid "Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: " msgstr "" #: lib/wfConfig.php:1805 msgid "Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: " msgstr "" #: lib/wfConfig.php:1849 msgid "Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: " msgstr "" #: lib/wfDashboard.php:184 msgid "Complex" msgstr "" #: lib/wfDashboard.php:189 msgid "Brute Force" msgstr "" #: lib/wfDashboard.php:194 msgid "Blocklist" msgstr "" #: lib/wfDiagnostic.php:58 msgid "General information about the Wordfence installation." msgstr "" #: lib/wfDiagnostic.php:60 msgid "Wordfence Version" msgstr "" #: lib/wfDiagnostic.php:61 msgid "GeoIP Version" msgstr "" #: lib/wfDiagnostic.php:62 msgid "Cron Status" msgstr "" #: lib/wfDiagnostic.php:66 msgid "Ability to read/write various files." msgstr "" #: lib/wfDiagnostic.php:68 msgid "Checking if web server can read from ~/plugins/wordfence" msgstr "" #: lib/wfDiagnostic.php:69 msgid "Checking if web server can write to ~/plugins/wordfence" msgstr "" #: lib/wfDiagnostic.php:70 msgid "Checking if web server can read from ~/wp-content/wflogs" msgstr "" #: lib/wfDiagnostic.php:71 msgid "Checking if web server can write to ~/wp-content/wflogs" msgstr "" #: lib/wfDiagnostic.php:75 msgid "Ability to save Wordfence settings to the database." msgstr "" #: lib/wfDiagnostic.php:77 msgid "Checking basic config reading/writing" msgstr "" #: lib/wfDiagnostic.php:78 msgid "Checking serialized config reading/writing" msgstr "" #: lib/wfDiagnostic.php:82 msgid "Current WAF configuration." msgstr "" #: lib/wfDiagnostic.php:84 msgid "WAF auto prepend active" msgstr "" #: lib/wfDiagnostic.php:85 msgid "WAF storage engine (WFWAF_STORAGE_ENGINE)" msgstr "" #: lib/wfDiagnostic.php:86 msgid "WAF log path" msgstr "" #: lib/wfDiagnostic.php:87 msgid "WAF subdirectory installation" msgstr "" #: lib/wfDiagnostic.php:88 msgid "wordfence-waf.php path" msgstr "" #: lib/wfDiagnostic.php:89 msgid "WAF File Permissions" msgstr "" #: lib/wfDiagnostic.php:90 msgid "Recently removed wflogs files" msgstr "" #: lib/wfDiagnostic.php:94 msgid "Database version and privileges." msgstr "" #: lib/wfDiagnostic.php:96 msgid "Database Version" msgstr "" #: lib/wfDiagnostic.php:97 msgid "Checking if MySQL user has DELETE privilege" msgstr "" #: lib/wfDiagnostic.php:98 msgid "Checking if MySQL user has INSERT privilege" msgstr "" #: lib/wfDiagnostic.php:99 msgid "Checking if MySQL user has UPDATE privilege" msgstr "" #: lib/wfDiagnostic.php:100 msgid "Checking if MySQL user has SELECT privilege" msgstr "" #: lib/wfDiagnostic.php:101 msgid "Checking if MySQL user has CREATE TABLE privilege" msgstr "" #: lib/wfDiagnostic.php:102 msgid "Checking if MySQL user has ALTER TABLE privilege" msgstr "" #: lib/wfDiagnostic.php:103 msgid "Checking if MySQL user has DROP privilege" msgstr "" #: lib/wfDiagnostic.php:104 msgid "Checking if MySQL user has TRUNCATE privilege" msgstr "" #: lib/wfDiagnostic.php:108 msgid "PHP version, important PHP extensions." msgstr "" #. translators: Support URL. #: lib/wfDiagnostic.php:110 msgid "PHP version >= PHP 5.6.20
(Minimum version required by WordPress) " msgstr "" #. translators: Support URL. #: lib/wfDiagnostic.php:111 msgid "Process Owner" msgstr "" #: lib/wfDiagnostic.php:112 msgid "Checking for OpenSSL support" msgstr "" #: lib/wfDiagnostic.php:113 msgid "Checking OpenSSL version" msgstr "" #: lib/wfDiagnostic.php:114 msgid "Checking for cURL support" msgstr "" #: lib/wfDiagnostic.php:115 msgid "cURL Features Code" msgstr "" #: lib/wfDiagnostic.php:116 msgid "cURL Host" msgstr "" #: lib/wfDiagnostic.php:117 msgid "cURL Support Protocols" msgstr "" #: lib/wfDiagnostic.php:118 msgid "cURL SSL Version" msgstr "" #: lib/wfDiagnostic.php:119 msgid "cURL libz Version" msgstr "" #: lib/wfDiagnostic.php:120 msgid "Checking display_errors
(Should be disabled on production servers)" msgstr "" #: lib/wfDiagnostic.php:124 msgid "Ability to connect to the Wordfence servers and your own site." msgstr "" #: lib/wfDiagnostic.php:126 msgid "Connecting to Wordfence servers (http)" msgstr "" #: lib/wfDiagnostic.php:127 msgid "Connecting to Wordfence servers (https)" msgstr "" #: lib/wfDiagnostic.php:128 msgid "Connecting back to this site" msgstr "" #: lib/wfDiagnostic.php:129 msgid "IP(s) used by this server" msgstr "" #: lib/wfDiagnostic.php:133 msgid "Server time accuracy and applied offsets." msgstr "" #: lib/wfDiagnostic.php:135 msgid "Wordfence Network Time" msgstr "" #: lib/wfDiagnostic.php:136 #: lib/wfDiagnostic.php:786 msgid "Server Time" msgstr "" #: lib/wfDiagnostic.php:137 msgid "Wordfence Network Time Offset" msgstr "" #: lib/wfDiagnostic.php:138 msgid "NTP Time Offset" msgstr "" #: lib/wfDiagnostic.php:139 msgid "TOTP Time Source" msgstr "" #: lib/wfDiagnostic.php:140 msgid "WordPress Time Zone" msgstr "" #. translators: Number of jobs. #: lib/wfDiagnostic.php:197 msgid "%d Job Overdue" msgid_plural "%d Jobs Overdue" msgstr[0] "" msgstr[1] "" #. translators: Number of jobs. #: lib/wfDiagnostic.php:197 msgid "Normal" msgstr "" #: lib/wfDiagnostic.php:216 #: lib/wfDiagnostic.php:219 msgid "No files readable" msgstr "" #. translators: File name. #: lib/wfDiagnostic.php:231 #: lib/wfDiagnostic.php:267 msgid "File \"%s\" does not exist" msgstr "" #. translators: File path. #: lib/wfDiagnostic.php:234 msgid "File \"%s\" is unreadable" msgstr "" #: lib/wfDiagnostic.php:252 #: lib/wfDiagnostic.php:255 msgid "No files writable" msgstr "" #. translators: File name. #: lib/wfDiagnostic.php:270 msgid "File \"%s\" is unwritable" msgstr "" #: lib/wfDiagnostic.php:340 msgid "Basic config writing" msgstr "" #: lib/wfDiagnostic.php:352 msgid "Serialized config writing" msgstr "" #: lib/wfDiagnostic.php:360 msgid "(default)" msgstr "" #. translators: Unix file permissions in octal (example 0777). #: lib/wfDiagnostic.php:388 msgid "%s - using constant" msgstr "" #. translators: Unix file permissions in octal (example 0777). #: lib/wfDiagnostic.php:401 msgid "%s - using template" msgstr "" #: lib/wfDiagnostic.php:405 msgid "0660 - using default" msgstr "" #: lib/wfDiagnostic.php:439 msgid "Unavailable" msgstr "" #: lib/wfDiagnostic.php:607 #: lib/wfDiagnostic.php:610 msgid "wp_remote_post() test to noc1.wordfence.com failed! Response was: " msgstr "" #: lib/wfDiagnostic.php:611 msgid "This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself." msgstr "" #: lib/wfDiagnostic.php:644 #: lib/wfDiagnostic.php:647 msgid "wp_remote_post() test back to this server failed! Response was: " msgstr "" #: lib/wfDiagnostic.php:648 msgid "This additional info may help you diagnose the issue. The response headers we received were:" msgstr "" #. translators: PHP super global key. #: lib/wfDiagnostic.php:677 msgid "We cannot read $_SERVER[%s]" msgstr "" #: lib/wfDiagnostic.php:689 msgid "Should be: " msgstr "" #: lib/wfDiagnostic.php:772 msgid "NTP" msgstr "" #: lib/wfImportExportController.php:43 #: lib/wfImportExportController.php:50 msgid "An error occurred: " msgstr "" #: lib/wfImportExportController.php:46 msgid "Invalid response: " msgstr "" #: lib/wfImportExportController.php:62 msgid "An error occurred: Invalid options format received." msgstr "" #. translators: Error message. #: lib/wfImportExportController.php:107 #: lib/wfImportExportController.php:114 msgid "An error occurred: %s" msgstr "" #. translators: Error message. #: lib/wfImportExportController.php:110 msgid "Invalid response: %s" msgstr "" #: lib/wfLockedOut.php:10 msgid "You are temporarily locked out" msgstr "" #: lib/wfLockedOut.php:326 msgid "Your access to this site has been temporarily limited by the site owner" msgstr "" #: lib/wfLockedOut.php:327 msgid "Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)" msgstr "" #: lib/wfLockedOut.php:335 msgid "Return to the site home page" msgstr "" #: lib/wfLockedOut.php:336 msgid "Attempt to return to the admin login page (you may still be locked out)" msgstr "" #: lib/wfLockedOut.php:343 msgid "Block Reason:" msgstr "" #: lib/wfLockedOut.php:344 msgid "You have been temporarily locked out of this system. This means that you will not be able to log in for a while." msgstr "" #: lib/wfLog.php:217 msgid "Exceeded the maximum global requests per minute for crawlers or humans." msgstr "" #: lib/wfLog.php:220 msgid "Exceeded the maximum number of requests per minute for crawlers." msgstr "" #: lib/wfLog.php:223 msgid "Exceeded the maximum number of page not found errors per minute for a crawler." msgstr "" #: lib/wfLog.php:226 msgid "Exceeded the maximum number of page requests per minute for humans." msgstr "" #: lib/wfLog.php:229 msgid "Exceeded the maximum number of page not found errors per minute for humans." msgstr "" #. translators: Error message. #: lib/wfLog.php:309 msgid "Invalid log type to wfLog: %s" msgstr "" #. translators: Error message. #: lib/wfLog.php:343 msgid "getHits got invalid hitType: %s" msgstr "" #: lib/wfLog.php:555 msgid "UA/Referrer/IP Range not allowed" msgstr "" #: lib/wfLog.php:556 msgid "Advanced blocking in effect." msgstr "" #: lib/wfLog.php:568 msgid "redirected to bypass URL" msgstr "" #. translators: URL #: lib/wfLog.php:582 msgid "blocked access via country blocking and redirected to URL (%s)" msgstr "" #: lib/wfLog.php:597 #: models/block/wfBlock.php:1439 msgid "blocked access via country blocking" msgstr "" #: lib/wfLog.php:600 #: models/block/wfBlock.php:1442 #: waf/wfWAFIPBlocksController.php:71 msgid "Access from your area has been temporarily limited for security reasons" msgstr "" #: lib/wfLog.php:615 #: lib/wordfenceClass.php:6112 #: waf/wfWAFIPBlocksController.php:97 msgid "Manual block by administrator" msgstr "" #. translators: 1. IP address. 2. Description of firewall action. #: lib/wfLog.php:643 msgid "Blocking IP %1$s. %2$s" msgstr "" #. translators: 1. IP address. 2. Description of firewall action. #: lib/wfLog.php:655 msgid "Throttling IP %1$s. %2$s" msgstr "" #. translators: Error message. #: lib/wfScan.php:42 msgid "Could not connect to database to start scan: %s" msgstr "" #: lib/wfScan.php:45 msgid "Looks like the Wordfence database tables have been deleted. You can fix this by de-activating and re-activating the Wordfence plugin from your Plugins menu." msgstr "" #: lib/wfScan.php:49 msgid "Cron test received and message printed" msgstr "" #: lib/wfScan.php:53 msgid "Scan engine received request." msgstr "" #: lib/wfScan.php:56 msgid "Verifying start request signature." msgstr "" #: lib/wfScan.php:58 msgid "The signature on the request to start a scan is invalid. Please try again." msgstr "" #: lib/wfScan.php:62 msgid "Fetching stored cronkey for comparison." msgstr "" #: lib/wfScan.php:65 msgid "[invalid]" msgstr "" #: lib/wfScan.php:65 #: lib/wfScan.php:66 msgid "[none]" msgstr "" #. translators: 1. WordPress nonce. 2. WordPress nonce. #: lib/wfScan.php:67 msgid "Checking cronkey: %1$s (expecting %2$s)" msgstr "" #: lib/wfScan.php:69 msgid "Wordfence scan script accessed directly, or WF did not receive a cronkey." msgstr "" #: lib/wfScan.php:81 msgid "Wordfence could not find a saved cron key to start the scan so assuming it started and exiting." msgstr "" #: lib/wfScan.php:85 msgid "Checking saved cronkey against cronkey param" msgstr "" #. translators: 1. WordPress nonce (used for debugging). 2. WordPress nonce (used for debugging). 3. WordPress nonce (used for debugging). #: lib/wfScan.php:90 msgid "Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s" msgstr "" #: lib/wfScan.php:110 msgid "Checking if scan is already running" msgstr "" #: lib/wfScan.php:112 msgid "There is already a scan running." msgstr "" #: lib/wfScan.php:121 msgid "Using low resource scanning" msgstr "" #: lib/wfScan.php:124 msgid "Requesting max memory" msgstr "" #: lib/wfScan.php:126 msgid "Setting up error handling environment" msgstr "" #: lib/wfScan.php:134 msgid "Setting up scanRunning and starting scan" msgstr "" #. translators: Error message (used for debugging). #: lib/wfScan.php:139 msgid "Got a true deserialized value back from 'wfsd_engine' with type: %s" msgstr "" #. translators: Error message (used for debugging). #: lib/wfScan.php:143 msgid "Scan can't continue - stored data not found after a fork. Got type: %s" msgstr "" #: lib/wfScan.php:145 #: lib/wfScan.php:148 msgid "Scan can't continue - stored data not found after a fork." msgstr "" #. translators: Error message. #: lib/wfScan.php:149 #: lib/wfScan.php:315 msgid "Previous scan terminated with an error. See below." msgstr "" #: lib/wfScan.php:172 msgid "Contacting Wordfence to initiate scan" msgstr "" #: lib/wfScan.php:202 msgid "Initiating quick scan" msgstr "" #. translators: 1. Bytes of memory. 2. Bytes of memory. #. translators: 1. Memory in bytes. 2. Memory in bytes. #: lib/wfScan.php:213 #: lib/wfScan.php:225 #: lib/wfScan.php:248 #: lib/wfScan.php:263 #: lib/wfScan.php:278 #: lib/wfScan.php:293 #: lib/wfScanEngine.php:442 msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s" msgstr "" #. translators: Error message. #: lib/wfScan.php:217 #: lib/wfScan.php:229 #: lib/wfScan.php:252 #: lib/wfScan.php:267 #: lib/wfScan.php:282 #: lib/wfScan.php:297 #: lib/wfScan.php:314 msgid "Scan terminated with error: %s" msgstr "" #: lib/wfScan.php:300 msgid "Wordfence scan failed because of license site URL conflict" msgstr "" #. translators: Error message. #: lib/wfScan.php:352 msgid "Scan Engine Error: %s" msgstr "" #. translators: Number of scan results. #: lib/wfScanEngine.php:113 msgid "%d issue found in most recent scan" msgid_plural "%d issues found in most recent scan" msgstr[0] "" msgstr[1] "" #. translators: 1. Time duration. 2. Support URL. #: lib/wfScanEngine.php:278 msgid "The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. Get More Information" msgstr "" #: lib/wfScanEngine.php:282 msgid "Scan Time Limit Exceeded" msgstr "" #. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. #: lib/wfScanEngine.php:287 msgid "Scan interrupted. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s." msgstr "" #. translators: Number of scan results. #: lib/wfScanEngine.php:300 msgid "Scan interrupted. You have %d new issue to fix. See below." msgid_plural "Scan interrupted. You have %d new issues to fix. See below." msgstr[0] "" msgstr[1] "" #: lib/wfScanEngine.php:309 msgid "Scan interrupted. No problems found prior to stopping." msgstr "" #. translators: 1. Software version. 2. Software version. #: lib/wfScanEngine.php:321 msgid "Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later." msgstr "" #: lib/wfScanEngine.php:351 msgid "Forking during hash scan to ensure continuity." msgstr "" #: lib/wfScanEngine.php:357 msgid "Entered fork()" msgstr "" #: lib/wfScanEngine.php:360 msgid "Calling startScan(true)" msgstr "" #. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. #: lib/wfScanEngine.php:450 msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s." msgstr "" #. translators: 1. Time duration. #: lib/wfScanEngine.php:462 msgid "Quick Scan Complete. Scanned in %s." msgstr "" #. translators: Number of scan results. #: lib/wfScanEngine.php:471 msgid "%d ignored issue was also detected." msgid_plural "%d ignored issues were also detected." msgstr[0] "" msgstr[1] "" #. translators: Number of scan results. #: lib/wfScanEngine.php:482 msgid "Scan complete. You have %d new issue to fix." msgid_plural "Scan complete. You have %d new issues to fix." msgstr[0] "" msgstr[1] "" #: lib/wfScanEngine.php:490 msgid "See below." msgstr "" #: lib/wfScanEngine.php:493 msgid "Scan complete. Congratulations, no new problems found." msgstr "" #: lib/wfScanEngine.php:504 msgid "Checking if your site IP is generating spam" msgstr "" #: lib/wfScanEngine.php:523 msgid "Checking if your IP is generating spam is for paid members only" msgstr "" #: lib/wfScanEngine.php:530 msgid "Checking if your site is on a domain blocklist" msgstr "" #: lib/wfScanEngine.php:535 msgid "Checking if your site is on a domain blocklist is for paid members only" msgstr "" #. translators: Error message. #: lib/wfScanEngine.php:571 msgid "Error checking domain blocklists: %s" msgstr "" #. translators: WordPress site ID. #: lib/wfScanEngine.php:605 msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list." msgstr "" #: lib/wfScanEngine.php:608 msgid "Your site is listed on Google's Safe Browsing malware list." msgstr "" #. translators: 1. URL. 2. URL. #: lib/wfScanEngine.php:612 msgid "The URL %1$s is on the malware list. More info available at Google Safe Browsing diagnostic page." msgstr "" #. translators: WordPress site ID. #: lib/wfScanEngine.php:618 msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list." msgstr "" #: lib/wfScanEngine.php:621 msgid "Your site is listed on Google's Safe Browsing phishing list." msgstr "" #. translators: 1. URL. 2. URL. #: lib/wfScanEngine.php:625 msgid "The URL %1$s is on the phishing list. More info available at Google Safe Browsing diagnostic page." msgstr "" #. translators: WordPress site ID. #: lib/wfScanEngine.php:631 msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist." msgstr "" #: lib/wfScanEngine.php:634 msgid "Your site is listed on the Wordfence domain blocklist." msgstr "" #. translators: URL. #: lib/wfScanEngine.php:638 msgid "The URL %s is on the blocklist." msgstr "" #. translators: WordPress site ID. #: lib/wfScanEngine.php:644 msgid "The multisite blog with ID %d is listed on a domain blocklist." msgstr "" #: lib/wfScanEngine.php:647 msgid "Your site is listed on a domain blocklist." msgstr "" #. translators: URL. #: lib/wfScanEngine.php:649 msgid "The URL is: %s" msgstr "" #: lib/wfScanEngine.php:669 msgid "Checking for the most secure way to get IPs" msgstr "" #: lib/wfScanEngine.php:696 msgid "Unable to accurately detect IPs" msgstr "" #. translators: Support URL. #: lib/wfScanEngine.php:697 msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. Get More Information" msgstr "" #: lib/wfScanEngine.php:707 #: lib/wordfenceClass.php:6303 msgid "For maximum security use PHP's built in REMOTE_ADDR." msgstr "" #: lib/wfScanEngine.php:709 #: lib/wordfenceClass.php:6306 msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs." msgstr "" #: lib/wfScanEngine.php:711 #: lib/wordfenceClass.php:6309 msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs." msgstr "" #: lib/wfScanEngine.php:713 #: lib/wordfenceClass.php:6312 msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs." msgstr "" #: lib/wfScanEngine.php:717 msgid "'How does Wordfence get IPs' is misconfigured" msgstr "" #. translators: Support URL. #: lib/wfScanEngine.php:720 msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. Get More Information" msgstr "" #: lib/wfScanEngine.php:741 msgid "Check for publicly accessible configuration files, backup files and logs" msgstr "" #. translators: File path. #: lib/wfScanEngine.php:792 msgid "Publicly accessible config, backup, or log file found: %s" msgstr "" #. translators: 1. URL to publicly accessible file. 2. Support URL. #: lib/wfScanEngine.php:795 msgid "%1$s is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. Learn more" msgstr "" #: lib/wfScanEngine.php:824 msgid "Checking if your server discloses the path to the document root" msgstr "" #: lib/wfScanEngine.php:834 msgid "Web server exposes the document root" msgstr "" #: lib/wfScanEngine.php:835 msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view." msgstr "" #: lib/wfScanEngine.php:861 msgid "Directory listing is enabled" msgstr "" #: lib/wfScanEngine.php:862 msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed." msgstr "" #: lib/wfScanEngine.php:878 msgid "Checking if your site is being Spamvertised" msgstr "" #: lib/wfScanEngine.php:897 msgid "Check if your site is being Spamvertized is for paid members only" msgstr "" #: lib/wfScanEngine.php:918 msgid "Wordfence could not read the contents of your base WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory." msgstr "" #: lib/wfScanEngine.php:955 msgid "Checking for paths skipped due to scan settings" msgstr "" #. translators: Number of paths skipped in scan. #: lib/wfScanEngine.php:968 msgid ", and %d more." msgstr "" #. translators: Number of paths skipped in scan. #: lib/wfScanEngine.php:992 msgid "%d path was skipped for the malware scan due to scan settings" msgid_plural "%d paths were skipped for the malware scan due to scan settings" msgstr[0] "" msgstr[1] "" #. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths. #: lib/wfScanEngine.php:995 msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. Learn More

The path skipped is %3$s" msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. Learn More

The paths skipped are %3$s" msgstr[0] "" msgstr[1] "" #: lib/wfScanEngine.php:1023 msgid "Including files that are outside the WordPress installation in the scan." msgstr "" #: lib/wfScanEngine.php:1026 msgid "Getting plugin list from WordPress" msgstr "" #. translators: Number of plugins. #: lib/wfScanEngine.php:1028 msgid "Found %d plugin" msgid_plural "Found %d plugins" msgstr[0] "" msgstr[1] "" #: lib/wfScanEngine.php:1030 msgid "Getting theme list from WordPress" msgstr "" #. translators: Number of themes. #: lib/wfScanEngine.php:1032 msgid "Found %d theme" msgid_plural "Found %d themes" msgstr[0] "" msgstr[1] "" #: lib/wfScanEngine.php:1049 msgid "Scanning file contents for infections and vulnerabilities" msgstr "" #: lib/wfScanEngine.php:1052 msgid "Skipping scan of file contents for infections and vulnerabilities" msgstr "" #: lib/wfScanEngine.php:1056 msgid "Scanning file contents for URLs on a domain blocklist" msgstr "" #: lib/wfScanEngine.php:1059 msgid "Skipping scan of file contents for URLs on a domain blocklist" msgstr "" #: lib/wfScanEngine.php:1064 msgid "Starting scan of file contents" msgstr "" #: lib/wfScanEngine.php:1080 msgid "Done file contents scan" msgstr "" #. translators: Scan result description. #: lib/wfScanEngine.php:1088 #: lib/wfScanEngine.php:2252 #: lib/wfScanEngine.php:2294 msgid "Adding issue: %s" msgstr "" #: lib/wfScanEngine.php:1121 msgid "Scanning for publicly accessible quarantined files" msgstr "" #. translators: File path. #: lib/wfScanEngine.php:1126 msgid "Testing accessibility of: %s" msgstr "" #. translators: File path. #: lib/wfScanEngine.php:1135 msgid "Publicly accessible quarantined file found: %s" msgstr "" #. translators: URL to publicly accessible file. #: lib/wfScanEngine.php:1138 msgid "%1$s is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be removed or made inaccessible." msgstr "" #: lib/wfScanEngine.php:1162 msgid "Scanning posts for URLs on a domain blocklist" msgstr "" #. translators: Number of posts left to scan. #: lib/wfScanEngine.php:1185 msgid "Scanning posts with %d left to scan." msgstr "" #: lib/wfScanEngine.php:1207 msgid "Post title contains suspicious code" msgstr "" #: lib/wfScanEngine.php:1208 msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious." msgstr "" #: lib/wfScanEngine.php:1231 msgid "Examining URLs found in posts we scanned for dangerous websites" msgstr "" #: lib/wfScanEngine.php:1233 #: lib/wfScanEngine.php:2215 msgid "Done examining URLs" msgstr "" #. translators: 1. WordPress Post type. 2. URL. #: lib/wfScanEngine.php:1269 #: lib/wfScanEngine.php:1289 msgid "%1$s contains a suspected malware URL: %2$s" msgstr "" #. translators: 1. WordPress Post type. 2. URL. 3. URL. #: lib/wfScanEngine.php:1275 msgid "This %1$s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at Google Safe Browsing diagnostic page." msgstr "" #. translators: 1. WordPress Post type. 2. URL. #: lib/wfScanEngine.php:1281 msgid "%1$s contains a suspected phishing site URL: %2$s" msgstr "" #. translators: 1. WordPress Post type. 2. URL. #. translators: 1. WordPress post type. 2. URL. #: lib/wfScanEngine.php:1284 #: lib/wfScanEngine.php:1427 msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s" msgstr "" #. translators: 1. WordPress Post type. 2. URL. #. translators: 1. WordPress post type. 2. URL. #: lib/wfScanEngine.php:1292 #: lib/wfScanEngine.php:1435 msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s" msgstr "" #. translators: Scan result description. #: lib/wfScanEngine.php:1301 msgid "Adding issue: %1$s" msgstr "" #: lib/wfScanEngine.php:1337 msgid "Scanning comments for URLs on a domain blocklist" msgstr "" #. translators: Number of comments left to scan. #: lib/wfScanEngine.php:1361 msgid "Scanning comments with %d left to scan." msgstr "" #. translators: 1. WordPress post type. 2. WordPress author username. #: lib/wfScanEngine.php:1415 msgid "%1$s with author %2$s contains a suspected malware URL." msgstr "" #. translators: 1. WordPress post type. 2. URL. 3. URL. #: lib/wfScanEngine.php:1418 msgid "This %$1s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at Google Safe Browsing diagnostic page." msgstr "" #. translators: WordPress post type. #: lib/wfScanEngine.php:1424 msgid "%s contains a suspected phishing site URL." msgstr "" #. translators: URL. #: lib/wfScanEngine.php:1432 msgid "%s contains a suspected malware URL." msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:1480 msgid "Author: %s" msgstr "" #. translators: Email address. #: lib/wfScanEngine.php:1483 msgid "Email: %s" msgstr "" #. translators: IP address. #: lib/wfScanEngine.php:1485 msgid "Source IP: %s" msgstr "" #. translators: Comment description. #: lib/wfScanEngine.php:1486 msgid "Scanning comment with %s" msgstr "" #. translators: Comment description. #: lib/wfScanEngine.php:1499 #: lib/wfScanEngine.php:1505 msgid "Marking comment as spam for containing a malware URL. Comment has %s" msgstr "" #. translators: Comment description. #: lib/wfScanEngine.php:1502 msgid "Marking comment as spam for containing a phishing URL. Comment has %s" msgstr "" #. translators: Comment description. #: lib/wfScanEngine.php:1512 msgid "Scanned comment with %s" msgstr "" #: lib/wfScanEngine.php:1563 msgid "Scanning for weak passwords" msgstr "" #: lib/wfScanEngine.php:1574 msgid "We were unable to generate the user list for your password check." msgstr "" #. translators: Number of users. #: lib/wfScanEngine.php:1590 msgid "Starting password strength check on %d user." msgid_plural "Starting password strength check on %d users." msgstr[0] "" msgstr[1] "" #. translators: Number of users. #: lib/wfScanEngine.php:1599 msgid "Total of %d users left to process in password strength check." msgid_plural "Total of %d users left to process in password strength check." msgstr[0] "" msgstr[1] "" #. translators: WordPress user ID. #: lib/wfScanEngine.php:1634 msgid "Could not get username for user with ID %d when checking password strength." msgstr "" #. translators: 1. WordPress username. 2. WordPress user ID. #: lib/wfScanEngine.php:1640 msgid "Checking password strength of user '%1$s' with ID %2$d" msgstr "" #. translators: 1. WordPress username. 2. WordPress capability. #: lib/wfScanEngine.php:1648 msgid "User \"%1$s\" with \"%2$s\" access has an easy password." msgstr "" #. translators: WordPress capability. #: lib/wfScanEngine.php:1654 msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it." msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:1662 msgid "User \"%s\" with 'subscriber' access has a very easy password." msgstr "" #: lib/wfScanEngine.php:1663 msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password." msgstr "" #. translators: Scan result description. #: lib/wfScanEngine.php:1670 msgid "Adding issue %s" msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:1687 msgid "Completed checking password strength of user '%s'" msgstr "" #: lib/wfScanEngine.php:1720 msgid "Scanning to check available disk space" msgstr "" #: lib/wfScanEngine.php:1727 msgid "Unable to access available disk space information" msgstr "" #. translators: 1. Number of bytes. 2. Number of bytes. #: lib/wfScanEngine.php:1736 msgid "Total disk space: %1$s -- Free disk space: %2$s" msgstr "" #. translators: Number of bytes. #: lib/wfScanEngine.php:1741 msgid "The disk has %s MB available" msgstr "" #. translators: Number of bytes. #: lib/wfScanEngine.php:1756 msgid "You have %s disk space remaining" msgstr "" #. translators: Number of bytes. #: lib/wfScanEngine.php:1757 msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests." msgstr "" #: lib/wfScanEngine.php:1770 msgid "Checking Web Application Firewall status" msgstr "" #: lib/wfScanEngine.php:1781 msgid "Web Application Firewall is disabled" msgstr "" #. translators: Support URL. #: lib/wfScanEngine.php:1782 msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. More Details" msgstr "" #: lib/wfScanEngine.php:1797 msgid "Scanning for old themes, plugins and core files" msgstr "" #: lib/wfScanEngine.php:1883 msgid "Your WordPress version is out of date" msgstr "" #. translators: Software version. #: lib/wfScanEngine.php:1884 msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress." msgstr "" #. translators: 1. Plugin name. 2. Software version. 3. Software version. #: lib/wfScanEngine.php:1911 msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)." msgstr "" #. translators: Theme name. #: lib/wfScanEngine.php:1918 #: lib/wfScanEngine.php:1952 msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released." msgstr "" #. translators: 1. Theme name. 2. Software version. 3. Software version. #: lib/wfScanEngine.php:1945 msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)." msgstr "" #. translators: 1. Plugin name. 2. Software version. 3. Software version. #: lib/wfScanEngine.php:1991 msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)." msgstr "" #. translators: 1. Plugin name. 2. Software version. #: lib/wfScanEngine.php:1998 msgid "It was last updated %1$s ago and tested up to WordPress %2$s." msgstr "" #. translators: 1. Plugin name. 2. Software version. #: lib/wfScanEngine.php:2005 msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)." msgstr "" #. translators: Time duration. #: lib/wfScanEngine.php:2011 msgid "It was last updated %s ago." msgstr "" #: lib/wfScanEngine.php:2017 #: lib/wfScanEngine.php:2056 msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress." msgstr "" #: lib/wfScanEngine.php:2019 #: lib/wfScanEngine.php:2058 msgid "Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin." msgstr "" #. translators: Support URL. #: lib/wfScanEngine.php:2023 #: lib/wfScanEngine.php:2062 #: lib/wfScanEngine.php:2250 #: lib/wfScanEngine.php:2292 msgid "Get more information." msgstr "" #. translators: Plugin name. #: lib/wfScanEngine.php:2054 msgid "The Plugin \"%s\" has been removed from wordpress.org." msgstr "" #: lib/wfScanEngine.php:2107 msgid "Scanning for admin users not created through WordPress" msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:2129 msgid "An admin user with the username %s was created outside of WordPress." msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:2130 msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it." msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:2156 msgid "An admin user with a suspicious username %s was found." msgstr "" #. translators: WordPress username. #: lib/wfScanEngine.php:2157 msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it." msgstr "" #: lib/wfScanEngine.php:2178 msgid "Scanning for suspicious site options" msgstr "" #: lib/wfScanEngine.php:2213 msgid "Examining URLs found in the options we scanned for dangerous websites" msgstr "" #. translators: URL. #: lib/wfScanEngine.php:2237 #: lib/wfScanEngine.php:2243 msgid "Option contains a suspected malware URL: %s" msgstr "" #. translators: URL. #: lib/wfScanEngine.php:2238 msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s" msgstr "" #. translators: URL. #: lib/wfScanEngine.php:2240 msgid "Option contains a suspected phishing site URL: %s" msgstr "" #. translators: URL. #: lib/wfScanEngine.php:2241 msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s" msgstr "" #. translators: URL. #: lib/wfScanEngine.php:2244 msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s" msgstr "" #: lib/wfScanEngine.php:2284 msgid "Checking for future GeoIP support" msgstr "" #: lib/wfScanEngine.php:2289 msgid "PHP Update Needed for Country Blocking" msgstr "" #. translators: Software version. #: lib/wfScanEngine.php:2290 msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP." msgstr "" #: lib/wfScanEngine.php:2339 msgid "Previous scan was stopped successfully." msgstr "" #: lib/wfScanEngine.php:2340 msgid "Scan was stopped on administrator request." msgstr "" #: lib/wfScanEngine.php:2356 msgid "Entering start scan routine" msgstr "" #: lib/wfScanEngine.php:2359 msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan." msgstr "" #. translators: Support URL. #: lib/wfScanEngine.php:2377 msgid "Test result of scan start URL fetch: %s" msgstr "" #. translators: WordPress admin panel URL. #: lib/wfScanEngine.php:2386 msgid "Starting cron with normal ajax at URL %s" msgstr "" #. translators: Error message. #. translators: WordPress admin panel URL. #: lib/wfScanEngine.php:2408 #: lib/wfScanEngine.php:2443 msgid "There was an error starting the scan: %s." msgstr "" #: lib/wfScanEngine.php:2410 #: lib/wfScanEngine.php:2445 msgid "There was an unknown error starting the scan." msgstr "" #: lib/wfScanEngine.php:2417 #: lib/wfScanEngine.php:2451 msgid "Scan process ended after forking." msgstr "" #. translators: WordPress admin panel URL. #: lib/wfScanEngine.php:2421 msgid "Starting cron via proxy at URL %s" msgstr "" #. translators: Time in seconds. #: lib/wfScanEngine.php:2497 msgid "Got value from wf config maxExecutionTime: %s" msgstr "" #. translators: Time in seconds. #: lib/wfScanEngine.php:2501 msgid "getMaxExecutionTime() returning config value: %s" msgstr "" #. translators: PHP ini value. #: lib/wfScanEngine.php:2508 msgid "Got max_execution_time value from ini: %s" msgstr "" #. translators: 1. PHP ini setting. 2. Time in seconds. #: lib/wfScanEngine.php:2515 msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing" msgstr "" #. translators: PHP ini setting. #: lib/wfScanEngine.php:2525 msgid "getMaxExecutionTime() returning half ini value: %d" msgstr "" #: lib/wfScanEngine.php:2531 msgid "getMaxExecutionTime() returning default of: 15" msgstr "" #. translators: 1. HTTP status code. #: lib/wfScanEngine.php:2733 msgid "Got error response from Wordfence servers: %s" msgstr "" #: lib/wfScanEngine.php:2737 msgid "Invalid response from Wordfence servers." msgstr "" #: lib/wfUnlockMsg.php:2 msgid "If you are a WordPress user with administrative privileges on this site please enter your email in the box below and click "Send". You will then receive an email that helps you regain access." msgstr "" #: lib/wfUnlockMsg.php:6 msgid "Send Unlock Email" msgstr "" #: lib/wfUtils.php:25 msgid "a moment" msgstr "" #: lib/wfUtils.php:60 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:61 #: lib/wfUtils.php:64 #: lib/wfUtils.php:95 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:65 #: lib/wfUtils.php:68 #: lib/wfUtils.php:101 msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:69 #: lib/wfUtils.php:72 #: lib/wfUtils.php:107 msgid "hour" msgid_plural "hours" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:73 #: lib/wfUtils.php:76 #: lib/wfUtils.php:113 msgid "minute" msgid_plural "minutes" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:80 msgid "less than a minute" msgstr "" #. translators: Number of seconds. #: lib/wfUtils.php:82 msgid "%d seconds" msgstr "" #: lib/wfUtils.php:116 msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" #: lib/wfUtils.php:120 msgid "less than 1 second" msgstr "" #: lib/wfUtils.php:1203 #: lib/wfUtils.php:1212 msgid "Wordfence error: No encryption key found!" msgstr "" #. translators: Error message. #: lib/wfUtils.php:1484 msgid "Call to Wordfence API to resolve IPs failed: %s" msgstr "" #: lib/wfVersionCheckController.php:49 #: lib/wfVersionCheckController.php:74 msgid "PHP version too old" msgstr "" #. translators: 1. PHP version. 2. PHP version. #: lib/wfVersionCheckController.php:52 msgid "Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: Support URL. #. translators: 1. WordPress version. 2. WordPress version. #: lib/wfVersionCheckController.php:57 #: lib/wfVersionCheckController.php:80 #: lib/wfVersionCheckController.php:156 #: lib/wfVersionCheckController.php:178 msgid "Learn More: %s" msgstr "" #. translators: 1. PHP version. 2. PHP version. #: lib/wfVersionCheckController.php:65 msgid "WARNING: Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: 1. PHP version. 2. PHP version. #: lib/wfVersionCheckController.php:77 msgid "Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: 1. PHP version. 2. PHP version. #: lib/wfVersionCheckController.php:88 msgid "WARNING: Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #: lib/wfVersionCheckController.php:150 #: lib/wfVersionCheckController.php:175 msgid "WordPress version too old" msgstr "" #. translators: 1. WordPress version. 2. WordPress version. #: lib/wfVersionCheckController.php:153 msgid "Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: 1. WordPress version. 2. WordPress version. #: lib/wfVersionCheckController.php:164 msgid "WARNING: Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: 1. WordPress version. 2. WordPress version. #: lib/wfVersionCheckController.php:178 msgid "Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: 1. WordPress version. 2. WordPress version. #: lib/wfVersionCheckController.php:186 msgid "WARNING: Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later." msgstr "" #. translators: File path. #: lib/wfView.php:52 msgid "The view %s does not exist or is not readable." msgstr "" #: lib/wfView.php:70 msgid "The view could not be loaded." msgstr "" #: lib/wfViewResult.php:8 msgid "Wordfence: File Viewer" msgstr "" #: lib/wfViewResult.php:11 msgid "File Size:" msgstr "" #: lib/wfViewResult.php:12 msgid "File last modified:" msgstr "" #: lib/wordfenceClass.php:177 msgid "" "To ensure uninterrupted Premium Wordfence protection on your site,\n" "please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n" "select the license about to expire and click the button to renew that license." msgstr "" #: lib/wordfenceClass.php:207 msgid "Your Premium Wordfence License is set to auto-renew in 10 days." msgstr "" #: lib/wordfenceClass.php:208 msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard" msgstr "" #: lib/wordfenceClass.php:220 msgid "Your Premium Wordfence License expires in less than 2 weeks." msgstr "" #: lib/wordfenceClass.php:223 msgid "Your Premium Wordfence License expires in less than a week." msgstr "" #: lib/wordfenceClass.php:226 msgid "Your Premium Wordfence License expires in 2 days." msgstr "" #: lib/wordfenceClass.php:229 msgid "Your Premium Wordfence License expires in 1 day." msgstr "" #: lib/wordfenceClass.php:233 msgid "Your Wordfence Premium License has Expired!" msgstr "" #: lib/wordfenceClass.php:264 msgid "The Wordfence Premium License in use on this site has been removed from your account." msgstr "" #: lib/wordfenceClass.php:264 msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help." msgstr "" #. translators: Wordfence license key. #: lib/wordfenceClass.php:270 msgid "Could not verify Wordfence License: %s" msgstr "" #. translators: WordPress version. #: lib/wordfenceClass.php:352 msgid "WordPress (v%s)" msgstr "" #. translators: Number of plugins. #: lib/wordfenceClass.php:356 msgid "%d plugin" msgid_plural "%d plugins" msgstr[0] "" msgstr[1] "" #. translators: Number of themes. #: lib/wordfenceClass.php:361 msgid "%d theme" msgid_plural "%d themes" msgstr[0] "" msgstr[1] "" #: lib/wordfenceClass.php:365 msgid "An update is available for " msgid_plural "Updates are available for " msgstr[0] "" msgstr[1] "" #: lib/wordfenceClass.php:370 msgid "and " msgstr "" #. translators: Wordfence version. #: lib/wordfenceClass.php:409 msgid "`runInstall` called with previous version = %s" msgstr "" #: lib/wordfenceClass.php:461 #: lib/wordfenceClass.php:4021 msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key." msgstr "" #: lib/wordfenceClass.php:825 msgid "Automatically generated from previous country blocking settings" msgstr "" #: lib/wordfenceClass.php:1254 msgid "Application passwords have been disabled by Wordfence." msgstr "" #: lib/wordfenceClass.php:1365 #: lib/wordfenceClass.php:6585 msgid "Upgrade To Premium" msgstr "" #: lib/wordfenceClass.php:1384 msgid "wp_mail from address is incomplete, attempting to fix" msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:1394 msgid "Fixing wp_mail from address: %s" msgstr "" #: lib/wordfenceClass.php:1487 msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again." msgstr "" #: lib/wordfenceClass.php:1492 msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again." msgstr "" #: lib/wordfenceClass.php:1498 msgid "Wordfence encountered an internal error executing that request." msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:1604 msgid "2FA Migration Error: %s" msgstr "" #: lib/wordfenceClass.php:1644 msgid "Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words." msgstr "" #: lib/wordfenceClass.php:1650 msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed." msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:1665 msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Learn More" msgstr "" #: lib/wordfenceClass.php:1793 #: lib/wordfenceClass.php:1976 msgid "Sorry but your browser sent an invalid security token when trying to use this form." msgstr "" #: lib/wordfenceClass.php:1798 msgid "Please wait 3 minutes and try again" msgstr "" #: lib/wordfenceClass.php:1799 msgid "You have used this form too much. Please wait 3 minutes and try again." msgstr "" #: lib/wordfenceClass.php:1838 msgid "Unlock email requested" msgstr "" #: lib/wordfenceClass.php:1840 msgid "Your request was received" msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:1841 msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now." msgstr "" #: lib/wordfenceClass.php:1847 msgid "Invalid key provided for authentication." msgstr "" #: lib/wordfenceClass.php:1858 msgid "Request received via unlock email link to unblock all IPs." msgstr "" #: lib/wordfenceClass.php:1867 msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules." msgstr "" #: lib/wordfenceClass.php:1875 msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader." msgstr "" #: lib/wordfenceClass.php:1920 msgid "Unsubscribe Requested" msgstr "" #: lib/wordfenceClass.php:1982 msgid "An error occurred while saving the license." msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:1984 #: lib/wordfenceClass.php:2004 msgid "An error occurred while saving the license: %s" msgstr "" #: lib/wordfenceClass.php:2020 msgid "Rescheduled missing daily cron" msgstr "" #: lib/wordfenceClass.php:2025 msgid "Rescheduled missing hourly cron" msgstr "" #: lib/wordfenceClass.php:2379 #: lib/wordfenceClass.php:2383 msgid "Accessed a banned URL" msgstr "" #: lib/wordfenceClass.php:2390 #: lib/wordfenceClass.php:2394 msgid "POST received with blank user-agent and referer" msgstr "" #: lib/wordfenceClass.php:2528 msgid "ERROR: You can't register using that username" msgstr "" #. translators: 1. WordPress admin panel URL. 2. Support URL. #: lib/wordfenceClass.php:2736 #: lib/wordfenceClass.php:2872 msgid "WARNING: The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change your password. Learn More" msgstr "" #. translators: 1. Reset password URL. 2. Support URL. #: lib/wordfenceClass.php:3027 #: lib/wordfenceClass.php:3063 msgid "WARNING: Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change your password. Learn More" msgstr "" #. translators: WordPress username. #: lib/wordfenceClass.php:3052 msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not." msgstr "" #: lib/wordfenceClass.php:3093 msgid "Blocked by Wordfence Security Network" msgstr "" #: lib/wordfenceClass.php:3123 msgid "Blocked by login security setting" msgstr "" #. translators: WordPress username. #: lib/wordfenceClass.php:3133 msgid "Used an invalid username '%s' to try to sign in" msgstr "" #. translators: 1. Login attempt limit. 2. WordPress username. #: lib/wordfenceClass.php:3152 msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'" msgstr "" #: lib/wordfenceClass.php:3510 msgid "An invalid type was specified to get file." msgstr "" #: lib/wordfenceClass.php:3526 msgid "We could not fetch a core WordPress file from the Wordfence API." msgstr "" #: lib/wordfenceClass.php:3585 msgid "Wordfence Test Email" msgstr "" #. translators: 1. Site URL. 2. IP address. #: lib/wordfenceClass.php:3585 msgid "" "This is a test email from %1$s.\n" "The IP address that requested this was: %2$s" msgstr "" #: lib/wordfenceClass.php:3592 msgid "Cellphone Sign-in is only available to paid members. Click here to upgrade now." msgstr "" #: lib/wordfenceClass.php:3599 msgid "The username you specified does not exist." msgstr "" #: lib/wordfenceClass.php:3608 msgid "The username you specified is already enabled." msgstr "" #: lib/wordfenceClass.php:3613 msgid "Unknown authentication mode." msgstr "" #: lib/wordfenceClass.php:3618 msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:3625 #: lib/wordfenceClass.php:3657 #: lib/wordfenceClass.php:3720 msgid "Could not contact Wordfence servers to generate a verification code: %s" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:3637 #: lib/wordfenceClass.php:3681 msgid "Could not generate verification code: %s" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:3638 #: lib/wordfenceClass.php:3682 msgid "We could not generate a verification code." msgstr "" #: lib/wordfenceClass.php:3698 msgid "Unknown two-factor authentication mode." msgstr "" #: lib/wordfenceClass.php:3731 msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code." msgstr "" #: lib/wordfenceClass.php:3736 msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page." msgstr "" #: lib/wordfenceClass.php:3818 msgid "That user has already been removed from the list." msgstr "" #: lib/wordfenceClass.php:3838 msgid "No scan is scheduled" msgstr "" #: lib/wordfenceClass.php:3843 msgid "Next scan is starting now" msgstr "" #. translators: 1. Time until. 2. Localized date. #: lib/wordfenceClass.php:3846 msgid "Next scan in %1$s (%2$s)" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:3863 msgid "Scheduled Wordfence scan starting at %s" msgstr "" #: lib/wordfenceClass.php:3886 msgid "Sorry but this feature is only available for paid customers." msgstr "" #. translators: Site URL. #: lib/wordfenceClass.php:3900 msgid "SITE: %s" msgstr "" #. translators: Plugin version. #: lib/wordfenceClass.php:3901 msgid "PLUGIN VERSION: %s" msgstr "" #. translators: WordPress version. #: lib/wordfenceClass.php:3902 msgid "WORDPRESS VERSION: %s" msgstr "" #. translators: Wordfence license key. #: lib/wordfenceClass.php:3903 msgid "LICENSE KEY: %s" msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:3904 msgid "ADMIN EMAIL: %s" msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:3905 msgid "LOG:" msgstr "" #: lib/wordfenceClass.php:3921 msgid "# Scan Issues" msgstr "" #. translators: Number of scan results. #: lib/wordfenceClass.php:3926 msgid "## New Issues (%d total)" msgstr "" #. translators: Number of scan results. #: lib/wordfenceClass.php:3953 msgid "## Ignored Issues (%d total)" msgstr "" #: lib/wordfenceClass.php:3974 msgid "No Ignored Issues" msgstr "" #: lib/wordfenceClass.php:3996 msgid "Wordfence Activity Log" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:4024 msgid "Could not fetch free license key from Wordfence: %s" msgstr "" #: lib/wordfenceClass.php:4109 msgid "We could not find your .htaccess file to modify it." msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:4114 msgid "We found your .htaccess file but could not open it for writing: %s" msgstr "" #: lib/wordfenceClass.php:4197 msgid "All Countries" msgstr "" #: lib/wordfenceClass.php:4200 msgid "1 Country" msgstr "" #. translators: Number of countries. #: lib/wordfenceClass.php:4203 msgid "%d Countries" msgstr "" #: lib/wordfenceClass.php:4207 msgid "Entire Site" msgstr "" #: lib/wordfenceClass.php:4210 msgid "Login Only" msgstr "" #: lib/wordfenceClass.php:4213 msgid "Site Except Login" msgstr "" #: lib/wordfenceClass.php:4221 msgid "IP Range" msgstr "" #. translators: 2FA backup codes. #: lib/wordfenceClass.php:4222 #: lib/wordfenceClass.php:6174 msgid "User Agent" msgstr "" #: lib/wordfenceClass.php:4223 #: views/blocking/blocking-create.php:201 msgid "Referrer" msgstr "" #: lib/wordfenceClass.php:4238 msgid "Permanent" msgstr "" #: lib/wordfenceClass.php:4310 msgid "An error occurred while creating the block." msgstr "" #: lib/wordfenceClass.php:4316 msgid "No block parameters were provided." msgstr "" #: lib/wordfenceClass.php:4353 #: lib/wordfenceClass.php:4385 msgid "No blocks were provided." msgstr "" #: lib/wordfenceClass.php:4417 msgid "The license provided is already in use on another site." msgstr "" #: lib/wordfenceClass.php:4422 msgid "The Wordfence activation server returned an unexpected response. Please try again." msgstr "" #: lib/wordfenceClass.php:4428 msgid "We received an error while trying to activate the license with the Wordfence servers: " msgstr "" #: lib/wordfenceClass.php:4441 msgid "No license was provided to install." msgstr "" #: lib/wordfenceClass.php:4492 msgid "An unknown configuration section was provided." msgstr "" #: lib/wordfenceClass.php:4498 msgid "No configuration section was provided." msgstr "" #: lib/wordfenceClass.php:4544 #: lib/wordfenceClass.php:4549 msgid "An error occurred while saving the configuration." msgstr "" #: lib/wordfenceClass.php:4560 msgid "No configuration changes were provided to save." msgstr "" #: lib/wordfenceClass.php:4591 #: lib/wordfenceClass.php:5216 #: lib/wordfenceClass.php:5247 #: lib/wordfenceClass.php:7217 #: lib/wordfenceClass.php:7252 #: lib/wordfenceClass.php:7284 msgid "We could not find that issue in our database." msgstr "" #: lib/wordfenceClass.php:4601 msgid "An error occurred while trying to hide the file." msgstr "" #: lib/wordfenceClass.php:4614 msgid "An invalid file was requested for hiding." msgstr "" #: lib/wordfenceClass.php:4641 #: lib/wordfenceClass.php:5227 msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file." msgstr "" #: lib/wordfenceClass.php:4665 msgid "Manual permanent block by admin" msgstr "" #: lib/wordfenceClass.php:4701 msgid "Please enter a valid IP address to block." msgstr "" #: lib/wordfenceClass.php:4704 msgid "You can't block your own IP address." msgstr "" #. translators: IP address. #: lib/wordfenceClass.php:4708 msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page." msgstr "" #. translators: IP address. #: lib/wordfenceClass.php:4710 msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for." msgstr "" #: lib/wordfenceClass.php:4716 msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google." msgstr "" #: lib/wordfenceClass.php:4759 msgid "An invalid operation was called." msgstr "" #: lib/wordfenceClass.php:4769 msgid "An invalid status was specified when trying to update that issue." msgstr "" #: lib/wordfenceClass.php:4781 msgid "Scan stop request received." msgstr "" #: lib/wordfenceClass.php:4782 msgid "A request was received to stop the previous scan." msgstr "" #: lib/wordfenceClass.php:4831 msgid "Idle" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:4840 msgid "Scan completed on %s" msgstr "" #: lib/wordfenceClass.php:4847 msgid "Last scan failed" msgstr "" #. translators: Time until. #: lib/wordfenceClass.php:4910 msgid "more than %s" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:4914 msgid "The current scan looks like it has failed. Its last status update was %s ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably." msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:4914 #: lib/wordfenceClass.php:4922 #: lib/wordfenceClass.php:4941 #: lib/wordfenceClass.php:4953 #: lib/wordfenceClass.php:4961 msgid "Click here for steps you can try." msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:4915 msgid "Cancel Scan" msgstr "" #: lib/wordfenceClass.php:4922 msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably." msgstr "" #. translators: Time limit (number). #: lib/wordfenceClass.php:4928 msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page." msgstr "" #: lib/wordfenceClass.php:4934 msgid "The previous scan has terminated because we detected an update occurring during the scan." msgstr "" #: lib/wordfenceClass.php:4941 msgid "The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself." msgstr "" #: lib/wordfenceClass.php:4947 msgid "Scans are not functional because SSL is unavailable." msgstr "" #: lib/wordfenceClass.php:4953 msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably." msgstr "" #: lib/wordfenceClass.php:4961 msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably." msgstr "" #: lib/wordfenceClass.php:4988 msgid "Invalid email address given." msgstr "" #: lib/wordfenceClass.php:5013 #: lib/wordfenceClass.php:5138 msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted." msgstr "" #. translators: 1. File path. 2. Error message. #: lib/wordfenceClass.php:5022 msgid "Could not delete file %1$s. Error was: %2$s" msgstr "" #. translators: File path. #: lib/wordfenceClass.php:5046 msgid "We could not retrieve the original file of %s to do a repair." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:5051 msgid "An invalid file %s was specified for repair." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:5059 msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file." msgstr "" #. translators: 1. File path. 2. Error message. #: lib/wordfenceClass.php:5062 msgid "We could not write to %1$s. The error was: %2$s" msgstr "" #. translators: 1. File path. 2. Number of bytes. #: lib/wordfenceClass.php:5073 msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server." msgstr "" #: lib/wordfenceClass.php:5085 msgid "Deleted some files with errors" msgstr "" #: lib/wordfenceClass.php:5085 msgid "Repaired some files with errors" msgstr "" #. translators: 1. Number of files. 2. Error message. #: lib/wordfenceClass.php:5088 msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s" msgstr "" #. translators: 1. Number of files. 2. Error message. #: lib/wordfenceClass.php:5090 msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s" msgstr "" #. translators: Number of files. #: lib/wordfenceClass.php:5094 msgid "Deleted %d files successfully" msgstr "" #. translators: Number of files. #: lib/wordfenceClass.php:5094 msgid "Repaired %d files successfully" msgstr "" #. translators: Number of files. #: lib/wordfenceClass.php:5095 msgid "Deleted %d files successfully. No errors were encountered." msgstr "" #. translators: Number of files. #: lib/wordfenceClass.php:5095 msgid "Repaired %d files successfully. No errors were encountered." msgstr "" #: lib/wordfenceClass.php:5098 msgid "Could not delete files" msgstr "" #: lib/wordfenceClass.php:5098 msgid "Could not repair files" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:5101 msgid "We could not delete any of the files you selected. We encountered the following errors: %s" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:5103 msgid "We could not repair any of the files you selected. We encountered the following errors: %s" msgstr "" #: lib/wordfenceClass.php:5106 msgid "Nothing done" msgstr "" #: lib/wordfenceClass.php:5107 msgid "We didn't delete anything and no errors were found." msgstr "" #: lib/wordfenceClass.php:5107 msgid "We didn't repair anything and no errors were found." msgstr "" #: lib/wordfenceClass.php:5115 msgid "Invalid bulk operation selected" msgstr "" #: lib/wordfenceClass.php:5125 msgid "Could not delete file because we could not find that issue." msgstr "" #: lib/wordfenceClass.php:5128 msgid "Could not delete file because that issue does not appear to be a file related issue." msgstr "" #: lib/wordfenceClass.php:5134 msgid "An invalid file was requested for deletion." msgstr "" #. translators: 1. File path. 2. Error message. #: lib/wordfenceClass.php:5177 msgid "Could not delete file %1$s. The error was: %2$s" msgstr "" #: lib/wordfenceClass.php:5190 msgid "Could not remove the option because we could not find that issue." msgstr "" #: lib/wordfenceClass.php:5193 msgid "Could not remove the option because that issue does not appear to be a database related issue." msgstr "" #. translators: 1. WordPress option. 2. Error message. #: lib/wordfenceClass.php:5206 msgid "Could not remove the option %1$s. The error was: %2$s" msgstr "" #: lib/wordfenceClass.php:5233 msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting display_errors to Off in your php.ini if your site is on a VPS or dedicated server that you control." msgstr "" #: lib/wordfenceClass.php:5275 msgid "We could not get the original file to do a repair." msgstr "" #: lib/wordfenceClass.php:5279 msgid "An invalid file was specified for repair." msgstr "" #: lib/wordfenceClass.php:5294 msgid "We could not write to that file. You may not have permission to modify files on your WordPress server." msgstr "" #: lib/wordfenceClass.php:5298 msgid "Ajax request received to start scan." msgstr "" #. translators: Number of URLs. #: lib/wordfenceClass.php:5353 msgid "Page contains %d malware URL: " msgid_plural "Page contains %d malware URLs: " msgstr[0] "" msgstr[1] "" #: lib/wordfenceClass.php:5356 msgid "Run a Scan" msgstr "" #: lib/wordfenceClass.php:5404 msgid "Unknown dashboard data set." msgstr "" #: lib/wordfenceClass.php:5435 msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again." msgstr "" #: lib/wordfenceClass.php:5622 msgid "An invalid IP address was specified." msgstr "" #: lib/wordfenceClass.php:5675 #: lib/wordfenceClass.php:5715 #: lib/wordfenceClass.php:5753 msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)" msgstr "" #: lib/wordfenceClass.php:5680 #: lib/wordfenceClass.php:5758 msgid "Invalid file requested. (Relative paths not allowed)" msgstr "" #: lib/wordfenceClass.php:5684 #: lib/wordfenceClass.php:5719 #: lib/wordfenceClass.php:5762 msgid "File contains illegal characters." msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:5694 msgid "We could not open the requested file for reading. The error was: %s" msgstr "" #: lib/wordfenceClass.php:5702 msgid "Greater than 2 Gigs" msgstr "" #: lib/wordfenceClass.php:5707 msgid "Unknown file size." msgstr "" #: lib/wordfenceClass.php:5728 msgid "We could not get the contents of the original file to do a comparison." msgstr "" #: lib/wordfenceClass.php:5766 msgid "File does not exist." msgstr "" #: lib/wordfenceClass.php:6016 #: views/dashboard/options-group-import.php:167 msgid "Reload" msgstr "" #: lib/wordfenceClass.php:6033 msgid "${totalIPs} addresses in this network" msgstr "" #. translators: 1. Description of firewall action. 2. Description of input parameters. #: lib/wordfenceClass.php:6034 msgid "%s in POST body: %s" msgstr "" #. translators: 1. Description of firewall action. 2. Description of input parameters. #: lib/wordfenceClass.php:6035 msgid "%s in cookie: %s" msgstr "" #. translators: 1. Description of firewall action. 2. Description of input parameters. #: lib/wordfenceClass.php:6036 msgid "%s in file: %s" msgstr "" #. translators: 1. Description of firewall action. 2. Description of input parameters. #: lib/wordfenceClass.php:6037 msgid "%s in query string: %s" msgstr "" #. translators: Domain name. #: lib/wordfenceClass.php:6038 msgid "%s is not valid hostname" msgstr "" #. translators: Domain name. #: lib/wordfenceClass.php:6039 msgid ".htaccess Updated" msgstr "" #: lib/wordfenceClass.php:6040 msgid ".htaccess change" msgstr "" #: lib/wordfenceClass.php:6041 msgid "404 Not Found" msgstr "" #: lib/wordfenceClass.php:6042 msgid "Activity Log Sent" msgstr "" #: lib/wordfenceClass.php:6043 msgid "Add action to allowlist" msgstr "" #: lib/wordfenceClass.php:6044 msgid "Add code to .htaccess" msgstr "" #: lib/wordfenceClass.php:6045 msgid "All Hits" msgstr "" #. translators: WordPress username. #: lib/wordfenceClass.php:6046 msgid "All capabilties of admin user %s were successfully revoked." msgstr "" #: lib/wordfenceClass.php:6048 msgid "An error occurred when adding the request to the allowlist." msgstr "" #: lib/wordfenceClass.php:6049 msgid "Are you sure you want to allowlist this action?" msgstr "" #: lib/wordfenceClass.php:6050 msgid "Authentication Code" msgstr "" #: lib/wordfenceClass.php:6051 msgid "Background Request Blocked" msgstr "" #: lib/wordfenceClass.php:6052 msgid "Block This Network" msgstr "" #: lib/wordfenceClass.php:6054 msgid "Blocked By Firewall" msgstr "" #: lib/wordfenceClass.php:6055 msgid "Blocked WAF" msgstr "" #: lib/wordfenceClass.php:6056 msgid "Blocked by Wordfence" msgstr "" #: lib/wordfenceClass.php:6057 msgid "Blocked by Wordfence plugin settings" msgstr "" #: lib/wordfenceClass.php:6058 msgid "Blocked by the Wordfence Application Firewall and plugin settings" msgstr "" #: lib/wordfenceClass.php:6059 msgid "Blocked by the Wordfence Security Network" msgstr "" #: lib/wordfenceClass.php:6060 msgid "Blocked by the Wordfence Web Application Firewall" msgstr "" #: lib/wordfenceClass.php:6063 msgid "Cellphone Sign-In Recovery Codes" msgstr "" #: lib/wordfenceClass.php:6064 msgid "Cellphone Sign-in activated for user." msgstr "" #: lib/wordfenceClass.php:6065 msgid "Click here to download a backup copy of this file now" msgstr "" #: lib/wordfenceClass.php:6066 msgid "Click here to download a backup copy of your .htaccess file now" msgstr "" #: lib/wordfenceClass.php:6067 msgid "Click to fix .htaccess" msgstr "" #: lib/wordfenceClass.php:6069 msgid "Crawlers" msgstr "" #: lib/wordfenceClass.php:6070 msgid "Diagnostic report has been sent successfully." msgstr "" #: lib/wordfenceClass.php:6071 msgid "Directory Listing Disabled" msgstr "" #: lib/wordfenceClass.php:6072 msgid "Directory listing has been disabled on your server." msgstr "" #: lib/wordfenceClass.php:6075 msgid "Don't ask again" msgstr "" #: lib/wordfenceClass.php:6077 msgid "Download Backup File" msgstr "" #: lib/wordfenceClass.php:6078 msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:" msgstr "" #: lib/wordfenceClass.php:6079 msgid "Email Diagnostic Report" msgstr "" #: lib/wordfenceClass.php:6080 msgid "Email Wordfence Activity Log" msgstr "" #: lib/wordfenceClass.php:6082 msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data." msgstr "" #: lib/wordfenceClass.php:6083 msgid "Error" msgstr "" #: lib/wordfenceClass.php:6084 msgid "Error Enabling All Options Page" msgstr "" #: lib/wordfenceClass.php:6085 msgid "Error Restoring Defaults" msgstr "" #: lib/wordfenceClass.php:6086 msgid "Error Saving Option" msgstr "" #: lib/wordfenceClass.php:6087 msgid "Error Saving Options" msgstr "" #: lib/wordfenceClass.php:6088 msgid "Failed Login" msgstr "" #: lib/wordfenceClass.php:6089 msgid "Failed Login: Invalid Username" msgstr "" #: lib/wordfenceClass.php:6090 msgid "Failed Login: Valid Username" msgstr "" #: lib/wordfenceClass.php:6091 msgid "File hidden successfully" msgstr "" #: lib/wordfenceClass.php:6092 msgid "File restored OK" msgstr "" #: lib/wordfenceClass.php:6093 msgid "Filter Traffic" msgstr "" #: lib/wordfenceClass.php:6094 msgid "Firewall Response" msgstr "" #: lib/wordfenceClass.php:6095 #: views/scanner/issue-wpscan_fullPathDiscl.php:8 msgid "Full Path Disclosure" msgstr "" #: lib/wordfenceClass.php:6096 msgid "Google Bot" msgstr "" #: lib/wordfenceClass.php:6097 msgid "Google Crawlers" msgstr "" #: lib/wordfenceClass.php:6098 msgid "HTTP Response Code" msgstr "" #: lib/wordfenceClass.php:6100 msgid "Humans" msgstr "" #: lib/wordfenceClass.php:6102 msgid "Key:" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:6103 msgid "Last Updated: %s" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:6104 msgid "Learn more about repairing modified files." msgstr "" #: lib/wordfenceClass.php:6106 msgid "Locked Out" msgstr "" #: lib/wordfenceClass.php:6107 msgid "Locked out from logging in" msgstr "" #: lib/wordfenceClass.php:6108 msgid "Logged In" msgstr "" #: lib/wordfenceClass.php:6109 msgid "Logins" msgstr "" #: lib/wordfenceClass.php:6110 msgid "Logins and Logouts" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:6113 msgid "Next Update Check: %s" msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:6114 msgid "No activity to report yet. Please complete your first scan." msgstr "" #: lib/wordfenceClass.php:6115 msgid "No issues have been ignored." msgstr "" #: lib/wordfenceClass.php:6116 msgid "No new issues have been found." msgstr "" #: lib/wordfenceClass.php:6117 msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory." msgstr "" #: lib/wordfenceClass.php:6118 msgid "No rules were updated. Please verify your website can reach the Wordfence servers." msgstr "" #: lib/wordfenceClass.php:6119 msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later." msgstr "" #: lib/wordfenceClass.php:6120 msgid "Note: Status will update when changes are saved" msgstr "" #: lib/wordfenceClass.php:6121 msgid "OK" msgstr "" #: lib/wordfenceClass.php:6122 msgid "Pages Not Found" msgstr "" #: lib/wordfenceClass.php:6123 msgid "Paid Members Only" msgstr "" #: lib/wordfenceClass.php:6125 msgid "Please enter a valid email address." msgstr "" #: lib/wordfenceClass.php:6126 msgid "Please include your support ticket number or forum username." msgstr "" #: lib/wordfenceClass.php:6127 msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:" msgstr "" #: lib/wordfenceClass.php:6128 msgid "Please specify a reason" msgstr "" #: lib/wordfenceClass.php:6129 msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash." msgstr "" #: lib/wordfenceClass.php:6130 msgid "Please specify either an IP address range, Hostname or a web browser pattern to match." msgstr "" #: lib/wordfenceClass.php:6131 msgid "Recent Activity" msgstr "" #: lib/wordfenceClass.php:6132 msgid "Recovery Codes" msgstr "" #: lib/wordfenceClass.php:6133 msgid "Redirected" msgstr "" #: lib/wordfenceClass.php:6134 msgid "Redirected by Country Blocking bypass URL" msgstr "" #: lib/wordfenceClass.php:6135 msgid "Referer" msgstr "" #: lib/wordfenceClass.php:6136 msgid "Registered Users" msgstr "" #: lib/wordfenceClass.php:6138 msgid "Rule Update Failed" msgstr "" #: lib/wordfenceClass.php:6139 msgid "Rules Updated" msgstr "" #: lib/wordfenceClass.php:6141 msgid "Scan Complete." msgstr "" #: lib/wordfenceClass.php:6142 msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead." msgstr "" #: lib/wordfenceClass.php:6143 msgid "Security Event" msgstr "" #: lib/wordfenceClass.php:6144 msgid "Send" msgstr "" #: lib/wordfenceClass.php:6145 msgid "Sorry, but no data for that IP or domain was found." msgstr "" #: lib/wordfenceClass.php:6146 msgid "Specify a valid IP range" msgstr "" #: lib/wordfenceClass.php:6147 msgid "Specify a valid hostname" msgstr "" #: lib/wordfenceClass.php:6148 msgid "Specify an IP range, Hostname or Browser pattern" msgstr "" #: lib/wordfenceClass.php:6149 msgid "Success deleting file" msgstr "" #: lib/wordfenceClass.php:6150 msgid "Success removing option" msgstr "" #: lib/wordfenceClass.php:6151 msgid "Success restoring file" msgstr "" #: lib/wordfenceClass.php:6152 msgid "Success updating option" msgstr "" #: lib/wordfenceClass.php:6153 msgid "Successfully deleted admin" msgstr "" #: lib/wordfenceClass.php:6154 msgid "Successfully revoked admin" msgstr "" #: lib/wordfenceClass.php:6155 msgid "Test Email Sent" msgstr "" #: lib/wordfenceClass.php:6156 msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value." msgstr "" #: lib/wordfenceClass.php:6157 msgid "The Full Path disclosure issue has been fixed" msgstr "" #. translators: WordPress username. #: lib/wordfenceClass.php:6158 msgid "The admin user %s was successfully deleted." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6159 msgid "The file %s was successfully deleted." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6160 msgid "The file %s was successfully hidden from public view." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6161 msgid "The file %s was successfully restored." msgstr "" #. translators: WordPress option. #: lib/wordfenceClass.php:6162 msgid "The option %s was successfully removed." msgstr "" #. translators: WordPress option. #: lib/wordfenceClass.php:6163 msgid "The request has been allowlisted. Please try it again." msgstr "" #: lib/wordfenceClass.php:6164 msgid "There was an error while sending the email." msgstr "" #: lib/wordfenceClass.php:6165 msgid "This will be shown only once. Keep these codes somewhere safe." msgstr "" #: lib/wordfenceClass.php:6166 msgid "Throttled" msgstr "" #: lib/wordfenceClass.php:6167 msgid "Two Factor Status" msgstr "" #. translators: HTTP client type. #: lib/wordfenceClass.php:6169 msgid "Type: %s" msgstr "" #. translators: HTTP client type. #: lib/wordfenceClass.php:6170 #: views/scanner/issue-checkGSB.php:8 #: views/scanner/issue-commentBadURL.php:8 #: views/scanner/issue-configReadable.php:12 #: views/scanner/issue-configReadable.php:23 #: views/scanner/issue-optionBadURL.php:8 #: views/scanner/issue-postBadURL.php:8 #: views/scanner/issue-publiclyAccessible.php:12 #: views/scanner/issue-publiclyAccessible.php:23 #: views/scanner/issue-wpscan_directoryList.php:12 #: views/scanner/issue-wpscan_directoryList.php:23 #: views/scanner/issue-wpscan_fullPathDiscl.php:12 #: views/scanner/issue-wpscan_fullPathDiscl.php:23 #: views/waf/option-whitelist.php:9 #: views/waf/option-whitelist.php:106 #: views/waf/options-group-whitelisted.php:82 #: views/waf/options-group-whitelisted.php:95 msgid "URL" msgstr "" #: lib/wordfenceClass.php:6171 msgid "Unable to automatically hide file" msgstr "" #. translators: 2FA backup codes. #: lib/wordfenceClass.php:6172 msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once." msgstr "" #. translators: 2FA backup codes. #: lib/wordfenceClass.php:6173 msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once." msgstr "" #: lib/wordfenceClass.php:6175 msgid "User ID" msgstr "" #: lib/wordfenceClass.php:6177 msgid "WHOIS LOOKUP" msgstr "" #: lib/wordfenceClass.php:6178 msgid "We are about to change your .htaccess file. Please make a backup of this file before proceeding." msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:6179 msgid "We can't modify your .htaccess file for you because: %s" msgstr "" #. translators: Error message. #: lib/wordfenceClass.php:6180 msgid "We encountered a problem" msgstr "" #. translators: URL. #: lib/wordfenceClass.php:6181 msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future." msgstr "" #. translators: URL. #: lib/wordfenceClass.php:6182 msgid "Wordfence is working..." msgstr "" #: lib/wordfenceClass.php:6183 msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the Nginx docs for more info on how to do this." msgstr "" #: lib/wordfenceClass.php:6184 msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files." msgstr "" #: lib/wordfenceClass.php:6185 msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable display_error" msgstr "" #: lib/wordfenceClass.php:6186 msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping." msgstr "" #: lib/wordfenceClass.php:6187 msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost." msgstr "" #: lib/wordfenceClass.php:6188 msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally." msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:6189 msgid "Your Wordfence activity log was sent to %s" msgstr "" #. translators: Email address. #: lib/wordfenceClass.php:6190 msgid "Your rules have been updated successfully." msgstr "" #: lib/wordfenceClass.php:6191 msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. Click here to purchase a premium license. Note: Your rules will still update every 30 days as a free user." msgstr "" #. translators: wp_mail() return value. #: lib/wordfenceClass.php:6192 msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s

A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered." msgstr "" #. translators: wp_mail() return value. #: lib/wordfenceClass.php:6193 msgid "blocked by firewall" msgstr "" #. translators: Reason for firewall action. #: lib/wordfenceClass.php:6194 msgid "blocked by firewall for %s" msgstr "" #. translators: Reason for firewall action. #: lib/wordfenceClass.php:6195 msgid "blocked by real-time IP blocklist" msgstr "" #: lib/wordfenceClass.php:6196 msgid "blocked by the Wordfence Security Network" msgstr "" #. translators: Reason for firewall action. #: lib/wordfenceClass.php:6197 msgid "blocked for %s" msgstr "" #. translators: Reason for firewall action. #: lib/wordfenceClass.php:6198 msgid "locked out from logging in" msgstr "" #: lib/wordfenceClass.php:6211 msgid "Wordfence generated an error on activation. The output we received during activation was:" msgstr "" #: lib/wordfenceClass.php:6218 msgid "Wordfence could not register with the Wordfence scanning servers when it activated." msgstr "" #: lib/wordfenceClass.php:6219 msgid "You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can't connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges." msgstr "" #: lib/wordfenceClass.php:6233 msgid "The Wordfence Web Application Firewall cannot run." msgstr "" #. translators: 1. WordPress admin panel URL. 2. Support URL. #: lib/wordfenceClass.php:6236 msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by clicking here. It will automatically resume normal operation when it is fixed. " msgstr "" #: lib/wordfenceClass.php:6252 #: lib/wordfenceClass.php:6271 msgid "The Wordfence Web Application Firewall needs a configuration update." msgstr "" #. translators: 1. WordPress admin panel URL. 2. Support URL. #: lib/wordfenceClass.php:6255 msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by clicking here. " msgstr "" #. translators: 1. WordPress admin panel URL. 2. Support URL. #: lib/wordfenceClass.php:6274 msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by clicking here or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. " msgstr "" #: lib/wordfenceClass.php:6280 msgid "The Wordfence Web Application Firewall is in read-only mode." msgstr "" #: lib/wordfenceClass.php:6289 msgid "This site is currently using PHP's built in REMOTE_ADDR." msgstr "" #: lib/wordfenceClass.php:6292 msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header." msgstr "" #: lib/wordfenceClass.php:6295 msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header." msgstr "" #: lib/wordfenceClass.php:6298 msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare." msgstr "" #: lib/wordfenceClass.php:6315 msgid "Your 'How does Wordfence get IPs' setting is misconfigured." msgstr "" #: lib/wordfenceClass.php:6317 msgid "Click here to use the recommended setting" msgstr "" #: lib/wordfenceClass.php:6319 #: views/onboarding/fresh-install.php:39 msgid "or" msgstr "" #: lib/wordfenceClass.php:6321 msgid "visit the options page" msgstr "" #: lib/wordfenceClass.php:6323 msgid "to manually update it." msgstr "" #: lib/wordfenceClass.php:6331 msgid "Do you want Wordfence to stay up-to-date automatically?" msgstr "" #: lib/wordfenceClass.php:6333 msgid "Yes, enable auto-update." msgstr "" #: lib/wordfenceClass.php:6335 msgid "No thanks." msgstr "" #. translators: Localized date. #: lib/wordfenceClass.php:6418 msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then." msgstr "" #. translators: 1. Localized date. 2. WordPress admin panel URL. #: lib/wordfenceClass.php:6426 msgid "You may wait for the next automatic attempt at %1$s or try to Manually Update by clicking the \"Manually Refresh Rules\" button below the Rules list." msgstr "" #. translators: WordPress admin panel URL. #: lib/wordfenceClass.php:6432 msgid "You may wait for the next automatic attempt or try to Manually Update by clicking the \"Manually Refresh Rules\" button below the Rules list." msgstr "" #. translators: WordPress admin panel URL. #: lib/wordfenceClass.php:6437 msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list." msgstr "" #: lib/wordfenceClass.php:6440 msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list." msgstr "" #: lib/wordfenceClass.php:6543 #: models/page/wfPage.php:101 msgid "Dashboard" msgstr "" #. translators: Number of notifications. #: lib/wordfenceClass.php:6623 msgid "You have %d new Wordfence notification." msgid_plural "You have %d new Wordfence notifications." msgstr[0] "" msgstr[1] "" #: lib/wordfenceClass.php:6647 msgid "JavaScript Errors" msgstr "" #: lib/wordfenceClass.php:6653 msgid "Malware URLs" msgstr "" #. translators: WordPress admin panel URL. #: lib/wordfenceClass.php:6771 #: lib/wordfenceClass.php:6834 msgid "Click here to rebuild the configuration file." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6782 #: lib/wordfenceClass.php:6845 msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it." msgstr "" #: lib/wordfenceClass.php:6792 #: lib/wordfenceClass.php:6855 msgid "An error occured when fetching the WAF configuration from the database." msgstr "" #. translators: Plugin name. #: lib/wordfenceClass.php:6877 msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic." msgstr "" #. translators: 1. Plugin name. #: lib/wordfenceClass.php:6879 msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6940 msgid "The file %s was restored successfully." msgstr "" #: lib/wordfenceClass.php:6945 msgid "There was an error restoring the file." msgstr "" #: lib/wordfenceClass.php:6955 #: lib/wordfenceClass.php:6978 msgid "Return to scan results" msgstr "" #. translators: File path. #: lib/wordfenceClass.php:6964 msgid "The file %s was deleted successfully." msgstr "" #: lib/wordfenceClass.php:6968 msgid "There was an error deleting the file." msgstr "" #. translators: IP address. #: lib/wordfenceClass.php:7036 msgid "" "User IP: %s\n" "" msgstr "" #. translators: Domain name. #: lib/wordfenceClass.php:7039 msgid "" "User hostname: %s\n" "" msgstr "" #: lib/wordfenceClass.php:7043 msgid "User location: " msgstr "" #. translators: WordPress admin panel URL. #: lib/wordfenceClass.php:7098 msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s" msgstr "" #: lib/wordfenceClass.php:7138 msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]" msgstr "" #: lib/wordfenceClass.php:7157 msgid "Invalid email address provided." msgstr "" #: lib/wordfenceClass.php:7162 msgid "Test email sent successfully" msgstr "" #: lib/wordfenceClass.php:7163 msgid "Test email failed to send." msgstr "" #. translators: Localized date range. #: lib/wordfenceClass.php:7181 msgid "Wordfence activity in the past %s" msgstr "" #: lib/wordfenceClass.php:7221 #: lib/wordfenceClass.php:7225 #: lib/wordfenceClass.php:7256 msgid "We could not find that user in the database." msgstr "" #: lib/wordfenceClass.php:7229 msgid "This user's email is the network admin email. It will need to be changed before deleting this user." msgstr "" #: lib/wordfenceClass.php:7293 msgid "Wordfence could not find your .htaccess file." msgstr "" #: lib/wordfenceClass.php:7309 msgid "Updating the .htaccess did not fix the issue. You may need to add Options -Indexes to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server." msgstr "" #: lib/wordfenceClass.php:7315 msgid "There was an error writing to your .htaccess file." msgstr "" #: lib/wordfenceClass.php:7394 msgid "Required parameters not sent." msgstr "" #: lib/wordfenceClass.php:7404 msgid "The WAF is currently in read-only mode and will not save any configuration changes." msgstr "" #: lib/wordfenceClass.php:7442 #: views/waf/option-whitelist.php:60 msgid "Allowlisted via Firewall Options page" msgstr "" #: lib/wordfenceClass.php:7729 msgid "Allowlisted via Live Traffic" msgstr "" #: lib/wordfenceClass.php:7893 #: lib/wordfenceClass.php:7990 msgid "A valid server configuration was not provided." msgstr "" #: lib/wordfenceClass.php:7904 #: lib/wordfenceClass.php:8011 msgid "Filesystem Credentials Required" msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:7906 #: lib/wordfenceClass.php:7930 #: lib/wordfenceClass.php:7974 msgid "If you cannot complete the setup process, click here for help" msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:7907 msgid "Once you have entered credentials, click Continue to complete the setup." msgstr "" #: lib/wordfenceClass.php:7928 #: lib/wordfenceClass.php:8036 msgid "Filesystem Permission Error" msgstr "" #: lib/wordfenceClass.php:7954 msgid "Manual Installation Instructions" msgstr "" #: lib/wordfenceClass.php:7961 msgid "Installation Successful" msgstr "" #: lib/wordfenceClass.php:7972 msgid "Installation Failed" msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:8013 #: lib/wordfenceClass.php:8038 #: lib/wordfenceClass.php:8069 #: lib/wordfenceClass.php:8098 #: lib/wordfenceClass.php:8144 #: views/waf/waf-uninstall.php:13 msgid "If you cannot complete the uninstall process, click here for help" msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:8014 msgid "Once you have entered credentials, click Continue to complete uninstallation." msgstr "" #: lib/wordfenceClass.php:8058 msgid "The auto_prepend_file setting has been successfully removed from .htaccess and .user.ini. Once this change takes effect, Extended Protection Mode will be disabled." msgstr "" #: lib/wordfenceClass.php:8060 msgid "Any previous value for auto_prepend_file will need to be re-enabled manually if still needed." msgstr "" #. translators: Time until. #: lib/wordfenceClass.php:8064 msgid "Waiting for it to take effect. This may take up to %s." msgstr "" #: lib/wordfenceClass.php:8067 msgid "Waiting for Changes" msgstr "" #: lib/wordfenceClass.php:8089 msgid "Extended Protection Mode has not been disabled. This may be because auto_prepend_file is configured somewhere else or the value is still cached by PHP." msgstr "" #: lib/wordfenceClass.php:8091 msgid "Retrying Failed." msgstr "" #: lib/wordfenceClass.php:8093 msgid "Try Again" msgstr "" #: lib/wordfenceClass.php:8096 msgid "Unable to Uninstall" msgstr "" #: lib/wordfenceClass.php:8132 msgid "Uninstallation Complete" msgstr "" #: lib/wordfenceClass.php:8142 msgid "Uninstallation Failed" msgstr "" #. translators: 1. Number of attacks/blocks. 2. Time since. #: lib/wordfenceClass.php:8285 msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:" msgstr "" #: lib/wordfenceClass.php:8818 msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:" msgstr "" #: lib/wordfenceClass.php:8818 msgid "Click here to configure" msgstr "" #. translators: Support URL. #: lib/wordfenceClass.php:8821 msgid "If you cannot complete the setup process, click here for help." msgstr "" #: lib/wordfenceClass.php:8827 #: views/waf/waf-install-success.php:14 msgid "Nice work! The firewall is now optimized." msgstr "" #: lib/wordfenceClass.php:8829 #: lib/wordfenceClass.php:8841 #: views/waf/waf-install-success.php:16 #: views/waf/waf-uninstall-success.php:19 msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page." msgstr "" #: lib/wordfenceClass.php:8835 #: views/waf/waf-uninstall-success.php:15 msgid "Uninstallation was successful!" msgstr "" #: lib/wordfenceClass.php:8838 #: views/waf/waf-uninstall-success.php:17 msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation." msgstr "" #: lib/wordfenceClass.php:8846 msgid "The update was successful!" msgstr "" #: lib/wordfenceClass.php:8982 msgid "Auth grant is invalid." msgstr "" #: lib/wordfenceClass.php:9045 #: lib/wordfenceClass.php:9182 msgid "Access token not found." msgstr "" #: lib/wordfenceClass.php:9090 #: lib/wordfenceClass.php:9157 msgid "Invalid response from Wordfence Central." msgstr "" #: lib/wordfenceClass.php:9133 msgid "Auth grant not found." msgstr "" #: lib/wordfenceClass.php:9399 msgid "We were unable to create the wordfence-waf.php file in the root of the WordPress installation. It's possible WordPress cannot write to the wordfence-waf.php file because of file permissions. Please verify the permissions are correct and retry the installation." msgstr "" #: lib/wordfenceClass.php:9491 #: lib/wordfenceClass.php:9562 msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation." msgstr "" #. translators: File path. #: lib/wordfenceClass.php:9532 #: lib/wordfenceClass.php:9580 msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation." msgstr "" #: lib/wordfenceClass.php:9596 msgid "We were unable to remove the wordfence-waf.php file in the root of the WordPress installation. It's possible WordPress cannot remove the wordfence-waf.php file because of file permissions. Please verify the permissions are correct and retry the removal." msgstr "" #: lib/wordfenceHash.php:68 msgid "Fetching core, theme and plugin file signatures from Wordfence" msgstr "" #: lib/wordfenceHash.php:77 msgid "Fetching list of known malware files from Wordfence" msgstr "" #: lib/wordfenceHash.php:81 msgid "Using cached malware prefixes" msgstr "" #: lib/wordfenceHash.php:84 msgid "Fetching fresh malware prefixes" msgstr "" #: lib/wordfenceHash.php:89 msgid "Could not fetch malware signatures from Wordfence servers." msgstr "" #: lib/wordfenceHash.php:94 msgid "Malware data received from Wordfence servers was not valid." msgstr "" #: lib/wordfenceHash.php:106 msgid "Fetching list of known core files from Wordfence" msgstr "" #: lib/wordfenceHash.php:110 msgid "Using cached core hashes" msgstr "" #: lib/wordfenceHash.php:113 msgid "Fetching fresh core hashes" msgstr "" #: lib/wordfenceHash.php:118 msgid "Could not fetch core hashes from Wordfence servers." msgstr "" #: lib/wordfenceHash.php:123 msgid "Core hashes data received from Wordfence servers was not valid." msgstr "" #: lib/wordfenceHash.php:138 msgid "Could not read directory %s to do scan." msgstr "" #: lib/wordfenceHash.php:147 msgid "Comparing core WordPress files against originals in repository" msgstr "" #: lib/wordfenceHash.php:147 msgid "Skipping core scan" msgstr "" #: lib/wordfenceHash.php:148 msgid "Comparing open source themes against WordPress.org originals" msgstr "" #: lib/wordfenceHash.php:148 msgid "Skipping theme scan" msgstr "" #: lib/wordfenceHash.php:149 msgid "Comparing plugins against WordPress.org originals" msgstr "" #: lib/wordfenceHash.php:149 msgid "Skipping plugin scan" msgstr "" #: lib/wordfenceHash.php:150 msgid "Scanning for known malware files" msgstr "" #: lib/wordfenceHash.php:150 msgid "Skipping malware scan" msgstr "" #: lib/wordfenceHash.php:151 msgid "Scanning for unknown files in wp-admin and wp-includes" msgstr "" #: lib/wordfenceHash.php:151 msgid "Skipping unknown core file scan" msgstr "" #. translators: WordPress version. #: lib/wordfenceHash.php:164 msgid "Unknown WordPress core version: %s" msgstr "" #. translators: WordPress version. #: lib/wordfenceHash.php:165 msgid "The core files scan will not be run because this version of WordPress is not currently indexed by Wordfence. This may be due to using a prerelease version or because the servers are still indexing a new release. If you are using an official WordPress release, this issue will automatically dismiss once the version is indexed and another scan is run." msgstr "" #. translators: File path. #: lib/wordfenceHash.php:198 msgid "Wordfence file scanner detected a possible infinite loop. Exiting on file: %s" msgstr "" #: lib/wordfenceHash.php:201 msgid "Indexing files for scanning" msgstr "" #. translators: Time in seconds. #: lib/wordfenceHash.php:227 msgid "Index time: %s" msgstr "" #: lib/wordfenceHash.php:232 msgid "Beginning file hashing" msgstr "" #: lib/wordfenceHash.php:238 msgid "Processing pending issues" msgstr "" #. translators: 1. Number of files. 2. Data in bytes. #: lib/wordfenceHash.php:241 msgid "Analyzed %1$d files containing %2$s of data." msgstr "" #: lib/wordfenceHash.php:250 msgid "Invalid response from Wordfence API during check_possible_malware" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:263 msgid "This file is suspected malware: %s" msgstr "" #. translators: Malware name/title. #: lib/wordfenceHash.php:264 msgid "This file's signature matches a known malware file. The title of the malware is '%s'. Immediately inspect this file using the 'View' option below and consider deleting it from your server." msgstr "" #. translators: File path. #: lib/wordfenceHash.php:311 #: lib/wordfenceHash.php:342 msgid "Found .suspected file: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:323 #: lib/wordfenceHash.php:351 msgid "Skipping unneeded hash: %s" msgstr "" #. translators: Number of files. #: lib/wordfenceHash.php:375 msgid "%d files indexed" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:406 msgid "Forking during indexing: %s" msgstr "" #. translators: PHP max execution time. #: lib/wordfenceHash.php:409 msgid "Calling fork() from wordfenceHash with maxExecTime: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:447 msgid "Skipping file larger than max size: %s" msgstr "" #. translators: 1. File path. 2. Memory in bytes. #: lib/wordfenceHash.php:452 msgid "Scanning: %1$s (Mem:%2$s)" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:455 msgid "Scanning: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:494 msgid "WordPress core file modified: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:495 msgid "This WordPress core file has been modified and differs from the original file distributed with this version of WordPress." msgstr "" #. translators: File path. #: lib/wordfenceHash.php:530 msgid "Modified plugin file: %s" msgstr "" #. translators: 1. Plugin name. 2. Plugin version. 3. Support URL. #: lib/wordfenceHash.php:533 msgid "This file belongs to plugin \"%1$s\" version \"%2$s\" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don't manage their code correctly. Learn More" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:576 msgid "Modified theme file: %s" msgstr "" #. translators: 1. Plugin name. 2. Plugin version. 3. Support URL. #: lib/wordfenceHash.php:579 msgid "This file belongs to theme \"%1$s\" version \"%2$s\" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. Learn More" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:612 msgid "Old WordPress core file not removed during update: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:613 msgid "This file is in a WordPress core location but is from an older version of WordPress and not used with your current version. Hosting or permissions issues can cause these files to get left behind when WordPress is updated and they should be removed if possible." msgstr "" #. translators: File path. #: lib/wordfenceHash.php:629 #: lib/wordfenceHash.php:649 msgid "Unknown file in WordPress core: %s" msgstr "" #. translators: File path. #: lib/wordfenceHash.php:630 msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker." msgstr "" #. translators: Support URL. #: lib/wordfenceHash.php:650 msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. Learn More" msgstr "" #. translators: 1. Number of files. 2. Data in bytes. #: lib/wordfenceHash.php:678 msgid "Analyzed %1$d files containing %2$s of data so far" msgstr "" #. translators: Number of scan results. #: lib/wordfenceHash.php:762 msgid "(+ %d more)" msgstr "" #. translators: Number of files. #: lib/wordfenceHash.php:763 msgid "%d more similar files were found." msgstr "" #. translators: Number of files. #: lib/wordfenceHash.php:763 msgid "1 more similar file was found." msgstr "" #. translators: Number of files. #: lib/wordfenceHash.php:763 msgid "Learn More" msgstr "" #: lib/wordfenceScanner.php:87 msgid "Wordfence could not get the attack signature patterns from the scanning server." msgstr "" #: lib/wordfenceScanner.php:96 msgid "Wordfence received malformed attack signature patterns from the scanning server." msgstr "" #: lib/wordfenceScanner.php:102 msgid "A regex Wordfence received from its servers is invalid. The pattern is: " msgstr "" #. translators: PHP ini setting (number). #: lib/wordfenceScanner.php:199 msgid "Backtrack limit is %d, reducing to 1000000" msgstr "" #: lib/wordfenceScanner.php:212 msgid "Detected loop in malware scan, aborting." msgstr "" #: lib/wordfenceScanner.php:219 msgid "No files remaining for malware scan." msgstr "" #. translators: File path. #: lib/wordfenceScanner.php:283 msgid "Encountered file that is too large: %s - Skipping." msgstr "" #. translators: 1. File path. 2. File size. 3. Memory in bytes. #: lib/wordfenceScanner.php:294 msgid "Scanning contents: %1$s (Size: %2$s Mem: %3$s)" msgstr "" #. translators: 1. File path. 2. File size. #: lib/wordfenceScanner.php:302 msgid "Scanning contents: %1$s (Size: %2$s)" msgstr "" #: lib/wordfenceScanner.php:335 msgid "This file was detected because you have enabled \"Scan images, binary, and other files as if they were executable\", which treats non-PHP files as if they were PHP code. This option is more aggressive than the usual scans, and may cause false positives." msgstr "" #: lib/wordfenceScanner.php:338 msgid "This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives." msgstr "" #: lib/wordfenceScanner.php:349 msgid "File is an old version of TimThumb which is vulnerable." msgstr "" #: lib/wordfenceScanner.php:350 msgid "This file appears to be an old version of the TimThumb script which makes your system vulnerable to attackers. Please upgrade the theme or plugin that uses this or remove it." msgstr "" #. translators: Malware signature rule ID. #: lib/wordfenceScanner.php:371 msgid "Resuming malware scan at rule %s." msgstr "" #: lib/wordfenceScanner.php:405 msgid "This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans." msgstr "" #: lib/wordfenceScanner.php:416 msgid "File appears to be malicious or unsafe: %s" msgstr "" #: lib/wordfenceScanner.php:417 msgid "The matched text in this file is: %s" msgstr "" #. translators: Scan result type. #: lib/wordfenceScanner.php:417 msgid "The issue type is: %s" msgstr "" #. translators: Scan result description. #: lib/wordfenceScanner.php:417 msgid "Description: %s" msgstr "" #. translators: Malware signature rule ID. #: lib/wordfenceScanner.php:435 msgid "Forking during malware scan (%s) to ensure continuity." msgstr "" #: lib/wordfenceScanner.php:457 msgid "This file may contain malicious executable code: " msgstr "" #. translators: Malware signature matched text. #: lib/wordfenceScanner.php:458 msgid "This file is a PHP executable file and contains the word \"eval\" (without quotes) and the word \"%s\" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives." msgstr "" #: lib/wordfenceScanner.php:495 msgid "Asking Wordfence to check URLs against malware list." msgstr "" #: lib/wordfenceScanner.php:523 #: lib/wordfenceScanner.php:565 msgid "File contains suspected malware URL: " msgstr "" #. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL. #: lib/wordfenceScanner.php:526 msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at Google Safe Browsing diagnostic page." msgstr "" #: lib/wordfenceScanner.php:547 msgid "File contains suspected phishing URL: " msgstr "" #: lib/wordfenceScanner.php:548 msgid "This file contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: " msgstr "" #: lib/wordfenceScanner.php:566 msgid "This file contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: " msgstr "" #: lib/wordfenceScanner.php:582 msgid "Finalizing malware scan results" msgstr "" #. translators: 1. Number of fils. 2. Seconds in millisecond precision. #: lib/wordfenceScanner.php:604 msgid "Scanned contents of %1$d additional files at %2$.2f per second" msgstr "" #. translators: URL #: lib/wordfenceURLHoover.php:130 msgid "Found protocol-relative URL: %s" msgstr "" #: lib/wordfenceURLHoover.php:188 msgid "Gathering host keys." msgstr "" #: lib/wordfenceURLHoover.php:195 msgid "Using MySQLi directly." msgstr "" #. translators: Number of domains. #: lib/wordfenceURLHoover.php:233 msgid "Checking %d host keys against Wordfence scanning servers." msgstr "" #: lib/wordfenceURLHoover.php:235 msgid "Done host key check." msgstr "" #. translators: 1. Number of URLs. 2. Number of files. #: lib/wordfenceURLHoover.php:319 msgid "Checking %1$d URLs from %2$d sources." msgstr "" #: lib/wordfenceURLHoover.php:324 msgid "Done URL check." msgstr "" #: models/block/wfBlock.php:84 msgid "IP Block" msgstr "" #: models/block/wfBlock.php:86 msgid "IP Throttled" msgstr "" #: models/block/wfBlock.php:88 msgid "Lockout" msgstr "" #: models/block/wfBlock.php:90 msgid "Country Block" msgstr "" #: models/block/wfBlock.php:92 msgid "Advanced Block" msgstr "" #: models/block/wfBlock.php:174 msgid "Invalid block type." msgstr "" #: models/block/wfBlock.php:175 msgid "Invalid block duration." msgstr "" #: models/block/wfBlock.php:176 msgid "A block reason must be provided." msgstr "" #: models/block/wfBlock.php:179 msgid "Invalid IP address." msgstr "" #. translators: Support URL #: models/block/wfBlock.php:180 msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. Learn More" msgstr "" #: models/block/wfBlock.php:183 #: models/block/wfBlock.php:184 msgid "Nothing selected to block." msgstr "" #: models/block/wfBlock.php:185 msgid "No countries selected." msgstr "" #: models/block/wfBlock.php:190 msgid "An invalid country was selected." msgstr "" #: models/block/wfBlock.php:200 msgid "Ranges mixing IPv4 and IPv6 addresses are not supported." msgstr "" #: models/block/wfBlock.php:206 msgid "Invalid IP range." msgstr "" #: models/block/wfBlock.php:214 msgid "Invalid hostname." msgstr "" #: models/block/wfBlock.php:219 msgid "No block parameters provided." msgstr "" #: models/firewall/wfFirewall.php:38 #: views/waf/options-group-basic-firewall.php:47 msgid "Learning Mode" msgstr "" #: models/firewall/wfFirewall.php:46 msgid "Extended Protection" msgstr "" #: models/firewall/wfFirewall.php:49 msgid "Basic Protection" msgstr "" #: models/firewall/wfFirewall.php:199 #: models/firewall/wfFirewall.php:367 #: models/firewall/wfFirewall.php:404 msgid "Enable firewall." msgstr "" #: models/firewall/wfFirewall.php:210 msgid "Enable Premium Rules." msgstr "" #: models/firewall/wfFirewall.php:244 msgid "Optimize the Wordfence Firewall." msgstr "" #: models/firewall/wfFirewall.php:252 msgid "Enable Rate Limiting and Advanced Blocking." msgstr "" #: models/firewall/wfFirewall.php:263 msgid "Repair the Wordfence Firewall configuration." msgstr "" #: models/firewall/wfFirewall.php:452 msgid "Enable Firewall." msgstr "" #: models/firewall/wfFirewall.php:461 #: models/firewall/wfFirewall.php:470 msgid "Enable Real-Time IP Blocklist." msgstr "" #: models/firewall/wfFirewall.php:569 msgid "Enable Real-Time Wordfence Security Network." msgstr "" #: models/firewall/wfFirewall.php:575 msgid "Enforce Strong Passwords." msgstr "" #: models/firewall/wfFirewall.php:581 msgid "Enable Mask Login Errors." msgstr "" #: models/firewall/wfFirewall.php:587 msgid "Enable Block Admin Registration." msgstr "" #: models/firewall/wfFirewall.php:593 msgid "Disable Author Scanning." msgstr "" #: models/firewall/wfFirewall.php:599 msgid "Enable Brute Force Protection." msgstr "" #: models/page/wfPage.php:127 msgid "Support" msgstr "" #: models/scanner/wfScanner.php:116 msgid "Quick" msgstr "" #: models/scanner/wfScanner.php:118 msgid "Limited" msgstr "" #: models/scanner/wfScanner.php:120 #: views/scanner/scan-type.php:32 msgid "High Sensitivity" msgstr "" #: models/scanner/wfScanner.php:122 #: views/scanner/scan-scheduling.php:50 msgid "Custom" msgstr "" #: models/scanner/wfScanner.php:125 msgid "Standard" msgstr "" #: models/scanner/wfScanner.php:139 msgid "Low resource utilization, limited detection capability" msgstr "" #: models/scanner/wfScanner.php:141 msgid "Standard detection capability, chance of false positives" msgstr "" #: models/scanner/wfScanner.php:143 msgid "Custom scan options selected" msgstr "" #: models/scanner/wfScanner.php:146 msgid "Standard detection capability" msgstr "" #: models/scanner/wfScanner.php:770 msgid "Enable Premium Reputation Checks." msgstr "" #: models/scanner/wfScanner.php:820 msgid "Enable scan option to check if this website is being \"Spamvertised\"." msgstr "" #: models/scanner/wfScanner.php:821 msgid "Enable scan option to check if your website IP is generating spam." msgstr "" #: models/scanner/wfScanner.php:822 msgid "Enable scan option to check if your website is on a domain blocklist." msgstr "" #: models/scanner/wfScanner.php:926 msgid "User defined scan pattern" msgstr "" #. translators: 1. Day of week. 2. Hour of day. 3. Localized date. #: models/scanner/wfScanner.php:1204 msgid "Scheduled time for day %s hour %s is: %s" msgstr "" #. translators: Site URL #: views/blocking/block-list.php:11 msgid "Current blocks for %s" msgstr "" #: views/blocking/block-list.php:17 msgid "Show Wordfence Automatic Blocks" msgstr "" #: views/blocking/block-list.php:34 msgid "Filter by Type, Detail, or Reason" msgstr "" #: views/blocking/block-list.php:35 #: views/blocking/block-list.php:379 #: views/waf/option-whitelist.php:113 msgid "Filter" msgstr "" #: views/blocking/block-list.php:39 #: views/blocking/block-list.php:502 msgid "Unblock" msgstr "" #: views/blocking/block-list.php:39 msgid "Make Permanent" msgstr "" #: views/blocking/block-list.php:39 msgid "Export All IPs" msgstr "" #: views/blocking/block-list.php:68 msgid "Block Type" msgstr "" #: views/blocking/block-list.php:69 msgid "Detail" msgstr "" #: views/blocking/block-list.php:70 msgid "Rule Added" msgstr "" #: views/blocking/block-list.php:71 msgid "Reason" msgstr "" #: views/blocking/block-list.php:72 msgid "Expiration" msgstr "" #: views/blocking/block-list.php:74 msgid "Last Attempt" msgstr "" #: views/blocking/block-list.php:79 msgid "No blocks are currently active." msgstr "" #: views/blocking/block-list.php:84 msgid "No blocks match the current filter." msgstr "" #: views/blocking/block-list.php:382 msgid "Clear Filter" msgstr "" #: views/blocking/block-list.php:385 msgid "Change Filter" msgstr "" #: views/blocking/block-list.php:499 msgid "Unblocking" msgstr "" #: views/blocking/blocking-create.php:13 msgid "Block this IP Address" msgstr "" #: views/blocking/blocking-create.php:13 msgid "IP Address" msgstr "" #: views/blocking/blocking-create.php:14 msgid "Block the Selected Countries" msgstr "" #: views/blocking/blocking-create.php:14 msgid "Update Block" msgstr "" #: views/blocking/blocking-create.php:15 msgid "Block Visitors Matching this Pattern" msgstr "" #: views/blocking/blocking-create.php:15 msgid "Custom Pattern" msgstr "" #: views/blocking/blocking-create.php:66 msgid "Country Blocking" msgstr "" #: views/blocking/blocking-create.php:113 msgid "Block Duration" msgstr "" #: views/blocking/blocking-create.php:115 msgid "Enter a duration (default is forever)" msgstr "" #: views/blocking/blocking-create.php:132 msgid "What to Block" msgstr "" #: views/blocking/blocking-create.php:137 msgid "Login Form" msgstr "" #: views/blocking/blocking-create.php:141 msgid "Block access to the rest of the siteRest of site" msgstr "" #. translators: Support URL #: views/blocking/blocking-create.php:149 msgid "If you use Google Ads, blocking countries from accessing the entire site is not recommended. Learn More" msgstr "" #: views/blocking/blocking-create.php:153 msgid "Countries to Block" msgstr "" #: views/blocking/blocking-create.php:153 msgid "Pick from List" msgstr "" #: views/blocking/blocking-create.php:176 #: views/blocking/options-group-advanced-country.php:82 msgid "Put Geographic Protection In Place With Country Blocking" msgstr "" #: views/blocking/blocking-create.php:177 #: views/blocking/options-group-advanced-country.php:83 msgid "Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack." msgstr "" #: views/blocking/blocking-create.php:185 msgid "IP Address to Block" msgstr "" #: views/blocking/blocking-create.php:186 msgid "Enter an IP address" msgstr "" #: views/blocking/blocking-create.php:189 msgid "IP Address Range" msgstr "" #: views/blocking/blocking-create.php:190 msgid "e.g., 192.168.200.200 - 192.168.200.220 or 192.168.200.0/24" msgstr "" #: views/blocking/blocking-create.php:194 msgid "e.g., *.amazonaws.com or *.linode.com" msgstr "" #: views/blocking/blocking-create.php:197 msgid "Browser User Agent" msgstr "" #: views/blocking/blocking-create.php:198 msgid "e.g., *badRobot*, *MSIE*, or *browserSuffix" msgstr "" #: views/blocking/blocking-create.php:202 msgid "e.g., *badwebsite.example.com*" msgstr "" #: views/blocking/blocking-create.php:205 msgid "Block Reason" msgstr "" #: views/blocking/blocking-create.php:206 msgid "Enter a reason" msgstr "" #: views/blocking/blocking-create.php:212 msgid "Block Visitors Matching this Pattern" msgstr "" #: views/blocking/blocking-status.php:15 msgid "Manage global blocking options." msgstr "" #: views/blocking/blocking-status.php:24 msgid "Enable country blocking by upgrading to Premium." msgstr "" #: views/blocking/country-modal.php:24 msgid "Select Countries to Block from List" msgstr "" #: views/blocking/country-modal.php:28 msgid "Block All" msgstr "" #: views/blocking/country-modal.php:28 msgid "Unblock All" msgstr "" #: views/blocking/country-modal.php:75 msgid "Back" msgstr "" #: views/blocking/country-modal.php:75 msgid "Save" msgstr "" #: views/blocking/option-bypass-cookie.php:8 msgid "Bypass Cookie" msgstr "" #: views/blocking/option-bypass-cookie.php:12 msgid "If user who is allowed to access the site views the relative URL" msgstr "" #: views/blocking/option-bypass-cookie.php:13 msgid "/set-country-bypass/" msgstr "" #: views/blocking/option-bypass-cookie.php:16 msgid "then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country." msgstr "" #: views/blocking/option-bypass-redirect.php:8 msgid "Bypass Redirect" msgstr "" #: views/blocking/option-bypass-redirect.php:12 msgid "If user hits the relative URL" msgstr "" #: views/blocking/option-bypass-redirect.php:13 msgid "/bypassurl/" msgstr "" #: views/blocking/option-bypass-redirect.php:16 msgid "then redirect that user to" msgstr "" #: views/blocking/option-bypass-redirect.php:17 msgid "/page-name/" msgstr "" #: views/blocking/option-bypass-redirect.php:21 msgid "and set a cookie that will bypass all country blocking." msgstr "" #: views/blocking/options-group-advanced-country.php:22 msgid "Advanced Country Blocking Options" msgstr "" #: views/blocking/options-group-advanced-country.php:39 msgid "What to do when we block someone" msgstr "" #: views/blocking/options-group-advanced-country.php:49 msgid "URL to redirect blocked users to" msgstr "" #: views/blocking/options-group-advanced-country.php:50 msgid "Enter a full URL (e.g., http://example.com/blocked/)" msgstr "" #: views/common/license.php:15 msgid "Wordfence License Installation Successful" msgstr "" #: views/common/license.php:18 msgid "Wordfence License Installation Failed" msgstr "" #: views/common/license.php:21 msgid "Install Wordfence License" msgstr "" #: views/common/license.php:105 msgid "The Wordfence license provided has been installed." msgstr "" #. translators: WordPress admin URL #: views/common/license.php:106 msgid "Return to the Wordfence Admin Page" msgstr "" #: views/common/license.php:108 msgid "The Wordfence license could not be installed." msgstr "" #: views/common/license.php:110 msgid "Please enter the license to install." msgstr "" #: views/common/license.php:118 #: views/common/unsubscribe.php:127 msgid "Generated by Wordfence at " msgstr "" #: views/common/license.php:118 #: views/common/unsubscribe.php:127 msgid "Your computer's time: " msgstr "" #: views/common/page-title.php:18 msgid "Go:" msgstr "" #: views/common/page-title.php:20 msgid "Go to" msgstr "" #: views/common/status-tooltip.php:19 #: views/common/status-tooltip.php:30 msgid "How does Wordfence determine this?" msgstr "" #: views/common/status-tooltip.php:21 msgid "How do I get to 100%?" msgstr "" #: views/common/unsubscribe.php:16 msgid "Unsubscribe from Security Alerts" msgstr "" #: views/common/unsubscribe.php:19 msgid "Unsubscription Confirmation Sent" msgstr "" #: views/common/unsubscribe.php:22 msgid "Unsubscribe Successful" msgstr "" #: views/common/unsubscribe.php:25 msgid "Confirm Unsubscribe" msgstr "" #: views/common/unsubscribe.php:109 msgid "The email address provided has been unsubscribed from future alert emails." msgstr "" #: views/common/unsubscribe.php:111 msgid "If the email address provided was on the alert email list, it has been sent an unsubscribe link." msgstr "" #: views/common/unsubscribe.php:113 msgid "Please enter an email address to unsubscribe from alerts. If this email address exists on the alert email list, it will receive a confirmation link to unsubscribe." msgstr "" #. translators: Email address. #: views/common/unsubscribe.php:120 msgid "Please confirm the unsubscribe request for %s." msgstr "" #: views/dashboard/global-status.php:16 msgid "Wordfence Protection Activated" msgstr "" #: views/dashboard/option-howgetips.php:8 msgid "Let Wordfence use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites." msgstr "" #: views/dashboard/option-howgetips.php:8 msgid "(Recommended)" msgstr "" #: views/dashboard/option-howgetips.php:9 msgid "Use PHP's built in REMOTE_ADDR and don't use anything else. Very secure if this is compatible with your site." msgstr "" #: views/dashboard/option-howgetips.php:10 msgid "Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result." msgstr "" #: views/dashboard/option-howgetips.php:11 msgid "Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result." msgstr "" #: views/dashboard/option-howgetips.php:12 msgid "Use the Cloudflare \"CF-Connecting-IP\" HTTP header to get a visitor IP. Only use if you're using Cloudflare." msgstr "" #: views/dashboard/option-howgetips.php:32 msgid "Detected IP(s):" msgstr "" #: views/dashboard/option-howgetips.php:34 msgid "Edit trusted proxies" msgstr "" #: views/dashboard/option-howgetips.php:51 msgid "These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line." msgstr "" #: views/dashboard/options-group-alert.php:22 msgid "Email Alert Preferences" msgstr "" #: views/dashboard/options-group-alert.php:37 msgid "If you have automatic updates enabled (see above), you'll get an email when an update occurs." msgstr "" #: views/dashboard/options-group-alert.php:73 #: views/scanner/issue-base.php:32 #: views/scanner/issue-base.php:41 #: views/scanner/issue-base.php:104 msgid "Critical" msgstr "" #: views/dashboard/options-group-alert.php:74 #: views/scanner/issue-base.php:33 #: views/scanner/issue-base.php:42 #: views/scanner/issue-base.php:107 msgid "High" msgstr "" #: views/dashboard/options-group-alert.php:75 #: views/scanner/issue-base.php:34 #: views/scanner/issue-base.php:43 #: views/scanner/issue-base.php:110 msgid "Medium" msgstr "" #: views/dashboard/options-group-alert.php:76 #: views/scanner/issue-base.php:35 #: views/scanner/issue-base.php:44 #: views/scanner/issue-base.php:113 msgid "Low" msgstr "" #: views/dashboard/options-group-alert.php:79 msgid "Alert me with scan results of this severity level or greater:" msgstr "" #: views/dashboard/options-group-alert.php:112 msgid "Alert when someone is blocked from logging in for using a password found in a breach" msgstr "" #: views/dashboard/options-group-alert.php:178 msgid "0 means unlimited alerts will be sent." msgstr "" #: views/dashboard/options-group-dashboard.php:22 msgid "Dashboard Notification Options" msgstr "" #: views/dashboard/options-group-dashboard.php:106 msgid "Dashboard notifications will also be displayed for Security Alerts, Promotions, Blog Highlights, and Product Updates. These notifications can be disabled by upgrading to a premium license." msgstr "" #: views/dashboard/options-group-email-summary.php:22 msgid "Activity Report" msgstr "" #: views/dashboard/options-group-email-summary.php:38 msgid "Once a day" msgstr "" #: views/dashboard/options-group-email-summary.php:39 msgid "Once a week" msgstr "" #: views/dashboard/options-group-email-summary.php:40 msgid "Once a month" msgstr "" #: views/dashboard/options-group-general.php:22 msgid "General Wordfence Options" msgstr "" #: views/dashboard/options-group-general.php:31 msgid "Automatically updates Wordfence to the newest version within 24 hours of a new release." msgstr "" #: views/dashboard/options-group-general.php:34 msgid "Warning: You are running the LiteSpeed web server and Wordfence can't determine whether \"noabort\" is set. Please verify that the environmental variable \"noabort\" is set for the local site, or the server's global External Application Abort is set to \"No Abort\"." msgstr "" #: views/dashboard/options-group-general.php:36 msgid "Please read this article in our FAQ to make an important change that will ensure your site stability during an update." msgstr "" #: views/dashboard/options-group-general.php:56 msgid "Separate multiple addresses with commas" msgstr "" #: views/dashboard/options-group-general.php:108 msgid "Setting higher will reduce browser traffic but slow scan starts, live traffic & status updates." msgstr "" #: views/dashboard/options-group-general.php:133 msgid "Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page." msgstr "" #: views/dashboard/options-group-import.php:33 msgid "Export Wordfence Options" msgstr "" #: views/dashboard/options-group-import.php:56 msgid "Import Wordfence Options" msgstr "" #: views/dashboard/options-group-import.php:145 msgid "Export Successful" msgstr "" #: views/dashboard/options-group-import.php:146 msgid "We successfully exported your site options. To import your site options on another site, copy and paste the token below into the import text box on the destination site. Keep this token secret — it is like a password. If anyone else discovers the token it will allow them to import your options excluding your license." msgstr "" #: views/dashboard/options-group-import.php:155 msgid "Error during Export" msgstr "" #: views/dashboard/options-group-import.php:165 msgid "Import Successful" msgstr "" #: views/dashboard/options-group-import.php:166 msgid "We successfully imported the site options." msgstr "" #: views/dashboard/options-group-import.php:175 msgid "Error during Import" msgstr "" #: views/dashboard/options-group-license.php:22 msgid "Wordfence License" msgstr "" #: views/dashboard/options-group-license.php:31 msgid "Your Wordfence License" msgstr "" #: views/dashboard/options-group-license.php:44 msgid "License Status:" msgstr "" #: views/dashboard/options-group-license.php:47 msgid "Premium License already in use" msgstr "" #: views/dashboard/options-group-license.php:50 msgid "Premium License Active" msgstr "" #: views/dashboard/options-group-license.php:53 msgid "Premium License Expired" msgstr "" #: views/dashboard/options-group-license.php:56 msgid "Free License Active" msgstr "" #: views/dashboard/options-group-license.php:62 #: views/dashboard/options-group-license.php:64 #: views/dashboard/options-group-license.php:66 #: views/dashboard/options-group-license.php:68 msgid "Downgrade to a free license" msgstr "" #: views/dashboard/options-group-license.php:62 msgid "Reset Premium License" msgstr "" #: views/dashboard/options-group-license.php:64 #: views/dashboard/options-group-license.php:66 #: views/dashboard/options-group-license.php:68 msgid "Renew Premium License" msgstr "" #: views/dashboard/options-group-license.php:72 msgid "Install License" msgstr "" #: views/dashboard/options-group-license.php:148 msgid "Confirm Downgrade" msgstr "" #: views/dashboard/options-group-license.php:149 msgid "

Are you sure you want to downgrade your Wordfence Premium License? This will disable all Premium features and return you to the free version of Wordfence.

If autorenew is enabled for the current premium license, the license will renew at the next expiration date. If you would like to turn renewal off or assign the license to another site, log into wordfence.com to change it.

" msgstr "" #: views/dashboard/options-group-license.php:151 msgid "Downgrade" msgstr "" #: views/dashboard/options-group-view-customization.php:22 msgid "View Customization" msgstr "" #: views/dashboard/options-group-view-customization.php:36 msgid "Display \"All Options\" menu item" msgstr "" #: views/dashboard/options-group-view-customization.php:47 msgid "Display \"Blocking\" menu item" msgstr "" #: views/dashboard/options-group-view-customization.php:58 msgid "Display \"Live Traffic\" menu item" msgstr "" #: views/diagnostics/text.php:187 msgid "Setting Name" msgstr "" #: views/diagnostics/text.php:188 #: views/waf/options-group-advanced-firewall.php:138 msgid "Description" msgstr "" #: views/diagnostics/text.php:225 #: views/diagnostics/text.php:263 #: views/diagnostics/text.php:317 #: views/diagnostics/text.php:337 msgid "Name" msgstr "" #: views/diagnostics/text.php:381 msgid "Run Time" msgstr "" #: views/diagnostics/text.php:381 msgid "Job" msgstr "" #. translators: 1. WordPress table prefix. 2. Wordfence tables. #: views/diagnostics/text.php:455 msgid "Tables missing (prefix %1$s, %2$s): %s" msgstr "" #: views/gdpr/banner.php:8 msgid "Wordfence's terms of use and privacy policy have changed" msgstr "" #: views/gdpr/banner.php:9 #: views/gdpr/disabled-overlay.php:8 msgid "Review" msgstr "" #: views/gdpr/banner.php:50 msgid "We have updated our Terms of Use and Privacy Policy. To continue using Wordfence, you will need to review and accept the updated Terms of Use and Privacy Policy." msgstr "" #: views/gdpr/banner.php:51 msgid "You can log in to wordfence.com to accept the updated terms and privacy policy for all of your premium license keys at once." msgstr "" #: views/gdpr/banner.php:56 msgid "Agree" msgstr "" #: views/gdpr/disabled-overlay.php:7 msgid "Our Terms of Use and Privacy Policy have changed. To continue using Wordfence, you will need to review and accept the updated Terms of Use and Privacy Policy by clicking Review." msgstr "" #: views/onboarding/banner.php:8 msgid "Wordfence installation is incomplete" msgstr "" #: views/onboarding/disabled-overlay.php:7 msgid "To continue using Wordfence, you will need to review and accept the Terms of Use and Privacy Policy. Click Resume Installation to begin." msgstr "" #: views/onboarding/fresh-install.php:9 #: views/onboarding/fresh-install.php:35 msgid "Wordfence - Securing your WordPress Website" msgstr "" #. translators: Wordfence version. #: views/onboarding/fresh-install.php:10 msgid "You have successfully installed Wordfence %s" msgstr "" #. translators: Wordfence version. #: views/onboarding/fresh-install.php:11 #: views/onboarding/modal-final-attempt.php:18 #: views/onboarding/plugin-header.php:32 msgid "Please tell us where Wordfence should send you security alerts for your website:" msgstr "" #: views/onboarding/fresh-install.php:13 #: views/onboarding/modal-final-attempt.php:20 #: views/onboarding/plugin-header.php:34 msgid "We do not use this email address for any other purpose unless you opt-in to receive other mailings. You can turn off alerts in the options." msgstr "" #: views/onboarding/fresh-install.php:15 #: views/onboarding/modal-final-attempt.php:22 #: views/onboarding/plugin-header.php:36 msgid "Would you also like to join our WordPress security mailing list to receive WordPress security alerts and Wordfence news?" msgstr "" #: views/onboarding/fresh-install.php:21 #: views/onboarding/modal-final-attempt.php:28 #: views/onboarding/plugin-header.php:42 msgid "(Choose One)" msgstr "" #: views/onboarding/fresh-install.php:27 #: views/onboarding/modal-final-attempt.php:56 #: views/onboarding/plugin-header.php:58 msgid "By checking this box, I agree to the Wordfence terms and privacy policy" msgstr "" #. translators: Support URL. #: views/onboarding/fresh-install.php:28 #: views/onboarding/modal-final-attempt.php:57 #: views/onboarding/plugin-header.php:59 msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, click here." msgstr "" #: views/onboarding/fresh-install.php:36 #: views/onboarding/plugin-header.php:47 msgid "Enter Premium License Key" msgstr "" #: views/onboarding/fresh-install.php:37 #: views/onboarding/modal-final-attempt.php:34 #: views/onboarding/plugin-header.php:48 msgid "Enter your premium license key to enable real-time protection for your website." msgstr "" #: views/onboarding/fresh-install.php:38 #: views/onboarding/modal-final-attempt.php:36 #: views/onboarding/plugin-header.php:49 msgid "Enter Premium Key" msgstr "" #: views/onboarding/fresh-install.php:38 #: views/onboarding/modal-final-attempt.php:36 #: views/onboarding/plugin-header.php:49 msgid "Install" msgstr "" #: views/onboarding/fresh-install.php:40 #: views/onboarding/modal-final-attempt.php:38 #: views/onboarding/plugin-header.php:64 msgid "If you don't have one, you can purchase one now." msgstr "" #: views/onboarding/fresh-install.php:99 #: views/onboarding/plugin-header.php:135 msgid "Configuration Complete" msgstr "" #: views/onboarding/fresh-install.php:99 #: views/onboarding/plugin-header.php:135 msgid "Congratulations! Configuration is complete and Wordfence Premium is active on your website." msgstr "" #: views/onboarding/fresh-install.php:99 #: views/onboarding/fresh-install.php:131 #: views/onboarding/fresh-install.php:144 #: views/onboarding/plugin-header.php:135 #: views/onboarding/plugin-header.php:167 #: views/onboarding/plugin-header.php:180 msgid "Go To Dashboard" msgstr "" #: views/onboarding/fresh-install.php:144 #: views/onboarding/plugin-header.php:180 msgid "Free License Installed" msgstr "" #: views/onboarding/fresh-install.php:155 msgid "Error Installing License" msgstr "" #: views/onboarding/modal-final-attempt.php:10 #: views/onboarding/plugin-header.php:9 msgid "Please Complete Wordfence Installation" msgstr "" #: views/onboarding/modal-final-attempt.php:33 #: views/onboarding/plugin-header.php:24 msgid "Activate Premium" msgstr "" #: views/onboarding/plugin-header.php:18 msgid "Admin Contact Info" msgstr "" #: views/options/block-all-options-controls.php:39 #: views/options/block-controls.php:37 msgid "Restore Defaults" msgstr "" #: views/options/block-all-options-controls.php:39 #: views/options/block-controls.php:37 msgid "Cancel Changes" msgstr "" #: views/options/block-all-options-controls.php:39 #: views/options/block-controls.php:37 msgid "Save Changes" msgstr "" #: views/options/option-select.php:22 #: views/options/option-switch.php:34 #: views/options/option-text.php:30 #: views/options/option-textarea.php:37 #: views/options/option-toggled-boolean-switch.php:32 #: views/options/option-toggled-multiple.php:29 #: views/options/option-toggled-segmented.php:21 #: views/options/option-toggled-select.php:27 #: views/options/option-toggled-sub.php:44 #: views/options/option-toggled-sub.php:52 #: views/options/option-toggled-textarea.php:24 #: views/options/option-toggled.php:36 #: views/options/option-token.php:25 #: views/scanner/scan-scheduling.php:38 #: views/waf/option-rate-limit.php:27 msgid "Premium Feature" msgstr "" #: views/options/options-title.php:32 msgid "Expand All" msgstr "" #: views/options/options-title.php:32 msgid "Collapse All" msgstr "" #. translators: 1. Start date. 2. End date. #: views/reports/activity-report-email-inline.php:13 msgid "Wordfence activity from
%1$s to %2$s" msgstr "" #. translators: 1. Site URL. 2. Start date. 3. End date. #: views/reports/activity-report-email-inline.php:130 msgid "This email was sent from your website %1$s and is a summary of security related activity that Wordfence monitors for the period %2$s to %3$s." msgstr "" #: views/reports/activity-report-email-inline.php:134 msgid "NOTE: You are using the free version of Wordfence and are missing out on features like cellphone sign-in, country blocking and detecting if your site IP is sending spam. Click here to upgrade to Wordfence Premium now." msgstr "" #: views/reports/activity-report-email-inline.php:138 msgid "Top 10 IPs Blocked" msgstr "" #: views/reports/activity-report-email-inline.php:174 #: views/reports/activity-report-email-inline.php:228 #: views/reports/activity-report.php:34 #: views/reports/activity-report.php:78 msgid "(Unknown)" msgstr "" #: views/reports/activity-report-email-inline.php:183 #: views/reports/activity-report-email-inline.php:238 msgid "No data currently." msgstr "" #: views/reports/activity-report-email-inline.php:191 #: views/reports/activity-report.php:51 msgid "Update Blocked IPs" msgstr "" #: views/reports/activity-report-email-inline.php:196 msgid "Top 10 Countries Blocked" msgstr "" #: views/reports/activity-report-email-inline.php:202 #: views/reports/activity-report.php:62 msgid "Total IPs Blocked" msgstr "" #: views/reports/activity-report-email-inline.php:246 #: views/reports/activity-report.php:96 msgid "Update Blocked Countries" msgstr "" #: views/reports/activity-report-email-inline.php:251 msgid "Top 10 Failed Logins" msgstr "" #: views/reports/activity-report-email-inline.php:258 #: views/reports/activity-report.php:108 msgid "Existing User" msgstr "" #: views/reports/activity-report-email-inline.php:276 #: views/reports/activity-report.php:123 msgid "No failed logins yet." msgstr "" #: views/reports/activity-report-email-inline.php:284 #: views/reports/activity-report.php:131 msgid "Update Login Security Options" msgstr "" #: views/reports/activity-report-email-inline.php:289 msgid "Recently Blocked Attacks" msgstr "" #: views/reports/activity-report-email-inline.php:295 msgid "IP / Action" msgstr "" #: views/reports/activity-report-email-inline.php:316 msgid "No blocked attacks yet." msgstr "" #: views/reports/activity-report-email-inline.php:326 msgid "and %d additional attacks" msgstr "" #: views/reports/activity-report-email-inline.php:330 msgid "View Recent Traffic" msgstr "" #: views/reports/activity-report-email-inline.php:335 msgid "Recently Modified Files" msgstr "" #: views/reports/activity-report-email-inline.php:340 msgid "Modified" msgstr "" #: views/reports/activity-report-email-inline.php:361 msgid "This list may include WordPress core/plugin/theme updates, error logs, cache files, and other normal changes." msgstr "" #: views/reports/activity-report-email-inline.php:365 #: views/reports/activity-report.php:164 msgid "Updates Needed" msgstr "" #: views/reports/activity-report-email-inline.php:373 #: views/reports/activity-report.php:172 msgid "Core" msgstr "" #. translators: WordPress version. #: views/reports/activity-report-email-inline.php:375 #: views/reports/activity-report.php:174 msgid "A new version of WordPress (v%s) is available." msgstr "" #: views/reports/activity-report-email-inline.php:379 #: views/reports/activity-report.php:178 msgid "Plugins" msgstr "" #. translators: Plugin name. #. translators: Plugin version. #: views/reports/activity-report-email-inline.php:386 #: views/reports/activity-report.php:185 msgid "A new version of the plugin \"%s\" is available." msgstr "" #. translators: Plugin name. #. translators: Theme name. #: views/reports/activity-report-email-inline.php:386 #: views/reports/activity-report-email-inline.php:399 msgid "This update includes security-related fixes." msgstr "" #. translators: Theme name. #. translators: Theme version. #: views/reports/activity-report-email-inline.php:399 #: views/reports/activity-report.php:198 msgid "A new version of the theme \"%s\" is available." msgstr "" #: views/reports/activity-report-email-inline.php:407 #: views/reports/activity-report.php:205 msgid "Update Now" msgstr "" #: views/reports/activity-report-email-inline.php:411 #: views/reports/activity-report.php:207 msgid "No updates are available at this time." msgstr "" #. translators: 1. Site URL. 2. WordPress admin panel URL. 3. WordPress admin panel URL. #: views/reports/activity-report-email-inline.php:418 msgid "If you would like to sign-in to %1$s please click here now. You can change the frequency of this email or turn it on and off by visiting your Wordfence options page." msgstr "" #. translators: Number of IPs. #: views/reports/activity-report.php:9 msgid "Top %d IPs Blocked" msgstr "" #: views/reports/activity-report.php:43 msgid "No IPs blocked yet." msgstr "" #. translators: Number of countries. #: views/reports/activity-report.php:56 msgid "Top %d Countries Blocked" msgstr "" #: views/reports/activity-report.php:88 msgid "No requests blocked yet." msgstr "" #. translators: Number of failed logins. #: views/reports/activity-report.php:101 msgid "Top %d Failed Logins" msgstr "" #. translators: Seconds with millisecond precision. #: views/reports/activity-report.php:210 msgid "Generated in %.4f seconds" msgstr "" #: views/scanner/issue-base.php:31 msgid "Issue Found " msgstr "" #: views/scanner/issue-base.php:40 msgid "Found " msgstr "" #: views/scanner/issue-base.php:52 msgid "New" msgstr "" #: views/scanner/issue-base.php:52 #: views/scanner/issue-base.php:98 msgid "Ignored" msgstr "" #: views/scanner/issue-base.php:53 msgid "Issue First Detected" msgstr "" #: views/scanner/issue-base.php:53 msgid "ago" msgstr "" #. translators: Localized date. #: views/scanner/issue-base.php:100 msgid "Issue Found: %s" msgstr "" #. translators: Severity level. #: views/scanner/issue-base.php:120 msgid "Severity: %s" msgstr "" #: views/scanner/issue-checkGSB.php:10 #: views/scanner/issue-checkHowGetIPs.php:10 #: views/scanner/issue-checkSpamIP.php:10 #: views/scanner/issue-configReadable.php:10 #: views/scanner/issue-control-ignore.php:7 #: views/scanner/issue-diskSpace.php:10 #: views/scanner/issue-geoipSupport.php:10 #: views/scanner/issue-publiclyAccessible.php:10 #: views/scanner/issue-skippedPaths.php:14 #: views/scanner/issue-spamvertizeCheck.php:10 #: views/scanner/issue-suspiciousAdminUsers.php:10 #: views/scanner/issue-timelimit.php:10 #: views/scanner/issue-wafStatus.php:10 #: views/scanner/issue-wfPluginAbandoned.php:10 #: views/scanner/issue-wfPluginRemoved.php:10 #: views/scanner/issue-wfPluginVulnerable.php:10 #: views/scanner/issue-wfUpgrade.php:10 msgid "Ignore" msgstr "" #: views/scanner/issue-checkGSB.php:12 #: views/scanner/issue-checkGSB.php:21 #: views/scanner/issue-commentBadURL.php:13 #: views/scanner/issue-commentBadURL.php:28 #: views/scanner/issue-database.php:13 #: views/scanner/issue-database.php:25 #: views/scanner/issue-file.php:14 #: views/scanner/issue-file.php:30 #: views/scanner/issue-knownfile.php:14 #: views/scanner/issue-knownfile.php:29 #: views/scanner/issue-optionBadURL.php:13 #: views/scanner/issue-optionBadURL.php:27 #: views/scanner/issue-postBadURL.php:13 #: views/scanner/issue-postBadURL.php:28 msgid "Bad URL" msgstr "" #: views/scanner/issue-checkGSB.php:14 #: views/scanner/issue-checkGSB.php:23 #: views/scanner/issue-checkHowGetIPs.php:12 #: views/scanner/issue-checkHowGetIPs.php:20 #: views/scanner/issue-checkSpamIP.php:12 #: views/scanner/issue-checkSpamIP.php:19 #: views/scanner/issue-commentBadURL.php:16 #: views/scanner/issue-commentBadURL.php:31 #: views/scanner/issue-configReadable.php:14 #: views/scanner/issue-configReadable.php:25 #: views/scanner/issue-control-show-details.php:4 #: views/scanner/issue-coreUnknown.php:11 #: views/scanner/issue-coreUnknown.php:19 #: views/scanner/issue-database.php:15 #: views/scanner/issue-database.php:27 #: views/scanner/issue-diskSpace.php:14 #: views/scanner/issue-diskSpace.php:23 #: views/scanner/issue-easyPassword.php:16 #: views/scanner/issue-easyPassword.php:27 #: views/scanner/issue-file.php:16 #: views/scanner/issue-file.php:32 #: views/scanner/issue-geoipSupport.php:12 #: views/scanner/issue-geoipSupport.php:19 #: views/scanner/issue-knownfile.php:16 #: views/scanner/issue-knownfile.php:31 #: views/scanner/issue-optionBadURL.php:15 #: views/scanner/issue-optionBadURL.php:29 #: views/scanner/issue-postBadTitle.php:15 #: views/scanner/issue-postBadTitle.php:29 #: views/scanner/issue-postBadURL.php:16 #: views/scanner/issue-postBadURL.php:31 #: views/scanner/issue-publiclyAccessible.php:14 #: views/scanner/issue-publiclyAccessible.php:25 #: views/scanner/issue-skippedPaths.php:16 #: views/scanner/issue-skippedPaths.php:24 #: views/scanner/issue-spamvertizeCheck.php:12 #: views/scanner/issue-spamvertizeCheck.php:19 #: views/scanner/issue-suspiciousAdminUsers.php:12 #: views/scanner/issue-suspiciousAdminUsers.php:21 #: views/scanner/issue-timelimit.php:12 #: views/scanner/issue-timelimit.php:19 #: views/scanner/issue-wafStatus.php:14 #: views/scanner/issue-wafStatus.php:23 #: views/scanner/issue-wfPluginAbandoned.php:16 #: views/scanner/issue-wfPluginAbandoned.php:32 #: views/scanner/issue-wfPluginRemoved.php:15 #: views/scanner/issue-wfPluginRemoved.php:29 #: views/scanner/issue-wfPluginUpgrade.php:16 #: views/scanner/issue-wfPluginUpgrade.php:32 #: views/scanner/issue-wfPluginVulnerable.php:15 #: views/scanner/issue-wfPluginVulnerable.php:30 #: views/scanner/issue-wfThemeUpgrade.php:16 #: views/scanner/issue-wfThemeUpgrade.php:31 #: views/scanner/issue-wfUpgrade.php:15 #: views/scanner/issue-wfUpgrade.php:28 #: views/scanner/issue-wpscan_directoryList.php:14 #: views/scanner/issue-wpscan_directoryList.php:25 #: views/scanner/issue-wpscan_fullPathDiscl.php:14 #: views/scanner/issue-wpscan_fullPathDiscl.php:25 msgid "Details" msgstr "" #: views/scanner/issue-checkGSB.php:17 #: views/scanner/issue-checkHowGetIPs.php:16 #: views/scanner/issue-checkSpamIP.php:15 #: views/scanner/issue-commentBadURL.php:23 #: views/scanner/issue-configReadable.php:19 #: views/scanner/issue-coreUnknown.php:15 #: views/scanner/issue-database.php:20 #: views/scanner/issue-diskSpace.php:17 #: views/scanner/issue-easyPassword.php:19 #: views/scanner/issue-file.php:22 #: views/scanner/issue-geoipSupport.php:15 #: views/scanner/issue-knownfile.php:22 #: views/scanner/issue-optionBadURL.php:22 #: views/scanner/issue-postBadTitle.php:22 #: views/scanner/issue-postBadURL.php:23 #: views/scanner/issue-publiclyAccessible.php:19 #: views/scanner/issue-skippedPaths.php:20 #: views/scanner/issue-spamvertizeCheck.php:15 #: views/scanner/issue-suspiciousAdminUsers.php:17 #: views/scanner/issue-timelimit.php:15 #: views/scanner/issue-wafStatus.php:17 #: views/scanner/issue-wfPluginAbandoned.php:23 #: views/scanner/issue-wfPluginRemoved.php:21 #: views/scanner/issue-wfPluginUpgrade.php:23 #: views/scanner/issue-wfPluginVulnerable.php:22 #: views/scanner/issue-wfThemeUpgrade.php:22 #: views/scanner/issue-wfUpgrade.php:20 #: views/scanner/issue-wpscan_directoryList.php:19 #: views/scanner/issue-wpscan_fullPathDiscl.php:19 msgid "Mark as Fixed" msgstr "" #: views/scanner/issue-checkHowGetIPs.php:15 msgid "Use Recommended Value" msgstr "" #: views/scanner/issue-checkSpamIP.php:8 #: views/scanner/issue-spamvertizeCheck.php:8 msgid "Spam" msgstr "" #: views/scanner/issue-commentBadURL.php:12 #: views/scanner/issue-commentBadURL.php:27 msgid "Author" msgstr "" #: views/scanner/issue-commentBadURL.php:14 #: views/scanner/issue-commentBadURL.php:29 #: views/scanner/issue-postBadTitle.php:13 #: views/scanner/issue-postBadTitle.php:27 #: views/scanner/issue-postBadURL.php:14 #: views/scanner/issue-postBadURL.php:29 msgid "Posted on" msgstr "" #: views/scanner/issue-commentBadURL.php:18 #: views/scanner/issue-commentBadURL.php:33 #: views/scanner/issue-optionBadURL.php:17 #: views/scanner/issue-optionBadURL.php:31 #: views/scanner/issue-postBadTitle.php:17 #: views/scanner/issue-postBadTitle.php:31 #: views/scanner/issue-postBadURL.php:18 #: views/scanner/issue-postBadURL.php:33 msgid "Multisite Blog ID" msgstr "" #: views/scanner/issue-commentBadURL.php:19 #: views/scanner/issue-commentBadURL.php:34 #: views/scanner/issue-optionBadURL.php:18 #: views/scanner/issue-optionBadURL.php:32 #: views/scanner/issue-postBadTitle.php:18 #: views/scanner/issue-postBadTitle.php:32 #: views/scanner/issue-postBadURL.php:19 #: views/scanner/issue-postBadURL.php:34 msgid "Multisite Blog Domain" msgstr "" #: views/scanner/issue-commentBadURL.php:20 #: views/scanner/issue-commentBadURL.php:35 #: views/scanner/issue-optionBadURL.php:19 #: views/scanner/issue-optionBadURL.php:33 #: views/scanner/issue-postBadTitle.php:19 #: views/scanner/issue-postBadTitle.php:33 #: views/scanner/issue-postBadURL.php:20 #: views/scanner/issue-postBadURL.php:35 msgid "Multisite Blog Path" msgstr "" #: views/scanner/issue-configReadable.php:8 msgid "Publicly Accessible Config/Backup/Log" msgstr "" #: views/scanner/issue-configReadable.php:17 #: views/scanner/issue-coreUnknown.php:13 #: views/scanner/issue-file.php:19 #: views/scanner/issue-knownfile.php:19 #: views/scanner/issue-publiclyAccessible.php:17 #: views/scanner/issue-wpscan_directoryList.php:17 #: views/scanner/issue-wpscan_fullPathDiscl.php:17 msgid "View File" msgstr "" #: views/scanner/issue-configReadable.php:18 #: views/scanner/issue-coreUnknown.php:14 #: views/scanner/issue-file.php:21 #: views/scanner/issue-knownfile.php:21 #: views/scanner/issue-publiclyAccessible.php:18 #: views/scanner/issue-wpscan_directoryList.php:18 #: views/scanner/issue-wpscan_fullPathDiscl.php:18 msgid "Delete File" msgstr "" #: views/scanner/issue-control-edit-comment.php:4 #: views/scanner/issue-control-edit-post.php:4 #: views/scanner/issue-control-edit-user.php:4 msgid "Edit" msgstr "" #: views/scanner/issue-control-hide-file.php:4 msgid "Hide File" msgstr "" #: views/scanner/issue-control-ignore.php:7 msgid "Stop Ignoring" msgstr "" #: views/scanner/issue-control-repair.php:4 msgid "Repair" msgstr "" #: views/scanner/issue-coreUnknown.php:8 msgid "Unknown Core File" msgstr "" #: views/scanner/issue-coreUnknown.php:10 msgid "Always Ignore Version" msgstr "" #: views/scanner/issue-coreUnknown.php:10 msgid "Ignore Until Version Changes" msgstr "" #: views/scanner/issue-database.php:8 msgid "Option" msgstr "" #: views/scanner/issue-database.php:10 msgid "Ignore Value" msgstr "" #: views/scanner/issue-database.php:10 #: views/scanner/issue-optionBadURL.php:10 msgid "Ignore Option" msgstr "" #: views/scanner/issue-database.php:12 #: views/scanner/issue-database.php:24 #: views/scanner/issue-optionBadURL.php:12 #: views/scanner/issue-optionBadURL.php:26 msgid "Option Name" msgstr "" #: views/scanner/issue-database.php:18 msgid "View Option" msgstr "" #: views/scanner/issue-database.php:19 msgid "Delete Option" msgstr "" #: views/scanner/issue-diskSpace.php:8 msgid "Disk Space" msgstr "" #: views/scanner/issue-diskSpace.php:12 #: views/scanner/issue-diskSpace.php:21 msgid "Space Remaining" msgstr "" #: views/scanner/issue-easyPassword.php:8 msgid "Insecure Password" msgstr "" #: views/scanner/issue-easyPassword.php:10 msgid "Ignore All for User" msgstr "" #: views/scanner/issue-easyPassword.php:10 msgid "Ignore Only this Password" msgstr "" #: views/scanner/issue-easyPassword.php:12 #: views/scanner/issue-easyPassword.php:23 msgid "Login Name" msgstr "" #: views/scanner/issue-easyPassword.php:13 #: views/scanner/issue-easyPassword.php:24 msgid "User Email" msgstr "" #: views/scanner/issue-easyPassword.php:14 #: views/scanner/issue-easyPassword.php:25 msgid "Full Name" msgstr "" #: views/scanner/issue-file.php:10 #: views/scanner/issue-knownfile.php:10 #: views/scanner/issue-postBadTitle.php:10 #: views/scanner/issue-postBadURL.php:10 msgid "Always Ignore" msgstr "" #: views/scanner/issue-file.php:10 #: views/scanner/issue-knownfile.php:10 msgid "Ignore Until File Changes" msgstr "" #: views/scanner/issue-file.php:12 #: views/scanner/issue-file.php:26 #: views/scanner/issue-knownfile.php:12 #: views/scanner/issue-knownfile.php:26 msgid "Filename" msgstr "" #: views/scanner/issue-file.php:13 #: views/scanner/issue-file.php:27 #: views/scanner/issue-file.php:28 #: views/scanner/issue-file.php:29 #: views/scanner/issue-knownfile.php:13 #: views/scanner/issue-knownfile.php:27 #: views/scanner/issue-knownfile.php:28 msgid "File Type" msgstr "" #: views/scanner/issue-file.php:13 msgid "WordPress Configuration File" msgstr "" #: views/scanner/issue-file.php:13 #: views/scanner/issue-knownfile.php:13 msgid "Not a core, theme, or plugin file from wordpress.org" msgstr "" #: views/scanner/issue-file.php:16 msgid "This is your main configuration file and cannot be deleted. It must be cleaned manually." msgstr "" #: views/scanner/issue-file.php:20 #: views/scanner/issue-knownfile.php:20 msgid "View Differences" msgstr "" #: views/scanner/issue-geoipSupport.php:8 msgid "Server Update" msgstr "" #: views/scanner/issue-optionBadURL.php:10 msgid "Ignore URL" msgstr "" #: views/scanner/issue-postBadTitle.php:8 msgid "Post" msgstr "" #: views/scanner/issue-postBadTitle.php:10 msgid "Ignore Only this Title" msgstr "" #: views/scanner/issue-postBadTitle.php:12 #: views/scanner/issue-postBadTitle.php:26 #: views/scanner/issue-postBadURL.php:12 #: views/scanner/issue-postBadURL.php:27 msgid "Title" msgstr "" #: views/scanner/issue-postBadURL.php:10 msgid "Ignore this URL" msgstr "" #: views/scanner/issue-publiclyAccessible.php:8 msgid "Quarantined File" msgstr "" #: views/scanner/issue-skippedPaths.php:12 msgid "Skipped Paths" msgstr "" #: views/scanner/issue-skippedPaths.php:19 msgid "Go To Option" msgstr "" #: views/scanner/issue-suspiciousAdminUsers.php:8 msgid "Unknown Administrator" msgstr "" #: views/scanner/issue-suspiciousAdminUsers.php:15 msgid "Delete User" msgstr "" #: views/scanner/issue-suspiciousAdminUsers.php:16 msgid "Revoke Capabilities" msgstr "" #: views/scanner/issue-timelimit.php:8 msgid "Time Limit" msgstr "" #: views/scanner/issue-wafStatus.php:8 msgid "WAF Status" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:8 msgid "Plugin Abandoned" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:12 #: views/scanner/issue-wfPluginAbandoned.php:28 #: views/scanner/issue-wfPluginRemoved.php:12 #: views/scanner/issue-wfPluginRemoved.php:26 #: views/scanner/issue-wfPluginUpgrade.php:12 #: views/scanner/issue-wfPluginUpgrade.php:28 #: views/scanner/issue-wfPluginVulnerable.php:12 #: views/scanner/issue-wfPluginVulnerable.php:27 msgid "Plugin Name" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:13 #: views/scanner/issue-wfPluginAbandoned.php:29 #: views/scanner/issue-wfPluginRemoved.php:13 #: views/scanner/issue-wfPluginRemoved.php:27 #: views/scanner/issue-wfPluginUpgrade.php:13 #: views/scanner/issue-wfPluginUpgrade.php:29 #: views/scanner/issue-wfPluginVulnerable.php:13 #: views/scanner/issue-wfPluginVulnerable.php:28 msgid "Current Plugin Version" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:14 #: views/scanner/issue-wfPluginAbandoned.php:30 msgid "Last Updated" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:16 #: views/scanner/issue-wfPluginAbandoned.php:33 msgid "Plugin has unpatched security issues." msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:18 #: views/scanner/issue-wfPluginAbandoned.php:35 #: views/scanner/issue-wfPluginRemoved.php:17 #: views/scanner/issue-wfPluginRemoved.php:31 #: views/scanner/issue-wfPluginUpgrade.php:18 #: views/scanner/issue-wfPluginUpgrade.php:35 #: views/scanner/issue-wfPluginVulnerable.php:17 #: views/scanner/issue-wfPluginVulnerable.php:32 msgid "Plugin URL" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:19 #: views/scanner/issue-wfPluginAbandoned.php:36 #: views/scanner/issue-wfPluginUpgrade.php:36 #: views/scanner/issue-wfPluginVulnerable.php:18 #: views/scanner/issue-wfPluginVulnerable.php:33 msgid "Repository URL" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:24 #: views/scanner/issue-wfPluginRemoved.php:22 #: views/scanner/issue-wfPluginVulnerable.php:23 msgid "Manage Plugins" msgstr "" #: views/scanner/issue-wfPluginAbandoned.php:33 #: views/scanner/issue-wfPluginUpgrade.php:33 #: views/scanner/issue-wfThemeUpgrade.php:32 #: views/scanner/issue-wfUpgrade.php:29 msgid "Vulnerability Status" msgstr "" #: views/scanner/issue-wfPluginRemoved.php:8 msgid "Plugin Removed" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:8 msgid "Plugin Upgrade" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:10 msgid "Ignore Update" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:14 #: views/scanner/issue-wfPluginUpgrade.php:30 msgid "New Plugin Version" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:16 #: views/scanner/issue-wfThemeUpgrade.php:16 #: views/scanner/issue-wfUpgrade.php:15 msgid "Click here to update now" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:19 msgid "Changelog" msgstr "" #: views/scanner/issue-wfPluginUpgrade.php:24 #: views/scanner/issue-wfThemeUpgrade.php:23 #: views/scanner/issue-wfUpgrade.php:21 msgid "View Updates" msgstr "" #: views/scanner/issue-wfPluginVulnerable.php:8 msgid "Plugin Vulnerable" msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:8 msgid "Theme Upgrade" msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:10 msgid "Ignore " msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:12 #: views/scanner/issue-wfThemeUpgrade.php:27 msgid "Theme Name" msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:13 #: views/scanner/issue-wfThemeUpgrade.php:28 msgid "Current Theme Version" msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:14 #: views/scanner/issue-wfThemeUpgrade.php:29 msgid "New Theme Version" msgstr "" #: views/scanner/issue-wfThemeUpgrade.php:18 #: views/scanner/issue-wfThemeUpgrade.php:34 msgid "Theme URL" msgstr "" #: views/scanner/issue-wfUpgrade.php:8 msgid "Core Upgrade" msgstr "" #: views/scanner/issue-wfUpgrade.php:12 #: views/scanner/issue-wfUpgrade.php:25 msgid "Current WordPress Version" msgstr "" #: views/scanner/issue-wfUpgrade.php:13 #: views/scanner/issue-wfUpgrade.php:26 msgid "New WordPress Version" msgstr "" #: views/scanner/issue-wpscan_directoryList.php:8 msgid "Directory Listing Enabled" msgstr "" #: views/scanner/option-scan-signatures.php:27 msgid "Add Additional Signatures" msgstr "" #: views/scanner/options-group-advanced.php:23 msgid "Advanced Scan Options" msgstr "" #: views/scanner/options-group-advanced.php:35 msgid "Exclude files from scan that match these wildcard patterns (one per line)" msgstr "" #: views/scanner/options-group-advanced.php:46 msgid "Additional scan signatures (one per line)" msgstr "" #: views/scanner/options-group-basic.php:23 msgid "Basic Scan Type Options" msgstr "" #: views/scanner/options-group-general.php:23 msgid "General Options" msgstr "" #: views/scanner/options-group-general.php:32 #: views/scanner/options-group-general.php:33 #: views/scanner/options-group-general.php:34 msgid "Reputation check" msgstr "" #: views/scanner/options-group-general.php:33 msgid "Check if this website is being \"Spamvertised\"" msgstr "" #: views/scanner/options-group-performance.php:23 msgid "Performance Options" msgstr "" #: views/scanner/options-group-performance.php:33 msgid "0 or empty means unlimited issues will be sent" msgstr "" #. translators: Time until. #: views/scanner/options-group-performance.php:34 msgid "0 or empty means the default of %s will be used" msgstr "" #. translators: Time until. #: views/scanner/options-group-performance.php:35 msgid "Memory size in megabytes" msgstr "" #: views/scanner/options-group-performance.php:36 msgid "Maximum execution time for each scan stage " msgstr "" #. translators: PHP max execution time (number). #: views/scanner/options-group-performance.php:36 msgid "0 for default. Must be %d or greater and 10-20 or higher is recommended for most servers" msgstr "" #: views/scanner/options-group-scan-schedule.php:23 msgid "Scan Scheduling" msgstr "" #: views/scanner/scan-failed.php:18 msgid "Scan Failed" msgstr "" #: views/scanner/scan-failed.php:21 msgid "The error returned was:" msgstr "" #: views/scanner/scan-progress-detailed.php:16 msgid "Email activity log" msgstr "" #: views/scanner/scan-progress-detailed.php:16 msgid "View full log" msgstr "" #: views/scanner/scan-progress-detailed.php:16 msgid "Hide log" msgstr "" #: views/scanner/scan-progress-detailed.php:16 msgid "Show log" msgstr "" #: views/scanner/scan-progress-element.php:59 msgid "Upgrade" msgstr "" #: views/scanner/scan-progress.php:18 msgid "Spamvertising Checks" msgstr "" #: views/scanner/scan-progress.php:25 msgid "Spam Check" msgstr "" #: views/scanner/scan-progress.php:32 msgid "Blocklist Check" msgstr "" #: views/scanner/scan-progress.php:39 msgid "Server State" msgstr "" #: views/scanner/scan-progress.php:46 msgid "File Changes" msgstr "" #: views/scanner/scan-progress.php:53 msgid "Malware Scan" msgstr "" #: views/scanner/scan-progress.php:60 msgid "Content Safety" msgstr "" #: views/scanner/scan-progress.php:67 msgid "Public Files" msgstr "" #: views/scanner/scan-progress.php:74 msgid "Password Strength" msgstr "" #: views/scanner/scan-progress.php:81 msgid "Vulnerability Scan" msgstr "" #: views/scanner/scan-progress.php:88 msgid "User & Option Audit" msgstr "" #: views/scanner/scan-results.php:16 msgid "Results Found" msgstr "" #: views/scanner/scan-results.php:17 msgid "Ignored Results" msgstr "" #: views/scanner/scan-results.php:30 msgid "Delete All Deletable Files" msgstr "" #: views/scanner/scan-results.php:30 msgid "Repair All Repairable Files" msgstr "" #: views/scanner/scan-results.php:39 #: views/scanner/scan-results.php:71 msgid "Posts, Comments, & Files" msgstr "" #: views/scanner/scan-results.php:45 #: views/scanner/scan-results.php:77 msgid "Themes & Plugins" msgstr "" #: views/scanner/scan-results.php:51 #: views/scanner/scan-results.php:83 msgid "Users Checked" msgstr "" #: views/scanner/scan-results.php:57 #: views/scanner/scan-results.php:89 msgid "URLs Checked" msgstr "" #: views/scanner/scan-results.php:63 #: views/scanner/scan-results.php:95 msgid "Results Found" msgstr "" #: views/scanner/scan-scheduling.php:29 msgid "Let Wordfence choose when to scan my site (recommended)" msgstr "" #: views/scanner/scan-scheduling.php:38 msgid "Manually schedule scans" msgstr "" #: views/scanner/scan-scheduling.php:44 msgid "Once Daily" msgstr "" #: views/scanner/scan-scheduling.php:45 msgid "Twice Daily" msgstr "" #: views/scanner/scan-scheduling.php:46 msgid "Every Other Day" msgstr "" #: views/scanner/scan-scheduling.php:47 msgid "Weekdays" msgstr "" #: views/scanner/scan-scheduling.php:48 msgid "Weekends" msgstr "" #: views/scanner/scan-scheduling.php:49 msgid "Odd Days & Weekends" msgstr "" #: views/scanner/scan-scheduling.php:190 msgid "Use preferred start time" msgstr "" #: views/scanner/scan-scheduling.php:190 msgid "Start time" msgstr "" #: views/scanner/scan-scheduling.php:202 #: views/scanner/scan-scheduling.php:242 msgid "AM" msgstr "" #: views/scanner/scan-scheduling.php:205 #: views/scanner/scan-scheduling.php:253 msgid "PM" msgstr "" #: views/scanner/scan-scheduling.php:223 msgid "Monday" msgstr "" #: views/scanner/scan-scheduling.php:224 msgid "Tuesday" msgstr "" #: views/scanner/scan-scheduling.php:225 msgid "Wednesday" msgstr "" #: views/scanner/scan-scheduling.php:226 msgid "Thursday" msgstr "" #: views/scanner/scan-scheduling.php:227 msgid "Friday" msgstr "" #: views/scanner/scan-scheduling.php:228 msgid "Saturday" msgstr "" #: views/scanner/scan-scheduling.php:229 msgid "Sunday" msgstr "" #: views/scanner/scan-starter.php:13 msgid "Start New Scan" msgstr "" #: views/scanner/scan-starter.php:14 msgid "Stop Scan" msgstr "" #: views/scanner/scan-starter.php:29 msgid "Scan Stopping" msgstr "" #: views/scanner/scan-starter.php:29 msgid "Stop Failed" msgstr "" #: views/scanner/scan-starter.php:29 msgid "A termination request has been sent to stop any running scans." msgstr "" #: views/scanner/scan-starter.php:29 msgid "We failed to send a termination request." msgstr "" #: views/scanner/scan-type.php:20 msgid "Limited Scan" msgstr "" #: views/scanner/scan-type.php:21 msgid "For entry-level hosting plans. Provides limited detection capability with very low resource utilization." msgstr "" #: views/scanner/scan-type.php:26 msgid "Standard Scan" msgstr "" #: views/scanner/scan-type.php:27 msgid "Our recommendation for all websites. Provides the best detection capability in the industry." msgstr "" #: views/scanner/scan-type.php:33 msgid "For site owners who think they may have been hacked. More thorough but may produce false positives." msgstr "" #: views/scanner/scan-type.php:38 msgid "Custom Scan" msgstr "" #: views/scanner/scan-type.php:39 msgid "Selected automatically when General Options have been customized for this website." msgstr "" #: views/scanner/scanner-status.php:16 msgid "Wordfence Scan & Premium Enabled" msgstr "" #: views/scanner/scanner-status.php:23 msgid "Wordfence Scan Deactivated" msgstr "" #: views/scanner/scanner-status.php:24 msgid "A Wordfence scan examines all files, posts, pages, and comments on your WordPress website looking for malware, known malicious URLs, and known patterns of infections. It also does several other reputation and server checks." msgstr "" #: views/scanner/scanner-status.php:26 msgid "Enable Automatic Scans" msgstr "" #: views/scanner/scanner-status.php:46 msgid "Wordfence Scan Enabled" msgstr "" #: views/scanner/scanner-status.php:54 msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection." msgstr "" #: views/scanner/scanner-status.php:60 #: views/waf/firewall-status.php:73 msgid "Premium Protection Enabled" msgstr "" #: views/scanner/site-cleaning-beta-sigs.php:13 #: views/scanner/site-cleaning-high-sense.php:13 msgid "The results of your scan may indicate that you could benefit from Wordfence Site Cleaning" msgstr "" #: views/scanner/site-cleaning-beta-sigs.php:14 msgid "Since you have the beta threat defense feed enabled, there is a high likelihood that your results could include false positives. If you think you have indeed been hacked, our team of security experts can help." msgstr "" #: views/scanner/site-cleaning-beta-sigs.php:16 #: views/scanner/site-cleaning-high-sense.php:16 #: views/scanner/site-cleaning.php:16 msgid "Get Help" msgstr "" #: views/scanner/site-cleaning-bottom.php:12 msgid "Need help from the WordPress security experts?" msgstr "" #: views/scanner/site-cleaning-bottom.php:13 msgid "Wordfence security analysts can help you tighten site security or remove an active infection for good. All security services include a detailed report and a Wordfence Premium license, with a 1-year clean site guarantee." msgstr "" #: views/scanner/site-cleaning-bottom.php:15 msgid "Audit My Site Security" msgstr "" #: views/scanner/site-cleaning-bottom.php:17 msgid "Clean My Hacked Site" msgstr "" #: views/scanner/site-cleaning-high-sense.php:14 msgid "Since you have High Sensitivity scanning enabled, there is a very high likelihood that your results will include false positives. If you think you have indeed been hacked, our team of security experts can help." msgstr "" #: views/scanner/site-cleaning.php:13 msgid "Need help with a hacked website?" msgstr "" #: views/scanner/site-cleaning.php:14 msgid "Our team of security experts will clean the infection and remove malicious content. Once your site is restored we will provide a detailed report of our findings." msgstr "" #: views/scanner/site-cleaning.php:14 msgid "Includes a 1-year Wordfence Premium license." msgstr "" #: views/tools/options-group-2fa.php:24 msgid "Two-Factor Authentication Options" msgstr "" #. translators: Support URL. #: views/tools/options-group-2fa.php:51 msgid "Require Cellphone Sign-in for all Administrators
Note: This setting requires at least one administrator to have Cellphone Sign-in enabled. On multisite, this option applies only to super admins." msgstr "" #. translators: Support URL. #: views/tools/options-group-2fa.php:63 msgid "Enable Separate Prompt for Two-Factor Code
Note: This setting changes the behavior for obtaining the two-factor authentication code from using the password field to showing a separate prompt. If your theme overrides the default login page, you may not be able to use this option." msgstr "" #. translators: Support URL. #: views/tools/options-group-2fa.php:64 msgid "
This setting will be ignored because the PHP configuration option output_buffering is off." msgstr "" #: views/tools/options-group-live-traffic.php:32 msgid "Live Traffic Options" msgstr "" #: views/tools/options-group-live-traffic.php:40 msgid "These options let you choose which traffic to log and to ignore certain types of visitors, based on their level of access, usernames, IP address, or browser type. If you run a high-traffic website where it is not feasible to see your visitors in real-time, simply change the Traffic logging mode to \"Security Only.\"" msgstr "" #: views/tools/options-group-live-traffic.php:49 msgid "Are you sure you want to restore the default Live Traffic settings? This will undo any custom changes you have made to the options on this page." msgstr "" #: views/tools/options-group-live-traffic.php:61 msgid "Traffic logging mode" msgstr "" #: views/tools/options-group-live-traffic.php:63 msgid "Security Only" msgstr "" #: views/tools/options-group-live-traffic.php:64 msgid "All Traffic" msgstr "" #: views/tools/options-group-live-traffic.php:123 msgid "Maximum days to keep Live Traffic data (minimum: 1)" msgstr "" #: views/tools/options-group-live-traffic.php:135 msgid "Display Live Traffic menu option" msgstr "" #: views/tours/login-security.php:28 msgid "Introducing the New Wordfence 2FA" msgstr "" #: views/tours/login-security.php:29 msgid "We are excited to announce the release of a completely rebuilt two-factor authentication (2FA) feature within Wordfence. 2FA is an important layer of security that protects you from password guessing and credential stuffing attacks. Previously a Premium-only feature, it is now available for sites running the free version of Wordfence. You are now able to enable 2FA for any role, we’ve added a number of important security features, and we’ve significantly improved the admin interface." msgstr "" #: views/tours/login-security.php:44 msgid "Individual Allowlisting" msgstr "" #: views/tours/login-security.php:45 msgid "Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in." msgstr "" #: views/tours/login-security.php:60 msgid "New Login Page Captcha Feature" msgstr "" #: views/tours/login-security.php:61 msgid "Wordfence now includes the option to enable Google reCaptcha v3 on your WordPress login and registration pages. This adds a powerful new layer of protection against password guessing and credential stuffing attacks from bots without slowing down real users." msgstr "" #: views/tours/login-security.php:70 msgid "Done" msgstr "" #. translators: 1. PHP version. 2. Wordfence version. #: views/unsupported-php/admin-message.php:11 msgid "You are running PHP version %1$s that is not supported by Wordfence %2$s. Wordfence features will not be available until PHP has been upgraded. We recommend using PHP version 7.4, but Wordfence will run on PHP version 5.3 at a minimum." msgstr "" #: views/waf/firewall-status.php:16 msgid "Wordfence Firewall & Premium Enabled" msgstr "" #: views/waf/firewall-status.php:23 msgid "Wordfence Firewall Deactivated" msgstr "" #: views/waf/firewall-status.php:24 msgid "The Wordfence Web Application Firewall is a PHP-based, application-level firewall that filters out malicious requests to your site. It is designed to run at the beginning of WordPress' initialization to filter any attacks before plugins or themes can run any potentially vulnerable code." msgstr "" #: views/waf/firewall-status.php:26 msgid "Enable Firewall" msgstr "" #: views/waf/firewall-status.php:47 msgid "Wordfence Firewall Activated" msgstr "" #: views/waf/firewall-status.php:56 msgid "Learning Mode Enabled" msgstr "" #. translators: Localized date. #: views/waf/firewall-status.php:56 msgid "Learning Mode Until %s" msgstr "" #. translators: Localized date. #: views/waf/firewall-status.php:57 msgid " When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall." msgstr "" #: views/waf/option-rate-limit.php:34 msgid "then" msgstr "" #: views/waf/option-rules.php:5 msgid "Rules" msgstr "" #: views/waf/option-rules.php:6 msgid "You are currently running the WAF from another WordPress installation. These rules can be disabled or enabled once you configure the firewall to run correctly on this site." msgstr "" #: views/waf/option-rules.php:11 msgid "Manually Refresh Rules" msgstr "" #: views/waf/option-whitelist.php:5 msgid "Add Allowlisted URL/Param" msgstr "" #: views/waf/option-whitelist.php:5 msgid "The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive." msgstr "" #: views/waf/option-whitelist.php:13 msgid "POST Body" msgstr "" #: views/waf/option-whitelist.php:14 msgid "Cookie" msgstr "" #: views/waf/option-whitelist.php:15 msgid "File Name" msgstr "" #: views/waf/option-whitelist.php:16 msgid "Header" msgstr "" #: views/waf/option-whitelist.php:17 msgid "Query String" msgstr "" #: views/waf/option-whitelist.php:21 msgid "Param Name" msgstr "" #: views/waf/option-whitelist.php:23 msgid "Add" msgstr "" #: views/waf/option-whitelist.php:53 msgid "Allowlist Entry Exists" msgstr "" #: views/waf/option-whitelist.php:53 msgid "An allowlist entry for this URL and parameter already exists." msgstr "" #: views/waf/option-whitelist.php:102 msgid "Disable" msgstr "" #: views/waf/option-whitelist.php:107 #: views/waf/options-group-whitelisted.php:83 #: views/waf/options-group-whitelisted.php:96 msgid "Param" msgstr "" #: views/waf/option-whitelist.php:108 #: views/waf/options-group-whitelisted.php:85 #: views/waf/options-group-whitelisted.php:98 msgid "Source" msgstr "" #: views/waf/option-whitelist.php:112 msgid "Filter Value" msgstr "" #: views/waf/options-group-advanced-firewall.php:26 msgid "Advanced Firewall Options" msgstr "" #: views/waf/options-group-advanced-firewall.php:41 msgid "You are currently running the WAF from another WordPress installation. This option can be changed once you configure the firewall to run correctly on this site." msgstr "" #: views/waf/options-group-advanced-firewall.php:54 msgid "Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100
Wordfence automatically allowlists private networks because these are not routable on the public Internet." msgstr "" #: views/waf/options-group-advanced-firewall.php:101 msgid "Separate multiple URLs with commas or place them on separate lines. Asterisks are wildcards, but use with care. If you see an attacker repeatedly probing your site for a known vulnerability you can use this to immediately block them. All URLs must start with a \"/\" without quotes and must be relative. e.g. /badURLone/, /bannedPage.html, /dont-access/this/URL/, /starts/with-*" msgstr "" #: views/waf/options-group-advanced-firewall.php:114 msgid "Ignored IPs must be separated by commas or placed on separate lines. These addresses will be ignored from any alerts about increased attacks and can be used to ignore things like standalone website security scanners." msgstr "" #: views/waf/options-group-advanced-firewall.php:137 msgid "Category" msgstr "" #: views/waf/options-group-advanced-firewall.php:153 msgid "No rules currently set." msgstr "" #: views/waf/options-group-advanced-firewall.php:153 msgid "Click here to pull down the latest from the Wordfence servers." msgstr "" #: views/waf/options-group-advanced-firewall.php:161 msgid "SHOW ALL RULES" msgstr "" #: views/waf/options-group-basic-firewall.php:26 msgid "Basic Firewall Options" msgstr "" #. translators: WordPress admin URL. #: views/waf/options-group-basic-firewall.php:36 #: views/waf/options-group-basic-firewall.php:469 #: views/waf/options-group-whitelisted.php:35 msgid "You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please click here to configure the Firewall to run correctly on this site." msgstr "" #: views/waf/options-group-basic-firewall.php:40 msgid "Enabled and Protecting:" msgstr "" #: views/waf/options-group-basic-firewall.php:40 msgid "In this mode, the Wordfence Web Application Firewall is actively blocking requests matching known attack patterns and is actively protecting your site from attackers." msgstr "" #: views/waf/options-group-basic-firewall.php:41 msgid "Learning Mode:" msgstr "" #. translators: Support URL. #: views/waf/options-group-basic-firewall.php:41 msgid "When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall. Learn More" msgstr "" #. translators: Support URL. #: views/waf/options-group-basic-firewall.php:42 msgid "Disabled:" msgstr "" #. translators: Support URL. #: views/waf/options-group-basic-firewall.php:42 msgid "In this mode, the Wordfence Web Application Firewall is functionally turned off and does not run any of its rules or analyze the request in any way." msgstr "" #: views/waf/options-group-basic-firewall.php:46 msgid "Enabled and Protecting" msgstr "" #: views/waf/options-group-basic-firewall.php:161 msgid "Automatically enable on" msgstr "" #: views/waf/options-group-basic-firewall.php:165 msgid "Protection Level" msgstr "" #: views/waf/options-group-basic-firewall.php:167 msgid "Extended Protection:" msgstr "" #: views/waf/options-group-basic-firewall.php:167 msgid "All PHP requests will be processed by the firewall prior to running." msgstr "" #. translators: Support URL. #: views/waf/options-group-basic-firewall.php:168 msgid "If you're moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can remove them manually." msgstr "" #. translators: Support URL. #: views/waf/options-group-basic-firewall.php:169 msgid "Remove Extended Protection" msgstr "" #: views/waf/options-group-basic-firewall.php:171 msgid "Existing WAF Installation Detected:" msgstr "" #: views/waf/options-group-basic-firewall.php:171 msgid "You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please configure the firewall to run correctly on this site." msgstr "" #: views/waf/options-group-basic-firewall.php:172 #: views/waf/options-group-basic-firewall.php:175 msgid "Optimize the Wordfence Firewall" msgstr "" #: views/waf/options-group-basic-firewall.php:174 msgid "Basic WordPress Protection:" msgstr "" #: views/waf/options-group-basic-firewall.php:174 msgid "The plugin will load as a regular plugin after WordPress has been loaded, and while it can block many malicious requests, some vulnerable plugins or WordPress itself may run vulnerable code before all plugins are loaded." msgstr "" #: views/waf/options-group-basic-firewall.php:292 msgid "Error During Setup" msgstr "" #: views/waf/options-group-basic-firewall.php:466 msgid "Premium Feature:" msgstr "" #: views/waf/options-group-basic-firewall.php:466 #: views/waf/options-group-basic-firewall.php:471 msgid "This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence's real-time blocklist." msgstr "" #: views/waf/options-group-brute-force.php:39 msgid "This option enables all \"Brute Force Protection\" options, including strong password enforcement and invalid login throttling. You can modify individual options below." msgstr "" #: views/waf/options-group-brute-force.php:140 msgid "Hit enter to add a username" msgstr "" #: views/waf/options-group-brute-force.php:153 msgid "For admins only" msgstr "" #: views/waf/options-group-brute-force.php:153 msgid "For all users with \"publish posts\" capability" msgstr "" #: views/waf/options-group-brute-force.php:163 msgid "Additional Options" msgstr "" #: views/waf/options-group-brute-force.php:176 msgid "Force admins and publishers to use strong passwords (recommended)" msgstr "" #: views/waf/options-group-brute-force.php:176 msgid "Force all members to use strong passwords" msgstr "" #: views/waf/options-group-brute-force.php:202 msgid "Prevent users registering 'admin' username if it doesn't exist" msgstr "" #: views/waf/options-group-brute-force.php:214 msgid "Prevent discovery of usernames through '/?author=N' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps" msgstr "" #: views/waf/options-group-brute-force.php:250 msgid "HTML tags will be stripped prior to output and line breaks will be converted into the appropriate tags." msgstr "" #: views/waf/options-group-rate-limiting.php:39 msgid "NOTE: This checkbox enables ALL blocking/throttling functions including IP, country and advanced blocking, and the \"Rate Limiting Rules\" below." msgstr "" #: views/waf/options-group-rate-limiting.php:55 msgid "Verified Google crawlers will not be rate-limited" msgstr "" #: views/waf/options-group-rate-limiting.php:56 msgid "Anyone claiming to be Google will not be rate-limited" msgstr "" #: views/waf/options-group-rate-limiting.php:57 msgid "Treat Google like any other Crawler" msgstr "" #. translators: Number of HTTP requests. #: views/waf/options-group-rate-limiting.php:68 #: views/waf/options-group-rate-limiting.php:69 #: views/waf/options-group-rate-limiting.php:70 #: views/waf/options-group-rate-limiting.php:71 #: views/waf/options-group-rate-limiting.php:72 #: views/waf/options-group-rate-limiting.php:73 #: views/waf/options-group-rate-limiting.php:74 #: views/waf/options-group-rate-limiting.php:75 #: views/waf/options-group-rate-limiting.php:76 #: views/waf/options-group-rate-limiting.php:77 #: views/waf/options-group-rate-limiting.php:78 #: views/waf/options-group-rate-limiting.php:79 #: views/waf/options-group-rate-limiting.php:80 #: views/waf/options-group-rate-limiting.php:81 msgid "%d per minute" msgstr "" #: views/waf/options-group-rate-limiting.php:84 msgid "throttle it" msgstr "" #: views/waf/options-group-rate-limiting.php:85 msgid "block it" msgstr "" #: views/waf/options-group-rate-limiting.php:195 msgid "These URL patterns will be excluded from the throttling rules used to limit crawlers." msgstr "" #: views/waf/options-group-whitelisted.php:26 msgid "Allowlisted URLs" msgstr "" #: views/waf/options-group-whitelisted.php:53 msgid "Front-end Website" msgstr "" #: views/waf/options-group-whitelisted.php:60 msgid "Admin Panel" msgstr "" #: views/waf/options-group-whitelisted.php:64 msgid "Monitor background requests from an administrator's web browser for false positives" msgstr "" #: views/waf/options-group-whitelisted.php:80 #: views/waf/options-group-whitelisted.php:93 msgid "Select/deselect all" msgstr "" #: views/waf/options-group-whitelisted.php:84 #: views/waf/options-group-whitelisted.php:97 msgid "Created" msgstr "" #: views/waf/options-group-whitelisted.php:107 msgid "Select row ${idx}" msgstr "" #: views/waf/options-group-whitelisted.php:108 msgid "Toggle row ${idx}" msgstr "" #: views/waf/options-group-whitelisted.php:157 msgid "No allowlisted URLs currently set." msgstr "" #. translators: Support URL. #: views/waf/status-tooltip-learning-mode.php:6 msgid "The Web Application Firewall is currently in Learning Mode. Learn More" msgstr "" #: views/waf/waf-install-manual.php:10 msgid "The required file has been created. You'll need to insert the following code into your php.ini to finish installation:" msgstr "" #. translators: Support URL. #: views/waf/waf-install-manual.php:12 msgid "You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, in our documentation." msgstr "" #: views/waf/waf-install.php:9 msgid "Optimize Wordfence Firewall" msgstr "" #: views/waf/waf-install.php:13 msgid "If you cannot complete the setup process, " msgstr "" #: views/waf/waf-install.php:13 msgid "click here for help" msgstr "" #: views/waf/waf-install.php:22 msgid "To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called auto_prepend_file, which ensures it runs before any potentially vulnerable code runs." msgstr "" #: views/waf/waf-install.php:24 msgid "To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called auto_prepend_file, which ensures it runs before any potentially vulnerable code runs. This PHP setting is currently in use, and is including this file:" msgstr "" #: views/waf/waf-install.php:26 msgid "If you don't recognize this file, please contact us on the WordPress support forums before proceeding." msgstr "" #: views/waf/waf-install.php:27 msgid "You can proceed with the installation and we will include this from within our wordfence-waf.php file which should maintain compatibility with your site, or you can opt to override the existing PHP setting." msgstr "" #: views/waf/waf-install.php:28 msgid "Include" msgstr "" #: views/waf/waf-install.php:28 msgid "Override" msgstr "" #: views/waf/waf-install.php:30 msgid "NOTE:" msgstr "" #: views/waf/waf-install.php:30 msgid "If you have separate WordPress installations with Wordfence installed within a subdirectory of this site, it is recommended that you perform the Firewall installation procedure on those sites before this one." msgstr "" #: views/waf/waf-install.php:34 #: views/waf/waf-uninstall.php:40 msgid "Apache + mod_php" msgstr "" #: views/waf/waf-install.php:35 #: views/waf/waf-uninstall.php:41 msgid "Apache + suPHP" msgstr "" #: views/waf/waf-install.php:36 #: views/waf/waf-uninstall.php:42 msgid "Apache + CGI/FastCGI" msgstr "" #: views/waf/waf-install.php:37 #: views/waf/waf-uninstall.php:43 msgid "LiteSpeed/lsapi" msgstr "" #: views/waf/waf-install.php:38 #: views/waf/waf-uninstall.php:44 msgid "NGINX" msgstr "" #: views/waf/waf-install.php:39 #: views/waf/waf-uninstall.php:45 msgid "Windows (IIS)" msgstr "" #: views/waf/waf-install.php:40 msgid "Manual Configuration" msgstr "" #: views/waf/waf-install.php:56 #: views/waf/waf-uninstall.php:61 msgid "If you know your web server's configuration, please select it from the list below." msgstr "" #: views/waf/waf-install.php:58 msgid "We've preselected your server configuration based on our tests, but if you know your web server's configuration, please select it now. You can also choose \"Manual Configuration\" for alternate installation details." msgstr "" #. translators: 1. PHP ini setting. 2. Support URL. #: views/waf/waf-install.php:63 msgid "Part of the Firewall configuration procedure for NGINX depends on creating a %1$s file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have instructions on our documentation site on what directives to put in your nginx.conf to fix this." msgstr "" #: views/waf/waf-install.php:65 msgid "If you are using a web server not listed in the dropdown or if file permissions prevent the installer from completing successfully, you will need to perform the change manually. Click Continue below to create the required file and view manual installation instructions." msgstr "" #: views/waf/waf-install.php:86 #: views/waf/waf-uninstall.php:87 msgid "Please download a backup of the following files before we make the necessary changes:" msgstr "" #. translators: File path. #: views/waf/waf-install.php:96 #: views/waf/waf-uninstall.php:97 msgid "Download %s" msgstr "" #: views/waf/waf-install.php:105 msgid "Once you have downloaded the files, click Continue to complete the setup." msgstr "" #: views/waf/waf-uninstall.php:9 msgid "Uninstall Wordfence Firewall" msgstr "" #: views/waf/waf-uninstall.php:26 msgid "Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called auto_prepend_file in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:" msgstr "" #. translators: Support URL. #: views/waf/waf-uninstall.php:34 msgid "Automatic uninstallation cannot be completed, but you may still be able to manually uninstall extended protection." msgstr "" #: views/waf/waf-uninstall.php:36 msgid "Before this file can be deleted, the configuration for the auto_prepend_file setting needs to be removed." msgstr "" #: views/waf/waf-uninstall.php:63 msgid "We've preselected your server configuration based on our tests, but if you know your web server's configuration, please select it now." msgstr "" #: views/waf/waf-uninstall.php:107 msgid "Once you have downloaded the files, click Continue to complete uninstallation." msgstr "" waf/wfWAFUserIPRange.php000064400000017114152331132450011054 0ustar00setIPString($ip_string); } public function isIPInRange($ip) { $ip_string = $this->getIPString(); if (strpos($ip_string, '/') !== false) { //CIDR range -- 127.0.0.1/24 return wfWAFUtils::subnetContainsIP($ip_string, $ip); } else if (strpos($ip_string, '[') !== false) //Bracketed range -- 127.0.0.[1-100] { // IPv4 range if (strpos($ip_string, '.') !== false && strpos($ip, '.') !== false) { // IPv4-mapped-IPv6 if (preg_match('/:ffff:([^:]+)$/i', $ip_string, $matches)) { $ip_string = $matches[1]; } if (preg_match('/:ffff:([^:]+)$/i', $ip, $matches)) { $ip = $matches[1]; } // Range check if (preg_match('/\[\d+\-\d+\]/', $ip_string)) { $IPparts = explode('.', $ip); $whiteParts = explode('.', $ip_string); $mismatch = false; if (count($whiteParts) != 4 || count($IPparts) != 4) { return false; } for ($i = 0; $i <= 3; $i++) { if (preg_match('/^\[(\d+)\-(\d+)\]$/', $whiteParts[$i], $m)) { if ($IPparts[$i] < $m[1] || $IPparts[$i] > $m[2]) { $mismatch = true; } } else if ($whiteParts[$i] != $IPparts[$i]) { $mismatch = true; } } if ($mismatch === false) { return true; // Is whitelisted because we did not get a mismatch } } else if ($ip_string == $ip) { return true; } // IPv6 range } else if (strpos($ip_string, ':') !== false && strpos($ip, ':') !== false) { $ip = strtolower(wfWAFUtils::expandIPv6Address($ip)); $ip_string = strtolower(self::expandIPv6Range($ip_string)); if (preg_match('/\[[a-f0-9]+\-[a-f0-9]+\]/i', $ip_string)) { $IPparts = explode(':', $ip); $whiteParts = explode(':', $ip_string); $mismatch = false; if (count($whiteParts) != 8 || count($IPparts) != 8) { return false; } for ($i = 0; $i <= 7; $i++) { if (preg_match('/^\[([a-f0-9]+)\-([a-f0-9]+)\]$/i', $whiteParts[$i], $m)) { $ip_group = hexdec($IPparts[$i]); $range_group_from = hexdec($m[1]); $range_group_to = hexdec($m[2]); if ($ip_group < $range_group_from || $ip_group > $range_group_to) { $mismatch = true; break; } } else if ($whiteParts[$i] != $IPparts[$i]) { $mismatch = true; break; } } if ($mismatch === false) { return true; // Is whitelisted because we did not get a mismatch } } else if ($ip_string == $ip) { return true; } } } else if (strpos($ip_string, '-') !== false) { //Linear range -- 127.0.0.1 - 127.0.1.100 list($ip1, $ip2) = explode('-', $ip_string); $ip1N = wfWAFUtils::inet_pton($ip1); $ip2N = wfWAFUtils::inet_pton($ip2); $ipN = wfWAFUtils::inet_pton($ip); return (strcmp($ip1N, $ipN) <= 0 && strcmp($ip2N, $ipN) >= 0); } else { //Treat as a literal IP $ip1 = @wfWAFUtils::inet_pton($ip_string); $ip2 = @wfWAFUtils::inet_pton($ip); if ($ip1 !== false && $ip1 == $ip2) { return true; } } return false; } /** * Expand a compressed printable range representation of an IPv6 address. * * @todo Hook up exceptions for better error handling. * @todo Allow IPv4 mapped IPv6 addresses (::ffff:192.168.1.1). * @param string $ip_range * @return string */ public static function expandIPv6Range($ip_range) { $colon_count = substr_count($ip_range, ':'); $dbl_colon_count = substr_count($ip_range, '::'); if ($dbl_colon_count > 1) { return false; } $dbl_colon_pos = strpos($ip_range, '::'); if ($dbl_colon_pos !== false) { $ip_range = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip_range) - 2) ? 9 : 8) - $colon_count) . ':', $ip_range); $ip_range = trim($ip_range, ':'); } $colon_count = substr_count($ip_range, ':'); if ($colon_count != 7) { return false; } $groups = explode(':', $ip_range); $expanded = ''; foreach ($groups as $group) { if (preg_match('/\[([a-f0-9]{1,4})\-([a-f0-9]{1,4})\]/i', $group, $matches)) { $expanded .= sprintf('[%s-%s]', str_pad(strtolower($matches[1]), 4, '0', STR_PAD_LEFT), str_pad(strtolower($matches[2]), 4, '0', STR_PAD_LEFT)) . ':'; } else if (preg_match('/[a-f0-9]{1,4}/i', $group)) { $expanded .= str_pad(strtolower($group), 4, '0', STR_PAD_LEFT) . ':'; } else { return false; } } return trim($expanded, ':'); } /** * @return bool */ public function isValidRange() { return $this->isValidCIDRRange() || $this->isValidBracketedRange() || $this->isValidLinearRange() || filter_var($this->getIPString(), FILTER_VALIDATE_IP) !== false; } public function isValidCIDRRange() { //e.g., 192.0.2.1/24 $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\/\.]/i', $ip_string)) { return false; } $components = explode('/', $ip_string); if (count($components) != 2) { return false; } list($ip, $prefix) = $components; if (filter_var($ip, FILTER_VALIDATE_IP) === false) { return false; } if (!preg_match('/^\d+$/', $prefix)) { return false; } if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { if ($prefix < 0 || $prefix > 32) { return false; } } else { if ($prefix < 1 || $prefix > 128) { return false; } } return true; } public function isValidBracketedRange() { //e.g., 192.0.2.[1-10] $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\.\[\]\-]/i', $ip_string)) { return false; } if (strpos($ip_string, '.') !== false) { //IPv4 if (preg_match_all('/(\d+)/', $ip_string, $matches) > 0) { foreach ($matches[1] as $match) { $group = (int) $match; if ($group > 255 || $group < 0) { return false; } } } $group_regex = '([0-9]{1,3}|\[[0-9]{1,3}\-[0-9]{1,3}\])'; return preg_match('/^' . str_repeat("{$group_regex}\\.", 3) . $group_regex . '$/i', $ip_string) > 0; } //IPv6 if (strpos($ip_string, '::') !== false) { $ip_string = self::expandIPv6Range($ip_string); } if (!$ip_string) { return false; } $group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])'; return preg_match('/^' . str_repeat("$group_regex:", 7) . $group_regex . '$/i', $ip_string) > 0; } public function isValidLinearRange() { //e.g., 192.0.2.1-192.0.2.100 $ip_string = $this->getIPString(); if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; } list($ip1, $ip2) = explode("-", $ip_string); $ip1N = @wfWAFUtils::inet_pton($ip1); $ip2N = @wfWAFUtils::inet_pton($ip2); if ($ip1N === false || filter_var($ip1, FILTER_VALIDATE_IP) === false || $ip2N === false || filter_var($ip2, FILTER_VALIDATE_IP) === false) { return false; } return strcmp($ip1N, $ip2N) <= 0; } protected function _sanitizeIPRange($ip_string) { $ip_string = preg_replace('/\s/', '', $ip_string); //Strip whitespace $ip_string = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $ip_string); //Non-hyphen dashes to hyphen $ip_string = strtolower($ip_string); if (preg_match('/^\d+-\d+$/', $ip_string)) { //v5 32 bit int style format list($start, $end) = explode('-', $ip_string); $start = long2ip($start); $end = long2ip($end); $ip_string = "{$start}-{$end}"; } return $ip_string; } /** * @return string|null */ public function getIPString() { return $this->ip_string; } /** * @param string|null $ip_string */ public function setIPString($ip_string) { $this->ip_string = $this->_sanitizeIPRange($ip_string); } } } waf/pomo/streams.php000064400000016413152331132450010466 0ustar00 * * @version $Id: streams.php 1157 2015-11-20 04:30:11Z dd32 $ * @package pomo * @subpackage streams */ if ( ! class_exists( 'wfPOMO_Reader', false ) ) : class wfPOMO_Reader { var $endian = 'little'; var $_post = ''; /** * PHP5 constructor. */ function __construct() { $this->is_overloaded = ( ( ini_get( 'mbstring.func_overload' ) & 2 ) != 0 ) && function_exists( 'mb_substr' ); // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated $this->_pos = 0; } /** * Sets the endianness of the file. * * @param string $endian Set the endianness of the file. Accepts 'big', or 'little'. */ function setEndian( $endian ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid $this->endian = $endian; } /** * Reads a 32bit Integer from the Stream * * @return mixed The integer, corresponding to the next 32 bits from * the stream of false if there are not enough bytes or on error */ function readint32() { $bytes = $this->read( 4 ); if ( 4 != $this->strlen( $bytes ) ) { return false; } $endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V'; $int = unpack( $endian_letter, $bytes ); return reset( $int ); } /** * Reads an array of 32-bit Integers from the Stream * * @param integer $count How many elements should be read * @return mixed Array of integers or false if there isn't * enough data or on error */ function readint32array( $count ) { $bytes = $this->read( 4 * $count ); if ( 4 * $count != $this->strlen( $bytes ) ) { return false; } $endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V'; return unpack( $endian_letter . $count, $bytes ); } /** * @param string $string * @param int $start * @param int $length * @return string */ function substr( $string, $start, $length ) { if ( $this->is_overloaded ) { return mb_substr( $string, $start, $length, 'ascii' ); } else { return substr( $string, $start, $length ); } } /** * @param string $string * @return int */ function strlen( $string ) { if ( $this->is_overloaded ) { return mb_strlen( $string, 'ascii' ); } else { return strlen( $string ); } } /** * @param string $string * @param int $chunk_size * @return array */ function str_split( $string, $chunk_size ) { if ( ! function_exists( 'str_split' ) ) { $length = $this->strlen( $string ); $out = array(); for ( $i = 0; $i < $length; $i += $chunk_size ) { $out[] = $this->substr( $string, $i, $chunk_size ); } return $out; } else { return str_split( $string, $chunk_size ); } } /** * @return int */ function pos() { return $this->_pos; } /** * @return true */ function is_resource() { return true; } /** * @return true */ function close() { return true; } } endif; if ( ! class_exists( 'wfPOMO_FileReader', false ) ) : class wfPOMO_FileReader extends wfPOMO_Reader { /** * @param string $filename */ function __construct( $filename ) { parent::__construct(); $this->_f = fopen( $filename, 'rb' ); } /** * @param int $bytes * @return string|false Returns read string, otherwise false. */ function read( $bytes ) { return fread( $this->_f, $bytes ); } /** * @param int $pos * @return boolean */ function seekto( $pos ) { if ( -1 == fseek( $this->_f, $pos, SEEK_SET ) ) { return false; } $this->_pos = $pos; return true; } /** * @return bool */ function is_resource() { return is_resource( $this->_f ); } /** * @return bool */ function feof() { return feof( $this->_f ); } /** * @return bool */ function close() { return fclose( $this->_f ); } /** * @return string */ function read_all() { $all = ''; while ( ! $this->feof() ) { $all .= $this->read( 4096 ); } return $all; } } endif; if ( ! class_exists( 'wfPOMO_StringReader', false ) ) : /** * Provides file-like methods for manipulating a string instead * of a physical file. */ class wfPOMO_StringReader extends wfPOMO_Reader { var $_str = ''; /** * PHP5 constructor. */ function __construct( $str = '' ) { parent::__construct(); $this->_str = $str; $this->_pos = 0; } /** * @param string $bytes * @return string */ function read( $bytes ) { $data = $this->substr( $this->_str, $this->_pos, $bytes ); $this->_pos += $bytes; if ( $this->strlen( $this->_str ) < $this->_pos ) { $this->_pos = $this->strlen( $this->_str ); } return $data; } /** * @param int $pos * @return int */ function seekto( $pos ) { $this->_pos = $pos; if ( $this->strlen( $this->_str ) < $this->_pos ) { $this->_pos = $this->strlen( $this->_str ); } return $this->_pos; } /** * @return int */ function length() { return $this->strlen( $this->_str ); } /** * @return string */ function read_all() { return $this->substr( $this->_str, $this->_pos, $this->strlen( $this->_str ) ); } } endif; if ( ! class_exists( 'wfPOMO_CachedFileReader', false ) ) : /** * Reads the contents of the file in the beginning. */ class wfPOMO_CachedFileReader extends wfPOMO_StringReader { /** * PHP5 constructor. */ function __construct( $filename ) { parent::__construct(); $this->_str = file_get_contents( $filename ); if ( false === $this->_str ) { return false; } $this->_pos = 0; } } endif; if ( ! class_exists( 'wfPOMO_CachedIntFileReader', false ) ) : /** * Reads the contents of the file in the beginning. */ class wfPOMO_CachedIntFileReader extends wfPOMO_CachedFileReader { /** * PHP5 constructor. */ public function __construct( $filename ) { parent::__construct( $filename ); } } endif; waf/pomo/plural-forms.php000064400000020350152331132450011426 0ustar00 6, '<' => 5, '<=' => 5, '>' => 5, '>=' => 5, '==' => 4, '!=' => 4, '&&' => 3, '||' => 2, '?:' => 1, '?' => 1, '(' => 0, ')' => 0, ); /** * Tokens generated from the string. * * @since 4.9.0 * @var array $tokens List of tokens. */ protected $tokens = array(); /** * Cache for repeated calls to the function. * * @since 4.9.0 * @var array $cache Map of $n => $result */ protected $cache = array(); /** * Constructor. * * @since 4.9.0 * * @param string $str Plural function (just the bit after `plural=` from Plural-Forms) */ public function __construct( $str ) { $this->parse( $str ); } /** * Parse a Plural-Forms string into tokens. * * Uses the shunting-yard algorithm to convert the string to Reverse Polish * Notation tokens. * * @since 4.9.0 * * @param string $str String to parse. */ protected function parse( $str ) { $pos = 0; $len = strlen( $str ); // Convert infix operators to postfix using the shunting-yard algorithm. $output = array(); $stack = array(); while ( $pos < $len ) { $next = substr( $str, $pos, 1 ); switch ( $next ) { // Ignore whitespace. case ' ': case "\t": $pos++; break; // Variable (n). case 'n': $output[] = array( 'var' ); $pos++; break; // Parentheses. case '(': $stack[] = $next; $pos++; break; case ')': $found = false; while ( ! empty( $stack ) ) { $o2 = $stack[ count( $stack ) - 1 ]; if ( '(' !== $o2 ) { $output[] = array( 'op', array_pop( $stack ) ); continue; } // Discard open paren. array_pop( $stack ); $found = true; break; } if ( ! $found ) { throw new Exception( 'Mismatched parentheses' ); } $pos++; break; // Operators. case '|': case '&': case '>': case '<': case '!': case '=': case '%': case '?': $end_operator = strspn( $str, self::OP_CHARS, $pos ); $operator = substr( $str, $pos, $end_operator ); if ( ! array_key_exists( $operator, self::$op_precedence ) ) { throw new Exception( sprintf( 'Unknown operator "%s"', $operator ) ); } while ( ! empty( $stack ) ) { $o2 = $stack[ count( $stack ) - 1 ]; // Ternary is right-associative in C. if ( '?:' === $operator || '?' === $operator ) { if ( self::$op_precedence[ $operator ] >= self::$op_precedence[ $o2 ] ) { break; } } elseif ( self::$op_precedence[ $operator ] > self::$op_precedence[ $o2 ] ) { break; } $output[] = array( 'op', array_pop( $stack ) ); } $stack[] = $operator; $pos += $end_operator; break; // Ternary "else". case ':': $found = false; $s_pos = count( $stack ) - 1; while ( $s_pos >= 0 ) { $o2 = $stack[ $s_pos ]; if ( '?' !== $o2 ) { $output[] = array( 'op', array_pop( $stack ) ); $s_pos--; continue; } // Replace. $stack[ $s_pos ] = '?:'; $found = true; break; } if ( ! $found ) { throw new Exception( 'Missing starting "?" ternary operator' ); } $pos++; break; // Default - number or invalid. default: if ( $next >= '0' && $next <= '9' ) { $span = strspn( $str, self::NUM_CHARS, $pos ); $output[] = array( 'value', intval( substr( $str, $pos, $span ) ) ); $pos += $span; break; } throw new Exception( sprintf( 'Unknown symbol "%s"', $next ) ); } } while ( ! empty( $stack ) ) { $o2 = array_pop( $stack ); if ( '(' === $o2 || ')' === $o2 ) { throw new Exception( 'Mismatched parentheses' ); } $output[] = array( 'op', $o2 ); } $this->tokens = $output; } /** * Get the plural form for a number. * * Caches the value for repeated calls. * * @since 4.9.0 * * @param int $num Number to get plural form for. * @return int Plural form value. */ public function get( $num ) { if ( isset( $this->cache[ $num ] ) ) { return $this->cache[ $num ]; } $this->cache[ $num ] = $this->execute( $num ); return $this->cache[ $num ]; } /** * Execute the plural form function. * * @since 4.9.0 * * @param int $n Variable "n" to substitute. * @return int Plural form value. */ public function execute( $n ) { $stack = array(); $i = 0; $total = count( $this->tokens ); while ( $i < $total ) { $next = $this->tokens[ $i ]; $i++; if ( 'var' === $next[0] ) { $stack[] = $n; continue; } elseif ( 'value' === $next[0] ) { $stack[] = $next[1]; continue; } // Only operators left. switch ( $next[1] ) { case '%': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 % $v2; break; case '||': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 || $v2; break; case '&&': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 && $v2; break; case '<': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 < $v2; break; case '<=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 <= $v2; break; case '>': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 > $v2; break; case '>=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 >= $v2; break; case '!=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 != $v2; break; case '==': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 == $v2; break; case '?:': $v3 = array_pop( $stack ); $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 ? $v2 : $v3; break; default: throw new Exception( sprintf( 'Unknown operator "%s"', $next[1] ) ); } } if ( count( $stack ) !== 1 ) { throw new Exception( 'Too many values remaining on the stack' ); } return (int) $stack[0]; } } waf/pomo/mo.php000064400000024732152331132450007426 0ustar00filename; } /** * Fills up with the entries from MO file $filename * * @param string $filename MO file to load * @return bool True if the import from file was successful, otherwise false. */ function import_from_file( $filename ) { $reader = new wfPOMO_FileReader( $filename ); if ( ! $reader->is_resource() ) { return false; } $this->filename = (string) $filename; return $this->import_from_reader( $reader ); } /** * @param string $filename * @return bool */ function export_to_file( $filename ) { $fh = fopen( $filename, 'wb' ); if ( ! $fh ) { return false; } $res = $this->export_to_file_handle( $fh ); fclose( $fh ); return $res; } /** * @return string|false */ function export() { $tmp_fh = fopen( 'php://temp', 'r+' ); if ( ! $tmp_fh ) { return false; } $this->export_to_file_handle( $tmp_fh ); rewind( $tmp_fh ); return stream_get_contents( $tmp_fh ); } /** * @param wfTranslation_Entry $entry * @return bool */ function is_entry_good_for_export( $entry ) { if ( empty( $entry->translations ) ) { return false; } if ( ! array_filter( $entry->translations ) ) { return false; } return true; } /** * @param resource $fh * @return true */ function export_to_file_handle( $fh ) { $entries = array_filter( $this->entries, array( $this, 'is_entry_good_for_export' ) ); ksort( $entries ); $magic = 0x950412de; $revision = 0; $total = count( $entries ) + 1; // All the headers are one entry. $originals_lenghts_addr = 28; $translations_lenghts_addr = $originals_lenghts_addr + 8 * $total; $size_of_hash = 0; $hash_addr = $translations_lenghts_addr + 8 * $total; $current_addr = $hash_addr; fwrite( $fh, pack( 'V*', $magic, $revision, $total, $originals_lenghts_addr, $translations_lenghts_addr, $size_of_hash, $hash_addr ) ); fseek( $fh, $originals_lenghts_addr ); // Headers' msgid is an empty string. fwrite( $fh, pack( 'VV', 0, $current_addr ) ); $current_addr++; $originals_table = "\0"; $reader = new wfPOMO_Reader(); foreach ( $entries as $entry ) { $originals_table .= $this->export_original( $entry ) . "\0"; $length = $reader->strlen( $this->export_original( $entry ) ); fwrite( $fh, pack( 'VV', $length, $current_addr ) ); $current_addr += $length + 1; // Account for the NULL byte after. } $exported_headers = $this->export_headers(); fwrite( $fh, pack( 'VV', $reader->strlen( $exported_headers ), $current_addr ) ); $current_addr += strlen( $exported_headers ) + 1; $translations_table = $exported_headers . "\0"; foreach ( $entries as $entry ) { $translations_table .= $this->export_translations( $entry ) . "\0"; $length = $reader->strlen( $this->export_translations( $entry ) ); fwrite( $fh, pack( 'VV', $length, $current_addr ) ); $current_addr += $length + 1; } fwrite( $fh, $originals_table ); fwrite( $fh, $translations_table ); return true; } /** * @param wfTranslation_Entry $entry * @return string */ function export_original( $entry ) { // TODO: Warnings for control characters. $exported = $entry->singular; if ( $entry->is_plural ) { $exported .= "\0" . $entry->plural; } if ( $entry->context ) { $exported = $entry->context . "\4" . $exported; } return $exported; } /** * @param wfTranslation_Entry $entry * @return string */ function export_translations( $entry ) { // TODO: Warnings for control characters. return $entry->is_plural ? implode( "\0", $entry->translations ) : $entry->translations[0]; } /** * @return string */ function export_headers() { $exported = ''; foreach ( $this->headers as $header => $value ) { $exported .= "$header: $value\n"; } return $exported; } /** * @param int $magic * @return string|false */ function get_byteorder( $magic ) { // The magic is 0x950412de. // bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565 $magic_little = (int) - 1794895138; $magic_little_64 = (int) 2500072158; // 0xde120495 $magic_big = ( (int) - 569244523 ) & 0xFFFFFFFF; if ( $magic_little == $magic || $magic_little_64 == $magic ) { return 'little'; } elseif ( $magic_big == $magic ) { return 'big'; } else { return false; } } /** * @param wfPOMO_FileReader $reader * @return bool True if the import was successful, otherwise false. */ function import_from_reader( $reader ) { $endian_string = wfMO::get_byteorder( $reader->readint32() ); if ( false === $endian_string ) { return false; } $reader->setEndian( $endian_string ); $endian = ( 'big' === $endian_string ) ? 'N' : 'V'; $header = $reader->read( 24 ); if ( $reader->strlen( $header ) != 24 ) { return false; } // Parse header. $header = unpack( "{$endian}revision/{$endian}total/{$endian}originals_lenghts_addr/{$endian}translations_lenghts_addr/{$endian}hash_length/{$endian}hash_addr", $header ); if ( ! is_array( $header ) ) { return false; } // Support revision 0 of MO format specs, only. if ( 0 != $header['revision'] ) { return false; } // Seek to data blocks. $reader->seekto( $header['originals_lenghts_addr'] ); // Read originals' indices. $originals_lengths_length = $header['translations_lenghts_addr'] - $header['originals_lenghts_addr']; if ( $originals_lengths_length != $header['total'] * 8 ) { return false; } $originals = $reader->read( $originals_lengths_length ); if ( $reader->strlen( $originals ) != $originals_lengths_length ) { return false; } // Read translations' indices. $translations_lenghts_length = $header['hash_addr'] - $header['translations_lenghts_addr']; if ( $translations_lenghts_length != $header['total'] * 8 ) { return false; } $translations = $reader->read( $translations_lenghts_length ); if ( $reader->strlen( $translations ) != $translations_lenghts_length ) { return false; } // Transform raw data into set of indices. $originals = $reader->str_split( $originals, 8 ); $translations = $reader->str_split( $translations, 8 ); // Skip hash table. $strings_addr = $header['hash_addr'] + $header['hash_length'] * 4; $reader->seekto( $strings_addr ); $strings = $reader->read_all(); $reader->close(); for ( $i = 0; $i < $header['total']; $i++ ) { $o = unpack( "{$endian}length/{$endian}pos", $originals[ $i ] ); $t = unpack( "{$endian}length/{$endian}pos", $translations[ $i ] ); if ( ! $o || ! $t ) { return false; } // Adjust offset due to reading strings to separate space before. $o['pos'] -= $strings_addr; $t['pos'] -= $strings_addr; $original = $reader->substr( $strings, $o['pos'], $o['length'] ); $translation = $reader->substr( $strings, $t['pos'], $t['length'] ); if ( '' === $original ) { $this->set_headers( $this->make_headers( $translation ) ); } else { $entry = &$this->make_entry( $original, $translation ); $this->entries[ $entry->key() ] = &$entry; } } return true; } /** * Build a Translation_Entry from original string and translation strings, * found in a MO file * * @static * @param string $original original string to translate from MO file. Might contain * 0x04 as context separator or 0x00 as singular/plural separator * @param string $translation translation string from MO file. Might contain * 0x00 as a plural translations separator * @return wfTranslation_Entry Entry instance. */ function &make_entry( $original, $translation ) { $entry = new wfTranslation_Entry(); // Look for context, separated by \4. $parts = explode( "\4", $original ); if ( isset( $parts[1] ) ) { $original = $parts[1]; $entry->context = $parts[0]; } // Look for plural original. $parts = explode( "\0", $original ); $entry->singular = $parts[0]; if ( isset( $parts[1] ) ) { $entry->is_plural = true; $entry->plural = $parts[1]; } // Plural translations are also separated by \0. $entry->translations = explode( "\0", $translation ); return $entry; } /** * @param int $count * @return string */ function select_plural_form( $count ) { return $this->gettext_select_plural_form( $count ); } /** * @return int */ function get_plural_forms_count() { return $this->_nplurals; } } endif; waf/pomo/po.php000064400000037406152331132450007433 0ustar00headers as $header => $value ) { $header_string .= "$header: $value\n"; } $poified = wfPO::poify( $header_string ); if ( $this->comments_before_headers ) { $before_headers = $this->prepend_each_line( rtrim( $this->comments_before_headers ) . "\n", '# ' ); } else { $before_headers = ''; } return rtrim( "{$before_headers}msgid \"\"\nmsgstr $poified" ); } /** * Exports all entries to PO format * * @return string sequence of mgsgid/msgstr PO strings, doesn't containt newline at the end */ function export_entries() { // TODO: Sorting. return implode( "\n\n", array_map( array('wfPO', 'export_entry' ), $this->entries ) ); } /** * Exports the whole PO file as a string * * @param bool $include_headers whether to include the headers in the export * @return string ready for inclusion in PO file string for headers and all the enrtries */ function export( $include_headers = true ) { $res = ''; if ( $include_headers ) { $res .= $this->export_headers(); $res .= "\n\n"; } $res .= $this->export_entries(); return $res; } /** * Same as {@link export}, but writes the result to a file * * @param string $filename Where to write the PO string. * @param bool $include_headers Whether to include the headers in the export. * @return bool true on success, false on error */ function export_to_file( $filename, $include_headers = true ) { $fh = fopen( $filename, 'w' ); if ( false === $fh ) { return false; } $export = $this->export( $include_headers ); $res = fwrite( $fh, $export ); if ( false === $res ) { return false; } return fclose( $fh ); } /** * Text to include as a comment before the start of the PO contents * * Doesn't need to include # in the beginning of lines, these are added automatically * * @param string $text Text to include as a comment. */ function set_comment_before_headers( $text ) { $this->comments_before_headers = $text; } /** * Formats a string in PO-style * * @param string $string the string to format * @return string the poified string */ public static function poify( $string ) { $quote = '"'; $slash = '\\'; $newline = "\n"; $replaces = array( "$slash" => "$slash$slash", "$quote" => "$slash$quote", "\t" => '\t', ); $string = str_replace( array_keys( $replaces ), array_values( $replaces ), $string ); $po = $quote . implode( "${slash}n$quote$newline$quote", explode( $newline, $string ) ) . $quote; // Add empty string on first line for readbility. if ( false !== strpos( $string, $newline ) && ( substr_count( $string, $newline ) > 1 || substr( $string, -strlen( $newline ) ) !== $newline ) ) { $po = "$quote$quote$newline$po"; } // Remove empty strings. $po = str_replace( "$newline$quote$quote", '', $po ); return $po; } /** * Gives back the original string from a PO-formatted string * * @param string $string PO-formatted string * @return string enascaped string */ public static function unpoify( $string ) { $escapes = array( 't' => "\t", 'n' => "\n", 'r' => "\r", '\\' => '\\', ); $lines = array_map( 'trim', explode( "\n", $string ) ); $lines = array_map( array('wfPO', 'trim_quotes' ), $lines ); $unpoified = ''; $previous_is_backslash = false; foreach ( $lines as $line ) { preg_match_all( '/./u', $line, $chars ); $chars = $chars[0]; foreach ( $chars as $char ) { if ( ! $previous_is_backslash ) { if ( '\\' === $char ) { $previous_is_backslash = true; } else { $unpoified .= $char; } } else { $previous_is_backslash = false; $unpoified .= isset( $escapes[ $char ] ) ? $escapes[ $char ] : $char; } } } // Standardise the line endings on imported content, technically PO files shouldn't contain \r. $unpoified = str_replace( array( "\r\n", "\r" ), "\n", $unpoified ); return $unpoified; } /** * Inserts $with in the beginning of every new line of $string and * returns the modified string * * @param string $string prepend lines in this string * @param string $with prepend lines with this string */ public static function prepend_each_line( $string, $with ) { $lines = explode( "\n", $string ); $append = ''; if ( "\n" === substr( $string, -1 ) && '' === end( $lines ) ) { /* * Last line might be empty because $string was terminated * with a newline, remove it from the $lines array, * we'll restore state by re-terminating the string at the end. */ array_pop( $lines ); $append = "\n"; } foreach ( $lines as &$line ) { $line = $with . $line; } unset( $line ); return implode( "\n", $lines ) . $append; } /** * Prepare a text as a comment -- wraps the lines and prepends # * and a special character to each line * * @access private * @param string $text the comment text * @param string $char character to denote a special PO comment, * like :, default is a space */ public static function comment_block( $text, $char = ' ' ) { $text = wordwrap( $text, WF_PO_MAX_LINE_LEN - 3 ); return wfPO::prepend_each_line( $text, "#$char " ); } /** * Builds a string from the entry for inclusion in PO file * * @param wfTranslation_Entry $entry the entry to convert to po string (passed by reference). * @return string|false PO-style formatted string for the entry or * false if the entry is empty */ public static function export_entry( &$entry ) { if ( null === $entry->singular || '' === $entry->singular ) { return false; } $po = array(); if ( ! empty( $entry->translator_comments ) ) { $po[] = wfPO::comment_block( $entry->translator_comments ); } if ( ! empty( $entry->extracted_comments ) ) { $po[] = wfPO::comment_block( $entry->extracted_comments, '.' ); } if ( ! empty( $entry->references ) ) { $po[] = wfPO::comment_block( implode( ' ', $entry->references ), ':' ); } if ( ! empty( $entry->flags ) ) { $po[] = wfPO::comment_block( implode( ', ', $entry->flags ), ',' ); } if ( $entry->context ) { $po[] = 'msgctxt ' . wfPO::poify( $entry->context ); } $po[] = 'msgid ' . wfPO::poify( $entry->singular ); if ( ! $entry->is_plural ) { $translation = empty( $entry->translations ) ? '' : $entry->translations[0]; $translation = wfPO::match_begin_and_end_newlines( $translation, $entry->singular ); $po[] = 'msgstr ' . wfPO::poify( $translation ); } else { $po[] = 'msgid_plural ' . wfPO::poify( $entry->plural ); $translations = empty( $entry->translations ) ? array( '', '' ) : $entry->translations; foreach ( $translations as $i => $translation ) { $translation = wfPO::match_begin_and_end_newlines( $translation, $entry->plural ); $po[] = "msgstr[$i] " . wfPO::poify( $translation ); } } return implode( "\n", $po ); } public static function match_begin_and_end_newlines( $translation, $original ) { if ( '' === $translation ) { return $translation; } $original_begin = "\n" === substr( $original, 0, 1 ); $original_end = "\n" === substr( $original, -1 ); $translation_begin = "\n" === substr( $translation, 0, 1 ); $translation_end = "\n" === substr( $translation, -1 ); if ( $original_begin ) { if ( ! $translation_begin ) { $translation = "\n" . $translation; } } elseif ( $translation_begin ) { $translation = ltrim( $translation, "\n" ); } if ( $original_end ) { if ( ! $translation_end ) { $translation .= "\n"; } } elseif ( $translation_end ) { $translation = rtrim( $translation, "\n" ); } return $translation; } /** * @param string $filename * @return boolean */ function import_from_file( $filename ) { $f = fopen( $filename, 'r' ); if ( ! $f ) { return false; } $lineno = 0; while ( true ) { $res = $this->read_entry( $f, $lineno ); if ( ! $res ) { break; } if ( '' === $res['entry']->singular ) { $this->set_headers( $this->make_headers( $res['entry']->translations[0] ) ); } else { $this->add_entry( $res['entry'] ); } } wfPO::read_line( $f, 'clear' ); if ( false === $res ) { return false; } if ( ! $this->headers && ! $this->entries ) { return false; } return true; } /** * Helper function for read_entry * * @param string $context * @return bool */ protected static function is_final( $context ) { return ( 'msgstr' === $context ) || ( 'msgstr_plural' === $context ); } /** * @param resource $f * @param int $lineno * @return null|false|array */ function read_entry( $f, $lineno = 0 ) { $entry = new wfTranslation_Entry(); // Where were we in the last step. // Can be: comment, msgctxt, msgid, msgid_plural, msgstr, msgstr_plural. $context = ''; $msgstr_index = 0; while ( true ) { $lineno++; $line = wfPO::read_line( $f ); if ( ! $line ) { if ( feof( $f ) ) { if ( self::is_final( $context ) ) { break; } elseif ( ! $context ) { // We haven't read a line and EOF came. return null; } else { return false; } } else { return false; } } if ( "\n" === $line ) { continue; } $line = trim( $line ); if ( preg_match( '/^#/', $line, $m ) ) { // The comment is the start of a new entry. if ( self::is_final( $context ) ) { wfPO::read_line( $f, 'put-back' ); $lineno--; break; } // Comments have to be at the beginning. if ( $context && 'comment' !== $context ) { return false; } // Add comment. $this->add_comment_to_entry( $entry, $line ); } elseif ( preg_match( '/^msgctxt\s+(".*")/', $line, $m ) ) { if ( self::is_final( $context ) ) { wfPO::read_line( $f, 'put-back' ); $lineno--; break; } if ( $context && 'comment' !== $context ) { return false; } $context = 'msgctxt'; $entry->context .= wfPO::unpoify( $m[1] ); } elseif ( preg_match( '/^msgid\s+(".*")/', $line, $m ) ) { if ( self::is_final( $context ) ) { wfPO::read_line( $f, 'put-back' ); $lineno--; break; } if ( $context && 'msgctxt' !== $context && 'comment' !== $context ) { return false; } $context = 'msgid'; $entry->singular .= wfPO::unpoify( $m[1] ); } elseif ( preg_match( '/^msgid_plural\s+(".*")/', $line, $m ) ) { if ( 'msgid' !== $context ) { return false; } $context = 'msgid_plural'; $entry->is_plural = true; $entry->plural .= wfPO::unpoify( $m[1] ); } elseif ( preg_match( '/^msgstr\s+(".*")/', $line, $m ) ) { if ( 'msgid' !== $context ) { return false; } $context = 'msgstr'; $entry->translations = array( wfPO::unpoify( $m[1] ) ); } elseif ( preg_match( '/^msgstr\[(\d+)\]\s+(".*")/', $line, $m ) ) { if ( 'msgid_plural' !== $context && 'msgstr_plural' !== $context ) { return false; } $context = 'msgstr_plural'; $msgstr_index = $m[1]; $entry->translations[ $m[1] ] = wfPO::unpoify( $m[2] ); } elseif ( preg_match( '/^".*"$/', $line ) ) { $unpoified = wfPO::unpoify( $line ); switch ( $context ) { case 'msgid': $entry->singular .= $unpoified; break; case 'msgctxt': $entry->context .= $unpoified; break; case 'msgid_plural': $entry->plural .= $unpoified; break; case 'msgstr': $entry->translations[0] .= $unpoified; break; case 'msgstr_plural': $entry->translations[ $msgstr_index ] .= $unpoified; break; default: return false; } } else { return false; } } $have_translations = false; foreach ( $entry->translations as $t ) { if ( $t || ( '0' === $t ) ) { $have_translations = true; break; } } if ( false === $have_translations ) { $entry->translations = array(); } return array( 'entry' => $entry, 'lineno' => $lineno, ); } /** * @param resource $f * @param string $action * @return boolean */ function read_line( $f, $action = 'read' ) { static $last_line = ''; static $use_last_line = false; if ( 'clear' === $action ) { $last_line = ''; return true; } if ( 'put-back' === $action ) { $use_last_line = true; return true; } $line = $use_last_line ? $last_line : fgets( $f ); $line = ( "\r\n" === substr( $line, -2 ) ) ? rtrim( $line, "\r\n" ) . "\n" : $line; $last_line = $line; $use_last_line = false; return $line; } /** * @param wfTranslation_Entry $entry * @param string $po_comment_line */ function add_comment_to_entry( &$entry, $po_comment_line ) { $first_two = substr( $po_comment_line, 0, 2 ); $comment = trim( substr( $po_comment_line, 2 ) ); if ( '#:' === $first_two ) { $entry->references = array_merge( $entry->references, preg_split( '/\s+/', $comment ) ); } elseif ( '#.' === $first_two ) { $entry->extracted_comments = trim( $entry->extracted_comments . "\n" . $comment ); } elseif ( '#,' === $first_two ) { $entry->flags = array_merge( $entry->flags, preg_split( '/,\s*/', $comment ) ); } else { $entry->translator_comments = trim( $entry->translator_comments . "\n" . $comment ); } } /** * @param string $s * @return string */ public static function trim_quotes( $s ) { if ( '"' === substr( $s, 0, 1 ) ) { $s = substr( $s, 1 ); } if ( '"' === substr( $s, -1, 1 ) ) { $s = substr( $s, 0, -1 ); } return $s; } } endif; waf/pomo/entry.php000064400000010333152331132450010144 0ustar00 $value ) { $this->$varname = $value; } if ( isset( $args['plural'] ) && $args['plural'] ) { $this->is_plural = true; } if ( ! is_array( $this->translations ) ) { $this->translations = array(); } if ( ! is_array( $this->references ) ) { $this->references = array(); } if ( ! is_array( $this->flags ) ) { $this->flags = array(); } } /** * Generates a unique key for this entry * * @return string|bool the key or false if the entry is empty */ function key() { if ( null === $this->singular || '' === $this->singular ) { return false; } // Prepend context and EOT, like in MO files. $key = ! $this->context ? $this->singular : $this->context . "\4" . $this->singular; // Standardize on \n line endings. $key = str_replace( array( "\r\n", "\r" ), "\n", $key ); return $key; } /** * @param object $other */ function merge_with( &$other ) { $this->flags = array_unique( array_merge( $this->flags, $other->flags ) ); $this->references = array_unique( array_merge( $this->references, $other->references ) ); if ( $this->extracted_comments != $other->extracted_comments ) { $this->extracted_comments .= $other->extracted_comments; } } } endif; waf/pomo/translations.php000064400000025270152331132450011532 0ustar00key(); if ( false === $key ) { return false; } $this->entries[ $key ] = &$entry; return true; } /** * @param array|wfTranslation_Entry $entry * @return bool */ function add_entry_or_merge( $entry ) { if ( is_array( $entry ) ) { $entry = new wfTranslation_Entry( $entry ); } $key = $entry->key(); if ( false === $key ) { return false; } if ( isset( $this->entries[ $key ] ) ) { $this->entries[ $key ]->merge_with( $entry ); } else { $this->entries[ $key ] = &$entry; } return true; } /** * Sets $header PO header to $value * * If the header already exists, it will be overwritten * * TODO: this should be out of this class, it is gettext specific * * @param string $header header name, without trailing : * @param string $value header value, without trailing \n */ function set_header( $header, $value ) { $this->headers[ $header ] = $value; } /** * @param array $headers */ function set_headers( $headers ) { foreach ( $headers as $header => $value ) { $this->set_header( $header, $value ); } } /** * @param string $header */ function get_header( $header ) { return isset( $this->headers[ $header ] ) ? $this->headers[ $header ] : false; } /** * @param wfTranslation_Entry $entry */ function translate_entry( &$entry ) { $key = $entry->key(); return isset( $this->entries[ $key ] ) ? $this->entries[ $key ] : false; } /** * @param string $singular * @param string $context * @return string */ function translate( $singular, $context = null ) { $entry = new wfTranslation_Entry( array( 'singular' => $singular, 'context' => $context, ) ); $translated = $this->translate_entry( $entry ); return ( $translated && ! empty( $translated->translations ) ) ? $translated->translations[0] : $singular; } /** * Given the number of items, returns the 0-based index of the plural form to use * * Here, in the base Translations class, the common logic for English is implemented: * 0 if there is one element, 1 otherwise * * This function should be overridden by the subclasses. For example MO/PO can derive the logic * from their headers. * * @param integer $count number of items */ function select_plural_form( $count ) { return 1 == $count ? 0 : 1; } /** * @return int */ function get_plural_forms_count() { return 2; } /** * @param string $singular * @param string $plural * @param int $count * @param string $context */ function translate_plural( $singular, $plural, $count, $context = null ) { $entry = new wfTranslation_Entry( array( 'singular' => $singular, 'plural' => $plural, 'context' => $context, ) ); $translated = $this->translate_entry( $entry ); $index = $this->select_plural_form( $count ); $total_plural_forms = $this->get_plural_forms_count(); if ( $translated && 0 <= $index && $index < $total_plural_forms && is_array( $translated->translations ) && isset( $translated->translations[ $index ] ) ) { return $translated->translations[ $index ]; } else { return 1 == $count ? $singular : $plural; } } /** * Merge $other in the current object. * * @param Object $other Another Translation object, whose translations will be merged in this one (passed by reference). * @return void */ function merge_with( &$other ) { foreach ( $other->entries as $entry ) { $this->entries[ $entry->key() ] = $entry; } } /** * @param object $other */ function merge_originals_with( &$other ) { foreach ( $other->entries as $entry ) { if ( ! isset( $this->entries[ $entry->key() ] ) ) { $this->entries[ $entry->key() ] = $entry; } else { $this->entries[ $entry->key() ]->merge_with( $entry ); } } } } class wfGettext_Translations extends wfTranslations { /** * The gettext implementation of select_plural_form. * * It lives in this class, because there are more than one descendand, which will use it and * they can't share it effectively. * * @param int $count */ function gettext_select_plural_form( $count ) { if ( ! isset( $this->_gettext_select_plural_form ) || is_null( $this->_gettext_select_plural_form ) ) { list( $nplurals, $expression ) = $this->nplurals_and_expression_from_header( $this->get_header( 'Plural-Forms' ) ); $this->_nplurals = $nplurals; $this->_gettext_select_plural_form = $this->make_plural_form_function( $nplurals, $expression ); } return call_user_func( $this->_gettext_select_plural_form, $count ); } /** * @param string $header * @return array */ function nplurals_and_expression_from_header( $header ) { if ( preg_match( '/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches ) ) { $nplurals = (int) $matches[1]; $expression = trim( $matches[2] ); return array( $nplurals, $expression ); } else { return array( 2, 'n != 1' ); } } /** * Makes a function, which will return the right translation index, according to the * plural forms header * * @param int $nplurals * @param string $expression */ function make_plural_form_function( $nplurals, $expression ) { try { $handler = new wfPlural_Forms( rtrim( $expression, ';' ) ); return array( $handler, 'get' ); } catch ( Exception $e ) { // Fall back to default plural-form function. return $this->make_plural_form_function( 2, 'n != 1' ); } } /** * Adds parentheses to the inner parts of ternary operators in * plural expressions, because PHP evaluates ternary oerators from left to right * * @param string $expression the expression without parentheses * @return string the expression with parentheses added */ function parenthesize_plural_exression( $expression ) { $expression .= ';'; $res = ''; $depth = 0; for ( $i = 0; $i < strlen( $expression ); ++$i ) { $char = $expression[ $i ]; switch ( $char ) { case '?': $res .= ' ? ('; $depth++; break; case ':': $res .= ') : ('; break; case ';': $res .= str_repeat( ')', $depth ) . ';'; $depth = 0; break; default: $res .= $char; } } return rtrim( $res, ';' ); } /** * @param string $translation * @return array */ function make_headers( $translation ) { $headers = array(); // Sometimes \n's are used instead of real new lines. $translation = str_replace( '\n', "\n", $translation ); $lines = explode( "\n", $translation ); foreach ( $lines as $line ) { $parts = explode( ':', $line, 2 ); if ( ! isset( $parts[1] ) ) { continue; } $headers[ trim( $parts[0] ) ] = trim( $parts[1] ); } return $headers; } /** * @param string $header * @param string $value */ function set_header( $header, $value ) { parent::set_header( $header, $value ); if ( 'Plural-Forms' === $header ) { list( $nplurals, $expression ) = $this->nplurals_and_expression_from_header( $this->get_header( 'Plural-Forms' ) ); $this->_nplurals = $nplurals; $this->_gettext_select_plural_form = $this->make_plural_form_function( $nplurals, $expression ); } } } endif; if ( ! class_exists( 'wfNOOP_Translations', false ) ) : /** * Provides the same interface as Translations, but doesn't do anything */ class wfNOOP_Translations { var $entries = array(); var $headers = array(); function add_entry( $entry ) { return true; } /** * @param string $header * @param string $value */ function set_header( $header, $value ) { } /** * @param array $headers */ function set_headers( $headers ) { } /** * @param string $header * @return false */ function get_header( $header ) { return false; } /** * @param wfTranslation_Entry $entry * @return false */ function translate_entry( &$entry ) { return false; } /** * @param string $singular * @param string $context */ function translate( $singular, $context = null ) { return $singular; } /** * @param int $count * @return bool */ function select_plural_form( $count ) { return 1 == $count ? 0 : 1; } /** * @return int */ function get_plural_forms_count() { return 2; } /** * @param string $singular * @param string $plural * @param int $count * @param string $context */ function translate_plural( $singular, $plural, $count, $context = null ) { return 1 == $count ? $singular : $plural; } /** * @param object $other */ function merge_with( &$other ) { } } endif; waf/wfWAFIPBlocksController.php000064400000046632152331132450012451 0ustar00 $b->id, 'ipRange' => $b->ipRange, 'hostnamePattern' => $b->hostname, 'uaPattern' => $b->userAgent, 'refPattern' => $b->referrer, 'expiration' => $b->expiration); } // Country Blocks $countryBlocks = array(); $countryBlockEntries = wfBlock::countryBlocks(true); $countryBlocks['blocks'] = array(); foreach ($countryBlockEntries as $b) { $reason = __('Access from your area has been temporarily limited for security reasons', 'wordfence'); $countryBlocks['blocks'][] = array( 'id' => $b->id, 'countries' => $b->countries, 'blockLogin' => $b->blockLogin, 'blockSite' => $b->blockSite, 'reason' => $reason, 'expiration' => $b->expiration, ); } $countryBlocks['action'] = wfConfig::get('cbl_action', false); $countryBlocks['loggedInBlocked'] = wfConfig::get('cbl_loggedInBlocked', false); $countryBlocks['bypassRedirURL'] = wfConfig::get('cbl_bypassRedirURL', ''); $countryBlocks['bypassRedirDest'] = wfConfig::get('cbl_bypassRedirDest', ''); $countryBlocks['bypassViewURL'] = wfConfig::get('cbl_bypassViewURL', ''); $countryBlocks['redirURL'] = wfConfig::get('cbl_redirURL', ''); $countryBlocks['cookieVal'] = wfBlock::countryBlockingBypassCookieValue(); //Other Blocks $otherBlocks = array('blockedTime' => wfConfig::get('blockedTime', 0)); $otherBlockEntries = wfBlock::ipBlocks(true); $otherBlocks['blocks'] = array(); foreach ($otherBlockEntries as $b) { $reason = $b->reason; if ($b->type == wfBlock::TYPE_IP_MANUAL || $b->type == wfBlock::TYPE_IP_AUTOMATIC_PERMANENT) { $reason = __('Manual block by administrator', 'wordfence'); } $otherBlocks['blocks'][] = array( 'id' => $b->id, 'IP' => base64_encode(wfUtils::inet_pton($b->ip)), 'reason' => $reason, 'expiration' => $b->expiration, ); } //Lockouts $lockoutEntries = wfBlock::lockouts(true); $lockoutSecs = wfConfig::get('loginSec_lockoutMins') * 60; $lockouts = array('lockedOutTime' => $lockoutSecs, 'lockouts' => array()); foreach ($lockoutEntries as $l) { $lockouts['lockouts'][] = array( 'id' => $l->id, 'IP' => base64_encode(wfUtils::inet_pton($l->ip)), 'reason' => $l->reason, 'expiration' => $l->expiration, ); } // Save it try { $patternBlocksJSON = wfWAFUtils::json_encode($patternBlocks); wfWAF::getInstance()->getStorageEngine()->setConfig('patternBlocks', $patternBlocksJSON, 'synced'); $countryBlocksJSON = wfWAFUtils::json_encode($countryBlocks); wfWAF::getInstance()->getStorageEngine()->setConfig('countryBlocks', $countryBlocksJSON, 'synced'); $otherBlocksJSON = wfWAFUtils::json_encode($otherBlocks); wfWAF::getInstance()->getStorageEngine()->setConfig('otherBlocks', $otherBlocksJSON, 'synced'); $lockoutsJSON = wfWAFUtils::json_encode($lockouts); wfWAF::getInstance()->getStorageEngine()->setConfig('lockouts', $lockoutsJSON, 'synced'); wfWAF::getInstance()->getStorageEngine()->setConfig('advancedBlockingEnabled', wfConfig::get('firewallEnabled'), 'synced'); wfWAF::getInstance()->getStorageEngine()->setConfig('disableWAFIPBlocking', wfConfig::get('disableWAFIPBlocking'), 'synced'); } catch (Exception $e) { // Do nothing } $isSynchronizing = false; } /** * @param wfWAFRequest $request * @return bool|string If not blocked, returns false. Otherwise a string of the reason it was blocked or true. */ public function shouldBlockRequest($request) { // Checking the user whitelist is done before reaching this call $ip = $request->getIP(); //Check the system whitelist if ($this->checkForWhitelisted($ip)) { return false; } //Let the plugin handle these $wfFunc = $request->getQueryString('_wfsf'); if ($wfFunc == 'unlockEmail' || $wfFunc == 'unlockAccess') { // Can't check validity here, let it pass through to plugin level where it can return false; } $logHuman = $request->getQueryString('wordfence_lh'); if ($logHuman !== null) { return false; } //Start block checks $ipNum = wfWAFUtils::inet_pton($ip); $hostname = null; $ua = $request->getHeaders('User-Agent'); if ($ua === null) { $ua = ''; } $referer = $request->getHeaders('Referer'); if ($referer === null) { $referer = ''; } $isPaid = false; try { $isPaid = wfWAF::getInstance()->getStorageEngine()->getConfig('isPaid', null, 'synced'); $pluginABSPATH = wfWAF::getInstance()->getStorageEngine()->getConfig('pluginABSPATH', null, 'synced'); $patternBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('patternBlocks', null, 'synced'); $countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced'); $otherBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('otherBlocks', null, 'synced'); $lockoutsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('lockouts', null, 'synced'); } catch (Exception $e) { // Do nothing } if (isset($_SERVER['SCRIPT_FILENAME']) && (strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-admin/") === 0 || strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-content/") === 0 || strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-includes/") === 0)) { return false; //Rely on WordPress's own access control and blocking at the plugin level } // Pattern Blocks from the Advanced Blocking page (IP Range, UA, Referer) $patternBlocks = @wfWAFUtils::json_decode($patternBlocksJSON, true); if (is_array($patternBlocks)) { // Instead of a long block of if/else statements, using bitshifting to generate an expected value and a found value $ipRangeOffset = 1; $uaPatternOffset = 2; $refPatternOffset = 3; foreach ($patternBlocks as $b) { $expectedBits = 0; $foundBits = 0; if (isset($b['expiration']) && $b['expiration'] < time() && $b['expiration'] != 0) { continue; } if (!empty($b['ipRange'])) { $expectedBits |= (1 << $ipRangeOffset); $range = new wfWAFUserIPRange($b['ipRange']); if ($range->isIPInRange($ip)) { $foundBits |= (1 << $ipRangeOffset); } } if (!empty($b['hostnamePattern'])) { $expectedBits |= (1 << $ipRangeOffset); if ($hostname === null) { $hostname = wfWAFUtils::reverseLookup($ip); } if (preg_match(wfWAFUtils::patternToRegex($b['hostnamePattern']), $hostname)) { $foundBits |= (1 << $ipRangeOffset); } } if (!empty($b['uaPattern'])) { $expectedBits |= (1 << $uaPatternOffset); if (wfWAFUtils::isUABlocked($b['uaPattern'], $ua)) { $foundBits |= (1 << $uaPatternOffset); } } if (!empty($b['refPattern'])) { $expectedBits |= (1 << $refPatternOffset); if (wfWAFUtils::isRefererBlocked($b['refPattern'], $referer)) { $foundBits |= (1 << $refPatternOffset); } } if ($foundBits === $expectedBits && $expectedBits > 0) { return array('action' => self::WFWAF_BLOCK_UAREFIPRANGE, 'id' => $b['id']); } } } // End Pattern Blocks // Country Blocking if ($isPaid) { $countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true); if (is_array($countryBlocks) && isset($countryBlocks['blocks'])) { $blocks = $countryBlocks['blocks']; foreach ($blocks as $b) { $blockedCountries = $b['countries']; $bareRequestURI = wfWAFUtils::extractBareURI($request->getURI()); $bareBypassRedirURI = wfWAFUtils::extractBareURI($countryBlocks['bypassRedirURL']); $skipCountryBlocking = false; if ($bareBypassRedirURI && $bareRequestURI == $bareBypassRedirURI) { // Run this before country blocking because even if the user isn't blocked we need to set the bypass cookie so they can bypass future blocks. if ($countryBlocks['bypassRedirDest']) { setcookie('wfCBLBypass', $countryBlocks['cookieVal'], time() + (86400 * 365), '/', null, $this->isFullSSL(), true); return array('action' => self::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR, 'id' => $b['id']); } } $bareBypassViewURI = wfWAFUtils::extractBareURI($countryBlocks['bypassViewURL']); if ($bareBypassViewURI && $bareBypassViewURI == $bareRequestURI) { setcookie('wfCBLBypass', $countryBlocks['cookieVal'], time() + (86400 * 365), '/', null, $this->isFullSSL(), true); $skipCountryBlocking = true; } $bypassCookieSet = false; $bypassCookie = $request->getCookies('wfCBLBypass'); if (isset($bypassCookie) && $bypassCookie == $countryBlocks['cookieVal']) { $bypassCookieSet = true; } if (!$skipCountryBlocking && $blockedCountries && !$bypassCookieSet) { $isAuthRequest = (strpos($bareRequestURI, '/wp-login.php') !== false); $isXMLRPC = (strpos($bareRequestURI, '/xmlrpc.php') !== false); $isUserLoggedIn = wfWAF::getInstance()->parseAuthCookie() !== false; // If everything is checked, make sure this always runs. if ($countryBlocks['loggedInBlocked'] && $b['blockLogin'] && $b['blockSite']) { if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; } } // Block logged in users. if ($countryBlocks['loggedInBlocked'] && $isUserLoggedIn) { if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; } } // Block the login form itself and any attempt to authenticate. if ($b['blockLogin'] && $isAuthRequest) { if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; } } // Block requests that aren't to the login page, xmlrpc.php, or a user already logged in. if ($b['blockSite'] && !$isAuthRequest && !$isXMLRPC && !$isUserLoggedIn) { if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; } } // XMLRPC is inaccesible when public portion of the site and auth is disabled. if ($b['blockLogin'] && $b['blockSite'] && $isXMLRPC) { if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; } } // Any bypasses and other block possibilities will be checked at the plugin level once WordPress loads } } } } // End Country Blocking // Other Blocks $otherBlocks = @wfWAFUtils::json_decode($otherBlocksJSON, true); if (is_array($otherBlocks)) { $blocks = $otherBlocks['blocks']; $bareRequestURI = wfWAFUtils::extractBareURI($request->getURI()); $isAuthRequest = (stripos($bareRequestURI, '/wp-login.php') !== false); foreach ($blocks as $b) { if (isset($b['expiration']) && $b['expiration'] < time() && $b['expiration'] != 0) { continue; } if (base64_decode($b['IP']) != $ipNum) { continue; } if ($isAuthRequest && isset($b['wfsn']) && $b['wfsn']) { return array('action' => self::WFWAF_BLOCK_WFSN, 'id' => $b['id']); } return array('action' => (empty($b['reason']) ? '' : $b['reason']), 'id' => $b['id'], 'block' => true); } } // End Other Blocks // Lockouts $lockouts = @wfWAFUtils::json_decode($lockoutsJSON, true); if (is_array($lockouts)) { $lockouts = $lockouts['lockouts']; $isAuthRequest = (stripos($bareRequestURI, '/wp-login.php') !== false) || (stripos($bareRequestURI, '/xmlrpc.php') !== false); if ($isAuthRequest) { foreach ($lockouts as $l) { if (isset($l['expiration']) && $l['expiration'] < time()) { continue; } if (base64_decode($l['IP']) != $ipNum) { continue; } return array('action' => (empty($l['reason']) ? '' : $l['reason']), 'id' => $l['id'], 'lockout' => true); } } } // End Lockouts return false; } public function countryRedirURL($countryBlocks = null) { if (!isset($countryBlocks)) { try { $countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced'); } catch (Exception $e) { return false; } } $countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true); if (is_array($countryBlocks)) { if ($countryBlocks['action'] == 'redir') { return $countryBlocks['redirURL']; } } return false; } public function countryBypassRedirURL($countryBlocks = null) { if (!isset($countryBlocks)) { try { $countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced'); } catch (Exception $e) { return false; } } $countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true); if (is_array($countryBlocks)) { return $countryBlocks['bypassRedirDest']; } return false; } protected function checkForBlockedCountry($countryBlock, $ip, $bareRequestURI) { try { $homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced'); } catch (Exception $e) { //Do nothing } $bareRequestURI = rtrim($bareRequestURI, '/\\'); if ($country = $this->ip2Country($ip)) { $blocks = $countryBlock['blocks']; foreach ($blocks as $b) { foreach ($b['countries'] as $blocked) { if (strtoupper($blocked) == strtoupper($country)) { if ($countryBlock['action'] == 'redir') { $redirURL = $countryBlock['redirURL']; $eRedirHost = wfWAFUtils::extractHostname($redirURL); $isExternalRedir = false; if ($eRedirHost && $homeURL && $eRedirHost != wfWAFUtils::extractHostname($homeURL)) { $isExternalRedir = true; } if ((!$isExternalRedir) && rtrim(wfWAFUtils::extractBareURI($redirURL), '/\\') == $bareRequestURI){ //Is this the URI we want to redirect to, then don't block it //Do nothing } else { return array('action' => self::WFWAF_BLOCK_COUNTRY_REDIR); } } else { return array('action' => self::WFWAF_BLOCK_COUNTRY); } } } } } return false; } protected function checkForWhitelisted($ip) { try { $pluginABSPATH = wfWAF::getInstance()->getStorageEngine()->getConfig('pluginABSPATH', null, 'synced'); $serverIPsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('serverIPs', null, 'synced'); $whitelistedServiceIPsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedServiceIPs', null, 'synced'); } catch (Exception $e) { // Do nothing } $serverIPs = @wfWAFUtils::json_decode($serverIPsJSON, true); if (is_array($serverIPs)) { if ( (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == realpath($pluginABSPATH . DIRECTORY_SEPARATOR . 'wp-cron.php')) || //Safe -- plugin will do a final check to make sure the cron constant is defined (!empty($_GET['wordfence_syncAttackData'])) //Safe but plugin will do a final check to make sure it runs ) { foreach ($serverIPs as $testIP) { if (wfWAFUtils::inet_pton($ip) == wfWAFUtils::inet_pton($testIP)) { return true; } } } } $whitelistedServiceIPs = @wfWAFUtils::json_decode($whitelistedServiceIPsJSON, true); if (is_array($whitelistedServiceIPs)) { $wfIPWhitelist = $whitelistedServiceIPs; } else { $wordfenceLib = realpath(dirname(__FILE__) . '/../lib'); include($wordfenceLib . '/wfIPWhitelist.php'); /** @var array $wfIPWhitelist */ } foreach ($wfIPWhitelist as $group) { foreach ($group as $subnet) { if ($subnet instanceof wfWAFUserIPRange) { //Not currently reached if ($subnet->isIPInRange($ip)) { return true; } } elseif (wfWAFUtils::subnetContainsIP($subnet, $ip)) { return true; } } } return false; } protected function ip2Country($ip) { if (version_compare(phpversion(), '5.4.0', '<')) { return ''; } require_once(dirname(__FILE__) . '/wfWAFGeoIP2.php'); try { $geoip = @wfWAFGeoIP2::shared(); $code = @$geoip->countryCode($ip); return is_string($code) ? $code : ''; } catch (Exception $e) { //Ignore } return ''; } /** * Returns whether or not the site should be treated as if it's full-time SSL. * * @return bool */ protected function isFullSSL() { try { $is_ssl = false; //This is the same code from WP modified so we can use it here if ( isset( $_SERVER['HTTPS'] ) ) { if ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) { $is_ssl = true; } if ( '1' == $_SERVER['HTTPS'] ) { $is_ssl = true; } } elseif ( isset($_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { $is_ssl = true; } $homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced'); return $is_ssl && parse_url($homeURL, PHP_URL_SCHEME) === 'https'; } catch (Exception $e) { //Do nothing } return false; } } } waf/.htaccess000064400000000542152331132450007117 0ustar00 RewriteEngine On RewriteCond %{REQUEST_URI} \.php$ RewriteRule .* - [F,L,NC] Require all denied Order deny,allow Deny from all waf/bootstrap.php000064400000076346152331132450010066 0ustar00= 0) { $class = get_called_class(); $request = new $class(); } else { $request = new self(); } return parent::createFromGlobals($request); } public function getIP() { static $theIP = null; if (isset($theIP)) { return $theIP; } $ips = array(); $howGet = wfWAF::getInstance()->getStorageEngine()->getConfig('howGetIPs', null, 'synced'); if ($howGet) { if (is_string($howGet) && is_array($_SERVER) && array_key_exists($howGet, $_SERVER)) { $ips[] = array($_SERVER[$howGet], $howGet); } if ($howGet != 'REMOTE_ADDR') { $ips[] = array((is_array($_SERVER) && array_key_exists('REMOTE_ADDR', $_SERVER)) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1', 'REMOTE_ADDR'); } } else { $recommendedField = wfWAF::getInstance()->getStorageEngine()->getConfig('detectProxyRecommendation', null, 'synced'); if (!empty($recommendedField) && $recommendedField != 'UNKNOWN' && $recommendedField != 'DEFERRED') { if (isset($_SERVER[$recommendedField])) { $ips[] = array($_SERVER[$recommendedField], $recommendedField); } } $ips[] = array((is_array($_SERVER) && array_key_exists('REMOTE_ADDR', $_SERVER)) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1', 'REMOTE_ADDR'); if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips[] = array($_SERVER['HTTP_X_FORWARDED_FOR'], 'HTTP_X_FORWARDED_FOR'); } if (isset($_SERVER['HTTP_X_REAL_IP'])) { $ips[] = array($_SERVER['HTTP_X_REAL_IP'], 'HTTP_X_REAL_IP'); } } $cleanedIP = $this->_getCleanIPAndServerVar($ips); if (is_array($cleanedIP)) { list($ip, $variable) = $cleanedIP; $theIP = $ip; return $ip; } $theIP = $cleanedIP; return $cleanedIP; } /** * Expects an array of items. The items are either IPs or IPs separated by comma, space or tab. Or an array of IP's. * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found. * * @param array $arr * @return bool|mixed */ private function _getCleanIPAndServerVar($arr) { $privates = array(); //Store private addrs until end as last resort. foreach ($arr as $entry) { list($item, $var) = $entry; if (is_array($item)) { foreach ($item as $j) { // try verifying the IP is valid before stripping the port off if (!$this->_isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if ($this->_isValidIP($j)) { if ($this->_isIPv6MappedIPv4($j)) { $j = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($j)); } if ($this->_isPrivateIP($j)) { $privates[] = array($j, $var); } else { return array($j, $var); } } } continue; //This was an array so we can skip to the next item } $skipToNext = false; $trustedProxies = explode("\n", wfWAF::getInstance()->getStorageEngine()->getConfig('howGetIPs_trusted_proxies', '', 'synced')); foreach (array(',', ' ', "\t") as $char) { if (strpos($item, $char) !== false) { $sp = explode($char, $item); $sp = array_reverse($sp); foreach ($sp as $index => $j) { $j = trim($j); if (!$this->_isValidIP($j)) { $j = preg_replace('/:\d+$/', '', $j); //Strip off port } if ($this->_isValidIP($j)) { if ($this->_isIPv6MappedIPv4($j)) { $j = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($j)); } foreach ($trustedProxies as $proxy) { if (!empty($proxy)) { if (wfWAFUtils::subnetContainsIP($proxy, $j) && $index < count($sp) - 1) { continue 2; } } } if ($this->_isPrivateIP($j)) { $privates[] = array($j, $var); } else { return array($j, $var); } } } $skipToNext = true; break; } } if ($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything. if (!$this->_isValidIP($item)) { $item = preg_replace('/:\d+$/', '', $item); //Strip off port } if ($this->_isValidIP($item)) { if ($this->_isIPv6MappedIPv4($item)) { $item = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($item)); } if ($this->_isPrivateIP($item)) { $privates[] = array($item, $var); } else { return array($item, $var); } } } if (sizeof($privates) > 0) { return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function. } return false; } /** * @param string $ip * @return bool */ private function _isValidIP($ip) { return filter_var($ip, FILTER_VALIDATE_IP) !== false; } /** * @param string $ip * @return bool */ private function _isIPv6MappedIPv4($ip) { return preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i', $ip) > 0; } /** * @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1) * @return bool */ private function _isPrivateIP($ip) { // Run this through the preset list for IPv4 addresses. if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) { $wordfenceLib = realpath(dirname(__FILE__) . '/../lib'); include($wordfenceLib . '/wfIPWhitelist.php'); // defines $wfIPWhitelist $private = $wfIPWhitelist['private']; foreach ($private as $a) { if (wfWAFUtils::subnetContainsIP($a, $ip)) { return true; } } } return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) !== false && filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false; } } class wfWAFWordPressObserver extends wfWAFBaseObserver { public function beforeRunRules() { // Whitelisted URLs (in WAF config) $whitelistedURLs = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLs', null, 'livewaf'); if ($whitelistedURLs) { $whitelistPattern = ""; foreach ($whitelistedURLs as $whitelistedURL) { $whitelistPattern .= preg_replace('/\\\\\*/', '.*?', preg_quote($whitelistedURL, '/')) . '|'; } $whitelistPattern = '/^(?:' . wfWAFUtils::substr($whitelistPattern, 0, -1) . ')$/i'; wfWAFRule::create(wfWAF::getInstance(), 0x8000000, 'rule', 'whitelist', 0, 'User Supplied Allowlisted URL', 'allow', new wfWAFRuleComparisonGroup( new wfWAFRuleComparison(wfWAF::getInstance(), 'match', $whitelistPattern, array( 'request.uri', )) ) )->evaluate(); } // Whitelisted IPs (Wordfence config) $whitelistedIPs = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedIPs', null, 'synced'); if ($whitelistedIPs) { if (!is_array($whitelistedIPs)) { $whitelistedIPs = explode(',', $whitelistedIPs); } foreach ($whitelistedIPs as $whitelistedIP) { $ipRange = new wfWAFUserIPRange($whitelistedIP); if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) { throw new wfWAFAllowException('Wordfence allowlisted IP.'); } } } // Check plugin blocking if ($result = wfWAF::getInstance()->willPerformFinalAction(wfWAF::getInstance()->getRequest())) { if ($result === true) { $result = 'Not available'; } // Should not happen but can if the reason in the blocks table is empty wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('finalAction' => $result))); } } public function afterRunRules() { //Blacklist if (!wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking')) { $blockedPrefixes = wfWAF::getInstance()->getStorageEngine()->getConfig('blockedPrefixes', null, 'transient'); if ($blockedPrefixes && wfWAF::getInstance()->getStorageEngine()->getConfig('isPaid', null, 'synced')) { $blockedPrefixes = base64_decode($blockedPrefixes); if ($this->_prefixListContainsIP($blockedPrefixes, wfWAF::getInstance()->getRequest()->getIP()) !== false) { $allowedCacheJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('blacklistAllowedCache', '', 'transient'); $allowedCache = @json_decode($allowedCacheJSON, true); if (!is_array($allowedCache)) { $allowedCache = array(); } $cacheTest = base64_encode(wfWAFUtils::inet_pton(wfWAF::getInstance()->getRequest()->getIP())); if (!in_array($cacheTest, $allowedCache)) { $guessSiteURL = sprintf('%s://%s/', wfWAF::getInstance()->getRequest()->getProtocol(), wfWAF::getInstance()->getRequest()->getHost()); try { $request = new wfWAFHTTP(); $response = wfWAFHTTP::get(WFWAF_API_URL_SEC . "?" . http_build_query(array( 'action' => 'is_ip_blacklisted', 'ip' => wfWAF::getInstance()->getRequest()->getIP(), 'k' => wfWAF::getInstance()->getStorageEngine()->getConfig('apiKey', null, 'synced'), 's' => wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL, 'h' => wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL, 't' => microtime(true), 'lang' => wfWAF::getInstance()->getStorageEngine()->getConfig('WPLANG', null, 'synced'), ), null, '&'), $request); if ($response instanceof wfWAFHTTPResponse && $response->getBody()) { $jsonData = wfWAFUtils::json_decode($response->getBody(), true); if (array_key_exists('data', $jsonData)) { if (preg_match('/^block:(\d+)$/i', $jsonData['data'], $matches)) { wfWAF::getInstance()->getStorageEngine()->blockIP((int)$matches[1] + time(), wfWAF::getInstance()->getRequest()->getIP(), wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); $e = new wfWAFBlockException(); $e->setFailedRules(array('blocked')); $e->setRequest(wfWAF::getInstance()->getRequest()); throw $e; } else { //Allowed, cache until the next prefix list refresh $allowedCache[] = $cacheTest; wfWAF::getInstance()->getStorageEngine()->setConfig('blacklistAllowedCache', json_encode($allowedCache), 'transient'); } } } } catch (wfWAFHTTPTransportException $e) { error_log($e->getMessage()); } } } } } //wfWAFLogException $watchedIPs = wfWAF::getInstance()->getStorageEngine()->getConfig('watchedIPs', null, 'transient'); if ($watchedIPs) { if (!is_array($watchedIPs)) { $watchedIPs = explode(',', $watchedIPs); } foreach ($watchedIPs as $watchedIP) { $ipRange = new wfWAFUserIPRange($watchedIP); if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) { throw new wfWAFLogException('Wordfence watched IP.'); } } } if ($reason = wfWAF::getInstance()->getRequest()->getMetadata('finalAction')) { $e = new wfWAFBlockException($reason['action']); $e->setRequest(wfWAF::getInstance()->getRequest()); throw $e; } } private function _prefixListContainsIP($prefixList, $ip) { $size = ord(wfWAFUtils::substr($prefixList, 0, 1)); $sha256 = hash('sha256', wfWAFUtils::inet_pton($ip), true); $p = wfWAFUtils::substr($sha256, 0, $size); $count = ceil((wfWAFUtils::strlen($prefixList) - 1) / $size); $low = 0; $high = $count - 1; while ($low <= $high) { $mid = (int) (($high + $low) / 2); $val = wfWAFUtils::substr($prefixList, 1 + $mid * $size, $size); $cmp = strcmp($val, $p); if ($cmp < 0) { $low = $mid + 1; } else if ($cmp > 0) { $high = $mid - 1; } else { return $mid; } } return false; } } /** * */ class wfWAFWordPress extends wfWAF { /** @var wfWAFRunException */ private $learningModeAttackException; /** * @param wfWAFBlockException $e * @param int $httpCode */ public function blockAction($e, $httpCode = 403, $redirect = false, $template = null) { $failedRules = $e->getFailedRules(); if (!is_array($failedRules)) { $failedRules = array(); } if ($this->isInLearningMode() && !$e->getRequest()->getMetadata('finalAction') && !in_array('blocked', $failedRules)) { register_shutdown_function(array( $this, 'whitelistFailedRulesIfNot404', )); $this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest()); $this->setLearningModeAttackException($e); } else { if (empty($failedRules)) { $finalAction = $e->getRequest()->getMetadata('finalAction'); if (is_array($finalAction)) { $isLockedOut = isset($finalAction['lockout']) && $finalAction['lockout']; $finalAction = $finalAction['action']; if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) { $redirect = wfWAFIPBlocksController::currentController()->countryRedirURL(); } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) { $redirect = wfWAFIPBlocksController::currentController()->countryBypassRedirURL(); } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Advanced blocking in effect.', '503Time' => 3600))); $httpCode = 503; } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Access from your area has been temporarily limited for security reasons.', '503Time' => 3600))); $httpCode = 503; } else if (is_string($finalAction) && strlen($finalAction) > 0) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => $finalAction, '503Time' => 3600))); $httpCode = 503; if ($isLockedOut) { parent::blockAction($e, $httpCode, $redirect, '503-lockout'); //exits } } } } else if (array_search('blocked', $failedRules) !== false) { parent::blockAction($e, $httpCode, $redirect, '403-blacklist'); //exits } parent::blockAction($e, $httpCode, $redirect, $template); } } /** * @param wfWAFBlockXSSException $e * @param int $httpCode */ public function blockXSSAction($e, $httpCode = 403, $redirect = false) { if ($this->isInLearningMode() && !$e->getRequest()->getMetadata('finalAction')) { register_shutdown_function(array( $this, 'whitelistFailedRulesIfNot404', )); $this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest()); $this->setLearningModeAttackException($e); } else { $failedRules = $e->getFailedRules(); if (empty($failedRules)) { $finalAction = $e->getRequest()->getMetadata('finalAction'); if (is_array($finalAction)) { $finalAction = $finalAction['action']; if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) { $redirect = wfWAFIPBlocksController::currentController()->countryRedirURL(); } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) { $redirect = wfWAFIPBlocksController::currentController()->countryBypassRedirURL(); } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Advanced blocking in effect.', '503Time' => 3600))); $httpCode = 503; } else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Access from your area has been temporarily limited for security reasons.', '503Time' => 3600))); $httpCode = 503; } else if (is_string($finalAction) && strlen($finalAction) > 0) { wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => $finalAction, '503Time' => 3600))); $httpCode = 503; } } } parent::blockXSSAction($e, $httpCode, $redirect); } } private function isCli() { return (php_sapi_name()==='cli') || !array_key_exists('REQUEST_METHOD', $_SERVER); } /** * */ public function runCron() { if($this->isCli()){ return; } /** * Removed sending attack data. Attack data is sent in @see wordfence::veryFirstAction */ $storage = $this->getStorageEngine(); $cron = (array) $storage->getConfig('cron', null, 'livewaf'); $run = array(); $updated = false; if (is_array($cron)) { /** @var wfWAFCronEvent $event */ $cronDeduplication = array(); foreach ($cron as $index => $event) { if (is_object($event) && $event instanceof wfWAFCronEvent) { $event->setWaf($this); if ($event->isInPast()) { $run[$index] = $event; $newEvent = $event->reschedule(); $className = get_class($newEvent); if ($newEvent instanceof wfWAFCronEvent && $newEvent !== $event && !in_array($className, $cronDeduplication)) { $cron[$index] = $newEvent; $cronDeduplication[] = $className; $updated = true; } else { unset($cron[$index]); $updated = true; } } else { $className = get_class($event); if (in_array($className, $cronDeduplication)) { unset($cron[$index]); $updated = true; } else { $cronDeduplication[] = $className; } } } else { //Remove bad/corrupt records unset($cron[$index]); $updated = true; } } } $storage->setConfig('cron', $cron, 'livewaf'); if ($updated && method_exists($storage, 'saveConfig')) { $storage->saveConfig('livewaf'); } foreach ($run as $index => $event) { $event->fire(); } } /** * */ public function whitelistFailedRulesIfNot404() { /** @var WP_Query $wp_query */ global $wp_query; if (defined('ABSPATH') && isset($wp_query) && class_exists('WP_Query') && $wp_query instanceof WP_Query && method_exists($wp_query, 'is_404') && $wp_query->is_404() && function_exists('is_admin') && !is_admin()) { return; } $this->whitelistFailedRules(); } /** * @param $ip * @return mixed */ public function isIPBlocked($ip) { return parent::isIPBlocked($ip); } /** * @param wfWAFRequest $request * @return bool|string false if it should not be blocked, otherwise true or a reason for blocking */ public function willPerformFinalAction($request) { try { $disableWAFIPBlocking = $this->getStorageEngine()->getConfig('disableWAFIPBlocking', null, 'synced'); $advancedBlockingEnabled = $this->getStorageEngine()->getConfig('advancedBlockingEnabled', null, 'synced'); } catch (Exception $e) { return false; } if ($disableWAFIPBlocking || !$advancedBlockingEnabled) { return false; } return wfWAFIPBlocksController::currentController()->shouldBlockRequest($request); } public function uninstall() { parent::uninstall(); @unlink(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess'); @unlink(rtrim(WFWAF_LOG_PATH, '/') . '/template.php'); @unlink(rtrim(WFWAF_LOG_PATH, '/') . '/GeoLite2-Country.mmdb'); self::_recursivelyRemoveWflogs(''); //Removes any remaining files and the directory itself } /** * Removes a path within wflogs, recursing as necessary. * * @param string $file * @param array $processedDirs * @return array The list of removed files/folders. */ private static function _recursivelyRemoveWflogs($file, $processedDirs = array()) { if (preg_match('~(?:^|/|\\\\)\.\.(?:/|\\\\|$)~', $file)) { return array(); } if (stripos(WFWAF_LOG_PATH, 'wflogs') === false) { //Sanity check -- if not in a wflogs folder, user will have to do removal manually return array(); } $path = rtrim(WFWAF_LOG_PATH, '/') . '/' . $file; if (is_link($path)) { if (@unlink($path)) { return array($file); } return array(); } if (is_dir($path)) { $real = realpath($file); if (in_array($real, $processedDirs)) { return array(); } $processedDirs[] = $real; $count = 0; $dir = opendir($path); if ($dir) { $contents = array(); while ($sub = readdir($dir)) { if ($sub == '.' || $sub == '..') { continue; } $contents[] = $sub; } closedir($dir); $filesRemoved = array(); foreach ($contents as $f) { $removed = self::_recursivelyRemoveWflogs($file . '/' . $f, $processedDirs); $filesRemoved = array($filesRemoved, $removed); } } if (@rmdir($path)) { $filesRemoved[] = $file; } return $filesRemoved; } if (@unlink($path)) { return array($file); } return array(); } public function fileList() { $fileList = parent::fileList(); $fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess'; $fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/template.php'; $fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/GeoLite2-Country.mmdb'; return $fileList; } /** * @return wfWAFRunException */ public function getLearningModeAttackException() { return $this->learningModeAttackException; } /** * @param wfWAFRunException $learningModeAttackException */ public function setLearningModeAttackException($learningModeAttackException) { $this->learningModeAttackException = $learningModeAttackException; } public static function permissions() { if (defined('WFWAF_LOG_FILE_MODE')) { return WFWAF_LOG_FILE_MODE; } if (class_exists('wfWAFStorageFile') && method_exists('wfWAFStorageFile', 'permissions')) { return wfWAFStorageFile::permissions(); } static $_cachedPermissions = null; if ($_cachedPermissions === null) { if (defined('WFWAF_LOG_PATH')) { $template = rtrim(WFWAF_LOG_PATH . '/') . '/template.php'; if (file_exists($template)) { $stat = @stat($template); if ($stat !== false) { $mode = $stat[2]; $updatedMode = 0600; if (($mode & 0020) == 0020) { $updatedMode = $updatedMode | 0060; } $_cachedPermissions = $updatedMode; return $updatedMode; } } } return 0660; } return $_cachedPermissions; } public static function writeHtaccess() { @file_put_contents(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess', << Require all denied Order deny,allow Deny from all APACHE ); @chmod(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess', (wfWAFWordPress::permissions() | 0444)); } public function getGlobal($global) { if (wfWAFUtils::strpos($global, '.') === false) { return null; } list($prefix, $_global) = explode('.', $global); switch ($prefix) { case 'wordpress': if ($_global === 'core') { return $this->getStorageEngine()->getConfig('wordpressVersion', null, 'synced'); } else if ($_global === 'plugins') { return $this->getStorageEngine()->getConfig('wordpressPluginVersions', null, 'synced'); } else if ($_global === 'themes') { return $this->getStorageEngine()->getConfig('wordpressThemeVersions', null, 'synced'); } break; } return parent::getGlobal($global); } } class wfWAFWordPressStorageMySQL extends wfWAFStorageMySQL { public function getSerializedParams() { $params = parent::getSerializedParams(); $params[] = 'wordpressPluginVersions'; $params[] = 'wordpressThemeVersions'; return $params; } public function getAutoloadParams() { $params = parent::getAutoloadParams(); $params['synced'][] = 'wordpressVersion'; $params['synced'][] = 'wordpressPluginVersions'; $params['synced'][] = 'wordpressThemeVersions'; return $params; } } class wfWAFWordPressI18n implements wfWAFI18nEngine { protected $translations; /** @var wfWAFStorageInterface */ private $storageEngine; /** * @var wfMO */ private $mo; /** * @param wfWAFStorageInterface $storageEngine */ public function __construct($storageEngine) { $this->storageEngine = $storageEngine; $this->loadTranslations(); } /** * @param string $text * @return string */ public function __($text) { if (!$this->storageEngine->getConfig('wordfenceI18n', true, 'synced')) { return $text; } if ($this->mo) { $translated = $this->mo->translate($text); if ($translated) { return $translated; } } return $text; } protected function loadTranslations() { require_once dirname(__FILE__) . '/pomo/mo.php'; $currentLocale = $this->storageEngine->getConfig('WPLANG', '', 'synced'); // Find translation file for the current language. $mofile = dirname(__FILE__) . '/../languages/wordfence-' . $currentLocale . '.mo'; if (!file_exists($mofile)) { // No translation, use the default $mofile = dirname(__FILE__) . '/../languages/wordfence.mo'; } $this->mo = new wfMO(); return $this->mo->import_from_file( $mofile ); } } if (!defined('WFWAF_LOG_PATH')) { if (!defined('WP_CONTENT_DIR')) { //Loading before WordPress exit(); } define('WFWAF_LOG_PATH', WP_CONTENT_DIR . '/wflogs/'); } if (!is_dir(WFWAF_LOG_PATH)) { @mkdir(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755)); @chmod(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755)); wfWAFWordPress::writeHtaccess(); } try { if (!defined('WFWAF_STORAGE_ENGINE') && WF_IS_WP_ENGINE) { define('WFWAF_STORAGE_ENGINE', 'mysqli'); } if (defined('WFWAF_STORAGE_ENGINE')) { switch (WFWAF_STORAGE_ENGINE) { case 'mysqli': // Find the wp-config.php if (is_dir(dirname(WFWAF_LOG_PATH))) { if (file_exists(dirname(WFWAF_LOG_PATH) . '/../wp-config.php')) { $wfWAFDBCredentials = wfWAFUtils::extractCredentialsWPConfig(dirname(WFWAF_LOG_PATH) . '/../wp-config.php'); } else if (file_exists(dirname(WFWAF_LOG_PATH) . '/../../wp-config.php')) { $wfWAFDBCredentials = wfWAFUtils::extractCredentialsWPConfig(dirname(WFWAF_LOG_PATH) . '/../../wp-config.php'); } } else if (!empty($_SERVER['DOCUMENT_ROOT'])) { if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php')) { $wfWAFDBCredentials = wfWAFUtils::extractCredentialsWPConfig($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php'); } else if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/../wp-config.php')) { $wfWAFDBCredentials = wfWAFUtils::extractCredentialsWPConfig($_SERVER['DOCUMENT_ROOT'] . '/../wp-config.php'); } } if (!empty($wfWAFDBCredentials)) { $wfWAFStorageEngine = new wfWAFWordPressStorageMySQL(new wfWAFStorageEngineMySQLi(), $wfWAFDBCredentials['tablePrefix']); $wfWAFStorageEngine->getDb()->connect( $wfWAFDBCredentials['user'], $wfWAFDBCredentials['pass'], $wfWAFDBCredentials['database'], !empty($wfWAFDBCredentials['ipv6']) ? '[' . $wfWAFDBCredentials['host'] . ']' : $wfWAFDBCredentials['host'], !empty($wfWAFDBCredentials['port']) ? $wfWAFDBCredentials['port'] : null, !empty($wfWAFDBCredentials['socket']) ? $wfWAFDBCredentials['socket'] : null ); if (array_key_exists('charset', $wfWAFDBCredentials)) { $wfWAFStorageEngine->getDb() ->setCharset($wfWAFDBCredentials['charset'], !empty($wfWAFDBCredentials['collation']) ? $wfWAFDBCredentials['collation'] : ''); } if (function_exists('get_option')) { $wfWAFStorageEngine->installing = !get_option('wordfenceActivated'); $wfWAFStorageEngine->getDb()->installing = $wfWAFStorageEngine->installing; } } else { unset($wfWAFDBCredentials); } break; } } if (empty($wfWAFStorageEngine)) { $wfWAFStorageEngine = new wfWAFStorageFile( WFWAF_LOG_PATH . 'attack-data.php', WFWAF_LOG_PATH . 'ips.php', WFWAF_LOG_PATH . 'config.php', WFWAF_LOG_PATH . 'rules.php', WFWAF_LOG_PATH . 'wafRules.rules' ); } wfWAF::setSharedStorageEngine($wfWAFStorageEngine); wfWAF::setInstance(new wfWAFWordPress(wfWAFWordPressRequest::createFromGlobals(), wfWAF::getSharedStorageEngine())); wfWAF::getInstance()->getEventBus()->attach(new wfWAFWordPressObserver); if ($wfWAFStorageEngine instanceof wfWAFStorageFile) { $rulesFiles = array( WFWAF_LOG_PATH . 'rules.php', // WFWAF_PATH . 'rules.php', ); foreach ($rulesFiles as $rulesFile) { if (!file_exists($rulesFile) && !wfWAF::getInstance()->isReadOnly()) { @touch($rulesFile); } @chmod($rulesFile, (wfWAFWordPress::permissions() | 0444)); if (is_writable($rulesFile)) { wfWAF::getInstance()->setCompiledRulesFile($rulesFile); break; } } } else if ($wfWAFStorageEngine instanceof wfWAFStorageMySQL) { $wfWAFStorageEngine->runMigrations(); $wfWAFStorageEngine->setDefaults(); } if (!wfWAF::getInstance()->isReadOnly()) { if (wfWAF::getInstance()->getStorageEngine()->needsInitialRules()) { try { if (wfWAF::getInstance()->getStorageEngine()->getConfig('apiKey', null, 'synced') !== null && wfWAF::getInstance()->getStorageEngine()->getConfig('createInitialRulesDelay', null, 'transient') < time() ) { $event = new wfWAFCronFetchRulesEvent(time() - 60); $event->setWaf(wfWAF::getInstance()); $event->fire(); wfWAF::getInstance()->getStorageEngine()->setConfig('createInitialRulesDelay', time() + (5 * 60), 'transient'); } } catch (wfWAFBuildRulesException $e) { // Log this somewhere error_log($e->getMessage()); } catch (Exception $e) { // Suppress this error_log($e->getMessage()); } } } if (WFWAF_DEBUG && file_exists(wfWAF::getInstance()->getStorageEngine()->getRulesDSLCacheFile())) { try { wfWAF::getInstance()->updateRuleSet(file_get_contents(wfWAF::getInstance()->getStorageEngine()->getRulesDSLCacheFile()), false); } catch (wfWAFBuildRulesException $e) { $GLOBALS['wfWAFDebugBuildException'] = $e; } catch (Exception $e) { $GLOBALS['wfWAFDebugBuildException'] = $e; } } wfWAFI18n::setInstance(new wfWAFI18n(new wfWAFWordPressI18n($wfWAFStorageEngine))); try { wfWAF::getInstance()->run(); } catch (wfWAFBuildRulesException $e) { // Log this error_log($e->getMessage()); } catch (Exception $e) { // Suppress this error_log($e->getMessage()); } } catch (wfWAFStorageFileConfigException $e) { // Let this request through for now error_log($e->getMessage()); } catch (wfWAFStorageEngineMySQLiException $e) { // Let this request through for now error_log($e->getMessage()); } catch (wfWAFStorageFileException $e) { // We need to choose another storage engine here. } define('WFWAF_RUN_COMPLETE', true); } waf/wfWAFGeoIP2.php000064400000002645152331132450007760 0ustar00_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb'); return; } } catch (Exception $e) { //Fall through to bundled copy } $this->_reader = new Reader(__DIR__ . '/../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway } /** * Returns the database version in use. This is the timestamp of when it was packaged. * * @return null|int */ public function version() { try { return $this->_reader->metadata()->buildEpoch; } catch (Exception $e) { //Fall through } return null; } /** * Returns the country code for the IP if known. * * @param string $ip * @return null|string */ public function countryCode($ip) { try { $record = $this->_reader->country($ip); return $record->country->isoCode; } catch (Exception $e) { //Fall through } return null; } } } readme.txt000064400000253017152331132450006551 0ustar00=== Wordfence Security - Firewall & Malware Scan === Contributors: mmaunder, wfryan, wfmatt, wfmattr Tags: security, firewall, malware scanner, web application firewall, two factor authentication, block hackers, country blocking, clean hacked site, blocklist, waf, login security Requires at least: 3.9 Requires PHP: 5.3 Tested up to: 5.7 Stable tag: 7.5.2 Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more. == Description == ### THE MOST POPULAR WORDPRESS FIREWALL & SECURITY SCANNER Wordfence includes an endpoint firewall and malware scanner that were built from the ground up to protect WordPress. Our Threat Defense Feed arms Wordfence with the newest firewall rules, malware signatures and malicious IP addresses it needs to keep your website safe. Rounded out by 2FA and a suite of additional features, Wordfence is the most comprehensive WordPress security solution available. #### WORDPRESS FIREWALL * Web Application Firewall identifies and blocks malicious traffic. Built and maintained by a large team focused 100% on WordPress security. * [Premium] Real-time firewall rule and malware signature updates via the Threat Defense Feed (free version is delayed by 30 days). * [Premium] Real-time IP Blocklist blocks all requests from the most malicious IPs, protecting your site while reducing load. * Protects your site at the endpoint, enabling deep integration with WordPress. Unlike cloud alternatives does not break encryption, cannot be bypassed and cannot leak data. * Integrated malware scanner blocks requests that include malicious code or content. * Protection from brute force attacks by limiting login attempts. #### WORDPRESS SECURITY SCANNER * Malware scanner checks core files, themes and plugins for malware, bad URLs, backdoors, SEO spam, malicious redirects and code injections. * [Premium] Real-time malware signature updates via the Threat Defense Feed (free version is delayed by 30 days). * Compares your core files, themes and plugins with what is in the WordPress.org repository, checking their integrity and reporting any changes to you. * Repair files that have changed by overwriting them with a pristine, original version. Delete any files that don’t belong easily within the Wordfence interface. * Checks your site for known security vulnerabilities and alerts you to any issues. Also alerts you to potential security issues when a plugin has been closed or abandoned. * Checks your content safety by scanning file contents, posts and comments for dangerous URLs and suspicious content. * [Premium] Checks to see if your site or IP have been blocklisted for malicious activity, generating spam or other security issue. #### LOGIN SECURITY * Two-factor authentication (2FA), one of the most secure forms of remote system authentication available via any TOTP-based authenticator app or service. * Login Page CAPTCHA stops bots from logging in. * Disable or add 2FA to XML-RPC. * Block logins for administrators using known compromised passwords. #### WORDFENCE CENTRAL * Wordfence Central is a powerful and efficient way to manage the security for multiple sites in one place. * Efficiently assess the security status of all your websites in one view. View detailed security findings without leaving Wordfence Central. * Powerful templates make configuring Wordfence a breeze. * Highly configurable alerts can be delivered via email, SMS or Slack. Improve the signal to noise ratio by leveraging severity level options and a daily digest option. * Track and alert on important security events including administrator logins, breached password usage and surges in attack activity. * Free to use for unlimited sites. #### SECURITY TOOLS * With Live Traffic, monitor visits and hack attempts not shown in other analytics packages in real time; including origin, their IP address, the time of day and time spent on your site. * Block attackers by IP or build advanced rules based on IP Range, Hostname, User Agent and Referrer. * Country blocking available with Wordfence Premium. == Installation == Secure your website using the following steps to install Wordfence: 1. Install Wordfence automatically or by uploading the ZIP file. 2. Activate the Wordfence through the 'Plugins' menu in WordPress. Wordfence is now activated. 3. Go to the scan menu and start your first scan. Scheduled scanning will also be enabled. 4. Once your first scan has completed, a list of threats will appear. Go through them one by one to secure your site. 5. Visit the Wordfence options page to enter your email address so that you can receive email security alerts. 6. Optionally, change your security level or adjust the advanced options to set individual scanning and protection options for your site. 7. Click the "Live Traffic" menu option to watch your site activity in real-time. Situational awareness is an important part of website security. To install Wordfence on WordPress Multi-Site installations: 1. Install Wordfence via the plugin directory or by uploading the ZIP file. 2. Network Activate Wordfence. This step is important because until you network activate it, your sites will see the plugin option on their plugins menu. Once activated that option disappears. 3. Now that Wordfence is network activated it will appear on your Network Admin menu. Wordfence will not appear on any individual site's menu. 4. Go to the "Scan" menu and start your first scan. 5. Wordfence will do a scan of all files in your WordPress installation including those in the blogs.dir directory of your individual sites. 6. Live Traffic will appear for ALL sites in your network. If you have a heavily trafficked system you may want to disable live traffic which will stop logging to the DB. 7. Firewall rules and login rules apply to the WHOLE system. So if you fail a login on site1.example.com and site2.example.com it counts as 2 failures. Crawler traffic is counted between blogs, so if you hit three sites in the network, all the hits are totalled and that counts as the rate you're accessing the system. == Frequently Asked Questions == [Visit our website to access our official documentation which includes security feature descriptions, common solutions and comprehensive help.](https://wordfence.com/help/) = How does Wordfence Security protect sites from attackers? = The WordPress security plugin provides the best protection available for your website. Powered by the constantly updated Threat Defense Feed, Wordfence Firewall stops you from getting hacked. Wordfence Scan leverages the same proprietary feed, alerting you quickly about security issues or if your site is compromised. The Live Traffic view gives you real-time visibility into traffic and hack attempts on your website. A deep set of additional tools round out the most comprehensive WordPress security solution available. = What features does Wordfence Premium enable? = We offer a Premium API key that gives you real-time updates to the Threat Defense Feed which includes a real-time IP blocklist, firewall rules, and malware signatures. Premium support, country blocking, more frequent scans, and spam and spamvertising checks are also included. [Click here to sign-up for Wordfence Premium now](http://www.wordfence.com/) or simply install Wordfence free and start protecting your website. = How does the Wordfence WordPress Firewall protect websites? = * Web Application Firewall stops you from getting hacked by identifying malicious traffic, blocking attackers before they can access your website. * Threat Defense Feed automatically updates firewall rules that protect you from the latest threats. Premium members receive the real-time version. * Block common WordPress security threats like fake Googlebots, malicious scans from hackers and botnets. = What checks does the Wordfence Security Scanner perform? = * Scans core files, themes and plugins against WordPress.org repository versions to check their integrity. Verify security of your source. * See how files have changed. Optionally repair changed files that are security threats. * Scans for signatures of over 44,000 known malware variants that are known WordPress security threats. * Scans for many known backdoors that create security holes including C99, R57, RootShell, Crystal Shell, Matamu, Cybershell, W4cking, Sniper, Predator, Jackal, Phantasma, GFS, Dive, Dx and many more. * Continuously scans for malware and phishing URL’s including all URLs on the Google Safe Browsing List in all your comments, posts and files that are security threats. * Scans for heuristics of backdoors, trojans, suspicious code and other security issues. = What security monitoring features does Wordfence include? = * See all your traffic in real-time, including robots, humans, 404 errors, logins and logouts and who is consuming most of your content. Enhances your situational awareness of which security threats your site is facing. * A real-time view of all traffic including automated bots that often constitute security threats that Javascript analytics packages never show you. * Real-time traffic includes reverse DNS and city-level geolocation. Know which geographic area security threats originate from. * Monitors disk space which is related to security because many DDoS attacks attempt to consume all disk space to create denial of service. = What login security features are included = * See all your traffic in real-time, including robots, humans, 404 errors, logins and logouts and who is consuming most of your content. Enhances your situational awareness of which security threats your site is facing. * A real-time view of all traffic including automated bots that often constitute security threats that Javascript analytics packages never show you. * Real-time traffic includes reverse DNS and city-level geolocation. Know which geographic area security threats originate from. * Monitors disk space which is related to security because many DDoS attacks attempt to consume all disk space to create denial of service. = How will I be alerted if my site has a security problem? = Wordfence sends security alerts via email. Once you install Wordfence, you will configure a list of email addresses where security alerts will be sent. When you receive a security alert, make sure you deal with it promptly to ensure your site stays secure. = Do I need a security plugin like Wordfence if I’m using a cloud based firewall (WAF)? = Wordfence provides true endpoint security for your WordPress website. Unlike cloud based firewalls, Wordfence executes within the WordPress environment, giving it knowledge like whether the user is signed in, their identity and what access level they have. Wordfence uses the user’s access level in more than 80% of the firewall rules it uses to protect WordPress websites. Learn more about the [Cloud WAF identity problem here](https://www.wordfence.com/blog/2016/10/endpoint-vs-cloud-security-cloud-waf-user-identity-problem/). Additionally, cloud based firewalls can be bypassed, leaving your site exposed to attackers. Because Wordfence is an integral part of the endpoint (your WordPress website), it can’t be bypassed. Learn more about the [Cloud WAF bypass problem here](https://www.wordfence.com/blog/2016/10/endpoint-vs-cloud-security-cloud-waf-bypass-problem/). To fully protect the investment you’ve made in your website you need to employ a defense in depth approach to security. Wordfence takes this approach. = What blocking features does Wordfence include? = * Real-time blocking of known attackers. If another site using Wordfence is attacked and blocks the attacker, your site is automatically protected. * Block entire malicious networks. Includes advanced IP and Domain WHOIS to report malicious IP’s or networks and block entire networks using the firewall. Report WordPress security threats to network owner. * Rate limit or block WordPress security threats like aggressive crawlers, scrapers and bots doing security scans for vulnerabilities in your site. * Choose whether you want to block or throttle users and robots who break your WordPress security rules. * Premium users can also block countries and schedule scans for specific times and a higher frequency. = What differentiates Wordfence from other WordPress Security plugins? = * Wordfence Security provides a WordPress Firewall developed specifically for WordPress and blocks attackers looking for vulnerabilities on your site. The Firewall is powered by our Threat Defense Feed which is continually updated as new threats emerge. Premium customers receive updates in real-time. * Wordfence verifies your website source code integrity against the official WordPress repository and shows you the changes. * Wordfence scans check all your files, comments and posts for URLs in Google's Safe Browsing list. We are the only plugin to offer this very important security enhancement. * Wordfence scans do not consume large amounts of your bandwidth because all security scans happen on your web server which makes them very fast. * Wordfence fully supports WordPress Multi-Site which means you can security scan every blog in your Multi-Site installation with one click. * Wordfence includes Two-Factor authentication, the most secure way to stop brute force attackers in their tracks. * Wordfence fully supports IPv6 including giving you the ability to look up the location of IPv6 addresses, block IPv6 ranges, detect IPv6 country and do a whois lookup on IPv6 addresses and more. = Will Wordfence slow down my website? = No. Wordfence Security is extremely fast and uses techniques like caching its own configuration data to avoid database lookups and blocking malicious attacks that would slow down your site. = What if my site has already been hacked? = Wordfence Security is able to repair core files, themes and plugins on sites where security is already compromised. You can follow this guide on [how to clean a hacked website](https://www.wordfence.com/docs/how-to-clean-a-hacked-wordpress-site-using-wordfence/) using Wordfence. However, please note that site security cannot be assured unless you do a full reinstall if your site has been hacked. We recommend you only use Wordfence Security to get your site into a running state in order to recover the data you need to do a full reinstall. If you need help repairing a hacked site, we offer an affordable, high-quality [site cleaning service](https://www.wordfence.com/wordfence-site-cleanings/) that includes a Premium key for a year. = Does Wordfence Security support IPv6? = Yes. We fully support IPv6 with all security functions including country blocking, range blocking, city lookup, whois lookup and all other security functions. If you are not running IPv6, Wordfence will work great on your site too. We are fully compatible with both IPv4 and IPv6 whether you run both or only one addressing scheme. = Does Wordfence Security support Multi-Site installations? = Yes. WordPress Multi-Site is fully supported. Using Wordfence you can scan every blog in your network for malware with one click. If one of your customers posts a page or post with a known malware URL that threatens your whole domain with being blocklisted by Google, we will alert you in the next scan. = What support options are available for Wordfence users? = Providing excellent customer service is very important to us. We offer help to all our customers whether you are using the Premium or free version of Wordfence. For help with the free version, you can post in our [forum](https://wordpress.org/support/plugin/wordfence) where we have dedicated staff responding to questions. If you need faster or more in-depth help, Premium customers can submit a [support ticket](https://support.wordfence.com/support/home) to our Premium support team. = Where can I learn more about WordPress security? = Designed for every skill level, [The WordPress Security Learning Center](https://www.wordfence.com/learn/) is dedicated to deepening users’ understanding of security best practices by providing free access to entry-level articles, in-depth articles, videos, industry survey results, graphics and more. = Where can I find the Wordfence Terms of Use and Privacy Policy? = These are available on our website: [Terms of Use](https://www.wordfence.com/terms-of-use/) and [Privacy Policy](https://www.wordfence.com/privacy-policy/) == Screenshots == Secure your website with Wordfence. 1. The dashboard gives you an overview of your site's security including notifications, attack statistics and Wordfence feature status. 2. The firewall protects your site from common types of attacks and known security vulnerabilities. 3. The Wordfence Security Scanner lets you know if your site has been compromised and alerts you to other security issues that need to be addressed. 4. Wordfence is highly configurable, with a deep set of options available for each feature. High level scan options are shown above. 5. Brute Force Protection features protect you from password guessing attacks. 6. Block attackers by IP, Country, IP range, Hostname, Browser or Referrer. 7. The Wordfence Live Traffic view shows you real-time activity on your site including bot traffic and exploit attempts. 8. Take login security to the next level with Two-Factor Authentication. 9. Logging in is easy with Wordfence 2FA. == Changelog == = 7.5.2 - March 24, 2021 = * Fix: Fixed fatal error on single-sites running WordPress <4.9. = 7.5.1 - March 24, 2021 = * Fix: Fixed fatal error when viewing the Login Security settings page from an allowlisted IP. = 7.5.0 - March 24, 2021 = * Improvement: Translation-readiness: All user-facing strings are now run through WordPress's i18n functions. * Improvement: Remove legacy admin functions no longer used within the UI. * Improvement: Local GeoIP database update. * Improvement: Remove Lynwood IP range from allowlist, and add new AWS IP range. * Fix: Fixed bug with unlocking a locked out IP without correctly resetting its failure counters. * Fix: Sites using deleted premium licenses correctly revert to free license behavior. * Fix: When enabled, cookies are now set for the correct roles on previously used devices. * Fix: WAF cron jobs are now skipped when running on the CLI. * Fix: PHP 8.0 compatibility - prevent syntax error when linting files. * Fix: Fixed issue where PHP 8 notice sometimes cannot be dismissed. = 7.4.14 - December 3, 2020 = * Improvement: Added option to disable application passwords. * Improvement: Updated site cleaning callout with 1-year guarantee. * Improvement: Upgraded sodium_compat library to 1.13.0. * Improvement: Replaced the terms whitelist and blacklist with allowlist and blocklist. * Improvement: Made a number of WordPress 5.6 and jQuery 3.x compatibility improvements. * Improvement: Made a number of PHP8 compatilibility improvements. * Improvement: Added dismissable notice informing users of possible PHP8 compatibility issues. = 7.4.12 - October 21, 2020 = * Improvement: Initial integration of i18n in Wordfence. * Improvement: Prevent Wordfence from loading under = 5.5.0. * Fix: Prevent Wordfence auto-update from running if the user has enabled auto-update through WordPress. * Fix: Added default `permission_callback` params to Wordfence Central REST routes. * Fix: Fixed missing styling on WAF optimization admin notice. = 7.4.9 - July 8, 2020 = * Improvement: Added list of known malicious usernames to suspicious administrator scan. * Improvement: Added ability for the WAF to determine if a given plugin/theme/core version is installed. * Improvement: Added a feature to export a diagnostics report. * Improvement: Add php_errorlog to the list of downloadable logs in diagnostics. * Improvement: Added a prompt to allow user to download a backup prior to repairing files. * Improvement: Prevent scan from failing when the home URL has changed and the key is no longer valid. * Improvement: Deprecated PHP 5.3, and ended PHP 5.2 support by prevent auto-update from running on older versions. * Fix: Fixed issue where WAF mysqli storage engine cannot find credentials if wflogs/ does not exist. * Fix: Changed capability checked to read WP REST API users endpoint when "Prevent discovery of usernames through ..." is enabled. * Fix: Prevented duplicate queries for wordfenceCentralConnected wfconfig value. * Fix: Prevented custom wp-content or other directories from appearing in "skipped paths" scan result, even when scanned. * Fix: Login Attempts dashboard widget "Show more" link is not visible when long usernames and IPs cause wrapping. * Fix: Fix typo in the readme. = 7.4.8 - June 16, 2020 = * Fix: Fixed issue with fatal errors encountered during activation under certain conditions. = 7.4.7 - April 23, 2020 = * Improvement: Updated bundled GeoIP database. * Improvement: Better messaging when selecting restrictive rate limits. * Improvement: Scan result emails now include the count of issues that were found again. * Improvement: Resolved scan issues will now email again if they reoccur. * Improvement: Added the state/province name when applicable to geolocation displays in Live Traffic. * Improvement: New blocking page design to better inform blocked visitors on how to resolve the block. * Improvement: Custom WP_CONTENT_DIR, WP_PLUGIN_DIR, and UPLOADS path constants will now get scanned correctly. * Improvement: Added TLS connection failure detection to brute force reporting and checking and a corresponding backoff period. * Fix: Fixed an issue where a bad cron record could interfere with automatic WAF rule updates. * Fix: Fixed a PHP warning that could occur if a bad response was received while updating an IP list. * Fix: The new user tour and onboarding flow will now work correctly on the 2FA page. = 7.4.6 - February 12, 2020 = * Improvement: Enhanced the detection ability of the WAF for SQLi attacks. * Improvement: Updated the bundled GeoIP database. * Improvement: Modified some country names in the block configuration to align with those shown in Live Traffic. * Change: Moved the skipped files scan check to the Server State category. * Fix: Fixed an issue where after scrolling on the Live Traffic page, updates would no longer automatically load. * Fix: Modified the number of login records kept to align better with Live Traffic so they're trimmed around the same time. = 7.4.5 - January 15, 2020 = * Improvement: Improved WAF coverage for an Infinite WP authentication bypass vulnerability. = 7.4.4 - January 14, 2020 = * Fix: Fixed a UI issue where the scan summary status marker for malware didn't always match the findings. = 7.4.3 - January 13, 2020 = * Improvement: Added WAF coverage for an Infinite WP authentication bypass vulnerability. * Improvement: The malicious URL scan now includes protocol-relative URLs (e.g., //example.com) * Improvement: Malware signatures are now better applied to large files read in multiple passes. * Improvement: Added a scan issue that will appear when one or more paths are skipped due to scan settings excluding them. * Changed: AJAX endpoints now send the application/json Content-Type header. * Changed: Updated text on scan issues for plugins removed from wordpress.org to better indicate possible reasons. * Changed: Added compatibility messaging for reCAPTCHA when WooCommerce is active. * Fixed: Added missing $wp_query->set_404() call when outputting a 404 page on a custom action. * Fixed: Fixed the logout username display in Live Traffic broken by a change in WordPress 5.3. * Fixed: Improved the response callback used for the WAF status check during extended protection installation. * Fixed: The "Require 2FA for all administrators" notice is now automatically dismissed if an administrator sets up 2FA. = 7.4.2 - December 3, 2019 = * Improvement: Increased performance of IP CIDR range comparisons. * Improvement: Added parameter signature to remote scanning for better validation during forking. * Change: Removed duplicate browser label in Live Traffic. * Fix: Added compensation for PHP 7.4 deprecation notice with get_magic_quotes_gpc. * Fix: Fixed potential notice in dashboard widget when no updates are found. * Fix: Updated JS hashing library to compensate for a variable name collision that could occur. * Fix: Fixed an issue where certain symlinks could cause a scan to erroneously skip files. * Fix: Fixed PHP memory test for newer PHP versions whose optimizations prevented it from allocating memory as desired. = 7.4.1 - November 6, 2019 = * Improvement: Updated the bundled GeoIP database. * Improvement: Minor changes to ensure compatibility with PHP 7.4. * Improvement: Updated the WHOIS lookup for better reliability. * Improvement: Added better diagnostic data when the WAF MySQL storage engine is active. * Improvement: Improved the messaging when switching between premium and free licenses. * Change: Deprecated DNS changes scan. * Change: The plugin will no longer email alerts when Central is managing them. * Fix: Added error suppression to ignore_user_abort calls to silence it on hosts with it disabled. * Fix: Improved path generation to better avoid outputting extra slashes in URLs. * Fix: Applied a length limit to malware reporting to avoid failures due to large content size. = 7.4.0 - August 22, 2019 = * Improvement: Added a MySQL-based configuration and data storage for the WAF to expand the number of hosting environments supported. For more detail, see: https://www.wordfence.com/help/firewall/mysqli-storage-engine/ * Improvement: Updated bundled GeoIP database. * Fix: Fixed several console notices when running via the CLI. = 7.3.6 - July 31, 2019 = * Improvement: Multiple "php.ini file in core directory" issues are now consolidated into a single issue for clearer scan results. * Improvement: The AJAX error detection for false positive WAF blocks now better detects and processes the response for presenting the allowlisting prompt. * Improvement: Added overdue cron detection and highlighting to diagnostics to help identify issues. * Improvement: Added the necessary directives to exclude backwards compatibility code from creating warnings with phpcs for future compatibility with WP Tide. * Improvement: Normalized all PHP require/include calls to use full paths for better code quality. * Change: Removed deprecated high sensitivity scan option since current signatures are more accurate. * Fix: Fixed the status circle tooltips not showing. * Fix: IP detection at the WAF level better mirrors the main plugin exactly when using the automatic setting. * Fix: Fixed a currently-unused code path in email address verification for the strict check. = 7.3.5 - July 16, 2019 = * Improvement: Improved tagging of the login endpoint for brute force protection. * Improvement: Added additional information about reCAPTCHA to its setting control. * Improvement: Added a constant that may be overridden to customize the expiration time of login verification email links. * Improvement: reCAPTCHA keys are now tested on saving to prevent accidentally inputting a v2 key. * Improvement: Added a setting to control the reCAPTCHA human/bot threshold. * Improvement: Added a separate option to trigger removal of Login Security tables and data on deactivation. * Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring. * Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible. * Fix: Fixed encoding of the ellipsis character when reporting malware finds. * Fix: Disabling the IP blocklist once again correctly clears the block cache. * Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error. * Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in. * Fix: Fixed the functionality of the button to send 2FA grace period notifications. * Fix: Fixed a missing icon for some help links when running in standalone mode. = 7.3.4 - June 17, 2019 = * Improvement: Added security events and alerting features built into Wordfence Central. = 7.3.3 - June 11, 2019 = * Improvement: Added support for managing the login security settings to Wordfence Central. * Improvement: Updated the bundled root CA certificate store. * Improvement: Added a check and update flow for mod_php hosts with only the PHP5 directive set for the WAF's extended protection mode. * Improvement: Added additional values to Diagnostics for debugging time-related issues, the new fatal error handler settings, and updated the PHP version check to reflect the new 5.6.20 requirement of WordPress. * Change: Changed the autoloader for our copy of sodium_compat to always load after WordPress core does. * Fix: Fixed the "removed from wordpress.org" detection for plugin, which was broken due to an API change. * Fix: Fixed the bulk repair function in the scan results when it included core files. = 7.3.2 - May 16, 2019 = * Improvement: Updated sodium_compat to address an incompatibility that may occur with the pending WordPress 5.2.1 update. * Improvement: Clarified text around the reCAPTCHA setting to indicate v3 keys must be used. * Improvement: Added detection for Jetpack and a notice when XML-RPC authentication is disabled. * Fix: Suppressed error messages on the NTP time check to compensate for hosts with UDP connections disabled. = 7.3.1 - May 14, 2019 = * Improvement: Two-factor authentication is new and improved, now available on all Premium and Free installations. * Improvement: Added Google reCAPTCHA v3 support to the login and registration forms. * Improvement: XML-RPC authentication may now be disabled or forced to require 2FA. * Improvement: Reduced size of SVG assets. * Improvement: Clarified text on "Maximum execution time for each scan stage" option. * Improvement: Added detection for an additional config file that may be created and publicly visible on some hosts. * Improvement: Improved detection for malformed malware scanning signatures. * Change: Long-deprecated database tables will be removed. * Change: Removed old performance logging code that's no longer used. * Fix: Addressed a log notice when using the See Recent Traffic feature in Live Traffic. * Fix: WAF attack data now correctly includes JSON payloads when appropriate. * Fix: Fixed the text for Live Traffic entries that include a redirection message. * Fix: Fixed an issue with synchronizing scan issues to Wordfence Central that prevented stale issues from being cleared. = 7.2.5 - April 18, 2019 = * Improvement: Added additional data breach records to the breached password check. * Improvement: Added the Accept-Encoding compression header to WAF-related requests for better performance during rule updates. * Improvement: Updated to the current GeoIP database. * Improvement: Added additional controls to the Wordfence Central connection page to better reflect the current connection state. * Change: Updated the text on the option to alert for scan results of a certain severity. = 7.2.4 - March 26, 2019 = * Improvement: Updated vulnerability database integration. * Improvement: Better messaging when a WAF rule update fails to better indicate the cause. * Fix: Removed a double slash that could occur in an image path. * Fix: Adjusted timeouts to improve reliability of WAF rule updates on slower servers. * Fix: Improved connection process with Wordfence Central for better reliability on servers with non-standard paths. * Fix: Switched to autoloader with fastMult enabled on sodum_compat to minimize connection issues. = 7.2.3 - February 28, 2019 = * Improvement: Country names are now shown instead of two letter codes where appropriate. * Improvement: Updated the service allowlist to reflect additions to the Facebook IP ranges. * Improvement: Added alerting for when the WAF is disabled for any reason. * Improvement: Additional alerting and troubleshooting steps for WAF configuration issues. * Change: Live Traffic human/bot status will additionally be based on the browscap record in security-only mode. * Change: Added dismissible prompt to switch Live Traffic to security-only mode. * Fix: The scan issues alerting option is now set correctly for new installations. * Fix: Fixed a transparency issue with flags for Switzerland and Nepal. * Fix: Fixed the malware link image rendering in scan issue emails and switched to always use https. * Fix: WAF-related scheduled tasks are now more resilient to connection timeouts or memory issues. * Fix: Fixed Wordfence Central connection flow within the first time experience. = 7.2.2 - February 14, 2019 = * Improvement: Updated GeoIP database. * Fix: Syncing requests from Wordfence Central no longer appear in Live Traffic. * Fix: Addressed some display issues with the Wordfence Central panel on the Wordfence Dashboard. = 7.2.1 - February 5, 2019 = * Improvement: Integrated Wordfence with Wordfence Central, a new service allowing you to manage multiple Wordfence installations from a single interface. * Improvement: Added a help link to the mode display when a host disabling Live Traffic is active. * Improvement: Added an option for allowlisting ManageWP in "Allowlisted Services". * Fix: Enqueued fonts used in admin notices on all admin pages. * Fix: Change false positive user-reports link to use https. * Fix: Fix reference to non-existent function when registering menus. = 7.1.20 - January 8, 2019 = * Fix: Fixed a commit error with 7.1.19 = 7.1.19 - January 8, 2019 = * Improvement: Speed optimizations for WAF rule compilation. * Improvement: Added Kosovo to country blocking. * Improvement: Additional flexibility for allowlist rules. * Fix: Added compensation for really long file lists in the "Exclude files from scan" setting. * Fix: Fixed an issue where the GeoIP database update check would never get marked as completed. * Fix: Login credentials passed as arrays no longer trigger a PHP notice from our filters. * Fix: Text fixes to the WAF nginx help text. = 7.1.18 - December 4, 2018 = * Improvement: Removed unused font glyph ranges to reduce file count and size. * Improvement: Switched flags to use a CSS sprite to reduce file count and size. * Improvement: Added dates to each release in the changelog. * Change: Live Traffic now defaults to only logging security events on new installations. * Change: Added an upper limit to the maximum scan stage execution time if not explicitly overridden. * Fix: Changed WAF file handling to skip some file actions if running via the CLI. * Fix: Fixed an issue that could prevent files beginning with a period from working with the file restore function. * Fix: Improved layout of options page controls on small screens. * Fix: Fixed a typo in the htaccess update panel. * Fix: Added compensation for Windows path separators in the WAF config handling. * Fix: Fixed handling of case-insensitive tables in the Diagnostics table check. * Fix: Better messaging by the status circles when the WAF config is inaccessible or corrupt. * Fix: REST API hits now correctly follow the "Don't log signed-in users with publishing access" option. = 7.1.17 - November 6, 2018 = * Improvement: Increased frequency of filesystem permission check and update of the WAF config files. * Improvement: More complete data removal when deactivating with remove tables and files checked. * Improvement: Better diagnostics logging for GeoIP conflicts. * Fix: Text fix in invalid username lockout message. * Fix: PHP 7.3 syntax compatibility fixes. = 7.1.16 - October 16, 2018 = * Improvement: Service allowlisting can now be selectively toggled on or off per service. * Improvement: Updated bundled GeoIP database. * Change: Removed the "Disable Wordfence Cookies" option as we've removed all cookies it affected. * Change: Updates that refresh country statistics are more efficient and now only affect the most recent records. * Change: Changed the title of the Wordfence Dashboard so it's easier to identify when many tabs are open. * Fix: Fixed an issue with country blocking and XML-RPC requests containing credentials. = 7.1.15 - October 1, 2018 = * Fix: Addressed a plugin conflict with the composer autoloader. = 7.1.14 - October 1, 2018 = * Improvement: Reduced queries and potential table size for rate limiting-related data. * Improvement: Updated the internal browscap database. * Improvement: Better error reporting for scan failures due to connectivity issues. * Improvement: WAF-related file permissions will now lock down further when possible. * Improvement: Hardening for sites on servers with insecure configuration, which should not be enabled on publicly accessible servers. Thanks Janek Vind. * Change: Switched the minimum PHP version to 5.3. * Fix: Prevent bypass of author enumeration prevention by using invalid parameters. Thanks Janek Vind. * Fix: Wordfence crons will now automatically reschedule if missing for any reason. * Fix: Fixed an issue where the block counts and total IPs blocked values on the dashboard might not agree. * Fix: Corrected the message shown on Live Traffic when a country blocking bypass URL is used. * Fix: Removed extra spacing in the example ranges for "Allowlisted IP addresses that bypass all rules" = 7.1.12 - September 12, 2018 = * Improvement: Updated bundled GeoIP database. * Improvement: Restructured the WAF configuration storage to be more resilient on hosts with no file locking support. * Change: Moved the settings import/export to the Tools page. * Change: New installations will now use lowercase table names to avoid issues with some backup plugins and Windows-based sites. * Fix: The notice and repair link for an unreadable WAF configuration now work correctly. * Fix: Improved appearance of some stat components on smaller screens. * Fix: Fixed duplicate entries with different status codes appearing in detailed live traffic. * Fix: Added better caching for the breached password check to compensate for sites that prevent the cache from expiring correctly. * Fix: Changing the frequency of the activity summary email now reschedules it. = 7.1.11 - August 21, 2018 = * Improvement: Added a custom message field that will show on all block pages. * Improvement: Improved the standard appearance for block pages. * Improvement: Live Traffic now better displays failed logins. * Improvement: Added a constant to prevent direct MySQLi use for hosts with unsupported DB configurations. * Improvement: Malware scan results have been modified to include both a public identifier and description. * Change: Description updated on the Live Traffic page. * Fix: Removed an empty file hash from the old Wordpress core file detection. * Fix: Update locking now works on multisites that have removed the original site. = 7.1.10 - July 31, 2018 = * Improvement: Better labeling in Live Traffic for 301 and 302 redirects. * Improvement: Login timestamps are now displayed in the site's configured time zone rather than UTC. * Improvement: Added detection and a workaround for hosts with a non-functional MySQLi interface. * Improvement: The prevent admin registration setting now works with WooCommerce's registration flow. * Improvement: For hosts with varying URL values (e.g., AWS instances), notification and alert links now correctly use the canonical admin URL. * Fix: Fixed a layout problem with the live traffic disabled notice. * Fix: The scan stage that checks "How does Wordfence get IPs?" no longer shows a warning if the call fails. = 7.1.9 - July 12, 2018 = * Improvement: Added an "unsubscribe" link to plugin-generated alerts. * Improvement: Added some additional flags. * Change: Removed some unnecessary files from the bundled GeoIP library. * Change: Updated wording in the Terms of Use/Privacy Policy agreement UI. * Change: The minimum "Lock out after how many login failures" is now 2. * Change: The diagnostics report now includes the scan issues for easier debugging. * Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems. * Fix: Better text wrapping in the top failed logins widget. * Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations. * Fix: Fixed a missing asset with the bundled jQueryUI library. * Fix: Fixed memory calculation when using PHP's supported shorthand syntax. * Fix: Better wrapping behavior on the reason column in the blocks table. * Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions. * Fix: Improved bot detection when no user agent is sent. = 7.1.8 - June 26, 2018 = * Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file. * Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party. * Fix: Fixed the dashboard erroneously showing the payment method as missing for some payment methods. * Fix: If a premium license is deleted from wordfence.com, the plugin will now automatically downgrade rather than get stuck in an intermediate state. * Fix: Changed some wording to consistently use "License" or "License Key". = 7.1.7 - June 5, 2018 = * Improvement: Added better support for keyboard navigation of options. * Improvement: staging. and dev. subdomains are now supported for sharing premium licenses. * Improvement: Bundled our interface font to avoid loading from a remote source and reduced the pages some assets were loaded on. * Improvement: Added option to trim Live Traffic records after a specific number of days. * Improvement: Updated to the current GeoIP2 database. * Improvement: Extended the automatic redaction applied to attack data that may include sensitive information. * Change: Removed a no-longer-used API call. * Fix: Fixed a few options that couldn't be searched for on the all options page. * Fix: Activity Report emails now detect and avoid symlink loops. = 7.1.6 - May 22, 2018 = * Fix: Added a workaround for sites with inaccessible WAF config files when reading php://input = 7.1.5 - May 22, 2018 = * Improvement: GDPR compliance updates. * Improvement: The list of blocks now shows the most recently-added blocks at the top by default. * Improvement: Added better table status display to Diagnostics to help with debugging. * Improvement: Added deferred loading to Live Traffic avatars to improve performance with some plugins. * Improvement: The server's own IP is now automatically allowlisted for known safe requests. * Fix: Added a workaround to Live Traffic human/bot detection to compensate for other scripts that modify our event handlers. * Fix: Fixed an error with Live Traffic human/bot detection when plugins change the load order. * Fix: Fixed auto-enabling of some controls when pasting values. * Fix: Fixed an instance where http links could be generated for emails rather than https. = 7.1.4 - May 2, 2018 = * Improvement: Added additional XSS detection capabilities. * Change: Initial preparation for GDPR compliance. Additional changes will be included in an upcoming release to meet the GDPR deadline. * Change: Reworked Live Traffic/Rate Limiting human and bot detection to function without cookies. * Change: Removed the wfvt_ cookie as it was no longer necessary. * Change: Better debug messaging for scan forking. * Fix: PHP deprecation notices no longer suppress those of old OpenSSL or WordPress. * Fix: Fixes to the deprecated OpenSSL version detection and alerting to handle non-patch version numbers. * Fix: Added detection for and fixed a very large pcre.backtrack_limit setting that could cause scans to fail, when modified by other plugins. * Fix: Scan issue alert emails no longer incorrectly show high sensitivity was enabled. * Fix: Fixed wrapping of long strings on the Diagnostics page. = 7.1.3 - April 18, 2018 = * Improvement: Improved the performance of our config table status check. * Improvement: The IP address of the user activating Wordfence is now used by the breached password check until an admin successfully logs in. * Improvement: Added several new error displays for scan failures to help diagnose and fix issues. * Improvement: Added the block duration to alerts generated when an IP is blocked. * Improvement: A text version of scan results is now included in the activity log email. * Improvement: The WAF install/uninstall process no longer asks to backup files that do not exist. * Change: Began a phased rollout of moving brute force queries to be https-only. * Change: Added the initial deprecation notice for PHP 5.2. * Change: Suppressed a script tag on the diagnostics page from being output in the email version. * Fix: Addressed an issue where plugins that return a null user during authentication would cause a PHP notice to be logged. * Fix: Fixed an issue where plugins that use non-standard version formatting could end up with a inaccurate vulnerability status. * Fix: Added a workaround for web email clients that erroneously encode some URL characters (e.g., #). = 7.1.2 - April 4, 2018 = * Improvement: Added support for filtering the blocks list. * Improvement: Added a flow for generating the WAF autoprepend file and retrieving the path for manual installations. * Improvement: Added a variety of new data values to the Diagnostics page to aid in debugging issues. * Improvement: SVG files now have the JavaScript-based malware signatures run against them. * Improvement: More descriptive text for the scan issue email when there's an unknown WordPress core version. * Improvement: Added a dedicated error display that will show when a scan is detected as failed. * Improvement: readme.html and wp-config-sample.php are no longer scanned for changes due to differences between languages (malware signatures still run). * Improvement: When the license status changes, it now triggers a fresh pull of the WAF rules. * Improvement: Added dedicated messaging for leftover WordPress core files that were not fully removed during upgrade. * Improvement: Improved labeling in Live Traffic for hits blocked by the real-time IP blocklist. * Improvement: Added forced wrapping to the file paths in the activity report email to avoid scroll bar overlap making them unreadable. * Improvement: Updated the bundled GeoIP database. * Improvement: Updated the bundled browscap database. * Improvement: All emailed alerts now include a link to the generating site. * Change: Minor text change to unify some terminology. * Fix: Removed a remaining reference to the CDN version of Font Awesome. * Fix: Removed an old reference to the pre-Wordfence 7.1 lockouts table. * Fix: Scan results for malware detections in posts are no longer clickable. * Fix: We now verify that there's a valid email address defined before attempting to send an alert and filter out any invalid ones. * Fix: Added a workaround for GoDaddy/Limit Login Attempts suppressing the 2FA prompting. = 7.1.1 - March 20, 2018 = * Improvement: Added the ability to sort the blocks table. * Improvement: Added short-term caching of breach check results. * Improvement: The check for passwords leaked in breaches now allows a login if the user has previously logged in from the same IP successfully and displays an admin notice suggesting changing the password. * Improvement: Switched the bundled select2 library to use to prefixed version to work around other plugins including older versions on our pages. * Improvement: The scan page now displays when beta signatures are enabled since they can produce false positives. * Improvement: Improved positioning of the "Wordfence is Working" message. * Improvement: Added a character limit to the reason on blocks and forced wrapping to avoid the layout stretching too much. * Fix: Fixed an issue with some table prefixing where multisite installations with rare configurations could result in unknown table warnings. * Fix: Removed an older behavior with live traffic buttons that could allow them to open in a new tab and show nothing. * Fix: Added a check for sites with inaccurate disk space function results to avoid showing an issue. * Fix: Added a secondary check to the email summary cron to avoid repeated sending if the cron list is corrupted. * Fix: Fixed a typo on the Advanced Comment Spam Filter page. = 7.1.0 - March 1, 2018 = * Improvement: Added a new feature to prevent attackers from successfully logging in to admin accounts whose passwords have been in data breaches. * Improvement: Added pagination support to the scan issues. * Improvement: Improved time zone handling for the WAF's learning mode. * Improvement: Improved messaging on file-related scan issues when the file is wp-config.php. * Improvement: Modified the appearance of the "How does Wordfence get IPs" option to be more clear. * Improvement: Better messaging about the scan options that need to be enabled for free installations to achieve 100%. * Improvement: The country blocking selection drawer behavior has been changed to now allow saving directly from it. * Improvement: Increased the textarea size for the advanced firewall options to make editing easier. * Improvement: The URL blocklist check now includes additional variants in some checks to more accurately match. * Change: Adjusted messaging when blocks are loading. * Change: Wording change for the option "Maximum execution time for each stage". * Change: Permanent blocks now display "Permanent" rather than "Indefinite" for the expiration for consistency. * Fix: Fixed the initial status code recorded for lockouts and blocks. * Fix: Fixed PHP notices that could occur when using the bulk delete/repair scan tools. * Fix: Improved the state updating for the scan bulk action buttons. * Fix: Usernames in live traffic now correctly link to the corresponding profile page. * Fix: Addressed a PHP warning that could occur if wordpress.org returned a certain format for the abandoned plugin check. * Fix: Fixed a possible PHP notice when syncing attack data records without metadata attached. * Fix: Modified the behavior of the disk space check to avoid a scan warning showing without an issue generated. * Fix: Fixed a CSS glitch where the top controls could have extra space at the top when sites have long navigation menus. * Fix: Updated some wording in the All Options search box. * Fix: Removed an old link for "See Recent Traffic" on Live Traffic that went nowhere. = 7.0.4 - February 12, 2018 = * Change: Live Traffic records are no longer created for hits initiated by WP-CLI (e.g., manually running cron). * Fix: Fixed an issue where the human/bot detection wasn't functioning. = 7.0.4 = * Fix: Re-added missing file to fix commit excluding it. = 7.0.3 - February 12, 2018 = * Improvement: Added an "All Options" page to enable developers and others to more rapidly configure Wordfence. * Improvement: Improved messaging for when a page has been open for more than a day and the security token expires. * Improvement: Relocated the "Always display expanded Live Traffic records" option to be more accessible. * Improvement: Improved appearance and behavior of option checkboxes. * Improvement: For plugins with incomplete header information, they're now shown with a fallback title in scan results as appropriate. * Improvement: The country block rule in the blocks table now shows a count rather than a potentially large list of countries. * Change: Modified behavior of the advanced country blocking options to always show. * Fix: Fixed the "Make Permanent" button behavior for blocks created from Live Traffic. * Fix: Better synchronization of block records to the WAF config to avoid duplicate queries. * Fix: The diff viewer now forces wrapping to prevent long lines of text from stretching the layout. * Fix: Fixed an issue where the scanned plugin count could be inaccurate due to forking during the plugin scan. * Fix: Adjusted sizing on the country blocking options to prevent placeholder text from being cut off at some screen sizes. * Fix: Block/Unblock now works correctly when viewing Live Traffic with it grouped by IP. * Fix: Fixed an issue where the count of URLs checked was incorrect. = 7.0.2 - January 31, 2018 = * Improvement: Added CSS/JS filename versioning to address caching plugins not refreshing for plugin updates. * Improvement: The premium key is no longer prompted for during installation if already present from an earlier version. * Improvement: Added a check and corresponding notice if the WAF config is unreadable or invalid. * Improvement: Improved live traffic sizing on smaller screens. * Improvement: Added tour coverage for live traffic. * Change: IPs blocked via live traffic now use the configurable how long is an IP blocked setting to match previous behavior. * Change: Changed the option to enable live traffic to match the wording and style of other options. * Change: Changed styling on the unknown country display in live traffic to match the common coloring. * Change: Statistics that do not depend on the WAF for their data now display when it is in learning mode. * Change: Scan issues that are indicative of a compromised site are moved to the top of the list. * Change: Changed styling on unselected checkboxes. * Fix: Quick scans no longer run daily if automatic scheduled scans are disabled. * Fix: The update check in a quick scan no longer runs if the update check has been turned off for regular scans. * Fix: Fixed the quick navigation letters in the country picker not scrolling. * Fix: Fixed editing the country block configuration when there are a large number of other blocks. * Fix: Addressed an issue where having the country block or a pattern block selected when clicking Make Permanent could break them. * Fix: Live traffic entries with long user agents no longer cause the table to stretch. * Fix: Fixed an issue where live traffic would stop loading new records if always display expanded records was on. * Fix: Suppressed warnings on IP conversion functions when processing potentially incomplete data. * Fix: Added a check in REST API hooks to avoid defining a constant twice. = 7.0.1 - January 24, 2018 = * Comprehensive UI refresh. * Improvement: Updated bundled GeoIP database. = 6.3.22 - November 30, 2017 = * Fix: Addressed a warning that could occur on PHP 7.1 when reading php.ini size values. * Fix: Fixed a warning by adjusting a query to remove old-style variable references. = 6.3.21 - November 1, 2017 = * Improvement: Updated bundled GeoIP database. * Fix: Fixed a log warning that could occur during the scan for plugins not in the wordpress.org repository. = 6.3.20 - October 12, 2017 = * Improvement: The scan will now alert for a publicly visible .user.ini file. * Fix: Fixed status code and human/bot tagging of block hit entries for live traffic and the Wordfence Security Network. * Fix: Added internal throttling to ensure the daily cron does not run too frequently on some hosts. = 6.3.19 - September 20, 2017 = * Emergency Fix: Updated wpdb::prepare calls using %.6f since it is no longer supported. = 6.3.18 - September 7, 2017 = * Improvement: Reduced size of some JavaScript for faster loading. * Improvement: Better block counting for advanced comment filtering. * Improvement: Increased logging in debug mode for plugin updates to help resolve issues. * Fix: Reduced the minimum duration of a scan stage to improve reliability on some hosts. = 6.3.17 - August 24, 2017 = * Improvement: Prepared code for upcoming scan improvement which will greatly increase scan performance by optimizing malware signatures. * Improvement: Updated the bundled GeoIP database. * Improvement: Better scan messaging when a publicly-reachable searchreplacedb2.php utility is found. * Improvement: The no-cache constant for database caching is now set for W3TC for plugin updates and scans. * Improvement: Added an additional home/siteurl resolution check for WPML installations. = 6.3.16 - August 8, 2017 = * Improvement: Introduced a new scan stage to check for malicious URLs and content within WordPress core, plugin, and theme options. * Improvement: New scan stage includes a new check for TrafficTrade malware. * Improvement: Reduced net memory usage during forked scan stages by up to 50%. * Improvement: Reduced the number of queries executed for some configuration options. * Improvement: Modified the default allowlisting to include the new core AJAX action in WordPress 4.8.1. * Fix: Synchronized the scan option names between the main options page and smaller scan options page. * Fix: Fixed CSS positioning issue for dashboard metabox with IPv6. * Fix: Fixed a compatibility issue with determining the site's home_url when WPML is installed. = 6.3.15 - July 24, 2017 = * Improvement: Reduced memory usage on scan forking and during the known files scan stage. * Improvement: Added additional scan options to allow for disabling the blocklist checks while still allowing malware scanning to be enabled. * Improvement: Added a Wordfence Application Firewall code block for the lsapi variant of LiteSpeed. * Improvement: Updated the bundled GeoIP database. * Fix: Added a validation check to IP range allowlisting to avoid log warnings if they're malformed. = 6.3.14 - July 17, 2017 = * Improvement: Introduced smart scan distribution. Scan times are now distributed intelligently across servers to provide consistent server performance. * Improvement: Introduced light-weight scan that runs frequently to perform checks that do not use any server resources. * Improvement: If unable to successfully look up the status of an IP claiming to be Googlebot, the hit is now allowed. * Improvement: Scan issue results for abandoned plugins and unpatched vulnerabilities include more info. * Fix: Suppressed PHP notice with time formatting when a microtimestamp is passed. * Fix: Improved binary data to HTML entity conversion to avoid wpdb stripping out-of-range UTF-8 sequences. * Fix: Added better detection to SSL status, particularly for IIS. * Fix: Fixed PHP notice in the diff renderer. * Fix: Fixed typo in lockout alert. = 6.3.12 - June 28, 2017 = * Improvement: Adjusted the password audit to use a better cryptographic padding option. * Improvement: Improved the option value entry process for the modified files exclusion list. * Improvement: Added rel="noopener noreferrer" to all external links from the plugin for better interoperability with other scanners. * Improvement: Added support to the WAF for validating URLs for future use in rules. * Fix: Time formatting will now correctly handle :30 and :45 time zone offsets. * Fix: Hosts using mod_lsapi will now be detected as Litespeed for WAF optimization. * Fix: Added an option to allow automatic updates to function on Litespeed servers that have the global noabort set rather than site-local. * Fix: Fixed a PHP notice that could occur when running a scan immediately after removing a plugin. = 6.3.11 - June 15, 2017 = * Improvement: The scan will alert for plugins that have not been updated in 2+ years or have been removed from the wordpress.org directory. It will also indicate if there is a known vulnerability. * Improvement: Added a self-check to the scan to detect if it has stalled. * Improvement: If WordPress auto-updates while a scan is running, the scan will self-abort and reschedule itself to try again later. * Improvement: IP-based filtering in Live Traffic can now use wildcards. * Improvement: Updated the bundled GeoIP database. * Improvement: Added an anti-crawler feature to the lockout page to avoid crawlers erroneously following the unlock link. * Improvement: The live traffic "Group By" options now dynamically show the results in a more useful format depending on the option selected. * Improvement: Improved the unknown core files check to include all extra files in core locations regardless of whether or not the "Scan images, binary, and other files as if they were executable" option is on. * Improvement: Better wording for the allowlisting IP range error message. * Fix: Addressed a performance issue on databases with tens of thousands of tables when trying to load the diagnostics page. * Fix: All dashboard and activity report email times are now displayed in the time zone configured for the WordPress installation. = 6.3.10 - June 1, 2017 = * Improvement: Reduction in overall memory usage and peak memory usage for the scanner. * Improvement: Support for exporting a list of all blocked and locked out IP addresses. * Improvement: Updated the WAF's CA certificate bundle. * Improvement: Updated the browscap database. * Improvement: Suppressed the automatic HTTP referer added by WordPress for API calls to reduce overall bandwidth usage. * Improvement: When all issues for a scan stage have been previously ignored, the results now indicate this rather than saying problems were found. * Fix: Worked around an issue with WordPress caching to allow password audits to succeed on sites with tens of thousands of users. * Fix: Fixed an IPv6 detection issue with one form of IPv6 address. * Fix: An empty ignored IP list for WAF alerts no longer creates a PHP notice. * Fix: Better detection for when to use secure cookies. * Fix: Fixed a couple issue types that were not able to be permanently ignored. * Fix: Adjusted the changelog link in the scan results email to work for the new wordpress.org repository. * Fix: Fixed some broken links in the activity summary email. * Fix: Fixed a typo in the scan summary text. * Fix: The increased attack rate emails now correctly identify blocklist blocks. * Fix: Fixed an issue with the dashboard where it could show the last scan failed when one has never ran. * Fix: Brute force records are now coalesced when possible prior to sending. = 6.3.9 - May 17, 2017 = * Improvement: Malware signature checking has been better optimized to improve overall speed. * Improvement: Updated the bundled GeoIP database. * Improvement: The memory tester now tests up to the configured scan limit rather than a fixed value. * Improvement: Added a test to the diagnostics page that verifies permissions to the WAF config location. * Improvement: The diagnostics page now contains a callback test for the server itself. * Improvement: Updated the styling of dashboard notifications for better separation. * Improvement: Added additional constants to the diagnostics page. * Change: Wordfence now enters a read-only mode with its configuration files when run via the 'cli' PHP SAPI on a misconfigured web server to avoid file ownership changing. * Change: Changed how administrator accounts are detected to compensate for managed WordPress sites that do not have the standard permissions. * Change: The table list on the diagnostics page is now limited in length to avoid being exceedingly large on big multisite installations. * Fix: Improved updating of WAF config values to minimize writing to disk. * Fix: The blocklist's blocked IP records are now correctly trimmed when expired. * Fix: Added error suppression to the WAF attack data functions to prevent corrupt records from breaking the no-cache headers. * Fix: Fixed some incorrect documentation links on the diagnostics page. * Fix: Fixed a typo in a constant on the diagnostics page. = 6.3.8 - May 2, 2017 = * Fix: Addressed an issue that could cause scans to time out on sites with tens of thousands of potential URLs in files, comments, and posts. = 6.3.7 - April 25, 2017 = * Improvement: All URLs are now checked against the Wordfence Domain Blocklist in addition to Google's. * Improvement: Better page load performance for multisite installations with thousands of tables. * Improvement: Updated the bundled GeoIP database. * Improvement: Integrated blocklist blocking statistics into the dashboard for Premium users. * Fix: Added locking to the automatic update process to ensure non-standard crons don't break Wordfence. * Fix: Fixed an activation error on multisite installations on very old WordPress versions. * Fix: Adjusted the behavior of the blocklist toggle for Free users. = 6.3.6 - April 5, 2017 = * Improvement: Optimized the malware signature scan to reduce memory usage. * Improvement: Optimized the overall scan to make fewer network calls. * Improvement: Running an update now automatically dismisses the corresponding scan issue if present. * Improvement: Added a time limit to the live activity status so only current messages are shown. * Improvement: WAF configuration files are now excluded by default from the recently modified files list in the activity report. * Improvement: Background pausing for live activity and traffic may now be disabled. * Improvement: Added additional WAF support to allow us to more easily address false positives. * Improvement: Blocking pages presented by Wordfence now indicate the source and contain information to help diagnose caching problems. * Fix: All external URLs in the tour are now https. * Fix: Corrected a typo in the unlock email template. * Fix: Fixed the target of a label on the options page. = 6.3.5 - March 23, 2017 = * Improvement: Sites can now specify a list of trusted proxies when using X-Forwarded-For for IP resolution. * Improvement: Added options to customize which dashboard notifications are shown. * Improvement: Improvements to the scanner's malware stage to avoid timing out on larger files. * Improvement: Provided additional no-caching indicators for caches that erroneously save pages with HTTP error status codes. * Improvement: Updated the bundled GeoIP database. * Improvement: Optimized the country update process in the upgrade handler so it only updates changed records. * Improvement: Added our own prefixed version of jQuery.DataTables to avoid conflicts with other plugins. * Improvement: Changes to readme.txt and readme.md are now ignored by the scanner unless high sensitivity is on. * Fix: Addressed an issue with multisite installations where they would execute the upgrade handler for each subsite. * Fix: Added additional error handling to the blocked IP list to avoid outputting notices when another plugin resets the error handler. * Fix: Made the description in the summary email for blocks resulting from the blocklist more descriptive. * Fix: Updated the copyright date on several pages. * Fix: Fixed incorrect wrapping of the Group by field on the live traffic page. = 6.3.4 - March 13, 2017 = * Improvement: Added a path for people blocked by the IP blocklist (Premium Feature) to report false positives. = 6.3.3 - March 9, 2017 = * New: Malicious IPs are now preemptively blocked by a regularly-updated blocklist. [Premium Feature] * Improvement: Better layout and display for mobile screen sizes. * Improvement: Dashboard chart data is now updated more frequently. * Fix: Fixed database errors on notifications page on multisite installations. * Fix: Fixed site URL detection for multisite installations. * Fix: Fixed tour popup positioning on multisite. * Fix: Increased the z-index of the AJAX error watcher alert. * Fix: Addressed an additional way to enumerate authors with the REST JSON API. = 6.3.2 - February 23, 2017 = * Improvement: Improved the WAF's ability to inspect POST bodies. * Improvement: Dashboard now shows up to 100 each of failed/successful logins. * Improvement: Updated internal GeoIP database. * Improvement: Updated internal browscap database. * Improvement: Better documentation on Country Blocking regarding Google AdWords * Advanced: Added constant "WORDFENCE_DISABLE_FILE_VIEWER" to prohibit file-viewing actions from Wordfence. * Advanced: Added constant "WORDFENCE_DISABLE_LIVE_TRAFFIC" to prohibit live traffic from capturing regular site visits. * Fix: Fixed a few links that didn't open the correct configuration pages. * Fix: Unknown countries in the dashboard now show "Unknown" rather than empty. = 6.3.1 - February 7, 2017 = * Improvement: Locked out IPs are now enforced at the WAF level to reduce server load. * Improvement: Added a "Show more" link to the IP block list and login attempts list. * Improvement: Added network data for the top countries blocked list. * Improvement: Added a notification when a premium key is installed on one site but registered for another URL. * Improvement: Switching tabs in the various pages now updates the page title as well. * Improvement: Various styling consistency improvements. * Change: Separated the various blocking-related pages out from the Firewall top-level menu into "Blocking". * Fix: Improved compatibility with our GeoIP interface. * Fix: The updates available notification is refreshed after updates are installed. * Fix: The scan notification is refreshed when issues are resolved or ignored. = 6.3.0 - January 26, 2017 = * Enhancement: Added Wordfence Dashboard for quick overview of security activity. * Improvement: Simplified the UI by revamping menu structure and styling. * Fix: Fixed minor issue with REST API user enumeration blocking. * Fix: Fixed undefined index notices on password audit page. = 6.2.10 - January 12, 2017 = * Improvement: Better reporting for failed brute force login attempts. * Change: Reworded setting for ignored IPs in the WAF alert email. * Change: Updated support link on scan page. * Fix: When a key is in place on multiple sites, it's now possible to downgrade the ones not registered for it. * Fix: Addressed an issue where the increased attack rate emails would send repeatedly if the threshold value was missing. * Fix: Typo fix in firewall rule 11 name. = 6.2.9 - December 27, 2016 = * Improvement: Updated internal GeoIP database. * Improvement: Better error handling when a site is unreachable publicly. * Fix: Fixed a URL in alert emails that did not correctly detect when sent from a multisite installation. * Fix: Addressed an issue where the scan did not alert about a new WordPress version. = 6.2.8 - December 12, 2016 = * Improvement: Added support for hiding the username information revealed by the WordPress 4.7 REST API. Thanks Vladimir Smitka. * Improvement: Added vulnerability scanning for themes. * Improvement: Reduced memory usage by up to 90% when scanning comments. * Improvement: Performance improvements for the dashboard widget. * Improvement: Added progressive loading of addresses on the blocked IP list. * Improvement: The diagnostics page now displays a config reading/writing test. * Change: Support for the Falcon cache has been removed. * Fix: Better messaging when the WAF rules are manually updated. * Fix: The proxy detection check frequency has been reduced and no longer alerts if the server is unreachable. * Fix: Adjusted the behavior of parsing the X-Forwarded-For header for better accuracy. Thanks Jason Woods. * Fix: Typo fix on the options page. * Fix: Scan issue for known core file now shows the correct links. * Fix: Links in "unlock" emails now work for IPv6 and IPv4-mapped-IPv6 addresses. * Fix: Restricted caching of responses from the Wordfence Security Network. * Fix: Fixed a recording issue with Wordfence Security Network statistics. = 6.2.7 - December 1, 2016 = * Improvement: WordPress 4.7 improvements for the Web Application Firewall. * Improvement: Updated signatures for hash-based malware detection. * Improvement: Automatically attempt to detect when a site is behind a proxy and has IP information in a different field. * Improvement: Added additional contextual help links. * Improvement: Significant performance improvement for determining the connecting IP. * Improvement: Better messaging for two-factor recovery codes. * Fix: Adjusted message when trying to block an IP in the allowlist. * Fix: Error log download links now work on Windows servers. * Fix: Avoid running out of memory when viewing very large activity logs. * Fix: Fixed warning that could be logged when following an unlock email link. * Fix: Tour popups on options page now scroll into view correctly. = 6.2.6 - November 17, 2016 = * Improvement: Improved formatting of attack data when it contains binary characters. * Improvement: Updated internal GeoIP database. * Improvement: Improved the ordering of rules in the malware scan so more specific rules are checked first. * Fix: Country blocking redirects are no longer allowed to be cached. * Fix: Fixed an issue with 2FA on multisite where the site could report URLs with different schemes depending on the state of plugin loading. = 6.2.5 - November 9, 2016 = * Fix: Fixed an issue that could occur on older WordPress versions when processing login attempts = 6.2.4 - November 9, 2016 = * Improvement: Scan times for very large sites with huge numbers of files are greatly improved. * Improvement: Added a configurable time limit for scans to help reduce overall server load and identify configuration problems. * Improvement: Email-based logins are now covered by "Don't let WordPress reveal valid users in login errors". * Improvement: Extended rate limiting support to the login page. * Fix: Fixed a case where files in the site root with issues could have them added multiple times. * Fix: Improved IP detection in the WAF when using an IP detection method that can have multiple values. * Fix: Added a safety check for when the database fails to return its max_allowed_packet value. * Fix: Added safety checks for when the configuration table migration has failed. * Fix: Added a couple rare failed login error codes to brute force detection. * Fix: Fixed a sequencing problem when adding detection for bot/human that led to it being called on every request. * Fix: Suppressed errors if a file is removed between the start of a scan and later scan stages. * Fix: Addressed a problem where the scan exclusions list was not checked correctly in some situations. = 6.2.3 - October 26, 2016 = * Improvement: Reworked blocking for IP ranges, country blocking, and direct IP blocking to minimize server impact when under attack. * Improvement: Live traffic better indicates the action taken by country blocking when it redirects a visitor. * Improvement: Added support for finding server logs to the Diagnostics page to help with troubleshooting. * Improvement: Allowlisted StatusCake IP addresses. * Improvement: Updated GeoIP database. * Improvement: Disabling Wordfence now sends an alert. * Improvement: Improved detection for uploaded PHP content in the firewall. * Fix: Eliminated memory-related errors resulting from the scan on sites with very large numbers of issues and low memory. * Fix: Fixed admin page layout for sites using RTL languages. * Fix: Reduced overhead of the dashboard widget. * Fix: Improved performance of checking for Allowlisted IPs. * Fix: Changes to the default plugin hello.php are now detected correctly in scans. * Fix: Fixed IPv6 warning in the dashboard widget. = 6.2.2 - October 12, 2016 = * Fix: Replaced a slow query in the dashboard widget that could affect sites with very large numbers of users. = 6.2.1 - October 11, 2016 = * Improvement: Now performing scanning for PHP code in all uploaded files in real-time. * Improvement: Improved handling of bad characters and IPv6 ranges in Advanced Blocking. * Improvement: Live traffic and scanning activity now display a paused notice when real-time updates are suspended while in the background. * Improvement: The file system scan alerts for files flagged by antivirus software with a '.suspected' extension. * Improvement: New alert option to get notified only when logins are from a new location/device. * Change: First phase for removing the Falcon cache in place, which will add a notice of its pending removal. * Fix: Included country flags for Kosovo and Curaçao. * Fix: Fixed the .htaccess directives used to hide files found by the scanner. * Fix: Dashboard widget shows correct status for failed logins by deleted users. * Fix: Removed duplicate issues for modified files in the scan results. * Fix: Suppressed warning from reverse lookup on IPv6 addresses without valid DNS records. * Fix: Fixed file inclusion error with themes lacking a 404 page. * Fix: CSS fixes for activity report email. = 6.2.0 - September 27, 2016 = * Improvement: Massive performance boost in file system scan. * Improvement: Added low resource usage scan option for shared hosts. * Improvement: Aggregated login attempts when checking the Wordfence Security Network for brute force attackers to reduce total requests. * Improvement: Now displaying scan time in a more readable format rather than total seconds. * Improvement: Added PHP7 compatible .htaccess directives to disable code execution within uploads directory. * Fix: Added throttling to sync the WAF attack data. * Fix: Removed unnecessary single quote in copy containing "IP's". * Fix: Fixed rare, edge case where cron key does not match the key in the database. * Fix: Fixed bug with regex matching carriage returns in the .htaccess based IP block list. * Fix: Fixed scans failing in subdirectory sites when updating malware signatures. * Fix: Fixed infinite loop in scan caused by symlinks. * Fix: Remove extra slash from "File restored OK" message in scan results. = 6.1.17 - September 9, 2016 = * Fix: Replaced calls to json_decode with our own implentation for hosts without the JSON extension enabled. = 6.1.16 - September 8, 2016 = * Improvement: Now performing malware scanning on all uploaded files in real-time. * Improvement: Added Web Application Firewall activity to Wordfence summary email. * Fix: Now using 503 response code in the page displayed when an IP is locked out. * Fix: `wflogs` directory is now correctly removed on uninstall. * Fix: Fixed recently introduced bug which caused the Allowlisted 404 URLs feature to no longer work. * Fix: Added try/catch to uncaught exception thrown when pinging the API key. * Improvement: Improved performance of the Live Traffic page in Firefox. * Improvement: Updated GeoIP database. = 6.1.15 - August 25, 2016 = * Improvement: Removed file-based config caching, added support for caching via WordPress's object cache. * Improvement: Allowlisted Uptime Robot's IP range. * Fix: Notify users if suPHP_ConfigPath is in their WAF setup, and prompt to update Extended Protection. * Fix: Fixed bug with allowing logins on admin accounts that are not fully activated with invalid 2FA codes when 2FA is required for all admins. * Fix: Removed usage of `wp_get_sites()` which was deprecated in WordPress 4.6. * Fix: Fixed PHP notice from `Undefined index: url` with custom/premium plugins. * Improvement: Converted the banned URLs input to a textarea. = 6.1.14 - August 11, 2016 = * Improvement: Support downloading a file of 2FA recovery codes. * Fix: Fixed PHP Notice: Undefined index: coreUnknown during scans. * Improvement: Add note to options page that login security is necessary for 2FA to work. * Fix: Fixed WAF false positives introduced with WordPress 4.6. * Improvement: Update Geo IP database. = 6.1.12 - July 26, 2016 = * Fix: Fixed fatal error on sites running Wordfence 6.1.11 in subdirectory and 6.1.10 or lower in parent directory. * Fix: Added a few common files to be excluded from unknown WordPress core file scan. = 6.1.11 - July 25, 2016 = * Improvement: Alert on added files to wp-admin, wp-includes. * Improvement: 2FA is now available via any authenticator program that accepts TOTP secrets. * Fix: Fixed bug with specific Advanced Blocking user-agent patterns causing 500 errors. * Improvement: Plugin updates are now only a critical issue if there is a security related fix, and a warning otherwise. A link to the changelog is included. * Fix: Added group writable permissions to Firewall's configuration files. * Improvement: Changed allowlist entry area to textbox on options page. * Fix: Move flags and logo served from wordfence.com over to locally hosted files. * Fix: Fixed issues with scan in WordPress 4.6 beta. * Fix: Fixed bug where Firewall rules could be missing on some sites running IIS. * Improvement: Added browser-based malware signatures for .js, .html files in the malware scan. * Fix: Added error suppression to `dns_get_record`. = 6.1.10 - June 22, 2016 = * Fix: Fixed fatal error in the event wflogs is not writable. = 6.1.9 - June 21, 2016 = * Fix: Using WP-CLI causes error Undefined index: SERVER_NAME. * Improvement: Hooked up restore/delete file scan tools to Filesystem API. * Fix: Reworked country blocking authentication check for access to XMLRPC. * Improvement: Added option to require cellphone sign-in on all admin accounts. * Improvement: Updated IPv6 GeoIP lite data. * Fix: Removed suPHP_ConfigPath from WAF installation process. * Fix: Prevent author names from being found through /wp-json/oembed. * Improvement: Added better solutions for fixing wordfence-waf.php, .user.ini, or .htaccess in scan. * Improvement: Added a method to view which files are currently used for WAF and to remove without reinstalling Wordfence. * Improvement: Changed rule compilation to use atomic writes. * Improvement: Removed security levels from Options page. * Improvement: Added option to disable ajaxwatcher (for allowlisting only for Admins) on the front end. = 6.1.8 - May 26, 2016 = * Fix: Change wfConfig::set_ser to split large objects into multiple queries. * Fix: Fixed bug in multisite with "You do not have sufficient permissions to access this page" error after logging in. * Improvement: Update Geo IP database. * Fix: Fixed deadlock when NFS is used for WAF file storage, in wfWAFAttackDataStorageFileEngine::addRow(). * Fix: Added third param to http_build_query for hosts with arg_separator.output set. * Improvement: Show admin notice if WAF blocks an admin (mainly needed for ajax requests). * Improvement: Clarify error message "Error reading config data, configuration file could be corrupted." * Improvement: Added better crawler detection. * Improvement: Add currentUserIsNot('administrator') to any generic firewall rules that are not XSS based. * Improvement: Update URLs in Wordfence for documentation about LiteSpeed and lockouts. * Improvement: Show message on scan results when a result is caused by enabling "Scan images and binary files as if they were executable" or... * Fix: Suppressed warning: dns_get_record(): DNS Query failed. * Fix: Suppressed warning gzinflate() error in scan logs. * Fix: On WAF roadblock page: Warning: urlencode() expects parameter 1 to be string, array given ... * Fix: Scheduled update for WAF rules doesn't decrease from 7 days, to 12 hours, when upgrading to a premium account. * Improvement: Better message for dashboard widget when no failed logins. = 6.1.7 - May 10, 2016 = * Security Fix: Fixed reflected XSS vulnerability: CVSS 6.1 (Medium). Thanks Kacper Szurek. = 6.1.6 - May 9, 2016 = * Fix: Fixed bug with 2FA not properly handling email address login. * Fix: Show logins/logouts when Live Traffic is disabled. * Fix: Fixed bug with PCRE versions < 7.0 (repeated subpattern is too long). * Fix: Now able to delete allowlisted URL/params containing ampersands and non-UTF8 characters. * Improvement: Reduced 2FA activation code to expire after 30 days. * Improvement: Live Traffic now only shows verified Googlebot under Google Crawler filter for new visits. * Improvement: Adjusted permissions on Firewall log/config files to be 0640. * Fix: Fixed false positive from Maldet in the wfConfig table during the scan. = 6.1.5 - April 28, 2016 = * Fix: WordPress language files no longer flagged as changed. * Improvement: Accept wildcards in "Immediately block IP's that access these URLs." * Fix: Fixed bug when multiple authors have published posts, /?author=N scans show an author archive page. * Fix: Fixed issue with IPv6 mapped IPv4 addresses not being treated as IPv4. * Improvement: Added WordPress version and various constants to Diagnostics report. * Fix: Fixed bug with Windows users unable to save Firewall config. * Improvement: Include option for IIS on Windows in Firewall config process, and recommend manual php.ini change only. * Fix: Made the 'administrator email address' admin notice dismissable. = 6.1.4 - April 20, 2016 = * Fix: Fixed potential bug with 'stored data not found after a fork. Got type: boolean'. * Improvement: Added bulk actions and filters to WAF allowlist table. * Improvement: Added a check while in learning mode to verify the response is not 404 before whitelising. * Fix: Added index to attackLogTime. wfHits trimmed on runInstall now. * Fix: Fixed attack data sync for hosts that cannot use wp-cron. * Improvement: Use wftest@wordfence.com as the Diagnostics page default email address. * Improvement: When WFWAF_ENABLED is set to false to disable the firewall, show this on the Firewall page. * Fix: Prevent warnings when $_SERVER is empty. * Fix: Bug fix for illegal string offset. * Fix: Hooked up multibyte string functions to binary safe equivalents. * Fix: Hooked up reverse IP lookup in Live Traffic. * Fix: Add the user the web server (or PHP) is currently running as to Diagnostics page. * Improvement: Pause Live Traffic after scrolling past the first entry. * Improvement: Move "Permanently block all temporarily blocked IP addresses" button to top of blocked IP list. * Fix: Added JSON fallback for PHP installations that don't have JSON enabled. = 6.1.3 - April 14, 2016 = * Improvement: Added dismiss button to the Wordfence WAF setup admin notice. * Fix: Removed .htaccess and .user.ini from publicly accessible config and backup file scan. * Fix: Removed the disallow file mods for admins created outside of WordPress. * Fix: Fixed bug with 'Hide WordPress version' causing issues with reCAPTCHA. * Improvement: Added instructions for NGINX users to restrict access to .user.ini during Firewall configuration. * Fix: Fixed bug with multiple API calls to 'get_known_files'. = 6.1.2 - April 12, 2016 = * Fix: Fixed fatal error when using a allowlisted IPv6 range and connecting with an IPv6 address. = 6.1.1 - April 12, 2016 = * Enhancement: Added Web Application Firewall * Enhancement: Added Diagnostics page * Enhancement: Added new scans: * Admins created outside of WordPress * Publicly accessible common (database or wp-config.php) backup files * Improvement: Updated Live Traffic with filters and to include blocked requests in the feed. You can find a [complete changelog](https://www.wordfence.com/help/advanced/changelog/) on our documentation site. models/page/wfPage.php000064400000016060152331132450010667 0ustar00label(); } /** * Convenience function for returning the canonical URL for the given page. * * @param string $identifier * @param string|bool $source The source page identifier to append to the URL if wanted. * @return string */ public static function pageURL($identifier, $source = false) { $page = new wfPage($identifier); return $page->url($source); } public function __construct($identifier) { $this->_identifier = $identifier; } public function __get($key) { switch ($key) { case 'identifier': return $this->_identifier; } throw new OutOfBoundsException("{$key} is not a valid property"); } public function __isset($key) { switch ($key) { case 'identifier': return true; } return false; } /** * Returns the user-displayable label for the page. * * @return bool|string */ public function label() { switch ($this->identifier) { case self::PAGE_DASHBOARD: return __('Dashboard', 'wordfence'); case self::PAGE_DASHBOARD_OPTIONS: return __('Global Options', 'wordfence'); case self::PAGE_FIREWALL: return __('Firewall', 'wordfence'); case self::PAGE_FIREWALL_OPTIONS: return __('Firewall Options', 'wordfence'); case self::PAGE_BLOCKING: return __('Blocking', 'wordfence'); case self::PAGE_BLOCKING_OPTIONS: return __('Blocking Options', 'wordfence'); case self::PAGE_SCAN: return __('Scan', 'wordfence'); case self::PAGE_SCAN_OPTIONS: return __('Scan Options', 'wordfence'); case self::PAGE_TOOLS_2FA: return __('Two-Factor Authentication', 'wordfence'); case self::PAGE_TOOLS_LIVE_TRAFFIC: return __('Live Traffic', 'wordfence'); case self::PAGE_TOOLS_IMPORT_EXPORT: return __('Import/Export Options', 'wordfence'); case self::PAGE_TOOLS_WHOIS: return __('Whois Lookup', 'wordfence'); case self::PAGE_TOOLS_DIAGNOSTICS: return __('Diagnostics', 'wordfence'); case self::PAGE_SUPPORT: return __('Support', 'wordfence'); } return false; } /** * Returns the canonical URL for the page. * * @param string|bool $source The source page identifier to append to the URL if wanted. * @return string */ public function url($source = false) { $page = ''; $subpage = ''; $hash = ''; switch ($this->identifier) { case self::PAGE_DASHBOARD: $page = 'Wordfence'; break; case self::PAGE_DASHBOARD_OPTIONS: $page = 'Wordfence'; $subpage = 'global_options'; break; case self::PAGE_FIREWALL: $page = 'WordfenceWAF'; break; case self::PAGE_FIREWALL_OPTIONS: $page = 'WordfenceWAF'; $subpage = 'waf_options'; break; case self::PAGE_BLOCKING: $page = 'WordfenceWAF'; $hash = '#top#blocking'; break; case self::PAGE_BLOCKING_OPTIONS: $page = 'WordfenceWAF'; $subpage = 'blocking_options'; break; case self::PAGE_SCAN: $page = 'WordfenceScan'; break; case self::PAGE_SCAN_OPTIONS: $page = 'WordfenceScan'; $subpage = 'scan_options'; break; case self::PAGE_TOOLS_2FA: $page = 'WordfenceTools'; $subpage = 'twofactor'; break; case self::PAGE_TOOLS_LIVE_TRAFFIC: $page = 'WordfenceTools'; $subpage = 'livetraffic'; break; case self::PAGE_TOOLS_IMPORT_EXPORT: $page = 'WordfenceTools'; $subpage = 'importexport'; break; case self::PAGE_TOOLS_WHOIS: $page = 'WordfenceTools'; $subpage = 'whois'; break; case self::PAGE_TOOLS_DIAGNOSTICS: $page = 'WordfenceTools'; $subpage = 'diagnostics'; break; case self::PAGE_SUPPORT: $page = 'WordfenceSupport'; break; } $baseURL = 'admin.php?'; $baseURL .= 'page=' . rawurlencode($page); if (!empty($subpage)) { $baseURL .= '&subpage=' . rawurlencode($subpage); } if (self::isValidPage($source)) { $baseURL .= '&source=' . rawurlencode($source); } if (!empty($hash)) { $baseURL .= $this->_hashURLEncode($hash); } if (function_exists('network_admin_url') && is_multisite()) { return network_admin_url($baseURL); } return admin_url($baseURL); } /** * Splits a URI hash component and URL-encodes its members. * * @param string $hash * @return string */ private function _hashURLEncode($hash) { $components = explode('#', $hash); foreach ($components as &$c) { $c = rawurlencode($c); } return implode('#', $components); } /** * Returns an ordered array of the pages required to reach this page, this page being the last entry in the array. * * @return array */ public function breadcrumbs() { switch ($this->identifier) { case self::PAGE_DASHBOARD: return array($this); case self::PAGE_DASHBOARD_OPTIONS: return array(new wfPage(wfPage::PAGE_DASHBOARD), $this); case self::PAGE_FIREWALL: return array($this); case self::PAGE_FIREWALL_OPTIONS: return array(new wfPage(wfPage::PAGE_FIREWALL), $this); case self::PAGE_BLOCKING: return array($this); case self::PAGE_BLOCKING_OPTIONS: return array(new wfPage(wfPage::PAGE_BLOCKING), $this); case self::PAGE_SCAN: return array($this); case self::PAGE_SCAN_OPTIONS: return array(new wfPage(wfPage::PAGE_SCAN), $this); case self::PAGE_TOOLS_2FA: return array($this); case self::PAGE_TOOLS_LIVE_TRAFFIC: return array($this); case self::PAGE_TOOLS_IMPORT_EXPORT: return array($this); case self::PAGE_TOOLS_WHOIS: return array($this); case self::PAGE_TOOLS_DIAGNOSTICS: return array($this); case self::PAGE_SUPPORT: return array($this); } return array(); } } models/block/wfBlock.php000064400000156723152331132450011236 0ustar00isIPInRange($IP)) { return true; } } elseif (wfUtils::subnetContainsIP($subnet, $IP)) { if ($forcedWhitelistEntry !== null) { $forcedWhitelistEntry = true; } return true; } } return false; } /** * Validates the payload for block creation. Returns true if valid, otherwise it'll return the first error found. * * @param $payload * @return bool|string */ public static function validate($payload) { if (!isset($payload['type']) || array_search($payload['type'], array('ip-address', 'country', 'custom-pattern')) === false) { return __('Invalid block type.', 'wordfence'); } if (!isset($payload['duration']) || intval($payload['duration']) < 0) { return __('Invalid block duration.', 'wordfence'); } if (!isset($payload['reason']) || empty($payload['reason'])) { return __('A block reason must be provided.', 'wordfence'); } if ($payload['type'] == 'ip-address') { if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); } if (self::isWhitelisted(trim($payload['ip']))) { return sprintf(/* translators: Support URL */ __('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. Learn More', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)); } } else if ($payload['type'] == 'country') { if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); } if (!$payload['blockLogin'] && !$payload['blockSite']) { return __('Nothing selected to block.', 'wordfence'); } if (!isset($payload['countries']) || empty($payload['countries']) || !is_array($payload['countries'])) { return __('No countries selected.', 'wordfence'); } require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */ foreach ($payload['countries'] as $code) { if (!isset($wfBulkCountries[$code])) { return __('An invalid country was selected.', 'wordfence'); } } } else if ($payload['type'] == 'custom-pattern') { $hasOne = false; if (isset($payload['ipRange']) && !empty($payload['ipRange'])) { $ipRange = new wfUserIPRange($payload['ipRange']); if ($ipRange->isValidRange()) { if ($ipRange->isMixedRange()) { return __('Ranges mixing IPv4 and IPv6 addresses are not supported.', 'wordfence'); } $hasOne = true; } else { return __('Invalid IP range.', 'wordfence'); } } if (isset($payload['hostname']) && !empty($payload['hostname'])) { if (preg_match('/^[a-z0-9\.\*\-]+$/i', $payload['hostname'])) { $hasOne = true; } else { return __('Invalid hostname.', 'wordfence'); } } if (isset($payload['userAgent']) && !empty($payload['userAgent'])) { $hasOne = true; } if (isset($payload['referrer']) && !empty($payload['referrer'])) { $hasOne = true; } if (!$hasOne) { return __('No block parameters provided.', 'wordfence'); } } return true; } /** * Creates the block. The $payload value is expected to have been validated prior to calling this. * * @param $payload */ public static function create($payload) { $type = $payload['type']; $duration = max((int) $payload['duration'], 0); $reason = $payload['reason']; if ($type == 'ip-address') { $ip = trim($payload['ip']); wfBlock::createIP($reason, $ip, $duration); } else if ($type == 'country') { $blockLogin = !!$payload['blockLogin']; $blockSite = !!$payload['blockSite']; $countries = array_unique($payload['countries']); wfBlock::createCountry($reason, $blockLogin, $blockSite, $countries, $duration); } else if ($type == 'custom-pattern') { $ipRange = ''; if (isset($payload['ipRange']) && !empty($payload['ipRange'])) { $ipRange = new wfUserIPRange($payload['ipRange']); $ipRange = $ipRange->getIPString(); } $hostname = (isset($payload['hostname']) && !empty($payload['hostname'])) ? $payload['hostname'] : ''; $userAgent = (isset($payload['userAgent']) && !empty($payload['userAgent'])) ? $payload['userAgent'] : ''; $referrer = (isset($payload['referrer']) && !empty($payload['referrer'])) ? $payload['referrer'] : ''; wfBlock::createPattern($reason, $ipRange, $hostname, $userAgent, $referrer, $duration); } } /** * Creates an IP block if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ip * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createIP($reason, $ip, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false, $type = self::TYPE_IP_MANUAL) { global $wpdb; if (self::isWhitelisted($ip)) { return; } if ($blockedTime === false) { $blockedTime = time(); } $blocksTable = wfBlock::blocksTable(); $hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = %s", $reason, ($duration ? $blockedTime + $duration : $duration), $type, wfUtils::inet_pton($ip))); if (!$hasExisting) { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", $type, wfUtils::inet_pton($ip), $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration))); wfConfig::inc('totalIPsBlocked'); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates an IP block for a WFSN response if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ip * @param int $duration This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createWFSN($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if (self::isWhitelisted($ip)) { return; } if ($blockedTime === false) { $blockedTime = time(); } $blocksTable = wfBlock::blocksTable(); $hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = %s", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_WFSN_TEMPORARY, wfUtils::inet_pton($ip))); if (!$hasExisting) { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", self::TYPE_WFSN_TEMPORARY, wfUtils::inet_pton($ip), $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration))); wfConfig::inc('totalIPsBlocked'); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates an IP block for a rate limit if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ip * @param int $duration This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createRateBlock($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if (self::isWhitelisted($ip)) { return; } if ($blockedTime === false) { $blockedTime = time(); } $blocksTable = wfBlock::blocksTable(); $hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = %s", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_RATE_BLOCK, wfUtils::inet_pton($ip))); if (!$hasExisting) { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", self::TYPE_RATE_BLOCK, wfUtils::inet_pton($ip), $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration))); wfConfig::inc('totalIPsBlocked'); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates an IP throttle for a rate limit if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ip * @param int $duration This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createRateThrottle($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if (self::isWhitelisted($ip)) { return; } if ($blockedTime === false) { $blockedTime = time(); } $blocksTable = wfBlock::blocksTable(); $hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = %s", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_RATE_THROTTLE, wfUtils::inet_pton($ip))); if (!$hasExisting) { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", self::TYPE_RATE_THROTTLE, wfUtils::inet_pton($ip), $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration))); wfConfig::inc('totalIPsBlocked'); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates a lockout if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ip * @param int $duration This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createLockout($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if (self::isWhitelisted($ip)) { return; } if ($blockedTime === false) { $blockedTime = time(); } $blocksTable = wfBlock::blocksTable(); $hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = %s", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_LOCKOUT, wfUtils::inet_pton($ip))); if (!$hasExisting) { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", self::TYPE_LOCKOUT, wfUtils::inet_pton($ip), $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration))); wfConfig::inc('totalIPsLocked'); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates a country block. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $blockLogin * @param string $blockSite * @param string $countries * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createCountry($reason, $blockLogin, $blockSite, $countries, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if ($blockedTime === false) { $blockedTime = time(); } $parameters = array( 'blockLogin' => $blockLogin ? 1 : 0, 'blockSite' => $blockSite ? 1 : 0, 'countries' => $countries, ); $blocksTable = wfBlock::blocksTable(); $existing = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$blocksTable}` WHERE `type` = %d LIMIT 1", self::TYPE_COUNTRY)); if ($existing) { $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `parameters` = %s WHERE `id` = %d", $reason, json_encode($parameters), $existing)); } else { $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_COUNTRY, self::MARKER_COUNTRY, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration), json_encode($parameters))); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Creates a pattern block. The parameters are expected to have been validated and sanitized prior to calling this. * * @param string $reason * @param string $ipRange * @param string $hostname * @param string $userAgent * @param string $referrer * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last. * @param bool|int $blockedTime Optional. Defaults to the current timestamp. * @param bool|int $lastAttempt Optional. Defaults to 0, which means never. * @param bool|int $blockedHits Optional. Defaults to 0. */ public static function createPattern($reason, $ipRange, $hostname, $userAgent, $referrer, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false) { global $wpdb; if ($blockedTime === false) { $blockedTime = time(); } $parameters = array( 'ipRange' => $ipRange, 'hostname' => $hostname, 'userAgent' => $userAgent, 'referrer' => $referrer, ); $blocksTable = wfBlock::blocksTable(); $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_PATTERN, self::MARKER_PATTERN, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration), json_encode($parameters))); if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Removes all expired blocks. */ public static function vacuum() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query("DELETE FROM `{$blocksTable}` WHERE `expiration` <= UNIX_TIMESTAMP() AND `expiration` != " . self::DURATION_FOREVER); } /** * Imports all valid blocks in $blocks. If $replaceExisting is true, this will remove all permanent blocks prior to the import. * * @param array $blocks * @param bool $replaceExisting */ public static function importBlocks($blocks, $replaceExisting = true) { global $wpdb; $blocksTable = wfBlock::blocksTable(); if ($replaceExisting) { $wpdb->query("DELETE FROM `{$blocksTable}` WHERE `expiration` = " . self::DURATION_FOREVER); } foreach ($blocks as $b) { self::_importBlock($b); } if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); } } /** * Validates the block import record and inserts it if valid. This validation is identical to what is applied to adding one through the UI. * * @param array $b * @return bool */ private static function _importBlock($b) { global $wpdb; $blocksTable = wfBlock::blocksTable(); if (!isset($b['type']) || !isset($b['IP']) || !isset($b['blockedTime']) || !isset($b['reason']) || !isset($b['lastAttempt']) || !isset($b['blockedHits'])) { return false; } if (empty($b['IP']) || empty($b['reason'])) { return false; } $ip = @wfUtils::inet_ntop(wfUtils::hex2bin($b['IP'])); if (!wfUtils::isValidIP($ip)) { return false; } switch ($b['type']) { case self::TYPE_IP_MANUAL: case self::TYPE_IP_AUTOMATIC_TEMPORARY: case self::TYPE_IP_AUTOMATIC_PERMANENT: case self::TYPE_WFSN_TEMPORARY: case self::TYPE_RATE_BLOCK: case self::TYPE_RATE_THROTTLE: case self::TYPE_LOCKOUT: if (self::isWhitelisted($ip)) { return false; } return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, NULL)", (int) $b['type'], wfUtils::inet_pton($ip), (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER)) !== false; case self::TYPE_COUNTRY: if (!isset($b['parameters'])) { return false; } if (wfUtils::inet_pton($ip) != self::MARKER_COUNTRY) { return false; } $parameters = @json_decode($b['parameters'], true); if (!isset($parameters['blockLogin']) || !isset($parameters['blockSite']) || !isset($parameters['countries'])) { return false; } $parameters['blockLogin'] = wfUtils::truthyToInt($parameters['blockLogin']); $parameters['blockSite'] = wfUtils::truthyToInt($parameters['blockSite']); require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */ foreach ($parameters['countries'] as $code) { if (!isset($wfBulkCountries[$code])) { return false; } } $parameters = array('blockLogin' => $parameters['blockLogin'], 'blockSite' => $parameters['blockSite'], 'countries' => $parameters['countries']); return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_COUNTRY, self::MARKER_COUNTRY, (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER, json_encode($parameters))) !== false; case self::TYPE_PATTERN: if (!isset($b['parameters'])) { return false; } if (wfUtils::inet_pton($ip) != self::MARKER_PATTERN) { return false; } $parameters = @json_decode($b['parameters'], true); if (!isset($parameters['ipRange']) || !isset($parameters['hostname']) || !isset($parameters['userAgent']) || !isset($parameters['referrer'])) { return false; } $hasOne = false; if (!empty($parameters['ipRange'])) { $ipRange = new wfUserIPRange($parameters['ipRange']); if ($ipRange->isValidRange()) { if ($ipRange->isMixedRange()) { return false; } $hasOne = true; } else { return false; } } if (!empty($parameters['hostname'])) { if (preg_match('/^[a-z0-9\.\*\-]+$/i', $parameters['hostname'])) { $hasOne = true; } else { return false; } } if (!empty($parameters['userAgent'])) { $hasOne = true; } if (!empty($parameters['referrer'])) { $hasOne = true; } if (!$hasOne) { return false; } $ipRange = ''; if (!empty($parameters['ipRange'])) { $ipRange = new wfUserIPRange($parameters['ipRange']); $ipRange = $ipRange->getIPString(); } $parameters = array( 'ipRange' => $ipRange, 'hostname' => $parameters['hostname'], 'userAgent' => $parameters['userAgent'], 'referrer' => $parameters['referrer'], ); return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_PATTERN, self::MARKER_PATTERN, (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER, json_encode($parameters))) !== false; } return false; } /** * Returns an array suitable for JSON output of all permanent blocks. * * @return array */ public static function exportBlocks() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $query = "SELECT `type`, HEX(`IP`) AS `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `parameters` FROM `{$blocksTable}` WHERE `expiration` = " . self::DURATION_FOREVER; $rows = $wpdb->get_results($query, ARRAY_A); return $rows; } /** * Returns all unexpired blocks (including lockouts by default), optionally only of the specified types. These are sorted descending by the time created. * * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading. * @param array $ofTypes An optional array of block types to restrict the returned array of blocks to. * @param int $offset The offset to start the result fetch at. * @param int $limit The maximum number of results to return. -1 for all. * @param string $sortColumn The column to sort by. * @param string $sortDirection The direction to sort. * @param string $filter An optional value to filter by. * @return wfBlock[] */ public static function allBlocks($prefetch = false, $ofTypes = array(), $offset = 0, $limit = -1, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') { global $wpdb; $blocksTable = wfBlock::blocksTable(); $columns = '`id`'; if ($prefetch) { $columns = '*'; } $sort = 'typeSort'; switch ($sortColumn) { //Match the display table column to the corresponding schema column case 'type': //Use default; break; case 'detail': $sort = 'detailSort'; break; case 'ruleAdded': $sort = 'blockedTime'; break; case 'reason': $sort = 'reason'; break; case 'expiration': $sort = 'expiration'; break; case 'blockCount': $sort = 'blockedHits'; break; case 'lastAttempt': $sort = 'lastAttempt'; break; } $order = 'ASC'; if ($sortDirection == 'descending') { $order = 'DESC'; } $query = "SELECT {$columns}, CASE WHEN `type` = " . self::TYPE_COUNTRY . " THEN 0 WHEN `type` = " . self::TYPE_PATTERN . " THEN 1 WHEN `type` = " . self::TYPE_LOCKOUT . " THEN 2 WHEN `type` = " . self::TYPE_RATE_THROTTLE . " THEN 3 WHEN `type` = " . self::TYPE_RATE_BLOCK . " THEN 4 WHEN `type` = " . self::TYPE_IP_AUTOMATIC_PERMANENT . " THEN 5 WHEN `type` = " . self::TYPE_IP_AUTOMATIC_TEMPORARY . " THEN 6 WHEN `type` = " . self::TYPE_WFSN_TEMPORARY . " THEN 7 WHEN `type` = " . self::TYPE_IP_MANUAL . " THEN 8 ELSE 9999 END AS `typeSort`, CASE WHEN `type` = " . self::TYPE_COUNTRY . " THEN `parameters` WHEN `type` = " . self::TYPE_PATTERN . " THEN `parameters` WHEN `type` = " . self::TYPE_IP_MANUAL . " THEN `IP` WHEN `type` = " . self::TYPE_IP_AUTOMATIC_PERMANENT . " THEN `IP` WHEN `type` = " . self::TYPE_RATE_BLOCK . " THEN `IP` WHEN `type` = " . self::TYPE_RATE_THROTTLE . " THEN `IP` WHEN `type` = " . self::TYPE_LOCKOUT . " THEN `IP` WHEN `type` = " . self::TYPE_WFSN_TEMPORARY . " THEN `IP` WHEN `type` = " . self::TYPE_IP_AUTOMATIC_TEMPORARY . " THEN `IP` ELSE 9999 END AS `detailSort` FROM `{$blocksTable}` WHERE "; if (!empty($ofTypes)) { $sanitizedTypes = array_map('intval', $ofTypes); $query .= "`type` IN (" . implode(', ', $sanitizedTypes) . ') AND '; } $query .= '(`expiration` = ' . self::DURATION_FOREVER . " OR `expiration` > UNIX_TIMESTAMP()) ORDER BY `{$sort}` {$order}, `id` DESC"; if ($limit > -1) { $offset = (int) $offset; $limit = (int) $limit; $query .= " LIMIT {$offset},{$limit}"; } $rows = $wpdb->get_results($query, ARRAY_A); $result = array(); foreach ($rows as $r) { if ($prefetch) { if ($r['type'] == self::TYPE_COUNTRY || $r['type'] == self::TYPE_PATTERN) { $ip = null; } else { $ip = wfUtils::inet_ntop($r['IP']); } $parameters = null; if ($r['type'] == self::TYPE_PATTERN || $r['type'] == self::TYPE_COUNTRY) { $parameters = @json_decode($r['parameters'], true); } $result[] = new wfBlock($r['id'], $r['type'], $ip, $r['blockedTime'], $r['reason'], $r['lastAttempt'], $r['blockedHits'], $r['expiration'], $parameters); } else { $result[] = new wfBlock($r['id']); } } return $result; } /** * Functions identically to wfBlock::allBlocks except that it filters the result. The filtering is done within PHP rather than MySQL, so this will impose a performance penalty and should only * be used when filtering is actually wanted. * * @param bool $prefetch * @param array $ofTypes * @param int $offset * @param int $limit * @param string $sortColumn * @param string $sortDirection * @param string $filter * @return wfBlock[] */ public static function filteredBlocks($prefetch = false, $ofTypes = array(), $offset = 0, $limit = -1, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') { $filter = trim($filter); $matchType = ''; $matchValue = ''; if (empty($filter)) { return self::allBlocks($prefetch, $ofTypes, $offset, $limit, $sortColumn, $sortDirection); } else if (wfUtils::isValidIP($filter)) { //e.g., 4.5.6.7, ffe0::, ::0 $matchType = 'ip'; $matchValue = wfUtils::inet_ntop(wfUtils::inet_pton($filter)); } if (empty($matchType) && preg_match('/^(?:[0-9]+|\*)\.(?:(?:[0-9]+|\*)\.(?!$))*(?:(?:[0-9]+|\*))?$/', trim($filter, '.'))) { //e.g., possible wildcard IPv4 like 4.5.* $components = explode('.', trim($filter, '.')); if (count($components) <= 4) { $components = array_pad($components, 4, '*'); $matchType = 'ipregex'; $matchValue = '^'; foreach ($components as $c) { if (empty($c) || $c == '*') { $matchValue .= '\d+'; } else { $matchValue .= (int) $c; } $matchValue .= '\.'; } $matchValue = substr($matchValue, 0, -2); $matchValue .= '$'; } } if (empty($matchType) && preg_match('/^(?:[0-9a-f]+\:)(?:[0-9a-f]+\:|\*){1,2}(?:[0-9a-f]+|\*)?$/i', $filter)) { //e.g., possible wildcard IPv6 like ffe0:* $components = explode(':', $filter); $matchType = 'ipregex'; $matchValue = '^'; for ($i = 0; $i < 4; $i++) { if (isset($components[$i])) { $matchValue .= strtoupper(str_pad(dechex($components[$i]), 4, '0', STR_PAD_LEFT)); } else { $matchValue .= '[0-9a-f]{4}'; } $matchValue .= ':'; } $matchValue = substr($matchValue, 0, -1); $matchValue .= '$'; } if (empty($matchType)) { $matchType = 'literal'; $matchValue = $filter; } $offsetProcessed = 0; $limitProcessed = 0; $returnBlocks = array(); for ($i = 0; true; $i += WORDFENCE_BLOCKED_IPS_PER_PAGE) { $blocks = wfBlock::allBlocks(true, $ofTypes, $i, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection); if (empty($blocks)) { break; } foreach ($blocks as $b) { $include = false; if (stripos($b->reason, $filter) !== false) { $include = true; } if (!$include && $b->type == self::TYPE_PATTERN) { if (stripos($b->hostname, $filter) !== false) { $include = true; } else if (stripos($b->userAgent, $filter) !== false) { $include = true; } else if (stripos($b->referrer, $filter) !== false) { $include = true; } else if (stripos($b->ipRange, $filter) !== false) { $include = true; } } if (!$include && stripos(self::nameForType($b->type), $filter) !== false) { $include = true; } if (!$include) { switch ($matchType) { case 'ip': if ($b->matchRequest($matchValue, '', '') != self::MATCH_NONE) { $include = true; } else if ($b->type == self::TYPE_LOCKOUT && wfUtils::inet_pton($matchValue) == wfUtils::inet_pton($b->ip)) { $include = true; } break; case 'ipregex': if (preg_match('/' . $matchValue . '/i', $b->ip)) { $include = true; } break; case 'literal': //Already checked above break; } } if ($include) { if ($offsetProcessed < $offset) { //Still searching for the start offset $offsetProcessed++; continue; } $returnBlocks[] = $b; $limitProcessed++; } if ($limit != -1 && $limitProcessed >= $limit) { return $returnBlocks; } } } return $returnBlocks; } /** * Returns all unexpired blocks of types wfBlock::TYPE_IP_MANUAL, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfBlock::TYPE_WFSN_TEMPORARY, wfBlock::TYPE_RATE_BLOCK, and wfBlock::TYPE_RATE_THROTTLE. * * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading. * @return wfBlock[] */ public static function ipBlocks($prefetch = false) { return self::allBlocks($prefetch, array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE)); } /** * Finds an IP block matching the given IP, returning it if found. Returns false if none are found. * * @param string $ip * @return bool|wfBlock */ public static function findIPBlock($ip) { global $wpdb; $blocksTable = wfBlock::blocksTable(); $query = "SELECT * FROM `{$blocksTable}` WHERE "; $ofTypes = array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE); $query .= "`type` IN (" . implode(', ', $ofTypes) . ') AND '; $query .= "`IP` = %s AND "; $query .= '(`expiration` = ' . self::DURATION_FOREVER . ' OR `expiration` > UNIX_TIMESTAMP()) ORDER BY `blockedTime` DESC LIMIT 1'; $r = $wpdb->get_row($wpdb->prepare($query, wfUtils::inet_pton($ip)), ARRAY_A); if (is_array($r)) { $ip = wfUtils::inet_ntop($r['IP']); return new wfBlock($r['id'], $r['type'], $ip, $r['blockedTime'], $r['reason'], $r['lastAttempt'], $r['blockedHits'], $r['expiration'], null); } return false; } /** * Returns all unexpired blocks of type wfBlock::TYPE_COUNTRY. * * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading. * @return wfBlock[] */ public static function countryBlocks($prefetch = false) { return self::allBlocks($prefetch, array(self::TYPE_COUNTRY)); } /** * Returns whether or not there is a country block rule. * * @return bool */ public static function hasCountryBlock() { $countryBlocks = self::countryBlocks(); return !empty($countryBlocks); } /** * Returns the value for the country blocking bypass cookie. * * @return string */ public static function countryBlockingBypassCookieValue() { $val = wfConfig::get('cbl_cookieVal', false); if (!$val) { $val = uniqid(); wfConfig::set('cbl_cookieVal', $val); } return $val; } /** * Returns all unexpired blocks of type wfBlock::TYPE_PATTERN. * * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading. * @return wfBlock[] */ public static function patternBlocks($prefetch = false) { return self::allBlocks($prefetch, array(self::TYPE_PATTERN)); } /** * Returns all unexpired lockouts (type wfBlock::TYPE_LOCKOUT). * * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading. * @return wfBlock[] */ public static function lockouts($prefetch = false) { return self::allBlocks($prefetch, array(self::TYPE_LOCKOUT)); } /** * Returns the lockout record for the given IP if it exists. * * @param string $ip * @return bool|wfBlock */ public static function lockoutForIP($ip) { global $wpdb; $blocksTable = wfBlock::blocksTable(); $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$blocksTable}` WHERE `IP` = %s AND `type` = %d AND (`expiration` = %d OR `expiration` > UNIX_TIMESTAMP())", wfUtils::inet_pton($ip), self::TYPE_LOCKOUT, self::DURATION_FOREVER), ARRAY_A); if ($row) { return new wfBlock($row['id'], $row['type'], wfUtils::inet_ntop($row['IP']), $row['blockedTime'], $row['reason'], $row['lastAttempt'], $row['blockedHits'], $row['expiration'], null); } return false; } /** * Removes all blocks whose ID is in the given array. * * @param array $blockIDs * @param bool $retrieve if true, fetch and return the deleted rows * @return bool|array true(or an array of blocks, if $retrieve is specified) or false on failure */ public static function removeBlockIDs($blockIDs, $retrieve=false) { global $wpdb; $blocksTable = wfBlock::blocksTable(); $blockIDs = array_map('intval', $blockIDs); $inClause = implode(', ', $blockIDs); if($retrieve){ $blocks = $wpdb->get_results("SELECT * FROM `{$blocksTable}` WHERE `id` IN (".$inClause.")"); } else{ $blocks=true; } $query = "DELETE FROM `{$blocksTable}` WHERE `id` IN (" . $inClause . ")"; if($wpdb->query($query)!==false) { return $blocks; } return false; } /** * Removes all IP blocks (i.e., manual, wfsn, or rate limited) */ public static function removeAllIPBlocks() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query("DELETE FROM `{$blocksTable}` WHERE `type` IN (" . implode(', ', array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE, self::TYPE_LOCKOUT)) . ")"); } /** * Removes all country blocks */ public static function removeAllCountryBlocks() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query("DELETE FROM `{$blocksTable}` WHERE `type` IN (" . implode(', ', array(self::TYPE_COUNTRY)) . ")"); } /** * Removes all blocks that were created by WFSN responses. */ public static function removeTemporaryWFSNBlocks() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query($wpdb->prepare("DELETE FROM `{$blocksTable}` WHERE `type` = %d", self::TYPE_WFSN_TEMPORARY)); } /** * Converts all blocks to non-expiring whose ID is in the given array. * * @param array $blockIDs */ public static function makePermanentBlockIDs($blockIDs) { global $wpdb; $blocksTable = wfBlock::blocksTable(); //TODO: revise this if we support user-customizable durations $supportedTypes = array( self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE, self::TYPE_LOCKOUT, self::TYPE_IP_AUTOMATIC_TEMPORARY, ); $blockIDs = array_map('intval', $blockIDs); $query = $wpdb->prepare("UPDATE `{$blocksTable}` SET `expiration` = %d, `type` = %d WHERE `id` IN (" . implode(', ', $blockIDs) . ") AND `type` IN (" . implode(', ', $supportedTypes) . ") AND (`expiration` > UNIX_TIMESTAMP())", self::DURATION_FOREVER, self::TYPE_IP_AUTOMATIC_PERMANENT); $wpdb->query($query); $supportedTypes = array( self::TYPE_IP_MANUAL, ); $blockIDs = array_map('intval', $blockIDs); $query = $wpdb->prepare("UPDATE `{$blocksTable}` SET `expiration` = %d, `type` = %d WHERE `id` IN (" . implode(', ', $blockIDs) . ") AND `type` IN (" . implode(', ', $supportedTypes) . ") AND (`expiration` > UNIX_TIMESTAMP())", self::DURATION_FOREVER, self::TYPE_IP_MANUAL); $wpdb->query($query); } /** * Removes all specific IP blocks and lockouts that can result in the given IP being blocked. * * @param string $ip */ public static function unblockIP($ip) { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query($wpdb->prepare("DELETE FROM `{$blocksTable}` WHERE `IP` = %s", wfUtils::inet_pton($ip))); } /** * Removes all lockouts that can result in the given IP being blocked. * * @param string $ip */ public static function unlockOutIP($ip) { global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query($wpdb->prepare("DELETE FROM `{$blocksTable}` WHERE `IP` = %s AND `type` = %d", wfUtils::inet_pton($ip), self::TYPE_LOCKOUT)); } /** * Constructs a wfBlock instance. This _does not_ create a new record in the table, only fetches or updates an existing one. * * @param $id * @param bool $type * @param bool $ip * @param bool $blockedTime * @param bool $reason * @param bool $lastAttempt * @param bool $blockedHits * @param bool $expiration * @param bool $parameters */ public function __construct($id, $type = false, $ip = false, $blockedTime = false, $reason = false, $lastAttempt = false, $blockedHits = false, $expiration = false, $parameters = false) { $this->_id = $id; $this->_type = $type; $this->_ip = $ip; $this->_blockedTime = $blockedTime; $this->_reason = $reason; $this->_lastAttempt = $lastAttempt; $this->_blockedHits = $blockedHits; $this->_expiration = $expiration; $this->_parameters = $parameters; } public function __get($key) { switch ($key) { case 'id': return $this->_id; case 'type': if ($this->_type === false) { $this->_fetch(); } return $this->_type; case 'ip': if ($this->_type === false) { $this->_fetch(); } return $this->_ip; case 'blockedTime': if ($this->_type === false) { $this->_fetch(); } return $this->_blockedTime; case 'reason': if ($this->_type === false) { $this->_fetch(); } return $this->_reason; case 'lastAttempt': if ($this->_type === false) { $this->_fetch(); } return $this->_lastAttempt; case 'blockedHits': if ($this->_type === false) { $this->_fetch(); } return $this->_blockedHits; case 'expiration': if ($this->_type === false) { $this->_fetch(); } return $this->_expiration; case 'parameters': if ($this->_type === false) { $this->_fetch(); } return $this->_parameters; //Country case 'blockLogin': if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['blockLogin']; case 'blockSite': if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['blockSite']; case 'countries': if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['countries']; //Pattern case 'ipRange': if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['ipRange']; case 'hostname': if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['hostname']; case 'userAgent': if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['userAgent']; case 'referrer': if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); } return $this->parameters['referrer']; } throw new OutOfBoundsException("{$key} is not a valid property"); } public function __isset($key) { switch ($key) { case 'id': case 'type': case 'ip': case 'blockedTime': case 'reason': case 'lastAttempt': case 'blockedHits': case 'expiration': return true; case 'parameters': if ($this->_type === false) { $this->_fetch(); } return !empty($this->_parameters); //Country case 'blockLogin': if ($this->type != self::TYPE_COUNTRY) { return false; } return !empty($this->parameters['blockLogin']); case 'blockSite': if ($this->type != self::TYPE_COUNTRY) { return false; } return !empty($this->parameters['blockSite']); case 'countries': if ($this->type != self::TYPE_COUNTRY) { return false; } return !empty($this->parameters['countries']); //Pattern case 'ipRange': if ($this->type != self::TYPE_PATTERN) { return false; } return !empty($this->parameters['ipRange']); case 'hostname': if ($this->type != self::TYPE_PATTERN) { return false; } return !empty($this->parameters['hostname']); case 'userAgent': if ($this->type != self::TYPE_PATTERN) { return false; } return !empty($this->parameters['userAgent']); case 'referrer': if ($this->type != self::TYPE_PATTERN) { return false; } return !empty($this->parameters['referrer']); } return false; } /** * Fetches the record for the block from the database and populates the instance variables. */ private function _fetch() { global $wpdb; $blocksTable = wfBlock::blocksTable(); $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$blocksTable}` WHERE `id` = %d", $this->id), ARRAY_A); if ($row !== null) { $this->_type = $row['type']; $ip = $row['IP']; if ($ip == self::MARKER_COUNTRY || $ip == self::MARKER_PATTERN) { $this->_ip = null; } else { $this->_ip = wfUtils::inet_ntop($ip); } $this->_blockedTime = $row['blockedTime']; $this->_reason = $row['reason']; $this->_lastAttempt = $row['lastAttempt']; $this->_blockedHits = $row['blockedHits']; $this->_expiration = $row['expiration']; $parameters = $row['parameters']; if ($parameters === null) { $this->_parameters = null; } else { $this->_parameters = @json_decode($parameters, true); } } } /** * Tests the block parameters against the given request. If matched, this will return the corresponding wfBlock::MATCH_ * constant. If not, it will return wfBlock::MATCH_NONE. * * @param $ip * @param $userAgent * @param $referrer * @return int */ public function matchRequest($ip, $userAgent, $referrer) { switch ($this->type) { case self::TYPE_IP_MANUAL: case self::TYPE_IP_AUTOMATIC_TEMPORARY: case self::TYPE_IP_AUTOMATIC_PERMANENT: case self::TYPE_WFSN_TEMPORARY: case self::TYPE_RATE_BLOCK: case self::TYPE_RATE_THROTTLE: if (wfUtils::inet_pton($ip) == wfUtils::inet_pton($this->ip)) { return self::MATCH_IP; } break; case self::TYPE_PATTERN: $match = (!empty($this->ipRange) || !empty($this->hostname) || !empty($this->userAgent) || !empty($this->referrer)); if (!empty($this->ipRange)) { $range = new wfUserIPRange($this->ipRange); $match = $match && $range->isIPInRange($ip); } if (!empty($this->hostname)) { $hostname = wfUtils::reverseLookup($ip); $match = $match && preg_match(wfUtils::patternToRegex($this->hostname), $hostname); } if (!empty($this->userAgent)) { $match = $match && fnmatch($this->userAgent, $userAgent, FNM_CASEFOLD); } if (!empty($this->referrer)) { $match = $match && fnmatch($this->referrer, $referrer, FNM_CASEFOLD); } if ($match) { return self::MATCH_PATTERN; } break; case self::TYPE_COUNTRY: if (!wfConfig::get('isPaid')) { return self::MATCH_NONE; } //Bypass Redirect URL Hit $bareRequestURI = wfUtils::extractBareURI($_SERVER['REQUEST_URI']); $bareBypassRedirURI = wfUtils::extractBareURI(wfConfig::get('cbl_bypassRedirURL', '')); if ($bareBypassRedirURI && $bareRequestURI == $bareBypassRedirURI) { $bypassRedirDest = wfConfig::get('cbl_bypassRedirDest', ''); if ($bypassRedirDest) { wfUtils::setcookie('wfCBLBypass', wfBlock::countryBlockingBypassCookieValue(), time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true); return self::MATCH_COUNTRY_REDIR_BYPASS; } } //Bypass View URL Hit $bareBypassViewURI = wfUtils::extractBareURI(wfConfig::get('cbl_bypassViewURL', '')); if ($bareBypassViewURI && $bareBypassViewURI == $bareRequestURI) { wfUtils::setcookie('wfCBLBypass', wfBlock::countryBlockingBypassCookieValue(), time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true); return self::MATCH_NONE; } //Early exit checks if ($this->_shouldBypassCountryBlocking()) { //Has valid bypass cookie return self::MATCH_NONE; } if ($this->blockLogin) { add_filter('authenticate', array($this, '_checkForBlockedCountryFilter'), 1, 1); } if (!$this->blockLogin && $this->_isAuthRequest()) { //Not blocking login and this is a login request return self::MATCH_NONE; } else if (!$this->blockSite && !$this->_isAuthRequest()) { //Not blocking site and this may be a site request return self::MATCH_NONE; } else if (is_user_logged_in() && !wfConfig::get('cbl_loggedInBlocked', false)) { //Not blocking logged in users and a login session exists return self::MATCH_NONE; } //Block everything if ($this->blockSite && $this->blockLogin) { return $this->_checkForBlockedCountry(); } //Block the login form itself and any attempt to authenticate if ($this->blockLogin && $this->_isAuthRequest()) { return $this->_checkForBlockedCountry(); } //Block requests that aren't to the login page, xmlrpc.php, or a user already logged in if ($this->blockSite && !$this->_isAuthRequest() && !defined('XMLRPC_REQUEST')) { return $this->_checkForBlockedCountry(); } //XMLRPC is inaccesible when public portion of the site and auth is disabled if ($this->blockLogin && $this->blockSite && defined('XMLRPC_REQUEST')) { return $this->_checkForBlockedCountry(); } break; } return self::MATCH_NONE; } /** * Returns whether or not the current request should be treated as an auth request. * * @return bool */ private function _isAuthRequest() { if ((strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false)) { return true; } return false; } /** * Tests whether or not the country blocking bypass cookie is set and valid. * * @return bool */ private function _shouldBypassCountryBlocking() { if (isset($_COOKIE['wfCBLBypass']) && $_COOKIE['wfCBLBypass'] == wfBlock::countryBlockingBypassCookieValue()) { return true; } return false; } /** * Checks the country block against the requesting IP, returning the action to take. * * @return int */ private function _checkForBlockedCountry() { $blockedCountries = $this->countries; $bareRequestURI = untrailingslashit(wfUtils::extractBareURI($_SERVER['REQUEST_URI'])); $IP = wfUtils::getIP(); if ($country = wfUtils::IP2Country($IP)) { foreach ($blockedCountries as $blocked) { if (strtoupper($blocked) == strtoupper($country)) { //At this point we know the user has been blocked if (wfConfig::get('cbl_action') == 'redir') { $redirURL = wfConfig::get('cbl_redirURL'); $eRedirHost = wfUtils::extractHostname($redirURL); $isExternalRedir = false; if ($eRedirHost && $eRedirHost != wfUtils::extractHostname(home_url())) { //It's an external redirect... $isExternalRedir = true; } if ((!$isExternalRedir) && untrailingslashit(wfUtils::extractBareURI($redirURL)) == $bareRequestURI) { //Is this the URI we want to redirect to, then don't block it return self::MATCH_NONE; } else { return self::MATCH_COUNTRY_REDIR; } } else { return self::MATCH_COUNTRY_BLOCK; } } } } return self::MATCH_NONE; } /** * Filter hook for the country blocking check. Does nothing if not blocked, otherwise presents the block page and exits. * * Note: Must remain `public` for callback to work. */ public function _checkForBlockedCountryFilter($user) { $block = $this->_checkForBlockedCountry(); if ($block == self::MATCH_NONE) { return $user; } $log = wfLog::shared(); $log->getCurrentRequest()->actionDescription = __('blocked access via country blocking', 'wordfence'); wfConfig::inc('totalCountryBlocked'); wfActivityReport::logBlockedIP(wfUtils::getIP(), null, 'country'); $log->do503(3600, __('Access from your area has been temporarily limited for security reasons', 'wordfence')); //exits } /** * Adds $quantity to the blocked count and sets the timestamp for lastAttempt. * * @param int $quantity * @param bool|int $timestamp */ public function recordBlock($quantity = 1, $timestamp = false) { if ($timestamp === false) { $timestamp = time(); } global $wpdb; $blocksTable = wfBlock::blocksTable(); $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `blockedHits` = `blockedHits` + %d, `lastAttempt` = GREATEST(`lastAttempt`, %d) WHERE `id` = %d", $quantity, $timestamp, $this->id)); $this->_type = false; //Trigger a re-fetch next access } /** * Returns an array suitable for JSON of the values needed to edit the block. * * @return array */ public function editValues() { switch ($this->type) { case self::TYPE_COUNTRY: return array( 'blockLogin' => wfUtils::truthyToInt($this->blockLogin), 'blockSite' => wfUtils::truthyToInt($this->blockSite), 'countries' => $this->countries, 'reason' => $this->reason, 'expiration' => $this->expiration, ); } return array(); } } models/block/wfRateLimit.php000064400000017256152331132450012073 0ustar00queryWrite("DELETE FROM {$table} WHERE eMin < FLOOR((UNIX_TIMESTAMP() - 60) / 60)"); } public static function globalRateLimit() { static $_cachedGlobal = null; if ($_cachedGlobal === null) { $_cachedGlobal = new wfRateLimit(self::TYPE_GLOBAL); } return $_cachedGlobal; } public static function crawlerViewsRateLimit() { static $_cachedCrawlerViews = null; if ($_cachedCrawlerViews === null) { $_cachedCrawlerViews = new wfRateLimit(self::TYPE_CRAWLER_VIEWS); } return $_cachedCrawlerViews; } public static function crawler404sRateLimit() { static $_cachedCrawler404s = null; if ($_cachedCrawler404s === null) { $_cachedCrawler404s = new wfRateLimit(self::TYPE_CRAWLER_404S); } return $_cachedCrawler404s; } public static function humanViewsRateLimit() { static $_cachedHumanViews = null; if ($_cachedHumanViews === null) { $_cachedHumanViews = new wfRateLimit(self::TYPE_HUMAN_VIEWS); } return $_cachedHumanViews; } public static function human404sRateLimit() { static $_cachedHuman404s = null; if ($_cachedHuman404s === null) { $_cachedHuman404s = new wfRateLimit(self::TYPE_HUMAN_404S); } return $_cachedHuman404s; } /** * Returns whether or not humans and bots have the same rate limits configured. * * @return bool */ public static function identicalHumanBotRateLimits() { $humanViews = self::humanViewsRateLimit(); $crawlerViews = self::crawlerViewsRateLimit(); if ($humanViews->isEnabled() != $crawlerViews->isEnabled()) { return false; } if ($humanViews->limit() != $crawlerViews->limit()) { return false; } $human404s = self::human404sRateLimit(); $crawler404s = self::crawler404sRateLimit(); if ($human404s->isEnabled() != $crawler404s->isEnabled()) { return false; } if ($human404s->limit() != $crawler404s->limit()) { return false; } return true; } public static function mightRateLimit($hitType) { if (!wfConfig::get('firewallEnabled')) { return false; } $IP = wfUtils::getIP(); if (wfBlock::isWhitelisted($IP)) { return false; } if (wfConfig::get('neverBlockBG') == 'neverBlockUA' && wfCrawl::isGoogleCrawler()) { return false; } if (wfConfig::get('neverBlockBG') == 'neverBlockVerified' && wfCrawl::isVerifiedGoogleCrawler()) { return false; } if ($hitType == '404') { $allowed404s = wfConfig::get('allowed404s'); if (is_string($allowed404s)) { $allowed404s = array_filter(preg_split("/[\r\n]+/", $allowed404s)); $allowed404sPattern = ''; foreach ($allowed404s as $allowed404) { $allowed404sPattern .= preg_replace('/\\\\\*/', '.*?', preg_quote($allowed404, '/')) . '|'; } $uri = $_SERVER['REQUEST_URI']; if (($index = strpos($uri, '?')) !== false) { $uri = substr($uri, 0, $index); } if ($allowed404sPattern && preg_match('/^' . substr($allowed404sPattern, 0, -1) . '$/i', $uri)) { return false; } } } if (self::globalRateLimit()->isEnabled()) { return true; } $visitorType = self::visitorType(); if ($visitorType == self::VISITOR_TYPE_CRAWLER) { if ($hitType == self::HIT_TYPE_NORMAL) { if (self::crawlerViewsRateLimit()->isEnabled()) { return true; } } else { if (self::crawler404sRateLimit()->isEnabled()) { return true; } } } else { if ($hitType == self::HIT_TYPE_NORMAL) { if (self::humanViewsRateLimit()->isEnabled()) { return true; } } else { if (self::human404sRateLimit()->isEnabled()) { return true; } } } return false; } public static function countHit($hitType, $ip) { $table = self::table(); wfDB::shared()->queryWrite("INSERT INTO {$table} (eMin, IP, hitType, hits) VALUES (FLOOR(UNIX_TIMESTAMP() / 60), %s, %s, @wfcurrenthits := 1) ON DUPLICATE KEY UPDATE hits = IF(@wfcurrenthits := hits + 1, hits + 1, hits + 1)", wfUtils::inet_pton($ip), $hitType); } /** * Returns one of the VISITOR_TYPE_ constants for the purposes of determining which rate limit to apply. * * @return string */ public static function visitorType() { static $_cachedVisitorType = null; if ($_cachedVisitorType === null) { $_cachedVisitorType = ((isset($_SERVER['HTTP_USER_AGENT']) && wfCrawl::isCrawler($_SERVER['HTTP_USER_AGENT'])) || empty($_SERVER['HTTP_USER_AGENT']) ? wfRateLimit::VISITOR_TYPE_CRAWLER : wfRateLimit::VISITOR_TYPE_HUMAN); } return $_cachedVisitorType; } protected function __construct($type) { $this->_type = $type; } /** * Returns whether or not this rate limit is configured in a way where it would run. * * @return bool */ public function isEnabled() { switch ($this->_type) { case self::TYPE_GLOBAL: return wfConfig::get('maxGlobalRequests') != 'DISABLED' && wfConfig::getInt('maxGlobalRequests') > 0; case self::TYPE_CRAWLER_VIEWS: return wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && wfConfig::getInt('maxRequestsCrawlers') > 0; case self::TYPE_CRAWLER_404S: return wfConfig::get('max404Crawlers') != 'DISABLED' && wfConfig::getInt('max404Crawlers') > 0; case self::TYPE_HUMAN_VIEWS: return wfConfig::get('maxRequestsHumans') != 'DISABLED' && wfConfig::getInt('maxRequestsHumans') > 0; case self::TYPE_HUMAN_404S: return wfConfig::get('max404Humans') != 'DISABLED' && wfConfig::getInt('max404Humans') > 0; } return true; } public function limit() { switch ($this->_type) { case self::TYPE_GLOBAL: return wfConfig::getInt('maxGlobalRequests'); case self::TYPE_CRAWLER_VIEWS: return wfConfig::getInt('maxRequestsCrawlers'); case self::TYPE_CRAWLER_404S: return wfConfig::getInt('max404Crawlers'); case self::TYPE_HUMAN_VIEWS: return wfConfig::getInt('maxRequestsHumans'); case self::TYPE_HUMAN_404S: return wfConfig::getInt('max404Humans'); } return -1; } public function shouldEnforce($hitType) { switch ($this->_type) { case self::TYPE_GLOBAL: return $this->isEnabled() && $this->_hitCount() > max(wfConfig::getInt('maxGlobalRequests'), 1); case self::TYPE_CRAWLER_VIEWS: return self::visitorType() == self::VISITOR_TYPE_CRAWLER && $hitType == self::HIT_TYPE_NORMAL && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('maxRequestsCrawlers'); case self::TYPE_CRAWLER_404S: return self::visitorType() == self::VISITOR_TYPE_CRAWLER && $hitType == self::HIT_TYPE_404 && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('max404Crawlers'); case self::TYPE_HUMAN_VIEWS: return self::visitorType() == self::VISITOR_TYPE_HUMAN && $hitType == self::HIT_TYPE_NORMAL && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('maxRequestsHumans'); case self::TYPE_HUMAN_404S: return self::visitorType() == self::VISITOR_TYPE_HUMAN && $hitType == self::HIT_TYPE_404 && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('max404Humans'); } return false; } /** * Returns the hit count corresponding to the current request type. * * @return int */ protected function _hitCount() { if (self::$_hitCount === false) { self::$_hitCount = (int) wfDB::shared()->querySingle("SELECT @wfcurrenthits"); } return self::$_hitCount; } }models/firewall/wfFirewall.php000064400000040157152331132450012455 0ustar00firewallMode(); } if ($protection === null) { $protection = $this->protectionMode(); } switch ($status) { case self::FIREWALL_MODE_ENABLED: $statusText = __('Enabled', 'wordfence'); break; case self::FIREWALL_MODE_LEARNING: $statusText = __('Learning Mode', 'wordfence'); break; default: return __('Disabled', 'wordfence'); } switch ($protection) { case self::PROTECTION_MODE_EXTENDED: $protectionText = __('Extended Protection', 'wordfence'); break; default: $protectionText = __('Basic Protection', 'wordfence'); break; } return sprintf('%s (%s)', $statusText, $protectionText); } /** * Syncs the status from WAF to the wfConfig table if $toDatabase is true, the reverse if false. * * @param bool $toDatabase */ public function syncStatus($toDatabase = true) { if ($toDatabase) { try { $status = wfWAF::getInstance()->getStorageEngine()->getConfig('wafStatus'); if (in_array($status, array(self::FIREWALL_MODE_DISABLED, self::FIREWALL_MODE_LEARNING, self::FIREWALL_MODE_ENABLED))) { wfConfig::set('waf_status', $status); } } catch (Exception $e) { //Ignore } } else { try { $status = wfConfig::get('waf_status'); if (in_array($status, array(self::FIREWALL_MODE_DISABLED, self::FIREWALL_MODE_LEARNING, self::FIREWALL_MODE_ENABLED))) { wfWAF::getInstance()->getStorageEngine()->setConfig('wafStatus', $status); } } catch (Exception $e) { //Ignore } } } /** * Tests the WAF configuration and returns true if successful. * * @return bool */ public function testConfig() { try { wfWAF::getInstance()->getStorageEngine()->isDisabled(); } catch (Exception $e) { return false; } return true; } /** * Returns a normalized percentage (i.e., in the range [0, 1]) to the corresponding display percentage * based on license type. * * @param float $percentage * @param bool $adjust Whether or not to adjust the range to [0, 0.7] * @return float */ protected function _normalizedPercentageToDisplay($percentage, $adjust = true) { if (wfConfig::get('isPaid') || !$adjust) { return round($percentage, 2); } return round($percentage * 0.70, 2); } /** * Returns the percentage calculation of the overall firewall status, which is displayed under "Firewall" * on the Dashboard page. * * @return float */ public function overallStatus() { try { $wafStatus = $this->wafStatus(); $bruteForceStatus = $this->bruteForceStatus(); $percentage = 0.0; $percentage += $wafStatus * 0.80; $percentage += $bruteForceStatus * 0.20; return $this->_normalizedPercentageToDisplay($percentage, false); } catch (Exception $e) { //Ignore, return 0% } return 0.0; } public function statusList($section = null) { $statusList = array(); $wafStatusList = $this->wafStatusList($section); $bruteForceStatusList = $this->bruteForceStatusList(); foreach ($wafStatusList as $entry) { $entry['percentage'] *= 0.8; $statusList[] = $entry; } foreach ($bruteForceStatusList as $entry) { $entry['percentage'] *= 0.2; $statusList[] = $entry; } return array_filter($statusList); } /** * Returns the percentage calculation of the WAF status, which is displayed under "Web Application * Firewall" on the Firewall page. * * @return float */ public function wafStatus() { try { $ruleStatus = $this->ruleStatus(true); $blacklistStatus = $this->blacklistStatus(); $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); $extendedProtection = $wafEnabled && WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL; $rateLimitingAdvancedBlockingEnabled = wfConfig::get('firewallEnabled', 1); if (!$wafEnabled) { return 0.0; } $percentage = 0.0; $percentage += $this->_normalizedPercentageToDisplay($ruleStatus * 0.35, true); $percentage += $blacklistStatus * 0.35; $percentage += ($extendedProtection ? 0.20 : 0.0); $percentage += ($rateLimitingAdvancedBlockingEnabled ? 0.10 : 0.0); return $this->_normalizedPercentageToDisplay($percentage, false); } catch (Exception $e) { //Ignore, return 0% } return 0.0; } public function wafStatusList($section = null) { $statusList = array(); try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); if (!$wafEnabled) { return array( array( 'percentage' => 1.0, 'title' => __('Enable firewall.', 'wordfence'), ), ); } // Get percent of rules enabled. $ruleStatus = $this->ruleStatusDescription(true); $premiumStatus = array(); if (!wfConfig::get('isPaid')) { $premiumStatus = array( 'percentage' => 0.30, 'title' => __('Enable Premium Rules.', 'wordfence'), ); } if ($section === 'rules') { if ($ruleStatus) { $ruleStatus['percentage'] = $this->_normalizedPercentageToDisplay($ruleStatus['percentage']); } return array_filter(array($ruleStatus, $premiumStatus)); } if ($premiumStatus) { $premiumStatus['percentage'] *= 0.35; $premiumStatus['percentage'] = $this->_normalizedPercentageToDisplay($premiumStatus['percentage'], false); } if ($ruleStatus) { $ruleStatus['percentage'] *= 0.35; $ruleStatus['percentage'] = $this->_normalizedPercentageToDisplay($ruleStatus['percentage']); } $statusList = array_merge($statusList, array($ruleStatus), array($premiumStatus)); $blacklistStatus = $this->blacklistStatusDescription(); if ($section === 'blacklist') { return array_filter(array($blacklistStatus)); } if ($blacklistStatus) { $blacklistStatus['percentage'] *= 0.35; $blacklistStatus['percentage'] = $this->_normalizedPercentageToDisplay($blacklistStatus['percentage'], false); } $statusList = array_merge($statusList, array($blacklistStatus)); $extendedProtection = $wafEnabled && WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL; if (!$extendedProtection) { $statusList[] = array( 'percentage' => $this->_normalizedPercentageToDisplay(0.20, false), 'title' => __('Optimize the Wordfence Firewall.', 'wordfence'), ); } $rateLimitingAdvancedBlockingEnabled = wfConfig::get('firewallEnabled', 1); if (!$rateLimitingAdvancedBlockingEnabled) { $statusList[] = array( 'percentage' => $this->_normalizedPercentageToDisplay(0.10, false), 'title' => __('Enable Rate Limiting and Advanced Blocking.', 'wordfence'), ); } return array_filter($statusList); } catch (Exception $e) { //Ignore, return 0% } if (!WFWAF_OPERATIONAL) { return array(array('percentage' => 1.0, 'title' => __('Repair the Wordfence Firewall configuration.', 'wordfence'))); } return array(); } /** * Returns the status of the WAF. * * @return string */ public function firewallMode() { try { return (!WFWAF_ENABLED ? 'disabled' : wfWAF::getInstance()->getStorageEngine()->getConfig('wafStatus')); } catch (Exception $e) { //Ignore } return self::FIREWALL_MODE_DISABLED; } /** * Returns the current protection mode configured for the WAF. * * @return string */ public function protectionMode() { if (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND) { return self::PROTECTION_MODE_EXTENDED; } return self::PROTECTION_MODE_BASIC; } /** * Returns whether or not this installation is in a subdirectory of another WordPress site with the WAF already optimized. * * @return bool */ public function isSubDirectoryInstallation() { if (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL) { return true; } return false; } /** * Returns the percentage calculation of the firewall rule status, which is displayed under "Firewall Rules" on the * Firewall page. * * The calculation is the number of rules enabled divided by the total number of rules. If the WAF is in learning * mode, no rules are enforced, so it's clamped to 0%. * * @param bool $round Round the percentage (in the range [0, 1]) to be only whole percentages. * @return float */ public function ruleStatus($round = false) { try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); if (!$wafEnabled) { return 0.0; } /*$learningMode = !!wfWAF::getInstance()->isInLearningMode(); if ($learningMode) { return 0.0; }*/ $rules = wfWAF::getInstance()->getRules(); $disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules'); /** @var wfWAFRule $rule */ $enabledCount = 0; foreach ($rules as $ruleID => $rule) { if (isset($disabledRules[$ruleID]) && $disabledRules[$ruleID]) { continue; } $enabledCount++; } $percentEnabled = (count($rules) == 0 ? 0 : $enabledCount / count($rules)); if ($round) { return round($percentEnabled, 2); } return $this->_normalizedPercentageToDisplay($percentEnabled); } catch (Exception $e) { //Ignore, return 0% } return 0.0; } /** * @param bool $round * @return array */ public function ruleStatusDescription($round = false) { try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); if (!$wafEnabled) { return array( 'percentage' => 1.0, 'title' => __('Enable firewall.', 'wordfence'), ); } /*$learningMode = !!wfWAF::getInstance()->isInLearningMode(); if ($learningMode) { return 0.0; }*/ $rules = wfWAF::getInstance()->getRules(); $disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules'); /** @var wfWAFRule $rule */ $enabledCount = 0; foreach ($rules as $ruleID => $rule) { if (isset($disabledRules[$ruleID]) && $disabledRules[$ruleID]) { continue; } $enabledCount++; } $percentEnabled = 1.0 - ((float) (count($rules) == 0 ? 0 : $enabledCount / count($rules))); if ($percentEnabled === 0.0) { return array(); } $reenbleCount = count($rules) - $enabledCount; return array( 'percentage' => ($round ? round($percentEnabled, 2) : $percentEnabled), 'title' => sprintf(_nx('Re-enable %d firewall rule.', 'Re-enable %d firewall rules.', $reenbleCount, 'wordfence'), number_format_i18n($reenbleCount)), ); } catch (Exception $e) { //Ignore, return 0% } return array( 'percentage' => 1.0, 'title' => __('Enable firewall.', 'wordfence'), ); } /** * Returns the rule feed that is in use. * * @return string */ public function ruleMode() { if (wfConfig::get('isPaid')) { return self::RULE_MODE_PREMIUM; } return self::RULE_MODE_COMMUNITY; } /** * Returns 100% if the blacklist is enabled, 0% if not. * * @return float */ public function blacklistStatus() { try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); if (!$wafEnabled) { return 0.0; } return $this->blacklistMode() == self::BLACKLIST_MODE_ENABLED ? 1.0 : 0.0; } catch (Exception $e) { //Ignore, return 0% } return 0.0; } /** * Returns 100% if the blacklist is enabled, 0% if not. * * @return array */ public function blacklistStatusDescription() { try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); if (!$wafEnabled) { return array( 'percentage' => 1.0, 'title' => __('Enable Firewall.', 'wordfence'), ); } if ($this->blacklistMode() == self::BLACKLIST_MODE_ENABLED) { return array(); } return array( 'percentage' => 1.0, 'title' => __('Enable Real-Time IP Blocklist.', 'wordfence'), ); } catch (Exception $e) { //Ignore, return 0% } return array( 'percentage' => 1.0, 'title' => __('Enable Real-Time IP Blocklist.', 'wordfence'), ); } /** * Returns the blacklist mode. * * @return string */ public function blacklistMode() { $blacklistEnabled = false; try { $wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled()); $blacklistEnabled = $wafEnabled && !wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking'); } catch (Exception $e) { //Do nothing } if (wfConfig::get('isPaid') && $blacklistEnabled) { return self::BLACKLIST_MODE_ENABLED; } return self::BLACKLIST_MODE_DISABLED; } /** * Returns a percentage rating for the brute force protection status. This includes both the WFSN enabled status * and the status of individual login security options. These options are available to all, so they are always * in the range [0,1]. * * @return float */ public function bruteForceStatus() { $networkBruteForceEnabled = !!wfConfig::get('other_WFNet'); $localBruteForceEnabled = !!wfConfig::get('loginSecurityEnabled'); $percentage = 0.0; if ($localBruteForceEnabled) { $percentage += 0.1; if ($networkBruteForceEnabled) { $percentage += 0.5; } if (wfConfig::get('loginSec_strongPasswds_enabled') && (wfConfig::get('loginSec_strongPasswds') == 'pubs' || wfConfig::get('loginSec_strongPasswds') == 'all')) { $percentage += 0.1; } if (wfConfig::get('loginSec_maskLoginErrors')) { $percentage += 0.1; } if (wfConfig::get('loginSec_blockAdminReg')) { $percentage += 0.1; } if (wfConfig::get('loginSec_disableAuthorScan')) { $percentage += 0.1; } } return round($percentage, 2); } /** * Returns the status of the WAF's learning mode. * * @return bool|int Returns true if enabled without an automatic switchover, a timestamp if enabled with one, and false if not in learning mode. */ public function learningModeStatus() { if ($this->firewallMode() != self::FIREWALL_MODE_LEARNING) { return false; } try { $config = wfWAF::getInstance()->getStorageEngine(); if ($config->getConfig('learningModeGracePeriodEnabled')) { return (int) $config->getConfig('learningModeGracePeriod'); } return true; } catch (Exception $e) { //Ignore, return false } return false; } /** * @return array */ public function bruteForceStatusList() { $networkBruteForceEnabled = !!wfConfig::get('other_WFNet'); $localBruteForceEnabled = !!wfConfig::get('loginSecurityEnabled'); $status = array(); if ($localBruteForceEnabled) { if (!$networkBruteForceEnabled) { $status[] = array( 'percentage' => 0.5, 'title' => __('Enable Real-Time Wordfence Security Network.', 'wordfence'), ); } if (!wfConfig::get('loginSec_strongPasswds_enabled')) { $status[] = array( 'percentage' => 0.1, 'title' => __('Enforce Strong Passwords.', 'wordfence'), ); } if (!wfConfig::get('loginSec_maskLoginErrors')) { $status[] = array( 'percentage' => 0.1, 'title' => __('Enable Mask Login Errors.', 'wordfence'), ); } if (!wfConfig::get('loginSec_blockAdminReg')) { $status[] = array( 'percentage' => 0.1, 'title' => __('Enable Block Admin Registration.', 'wordfence'), ); } if (!wfConfig::get('loginSec_disableAuthorScan')) { $status[] = array( 'percentage' => 0.1, 'title' => __('Disable Author Scanning.', 'wordfence'), ); } } else { $status[] = array( 'percentage' => 1.0, 'title' => __('Enable Brute Force Protection.', 'wordfence'), ); } return array_filter($status); } } models/scanner/wfScanner.php000064400000114466152331132450012132 0ustar00 $oldVersions, 'scansEnabled_wafStatus' => $wafStatus, )); } /** * Returns an array of the scan options (as keys) and the corresponding value for the limited scan type. * * @return array */ public static function limitedScanTypeOptions() { return array_merge(self::_inactiveScanOptions(), array( 'scansEnabled_checkHowGetIPs' => true, 'scansEnabled_malware' => true, 'scansEnabled_fileContents' => true, 'scansEnabled_fileContentsGSB' => true, 'scansEnabled_suspiciousOptions' => true, 'scansEnabled_oldVersions' => true, 'scansEnabled_wafStatus' => true, 'lowResourceScansEnabled' => true, 'scan_exclude' => wfConfig::get('scan_exclude', ''), 'scan_include_extra' => wfConfig::get('scan_include_extra', ''), 'scansEnabled_geoipSupport' => true, )); } /** * Returns an array of the scan options (as keys) and the corresponding value for the standard scan type. * * @return array */ public static function standardScanTypeOptions() { return array_merge(self::_inactiveScanOptions(), array( 'spamvertizeCheck' => true, 'checkSpamIP' => true, 'scansEnabled_checkGSB' => true, 'scansEnabled_checkHowGetIPs' => true, 'scansEnabled_checkReadableConfig' => true, 'scansEnabled_suspectedFiles' => true, 'scansEnabled_core' => true, 'scansEnabled_coreUnknown' => true, 'scansEnabled_malware' => true, 'scansEnabled_fileContents' => true, 'scansEnabled_fileContentsGSB' => true, 'scansEnabled_posts' => true, 'scansEnabled_comments' => true, 'scansEnabled_suspiciousOptions' => true, 'scansEnabled_oldVersions' => true, 'scansEnabled_suspiciousAdminUsers' => true, 'scansEnabled_passwds' => true, 'scansEnabled_diskSpace' => true, 'scansEnabled_wafStatus' => true, 'scan_exclude' => wfConfig::get('scan_exclude', ''), 'scan_include_extra' => wfConfig::get('scan_include_extra', ''), 'scansEnabled_geoipSupport' => true, )); } /** * Returns an array of the scan options (as keys) and the corresponding value for the high sensitivity scan type. * * @return array */ public static function highSensitivityScanTypeOptions() { return array_merge(self::_inactiveScanOptions(), array( 'spamvertizeCheck' => true, 'checkSpamIP' => true, 'scansEnabled_checkGSB' => true, 'scansEnabled_checkHowGetIPs' => true, 'scansEnabled_checkReadableConfig' => true, 'scansEnabled_suspectedFiles' => true, 'scansEnabled_core' => true, 'scansEnabled_themes' => true, 'scansEnabled_plugins' => true, 'scansEnabled_coreUnknown' => true, 'scansEnabled_malware' => true, 'scansEnabled_fileContents' => true, 'scansEnabled_fileContentsGSB' => true, 'scansEnabled_posts' => true, 'scansEnabled_comments' => true, 'scansEnabled_suspiciousOptions' => true, 'scansEnabled_oldVersions' => true, 'scansEnabled_suspiciousAdminUsers' => true, 'scansEnabled_passwds' => true, 'scansEnabled_diskSpace' => true, 'scansEnabled_wafStatus' => true, 'other_scanOutside' => true, 'scansEnabled_scanImages' => true, 'scan_exclude' => wfConfig::get('scan_exclude', ''), 'scan_include_extra' => wfConfig::get('scan_include_extra', ''), 'scansEnabled_geoipSupport' => true, )); } /** * Returns an array of the scan options (as keys) and the corresponding value for the custom scan type. * * @return array */ public static function customScanTypeOptions() { $allOptions = self::_inactiveScanOptions(); foreach ($allOptions as $key => &$value) { $value = wfConfig::get($key); } $allOptions['scansEnabled_geoipSupport'] = true; $allOptions['scansEnabled_highSense'] = false; //deprecated return $allOptions; } /** * Returns an array of scan options and their inactive values for convenience in merging with the various scan type * option arrays. * * @return array */ protected static function _inactiveScanOptions() { return array( 'spamvertizeCheck' => false, 'checkSpamIP' => false, 'scansEnabled_checkGSB' => false, 'scansEnabled_checkHowGetIPs' => false, 'scansEnabled_checkReadableConfig' => false, 'scansEnabled_suspectedFiles' => false, 'scansEnabled_core' => false, 'scansEnabled_themes' => false, 'scansEnabled_plugins' => false, 'scansEnabled_coreUnknown' => false, 'scansEnabled_malware' => false, 'scansEnabled_fileContents' => false, 'scan_include_extra' => '', 'scansEnabled_fileContentsGSB' => false, 'scansEnabled_posts' => false, 'scansEnabled_comments' => false, 'scansEnabled_suspiciousOptions' => false, 'scansEnabled_oldVersions' => false, 'scansEnabled_suspiciousAdminUsers' => false, 'scansEnabled_passwds' => false, 'scansEnabled_diskSpace' => false, 'scansEnabled_wafStatus' => false, 'other_scanOutside' => false, 'scansEnabled_scanImages' => false, 'scansEnabled_highSense' => false, 'lowResourceScansEnabled' => false, 'scan_exclude' => '', 'scansEnabled_geoipSupport' => false, ); } /** * Returns the scan options only available to premium users. * * @return array */ protected static function _premiumScanOptions() { return array('spamvertizeCheck', 'checkSpamIP', 'scansEnabled_checkGSB'); } /** * Returns an array of weights for calculating the scan option status score. * * @return array */ protected static function _scanOptionWeights() { return array( 'spamvertizeCheck' => 0.05, 'checkSpamIP' => 0.05, 'scansEnabled_checkGSB' => 0.05, 'scansEnabled_checkHowGetIPs' => 0.05, 'scansEnabled_checkReadableConfig' => 0.05, 'scansEnabled_suspectedFiles' => 0.05, 'scansEnabled_core' => 0.05, 'scansEnabled_themes' => 0, 'scansEnabled_plugins' => 0, 'scansEnabled_coreUnknown' => 0.05, 'scansEnabled_malware' => 0.05, 'scansEnabled_fileContents' => 0.1, 'scan_include_extra' => 0, 'scansEnabled_fileContentsGSB' => 0.05, 'scansEnabled_posts' => 0.05, 'scansEnabled_comments' => 0.05, 'scansEnabled_suspiciousOptions' => 0.05, 'scansEnabled_oldVersions' => 0.1, 'scansEnabled_suspiciousAdminUsers' => 0.05, 'scansEnabled_passwds' => 0.05, 'scansEnabled_diskSpace' => 0.05, 'other_scanOutside' => 0, 'scansEnabled_scanImages' => 0, 'scansEnabled_highSense' => 0, 'lowResourceScansEnabled' => 0, 'scan_exclude' => 0, 'scansEnabled_geoipSupport' => 0, 'scansEnabled_wafStatus' => 0, ); } /** * wfScanner constructor. * @param int|bool $scanType If false, defaults to the config option `scanType`. */ public function __construct($scanType = false) { if ($scanType === false || !self::isValidScanType($scanType)) { $this->_scanType = wfConfig::get('scanType'); } else { $this->_scanType = $scanType; } } /** * Returns whether or not the scanner will run as premium. * * @return bool */ public function isPremiumScan() { return !!wfConfig::get('isPaid'); } /** * Returns whether or not automatic scans will run. * * @return bool */ public function isEnabled() { return !!wfConfig::get('scheduledScansEnabled'); } /** * Returns whether or not a scan is running. A scan is considered running if the timestamp * under wf_scanRunning is within WORDFENCE_MAX_SCAN_LOCK_TIME seconds of now. * * @return bool */ public function isRunning() { $scanRunning = wfConfig::get('wf_scanRunning'); return ($scanRunning && time() - $scanRunning < WORDFENCE_MAX_SCAN_LOCK_TIME); } /** * Returns the current scan scheduling mode. * * @return string One of the SCAN_SCHEDULING_MODE_ constants */ public function schedulingMode() { if (wfConfig::get('isPaid') && wfConfig::get('schedMode') == 'manual') { return self::SCAN_SCHEDULING_MODE_MANUAL; } return self::SCAN_SCHEDULING_MODE_AUTOMATIC; } /** * Returns the manual scheduling type. This is only applicable when the scheduling mode is * SCAN_SCHEDULING_MODE_MANUAL. * * @return string One of the MANUAL_SCHEDULING_ constants. */ public function manualSchedulingType() { return wfConfig::get('manualScanType', self::MANUAL_SCHEDULING_ONCE_DAILY); } /** * Returns the start hour used for non-custom manual schedules. This is initially random but may be modified * by the user later. * * @return int An hour number. */ public function manualSchedulingStartHour() { return wfConfig::get('schedStartHour'); } /** * Returns the currently defined custom schedule. This is only applicable when the scheduling mode is * SCAN_SCHEDULING_MODE_MANUAL and the manual type is set to MANUAL_SCHEDULING_CUSTOM. * * @return array The array will be of the format array(0 => array(0 => 0, 1 => 0 ... 23 => 0), ... 6 => array(...)) */ public function customSchedule() { $normalizedSchedule = array_fill(0, 7, array_fill(0, 24, 0)); $storedSchedule = wfConfig::get_ser('scanSched', array()); if (is_array($storedSchedule) && !empty($storedSchedule) && is_array($storedSchedule[0])) { foreach ($storedSchedule as $dayNumber => $day) { foreach ($day as $hourNumber => $enabled) { $normalizedSchedule[$dayNumber][$hourNumber] = wfUtils::truthyToInt($enabled); } } } return $normalizedSchedule; } /** * Returns an associative array containing the current state each scan stage and its corresponding status. * * @return array */ public function stageStatus() { $status = $this->_defaultStageStatuses(); $runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false); $status = array_merge($status, $runningStatus); foreach ($status as $stage => &$value) { //Convert value array into status only $value = $value['status']; if (!$this->isRunning() && $value == self::STATUS_RUNNING) { $value = self::STATUS_PENDING; } } return $status; } /** * Returns an array of all scan options for the given stage that are enabled. * * @param string $stage One of the STAGE_ constants * @return array */ private function _scanJobsForStage($stage) { $always = array(); $options = array(); switch ($stage) { case self::STAGE_SPAMVERTISING_CHECKS: $options = array( 'spamvertizeCheck', ); break; case self::STAGE_SPAM_CHECK: $options = array( 'checkSpamIP', ); break; case self::STAGE_BLACKLIST_CHECK: $options = array( 'scansEnabled_checkGSB', ); break; case self::STAGE_SERVER_STATE: if ($this->scanType() != self::SCAN_TYPE_QUICK) { $always = array( 'checkSkippedFiles', ); } $options = array( 'scansEnabled_checkHowGetIPs', 'scansEnabled_diskSpace', 'scansEnabled_wafStatus', 'scansEnabled_geoipSupport', ); break; case self::STAGE_FILE_CHANGES: $options = array( 'scansEnabled_core', 'scansEnabled_themes', 'scansEnabled_plugins', 'scansEnabled_coreUnknown', ); break; case self::STAGE_PUBLIC_FILES: $options = array( 'scansEnabled_checkReadableConfig', 'scansEnabled_suspectedFiles', ); break; case self::STAGE_MALWARE_SCAN: $options = array( 'scansEnabled_malware', 'scansEnabled_fileContents', ); break; case self::STAGE_CONTENT_SAFETY: $options = array( 'scansEnabled_posts', 'scansEnabled_comments', 'scansEnabled_fileContentsGSB', ); break; case self::STAGE_PASSWORD_STRENGTH: $options = array( 'scansEnabled_passwds', ); break; case self::STAGE_VULNERABILITY_SCAN: $options = array( 'scansEnabled_oldVersions', ); break; case self::STAGE_OPTIONS_AUDIT: $options = array( 'scansEnabled_suspiciousOptions', 'scansEnabled_suspiciousAdminUsers', ); break; } $enabledOptions = $this->scanOptions(); $filteredOptions = array(); foreach ($options as $o) { if (isset($enabledOptions[$o]) && $enabledOptions[$o]) { $filteredOptions[] = $o; } } return array_merge($filteredOptions, $always); } /** * Returns an associative array containing each scan stage's default state. The keys are the stage identifiers and the value * is an array in the format * array( * 'started' => the number of tasks for this stage that have started (initially 0), * 'finished' => the number of tasks that have started and finished (initially 0), * 'expected' => the expected number of tasks to run for this stage (based on the scan type and options enabled) * ) * * @return array */ private function _defaultStageStatuses() { $status = array( self::STAGE_SPAMVERTISING_CHECKS => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_SPAM_CHECK => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_BLACKLIST_CHECK => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_SERVER_STATE => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_FILE_CHANGES => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_PUBLIC_FILES => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_MALWARE_SCAN => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_CONTENT_SAFETY => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_PASSWORD_STRENGTH => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_VULNERABILITY_SCAN => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), self::STAGE_OPTIONS_AUDIT => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0), ); foreach ($status as $stage => &$parameters) { if ($parameters['status'] == self::STATUS_PREMIUM) { continue; } $jobs = $this->_scanJobsForStage($stage); if (count($jobs)) { $parameters['expected'] = count($jobs); } else { $parameters['status'] = self::STATUS_DISABLED; } } return $status; } /** * Resets the state of the scan stage status record. */ public function resetStages() { if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans return; } wfConfig::set_ser('scanStageStatuses', $this->_defaultStageStatuses(), false, wfConfig::DONT_AUTOLOAD); } /** * Increments the stage started counter and marks it as running if not already in that state. * * @param string $stageID One of the STAGE_ constants */ public function startStage($stageID) { if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans return; } $runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false); if ($runningStatus[$stageID]['status'] != self::STATUS_RUNNING_WARNING) { $runningStatus[$stageID]['status'] = self::STATUS_RUNNING; } $runningStatus[$stageID]['started'] += 1; wfConfig::set_ser('scanStageStatuses', $runningStatus, false, wfConfig::DONT_AUTOLOAD); if (wfCentral::isConnected()) { wfCentral::updateScanStatus($runningStatus); } } /** * Increments the stage finished counter and updates the stage status according to whether it's fully finished or encountered a negative status. * * @param string $stageID One of the STAGE_ constants. * @param string $status One of the wfIssues::STATUS_ constants */ public function completeStage($stageID, $status) { if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans return; } $runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false); if ($runningStatus[$stageID]['status'] == self::STATUS_RUNNING && ($status == wfIssues::STATUS_PROBLEM)) { $runningStatus[$stageID]['status'] = self::STATUS_RUNNING_WARNING; } $runningStatus[$stageID]['finished'] += 1; if ($runningStatus[$stageID]['finished'] >= $runningStatus[$stageID]['expected']) { if ($runningStatus[$stageID]['status'] == self::STATUS_RUNNING) { $runningStatus[$stageID]['status'] = self::STATUS_COMPLETE_SUCCESS; } else { $runningStatus[$stageID]['status'] = self::STATUS_COMPLETE_WARNING; } } wfConfig::set_ser('scanStageStatuses', $runningStatus, false, wfConfig::DONT_AUTOLOAD); if (wfCentral::isConnected()) { wfCentral::updateScanStatus($runningStatus); } } /** * Returns the selected type of the scan. * * @return string */ public function scanType() { switch ($this->_scanType) { case self::SCAN_TYPE_QUICK://SCAN_TYPE_QUICK is not user-selectable case self::SCAN_TYPE_LIMITED: case self::SCAN_TYPE_STANDARD: case self::SCAN_TYPE_HIGH_SENSITIVITY: case self::SCAN_TYPE_CUSTOM: return $this->_scanType; } return self::SCAN_TYPE_STANDARD; } /** * Returns a normalized percentage (i.e., in the range [0, 1]) to the corresponding display percentage * based on license type. * * @param float $percentage * @return float */ protected function _normalizedPercentageToDisplay($percentage) { if ($this->isPremiumScan()) { return round($percentage, 2); } return round($percentage * 0.70, 2); } /** * Returns a normalized percentage (i.e., in the range [0, 1]) for the scan type status indicator. * * @return float */ public function scanTypeStatus() { $isFree = !wfConfig::get('isPaid'); $weights = self::_scanOptionWeights(); $options = $this->scanOptions(); $score = 0.0; $premiumOptions = self::_premiumScanOptions(); foreach ($options as $key => $value) { if ($isFree && array_search($key, $premiumOptions) !== false) { continue; } if ($value) { $score += $weights[$key]; } } return $this->_normalizedPercentageToDisplay($score); } public function scanTypeStatusList() { $isFree = !wfConfig::get('isPaid'); $weights = self::_scanOptionWeights(); $options = $this->scanOptions(); $disabledOptionCount = 0; $premiumDisabledOptionCount = 0; $percentage = 0.0; $premiumPercentage = 0.0; $premiumOptions = self::_premiumScanOptions(); $statusList = array(); foreach ($options as $key => $value) { if ($isFree && array_search($key, $premiumOptions) !== false) { $premiumPercentage += $weights[$key]; $premiumDisabledOptionCount++; continue; } if (!$value && $weights[$key] > 0) { $percentage += $weights[$key]; $disabledOptionCount++; } } $remainingPercentage = 1 - $this->scanTypeStatus(); if ($isFree) { $remainingPercentage -= 0.30; $statusList[] = array( 'percentage' => 0.30, 'title' => __('Enable Premium Scan Signatures.', 'wordfence'), ); } if ($premiumPercentage > 0) { $subtraction = min($this->_normalizedPercentageToDisplay($premiumPercentage), $remainingPercentage); $remainingPercentage -= $subtraction; $statusList[] = array( 'percentage' => $subtraction, 'title' => __('Enable Premium Reputation Checks.', 'wordfence'), ); } if ($percentage > 0) { $subtraction = min($this->_normalizedPercentageToDisplay($percentage), $remainingPercentage); $statusList[] = array( 'percentage' => $subtraction, 'title' => sprintf(_nx('Enable %d scan option.', 'Enable %d scan options.', $disabledOptionCount,'wordfence'), number_format_i18n($disabledOptionCount)), ); } return $statusList; } /** * Returns the malware signature feed that is in use. * * @return string */ public function signatureMode() { if ($this->isPremiumScan()) { return self::SIGNATURE_MODE_PREMIUM; } return self::SIGNATURE_MODE_COMMUNITY; } /** * Returns a normalized percentage (i.e., in the range [0, 1]) for the reputation status indicator. * * @return float */ public function reputationStatus() { $score = 0.0; if ($this->isPremiumScan()) { $options = $this->scanOptions(); if ($options['spamvertizeCheck']) { $score += 0.333; } if ($options['checkSpamIP']) { $score += 0.333; } if ($options['scansEnabled_checkGSB']) { $score += 0.333; } } return round($score, 2); } /** * @return array */ public function reputationStatusList() { $statusList = array(); $options = $this->scanOptions(); $reputationChecks = array( 'spamvertizeCheck' => __('Enable scan option to check if this website is being "Spamvertised".', 'wordfence'), 'checkSpamIP' => __('Enable scan option to check if your website IP is generating spam.', 'wordfence'), 'scansEnabled_checkGSB' => __('Enable scan option to check if your website is on a domain blocklist.', 'wordfence'), ); foreach ($reputationChecks as $option => $optionLabel) { if (!$this->isPremiumScan() || !$options[$option]) { $statusList[] = array( 'percentage' => round(1 / count($reputationChecks), 2), 'title' => $optionLabel, ); } } return $statusList; } /** * Returns the options for the configured scan type. * * @return array */ public function scanOptions() { switch ($this->scanType()) { case self::SCAN_TYPE_QUICK: return self::quickScanTypeOptions(); case self::SCAN_TYPE_LIMITED: return self::limitedScanTypeOptions(); case self::SCAN_TYPE_STANDARD: return self::standardScanTypeOptions(); case self::SCAN_TYPE_HIGH_SENSITIVITY: return self::highSensitivityScanTypeOptions(); case self::SCAN_TYPE_CUSTOM: return self::customScanTypeOptions(); } } /** * Returns the array of jobs for the scan type. * * @return array */ public function jobs() { $options = $this->scanOptions(); $preferredOrder = array( 'checkSpamvertized' => array('spamvertizeCheck'), 'checkSpamIP' => array('checkSpamIP'), 'checkGSB' => array('scansEnabled_checkGSB'), 'checkHowGetIPs' => array('scansEnabled_checkHowGetIPs'), 'diskSpace' => array('scansEnabled_diskSpace'), 'wafStatus' => array('scansEnabled_wafStatus'), 'geoipSupport' => array('scansEnabled_geoipSupport'), 'checkSkippedFiles' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick 'knownFiles' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick, options are scansEnabled_core, scansEnabled_themes, scansEnabled_plugins, scansEnabled_coreUnknown, scansEnabled_malware 'checkReadableConfig' => array('scansEnabled_checkReadableConfig'), 'fileContents' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick, options are scansEnabled_fileContents and scansEnabled_fileContentsGSB 'suspectedFiles' => array('scansEnabled_suspectedFiles'), 'posts' => array('scansEnabled_posts'), 'comments' => array('scansEnabled_comments'), 'passwds' => array('scansEnabled_passwds'), 'oldVersions' => array('scansEnabled_oldVersions'), 'suspiciousAdminUsers' => array('scansEnabled_suspiciousAdminUsers'), 'suspiciousOptions' => array('scansEnabled_suspiciousOptions'), ); $jobs = array(); foreach ($preferredOrder as $job => $enabler) { if ($enabler === true) { $jobs[] = $job; } else if (is_array($enabler)) { foreach ($enabler as $o) { if ($options[$o]) { $jobs[] = $job; break; } } } } return $jobs; } /** * Returns whether or not the scanner should use its low resource mode. * * @return bool */ public function useLowResourceScanning() { $options = $this->scanOptions(); return $options['lowResourceScansEnabled']; } /** * Returns the array of user-defined malware signatures for use by the scanner. * * @return array */ public function userScanSignatures() { $options = $this->scanOptions(); $value = $options['scan_include_extra']; $signatures = array(); if (!empty($value)) { $regexs = explode("\n", $value); $id = 1000001; foreach ($regexs as $r) { $r = rtrim($r, "\r"); if (preg_match('/' . $r . '/i', "") !== false) { $signatures[] = array($id++, time(), $r, __('User defined scan pattern', 'wordfence')); } } } return $signatures; } /** * Returns whether or not the scanner should check files outside of the WordPress installation. * * @return bool */ public function scanOutsideWordPress() { $options = $this->scanOptions(); return $options['other_scanOutside']; } /** * Returns the cleaned up array of user-excluded scan paths and patterns. * * @return array */ public function userExclusions() { $options = $this->scanOptions(); $value = $options['scan_exclude']; return explode("\n", wfUtils::cleanupOneEntryPerLine($value)); } /** * Fetches the scan summary items into the internal cache. */ private function _fetchSummaryItems() { if ($this->_summary !== false) { return; } $this->_summary = wfConfig::get_ser('wf_summaryItems', array()); } /** * Writes the scan summary cache to permanent storage. */ private function _saveSummaryItems() { if ($this->_summary !== false && $this->_dirty) { $this->_summary['lastUpdate'] = time(); wfConfig::set_ser('wf_summaryItems', $this->_summary); } $this->_dirty = false; } /** * Saves the scan summary cache if it has been more than two seconds since the last update. * * @return bool Whether or not it saved. */ private function _maybeSaveSummaryItems() { if ($this->_summary !== false && $this->_summary['lastUpdate'] < (time() - 2)) { $this->_saveSummaryItems(); return true; } return false; } /** * Populates the scan summary with the default counters. */ public function resetSummaryItems() { global $wpdb; $this->_summary = array(); $this->_summary[self::SUMMARY_SCANNED_POSTS] = 0; $this->_summary[self::SUMMARY_SCANNED_COMMENTS] = 0; $this->_summary[self::SUMMARY_SCANNED_FILES] = 0; $this->_summary[self::SUMMARY_SCANNED_PLUGINS] = 0; $this->_summary[self::SUMMARY_SCANNED_THEMES] = 0; $this->_summary[self::SUMMARY_SCANNED_USERS] = 0; $this->_summary[self::SUMMARY_SCANNED_URLS] = 0; $this->_dirty = true; $this->_saveSummaryItems(); } /** * Forces a save of the scan summary cache. */ public function flushSummaryItems() { $this->_saveSummaryItems(); } /** * Returns the corresponding summary value for $key or $default if not found. * * @param $key * @param mixed $default The value returned if there is no value for $key. * @return mixed */ public function getSummaryItem($key, $default = false) { $this->_fetchSummaryItems(); if (isset($this->_summary[$key])) { return $this->_summary[$key]; } return $default; } /** * Sets the summary item $key as $value. * * @param $key * @param $value */ public function setSummaryItem($key, $value) { $this->_fetchSummaryItems(); $this->_summary[$key] = $value; $this->_dirty = true; if (!$this->_maybeSaveSummaryItems() && !$this->_destructRegistered) { register_shutdown_function(array($this, 'flushSummaryItems')); $this->_destructRegistered = true; } } /** * Atomically increments the summary item under $key by $value. * * @param $key * @param int $value */ public function incrementSummaryItem($key, $value = 1) { if ($value == 0) { return; } $this->_fetchSummaryItems(); if (isset($this->_summary[$key])) { $this->_summary[$key] += $value; $this->_dirty = true; if (!$this->_maybeSaveSummaryItems() && !$this->_destructRegistered) { register_shutdown_function(array($this, 'flushSummaryItems')); $this->_destructRegistered = true; } } } /** * Schedules a single scan for the given time. If $originalTime is provided, it will be associated with the cron. * * @param $futureTime * @param bool|int $originalTime */ public function scheduleSingleScan($futureTime, $originalTime = false) { if (is_main_site()) { // Removed ability to activate on network site in v5.3.12 if ($originalTime === false) { $originalTime = $futureTime; } wp_schedule_single_event($futureTime, 'wordfence_start_scheduled_scan', array((int) $originalTime)); //Saving our own copy of the schedule because the wp-cron functions all require the args list to act $allScansScheduled = wfConfig::get_ser('allScansScheduled', array()); $allScansScheduled[] = array('timestamp' => $futureTime, 'args' => array((int) $originalTime)); wfConfig::set_ser('allScansScheduled', $allScansScheduled); } } /** * Clears all scheduled scan cron jobs and re-creates them. */ public function scheduleScans() { $this->unscheduleAllScans(); if (!$this->isEnabled()) { return; } if ($this->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL) { //Generate a two-week schedule $manualType = $this->manualSchedulingType(); $preferredHour = $this->manualSchedulingStartHour(); switch ($manualType) { case self::MANUAL_SCHEDULING_ONCE_DAILY: $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { $day[$preferredHour] = 1; } break; case self::MANUAL_SCHEDULING_TWICE_DAILY: $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { $day[$preferredHour] = 1; $day[($preferredHour + 12) % 24] = 1; } break; case self::MANUAL_SCHEDULING_EVERY_OTHER_DAY: $baseDay = floor(time() / 86400); $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { if (($baseDay + $dayNumber) % 2) { $day[$preferredHour] = 1; } } break; case self::MANUAL_SCHEDULING_WEEKDAYS: $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { if ($dayNumber > 0 && $dayNumber < 6) { $day[$preferredHour] = 1; } } break; case self::MANUAL_SCHEDULING_WEEKENDS: $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { if ($dayNumber == 0 || $dayNumber == 6) { $day[$preferredHour] = 1; } } break; case self::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS: $schedule = array_fill(0, 14, array_fill(0, 24, 0)); foreach ($schedule as $dayNumber => &$day) { if ($dayNumber == 0 || $dayNumber == 6 || ($dayNumber % 2)) { $day[$preferredHour] = 1; } } break; case self::MANUAL_SCHEDULING_CUSTOM: $oneWeekSchedule = $this->customSchedule(); $schedule = array(); foreach ($oneWeekSchedule as $day) { $schedule[] = $day; } foreach ($oneWeekSchedule as $day) { $schedule[] = $day; } break; } $now = time(); $tzOffset = wfUtils::formatLocalTime('Z', $now); //Apply the time zone shift so the start times align to the server's time zone $shiftedSchedule = array_fill(0, 14, array()); foreach ($schedule as $dayNumber => $day) { foreach ($day as $hourNumber => $enabled) { if ($enabled) { $effectiveHour = round(($hourNumber * 3600 - $tzOffset) / 3600, 2); //round() rather than floor() to account for fractional time zones $wrappedHour = ($effectiveHour + 24) % 24; if ($effectiveHour < 0) { if ($dayNumber > 0) { $shiftedSchedule[$dayNumber - 1][$wrappedHour] = 1; } } else if ($effectiveHour > 23) { if ($dayNumber < count($schedule) - 1) { $shiftedSchedule[$dayNumber + 1][$wrappedHour] = 1; } } else { $shiftedSchedule[$dayNumber][$effectiveHour] = 1; } } } } $schedule = $shiftedSchedule; //Trim out all but an 8-day period $currentDayOfWeekUTC = date('w', $now); $currentHourUTC = date('G', $now); $periodStart = floor($now / 86400) * 86400 - $currentDayOfWeekUTC * 86400; $schedule = array_slice($schedule, $currentDayOfWeekUTC, null, true); $schedule = array_slice($schedule, 0, 8, true); //Schedule them foreach ($schedule as $dayNumber => $day) { foreach ($day as $hourNumber => $enabled) { if ($enabled) { if ($dayNumber == $currentDayOfWeekUTC && $currentHourUTC > $hourNumber) { //It's today and we've already passed its hour, skip it continue; } else if ($dayNumber > 6 && ($dayNumber % 7) == $currentDayOfWeekUTC && $currentHourUTC <= $hourNumber) { //It's one week from today but beyond the current hour, skip it this cycle continue; } $scanTime = $periodStart + $dayNumber * 86400 + $hourNumber * 3600 + wfWAFUtils::random_int(0, 3600); wordfence::status(4, 'info', sprintf( /* translators: 1. Day of week. 2. Hour of day. 3. Localized date. */ __("Scheduled time for day %s hour %s is: %s", 'wordfence'), $dayNumber, $hourNumber, wfUtils::formatLocalTime('l jS \of F Y h:i:s A P', $scanTime) )); $this->scheduleSingleScan($scanTime); } } } } else { $noc1ScanSchedule = wfConfig::get_ser('noc1ScanSchedule', array()); foreach ($noc1ScanSchedule as $timestamp) { $timestamp = wfUtils::denormalizedTime($timestamp); if ($timestamp > time()) { $this->scheduleSingleScan($timestamp); } } } } public function unscheduleAllScans() { $allScansScheduled = wfConfig::get_ser('allScansScheduled', array()); foreach ($allScansScheduled as $entry) { wp_unschedule_event($entry['timestamp'], 'wordfence_start_scheduled_scan', $entry['args']); } wp_clear_scheduled_hook('wordfence_start_scheduled_scan'); wfConfig::set_ser('allScansScheduled', array()); } public function lastScanTime() { return wfConfig::get('scanTime'); } public function recordLastScanTime() { wfConfig::set('scanTime', microtime(true)); } }models/.htaccess000064400000000542152331132450007625 0ustar00 RewriteEngine On RewriteCond %{REQUEST_URI} \.php$ RewriteRule .* - [F,L,NC] Require all denied Order deny,allow Deny from all models/common/wfGeoIP2.php000064400000005126152331132450011415 0ustar00_reader = $reader; return; } try { if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb')) { $this->_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb'); return; } } catch (Exception $e) { //Fall through to bundled copy } $this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway } /** * Returns the database version in use. This is the timestamp of when it was packaged. * * @return null|int */ public function version() { try { return $this->_reader->metadata()->buildEpoch; } catch (Exception $e) { //Fall through } return null; } /** * Returns the country code for the IP if known. * * @param string $ip * @return null|string */ public function countryCode($ip) { try { $record = $this->_reader->country($ip); return $record->country->isoCode; } catch (Exception $e) { //Fall through } return null; } } models/common/wfTab.php000064400000001515152331132450011074 0ustar00_id = $id; $this->_a = $a; $this->_tabTitle = $tabTitle; $this->_pageTitle = $pageTitle; $this->_active = $active; } public function __get($name) { switch ($name) { case 'id': return $this->_id; case 'a': return $this->_a; case 'tabTitle': return $this->_tabTitle; case 'pageTitle': return $this->_pageTitle; case 'active': return $this->_active; } throw new OutOfBoundsException('Invalid key: ' . $name); } }js/wfglobal.1616621048.js000064400000073543152331132450010407 0ustar00(function($) { var __, sprintf; if (!window['wordfenceExt']) { window['wordfenceExt'] = { nonce: false, loadingCount: 0, isSmallScreen: false, init: function(){ this.nonce = WordfenceAdminVars.firstNonce; this.isSmallScreen = window.matchMedia("only screen and (max-width: 500px)").matches; }, showLoading: function(){ this.loadingCount++; if (this.loadingCount == 1) { jQuery('
' + __('Wordfence is working...') + '
').appendTo('body'); } }, removeLoading: function(){ this.loadingCount--; if(this.loadingCount == 0){ jQuery('#wordfenceWorking').remove(); } }, autoUpdateChoice: function(choice){ this.ajax('wordfence_autoUpdateChoice', { choice: choice }, function(res){ jQuery('#wordfenceAutoUpdateChoice').fadeOut(); }, function(){ jQuery('#wordfenceAutoUpdateChoice').fadeOut(); } ); }, misconfiguredHowGetIPsChoice : function(choice) { this.ajax('wordfence_misconfiguredHowGetIPsChoice', { choice: choice }, function(res){ jQuery('#wordfenceMisconfiguredHowGetIPsNotice').fadeOut(); }, function(){ jQuery('#wordfenceMisconfiguredHowGetIPsNotice').fadeOut(); } ); }, switchLiveTrafficSecurityOnlyChoice: function(choice) { this.ajax('wordfence_switchLiveTrafficSecurityOnlyChoice', { choice: choice }, function(res){ jQuery('#switchLiveTrafficSecurityOnlyChoice').fadeOut(); }, function(){ jQuery('#switchLiveTrafficSecurityOnlyChoice').fadeOut(); } ); }, dismissAdminNotice: function(nid) { this.ajax('wordfence_dismissAdminNotice', { id: nid }, function(res){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); }, function(){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); } ); }, setOption: function(key, value, successCallback) { var changes = {}; changes[key] = value; this.ajax('wordfence_saveOptions', {changes: JSON.stringify(changes)}, function(res) { if (res.success) { typeof successCallback == 'function' && successCallback(res); } }); }, ajax: function(action, data, cb, cbErr, noLoading){ if(typeof(data) == 'string'){ if(data.length > 0){ data += '&'; } data += 'action=' + action + '&nonce=' + this.nonce; } else if(typeof(data) == 'object'){ data['action'] = action; data['nonce'] = this.nonce; } if(! cbErr){ cbErr = function(){}; } var self = this; if(! noLoading){ this.showLoading(); } jQuery.ajax({ type: 'POST', url: WordfenceAdminVars.ajaxURL, dataType: "json", data: data, success: function(json){ if(! noLoading){ self.removeLoading(); } if(json && json.nonce){ self.nonce = json.nonce; } cb(json); }, error: function(){ if(! noLoading){ self.removeLoading(); } cbErr(); } }); }, hashSHA256: function(s) { return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(s)) }, isEmailBlacklisted: function(email) { var hash = this.hashSHA256(email); for (var i = 0; i < WordfenceAdminVars.alertEmailBlacklist.length; i++) { if (hash === WordfenceAdminVars.alertEmailBlacklist[i]) { return true; } } return false; }, parseEmails: function(raw) { var emails = []; if (typeof raw !== 'string') { return emails; } var rawEmails = raw.replace(/\s/g, '').split(','); for (var i = 0; i < rawEmails.length; i++) { var e = rawEmails[i].toLowerCase(); //From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address if (/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(rawEmails[i]) && !this.isEmailBlacklisted(e)) { emails.push(e); } } return emails; }, onboardingProcessEmails: function(emails, subscribe, touppAgreed) { var subscribe = !!subscribe; wordfenceExt.setOption('alertEmails', emails.join(', ')); if (touppAgreed) { this.ajax('wordfence_recordTOUPP', {}, function(res) { //Do nothing }); } if (subscribe) { this.ajax('wordfence_mailingSignup', {emails: JSON.stringify(emails)}, function(res) { //Do nothing }); } }, onboardingInstallLicense: function(license, successCallback, errorCallback) { this.ajax('wordfence_installLicense', {license: license}, function(res) { if (res.success) { typeof successCallback == 'function' && successCallback(res); } else if (res.error) { typeof errorCallback == 'function' && errorCallback(res); } }); } }; } __ = window.wfi18n.__; sprintf = window.wfi18n.sprintf; $(function() { wordfenceExt.init(); }); })(jQuery); //Stanford Javascript Crypto Library: https://bitwiseshiftleft.github.io/sjcl/ "use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(f){this.toString=function(){return"CORRUPT: "+this.message};this.message=f},invalid:function(f){this.toString=function(){return"INVALID: "+this.message};this.message=f},bug:function(f){this.toString=function(){return"BUG: "+this.message};this.message=f},notReady:function(f){this.toString=function(){return"NOT READY: "+this.message};this.message=f}}}; (function(f){f.cipher.aes=function(a){this.s[0][0][0]||this.T();var b,c,d,e,g=this.s[0][4],h=this.s[1];b=a.length;var k=1;if(4!==b&&6!==b&&8!==b)throw new f.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=g[c>>>24]<<24^g[c>>16&255]<<16^g[c>>8&255]<<8^g[c&255],0===a%b&&(c=c<<8^c>>>24^k<<24,k=k<<1^283*(k>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:h[0][g[c>>>24]]^h[1][g[c>>16&255]]^h[2][g[c>>8& 255]]^h[3][g[c&255]]};f.cipher.aes.prototype={encrypt:function(a){return this.$(a,0)},decrypt:function(a){return this.$(a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],T:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,h,k=[],l=[],m,n,p,q;for(e=0;0x100>e;e++)l[(k[e]=e<<1^283*(e>>7))^e]=e;for(f=h=0;!c[f];f^=m||1,h=l[h]||1)for(p=h^h<<1^h<<2^h<<3^h<<4,p=p>>8^p&255^99,c[f]=p,d[p]=f,n=k[e=k[m=k[f]]],q=0x1010101*n^0x10001*e^0x101*m^0x1010100*f,n=0x101*k[p]^0x1010100*p,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][p]= q=q<<24^q>>>8;for(e=0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)},$:function(a,b){if(4!==a.length)throw new f.exception.invalid("invalid aes block size");var c=this.b[b],d=a[0]^c[0],e=a[b?3:1]^c[1],g=a[2]^c[2],h=a[b?1:3]^c[3],k,l,m,n=c.length/4-2,p,q=4,t=[0,0,0,0];k=this.s[b];var r=k[0],u=k[1],v=k[2],w=k[3],x=k[4];for(p=0;p>>24]^u[e>>16&255]^v[g>>8&255]^w[h&255]^c[q],l=r[e>>>24]^u[g>>16&255]^v[h>>8&255]^w[d&255]^c[q+1],m=r[g>>>24]^u[h>>16&255]^v[d>>8&255]^w[e&255]^c[q+2],h=r[h>>>24]^ u[d>>16&255]^v[e>>8&255]^w[g&255]^c[q+3],q+=4,d=k,e=l,g=m;for(p=0;4>p;p++)t[b?3&-p:p]=x[d>>>24]<<24^x[e>>16&255]<<16^x[g>>8&255]<<8^x[h&255]^c[q++],k=d,d=e,e=g,g=h,h=k;return t}};f.bitArray={bitSlice:function(a,b,c){a=f.bitArray.ga(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:f.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)|| 32},equal:function(a,b){if(f.bitArray.bitLength(a)!==f.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=f.bitArray.getPartial(e);d.push(f.bitArray.partial(b+a&31,32>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};f.codec.utf8String={fromBits:function(a){var b="",c=f.bitArray.bitLength(a),d,e;for(d=0;d>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c>>h)>>>e),hn){if(!b)try{return f.codec.base32hex.toBits(a)}catch(q){}throw new f.exception.invalid("this isn't "+ p+"!");}k>e?(k-=e,g.push(m^n>>>k),m=n<>>e)>>>26), 6>e?(h=a[c]<<6-e,e+=26,c++):(h<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,g=f.codec.base64.D,h=0,k;b&&(g=g.substr(0,62)+"-_");for(d=0;dk)throw new f.exception.invalid("this isn't base64!");26>>e),h=k<<32-e):(e+=6,h^=k<<32-e)}e&56&&c.push(f.bitArray.partial(e&56,h,1));return c}};f.codec.base64url={fromBits:function(a){return f.codec.base64.fromBits(a,1,1)},toBits:function(a){return f.codec.base64.toBits(a, 1)}};f.hash.sha256=function(a){this.b[0]||this.T();a?(this.H=a.H.slice(0),this.C=a.C.slice(0),this.l=a.l):this.reset()};f.hash.sha256.hash=function(a){return(new f.hash.sha256).update(a).finalize()};f.hash.sha256.prototype={blockSize:512,reset:function(){this.H=this.ea.slice(0);this.C=[];this.l=0;return this},update:function(a){"string"===typeof a&&(a=f.codec.utf8String.toBits(a));var b,c=this.C=f.bitArray.concat(this.C,a);b=this.l;a=this.l=b+f.bitArray.bitLength(a);if(0x1fffffffffffffb;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=!1;break}e&&(8>b&&(this.ea[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}},M:function(a){var b,c,d,e=this.H,f=this.b,h=e[0],k=e[1],l=e[2],m=e[3],n=e[4],p=e[5],q=e[6],t=e[7];for(b=0;64>b;b++)16>b?c=a[b]:(c=a[b+1&15],d=a[b+14&15],c=a[b&15]=(c>>>7^c>>>18^c>>>3^c<<25^c<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+a[b&15]+a[b+9&15]|0),c=c+t+(n>>>6^n>>>11^n>>>25^n<<26^n<<21^n<<7)+(q^n&(p^q))+f[b],t=q,q=p,p=n,n= m+c|0,m=l,l=k,k=h,h=c+(k&l^m&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;e[0]=e[0]+h|0;e[1]=e[1]+k|0;e[2]=e[2]+l|0;e[3]=e[3]+m|0;e[4]=e[4]+n|0;e[5]=e[5]+p|0;e[6]=e[6]+q|0;e[7]=e[7]+t|0}};f.mode.ccm={name:"ccm",I:[],listenProgress:function(a){f.mode.ccm.I.push(a)},unListenProgress:function(a){a=f.mode.ccm.I.indexOf(a);-1l)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(g=2;4>g&&m>>>8*g;g++);g<15-l&&(g=15-l);c=k.clamp(c,8*(15-g));b=f.mode.ccm.Z(a,b,c,d,e,g);h=f.mode.ccm.F(a,h,c,b,e,g);return k.concat(h.data,h.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var g=f.bitArray,h=g.bitLength(c)/8,k=g.bitLength(b),l=g.clamp(b,k-e),m=g.bitSlice(b,k-e),k=(k-e)/8;if(7>h)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&k>>>8*b;b++); b<15-h&&(b=15-h);c=g.clamp(c,8*(15-b));l=f.mode.ccm.F(a,l,c,m,e,b);a=f.mode.ccm.Z(a,l.data,c,d,e,b);if(!g.equal(l.tag,a))throw new f.exception.corrupt("ccm: tag doesn't match");return l.data},ua:function(a,b,c,d,e,g){var h=[],k=f.bitArray,l=k.i;d=[k.partial(8,(b.length?64:0)|d-2<<2|g-1)];d=k.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=k.bitLength(b)/8,65279>=c?h=[k.partial(16,c)]:0xffffffff>=c&&(h=k.concat([k.partial(16,65534)],[c])),h=k.concat(h,b),b=0;be||16n&&(f.mode.ccm.ma(h/l),n+=p),c[3]++,e=a.encrypt(c),b[h]^=e[0],b[h+1]^=e[1],b[h+2]^=e[2],b[h+3]^=e[3];return{tag:d,data:k.clamp(b,m)}}};f.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,g){if(128!==f.bitArray.bitLength(c))throw new f.exception.invalid("ocb iv must be 128 bits");var h,k=f.mode.ocb2.W,l=f.bitArray,m=l.i,n=[0,0,0,0];c=k(a.encrypt(c));var p, q=[];d=d||[];e=e||64;for(h=0;h+4e.bitLength(c)&&(k=g(k,d(k)),c=e.concat(c,[-2147483648,0,0,0]));h=g(h,c);return a.encrypt(g(d(g(k,d(k))),h))},W:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};f.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var g=b.slice(0);b=f.bitArray;d=d||[];a=f.mode.gcm.F(!0,a,g,d,c,e|| 128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var g=b.slice(0),h=f.bitArray,k=h.bitLength(g);e=e||128;d=d||[];e<=k?(b=h.bitSlice(g,k-e),g=h.bitSlice(g,0,k-e)):(b=g,g=[]);a=f.mode.gcm.F(!1,a,g,d,c,e);if(!h.equal(a.tag,b))throw new f.exception.corrupt("gcm: tag doesn't match");return a.data},ra:function(a,b){var c,d,e,g,h,k=f.bitArray.i;e=[0,0,0,0];g=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=k(e,g));h=0!==(g[3]&1);for(d=3;0>>1|(g[d- 1]&1)<<31;g[0]>>>=1;h&&(g[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;de&&(a=b.hash(a));for(d=0;dd||0>c)throw new f.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=f.codec.utf8String.toBits(a));"string"===typeof b&&(b=f.codec.utf8String.toBits(b));e=e||f.misc.hmac;a=new e(a);var g,h,k,l,m=[],n=f.bitArray;for(l=1;32*m.length<(d||1);l++){e=g=a.encrypt(n.concat(b, [l]));for(h=1;h>>1;this.c[h].update([d,this.R++,2,b,g,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[h].update([d,this.R++,3,b,g,a.length]);this.c[h].update(a);break;default:l=1}if(l)throw new f.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[h]+=b;this.f+=b;k===this.u&&(this.isReady()!==this.u&&this.aa("seeded",Math.max(this.o,this.f)),this.aa("progress",this.getProgress()))}, isReady:function(a){a=this.X[void 0!==a?a:this.P];return this.o&&this.o>=a?this.m[0]>this.ia&&(new Date).valueOf()>this.fa?this.L|this.K:this.K:this.f>=a?this.L|this.u:this.u},getProgress:function(a){a=this.X[a?a:this.P];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.G){this.a={loadTimeCollector:this.B(this.ta),mouseCollector:this.B(this.va),keyboardCollector:this.B(this.sa),accelerometerCollector:this.B(this.la),touchCollector:this.B(this.za)};if(window.addEventListener)window.addEventListener("load", this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new f.exception.bug("can't attach event"); this.G=!0}},stopCollectors:function(){this.G&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove", this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.G=!1)},addEventListener:function(a,b){this.N[a][this.na++]=b},removeEventListener:function(a,b){var c,d,e=this.N[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;ca&&(this.h[a]=this.h[a]+1|0,!this.h[a]);a++);return this.O.encrypt(this.h)},ba:function(){this.b=this.S().concat(this.S()); this.O=new f.cipher.aes(this.b)},xa:function(a){this.b=f.hash.sha256.hash(this.b.concat(a));this.O=new f.cipher.aes(this.b);for(a=0;4>a&&(this.h[a]=this.h[a]+1|0,!this.h[a]);a++);},ya:function(a){var b=[],c=0,d;this.fa=b[0]=(new Date).valueOf()+this.ka;for(d=0;16>d;d++)b.push(0x100000000*Math.random()|0);for(d=0;d=1<this.o&& (this.o=c);this.U++;this.xa(b)},sa:function(){this.w(1)},va:function(a){var b,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");this.w(0)},za:function(a){a=a.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,"touch");this.w(0)},ta:function(){this.w(2)},w:function(a){"undefined"!==typeof window&&window.performance&&"function"===typeof window.performance.now?this.addEntropy(window.performance.now(), a,"loadtime"):this.addEntropy((new Date).valueOf(),a,"loadtime")},la:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;"number"===typeof b&&this.addEntropy(b,1,"accelerometer")}a&&this.addEntropy(a,2,"accelerometer");this.w(0)},aa:function(a,b){var c,d=f.random.N[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c=g.iter||64!==g.ts&&96!==g.ts&&128!==g.ts||128!==g.ks&&192!==g.ks&&0x100!==g.ks||2>g.iv.length||4=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4date)?1:(this=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;} var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);} if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);} if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);} if(x.hour||x.hours){this.addHours(x.hour||x.hours);} if(x.month||x.months){this.addMonths(x.month||x.months);} if(x.year||x.years){this.addYears(x.year||x.years);} if(x.day||x.days){this.addDays(x.day||x.days);} return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(valuemax){throw new RangeError(value+" is not a valid value for "+name+".");} return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;} if(!x.second&&x.second!==0){x.second=-1;} if(!x.minute&&x.minute!==0){x.minute=-1;} if(!x.hour&&x.hour!==0){x.hour=-1;} if(!x.day&&x.day!==0){x.day=-1;} if(!x.month&&x.month!==0){x.month=-1;} if(!x.year&&x.year!==0){x.year=-1;} if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());} if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());} if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());} if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());} if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());} if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());} if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());} if(x.timezone){this.setTimezone(x.timezone);} if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);} return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;} var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}} return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();}; Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;} return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;} if(!last&&q[1].length===0){last=true;} if(!last){var qx=[];for(var j=0;j0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}} if(rx[1].length1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];} if(args){for(var i=0,px=args.shift();i2)?n:(n+(((n+2000)Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");} var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});} return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;} for(var i=0;i 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.wf-dropdown') if (!data) $this.data('bs.wf-dropdown', (data = new WFDropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.wfdropdown $.fn.wfdropdown = Plugin $.fn.wfdropdown.Constructor = WFDropdown // DROPDOWN NO CONFLICT // ==================== $.fn.wfdropdown.noConflict = function () { $.fn.wfdropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.wf-dropdown.data-api', clearMenus) .on('click.bs.wf-dropdown.data-api', '.wf-dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.wf-dropdown.data-api', toggle, WFDropdown.prototype.toggle) .on('keydown.bs.wf-dropdown.data-api', toggle, WFDropdown.prototype.keydown) .on('keydown.bs.wf-dropdown.data-api', '.wf-dropdown-menu', WFDropdown.prototype.keydown) }(jQuery); js/jquery.colorbox.1616621048.js000064400000070765152331132450011762 0ustar00/*! Colorbox 1.6.4 license: MIT http://www.jacklmoore.com/colorbox */ (function ($, document, window) { var // Default settings object. // See http://jacklmoore.com/colorbox for details. defaults = { // data sources html: false, photo: false, iframe: false, inline: false, // behavior and appearance transition: "elastic", speed: 300, fadeOut: 300, width: false, initialWidth: "600", innerWidth: false, maxWidth: false, height: false, initialHeight: "450", innerHeight: false, maxHeight: false, scalePhotos: true, scrolling: true, opacity: 0.9, preloading: true, className: false, overlayClose: true, escKey: true, arrowKey: true, top: false, bottom: false, left: false, right: false, fixed: false, data: undefined, closeButton: true, fastIframe: true, open: false, reposition: true, loop: true, slideshow: false, slideshowAuto: true, slideshowSpeed: 2500, slideshowStart: "start slideshow", slideshowStop: "stop slideshow", photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i, // alternate image paths for high-res displays retinaImage: false, retinaUrl: false, retinaSuffix: '@2x.$1', // internationalization current: "image {current} of {total}", previous: "previous", next: "next", close: "close", xhrError: "This content failed to load.", imgError: "This image failed to load.", // accessbility returnFocus: true, trapFocus: true, // callbacks onOpen: false, onLoad: false, onComplete: false, onCleanup: false, onClosed: false, rel: function() { return this.rel; }, href: function() { // using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container') return $(this).attr('href'); }, title: function() { return this.title; }, createImg: function() { var img = new Image(); var attrs = $(this).data('cbox-img-attrs'); if (typeof attrs === 'object') { $.each(attrs, function(key, val){ img[key] = val; }); } return img; }, createIframe: function() { var iframe = document.createElement('iframe'); var attrs = $(this).data('cbox-iframe-attrs'); if (typeof attrs === 'object') { $.each(attrs, function(key, val){ iframe[key] = val; }); } if ('frameBorder' in iframe) { iframe.frameBorder = 0; } if ('allowTransparency' in iframe) { iframe.allowTransparency = "true"; } iframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching iframe.allowFullscreen = true; return iframe; } }, // Abstracting the HTML and event identifiers for easy rebranding colorbox = 'wfcolorbox', prefix = 'wfcbox', boxElement = prefix + 'Element', // Events event_open = prefix + '_open', event_load = prefix + '_load', event_complete = prefix + '_complete', event_cleanup = prefix + '_cleanup', event_closed = prefix + '_closed', event_purge = prefix + '_purge', // Cached jQuery Object Variables $overlay, $box, $wrap, $content, $topBorder, $leftBorder, $rightBorder, $bottomBorder, $related, $window, $loaded, $loadingBay, $loadingOverlay, $title, $current, $slideshow, $next, $prev, $close, $groupControls, $events = $(''), // $({}) would be preferred, but there is an issue with jQuery 1.4.2 // Variables for cached values or use across multiple functions settings, interfaceHeight, interfaceWidth, loadedHeight, loadedWidth, index, photo, open, active, closing, loadingTimer, publicMethod, div = "div", requests = 0, previousCSS = {}, init; // **************** // HELPER FUNCTIONS // **************** // Convenience function for creating new jQuery objects function $tag(tag, id, css) { var element = document.createElement(tag); if (id) { element.id = prefix + id; } if (css) { element.style.cssText = css; } return $(element); } // Get the window height using innerHeight when available to avoid an issue with iOS // http://bugs.jquery.com/ticket/6724 function winheight() { return window.innerHeight ? window.innerHeight : $(window).height(); } function Settings(element, options) { if (options !== Object(options)) { options = {}; } this.cache = {}; this.el = element; this.value = function(key) { var dataAttr; if (this.cache[key] === undefined) { dataAttr = $(this.el).attr('data-cbox-'+key); if (dataAttr !== undefined) { this.cache[key] = dataAttr; } else if (options[key] !== undefined) { this.cache[key] = options[key]; } else if (defaults[key] !== undefined) { this.cache[key] = defaults[key]; } } return this.cache[key]; }; this.get = function(key) { var value = this.value(key); return $.isFunction(value) ? value.call(this.el, this) : value; }; } // Determine the next and previous members in a group. function getIndex(increment) { var max = $related.length, newIndex = (index + increment) % max; return (newIndex < 0) ? max + newIndex : newIndex; } // Convert '%' and 'px' values to integers function setSize(size, dimension) { return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10)); } // Checks an href to see if it is a photo. // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex. function isImage(settings, url) { return settings.get('photo') || settings.get('photoRegex').test(url); } function retinaUrl(settings, url) { return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url; } function trapFocus(e) { if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) { e.stopPropagation(); $box.focus(); } } function setClass(str) { if (setClass.str !== str) { $box.add($overlay).removeClass(setClass.str).addClass(str); setClass.str = str; } } function getRelated(rel) { index = 0; if (rel && rel !== false && rel !== 'nofollow') { $related = $('.' + boxElement).filter(function () { var options = $.data(this, colorbox); var settings = new Settings(this, options); return (settings.get('rel') === rel); }); index = $related.index(settings.el); // Check direct calls to Colorbox. if (index === -1) { $related = $related.add(settings.el); index = $related.length - 1; } } else { $related = $(settings.el); } } function trigger(event) { // for external use $(document).trigger(event); // for internal use $events.triggerHandler(event); } var slideshow = (function(){ var active, className = prefix + "Slideshow_", click = "click." + prefix, timeOut; function clear () { clearTimeout(timeOut); } function set() { if (settings.get('loop') || $related[index + 1]) { clear(); timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed')); } } function start() { $slideshow .html(settings.get('slideshowStop')) .unbind(click) .one(click, stop); $events .bind(event_complete, set) .bind(event_load, clear); $box.removeClass(className + "off").addClass(className + "on"); } function stop() { clear(); $events .unbind(event_complete, set) .unbind(event_load, clear); $slideshow .html(settings.get('slideshowStart')) .unbind(click) .one(click, function () { publicMethod.next(); start(); }); $box.removeClass(className + "on").addClass(className + "off"); } function reset() { active = false; $slideshow.hide(); clear(); $events .unbind(event_complete, set) .unbind(event_load, clear); $box.removeClass(className + "off " + className + "on"); } return function(){ if (active) { if (!settings.get('slideshow')) { $events.unbind(event_cleanup, reset); reset(); } } else { if (settings.get('slideshow') && $related[1]) { active = true; $events.one(event_cleanup, reset); if (settings.get('slideshowAuto')) { start(); } else { stop(); } $slideshow.show(); } } }; }()); function launch(element) { var options; if (!closing) { options = $(element).data(colorbox); settings = new Settings(element, options); getRelated(settings.get('rel')); if (!open) { open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys. setClass(settings.get('className')); // Show colorbox so the sizes can be calculated in older versions of jQuery $box.css({visibility:'hidden', display:'block', opacity:''}); $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden'); $content.css({width:'', height:''}).append($loaded); // Cache values needed for size calculations interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height(); interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width(); loadedHeight = $loaded.outerHeight(true); loadedWidth = $loaded.outerWidth(true); // Opens inital empty Colorbox prior to content being loaded. var initialWidth = setSize(settings.get('initialWidth'), 'x'); var initialHeight = setSize(settings.get('initialHeight'), 'y'); var maxWidth = settings.get('maxWidth'); var maxHeight = settings.get('maxHeight'); settings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0); settings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0); $loaded.css({width:'', height:settings.h}); publicMethod.position(); trigger(event_open); settings.get('onOpen'); $groupControls.add($title).hide(); $box.focus(); if (settings.get('trapFocus')) { // Confine focus to the modal // Uses event capturing that is not supported in IE8- if (document.addEventListener) { document.addEventListener('focus', trapFocus, true); $events.one(event_closed, function () { document.removeEventListener('focus', trapFocus, true); }); } } // Return focus on closing if (settings.get('returnFocus')) { $events.one(event_closed, function () { $(settings.el).focus(); }); } } var opacity = parseFloat(settings.get('opacity')); $overlay.css({ opacity: opacity === opacity ? opacity : '', cursor: settings.get('overlayClose') ? 'pointer' : '', visibility: 'visible' }).show(); if (settings.get('closeButton')) { $close.html(settings.get('close')).appendTo($content); } else { $close.appendTo('
'); // replace with .detach() when dropping jQuery < 1.4 } load(); } } // Colorbox's markup needs to be added to the DOM prior to being called // so that the browser will go ahead and load the CSS background images. function appendHTML() { if (!$box) { init = false; $window = $(window); $box = $tag(div).attr({ id: colorbox, 'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS. role: 'dialog', tabindex: '-1' }).hide(); $overlay = $tag(div, "Overlay").hide(); $loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]); $wrap = $tag(div, "Wrapper"); $content = $tag(div, "Content").append( $title = $tag(div, "Title"), $current = $tag(div, "Current"), $prev = $('

views/waf/option-rate-limit.php000064400000010033152331132450012540 0ustar00 , 'label' => ), ...) * @var string $rateValue The current value of $rateOptionName. * @var int $lowValue The value below which the false positive warning should begin showing * @var string $actionOptionName The option name for the rate portion. * @var array $actionOptions An array of the possible values for $actionOptionName. The array is of the format array(array('value' => , 'label' => ), ...) * @var string $actionValue The current value of $actionOptionName. * @var string $title The title shown for the option. * @var string $helpLink If defined, the link to the corresponding external help page. * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users. */ $rateID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $rateOptionName); $actionID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $actionOptionName); ?> views/waf/waf-modal-wrapper.php000064400000003336152331132450012520 0ustar00
views/waf/waf-uninstall-success.php000064400000002262152331132450013422 0ustar00

views/blocking/country-block-map.php000064400001276560152331132450013570 0ustar00 views/blocking/country-modal.php000064400000005463152331132450013006 0ustar00 views/blocking/option-bypass-cookie.php000064400000004377152331132450014272 0ustar00 views/blocking/blocking-create.php000064400000060720152331132450013237 0ustar00
  • Block Type', 'wordfence'), array('span'=>array('class'=>array()))); ?>
render(); ?>views/blocking/options-group-advanced-country.php000064400000010365152331132450016277 0ustar00
  • 'cbl_action', 'selectOptions' => array( array('value' => 'block', 'label' => 'Show the standard Wordfence blocked message'), array('value' => 'redir', 'label' => 'Redirect to the URL below'), ), 'selectValue' => wfConfig::get('cbl_action'), 'title' => __('What to do when we block someone', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_WHAT_TO_DO), ))->render(); ?>
  • 'cbl_redirURL', 'textValue' => wfConfig::get('cbl_redirURL'), 'title' => __('URL to redirect blocked users to', 'wordfence'), 'placeholder' => __('Enter a full URL (e.g., http://example.com/blocked/)', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_REDIRECT), ))->render(); ?>
  • 'cbl_loggedInBlocked', 'enabledValue' => 1, 'disabledValue' => 0, 'value' => wfConfig::get('cbl_loggedInBlocked') ? 1 : 0, 'title' => __('Block countries even if they are logged in', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_BLOCK_LOGGED_IN), ))->render(); ?>
  • render(); ?>
  • render(); ?>
  • render(); ?>
views/blocking/blocking-status.php000064400000003053152331132450013313 0ustar00
  • 'blocking-all-options', 'img' => 'options.svg', 'title' => __('Blocking Options', 'wordfence'), 'subtitle' => __('Manage global blocking options.', 'wordfence'), 'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=blocking_options'), ))->render(); ?>
  •   

views/blocking/block-list.php000064400000054757152331132450012266 0ustar00

for %s', 'wordfence'), preg_replace('/^https?:\/\//i', '', wfUtils::wpSiteURL())), array('span'=>array('class'=>array()))); ?>

  • Wordfence Automatic Blocks', 'wordfence'), array('span'=>array('class'=>array()))); ?>
views/blocking/option-bypass-redirect.php000064400000005352152331132450014614 0ustar00
views/options/option-toggled.php000064400000005704152331132450013045 0ustar00
    • ' . esc_html__('Premium Feature', 'wordfence') . ''; } ?>'; } ?>
views/options/block-controls.php000064400000011702152331132450013040 0ustar00 views/options/option-select.php000064400000004575152331132450012704 0ustar00 , 'label' => ), ...) * @var string $selectValue The current value of $selectOptionName. * @var string $title The title shown for the option. * @var string $helpLink If defined, the link to the corresponding external help page. * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users. */ $id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName); ?> views/options/option-toggled-select.php000064400000007122152331132450014316 0ustar00 , 'label' => ), ...) * @var string $selectValue The current value of $selectOptionName. * @var string $title The title shown for the option. * @var string $helpLink If defined, the link to the corresponding external help page. * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users. */ $toggleID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $toggleOptionName); $selectID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName); ?> views/options/block-all-options-controls.php000064400000015343152331132450015304 0ustar00 views/options/option-switch.php000064400000005560152331132450012721 0ustar00 , 'label' =>