Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
$_F=__FILE__;$_X='P0NoP0lISThBKjhycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy..
Decoded Output download
?><?php
/*
=====================================================
DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
https://dle-news.ru/
-----------------------------------------------------
Copyright (c) 2004-2023 SoftNews Media Group
=====================================================
This code is protected by copyright
=====================================================
File: social.php
-----------------------------------------------------
Use: Authorization through social networks
=====================================================
*/
if( !defined('DATALIFEENGINE') ) {
header( "HTTP/1.1 403 Forbidden" );
header ( 'Location: ../../' );
die( "Hacking attempt!" );
}
if( $_SESSION['referrer'] ) {
$root_href = $_SESSION['referrer'];
} else {
$root_href = str_replace("index.php","",$_SERVER['PHP_SELF']);
}
$root_href = str_replace("&","&", $root_href );
@header("Content-type: text/html; charset=".$config['charset']);
if (strpos($config['http_home_url'], "//") === 0) $config['http_home_url'] = "https:".$config['http_home_url'];
elseif (strpos($config['http_home_url'], "/") === 0) $config['http_home_url'] = "https://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
$popup = <<<HTML
<!DOCTYPE html>
<html>
<head>
<title>{$config['home_title']}</title>
<meta http-equiv="Content-Type" content="text/html; charset={$config['charset']}" />
<style type="text/css">
<!--
body {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;
font-size: 13px;
line-height: 1.4285715;
color: #000000;
background:#ededed;
}
p {padding:0;margin:0}
.form-wrapper{margin-left:auto;margin-top:3em;margin-right:auto;}
.form-mail{width: 450px;background:#fff;box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);margin:0 auto;}
.form-mail p.register-info{background-color: #1976d2;border-color: #1976d2;box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);color:#fff;padding:8px 15px;margin-bottom: 10px;}
.form-mail p.register-submit{display:inline-block;float:right}
.form-mail p.register-submit > input{display: inline-block;width:auto;margin-bottom: 0;text-align:center;cursor: pointer;background-image: none;border: 1px solid transparent;white-space: nowrap;line-height: 1.6666667;font-size: 12px;padding: 4px 10px;background-color: #009688;border-color: #009688;color: #fff;border-radius: 3px;vertical-align: bottom;box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);margin-bottom:20px}
p input{width: 370px;margin: 10px 35px;font-size: 13px;line-height: 1.5384616;color: #333333;border: 1px solid #cccccc;padding: 3px 5px 3px 5px;box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);}
p input:focus{border:1px solid #b1acac;outline:none}
-->
</style>
</head>
<body>
{text}
</body>
</html>
HTML;
$js_popup = <<<HTML
<script>
<!--
if(opener)
{
window.opener.location.reload();
window.close();
} else {
window.location = '{$root_href}';
}
//-->
</script>
HTML;
function enter_mail ($info = "") {
global $popup, $lang;
$provider = totranslit( $_REQUEST['provider'] );
if($provider != "od" AND $provider != "vk") {
echo str_replace("{text}", $lang['reg_err_40'], $popup);
die();
}
if($info) $info ="<ul>".$info."</ul>";
$form = <<<HTML
<div class="form-wrapper">
<form action="?do=auth-social&sub=mail" method="post" class="form-mail">
<input type="hidden" name="provider" value="{$provider}">
<p class="register-info">{$lang['reg_err_37']}</p>
<p><input type="text" dir="auto" name="email"></p>
{$info}
<p class="register-submit"><input type="submit" value="{$lang['social_next']}"></p>
<div style="clear:both;"></div>
</form>
</div>
HTML;
echo str_replace("{text}", $form, $popup);
die();
}
function check_email( $email ) {
global $lang, $banned_info, $db, $config;
$stop = "";
if( empty( $email ) OR strlen( $email ) > 50 OR @count(explode("@", $email)) != 2) $stop .= $lang['reg_err_6'];
if(isset($banned_info['email']) AND is_array($banned_info['email']) AND count( $banned_info['email'] ) ) foreach ( $banned_info['email'] as $banned ) {
$banned['email'] = str_replace( '\*', '.*', preg_quote( $banned['email'], "#" ) );
if( $banned['email'] AND preg_match( "#^{$banned['email']}$#iu", $email ) ) {
if( $banned['descr'] ) {
$lang['reg_err_23'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_23'] );
$lang['reg_err_23'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_23'] );
} else
$lang['reg_err_23'] = str_replace( "{descr}", "", $lang['reg_err_23'] );
$stop .= $lang['reg_err_23'];
}
}
$email = $db->safesql($email);
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '{$email}'" );
if( $row['count'] ) {
$stop .= $lang['reg_err_38'];
}
if( $stop ) return $stop; else return true;
}
function check_name( $name ) {
global $db, $relates_word, $config;
if( empty($name) ) return false;
if( function_exists('mb_strtolower') ) {
$name = mb_strtolower($name, $config['charset']);
} else {
$name = strtolower( $name );
}
$search_name = strtr( $name, $relates_word );
$name = $db->safesql($name);
$search_name = $db->safesql($search_name);
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE LOWER(name) REGEXP '^{$search_name}$' OR name = '{$name}'" );
if( $row['count'] ) return false;
return true;
}
function check_newlogin($name, $user_id) {
global $lang, $db, $banned_info, $relates_word, $config;
$stop = "";
if( dle_strlen( $name, $config['charset'] ) > 40 OR dle_strlen(trim($name), $config['charset']) < 3) $stop .= $lang['reg_err_3'];
if( preg_match( "/[\||\'|\<|\>|\[|\]|\%|\"|\!|\?|\$|\@|\#|\/|\|\&\~\*\{\}\+]/", $name ) ) $stop .= $lang['reg_err_4'];
if (strpos( strtolower($name) , '.php' ) !== false) $stop .= $lang['reg_err_4'];
if( isset($banned_info['name']) AND is_array($banned_info['name']) AND count( $banned_info['name'] ) ) foreach ( $banned_info['name'] as $banned ) {
$banned['name'] = str_replace( '\*', '.*', preg_quote( $banned['name'], "#" ) );
if( $banned['name'] and preg_match( "#^{$banned['name']}$#iu", $name ) ) {
if( $banned['descr'] ) {
$lang['reg_err_21'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_21'] );
$lang['reg_err_21'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_21'] );
} else
$lang['reg_err_21'] = str_replace( "{descr}", "", $lang['reg_err_21'] );
$stop .= $lang['reg_err_21'];
}
}
if( $stop == "" ) {
if( function_exists('mb_strtolower') ) {
$name = trim(mb_strtolower($name, $config['charset']));
} else {
$name = trim(strtolower( $name ));
}
$search_name = strtr( $name, $relates_word );
$name = $db->safesql($name);
$search_name = $db->safesql($search_name);
$user_id = intval($user_id);
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE user_id != '{$user_id}' AND (LOWER(name) REGEXP '^{$search_name}$' OR name = '$name')" );
if( $row['count'] ) $stop .= $lang['reg_err_44'];
}
return $stop;
}
function check_registration($name, $email, $social_user) {
global $lang, $db, $banned_info, $config, $popup;
$stop = "";
$_IP = get_ip();
if( empty($name) OR preg_match( "/[\||\'|\<|\>|\[|\]|\%|\"|\!|\?|\$|\@|\#|\/|\|\&\~\*\{\}\+]/", $name ) OR dle_strlen( $name, $config['charset'] ) > 40 ) return false;
if( empty($email) OR strlen($email) > 50 OR @count(explode("@", $email)) != 2) return false;
if (strpos( strtolower($name) , '.php' ) !== false) return false;
if( $config['max_users'] > 0 ) {
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users" );
if ( $row['count'] >= $config['max_users'] ) {
echo str_replace("{text}", $lang['reg_err_10'], $popup);
die();
}
}
if( is_array($banned_info['name']) AND count( $banned_info['name'] ) ) foreach ( $banned_info['name'] as $banned ) {
$banned['name'] = str_replace( '\*', '.*', preg_quote( dle_strtolower($banned['name'], $config['charset']), "#" ) );
if( $banned['name'] and preg_match( "#^{$banned['name']}$#iu", dle_strtolower($name, $config['charset']) ) ) {
if( $banned['descr'] ) {
$lang['reg_err_21'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_21'] );
$lang['reg_err_21'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_21'] );
} else
$lang['reg_err_21'] = str_replace( "{descr}", "", $lang['reg_err_21'] );
echo str_replace("{text}", $lang['reg_err_21'], $popup);
die();
}
}
if( is_array($banned_info['email']) AND count( $banned_info['email'] ) ) foreach ( $banned_info['email'] as $banned ) {
$banned['email'] = str_replace( '\*', '.*', preg_quote( dle_strtolower($banned['email'], $config['charset']), "#" ) );
if( $banned['email'] and preg_match( "#^{$banned['email']}$#iu", dle_strtolower($email, $config['charset']) ) ) {
if( $banned['descr'] ) {
$lang['reg_err_23'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_23'] );
$lang['reg_err_23'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_23'] );
} else
$lang['reg_err_23'] = str_replace( "{descr}", "", $lang['reg_err_23'] );
echo str_replace("{text}", $lang['reg_err_23'], $popup);
die();
}
}
$email = $db->safesql($email);
$row = $db->super_query( "SELECT email, name, user_id, user_group FROM " . USERPREFIX . "_users WHERE email = '{$email}'" );
if( $row['user_id'] ) {
if( $row['user_group'] == 1 AND !$config['allow_admin_social'] ) {
echo str_replace("{text}", $lang['reg_err_42'], $popup);
die();
} else register_wait_user($social_user, $row['user_id'], $row['name'], $row['email'], 0, '' );
}
if( !$config['reg_multi_ip'] ) {
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE logged_ip = '{$_IP}'" );
if ( $row['count'] ) {
echo str_replace("{text}", $lang['reg_err_26'], $popup);
die();
}
}
return true;
}
function wait_login( $id, $key ) {
global $db, $config, $user_group, $popup, $js_popup, $lang;
$js_wait_login = <<<HTML
<script>
<!--
if(opener)
{
window.opener.location = '{$_SERVER['PHP_SELF']}?do=auth-social&action=waitlogin&id={$id}&key={$key}';
window.close();
} else {
window.location = '{$_SERVER['PHP_SELF']}?do=auth-social&action=waitlogin&id={$id}&key={$key}';
}
//-->
</script>
HTML;
echo str_replace("{text}", $lang['social_login_ok'].$js_wait_login, $popup);
die();
}
function register_wait_user( $social_user, $user_id, $name, $email, $id, $key ) {
global $db, $config, $user_group, $popup, $js_popup, $lang;
$id = intval($id);
if ( !$id ) {
$salt = str_shuffle("abchefghjkmnpqrstuvwxyz0123456789".sha1(random_bytes(32).microtime()));
$password = '';
for($i = 0; $i < 11; $i ++) {
$password .= $salt[random_int(0, 72)];
}
$password = md5($password);
$key = $password;
$db->query( "INSERT INTO " . USERPREFIX . "_social_login (sid, uid, password, provider, wait, waitlogin) VALUES ('{$social_user['sid']}', '{$user_id}', '{$password}', '{$social_user['provider']}', '1', '0')" );
$id = $db->insert_id();
}
$link = $config['http_home_url'] . "index.php?do=auth-social&action=approve&id=" . $id . "&key=" . $key;
$row = $db->super_query( "SELECT * FROM " . PREFIX . "_email WHERE name='wait_mail' LIMIT 0,1" );
$mail = new dle_mail( $config, $row['use_html'] );
$row['template'] = stripslashes( $row['template'] );
$row['template'] = str_replace( "{%username%}", $name, $row['template'] );
$row['template'] = str_replace( "{%link%}", $link, $row['template'] );
$row['template'] = str_replace( "{%ip%}", get_ip(), $row['template'] );
$row['template'] = str_replace( "{%network%}", $social_user['provider'], $row['template'] );
$mail->send( $email, $lang['wait_subj'], $row['template'] );
echo str_replace("{text}", $lang['reg_err_36'], $popup);
die();
}
function check_attach_user( $social_user ) {
global $db, $config, $user_group, $popup, $js_popup, $lang, $member_id;
if( !$member_id['user_id'] ) {
echo str_replace("{text}", $lang['reg_err_46'], $popup);
die();
}
$social_user['sid'] = $db->safesql( $social_user['sid'] );
$user = urlencode ( $member_id['name'] );
$row = $db->super_query( "SELECT uid FROM " . USERPREFIX . "_social_login WHERE sid='{$social_user['sid']}'" );
if ( $row['uid'] != $member_id['user_id']) {
$row = $db->super_query( "SELECT name FROM " . USERPREFIX . "_users WHERE user_id='{$row['uid']}'" );
if(!$row['name']) {
$db->query( "DELETE FROM " . USERPREFIX . "_social_login WHERE sid='{$social_user['sid']}'" );
attach_user( $social_user );
}
$lang['reg_err_45'] = str_replace("{login}", $row['name'], $lang['reg_err_45']);
echo str_replace("{text}", $lang['reg_err_45'], $popup);
die();
}
$attach = <<<HTML
<script>
<!--
if(opener)
{
window.opener.location = '{$_SERVER['PHP_SELF']}?subaction=userinfo&user={$user}&id={$member_id['user_id']}&provider={$social_user['provider']}';
window.close();
} else {
window.location = '{$_SERVER['PHP_SELF']}?subaction=userinfo&user={$user}&id={$member_id['user_id']}&provider={$social_user['provider']}';
}
//-->
</script>
HTML;
echo str_replace("{text}", $lang['social_login_ok'].$attach, $popup);
die();
}
function attach_user( $social_user ) {
global $db, $config, $user_group, $popup, $js_popup, $lang, $member_id;
if( !$member_id['user_id'] ) {
echo str_replace("{text}", $lang['reg_err_46'], $popup);
die();
}
if( $member_id['user_group'] == 1 AND !$config['allow_admin_social'] ) {
echo str_replace("{text}", $lang['reg_err_42'], $popup);
die();
}
$key = md5($member_id['password']);
$db->query( "INSERT INTO " . USERPREFIX . "_social_login (sid, uid, password, provider, wait, waitlogin) VALUES ('{$social_user['sid']}', '{$member_id['user_id']}', '{$key}', '{$social_user['provider']}', '0', '0')" );
$user = urlencode ( $member_id['name'] );
$attach = <<<HTML
<script>
<!--
if(opener)
{
window.opener.location = '{$_SERVER['PHP_SELF']}?subaction=userinfo&user={$user}&id={$member_id['user_id']}&provider={$social_user['provider']}&action=attach';
window.close();
} else {
window.location = '{$_SERVER['PHP_SELF']}?subaction=userinfo&user={$user}&id={$member_id['user_id']}&provider={$social_user['provider']}&action=attach';
}
//-->
</script>
HTML;
echo str_replace("{text}", $lang['social_login_ok'].$attach, $popup);
die();
}
function register_user( $social_user ) {
global $db, $config, $user_group, $popup, $js_popup, $lang;
$add_time = time();
$_IP = get_ip();
if( intval( $config['reg_group'] ) < 3 ) $config['reg_group'] = 4;
$salt = str_shuffle("abchefghjkmnpqrstuvwxyz0123456789".sha1(random_bytes(32). microtime()));
$password = '';
$hash = '';
for($i = 0; $i < 11; $i ++) {
$password .= $salt[random_int(0, 72)];
}
$password = password_hash($password, PASSWORD_DEFAULT);
$key = md5($password);
$password = $db->safesql($password);
if( $config['log_hash'] ) {
$hash = md5(random_bytes(32) . microtime());
}
$social_user['nickname'] = $db->safesql( $social_user['nickname'] );
$social_user['email'] = $db->safesql( $social_user['email'] );
$social_user['name'] = $db->safesql( $social_user['name'] );
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, fullname, favorites, xfields, hash, logged_ip) VALUES ('{$social_user['nickname']}', '{$password}', '{$social_user['email']}', '{$add_time}', '{$add_time}', '{$config['reg_group']}', '', '', '{$social_user['name']}', '', '', '{$hash}', '{$_IP}')" );
$id = $db->insert_id();
$db->query( "INSERT INTO " . USERPREFIX . "_social_login (sid, uid, password, provider, wait, waitlogin) VALUES ('{$social_user['sid']}', '{$id}', '{$key}', '{$social_user['provider']}', '0', '1')" );
$id_s_log = $db->insert_id();
$_SESSION['state'] = 0;
if( intval( $user_group[$config['reg_group']]['max_foto'] ) > 0 AND $social_user['avatar'] ) {
$driver = DLEFiles::getDefaultStorage();
$config['avatar_remote'] = intval($config['avatar_remote']);
if ($config['avatar_remote'] > -1) $driver = $config['avatar_remote'];
DLEFiles::init( $driver, $config['local_on_fail'] );
$thumb = new thumbnail( $social_user['avatar'] );
if ( !$thumb->error) {
if( !$config['tinypng_avatar'] ) {
$thumb->tinypng = false;
}
$thumb->tinypng_resize = true;
$thumb->size_auto( $user_group[$config['reg_group']]['max_foto'] );
$foto_name = $thumb->save( "fotos/foto_" . $id . ".jpg" );
if ( $foto_name AND !$thumb->error) {
if ( $driver AND !DLEFiles::$remote_error ) {
$foto_name = $db->safesql( DLEFiles::GetBaseURL() . "fotos/" . $foto_name );
} else {
if (strpos($config['http_home_url'], "//") === 0) $avatar_url = $config['http_home_url'];
elseif (strpos($config['http_home_url'], "/") === 0) $avatar_url = "//".$_SERVER['HTTP_HOST'].$config['http_home_url'];
else $avatar_url = $config['http_home_url'];
$avatar_url = str_ireplace("https:", "", $avatar_url);
$avatar_url = str_ireplace("http:", "", $avatar_url);
$foto_name = $db->safesql( $avatar_url . "uploads/fotos/" . $foto_name );
}
$db->query( "UPDATE " . USERPREFIX . "_users SET foto='{$foto_name}' WHERE user_id = '{$id}'" );
}
}
}
$js_wait_login = <<<HTML
<script>
<!--
if(opener)
{
window.opener.location = '{$_SERVER['PHP_SELF']}?do=auth-social&action=waitlogin&id={$id_s_log}&key={$key}';
window.close();
} else {
window.location = '{$_SERVER['PHP_SELF']}?do=auth-social&action=waitlogin&id={$id_s_log}&key={$key}';
}
//-->
</script>
HTML;
echo str_replace("{text}", $lang['social_login_ok'].$js_wait_login, $popup);
die();
}
if( isset($_GET['code']) AND $_GET['code'] AND $config['allow_social'] AND $config['allow_registration']) {
if(!$_SESSION['state'] OR $_SESSION['state'] != $_GET['state']) {
echo str_replace("{text}", $lang['reg_err_39'], $popup);
die();
}
include_once (ENGINE_DIR . '/data/socialconfig.php');
$social = new SocialAuth( $social_config );
$social_user = $social->getuser();
if ( is_array($social_user) ) {
$social_user['sid'] = $db->safesql( $social_user['sid'] );
$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_social_login WHERE sid='{$social_user['sid']}'" );
if ( isset($row['id']) AND $row['id'] ) {
if ( $row['uid'] ) {
$_TIME = time();
$_IP = get_ip();
if( $is_logged ) {
check_attach_user($social_user);
}
session_regenerate_id();
$member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='{$row['uid']}'" );
if( $member_id['user_id'] ) {
if( $row['wait'] ) {
register_wait_user($social_user, $member_id['user_id'], $member_id['name'], $member_id['email'], $row['id'], $row['password'] );
}
if( $row['waitlogin'] ) {
wait_login($row['id'], $row['password'] );
}
if( $member_id['user_group'] == 1 AND !$config['allow_admin_social'] ) {
echo str_replace("{text}", $lang['reg_err_42'], $popup);
die();
}
set_cookie( "dle_user_id", $member_id['user_id'], 365 );
set_cookie( "dle_password", md5($member_id['password']), 365 );
$_SESSION['dle_user_id'] = $member_id['user_id'];
$_SESSION['dle_password'] = md5($member_id['password']);
$_SESSION['member_lasttime'] = $member_id['lastdate'];
$_SESSION['state'] = 0;
if($config['twofactor_auth'] AND $member_id['twofactor_auth']) {
$config['log_hash'] = 1;
}
if( $config['log_hash'] ) {
$hash = md5(random_bytes(32) . microtime());
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET hash='{$hash}', lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
set_cookie( "dle_hash", $hash, 365 );
} else $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
echo str_replace("{text}", $lang['social_login_ok'].$js_popup, $popup);
die();
} else {
$member_id = array();
$is_logged = false;
$db->query( "DELETE FROM " . USERPREFIX . "_social_login WHERE sid='{$social_user['sid']}'" );
}
}
} else {
if( $is_logged ) {
attach_user($social_user);
}
session_regenerate_id();
if( empty($social_user['email']) ) enter_mail();
$i = 1;
$check_name = $social_user['nickname'];
while (!check_name($check_name)){
$i++;
$check_name = $social_user['nickname'].'_'.$i;
}
$social_user['nickname'] = $check_name;
if ( check_registration( $social_user['nickname'], $social_user['email'], $social_user ) ) {
register_user($social_user);
}
}
} else {
echo str_replace("{text}", $social_user, $popup);
die();
}
} elseif( isset($_GET['sub']) AND !$is_logged AND $config['allow_social'] AND $config['allow_registration']) {
include_once (ENGINE_DIR . '/data/socialconfig.php');
$url = false;
$not_allow_symbol = array (""", "`", " ", '
', '
', "
", "
", '\', ",", "/", "#", ";", ":", "~", "[", "]", "{", "}", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"', "'", " ", "&" );
$_POST['email'] = str_replace( $not_allow_symbol, '', $_POST['email']);
$check = check_email( $_POST['email'] );
if ( $check !== true ) {
enter_mail($check);
}
if ( $_POST['provider'] == "od" AND $_SESSION['od_access_token'] ) {
$url = $config['http_home_url'] . "index.php?do=auth-social&state={$_SESSION['state']}&provider=od&code={$_SESSION['od_access_code']}&email=".$_POST['email'];
}
if ( $_POST['provider'] == "vk" ) {
$url = $config['http_home_url'] . "index.php?do=auth-social&state={$_SESSION['state']}&provider=vk&code={$_SESSION['vk_access_code']}&email=".$_POST['email'];
}
if($url) {
header( "Location: {$url}" );
die();
} else {
echo str_replace("{text}", $lang['reg_err_40'], $popup);
die();
}
} elseif( isset($_GET['action']) AND $_GET['action'] == 'waitlogin' AND $_GET['id'] AND $_GET['key'] AND !$is_logged AND $config['allow_social'] AND $config['allow_registration']) {
$id = intval($_GET['id']);
$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_social_login WHERE id='{$id}'" );
if( $row['id'] AND $row['waitlogin'] AND $row['password'] != "" AND $_GET['key'] != "" AND $row['password'] == $_GET['key'] ) {
$userdaten = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='{$row['uid']}'" );
$login_name = $userdaten['name'];
$lang['enter_login1'] = str_replace("{name}", $userdaten['name'],$lang['enter_login1']);
if( isset($_POST['newlogin']) AND $_POST['newlogin'] ) {
$login_name = strtr(trim($_POST['newlogin']), array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, $config['charset'])));
$login_name = trim($login_name,chr(0xC2).chr(0xA0));
$login_name = preg_replace('#\s+#u', ' ', $login_name);
$login_name = htmlspecialchars($login_name, ENT_QUOTES, $config['charset'] );
$reg_error = check_newlogin($login_name, $userdaten['user_id']);
if($reg_error) {
$lang['enter_login4'] = "<ul>".$reg_error."</ul>";
} else {
session_regenerate_id();
$login_name = $db->safesql($login_name);
$db->query( "UPDATE " . USERPREFIX . "_users SET name='{$login_name}' WHERE user_id='{$row['uid']}'" );
$db->query( "UPDATE " . USERPREFIX . "_social_login SET waitlogin='0' WHERE id='{$row['id']}'" );
$member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='{$row['uid']}'" );
if( $member_id['user_id'] ) {
set_cookie( "dle_user_id", $member_id['user_id'], 365 );
set_cookie( "dle_password", md5($member_id['password']), 365 );
$_SESSION['dle_user_id'] = $member_id['user_id'];
$_SESSION['dle_password'] = md5($member_id['password']);
$_SESSION['member_lasttime'] = $member_id['lastdate'];
$_SESSION['state'] = 0;
if( $config['log_hash'] ) {
$hash = md5(random_bytes(32) . microtime());
$db->query( "UPDATE " . USERPREFIX . "_users SET hash='{$hash}', lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
set_cookie( "dle_hash", $hash, 365 );
} else $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
}
header( "Location: {$root_href}" );
die();
}
} else {
$lang['enter_login4'] = $lang['enter_login4']."<br /><br />";
}
$form_login = <<<HTML
<form method="post">
{$lang['enter_login1']}
<br><br>
{$lang['enter_login2']}
<br>
<input type="text" dir="auto" name="newlogin" id="newlogin" class="textin" style="width:200px" value="{$login_name}">
<br><br>
{$lang['enter_login4']}
<input type="submit" class="bbcodes" value="{$lang['enter_login3']}" />
</form>
HTML;
msgbox( $lang['enter_login'], $form_login );
} else {
@header( "HTTP/1.0 404 Not Found" );
if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
@header("Content-type: text/html; charset=".$config['charset']);
echo file_get_contents( ROOT_DIR . '/404.html' );
die();
} else msgbox( $lang['all_err_1'], $lang['news_err_27'] );
}
} elseif( isset($_GET['action']) AND $_GET['action'] == 'approve' AND $_GET['id'] AND $_GET['key'] AND !$is_logged AND $config['allow_social'] AND $config['allow_registration']) {
$id = intval($_GET['id']);
$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_social_login WHERE id='{$id}'" );
if( $row['id'] AND $row['wait'] ) {
if( $row['password'] != "" AND $_GET['key'] != "" AND $row['password'] == $_GET['key'] ) {
session_regenerate_id();
$db->query( "UPDATE " . USERPREFIX . "_social_login SET wait='0' WHERE id='{$row['id']}'" );
$member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='{$row['uid']}'" );
if( $member_id['user_id'] ) {
set_cookie( "dle_user_id", $member_id['user_id'], 365 );
set_cookie( "dle_password", md5($member_id['password']), 365 );
$_SESSION['dle_user_id'] = $member_id['user_id'];
$_SESSION['dle_password'] = md5($member_id['password']);
$_SESSION['member_lasttime'] = $member_id['lastdate'];
$_SESSION['state'] = 0;
if( $config['log_hash'] ) {
$hash = md5(random_bytes(32) . microtime());
$db->query( "UPDATE " . USERPREFIX . "_users SET hash='{$hash}', lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
set_cookie( "dle_hash", $hash, 365 );
} else $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );
}
msgbox( $lang['all_info'], $lang['auth_social_ok'] . " <a href=\"" . $root_href . "\">" . $lang['auth_next'] . "</a>" );
} else {
$db->query( "DELETE FROM " . USERPREFIX . "_social_login WHERE id='{$id}'" );
@header( "HTTP/1.0 404 Not Found" );
if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
@header("Content-type: text/html; charset=".$config['charset']);
echo file_get_contents( ROOT_DIR . '/404.html' );
die();
} else msgbox( $lang['all_err_1'], $lang['reg_err_43'] );
}
} else {
@header( "HTTP/1.0 404 Not Found" );
if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
@header("Content-type: text/html; charset=".$config['charset']);
echo file_get_contents( ROOT_DIR . '/404.html' );
die();
} else msgbox( $lang['all_err_1'], $lang['reg_err_43'] );
}
} else {
@header( "HTTP/1.0 404 Not Found" );
if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
@header("Content-type: text/html; charset=".$config['charset']);
echo file_get_contents( ROOT_DIR . '/404.html' );
die();
} else msgbox( $lang['all_err_1'], $lang['news_err_27'] );
}
?>
Did this file decode correctly?
Original Code
$_F=__FILE__;$_X='P0NoP0lISThBKjhycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycjg9UHE3cXU1WU89TkZtNUZPPS09Mlg9bnNZN2pPR2w9Qk9WNXE9L11ze0k9OC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOD1INzdJbDpBQVZSTy1GT0dsRV17QTgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTg9IHNJWF01bUg3PShlKT1TWlpXLVNaUzE9bnNZN2pPR2w9Qk9WNXE9L11ze0k4cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnI4PTxINWw9ZXNWTz01bD1JXXM3T2U3T1Y9Mlg9ZXNJWF01bUg3OHJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyOD1wNVJPOj1sc2U1cVJFSUhJOC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOD1hbE86PVV7N0hzXTVbcTc1c0Y9N0hdc3ttSD1sc2U1cVI9Rk83R3NdM2w4cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnI4KkE4ODVZKD0hVk9ZNUZPVignUFU8VXV5cE5Oai95ak4nKT0pPTA4CUhPcVZPXSg9IlE8PEpBVEVUPVdaMT1wc10yNVZWT0YiPSk7OAlIT3FWT109KD0ndXNlcTc1c0Y6PUVFQUVFQSc9KTs4CVY1Tyg9IlFxZTM1Rm09cTc3T3RJNyEiPSk7OGc4ODVZKD0kX25Obm55NmpmJ11PWU9dXU9dJ2Q9KT0wOAkkXXNzN19IXU9ZPXI9JF9uTm5ueTZqZiddT1lPXV1PXSdkOzhnPU9SbE89MDgJJF1zczdfSF1PWT1yPWw3XV9dT0lScWVPKCI1RlZPa0VJSEkiLCIiLCRfbk5Eek5EZidKUUpfbk51cCdkKTs4Zzg4JF1zczdfSF1PWT1yPWw3XV9dT0lScWVPKCImcXRJOyIsIiYiLD0kXXNzN19IXU9ZPSk7ODhASE9xVk9dKCIgc0Y3T0Y3LTdYSU86PTdPazdBSDd0Ujs9ZUhxXWxPN3IiRSRlc0ZZNW1mJ2VIcV1sTzcnZCk7ODg1WT0obDddSXNsKCRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZCw9IkFBIik9cnJyPVopPSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZD1yPSJINzdJbDoiRSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZDs4T1JsTzVZPShsN11Jc2woJGVzRlk1bWYnSDc3SV9Ic3RPX3tdUidkLD0iQSIpPXJycj1aKT0kZXNGWTVtZidINzdJX0hzdE9fe11SJ2Q9cj0iSDc3SWw6QUEiRSRfbk5Eek5EZidRPDxKX1E2bjwnZEUkZXNGWTVtZidINzdJX0hzdE9fe11SJ2Q7ODgkSXNJe0k9cj1oaGhRPEJ1OGghUDYgPC5KTj1IN3RSQzhoSDd0UkM4aEhPcVZDOGg3NTdST0MwJGVzRlk1bWYnSHN0T183NTdSTydkZ2hBNzU3Uk9DOGh0TzdxPUg3N0ktT2J7NW9yIiBzRjdPRjctPFhJTyI9ZXNGN09GN3IiN09rN0FIN3RSOz1lSHFdbE83cjAkZXNGWTVtZidlSHFdbE83J2RnIj1BQzhobDdYUk89N1hJT3IiN09rN0FlbGwiQzhoIS0tODJzVlg9MDgJWXNGNy1ZcXQ1Ulg6PS1xSUlSTy1sWGw3T3QsClI1RjNCcWVuWGw3T3Rwc0Y3LCJuT21zTz1heSIsIkRzMnM3cyIsIjZrWG1PRiIsImEye0Y3eyIsIiBxRjdxXU9SUiIsInA1XXE9bnFGbCIsIlBdczVWPW5xRmwiLCJRT1JvTzc1ZXE9ak97TyIsbHFGbC1sT101WTs4PT09PVlzRjctbDVbTzo9VDFJazs4PT09PVI1Rk8tSE81bUg3Oj1URVdTd0x2VEw7OAllc1JzXTo9I1paWlpaWjs4CTJxZTNtXXN7RlY6I09WT1ZPVjs4ZzhJPTBJcVZWNUZtOlo7dHFdbTVGOlpnOEVZc110LUddcUlJT10wdHFdbTVGLVJPWTc6cXs3czt0cV1tNUYtN3NJOjFPdDt0cV1tNUYtXTVtSDc6cXs3cztnOEVZc110LXRxNVIwRzVWN0g6PVdMWklrOzJxZTNtXXN7RlY6I1lZWTsyc2stbEhxVnNHOj1aPVRJaz0xSWs9XW0ycShaLFosWixaRVRTKSw9Wj1USWs9U0lrPV1tMnEoWixaLFosWkVTVyk7dHFdbTVGOlo9cXs3cztnOEVZc110LXRxNVI9SUVdT201bDdPXS01RllzMDJxZTNtXXN7RlYtZXNSc106PSNUTXZ4VlM7MnNdVk9dLWVzUnNdOj0jVE12eFZTOzJzay1sSHFWc0c6PVo9VElrPTFJaz1dbTJxKFosWixaLFpFVFMpLD1aPVRJaz1TSWs9XW0ycShaLFosWixaRVNXKTtlc1JzXTojWVlZO0lxVlY1Rm06d0lrPVRMSWs7dHFdbTVGLTJzNzdzdDo9VFpJaztnOEVZc110LXRxNVI9SUVdT201bDdPXS1sezJ0NTcwVjVsSVJxWDo1RlI1Rk8tMlJzZTM7WVJzcTc6XTVtSDdnOEVZc110LXRxNVI9SUVdT201bDdPXS1sezJ0NTc9Qz01Rkl7NzBWNWxJUnFYOj01RlI1Rk8tMlJzZTM7RzVWN0g6cXs3czt0cV1tNUYtMnM3N3N0Oj1aOzdPazctcVI1bUY6ZU9GN09dO2V7XWxzXTo9SXM1RjdPXTsycWUzbV1ze0ZWLTV0cW1POj1Gc0ZPOzJzXVZPXTo9VElrPWxzUjVWPTddcUZsSXFdT0Y3O0dINTdPLWxJcWVPOj1Gc0ddcUk7UjVGTy1ITzVtSDc6PVRFeHh4eHh4djtZc0Y3LWw1W086PVRTSWs7SXFWVjVGbTo9V0lrPVRaSWs7MnFlM21dc3tGVi1lc1JzXTo9I1paTXh3dzsyc11WT10tZXNSc106PSNaWk14d3c7ZXNSc106PSNZWVk7MnNdVk9dLV1xVjV7bDo9MUlrO29PXTc1ZXFSLXFSNW1GOj0yczc3c3Q7MnNrLWxIcVZzRzo9Wj1USWs9MUlrPV1tMnEoWixaLFosWkVUUyksPVo9VElrPVNJaz1dbTJxKFosWixaLFpFU1cpO3RxXW01Ri0yczc3c3Q6U1pJa2c4ST01Rkl7NzBHNVY3SDo9MXZaSWs7dHFdbTVGOj1UWklrPTFMSWs7WXNGNy1sNVtPOj1UMUlrO1I1Rk8tSE81bUg3Oj1URUwxd1d4VHg7ZXNSc106PSMxMTExMTE7MnNdVk9dOj1USWs9bHNSNVY9I2VlZWVlZTtJcVZWNUZtOj0xSWs9TElrPTFJaz1MSWs7MnNrLWxIcVZzRzo9NUZsTzc9Wj1USWs9VElrPV1tMnEoWixaLFosWkVadkwpO2c4ST01Rkl7NzpZc2V7bDAyc11WT106VElrPWxzUjVWPSMyVHFlcWU7c3s3UjVGTzpGc0ZPZzgtLUM4aEFsN1hST0M4aEFIT3FWQzhoMnNWWEM4MDdPazdnCThoQTJzVlhDOGhBSDd0UkM4UTxCdTs4OCRLbF9Jc0l7ST1yPWhoaFE8QnU4aGxlXTVJN0M4aCEtLTg4NVkoc0lPRk9dKTgwOAlHNUZWc0dFc0lPRk9dRVJzZXE3NXNGRV1PUnNxVigpOzgJRzVGVnNHRWVSc2xPKCk7ODhnPU9SbE89MDg4CUc1RlZzR0VSc2VxNzVzRj1yPScwJF1zczdfSF1PWWcnOzhnOEFBLS1DOGhBbGVdNUk3QzhRPEJ1Ozg4OFl7RmU3NXNGPU9GN09dX3RxNVI9KCQ1RllzPXI9IiIpPTA4CW1SczJxUj0kSXNJe0ksPSRScUZtOzg4CSRJXXNvNVZPXT1yPTdzN11xRmxSNTcoPSRfRE4+YU5uPGYnSV1zbzVWT10nZD0pOzg4CTVZKCRJXXNvNVZPXT0hcj0ic1YiPVVqUD0kSV1zbzVWT109IXI9Im8zIik9MDg4CQkJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ11PbV9PXV1fV1onZCw9JElzSXtJKTs4CQkJVjVPKCk7ODgJZzgJOAk1WSgkNUZZcyk9JDVGWXM9ciJoe1JDIkUkNUZZc0UiaEF7UkMiOzg4JFlzXXQ9cj1oaGhRPEJ1OGhWNW89ZVJxbGxyIllzXXQtR11xSUlPXSJDOAloWXNddD1xZTc1c0ZyIj9Wc3JxezdILWxzZTVxUiZsezJydHE1UiI9dE83SHNWciJJc2w3Ij1lUnFsbHIiWXNddC10cTVSIkM4CQloNUZJezc9N1hJT3IiSDVWVk9GIj1GcXRPciJJXXNvNVZPXSI9b3FSe09yIjAkSV1zbzVWT11nIkM4CQloST1lUnFsbHIiXU9tNWw3T10tNUZZcyJDMCRScUZtZiddT21fT11dXzF2J2RnaEFJQzgJCWhJQ2g1Rkl7Nz03WElPciI3T2s3Ij1WNV1yInF7N3MiPUZxdE9yIk90cTVSIkNoQUlDOAkJMCQ1RllzZzgJCWhJPWVScWxsciJdT201bDdPXS1sezJ0NTciQ2g1Rkl7Nz03WElPciJsezJ0NTciPW9xUntPciIwJFJxRm1mJ2xzZTVxUl9GT2s3J2RnIkNoQUlDOAloVjVvPWw3WFJPciJlUk9xXToyczdIOyJDaEFWNW9DOAloQVlzXXRDOGhBVjVvQzhRPEJ1Ozg4CU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRZc110LD0kSXNJe0kpOzgJVjVPKCk7OGc4OFl7RmU3NXNGPWVIT2UzX090cTVSKD0kT3RxNVI9KT0wOAltUnMycVI9JFJxRm0sPSQycUZGT1ZfNUZZcyw9JFYyLD0kZXNGWTVtOzgJJGw3c0k9cj0iIjs4OAk1WSg9T3RJN1goPSRPdHE1Uj0pPTZEPWw3XVJPRig9JE90cTVSPSk9Qz1MWj02RD1AZXN7RjcoT2tJUnNWTygiQCIsPSRPdHE1UikpPSFyPVMpPSRsN3NJPUVyPSRScUZtZiddT21fT11dX3gnZDs4OAk1WSg1bGxPNygkMnFGRk9WXzVGWXNmJ090cTVSJ2QpPVVqUD01bF9xXV1xWCgkMnFGRk9WXzVGWXNmJ090cTVSJ2QpPVVqUD1lc3tGNyg9JDJxRkZPVl81RllzZidPdHE1UidkPSk9KT1Zc11PcWVIPSg9JDJxRkZPVl81RllzZidPdHE1UidkPXFsPSQycUZGT1Y9KT0wOAkJOAkJJDJxRkZPVmYnT3RxNVInZD1yPWw3XV9dT0lScWVPKD0nXConLD0nRSonLD1JXU9tX2J7czdPKD0kMnFGRk9WZidPdHE1UidkLD0iIyI9KT0pOzgJCTgJCTVZKD0kMnFGRk9WZidPdHE1UidkPVVqUD1JXU9tX3RxN2VIKD0iI14wJDJxRkZPVmYnT3RxNVInZGckIzV7Iiw9JE90cTVSPSk9KT0wOAkJCTgJCQk1WSg9JDJxRkZPVmYnVk9sZV0nZD0pPTA4CQkJCSRScUZtZiddT21fT11dX1MxJ2Q9cj1sN11fXU9JUnFlTyg9IjBWT2xlXWciLD0kUnFGbWYnXU9tX09dXV9TUydkLD0kUnFGbWYnXU9tX09dXV9TMSdkPSk7OAkJCQkkUnFGbWYnXU9tX09dXV9TMSdkPXI9bDddX11PSVJxZU8oPSIwVk9sZV1nIiw9JDJxRkZPVmYnVk9sZV0nZCw9JFJxRm1mJ11PbV9PXV1fUzEnZD0pOzgJCQlnPU9SbE84CQkJCSRScUZtZiddT21fT11dX1MxJ2Q9cj1sN11fXU9JUnFlTyg9IjBWT2xlXWciLD0iIiw9JFJxRm1mJ11PbV9PXV1fUzEnZD0pOzg4CQkJJGw3c0k9RXI9JFJxRm1mJ11PbV9PXV1fUzEnZDs4OAkJZzgJZzg4CSRPdHE1Uj1yPSRWMi1DbHFZT2xiUigkT3RxNVIpOzg4CSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSA2YWo8KCopPXFsPWVze0Y3PXBENkI9Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sPWlRTkROPU90cTVSPXI9JzAkT3RxNVJnJyI9KTs4CQk4CTVZKD0kXXNHZidlc3tGNydkPSk9MDgJCSRsN3NJPUVyPSRScUZtZiddT21fT11dXzF3J2Q7OAlnODgJNVkoPSRsN3NJPSk9XU83e11GPSRsN3NJOz1PUmxPPV1PN3tdRj03XXtPOzg4Zzg4WXtGZTc1c0Y9ZUhPZTNfRnF0Tyg9JEZxdE89KT0wOAltUnMycVI9JFYyLD0kXU9ScTdPbF9Hc11WLD0kZXNGWTVtOzg4CTVZKD1PdEk3WCgkRnF0Tyk9KT1dTzd7XUY9WXFSbE87ODgJNVkoPVl7RmU3NXNGX09rNWw3bCgndDJfbDddN3NSc0dPXScpPSk9MDgJCSRGcXRPPXI9dDJfbDddN3NSc0dPXSgkRnF0Tyw9JGVzRlk1bWYnZUhxXWxPNydkKTs4CWc9T1JsTz0wOAkJJEZxdE89cj1sN103c1JzR09dKD0kRnF0Tz0pOzgJZzg4CSRsT3FdZUhfRnF0Tz1yPWw3XTddKD0kRnF0Tyw9JF1PUnE3T2xfR3NdVj0pOzg4CSRGcXRPPXI9JFYyLUNscVlPbGJSKCRGcXRPKTs4CSRsT3FdZUhfRnF0Tz1yPSRWMi1DbHFZT2xiUigkbE9xXWVIX0ZxdE8pOzg4CSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSA2YWo8KCopPXFsPWVze0Y3PXBENkI9Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sPWlRTkROPXU2aU5EKEZxdE8pPUROL05jSj0nXjAkbE9xXWVIX0ZxdE9nJCc9NkQ9RnF0Tz1yPScwJEZxdE9nJyI9KTs4CQk4CTVZKD0kXXNHZidlc3tGNydkPSk9XU83e11GPVlxUmxPOzgJOAldTzd7XUY9N117Tzs4OGc4OFl7RmU3NXNGPWVIT2UzX0ZPR1JzbTVGKCRGcXRPLD0ke2xPXV81Vik9MDgJbVJzMnFSPSRScUZtLD0kVjIsPSQycUZGT1ZfNUZZcyw9JF1PUnE3T2xfR3NdViw9JGVzRlk1bTs4CSRsN3NJPXI9IiI7OAk4CTVZKD1WUk9fbDddUk9GKD0kRnF0Tyw9JGVzRlk1bWYnZUhxXWxPNydkPSk9Qz1XWj02RD1WUk9fbDddUk9GKDddNXQoJEZxdE8pLD0kZXNGWTVtZidlSHFdbE83J2QpPWg9MSk9JGw3c0k9RXI9JFJxRm1mJ11PbV9PXV1fMSdkOzgJNVkoPUldT21fdHE3ZUgoPSJBZlx8fFwnfFxofFxDfFxmfFxkfFwlfFwifFwhfFw/fFwkfFxAfFwjfFxBfFxcXHxcJlx+XCpcMFxnXCtkQSIsPSRGcXRPPSk9KT0kbDdzST1Fcj0kUnFGbWYnXU9tX09dXV9XJ2Q7ODgJNVk9KGw3XUlzbCg9bDddN3NSc0dPXSgkRnF0Tyk9LD0nRUlISSc9KT0hcnI9WXFSbE8pPSRsN3NJPUVyPSRScUZtZiddT21fT11dX1cnZDs4CTgJNVkoPTVsbE83KCQycUZGT1ZfNUZZc2YnRnF0TydkKT1ValA9NWxfcV1dcVgoJDJxRkZPVl81RllzZidGcXRPJ2QpPVVqUD1lc3tGNyg9JDJxRkZPVl81RllzZidGcXRPJ2Q9KT0pPVlzXU9xZUg9KD0kMnFGRk9WXzVGWXNmJ0ZxdE8nZD1xbD0kMnFGRk9WPSk9MDg4CQkkMnFGRk9WZidGcXRPJ2Q9cj1sN11fXU9JUnFlTyg9J1wqJyw9J0UqJyw9SV1PbV9ie3M3Tyg9JDJxRkZPVmYnRnF0TydkLD0iIyI9KT0pOzg4CQk1WSg9JDJxRkZPVmYnRnF0TydkPXFGVj1JXU9tX3RxN2VIKD0iI14wJDJxRkZPVmYnRnF0TydkZyQjNXsiLD0kRnF0Tz0pPSk9MDg4CQkJNVkoPSQycUZGT1ZmJ1ZPbGVdJ2Q9KT0wOAkJCQkkUnFGbWYnXU9tX09dXV9TVCdkPXI9bDddX11PSVJxZU8oPSIwVk9sZV1nIiw9JFJxRm1mJ11PbV9PXV1fU1MnZCw9JFJxRm1mJ11PbV9PXV1fU1QnZD0pOzgJCQkJJFJxRm1mJ11PbV9PXV1fU1QnZD1yPWw3XV9dT0lScWVPKD0iMFZPbGVdZyIsPSQycUZGT1ZmJ1ZPbGVdJ2QsPSRScUZtZiddT21fT11dX1NUJ2Q9KTs4CQkJZz1PUmxPOAkJCQkkUnFGbWYnXU9tX09dXV9TVCdkPXI9bDddX11PSVJxZU8oPSIwVk9sZV1nIiw9IiIsPSRScUZtZiddT21fT11dX1NUJ2Q9KTs4OAkJCSRsN3NJPUVyPSRScUZtZiddT21fT11dX1NUJ2Q7OAkJZzgJZzgJOAk1WSg9JGw3c0k9cnI9IiI9KT0wOAkJNVkoPVl7RmU3NXNGX09rNWw3bCgndDJfbDddN3NSc0dPXScpPSk9MDgJCQkkRnF0Tz1yPTddNXQodDJfbDddN3NSc0dPXSgkRnF0Tyw9JGVzRlk1bWYnZUhxXWxPNydkKSk7OAkJZz1PUmxPPTA4CQkJJEZxdE89cj03XTV0KGw3XTdzUnNHT10oPSRGcXRPPSkpOzgJCWc4CQkkbE9xXWVIX0ZxdE89cj1sN103XSg9JEZxdE8sPSRdT1JxN09sX0dzXVY9KTs4CQk4CQkkRnF0Tz1yPSRWMi1DbHFZT2xiUigkRnF0Tyk7OAkJJGxPcV1lSF9GcXRPPXI9JFYyLUNscVlPbGJSKCRsT3FdZUhfRnF0Tyk7OAkJJHtsT11fNVY9cj01RjdvcVIoJHtsT11fNVYpOzgJCTgJCSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSA2YWo8KCopPXFsPWVze0Y3PXBENkI9Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sPWlRTkROPXtsT11fNVY9IXI9JzAke2xPXV81VmcnPVVqUD0odTZpTkQoRnF0Tyk9RE4vTmNKPSdeMCRsT3FdZUhfRnF0T2ckJz02RD1GcXRPPXI9JyRGcXRPJykiPSk7ODgJCTVZKD0kXXNHZidlc3tGNydkPSk9JGw3c0k9RXI9JFJxRm1mJ11PbV9PXV1fV1cnZDs4CWc4OAldTzd7XUY9JGw3c0k7ODhnODhZe0ZlNzVzRj1lSE9lM19dT201bDddcTc1c0YoJEZxdE8sPSRPdHE1Uiw9JGxzZTVxUl97bE9dKT0wOAltUnMycVI9JFJxRm0sPSRWMiw9JDJxRkZPVl81RllzLD0kZXNGWTVtLD0kSXNJe0k7OAk4CSRsN3NJPXI9IiI7OAkkX3lKPXI9bU83XzVJKCk7ODgJNVkoPU90STdYKCRGcXRPKT02RD1JXU9tX3RxN2VIKD0iQWZcfHxcJ3xcaHxcQ3xcZnxcZHxcJXxcInxcIXxcP3xcJHxcQHxcI3xcQXxcXFx8XCZcflwqXDBcZ1wrZEEiLD0kRnF0Tz0pPTZEPVZST19sN11ST0YoPSRGcXRPLD0kZXNGWTVtZidlSHFdbE83J2Q9KT1DPVdaPSk9XU83e11GPVlxUmxPOzgJNVkoPU90STdYKCRPdHE1Uik9NkQ9bDddUk9GKCRPdHE1Uik9Qz1MWj02RD1AZXN7RjcoT2tJUnNWTygiQCIsPSRPdHE1UikpPSFyPVMpPV1PN3tdRj1ZcVJsTzs4CTVZPShsN11Jc2woPWw3XTdzUnNHT10oJEZxdE8pPSw9J0VJSEknPSk9IXJyPVlxUmxPKT1dTzd7XUY9WXFSbE87ODgJNVkoPSRlc0ZZNW1mJ3Rxa197bE9dbCdkPUM9Wj0pPTA4CTgJCSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSA2YWo8KCopPXFsPWVze0Y3PXBENkI9Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sIj0pOzgJOAkJNVk9KD0kXXNHZidlc3tGNydkPUNyPSRlc0ZZNW1mJ3Rxa197bE9dbCdkPSk9MDgJOAkJCQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9UWidkLD0kSXNJe0kpOzgJCQkJVjVPKCk7OAkJZzgJOAlnODgJNVkoPTVsX3FdXXFYKCQycUZGT1ZfNUZZc2YnRnF0TydkKT1ValA9ZXN7RjcoPSQycUZGT1ZfNUZZc2YnRnF0TydkPSk9KT1Zc11PcWVIPSg9JDJxRkZPVl81RllzZidGcXRPJ2Q9cWw9JDJxRkZPVj0pPTA4CQk4CQkkMnFGRk9WZidGcXRPJ2Q9cj1sN11fXU9JUnFlTyg9J1wqJyw9J0UqJyw9SV1PbV9ie3M3Tyg9VlJPX2w3XTdzUnNHT10oJDJxRkZPVmYnRnF0TydkLD0kZXNGWTVtZidlSHFdbE83J2QpLD0iIyI9KT0pOzgJCTgJCTVZKD0kMnFGRk9WZidGcXRPJ2Q9cUZWPUldT21fdHE3ZUgoPSIjXjAkMnFGRk9WZidGcXRPJ2RnJCM1eyIsPVZST19sN103c1JzR09dKCRGcXRPLD0kZXNGWTVtZidlSHFdbE83J2QpPSk9KT0wOAkJCTgJCQk1WSg9JDJxRkZPVmYnVk9sZV0nZD0pPTA4CQkJCSRScUZtZiddT21fT11dX1NUJ2Q9cj1sN11fXU9JUnFlTyg9IjBWT2xlXWciLD0kUnFGbWYnXU9tX09dXV9TUydkLD0kUnFGbWYnXU9tX09dXV9TVCdkPSk7OAkJCQkkUnFGbWYnXU9tX09dXV9TVCdkPXI9bDddX11PSVJxZU8oPSIwVk9sZV1nIiw9JDJxRkZPVmYnVk9sZV0nZCw9JFJxRm1mJ11PbV9PXV1fU1QnZD0pOzgJCQlnPU9SbE84CQkJCSRScUZtZiddT21fT11dX1NUJ2Q9cj1sN11fXU9JUnFlTyg9IjBWT2xlXWciLD0iIiw9JFJxRm1mJ11PbV9PXV1fU1QnZD0pOzg4CQkJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ11PbV9PXV1fU1QnZCw9JElzSXtJKTs4CQkJVjVPKCk7ODgJCWc4CWc4CTgJNVkoPTVsX3FdXXFYKCQycUZGT1ZfNUZZc2YnT3RxNVInZCk9VWpQPWVze0Y3KD0kMnFGRk9WXzVGWXNmJ090cTVSJ2Q9KT0pPVlzXU9xZUg9KD0kMnFGRk9WXzVGWXNmJ090cTVSJ2Q9cWw9JDJxRkZPVj0pPTA4CQk4CQkkMnFGRk9WZidPdHE1UidkPXI9bDddX11PSVJxZU8oPSdcKicsPSdFKicsPUldT21fYntzN08oPVZST19sN103c1JzR09dKCQycUZGT1ZmJ090cTVSJ2QsPSRlc0ZZNW1mJ2VIcV1sTzcnZCksPSIjIj0pPSk7OAkJOAkJNVkoPSQycUZGT1ZmJ090cTVSJ2Q9cUZWPUldT21fdHE3ZUgoPSIjXjAkMnFGRk9WZidPdHE1UidkZyQjNXsiLD1WUk9fbDddN3NSc0dPXSgkT3RxNVIsPSRlc0ZZNW1mJ2VIcV1sTzcnZCk9KT0pPTA4CQkJOAkJCTVZKD0kMnFGRk9WZidWT2xlXSdkPSk9MDgJCQkJJFJxRm1mJ11PbV9PXV1fUzEnZD1yPWw3XV9dT0lScWVPKD0iMFZPbGVdZyIsPSRScUZtZiddT21fT11dX1NTJ2QsPSRScUZtZiddT21fT11dX1MxJ2Q9KTs4CQkJCSRScUZtZiddT21fT11dX1MxJ2Q9cj1sN11fXU9JUnFlTyg9IjBWT2xlXWciLD0kMnFGRk9WZidWT2xlXSdkLD0kUnFGbWYnXU9tX09dXV9TMSdkPSk7OAkJCWc9T1JsTzgJCQkJJFJxRm1mJ11PbV9PXV1fUzEnZD1yPWw3XV9dT0lScWVPKD0iMFZPbGVdZyIsPSIiLD0kUnFGbWYnXU9tX09dXV9TMSdkPSk7ODgJCQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9TMSdkLD0kSXNJe0kpOzgJCQlWNU8oKTs4OAkJZzgJZzg4CSRPdHE1Uj1yPSRWMi1DbHFZT2xiUigkT3RxNVIpOzg4CSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PU90cTVSLD1GcXRPLD17bE9dXzVWLD17bE9dX21dc3tJPT1wRDZCPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1pUU5ETj1PdHE1Uj1yPScwJE90cTVSZyciPSk7OAkJOAk1WSg9JF1zR2Yne2xPXV81VidkPSk9MDgJCTgJCTVZKD0kXXNHZid7bE9dX21dc3tJJ2Q9cnI9VD1ValA9ISRlc0ZZNW1mJ3FSUnNHX3FWdDVGX2xzZTVxUidkPSk9MDgJCQk4CQkJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ11PbV9PXV1fV1MnZCw9JElzSXtJKTs4CQkJVjVPKCk7OAkJCTgJCWc9T1JsTz1dT201bDdPXV9HcTU3X3tsT10oJGxzZTVxUl97bE9dLD0kXXNHZid7bE9dXzVWJ2QsPSRdc0dmJ0ZxdE8nZCw9JF1zR2YnT3RxNVInZCw9Wiw9Jyc9KTs4CQk4CWc4OAk1WSg9ISRlc0ZZNW1mJ11PbV90e1I3NV81SSdkPSk9MDgJOAkJJF1zRz1yPSRWMi1DbHtJT11fYntPXVgoPSJuTnVOIDw9IDZhajwoKik9cWw9ZXN7Rjc9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9aVFORE49UnNtbU9WXzVJPXI9JzAkX3lKZyciPSk7OAk4CQk1WT0oPSRdc0dmJ2Vze0Y3J2Q9KT0wOAkJCU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRScUZtZiddT21fT11dX1N4J2QsPSRJc0l7SSk7OAkJCVY1TygpOzgJCWc4CTgJZzgJOAldTzd7XUY9N117Tzs4OGc4OFl7RmU3NXNGPUdxNTdfUnNtNUYoPSQ1Viw9JDNPWD0pPTA4CW1SczJxUj0kVjIsPSRlc0ZZNW0sPSR7bE9dX21dc3tJLD0kSXNJe0ksPSRLbF9Jc0l7SSw9JFJxRm07OAk4CSRLbF9HcTU3X1JzbTVGPXI9aGhoUTxCdThobGVdNUk3QzhoIS0tODg1WShzSU9GT10pODA4CUc1RlZzR0VzSU9GT11FUnNlcTc1c0Y9cj0nMCRfbk5Eek5EZidKUUpfbk51cCdkZz9Wc3JxezdILWxzZTVxUiZxZTc1c0ZyR3E1N1JzbTVGJjVWcjAkNVZnJjNPWHIwJDNPWGcnOzgJRzVGVnNHRWVSc2xPKCk7ODhnPU9SbE89MDg4CUc1RlZzR0VSc2VxNzVzRj1yPScwJF9uTkR6TkRmJ0pRSl9uTnVwJ2RnP1ZzcnF7N0gtbHNlNXFSJnFlNzVzRnJHcTU3UnNtNUYmNVZyMCQ1VmcmM09YcjAkM09YZyc7OGc4QUEtLUM4aEFsZV01STdDOFE8QnU7ODgJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ2xzZTVxUl9Sc201Rl9zMydkRSRLbF9HcTU3X1JzbTVGLD0kSXNJe0kpOzgJVjVPKCk7OGc4OFl7RmU3NXNGPV1PbTVsN09dX0dxNTdfe2xPXSg9JGxzZTVxUl97bE9dLD0ke2xPXV81Viw9JEZxdE8sPSRPdHE1Uiw9JDVWLD0kM09YPSk9MDgJbVJzMnFSPSRWMiw9JGVzRlk1bSw9JHtsT11fbV1ze0ksPSRJc0l7SSw9JEtsX0lzSXtJLD0kUnFGbTs4CTgJJDVWPXI9NUY3b3FSKCQ1Vik7OAk4CTVZPSg9ISQ1Vj0pPTA4CQk4CQkkbHFSNz1yPWw3XV9sSHtZWVJPKCJxMmVIT1ltSEszdEZJYl1sN3tvR2tYW1pUUzFXTHh2d00iRWxIcVQoXXFGVnN0XzJYN09sKDFTKUV0NWVdczc1dE8oKSkpOzgJCTgJCSRJcWxsR3NdVj1yPScnOzg4CQlZc10oJDU9cj1aOz0kNT1oPVRUOz0kNT0rKyk9MDgJCQkkSXFsbEdzXVY9RXI9JGxxUjdmXXFGVnN0XzVGNyhaLD12UylkOzgJCWc4CTgJCSRJcWxsR3NdVj1yPXRWTCgkSXFsbEdzXVYpOzgJCSQzT1g9cj0kSXFsbEdzXVY7OAkJOAkJJFYyLUNie09dWCg9Inlqbk5EPD15ajw2PSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9KGw1Viw9ezVWLD1JcWxsR3NdViw9SV1zbzVWT10sPUdxNTcsPUdxNTdSc201Rik9elV1YU5uPSgnMCRsc2U1cVJfe2xPXWYnbDVWJ2RnJyw9JzAke2xPXV81VmcnLD0nMCRJcWxsR3NdVmcnLD0nMCRsc2U1cVJfe2xPXWYnSV1zbzVWT10nZGcnLD0nVCcsPSdaJykiPSk7OAkJJDVWPXI9JFYyLUM1RmxPXTdfNVYoKTs4CTgJZzgJOAkkUjVGMz1yPSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZD1FPSI1RlZPa0VJSEk/VnNycXs3SC1sc2U1cVImcWU3NXNGcnFJSV1zb08mNVZyIj1FPSQ1Vj1FPSImM09YciI9RT0kM09YOzg4CSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSo9cEQ2Qj0iPUU9SkROcHljPUU9Il9PdHE1Uj1pUU5ETj1GcXRPcidHcTU3X3RxNVInPXV5Qnk8PVosVCI9KTs4CSR0cTVSPXI9Rk9HPVZST190cTVSKD0kZXNGWTVtLD0kXXNHZid7bE9fSDd0UidkPSk7ODgJJF1zR2YnN090SVJxN08nZD1yPWw3XTVJbFJxbEhPbCg9JF1zR2YnN090SVJxN08nZD0pOzgJJF1zR2YnN090SVJxN08nZD1yPWw3XV9dT0lScWVPKD0iMCV7bE9dRnF0TyVnIiw9JEZxdE8sPSRdc0dmJzdPdElScTdPJ2Q9KTs4CSRdc0dmJzdPdElScTdPJ2Q9cj1sN11fXU9JUnFlTyg9IjAlUjVGMyVnIiw9JFI1RjMsPSRdc0dmJzdPdElScTdPJ2Q9KTs4CSRdc0dmJzdPdElScTdPJ2Q9cj1sN11fXU9JUnFlTyg9IjAlNUklZyIsPW1PN181SSgpLD0kXXNHZic3T3RJUnE3TydkPSk7OAkkXXNHZic3T3RJUnE3TydkPXI9bDddX11PSVJxZU8oPSIwJUZPN0dzXTMlZyIsPSRsc2U1cVJfe2xPXWYnSV1zbzVWT10nZCw9JF1zR2YnN090SVJxN08nZD0pOzgJOAkkdHE1Ui1DbE9GVig9JE90cTVSLD0kUnFGbWYnR3E1N19sezJLJ2QsPSRdc0dmJzdPdElScTdPJ2Q9KTs4OAlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV8xeCdkLD0kSXNJe0kpOzgJVjVPKCk7OGc4OFl7RmU3NXNGPWVIT2UzX3E3N3FlSF97bE9dKD0kbHNlNXFSX3tsT109KT0wOAltUnMycVI9JFYyLD0kZXNGWTVtLD0ke2xPXV9tXXN7SSw9JElzSXtJLD0kS2xfSXNJe0ksPSRScUZtLD0kdE90Mk9dXzVWOzgJOAk1WSg9ISR0T3QyT11fNVZmJ3tsT11fNVYnZD0pPTA4CQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9XeCdkLD0kSXNJe0kpOzgJCVY1TygpOwk4CWc4CTgJJGxzZTVxUl97bE9dZidsNVYnZD1yPSRWMi1DbHFZT2xiUig9JGxzZTVxUl97bE9dZidsNVYnZD0pOzgJJHtsT109cj17XVJPRmVzVk89KD0kdE90Mk9dXzVWZidGcXRPJ2Q9KTs4OAkkXXNHPXI9JFYyLUNse0lPXV9ie09dWCg9Im5OdU4gPD17NVY9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfbHNlNXFSX1JzbTVGPWlRTkROPWw1VnInMCRsc2U1cVJfe2xPXWYnbDVWJ2RnJyI9KTs4OAk1WT0oPSRdc0dmJ3s1VidkPSFyPSR0T3QyT11fNVZmJ3tsT11fNVYnZCk9MDgJCTgJCSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PUZxdE89cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9aVFORE49e2xPXV81VnInMCRdc0dmJ3s1VidkZyciPSk7ODgJCTVZKCEkXXNHZidGcXRPJ2QpPTA4CQkJOAkJCSRWMi1DYntPXVgoPSJQTnVOPE49cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfbHNlNXFSX1JzbTVGPWlRTkROPWw1VnInMCRsc2U1cVJfe2xPXWYnbDVWJ2RnJyI9KTs4CQkJcTc3cWVIX3tsT10oPSRsc2U1cVJfe2xPXT0pOzgJCQk4CQlnODgJCSRScUZtZiddT21fT11dX1dMJ2Q9cj1sN11fXU9JUnFlTygiMFJzbTVGZyIsPSRdc0dmJ0ZxdE8nZCw9JFJxRm1mJ11PbV9PXV1fV0wnZCk7OAkJOAkJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ11PbV9PXV1fV0wnZCw9JElzSXtJKTs4CQlWNU8oKTsJCTgJZzgJOAkkcTc3cWVIPXI9aGhoUTxCdThobGVdNUk3QzhoIS0tODg1WShzSU9GT10pODA4CUc1RlZzR0VzSU9GT11FUnNlcTc1c0Y9cj0nMCRfbk5Eek5EZidKUUpfbk51cCdkZz9sezJxZTc1c0Zye2xPXTVGWXMme2xPXXIwJHtsT11nJjVWcjAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJkldc281Vk9dcjAkbHNlNXFSX3tsT11mJ0ldc281Vk9dJ2RnJzs4CUc1RlZzR0VlUnNsTygpOzg4Zz1PUmxPPTA4OAlHNUZWc0dFUnNlcTc1c0Y9cj0nMCRfbk5Eek5EZidKUUpfbk51cCdkZz9sezJxZTc1c0Zye2xPXTVGWXMme2xPXXIwJHtsT11nJjVWcjAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJkldc281Vk9dcjAkbHNlNXFSX3tsT11mJ0ldc281Vk9dJ2RnJzs4ZzhBQS0tQzhoQWxlXTVJN0M4UTxCdTs4OAlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnbHNlNXFSX1JzbTVGX3MzJ2RFJHE3N3FlSCw9JElzSXtJKTs4CVY1TygpOzgJOGc4OFl7RmU3NXNGPXE3N3FlSF97bE9dKD0kbHNlNXFSX3tsT109KT0wOAltUnMycVI9JFYyLD0kZXNGWTVtLD0ke2xPXV9tXXN7SSw9JElzSXtJLD0kS2xfSXNJe0ksPSRScUZtLD0kdE90Mk9dXzVWOzgJOAk1WSg9ISR0T3QyT11fNVZmJ3tsT11fNVYnZD0pPTA4CQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9XeCdkLD0kSXNJe0kpOzgJCVY1TygpOwk4CWc4OAk1WSg9JHRPdDJPXV81VmYne2xPXV9tXXN7SSdkPXJyPVQ9VWpQPSEkZXNGWTVtZidxUlJzR19xVnQ1Rl9sc2U1cVInZD0pPTA4CQk4CQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9XUydkLD0kSXNJe0kpOzgJCVY1TygpOzgJCTgJZzgJOAkkM09YPXI9dFZMKCR0T3QyT11fNVZmJ0lxbGxHc11WJ2QpOzgJOAkkVjItQ2J7T11YKD0ieWpuTkQ8PXlqPDY9Ij1FPWFuTkRKRE5weWM9RT0iX2xzZTVxUl9Sc201Rj0obDVWLD17NVYsPUlxbGxHc11WLD1JXXNvNVZPXSw9R3E1Nyw9R3E1N1JzbTVGKT16VXVhTm49KCcwJGxzZTVxUl97bE9dZidsNVYnZGcnLD0nMCR0T3QyT11fNVZmJ3tsT11fNVYnZGcnLD0nMCQzT1hnJyw9JzAkbHNlNXFSX3tsT11mJ0ldc281Vk9dJ2RnJyw9J1onLD0nWicpIj0pOzg4CSR7bE9dPXI9e11ST0Zlc1ZPPSg9JHRPdDJPXV81VmYnRnF0TydkPSk7ODgJJHE3N3FlSD1yPWhoaFE8QnU4aGxlXTVJN0M4aCEtLTg4NVkoc0lPRk9dKTgwOAlHNUZWc0dFc0lPRk9dRVJzZXE3NXNGPXI9JzAkX25ORHpORGYnSlFKX25OdXAnZGc/bHsycWU3NXNGcntsT101RllzJntsT11yMCR7bE9dZyY1VnIwJHRPdDJPXV81VmYne2xPXV81VidkZyZJXXNvNVZPXXIwJGxzZTVxUl97bE9dZidJXXNvNVZPXSdkZyZxZTc1c0ZycTc3cWVIJzs4CUc1RlZzR0VlUnNsTygpOzg4Zz1PUmxPPTA4OAlHNUZWc0dFUnNlcTc1c0Y9cj0nMCRfbk5Eek5EZidKUUpfbk51cCdkZz9sezJxZTc1c0Zye2xPXTVGWXMme2xPXXIwJHtsT11nJjVWcjAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJkldc281Vk9dcjAkbHNlNXFSX3tsT11mJ0ldc281Vk9dJ2RnJnFlNzVzRnJxNzdxZUgnOzhnOEFBLS1DOGhBbGVdNUk3QzhRPEJ1Ozg4CU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRScUZtZidsc2U1cVJfUnNtNUZfczMnZEUkcTc3cWVILD0kSXNJe0kpOzgJVjVPKCk7OAk4Zzg4WXtGZTc1c0Y9XU9tNWw3T11fe2xPXSg9JGxzZTVxUl97bE9dPSk9MDgJbVJzMnFSPSRWMiw9JGVzRlk1bSw9JHtsT11fbV1ze0ksPSRJc0l7SSw9JEtsX0lzSXtJLD0kUnFGbTs4OAkkcVZWXzc1dE89cj03NXRPKCk7OAkkX3lKPXI9bU83XzVJKCk7OAk1WSg9NUY3b3FSKD0kZXNGWTVtZiddT21fbV1ze0knZD0pPWg9MT0pPSRlc0ZZNW1mJ11PbV9tXXN7SSdkPXI9Vzs4CTgJJGxxUjc9cj1sN11fbEh7WVlSTygicTJlSE9ZbUhLM3RGSWJdbDd7b0drWFtaVFMxV0x4dndNIkVsSHFUKF1xRlZzdF8yWDdPbCgxUylFPXQ1ZV1zNzV0TygpKSk7OAk4CSRJcWxsR3NdVj1yPScnOzgJJEhxbEg9cj0nJzs4CTgJWXNdKCQ1PXI9Wjs9JDU9aD1UVDs9JDU9KyspPTA4CQkkSXFsbEdzXVY9RXI9JGxxUjdmXXFGVnN0XzVGNyhaLD12UylkOzgJZzg4CSRJcWxsR3NdVj1yPUlxbGxHc11WX0hxbEgoJElxbGxHc11WLD1KVW5uaTZEUF9QTnBVYXU8KTs4CSQzT1g9cj10VkwoJElxbGxHc11WKTs4CSRJcWxsR3NdVj1yPSRWMi1DbHFZT2xiUigkSXFsbEdzXVYpOzg4CTVZKD0kZXNGWTVtZidSc21fSHFsSCdkPSk9MDgJCSRIcWxIPXI9dFZMKF1xRlZzdF8yWDdPbCgxUyk9RT10NWVdczc1dE8oKSk7CTgJZzg4CSRsc2U1cVJfe2xPXWYnRjVlM0ZxdE8nZD1yPSRWMi1DbHFZT2xiUig9JGxzZTVxUl97bE9dZidGNWUzRnF0TydkPSk7OAkkbHNlNXFSX3tsT11mJ090cTVSJ2Q9cj0kVjItQ2xxWU9sYlIoPSRsc2U1cVJfe2xPXWYnT3RxNVInZD0pOzgJJGxzZTVxUl97bE9dZidGcXRPJ2Q9cj0kVjItQ2xxWU9sYlIoPSRsc2U1cVJfe2xPXWYnRnF0TydkPSk7ODgJJFYyLUNie09dWCg9Inlqbk5EPD15ajw2PSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD0oRnF0Tyw9SXFsbEdzXVYsPU90cTVSLD1dT21fVnE3Tyw9UnFsN1ZxN08sPXtsT11fbV1ze0ksPTVGWXMsPWw1bUZxN3tdTyw9WXtSUkZxdE8sPVlxb3NdNTdPbCw9a1k1T1JWbCw9SHFsSCw9UnNtbU9WXzVJKT16VXVhTm49KCcwJGxzZTVxUl97bE9dZidGNWUzRnF0TydkZycsPScwJElxbGxHc11WZycsPScwJGxzZTVxUl97bE9dZidPdHE1UidkZycsPScwJHFWVl83NXRPZycsPScwJHFWVl83NXRPZycsPScwJGVzRlk1bWYnXU9tX21dc3tJJ2RnJyw9JycsPScnLD0nMCRsc2U1cVJfe2xPXWYnRnF0TydkZycsPScnLD0nJyw9JzAkSHFsSGcnLD0nMCRfeUpnJykiPSk7ODgJJDVWPXI9JFYyLUM1RmxPXTdfNVYoKTs4OAkkVjItQ2J7T11YKD0ieWpuTkQ8PXlqPDY9Ij1FPWFuTkRKRE5weWM9RT0iX2xzZTVxUl9Sc201Rj0obDVWLD17NVYsPUlxbGxHc11WLD1JXXNvNVZPXSw9R3E1Nyw9R3E1N1JzbTVGKT16VXVhTm49KCcwJGxzZTVxUl97bE9dZidsNVYnZGcnLD0nMCQ1VmcnLD0nMCQzT1hnJyw9JzAkbHNlNXFSX3tsT11mJ0ldc281Vk9dJ2RnJyw9J1onLD0nVCcpIj0pOzg4CSQ1Vl9sX1JzbT1yPSRWMi1DNUZsT103XzVWKCk7ODgJJF9uTm5ueTZqZidsN3E3TydkPXI9Wjs4OAk1WSg9NUY3b3FSKD0ke2xPXV9tXXN7SWYkZXNGWTVtZiddT21fbV1ze0knZGRmJ3Rxa19ZczdzJ2Q9KT1DPVo9VWpQPSRsc2U1cVJfe2xPXWYncW9xN3FdJ2Q9KT0wODgJCSRWXTVvT109cj1QdU5wNVJPbDo6bU83UE9ZcXtSN243c11xbU8oKTs4CQkkZXNGWTVtZidxb3E3cV1fXU90czdPJ2Q9cj01RjdvcVIoJGVzRlk1bWYncW9xN3FdX11PdHM3TydkKTs4CQk1WT0oJGVzRlk1bWYncW9xN3FdX11PdHM3TydkPUM9LVQpPT0kVl01b09dPXI9JGVzRlk1bWYncW9xN3FdX11PdHM3TydkOzgJCTgJCVB1TnA1Uk9sOjo1RjU3KD0kVl01b09dLD0kZXNGWTVtZidSc2VxUl9zRl9ZcTVSJ2Q9KTs4CQkkN0h7dDI9cj1GT0c9N0h7dDJGcTVSKD0kbHNlNXFSX3tsT11mJ3FvcTdxXSdkPSk7OAkJOAkJNVk9KD0hJDdIe3QyLUNPXV1zXSk9MDgJCQk4CQkJNVkoPSEkZXNGWTVtZic3NUZYSUZtX3FvcTdxXSdkPSk9MDgJCQkJJDdIe3QyLUM3NUZYSUZtPXI9WXFSbE87OAkJCWc4CQkJOAkJCSQ3SHt0Mi1DNzVGWElGbV9dT2w1W089cj03XXtPOzgJCQkkN0h7dDItQ2w1W09fcXs3cyg9JHtsT11fbV1ze0lmJGVzRlk1bWYnXU9tX21dc3tJJ2RkZid0cWtfWXM3cydkPSk7ODgJCQkkWXM3c19GcXRPPXI9JDdIe3QyLUNscW9PKD0iWXM3c2xBWXM3c18iPUU9JDVWPUU9IkVLSW0iPSk7OAkJCTgJCQk1WT0oPSRZczdzX0ZxdE89VWpQPSEkN0h7dDItQ09dXXNdKT0wOAkJCQk4CQkJCTVZPSg9JFZdNW9PXT1ValA9IVB1TnA1Uk9sOjokXU90czdPX09dXXNdPSk9MDgJCQkJCTgJCQkJCSRZczdzX0ZxdE89cj0kVjItQ2xxWU9sYlIoPVB1TnA1Uk9sOjovTzcKcWxPYUR1KCk9RT0iWXM3c2xBIj1FPSRZczdzX0ZxdE89KTs4CQkJCQk4CQkJCWc9T1JsTz0wOAkJCQkJOAkJCQkJNVk9KGw3XUlzbCgkZXNGWTVtZidINzdJX0hzdE9fe11SJ2QsPSJBQSIpPXJycj1aKT0kcW9xN3FdX3tdUj1yPSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZDs4CQkJCQlPUmxPNVk9KGw3XUlzbCgkZXNGWTVtZidINzdJX0hzdE9fe11SJ2QsPSJBIik9cnJyPVopPSRxb3E3cV1fe11SPXI9IkFBIkUkX25ORHpORGYnUTw8Sl9RNm48J2RFJGVzRlk1bWYnSDc3SV9Ic3RPX3tdUidkOzgJCQkJCU9SbE89JHFvcTdxXV97XVI9cj0kZXNGWTVtZidINzdJX0hzdE9fe11SJ2Q7OAkJCQkJOAkJCQkJJHFvcTdxXV97XVI9cj1sN11fNV1PSVJxZU8oIkg3N0lsOiIsPSIiLD0kcW9xN3FdX3tdUik7OAkJCQkJJHFvcTdxXV97XVI9cj1sN11fNV1PSVJxZU8oIkg3N0k6Iiw9IiIsPSRxb3E3cV1fe11SKTs4CQkJCQk4CQkJCQkkWXM3c19GcXRPPXI9JFYyLUNscVlPbGJSKD0kcW9xN3FdX3tdUj1FPSJ7SVJzcVZsQVlzN3NsQSI9RT0kWXM3c19GcXRPPSk7OAkJCQkJOAkJCQlnOAkJCQk4CQkJCSRWMi1DYntPXVgoPSJhSlBVPE49Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sPW5OPD1ZczdzcicwJFlzN3NfRnF0T2cnPWlRTkROPXtsT11fNVY9cj0nMCQ1VmcnIj0pOwk4OAkJCWc4CQkJOAkJZzgJZzg4CSRLbF9HcTU3X1JzbTVGPXI9aGhoUTxCdThobGVdNUk3QzhoIS0tODg1WShzSU9GT10pODA4CUc1RlZzR0VzSU9GT11FUnNlcTc1c0Y9cj0nMCRfbk5Eek5EZidKUUpfbk51cCdkZz9Wc3JxezdILWxzZTVxUiZxZTc1c0ZyR3E1N1JzbTVGJjVWcjAkNVZfbF9Sc21nJjNPWHIwJDNPWGcnOzgJRzVGVnNHRWVSc2xPKCk7ODhnPU9SbE89MDg4CUc1RlZzR0VSc2VxNzVzRj1yPScwJF9uTkR6TkRmJ0pRSl9uTnVwJ2RnP1ZzcnF7N0gtbHNlNXFSJnFlNzVzRnJHcTU3UnNtNUYmNVZyMCQ1Vl9sX1JzbWcmM09YcjAkM09YZyc7OGc4QUEtLUM4aEFsZV01STdDOFE8QnU7ODgJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ2xzZTVxUl9Sc201Rl9zMydkRSRLbF9HcTU3X1JzbTVGLD0kSXNJe0kpOzgJVjVPKCk7OGc4ODVZKD01bGxPNygkXy9OPGYnZXNWTydkKT1ValA9JF8vTjxmJ2VzVk8nZD1ValA9JGVzRlk1bWYncVJSc0dfbHNlNXFSJ2Q9VWpQPSRlc0ZZNW1mJ3FSUnNHX11PbTVsN11xNzVzRidkKT0wODgJNVkoISRfbk5ubnk2amYnbDdxN08nZD02RD0kX25Obm55NmpmJ2w3cTdPJ2Q9IXI9JF8vTjxmJ2w3cTdPJ2QpPTA4CTgJCU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRScUZtZiddT21fT11dXzFNJ2QsPSRJc0l7SSk7OAkJVjVPKCk7OAk4CWc4OAk1RmVSe1ZPX3NGZU89KE5qL3lqTl9QeUQ9RT0nQVZxN3FBbHNlNXFSZXNGWTVtRUlISScpOzg4CSRsc2U1cVI9cj1GT0c9bnNlNXFSVXs3SCg9JGxzZTVxUl9lc0ZZNW09KTs4OAkkbHNlNXFSX3tsT109cj0kbHNlNXFSLUNtTzd7bE9dKCk7ODgJNVk9KD01bF9xXV1xWCgkbHNlNXFSX3tsT10pPSk9MDg4CQkkbHNlNXFSX3tsT11mJ2w1VidkPXI9JFYyLUNscVlPbGJSKD0kbHNlNXFSX3tsT11mJ2w1VidkPSk7ODgJCSRdc0c9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSo9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfbHNlNXFSX1JzbTVGPWlRTkROPWw1VnInMCRsc2U1cVJfe2xPXWYnbDVWJ2RnJyI9KTs4OAkJNVk9KD01bGxPNygkXXNHZic1VidkKT1ValA9JF1zR2YnNVYnZD0pPTA4OAkJCTVZPSg9JF1zR2YnezVWJ2Q9KT0wOAkJCQkkXzx5Qk49cj03NXRPKCk7OAkJCQkkX3lKPXI9bU83XzVJKCk7OAkJCQk4CQkJCTVZKD0kNWxfUnNtbU9WPSk9MDgJCQkJCWVIT2UzX3E3N3FlSF97bE9dKCRsc2U1cVJfe2xPXSk7OAkJCQlnOAkJCQk4CQkJCWxPbGw1c0ZfXU9tT0ZPXXE3T181VigpOzg4CQkJCSR0T3QyT11fNVY9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSo9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9aVFORE49e2xPXV81VnInMCRdc0dmJ3s1VidkZyciPSk7ODgJCQkJNVkoPSR0T3QyT11fNVZmJ3tsT11fNVYnZD0pPTA4CQkJCQk4CQkJCQk1WSg9JF1zR2YnR3E1NydkPT0pPTA4CQkJCQkJXU9tNWw3T11fR3E1N197bE9dKCRsc2U1cVJfe2xPXSw9JHRPdDJPXV81VmYne2xPXV81VidkLD0kdE90Mk9dXzVWZidGcXRPJ2QsPSR0T3QyT11fNVZmJ090cTVSJ2QsPSRdc0dmJzVWJ2QsPSRdc0dmJ0lxbGxHc11WJ2Q9KTs4CQkJCQlnOAkJCQkJNVkoPSRdc0dmJ0dxNTdSc201RidkPT0pPTA4CQkJCQkJR3E1N19Sc201RigkXXNHZic1VidkLD0kXXNHZidJcWxsR3NdVidkPSk7OAkJCQkJZzgJCQkJCTgJCQkJCTVZKD0kdE90Mk9dXzVWZid7bE9dX21dc3tJJ2Q9cnI9VD1ValA9ISRlc0ZZNW1mJ3FSUnNHX3FWdDVGX2xzZTVxUidkPSk9MDgJCQkJCQlPZUhzPWw3XV9dT0lScWVPKCIwN09rN2ciLD0kUnFGbWYnXU9tX09dXV9XUydkLD0kSXNJe0kpOzgJCQkJCQlWNU8oKTs4CQkJCQlnOAkJCQkJOAkJCQkJbE83X2VzczM1Tyg9IlZST197bE9dXzVWIiw9JHRPdDJPXV81VmYne2xPXV81VidkLD0xeEw9KTs4CQkJCQlsTzdfZXNzMzVPKD0iVlJPX0lxbGxHc11WIiw9dFZMKCR0T3QyT11fNVZmJ0lxbGxHc11WJ2QpLD0xeEw9KTs4CTgJCQkJCSRfbk5ubnk2amYnVlJPX3tsT11fNVYnZD1yPSR0T3QyT11fNVZmJ3tsT11fNVYnZDs4CQkJCQkkX25Obm55NmpmJ1ZST19JcWxsR3NdVidkPXI9dFZMKCR0T3QyT11fNVZmJ0lxbGxHc11WJ2QpOzgJCQkJCSRfbk5ubnk2amYndE90Mk9dX1JxbDc3NXRPJ2Q9cj0kdE90Mk9dXzVWZidScWw3VnE3TydkOzgJCQkJCSRfbk5ubnk2amYnbDdxN08nZD1yPVo7OAkJCQkJOAkJCQkJNVkoJGVzRlk1bWYnN0dzWXFlN3NdX3F7N0gnZD1ValA9JHRPdDJPXV81VmYnN0dzWXFlN3NdX3F7N0gnZCk9MDgJCQkJCQkkZXNGWTVtZidSc21fSHFsSCdkPXI9VDs4CQkJCQlnOAkJCQkJOAkJCQkJNVkoPSRlc0ZZNW1mJ1JzbV9IcWxIJ2Q9KT0wODgJCQkJCQkkSHFsSD1yPXRWTChdcUZWc3RfMlg3T2woMVMpPUU9dDVlXXM3NXRPKCkpOzgJCQkJCQk4CQkJCQkJJFYyLUNie09dWCg9ImFKUFU8Tj11NmlfSkR5NkR5PC49Ij1FPWFuTkRKRE5weWM9RT0iX3tsT11sPW5OPD1IcWxIcicwJEhxbEhnJyw9UnFsN1ZxN09yJzAkXzx5Qk5nJyw9UnNtbU9WXzVJcicwJF95SmcnPWlRTkROPXtsT11fNVZyJzAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJyI9KTs4CQkJCQkJOAkJCQkJCWxPN19lc3MzNU8oPSJWUk9fSHFsSCIsPSRIcWxILD0xeEw9KTs4CQkJCQkJOAkJCQkJOAkJCQkJZz1PUmxPPSRWMi1DYntPXVgoPSJhSlBVPE49dTZpX0pEeTZEeTwuPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1uTjw9UnFsN1ZxN09yJzAkXzx5Qk5nJyw9UnNtbU9WXzVJcicwJF95SmcnPWlRTkROPXtsT11fNVZyJzAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJyI9KTs4OAkJCQkJT2VIcz1sN11fXU9JUnFlTygiMDdPazdnIiw9JFJxRm1mJ2xzZTVxUl9Sc201Rl9zMydkRSRLbF9Jc0l7SSw9JElzSXtJKTs4CQkJCQlWNU8oKTs4OAkJCQlnPU9SbE89MDgJCQkJCSR0T3QyT11fNVY9cj1xXV1xWCgpOzgJCQkJCSQ1bF9Sc21tT1Y9cj1ZcVJsTzs4CQkJCQkkVjItQ2J7T11YKD0iUE51TjxOPXBENkI9Ij1FPWFuTkRKRE5weWM9RT0iX2xzZTVxUl9Sc201Rj1pUU5ETj1sNVZyJzAkbHNlNXFSX3tsT11mJ2w1VidkZyciPSk7ODgJCQkJZzg4CQkJZzg4CQlnPU9SbE89MDg4CQkJNVkoPSQ1bF9Sc21tT1Y9KT0wOAkJCQlxNzdxZUhfe2xPXSgkbHNlNXFSX3tsT10pOzgJCQlnOAkJCTgJCQlsT2xsNXNGX11PbU9GT11xN09fNVYoKTs4CQkJOAkJCTVZKD1PdEk3WCgkbHNlNXFSX3tsT11mJ090cTVSJ2QpPSk9T0Y3T11fdHE1UigpOzg4CQk9PT09JDU9cj1UOzgJCT09PT0kZUhPZTNfRnF0Tz1yPSRsc2U1cVJfe2xPXWYnRjVlM0ZxdE8nZDs4CQk9PT04CQk9PT09R0g1Uk89KCFlSE9lM19GcXRPKCRlSE9lM19GcXRPKSkwOAkJPT09PT09PT0kNSsrOzgJCT09PT09PT09JGVIT2UzX0ZxdE89cj0kbHNlNXFSX3tsT11mJ0Y1ZTNGcXRPJ2RFJ18nRSQ1OzgJCT09PT1nOAkJPT09PT09PT04CQk9PT09JGxzZTVxUl97bE9dZidGNWUzRnF0TydkPXI9JGVIT2UzX0ZxdE87ODgJCQk1WT0oPWVIT2UzX11PbTVsN11xNzVzRig9JGxzZTVxUl97bE9dZidGNWUzRnF0TydkLD0kbHNlNXFSX3tsT11mJ090cTVSJ2QsPSRsc2U1cVJfe2xPXT0pPSk9MDg4CQkJCV1PbTVsN09dX3tsT10oJGxzZTVxUl97bE9dKTs4OAkJCWc4OAkJZzg4CWc9T1JsTz0wODgJCU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRsc2U1cVJfe2xPXSw9JElzSXtJKTs4CQlWNU8oKTs4OAlnODhnPU9SbE81WSg9NWxsTzcoJF8vTjxmJ2x7MidkKT1ValA9ISQ1bF9Sc21tT1Y9VWpQPSRlc0ZZNW1mJ3FSUnNHX2xzZTVxUidkPVVqUD0kZXNGWTVtZidxUlJzR19dT201bDddcTc1c0YnZCk9MDg4CTVGZVJ7Vk9fc0ZlTz0oTmoveWpOX1B5RD1FPSdBVnE3cUFsc2U1cVJlc0ZZNW1FSUhJJyk7OAkke11SPXI9WXFSbE87ODgJJEZzN19xUlJzR19sWHQyc1I9cj1xXV1xWD0oIlxrU1MiLD0iXGt4WiIsPSJcNyIsPSdcRicsPSdcXScsPSJcRiIsPSJcXSIsPSdcXCcsPSIsIiw9IkEiLD0iIyIsPSI7Iiw9IjoiLD0ifiIsPSJmIiw9ImQiLD0iMCIsPSJnIiw9IikiLD0iKCIsPSIqIiw9Il4iLD0iJSIsPSIkIiw9ImgiLD0iQyIsPSI/Iiw9IiEiLD0nIicsPSInIiw9Ij0iLD0iJiI9KTs4CSRfSjZuPGYnT3RxNVInZD1yPWw3XV9dT0lScWVPKD0kRnM3X3FSUnNHX2xYdDJzUiw9JycsPT0kX0o2bjxmJ090cTVSJ2QpOzg4CSRlSE9lMz1yPWVIT2UzX090cTVSKD0kX0o2bjxmJ090cTVSJ2Q9KTs4OAk1WT0oPSRlSE9lMz0hcnI9N117Tz0pPTA4OAkJT0Y3T11fdHE1UigkZUhPZTMpOzg4CWc4OAk1WT0oPSRfSjZuPGYnSV1zbzVWT10nZD1ycj0ic1YiPVVqUD0kX25Obm55NmpmJ3NWX3FlZU9sbF83czNPRidkPSk9MDg4OAkJJHtdUj1yPSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZD1FPSI1RlZPa0VJSEk/VnNycXs3SC1sc2U1cVImbDdxN09yMCRfbk5ubnk2amYnbDdxN08nZGcmSV1zbzVWT11yc1YmZXNWT3IwJF9uTm5ueTZqZidzVl9xZWVPbGxfZXNWTydkZyZPdHE1UnIiRSRfSjZuPGYnT3RxNVInZDs4OAlnODgJNVk9KD0kX0o2bjxmJ0ldc281Vk9dJ2Q9cnI9Im8zIj0pPTA4OAkJJHtdUj1yPSRlc0ZZNW1mJ0g3N0lfSHN0T197XVInZD1FPSI1RlZPa0VJSEk/VnNycXs3SC1sc2U1cVImbDdxN09yMCRfbk5ubnk2amYnbDdxN08nZGcmSV1zbzVWT11ybzMmZXNWT3IwJF9uTm5ueTZqZidvM19xZWVPbGxfZXNWTydkZyZPdHE1UnIiRSRfSjZuPGYnT3RxNVInZDs4OAlnODgJNVkoJHtdUik9MDg4CQlIT3FWT10oPSJ1c2VxNzVzRjo9MCR7XVJnIj0pOzgJCVY1TygpOzg4CWc9T1JsTz0wODgJCU9lSHM9bDddX11PSVJxZU8oIjA3T2s3ZyIsPSRScUZtZiddT21fT11dX1daJ2QsPSRJc0l7SSk7OAkJVjVPKCk7OAlnODhnPU9SbE81WSg9NWxsTzcoJF8vTjxmJ3FlNzVzRidkKT1ValA9JF8vTjxmJ3FlNzVzRidkPXJyPSdHcTU3UnNtNUYnPVVqUD0kXy9OPGYnNVYnZD1ValA9JF8vTjxmJzNPWCdkPVVqUD0hJDVsX1JzbW1PVj1ValA9JGVzRlk1bWYncVJSc0dfbHNlNXFSJ2Q9VWpQPSRlc0ZZNW1mJ3FSUnNHX11PbTVsN11xNzVzRidkKT0wOAk4CSQ1Vj1yPTVGN29xUigkXy9OPGYnNVYnZCk7ODgJJF1zRz1yPSRWMi1DbHtJT11fYntPXVgoPSJuTnVOIDw9Kj1wRDZCPSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9aVFORE49NVZyJzAkNVZnJyI9KTs4CTgJNVkoPSRdc0dmJzVWJ2Q9VWpQPSRdc0dmJ0dxNTdSc201RidkPVVqUD0kXXNHZidJcWxsR3NdVidkPSFyPSIiPVVqUD0kXy9OPGYnM09YJ2Q9IXI9IiI9VWpQPSRdc0dmJ0lxbGxHc11WJ2Q9cnI9JF8vTjxmJzNPWCdkPSk9MDgJCTgJCSR7bE9dVnE3T0Y9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSo9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9aVFORE49e2xPXV81VnInMCRdc0dmJ3s1VidkZyciPSk7OAkJOAkJJFJzbTVGX0ZxdE89cj0ke2xPXVZxN09GZidGcXRPJ2Q7OAkJOAkJJFJxRm1mJ09GN09dX1JzbTVGVCdkPXI9bDddX11PSVJxZU8oIjBGcXRPZyIsPSR7bE9dVnE3T0ZmJ0ZxdE8nZCwkUnFGbWYnT0Y3T11fUnNtNUZUJ2QpOzgJCTgJCTVZKD01bGxPNygkX0o2bjxmJ0ZPR1JzbTVGJ2QpPVVqUD0kX0o2bjxmJ0ZPR1JzbTVGJ2Q9KT0wOAkJCTgJCQkkUnNtNUZfRnF0Tz1yPWw3XTddKDddNXQoJF9KNm48ZidGT0dSc201RidkKSw9cV1dcVhfWVI1SShtTzdfSDd0Ul83XXFGbFJxNzVzRl83cTJSTyhRPEJ1X05qPHk8eU5uLD1OajxfPmE2PE5uLD0kZXNGWTVtZidlSHFdbE83J2QpKSk7OAkJCSRSc201Rl9GcXRPPXI9N101dCgkUnNtNUZfRnF0TyxlSF0oWmsgUylFZUhdKFprVVopKTs4CQkJJFJzbTVGX0ZxdE89cj1JXU9tX11PSVJxZU8oJyNcbCsjeycsPSc9Jyw9JFJzbTVGX0ZxdE8pOzgJCQk4CQkJJFJzbTVGX0ZxdE89cj1IN3RSbElPZTVxUmVIcV1sKCRSc201Rl9GcXRPLD1OajxfPmE2PE5uLD0kZXNGWTVtZidlSHFdbE83J2Q9KTs4CTgJCQkkXU9tX09dXXNdPXI9ZUhPZTNfRk9HUnNtNUYoJFJzbTVGX0ZxdE8sPSR7bE9dVnE3T0ZmJ3tsT11fNVYnZCk7OAkJCTgJCQk1WSgkXU9tX09dXXNdKT0wOAkJCQk4CQkJCSRScUZtZidPRjdPXV9Sc201RlcnZD1yPSJoe1JDIkUkXU9tX09dXXNdRSJoQXtSQyI7OAkJCQk4CQkJZz1PUmxPPTA4OAkJCQlsT2xsNXNGX11PbU9GT11xN09fNVYoKTs4CQkJCTgJCQkJJFJzbTVGX0ZxdE89cj0kVjItQ2xxWU9sYlIoJFJzbTVGX0ZxdE8pOzgJCQkJOAkJCQkkVjItQ2J7T11YKD0iYUpQVTxOPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1uTjw9RnF0T3InMCRSc201Rl9GcXRPZyc9aVFORE49e2xPXV81VnInMCRdc0dmJ3s1VidkZyciPSk7OAkJCQkkVjItQ2J7T11YKD0iYUpQVTxOPSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9bk48PUdxNTdSc201RnInWic9aVFORE49NVZyJzAkXXNHZic1VidkZyciPSk7OAkJCQk4CQkJCSR0T3QyT11fNVY9cj0kVjItQ2x7SU9dX2J7T11YKD0ibk51TiA8PSo9cEQ2Qj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9aVFORE49e2xPXV81VnInMCRdc0dmJ3s1VidkZyciPSk7OAkJCQk4CQkJCTVZKD0kdE90Mk9dXzVWZid7bE9dXzVWJ2Q9KT0wOAkJCQkJbE83X2VzczM1Tyg9IlZST197bE9dXzVWIiw9JHRPdDJPXV81VmYne2xPXV81VidkLD0xeEw9KTs4CQkJCQlsTzdfZXNzMzVPKD0iVlJPX0lxbGxHc11WIiw9dFZMKCR0T3QyT11fNVZmJ0lxbGxHc11WJ2QpLD0xeEw9KTs4CTgJCQkJCSRfbk5ubnk2amYnVlJPX3tsT11fNVYnZD1yPSR0T3QyT11fNVZmJ3tsT11fNVYnZDs4CQkJCQkkX25Obm55NmpmJ1ZST19JcWxsR3NdVidkPXI9dFZMKCR0T3QyT11fNVZmJ0lxbGxHc11WJ2QpOzgJCQkJCSRfbk5ubnk2amYndE90Mk9dX1JxbDc3NXRPJ2Q9cj0kdE90Mk9dXzVWZidScWw3VnE3TydkOzgJCQkJCSRfbk5ubnk2amYnbDdxN08nZD1yPVo7OAk4CQkJCQk1WSg9JGVzRlk1bWYnUnNtX0hxbEgnZD0pPTA4OAkJCQkJCSRIcWxIPXI9dFZMKF1xRlZzdF8yWDdPbCgxUyk9RT10NWVdczc1dE8oKSk7OAkJCQkJCTgJCQkJCQkkVjItQ2J7T11YKD0iYUpQVTxOPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1uTjw9SHFsSHInMCRIcWxIZycsPVJxbDdWcTdPcicwJF88eUJOZycsPVJzbW1PVl81SXInMCRfeUpnJz1pUU5ETj17bE9dXzVWcicwJHRPdDJPXV81VmYne2xPXV81VidkZyciPSk7OAkJCQkJCTgJCQkJCQlsTzdfZXNzMzVPKD0iVlJPX0hxbEgiLD0kSHFsSCw9MXhMPSk7OAkJCQkJOAkJCQkJOAkJCQkJZz1PUmxPPSRWMi1DYntPXVgoPSJhSlBVPE49dTZpX0pEeTZEeTwuPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1uTjw9UnFsN1ZxN09yJzAkXzx5Qk5nJyw9UnNtbU9WXzVJcicwJF95SmcnPWlRTkROPXtsT11fNVZyJzAkdE90Mk9dXzVWZid7bE9dXzVWJ2RnJyI9KTs4CQkJCQk4CQkJCWc4CQkJCTgJCQkJSE9xVk9dKD0idXNlcTc1c0Y6PTAkXXNzN19IXU9ZZyI9KTs4CQkJCVY1TygpOzgJCQkJOAkJCWc4CQkJOAkJZz1PUmxPPTA4CQkJJFJxRm1mJ09GN09dX1JzbTVGVydkPXI9JFJxRm1mJ09GN09dX1JzbTVGVydkRSJoMl09QUNoMl09QUMiOzgJCWc4CQk4CQkkWXNddF9Sc201Rj1yPWhoaFE8QnU4aFlzXXQ9dE83SHNWciJJc2w3IkM4MCRScUZtZidPRjdPXV9Sc201RlQnZGc4aDJdQ2gyXUM4MCRScUZtZidPRjdPXV9Sc201RlMnZGc4aDJdQzhoNUZJezc9N1hJT3IiN09rNyI9VjVdciJxezdzIj1GcXRPciJGT0dSc201RiI9NVZyIkZPR1JzbTVGIj1lUnFsbHIiN09rNzVGIj1sN1hST3IiRzVWN0g6U1paSWsiPW9xUntPciIwJFJzbTVGX0ZxdE9nIkM4aDJdQ2gyXUM4MCRScUZtZidPRjdPXV9Sc201RlcnZGc4aDVGSXs3PTdYSU9yImx7MnQ1NyI9ZVJxbGxyIjIyZXNWT2wiPT1vcVJ7T3IiMCRScUZtZidPRjdPXV9Sc201RjEnZGciPUFDOGhBWXNddEM4UTxCdTs4OAkJdGxtMnNrKD0kUnFGbWYnT0Y3T11fUnNtNUYnZCw9JFlzXXRfUnNtNUY9KTs4CQk4CWc9T1JsTz0wOAkJOAkJQEhPcVZPXSg9IlE8PEpBVEVaPVdaVz1qczc9cHN7RlYiPSk7OAkJOAkJNVkoPSRlc0ZZNW1mJ3NHRl9XWlcnZD1ValA9WTVST19PazVsN2woRDY2PF9QeUQ9RT0nQVdaV0VIN3RSJyk9KT0wOAkJCUBIT3FWT10oIiBzRjdPRjctN1hJTzo9N09rN0FIN3RSOz1lSHFdbE83ciJFJGVzRlk1bWYnZUhxXWxPNydkKTs4CQkJT2VIcz1ZNVJPX21PN19lc0Y3T0Y3bCg9RDY2PF9QeUQ9RT0nQVdaV0VIN3RSJz0pOzgJCQlWNU8oKTs4CQkJOAkJZz1PUmxPPXRsbTJzayg9JFJxRm1mJ3FSUl9PXV1fVCdkLD0kUnFGbWYnRk9HbF9PXV1fU3YnZD0pOzg4CWc4OGc9T1JsTzVZKD01bGxPNygkXy9OPGYncWU3NXNGJ2QpPVVqUD0kXy9OPGYncWU3NXNGJ2Q9cnI9J3FJSV1zb08nPVVqUD0kXy9OPGYnNVYnZD1ValA9JF8vTjxmJzNPWCdkPVVqUD0hJDVsX1JzbW1PVj1ValA9JGVzRlk1bWYncVJSc0dfbHNlNXFSJ2Q9VWpQPSRlc0ZZNW1mJ3FSUnNHX11PbTVsN11xNzVzRidkKT0wODgJJDVWPXI9NUY3b3FSKCRfL048Zic1VidkKTs4CTgJJF1zRz1yPSRWMi1DbHtJT11fYntPXVgoPSJuTnVOIDw9Kj1wRDZCPSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9aVFORE49NVZyJzAkNVZnJyI9KTs4CTgJNVkoPSRdc0dmJzVWJ2Q9VWpQPSRdc0dmJ0dxNTcnZD0pPTA4CQk4CQk1WSg9JF1zR2YnSXFsbEdzXVYnZD0hcj0iIj1ValA9JF8vTjxmJzNPWCdkPSFyPSIiPVVqUD0kXXNHZidJcWxsR3NdVidkPXJyPSRfL048ZiczT1gnZD0pPTA4CQkJbE9sbDVzRl9dT21PRk9dcTdPXzVWKCk7OAkJCTgJCQkkVjItQ2J7T11YKD0iYUpQVTxOPSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9bk48PUdxNTdyJ1onPWlRTkROPTVWcicwJF1zR2YnNVYnZGcnIj0pOzgJCQk4CQkJJHRPdDJPXV81Vj1yPSRWMi1DbHtJT11fYntPXVgoPSJuTnVOIDw9Kj1wRDZCPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1pUU5ETj17bE9dXzVWcicwJF1zR2YnezVWJ2RnJyI9KTs4CQkJOAkJCTVZKD0kdE90Mk9dXzVWZid7bE9dXzVWJ2Q9KT0wOAkJCQlsTzdfZXNzMzVPKD0iVlJPX3tsT11fNVYiLD0kdE90Mk9dXzVWZid7bE9dXzVWJ2QsPTF4TD0pOzgJCQkJbE83X2VzczM1Tyg9IlZST19JcWxsR3NdViIsPXRWTCgkdE90Mk9dXzVWZidJcWxsR3NdVidkKSw9MXhMPSk7ODgJCQkJJF9uTm5ueTZqZidWUk9fe2xPXV81VidkPXI9JHRPdDJPXV81VmYne2xPXV81VidkOzgJCQkJJF9uTm5ueTZqZidWUk9fSXFsbEdzXVYnZD1yPXRWTCgkdE90Mk9dXzVWZidJcWxsR3NdVidkKTs4CQkJCSRfbk5ubnk2amYndE90Mk9dX1JxbDc3NXRPJ2Q9cj0kdE90Mk9dXzVWZidScWw3VnE3TydkOzgJCQkJJF9uTm5ueTZqZidsN3E3TydkPXI9Wjs4OAkJCQk1WSg9JGVzRlk1bWYnUnNtX0hxbEgnZD0pPTA4OAkJCQkJJEhxbEg9cj10VkwoXXFGVnN0XzJYN09sKDFTKT1FPXQ1ZV1zNzV0TygpKTs4CQkJCQk4CQkJCQkkVjItQ2J7T11YKD0iYUpQVTxOPSI9RT1hbk5ESkROcHljPUU9Il97bE9dbD1uTjw9SHFsSHInMCRIcWxIZycsPVJxbDdWcTdPcicwJF88eUJOZycsPVJzbW1PVl81SXInMCRfeUpnJz1pUU5ETj17bE9dXzVWcicwJHRPdDJPXV81VmYne2xPXV81VidkZyciPSk7OAkJCQkJOAkJCQkJbE83X2VzczM1Tyg9IlZST19IcWxIIiw9JEhxbEgsPTF4TD0pOzgJCQkJOAkJCQk4CQkJCWc9T1JsTz0kVjItQ2J7T11YKD0iYUpQVTxOPXU2aV9KRHk2RHk8Lj0iPUU9YW5OREpETnB5Yz1FPSJfe2xPXWw9bk48PVJxbDdWcTdPcicwJF88eUJOZycsPVJzbW1PVl81SXInMCRfeUpnJz1pUU5ETj17bE9dXzVWcicwJHRPdDJPXV81VmYne2xPXV81VidkZyciPSk7OAkJCWc4CQkJOAkJCXRsbTJzayg9JFJxRm1mJ3FSUl81RllzJ2QsPSRScUZtZidxezdIX2xzZTVxUl9zMydkPUU9Ij1ocT1IXU9ZclwiIj1FPSRdc3M3X0hdT1k9RT0iXCJDIj1FPSRScUZtZidxezdIX0ZPazcnZD1FPSJoQXFDIj0pOzg4CQlnPU9SbE89MDgJCQk4CQkJJFYyLUNie09dWCg9IlBOdU48Tj1wRDZCPSI9RT1hbk5ESkROcHljPUU9Il9sc2U1cVJfUnNtNUY9aVFORE49NVZyJzAkNVZnJyI9KTs4CQkJOAkJCUBIT3FWT10oPSJRPDxKQVRFWj1XWlc9anM3PXBze0ZWIj0pOzgJCQk4CQkJNVkoPSRlc0ZZNW1mJ3NHRl9XWlcnZD1ValA9WTVST19PazVsN2woRDY2PF9QeUQ9RT0nQVdaV0VIN3RSJyk9KT0wOAkJCQlASE9xVk9dKCIgc0Y3T0Y3LTdYSU86PTdPazdBSDd0Ujs9ZUhxXWxPN3IiRSRlc0ZZNW1mJ2VIcV1sTzcnZCk7OAkJCQlPZUhzPVk1Uk9fbU83X2VzRjdPRjdsKD1ENjY8X1B5RD1FPSdBV1pXRUg3dFInPSk7OAkJCQlWNU8oKTs4CQkJCTgJCQlnPU9SbE89dGxtMnNrKD0kUnFGbWYncVJSX09dXV9UJ2QsPSRScUZtZiddT21fT11dX1cxJ2Q9KTsJCQk4CQlnOAkJOAlnPU9SbE89MDgJCTgJCUBIT3FWT10oPSJRPDxKQVRFWj1XWlc9anM3PXBze0ZWIj0pOzgJCTgJCTVZKD0kZXNGWTVtZidzR0ZfV1pXJ2Q9VWpQPVk1Uk9fT2s1bDdsKEQ2NjxfUHlEPUU9J0FXWldFSDd0UicpPSk9MDgJCQlASE9xVk9dKCIgc0Y3T0Y3LTdYSU86PTdPazdBSDd0Ujs9ZUhxXWxPN3IiRSRlc0ZZNW1mJ2VIcV1sTzcnZCk7OAkJCU9lSHM9WTVST19tTzdfZXNGN09GN2woPUQ2NjxfUHlEPUU9J0FXWldFSDd0Uic9KTs4CQkJVjVPKCk7OAkJCTgJCWc9T1JsTz10bG0yc2soPSRScUZtZidxUlJfT11dX1QnZCw9JFJxRm1mJ11PbV9PXV1fVzEnZD0pOzg4CWc4CThnPU9SbE89MDg4CUBIT3FWT10oPSJRPDxKQVRFWj1XWlc9anM3PXBze0ZWIj0pOzgJOAk1WSg9JGVzRlk1bWYnc0dGX1daVydkPVVqUD1ZNVJPX09rNWw3bChENjY8X1B5RD1FPSdBV1pXRUg3dFInKT0pPTA4CQk4CQlASE9xVk9dKCIgc0Y3T0Y3LTdYSU86PTdPazdBSDd0Ujs9ZUhxXWxPN3IiRSRlc0ZZNW1mJ2VIcV1sTzcnZCk7OAkJT2VIcz1ZNVJPX21PN19lc0Y3T0Y3bCg9RDY2PF9QeUQ9RT0nQVdaV0VIN3RSJz0pOzgJCVY1TygpOzgJCQk4CWc9T1JsTz10bG0yc2soPSRScUZtZidxUlJfT11dX1QnZCw9JFJxRm1mJ0ZPR2xfT11dX1N2J2Q9KTs4OGc4OD9D';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdDbVhLdGNXcVBbPk57CkRIamwzODd4Wk91Z1Z6STJuPDZmIH1rYj1VUk1pUzR5YUd3MHNRZUVMQi85cFRvcllGXWh2MS5KQWQ1JywnPmd5am1YNGFEelFFdUJSaE5zawp0NjBlTH1kVnBiU1RPW0NKeHEgQWw5VzJLSVV3OHtvSGMuNU1HWkYxdj1mbnI8NzNZUC9daScpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));
Function Calls
strtr | 1 |
strrev | 1 |
str_replace | 1 |
base64_decode | 2 |
Stats
MD5 | c6e203fae867592eb55c50c3580242f3 |
Eval Count | 2 |
Decode Time | 75 ms |